LarkInfoBody:
TYPE =
MONITORED
RECORD
[
interface: LarkRpcControl.InterfaceRecord, -- here's how you make calls to Lark --
shh: SHHH, -- here's what you use to encrypt them --
netAddress: Thrush.NetAddress, -- <<needed when creating socket numbers?>> --
model: Lark.LarkModel, -- what does this Lark look like? --
debugIn: IO.STREAM, debugPrint: IO.STREAM←NIL,
larkState: LarkState ← none, -- tone/crossbar/connect state of actual Lark hardware
newActions: LIST OF REF←NIL, -- queue of low-level requests to supervisor process
lastAction: LIST OF REF←NIL, -- used in request-queue maintenance,
larkProcess: PROCESS←NIL, -- maintains same
stateChange: CONDITION, -- larkProcess should notice change
hookState: HookState ← onhook, -- state of switchhook/speakerphone switch...
terminalType: TerminalType ← std, -- telset, speakerphone, or monitor switching.
Special attributes. << Not clear how set >>
hotLine: BOOL←FALSE, -- answers when called.
radio: BOOL←FALSE, -- used with hotline; connects line in instead of telset when called.
monitor: BOOL←FALSE, -- speaker repeats telset receiver in telset mode.
Click and ring detect timings
swOnTime: CARDINAL𡤀,
ringChangeTime: CARDINAL𡤀,
ringDetState: RingDetState ← idle,
ringDetWaitState: RingDetState←idle,
ringDetCondition: CONDITION,
ringDetInstance: CARDINAL𡤀, -- paranoia
Ringing control information
ringMode: RingMode ← internal, -- what kind of ringing should we do next time? <<Obsolete??>>
ringTune: Thrush.ToneSpec, -- Specification of ring tune
When a Note in a tune specifies "notify", expectedNotification is incremented (mod the lower-case letters) and sent along to the Lark. When the Lark finishes that note, it notifies the smarts, and eventually LarkOut, using that value. It's possible (though not desired) for this notification to precede the "WAIT" that pends notification. In this case, we mustn't wait. See LarkOutImpl.DoTones and ditto.WaitQ. receivedNotification is set to a value outside the range just after each WAIT opportunity terminates.
expectedNotification: Lark.Event ← 'z,
receivedNotification: Lark.Event ← 'Y,
LarkSupervisor Variables
lastTerminalType: TerminalType ← std,
lState: LState ← [lSw: ALL[Lark.enabled]],
scratchEv: Lark.CommandEvents ← NIL
];