130 likes | 273 Views
Wireless Networks Lab – Application Queue API. 2007/10/17. Environment. When you build up your environment in Lab1 BoardAPI FontalBSP FontalButton, FontalLED HardwareAPI Stack – 802.15.4 MAC Application Queue API Service Access Point – AppApi.h
E N D
Environment • When you build up your environment in Lab1 • BoardAPI • FontalBSP • FontalButton, FontalLED • HardwareAPI • Stack – 802.15.4 MAC • Application Queue API • Service Access Point – AppApi.h • Access functions and structures used by the application to interact with the Jennic 802.15.4 stack
Application API • u32AppApiInit • Communication from the MAC up to the application or network layer • Callback routines implemented by the upper layer • Registered with the MAC • A general interrupt handler can be registered during the initialization of the application API
Application Queue API • The Application Queue API handles interrupts coming from • The MAC sub-layer of the IEEE 802.15.4 stack • The integrated peripherals of the wireless microcontroller • The API implements a queue for each of three types of interrupt • MCPS (MAC Data Services) interrupts coming from the stack • MLME (MAC Management Services) interrupts coming from the stack • Hardware interrupts coming from the hardware drivers
Application Queue API • The Application Queue API allows callbacks to be defined by the application • As with the normal IEEE 802.15.4 Stack API
u32AppQApiInit • u32AppQApiInit • Init the Application Queue API, as well as the underlying 802.15.4 Stack API • The function creates there queues • MLME indications and confirmations • MCPS indications and confirmations • Integrated Peripherals API indications • The function refers to callback functions for the three queues
Polling Queue • MLME • PUBLIC MAC_MlmeDcfmInd_s *psAppQApiReadMlmeInd(void); • PUBLIC void vAppQApiReturnMlmeIndBuffer(MAC_MlmeDcfmInd_s *psBuffer); • Return MLME buffer previously passed • MCPS • PUBLIC MAC_McpsDcfmInd_s *psAppQApiReadMcpsInd(void); • PUBLIC void vAppQApiReturnMcpsIndBuffer(MAC_McpsDcfmInd_s *psBuffer); • Return MCPS buffer previously passed
Polling Queue • Allows the application to return a hardware event buffer previously passed up to the application from the Integrated Peripherals API • Once returned, the buffer can be re-used to store and pass another message typedef struct { uint32 u32DeviceId; uint32 u32ItemBitmap; } AppQApiHwInd_s;
Lab3 sample code PRIVATE void InitSystem(void) { u32AHI_Init(); u32AppQApiInit(NULL, NULL, vTickTimerISR); led_init(); led_on(LED0); led_on(LED1); vAHI_TickTimerConfigure(E_AHI_TICK_TIMER_RESTART); vAHI_TickTimerWrite(0); vAHI_TickTimerInterval((16*1000*1000) / 2); vAHI_TickTimerIntEnable(TRUE); }
Lab3 sample code PUBLIC void AppColdStart(void) { InitSystem(); while (TRUE); } PRIVATE void vTickTimerISR(void) { led_toggle(LED0); }
Lab • Using the Application Queue API to achieve the requirement of Lab2’s bonus part • Bonus • Let the CPU really sleep if the Tick Timer timeout • Not only turn of the LEDs • Using WakeTimer to wake up CPU • Integrated Peripherals API • You can only get this bonus before 9:45PM