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?
ringEnable: RingEnable ← on, -- are we noisily accepting calls?
ringTime: BasicTime.GMT←NULL, -- if not, when again?
ringVolume: CARDINAL𡤁, -- waveTable value indicating how loud ringing will be.
ringTune: ROPE, -- a PlayTune or other tune specification
LarkSupervisor Variables
lastTerminalType: TerminalType ← std,
lState: LState ← [lSw: ALL[Lark.enabled]],
scratchEv: Lark.CommandEvents ← NIL
];