Example #1
0
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);
    }
}
Example #2
0
/*! \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	
}