void GetProtocol(void) - This routine is enteredwhenever a GET PROTOCOL request is
received. This request initiates a control-readtransaction that tells the host if the mouse isconfigured for boot or report protocol. See theHID class documentation for more details.void GetConfiguration(void) - This routine isentered whenever a GET CONFIGURATIONRequest is received. This function then starts acontrol read transaction that sends theconfiguration, interface, endpoint, and HIDdescriptors to the host.
void USB_Stall_In_Out(void) – This function setsendpoint 0 to stall IN and OUT tokens from thehost. Unsupported or invalid descriptor requestswill cause this firmware to STALL thesetransactions.
char BusInactive(void) - This routine should becalled every millisecond from the main loop. Itmaintains an internal count of the successivesamples of the USB status register in which nobus activity was recorded. When this countexceeds 3 milliseconds, this function returns 1,indicating that bus activity has suspended. Whenthe bus activity suspends for more than 3
milliseconds, the mouse must enter a low powerstate until a wakeup even
Figure 4.0 USB Operation Function Call Map
A function call map for PS/2 operation is shown infigure 5.0. The following are descriptions of thefunctions in combi.c.
PS/2 Functions
void ps2BAT(void) - delays for 500 milliseconds,then sends the AA 00 initialization string to thevoid ps2_send(char data) - This routine sends abyte to the host according to the standard PS/2protocol. This routine is written in assembler toprecisely control the number of execution cyclesrequired for the appropriate PS/2 timing.
char ps2_receive(void) - This routine receives abyte from the host according to the standard PS/2protocol. This routine is written in assembler inorder to control the receive timing.
void Reset(void) - This routine simply waits in aloop for the watchdog to perform a reset.void Resend(void) - A copy of the last
transmission is always left intact in the messagebuffer. To re-send it , this routine simply resetsthe message length.
void SetDefault(void) – This routine is called inresponse to a SET DEFAULT command from thehost. It then sets the mouse parameters to thedefault settings.
void Disable(void) - Disables the mouse.void Enable(void) - Enables the mouse.
char SetSampleRate(char p) - This routine iscalled in response to a SET SAMPLE RATEcommand from the host. It then verifies that therequested sample rate is valid and sets thesample rate for the mouse. Valid sample ratesare defined in the PS/2 Mouse specification.void ReadDeviceType(void) - This routine iscalled in response to a READ DEVICE TYPErequest from the host. This mouse always sendsa 0x00 in response to this request.
void SetRemoteMode(void) – This routine iscalled in response to a SET REMOTE MODEcommand from the host. The PS/2 mode is thenset to remote.