void SWI0_IRQHandler(void) { uint32_t err_code; while (!queue_is_empty(&m_evt_queue)) { radio_evt_t evt; err_code = queue_get(&m_evt_queue, &evt.type); ASSUME_SUCCESS(err_code); switch (evt.type) { case PACKET_RECEIVED: err_code = rx_queue_get(&evt.packet); ASSUME_SUCCESS(err_code); break; default: break; } (*m_evt_handler)(&evt); } }
/*! \brief Parse a message from the communication bus */ void event_bus_parse_message(void) { BUS_MESSAGE bus_message = rx_queue_get(); #ifdef DEBUG_WMV_BUS printf("DEBUG-> From addr: 0x%02X\n",bus_message.from_addr); printf("DEBUG-> To addr: 0x%02X\n",bus_message.to_addr); printf("DEBUG-> Command: 0x%02X\n",bus_message.cmd); printf("DEBUG-> Length: 0x%02X\n",bus_message.length); for (unsigned char i=0;i<bus_message.length;i++) printf("DEBUG-> Data #%02i: 0x%02X\n",i,bus_message.data[i]); #endif if (bus_message.cmd == BUS_CMD_ACK) bus_message_acked(bus_message.from_addr); else if (bus_message.cmd == BUS_CMD_NACK) bus_message_nacked(bus_message.from_addr, bus_message.data[0]); //Drop the message rx_queue_drop(); #ifdef DEBUG_WMV_BUS printf("DEBUG-> Message dropped\n"); #endif }