AppleUSBIrDA Change Log 5/1/01 initial checkin version ?? submitted to puma, radar ???? IrDAComm - added command gate to prevent concurrent execution Debugging, added/changed logging in IrDADebugging.h, IrEvent, IrStream, CBufferSegment, CDynamicArray Commented out some cleanup attempt code in irevent (was panic'ing, might put back now) Misc cleanup (cosmetic) CIrDevice, IrLAP, IrLAPConn, IrLMP, CIrLSAP 5/15/01 - guyton added statistics call to user client interfaces, cleaned up the stats implementation a little 6/28/01 - russw/guyton added AppleSCCIrDA - first pass at a serial driver moved things around to build both USB and SCC kexts USB code changed to allow AppleIrDA.h superclass. 7/1/01 - guyton moved the AppleUSBIrDA code to be a driver again, renamed it to be AppleUSBIrDADriver. New glue class called AppleUSBIrDA that lives under AppleIrDA (and thus under IOSerialStreamSync). The problem was that IOSerialStreamSync requires a driver (IOSerialDriverSync) when it's attached, and the SCC stuff needs to live on the client side, so the USB code has to live on both sides of the driver/client fence. also reworked the way the nub and resources were allocated in the usb side, so we can use the stub class as our nub when letting the BSD stuff attach to us, and we need the nub around to let the user-client code connect and start/stop irda. 7/2/01 moved the newUserClient code to a small nub called AppleIrDA so that client code can have a single, simple name to connect with. merged in kdp code into dumplog. use requires an arp entry and the hex address of the info block of irda (logged to system.log at irda start time). 7/24/01 lots of changes to usb code to recover from broken hardware changes to usb code to create bsd device at start, and start irda when bsd open or user client starts changes to irglue to send async messages to inform clients of irda state changes 8/6/01 new scc code. has new start/stop logic, safter keylargo register access, better pseudo-tty code, adaptive serial driver rx timeouts, uses thread calls to let serial driver workloop run properly. 9/18/01 turned debugging on in the checked-in code. be sure and turn off before production. added sanity checks to keep from issuing multiple usb bulk-in reads call new keylargo enablescc routine to turn on (and off) the irda clocks fix bug in 'wait in open' in usb acquire port. wasn't waiting if usb resume works connect to hp netbeamir if debug build and no ircomm device in range allow to run on tibooks and pismos. 101 doesn't have PE support yet. 10/4/01 fixed secondary mode AppleSCCIrDA/AppleSCCIrDA.cpp tx_thread: comment about not needed a delay for speed changing, code still there speed_change_thread: added 20ms delay to let tx fifo empty before changing speed speed_change_thread: call irda speed-change-complete after setting speed AppleUSBIrDA/AppleUSBIrDA.h port's readActive moved and renamed to fReadActive. fWriteActive added. AppleUSBIrDA/AppleUSBIrDA.cpp SetSpeed: calls StartTransmit w/empty buffer to change speed. start: init fReadActive, fWriteActive to false. interruptReadComplete: new sanity checks, new name for read complete flag. dataReadComplete: new name for read complete flag dataWriteComplete: check/update fWriteActive. dataWriteComplete: if single byte, call SetSpeedComplete and return. startPipes: new name for fReadActive. StartTransmit: check/update fWriteActive. SetStructureDefaults: read active not in the port structure anymore. IrDA/IAS/IrIASServer.cpp NextState: questionable change of XASSERT to require (&fRequestEvent) IrDA/IO/CIrDevice.h SetSpeedComplete(Boolean worked) -- added IrDA/IO/CIrDevice.cpp moved call to IrDA's set speed compete from ChangeSpeed to SetSpeedComplete IrDA/IrComm/IrComm.h Listen() added IrDA/IrComm/IrComm.cpp Init: change class to be IrDA:IrCOMM so client can be server tinytp too Listen: new TTPConnectIndication: new listen complete code TTPAcceptDoneIndication: new accept complete code IrDA/IrGlue.h SetSpeedComplete - new IrDA/IrGlue.cpp Init: calls fNameServer->ListenStart() to get the IAS server started SetSpeedComplete: glue to IrDevice SetSpeedComplete. IrDA/Stack/IrLAP.cpp disconnected listen request: no longer do 5 second timer and abort i/o replyStateEvent: no longer do 5 second timer and abort i/o IrDA/Streams/CIrLSAP.cpp DiscoverComplete - debugging added ListenComplete - debugging added IrDAComm.h new states: listening, stopping listen new SetSpeedComplete for driver to call updated comments IrDAComm.cpp new SetSpeedCompete, calls IrDA through the command gate ConnectionStatus: seriously more complex, lots of work now. TimerRoutine: state connecting -> timing out so go to stopping listen TimerRoutine: state listening -> stop listen TimerRoutine: stopping listen: stuck? note 40 second timeout on irda! DoSomething: added SetSpeedComplete, call runqueue afterwards too. Added clean disconnect state and hooked up to power management IrDAComm.cpp new state engine routine to combine the state logic and make it a lot easier to follow. CIrLSAP.cpp removed duplicate DebugLog definition IrDADebug.h new var-args style of DebugLog IrDAComm.h, .cpp new stop thread and states to do quick disconnect on stop added IrDA: and filename to assert messages. IrLapConn.h, .cpp DoIdleDisconnect added to stop idle disconnect timer and fire off the disconnect if idle w/out waiting another second. IrGlue.h, .cpp pass through call for DoIdleDisconnect so IrDAComm can call it. AppleSCCIrDA.cpp moved three thread_call alloc's to start routine. added three tread_call free's to stop routine new routines/calls to link into power manager AppleUSBIrDA.cpp, .h new routines/calls to link into power manager and do sleep/wakeup 10/26/01 IrDADebugging.h turned off debugging for production builds fixed DebugLog macro when debugging is off to be varargs style 6/24/02 AppleSCCIrDA.cpp added IOSleeps after sending PD_E_ACTIVE (false) to serial driver. was getting crash in AppleSCCSerial when read completed after release. added upper limit to how long to wait for initial connect during open. IrLAP.cpp.h, IrGlue.* init myQOS and peerQOS at init time. was crashing with NULL in passive connect. don't double-enqueue pending discover request on connection complete (double free) IrEvent.cpp avoid panic if double-release on event block CTimer.cpp stop timer if restarted without an explicit cancel timer first.