Sample polling routine, An181 – Cirrus Logic AN181 User Manual
Page 4

AN181
4
AN181REV1
SAMPLE POLLING ROUTINE
Pseudo Code
#define EventMask = 0xFFC0
#define RegisterMask = 0x003F
#define RxEvent = 0x0004
#define TxEvent = 0x0008
#define BufEvent = 0x000C
Poll-Chip{
unsigned short Event;
Event = Poll-Registers()
While Event <> 0x0000 {
Switch (RegisterMask & Event) {
Case RxEvent:
result = Process-RxEvent(Event);
break;
Case TxEvent:
result = Process-TxEvent(Event)
break;
Case BufEvent:
result = Process-BufEvent(Event);
break;
} // End Switch
Event = Poll-Registers()
} // End While
} // End Poll-Chip
Poll-Registers{
unsigned short Event;
Event = Read-RxEventRegister();
If (EventMask & Event) {
return Event;}
Event = Read-TxEventRegister()
If (EventMask & Event) {
return Event;}
Event = Read-BufEventRegister()
If (EventMask & Event) {
return Event;}
Return 0x0000
// End Poll-Registers
}