<> <> <> <> January 3, 1986 10:28:54 am PST Once a trunk party has been used for an outgoing calls, incoming calls look to it like outgoing, they report the last outgoing number, and they feep when you try to answer them. Fix by clearing outgoing field (and name field?) when using a trunk for incoming. December 26, 1985 3:49:59 pm PST January 3, 1986 1:28:43 pm PST For some reason, NIL atoms are marshalled as atoms with a zero-length print name, unmarshalled without test. That's bogus. Should test NIL and not do MakeAtom on unmarshalling side. I think I'll fix it and release a version of RPCRuntime for me again, rather than trying to deal with all the non-NIL's. This will (eventually?) require a change to Lupine so that those who chose not to call the fixed routines won't get screwn. Fix: change LupineRuntime to marshal NIL atoms as NIL and to produce NIL as the result on the other side. Inform HThompson, if he does atoms. I've got such an RPCRuntime that I install as Basic.Loadees. December 18, 1985 12:04:27 pm PST I'm no longer convinced that queueing is needed in the Smarts at all. Probably one for the Lark keyboard, just to keep the characters flowing, but otherwise, now that conversation state is reported back for each call, it may not be necessary. Seems artificial every time I queue something. WaitForActive also has to do something like that, but a simple condition variable thing might well be good enough there; Progress is reported in its own process. December 18, 1985 11:52:01 am PST During connect attempt, if get "initiating" in but "notified" fails, should enter error state or something  all smarts. December 18, 1985 11:52:35 am PST Think about whether a common set of smarts implementations at some level would make sense. December 13, 1985 2:37:34 pm PST Feeping from Finch has been disabled, along with Prose. Needs to go back in sometime. <> November 26, 1985 4:09:21 pm PST Call to self if poaching on somebody else reaches own office. Solution to this has to wait. Would be nice to nip all narcissism in the bud at GetParty time, but so far that's complicated. Wait. <> <> <> <> <> <> Registration/Deregistration/Multiple services don't work right. Want trunk registration to be more independent. Now is the time to get registration/deregistration to work right. Local trunk when remote not available: not sure it's implemented, probably doesn't work. $Poaching not tested. <> <> <> November 26, 1985 4:09:21 pm PST Don't take structures apart until all conversation-ending has been done? No need to delete parties if they can be revived. November 26, 1985 4:09:21 pm PST Do better job of idle party registering-deregistering-obtaining-deregistering when done. November 26, 1985 4:09:21 pm PST If called-party is running Finch but has no Etherphone, call via back door. November 26, 1985 4:09:21 pm PST Consider ways to deal with back door incoming calls while front-door busy. Every new ring now generates a new off-hook. If the callee hangs up, there might be time. November 26, 1985 4:09:21 pm PST January 3, 1986 1:29:23 pm PST Progress report that doesn't encounter voice terminal needs to report to own trunk party, if there is one -- how? Through poaching link set up at GetParty time. November 26, 1985 4:09:21 pm PST How to deal with showstopper: When finch smarts/party dies, zap smarts, but leave party and attached conversations and poachees. When conv is dissolved, for each party, if it's got no smarts and no other convs, zap it. <> November 26, 1985 4:09:21 pm PST $poaching/$visiting chain must be followed backwards to zap when dying (see showstopper tho.) November 26, 1985 4:09:21 pm PST When dealing with showstopper, fix up cfRef stuff in places like IdleConversationsForParty in ThPartyInitImpl. November 26, 1985 4:09:21 pm PST P: need a way to tell a smarts that its party is gone for some reason. November 26, 1985 4:09:21 pm PST P: showstopper: when poacher smarts/party dies, how to represent it to conversation and other parties for duration of call; how to shut down when safe? Have to give up on finding out about calls in progress. November 26, 1985 4:09:21 pm PST Still need quicker timeout LarkSmarts->Lark. Party -> FinchSmarts can now take longer. <> December 10, 1985 11:00:19 am PST December 10, 1985 11:00:21 am PST No busy signal, new dial tone, or any of that. <> <ring. Use InterpRingDetect differently.>> <> <> <> <> <> <> <> <> <> <> <parsing for no reason, but still shouldn't explain unwillingness to go idle. Main problem was that when conversations went idle, smartsInfo.currentConvID was being zeroed before a test for relevance that protected EnterLarkState from being called at the wrong time, in LarkSmartsSupImpl.NoteNewState. Saving the previous value and using that in the test fixes it. The other problems (spurious state transitions) should be eliminated, though. Recap  This is three problems: InterpretHookState is switching to handset mode when detecting the onhook; this is spurious (and ancient); solution is to do nothing on onhook. Parser is switching to Parsing mode when detecting the onhook; this is spurious, too, and might have an analog in the past; solution is to do nothing in that case. CheckIdle is waiting in-line, since it was originally designed to be called from an MBQueued routine. Solution: change Report to have FinishProc return both the report proc and what to report. Finish proc can return something that just checks idle, instead of full progress report, when it's the initiator.>> <> <> <> <> <> <> <> <> <> <> <> <. $SmartsForHost connection must be able to distinguish trunk from front door, multiple smarts on the same machine, and the like. Or hair up the code that uses it to enumerate and distinguish.>> November 26, 1985 4:09:21 pm PST Change from tunea, tuneb, tunec to ringtune  simplify gv commands  count on text-file truth. Never need to update GV from caches, take that stuff out or don't use it. November 26, 1985 4:09:21 pm PST Find better place for SetupRingTunes stuff. Directly to database each time. tuneb, tunec disappear, as do limits on tune length. November 26, 1985 4:09:21 pm PST GVMake must set up both workstationhost and larkhost entries for people. <> <> <> <> November 26, 1985 4:09:21 pm PST Connection can be computed at any time after both parties known. Should also record someplace convenient (in cDesc?) whether the connection involves two machines. Or just keep the connection around somewhere convenient. It should really be in the cDesc rather than in the info, though, since it can change from conv. to conv. November 26, 1985 4:09:21 pm PST LarkSmartsInitImpl and TrunkSmartsImpl must record smartsInfo back pointers. LarkOutImpl s/b changed not to accept sInfo argument any more. November 26, 1985 4:09:21 pm PST Ring tune gets to LarkOut via nth parameter. November 26, 1985 4:09:21 pm PST Subdued ring is just blurp. There can be other ring modes. November 26, 1985 4:09:21 pm PST Use MBQueue to distribute Progress, one per smarts! A timeout causes queue to be flushed. This prevents Progress from returning dispositions. November 26, 1985 4:09:21 pm PST Retain separate supervisor process if necessary to catch supervisory things? If needed. November 26, 1985 4:09:21 pm PST C-Rule: once a conversation is reported idle via Progress, no more ThParty calls may refer to it or to the other parties in the call. November 26, 1985 4:09:21 pm PST Deal with ABORTED and UNWIND in MBQueue stuff. November 26, 1985 4:09:21 pm PST C: document pulling all disposition stuff. November 26, 1985 4:09:21 pm PST Pull party.partyFailed and all that if not needed. Use enabled instead November 26, 1985 4:09:21 pm PST C: all the nb's returning from calls. Really need to point others at new ThParty and so on. November 26, 1985 4:09:21 pm PST C: document service-name-change business, or whatever you replace it with. Like trunks. November 26, 1985 4:09:21 pm PST C: $AssumedParty => $telephone/$service, $AuthenticatedParty => $individual, $TrunkParty => $trunk -- in other words, use party type as name link to RName. November 26, 1985 4:09:21 pm PST C: $VoiceTerminal => $Smarts, $Manager => $Smarts. No more distinguishing. November 26, 1985 4:09:21 pm PST C: $Poachee => $Poaching. November 26, 1985 4:09:21 pm PST C: Host names represented as ropes or atoms are always in minimal form "3#333#" unless some other requirement dictates otherwise. November 26, 1985 4:09:21 pm PST D: Move ring-enable and all that to the database (White pages, eventually!) Include termination times! Subdued ringing is just a burp again. November 26, 1985 4:09:21 pm PST D: Have completely removed ring tune stuff from party level. Change it to use the GV data base directly at the smarts level. But based on RName information from current party. November 26, 1985 4:09:21 pm PST C: Interim step: don't do gvupdates: leave .lark entries dirty. Don't change non-lark entries through NamesGV. November 26, 1985 4:09:21 pm PST No: GVSetAttribute shouldn't mark dirty when nothing's changed? Maybe it doesn't matter any more. November 26, 1985 4:09:21 pm PST Q: partyData.partyFailed zapped? November 26, 1985 4:09:21 pm PST Probably **0 version of GetParty doesn't work now. November 26, 1985 4:09:21 pm PST Q: Eliminate $Extension link in favor of WP lookup? Nope, there's no index on phone number yet. November 26, 1985 4:09:21 pm PST Make sure initialization puts the type field in SmartsBody. November 26, 1985 4:09:21 pm PST No: Q: stateMismatch triggers progress report for all stateID's higher than own? May need that. November 26, 1985 4:09:21 pm PST C: Do office-of by allowing type=$telephone in GetParty calls. <> <> <> < try again if trying to go $idle, else no-op?>> <> <> <> <> <> <> <> <> <> <<$Visiting not implemented.>> <> <> <> <> November 26, 1985 4:09:21 pm PST Want to be able to do *7, *1 (or *3, whichever is radio mode) on the fly. In radio mode, still route transmitter to DTMF. November 26, 1985 4:09:21 pm PST Monitor-lock what's necessary in Party/Smarts creation. Maybe everything. November 26, 1985 4:09:21 pm PST Add Thparty functions for obtaining old ConvEvent information. (started) November 26, 1985 4:09:21 pm PST Make sure there are routines for setting conversation attributes (subject, urgency, ...) after initial creation. <[]= rather than [] = ; now all the parties and state to a conversation can be found by using the conversation as an attribute! The other searches are fast due to $Party attributes and so on. Sounds like a winner, but wait.>> <> <> <> November 26, 1985 4:09:21 pm PST Logging, statistics, performance measurement. <> November 26, 1985 4:09:21 pm PST Cause $visiting to be inherited as parties die and resurface. November 26, 1985 4:09:21 pm PST P: more reasonable way for Finch to influence call progress without disposition. (only interesting time: notified. Finch can tell Thrush not to go into ringBack, or to reject an extra call, for some number of seconds. During that time Finch can make its own decisions. If the timeout ever occurs, this condition is removed. !!!!) November 26, 1985 4:09:21 pm PST Finch checks in once in a while, re-registers if gone. November 26, 1985 4:09:21 pm PST P: showslower: no good methodology for killing and reregistering Bluejay parties -- automatically, anyhow. <> <> <> <> <> November 26, 1985 4:09:21 pm PST Reason, comment should be part of credentials? Seems to need to be replicated, too. Sigh. <> November 26, 1985 4:09:21 pm PST Compiler and so on: ROPE, Apply, VAL params. November 26, 1985 4:09:21 pm PST Determine degree of authentication possible for each type of registrant. Add data structures necessary to reflect authenticated/not. Use RPC-provided information where possible to be sure of authentication. November 26, 1985 4:09:21 pm PST In any session, authentication of a GVNames cache password should be renewed by client call supplying password. Present interface can handle it, but it's not presently done. <>