DIRECTORY IV, Rope USING [ ROPE ], Lark ; LarkOps: CEDAR DEFINITIONS = { OPEN Lark; -- Recommend opening Lark along with LarkOps. -- ************************ Smarts=>Lark procedures ********************** -- Reset: PROC [shh: SHHH, rName: ROPE]; SpecifyTones: PROC[ shh: SHHH, queueIt: BOOLEAN_TRUE, tones: ToneSpec _ NIL ] RETURNS [ok: BOOLEAN -- FALSE means no room in queue --]; Feep: PROC[ shh: SHHH, on, off: Milliseconds, waveTable: CARDINAL, queueIt: BOOLEAN_TRUE, notify: CommandEvent _ [nothing, 0C], events: CommandEvents ] RETURNS [ok: BOOLEAN -- FALSE means no room in queue --]; Commands: PROC [shh: SHHH, events: CommandEvents]; Connect: PROC [shh: SHHH, specs: ConnectionSpec]; Disconnect: PROC [shh: SHHH, buffer: VoiceBuffer]; PleaseRegister: PROC [shh: SHHH]; WhatIsStatus: PROC [shh: SHHH, which: CARDINAL] RETURNS [next: CARDINAL, events: StatusEvents]; WhatAreConnections: PROC [shh: SHHH, which: CARDINAL] RETURNS [next: CARDINAL, specs: ConnectionSpec]; WhatAreTones: PROC [shh: SHHH] RETURNS [BOOLEAN]; SetKeyTable: PROC [shh: SHHH, table: KeyTable]; CommandString: PROC [shh: SHHH, device: Device, commands: Rope.ROPE]; PleaseLogin: PROC[shh: SHHH] RETURNS [will: BOOL]; EchoSupression: PROC [shh: SHHH, echo: EchoParameters]; SetHostNumber: PROC [shh: SHHH, host: Machine]; LarkParameters: TYPE = REF LarkParametersRec; ParamCode: TYPE = MACHINE DEPENDENT { prSSilThresh (1), -- silence thresshold prMaxSquelchTail (2), -- time before silence is considered real prSignalTimeout (3), -- if false, RPC timeouts effectively don't happen prIdlers (4), -- how many idling processes there are prDefaultMaxTransmissions (5), -- before RPC timeout prBroadcastRetransmissions (6),-- different value when broadcasting for connection prFlowControl (7), -- if true, XON/XOFF from RS-232 connection is honored. prTimeoutEvents (8), -- if true (default), Lark is impatient about response from server prEventTimer (9), -- new value for the impatience event timer, in ms. filler (LAST[WORD]) }; LarkParameter: TYPE = RECORD [ paramCode: ParamCode, paramValue: CARDINAL ]; LarkParametersRec: TYPE = RECORD [ numParams: NAT, params: SEQUENCE len: NAT OF LarkParameter ]; SetParameters: PROC [shh: SHHH, parameters: LarkParameters] }. Stewart, May 25, 1986 9:55:29 pm PDT, added SetHostNumber, Stewart ΚLarkOps.mesa Copyright c 1984, 1986 by Xerox Corporation. All rights reserved. Last modified by Swinehart, November 24, 1986 7:59:29 pm PST External operations interface to Lark (Etherphone) Capabilities (Smarts=>Lark) This interface is a Lark private affair and makes no distinction between the front and back doors. Such a distinction must be handled by the Smarts. This interface will be exported/imported as Lark.Lark, even though it's called LarkOps. Cancel any tone sequence in progress. Clear the display (or set it to a distinctive "out of service" state). Forget about any conversation in progress. Hang up any automatically switched audio devices (Speakerphone, etc.) Remember the identity of your "smarts". rName is for use in LarkSmarts.Register (cf.) Always accept, whether or not a conversation is in progress; return immediately, Standard DTMF is special; this function avoids long Tones[] sequences. on, off: "make"/"break" intervals for each code. waveTable, queueIt: as above. events: a "string" of DTMF events to be "feeped". This is for back-door dialing, end-to-end signalling for remote control of systems, etc. Each DTMF event reported via LarkSmarts.RecordEvent may also have to be echoed by the Lark program, depending on the nature of the keyboard. notify: issue a "tones" event when all digits have been sent. Commands. Use the sockets and the protocol type from |spec| to establish a conversation between yourself and the indicated other party (ies). If a conversation is already underway, replace it with this one, without disrupting existing conversations (a good trick, but needed, since host number, socket number are likely to change.) Drop all connections corresponding to id, return to idle state. A Connect call with a zero-length socket sequence should behave the same way. The buffer parameter should match the connection specification that is being abandoned. This is a Smarts request for the Lark to Register, thus providing a status update. << If it works out, the Lark should call LarkSmarts.Register BEFORE returning from PleaseRegister. That may tie all the monitors in knots, or make error management yucky on one end or other, whence a return from PleaseRegister will be taken as a promise to register soon. Alternatively, the procedure could return registration info. >> This is a Smarts request for the Lark to send in its entire state. A which = 0 indicates that the Lark should start over. Thereafter, LarkSmarts should make the next call with which = next. This is a Smarts request for the Lark to send in its outstanding connections. A which = 0 indicates that the Lark should start over. Thereafter, LarkSmarts should make the next call with which = next This is a Smarts request for the Lark to send in its outstanding tones. For now just returns that there are some. After responding in the affirmative, Lark should collect user name and password information (somehow), locally, use the Agent to obtain new authentication based on the password, issue LarkSmarts.LogIn to identify the new Rname, then begin using a new conversation based on the new authentication. Others can be added temporarily without extending this type. Change the value of one or more internal parameters to the Lark program. Swinehart, May 25, 1986 9:55:20 pm PDT Created from Lark.mesa changes to: DIRECTORY, LarkOps Swinehart, May 26, 1986 2:11:30 pm PDT SetParameters: changes to: SetHostNumber, SetParameters, LarkParameters, ParamCode, LarkParameter, LarkParametersRec Κ€˜Jšœ ™ Jšœ Οmœ7™BJšœ<™