beautypg.com

Sample polling routine, An181 – Cirrus Logic AN181 User Manual

Page 4

background image

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

}