Change.Log   [plain text]

AppleUSBIrDA Change Log


	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).

	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

	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.

	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.

	fixed secondary mode
			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
			port's readActive moved and renamed to fReadActive.
			fWriteActive added.
			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.
			NextState: questionable change of XASSERT to require (&fRequestEvent)
			SetSpeedComplete(Boolean worked)	-- added
			moved call to IrDA's set speed compete from ChangeSpeed to SetSpeedComplete
			Listen() added
			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
			SetSpeedComplete - new
			Init: calls fNameServer->ListenStart() to get the IAS server started
			SetSpeedComplete: glue to IrDevice SetSpeedComplete.
			disconnected listen request: no longer do 5 second timer and abort i/o
			replyStateEvent: no longer do 5 second timer and abort i/o
			DiscoverComplete - debugging added
			ListenComplete - debugging added
			new states: listening, stopping listen
			new SetSpeedComplete for driver to call
			updated comments
			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
			new state engine routine to combine the state logic and make
			it a lot easier to follow.
			removed duplicate DebugLog definition

			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.

			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

		turned off debugging for production builds
		fixed DebugLog macro when debugging is off to be varargs style

		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)

		avoid panic if double-release on event block

		stop timer if restarted without an explicit cancel timer first.