Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 7 Current »

NetDev_ISR_Handler() is the device interrupt handler. In general, the device interrupt handler must perform the following functions:

  1. 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.
  2. 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).
  3. 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.
    • Call NetOS_Dev_TxRdySignal() with the interface number that has just completed transmission.
  4. 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.

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 <code >NetDev_Rx()</code> should return a management frame which will be passed to NetDev_MgmtDemux() and then you can perform the transmit complete operations.

  • No labels