/**@brief IRQHandler used for execution context management. 
  *        Any available handler can be used as we're not using the associated hardware.
  *        This handler is used to notify of received data
  */
void UESB_RX_HANDLE_IRQHandler(void)
{
    uesb_payload_t payload;
    uint32_t       err_code;

    // Get packet from UESB buffer
    uesb_read_rx_payload(&payload);

    // Give packet to main application via the scheduler
    err_code = app_sched_event_put(payload.data, payload.length, m_evt_handler);
    APP_ERROR_CHECK(err_code);
}
예제 #2
0
파일: main.c 프로젝트: JulianYG/WNR
static uesb_event_handler_t uesb_event_handler()
{
	static uint32_t rf_interrupts;
	static uint32_t tx_attempts;
	
	uesb_get_clear_interrupts(&rf_interrupts);
	
	if (rf_interrupts & UESB_INT_TX_SUCCESS_MSK) {}
	
	if (rf_interrupts & UESB_INT_TX_FAILED_MSK) {
		uesb_flush_tx();
	}
	
	if (rf_interrupts & UESB_INT_RX_DR_MSK) {
		uesb_read_rx_payload(&rx_payload);
		NRF_GPIO->OUTCLR = 0xFUL << 8;
		NRF_GPIO->OUTSET = (uint32_t)((rx_payload.data[2] & 0x0F) << 8);
	}
	uesb_get_tx_attempts(&tx_attempts);
	NRF_GPIO->OUTCLR = 0xFUL << 12;
	NRF_GPIO->OUTSET = (tx_attempts & 0x0F) << 12;
}