Handling a Wireless Device ISR
NetDev_ISR_Handler()
is the device interrupt handler. In general, the device interrupt handler must perform the following functions:
...
- Determine which type of interrupt event occurred by switching on the ISR type argument. The ISR handler should not access the SPI bus for reading an interrupt status register.
...
- If a receive event has occurred, the driver must post the interface number to the µC/TCP-IP Receive task by calling
NetOS_IF_RxTaskSignal()
for each new frame received (management or packet).
...
- If a transmit complete event has occurred and it is specified in the ISR type argument, the driver must perform the following items for each transmitted packet.
...
- Post the address of the data area that has completed transmission to the transmit buffer de-allocation task by calling
NetOS_IF_TxDeallocTaskPost()
with the pointer to the data area that has completed transmission.
- Post the address of the data area that has completed transmission to the transmit buffer de-allocation task by calling
...
- Call
NetOS_Dev_TxRdySignal()
with the interface number that has just completed transmission.
- Call
...
- Interrupt flags on the wireless device should not be cleared. CPU’s integrated interrupt controllers should be cleared from within the network device’s BSP-level ISR after
NetDev_WiFi_ISR_Handler()
returns.
Additionally, it is highly recommended that device driver ISR handlers be kept as short as possible to reduce the amount of interrupt latency in the system.
...
Warning |
---|
If the wireless module support transmit complete event, but reading an interrupt status register is required to know it, the receive task must be signaled and in |