static void cdcAcmUserEventHandler(app_usbd_class_inst_t const *aCdcAcmInstance, app_usbd_cdc_acm_user_event_t aEvent) { app_usbd_cdc_acm_t const *cdcAcmClass = app_usbd_cdc_acm_class_get(aCdcAcmInstance); switch (aEvent) { case APP_USBD_CDC_ACM_USER_EVT_PORT_OPEN: // Setup first transfer. (void)app_usbd_cdc_acm_read_any(&sAppCdcAcm, sRxBuffer, sizeof(sRxBuffer)); sUsbState.mOpenTimestamp = otPlatAlarmMilliGetNow(); break; case APP_USBD_CDC_ACM_USER_EVT_PORT_CLOSE: break; case APP_USBD_CDC_ACM_USER_EVT_TX_DONE: sUsbState.mTransferDone = true; break; case APP_USBD_CDC_ACM_USER_EVT_RX_DONE: sUsbState.mReceiveDone = true; // Get amount of data received. sUsbState.mReceivedDataSize = app_usbd_cdc_acm_rx_size(cdcAcmClass); break; default: break; } }
/** * @brief User event handler. * */ static void cdc_acm_user_ev_handler(app_usbd_class_inst_t const * p_inst, app_usbd_cdc_acm_user_event_t event) { app_usbd_cdc_acm_t const * p_cdc_acm = app_usbd_cdc_acm_class_get(p_inst); switch (event) { case APP_USBD_CDC_ACM_USER_EVT_PORT_OPEN: { m_port_is_open = true; /*Setup first transfer*/ ret_code_t ret = app_usbd_cdc_acm_read(&nrf_cli_cdc_acm, m_rx_buffer, sizeof(m_rx_buffer)); APP_ERROR_CHECK(ret); break; } case APP_USBD_CDC_ACM_USER_EVT_PORT_CLOSE: m_port_is_open = false; break; case APP_USBD_CDC_ACM_USER_EVT_TX_DONE: break; case APP_USBD_CDC_ACM_USER_EVT_RX_DONE: { /*Get amount of data transfered*/ size_t size = app_usbd_cdc_acm_rx_size(p_cdc_acm); size_t qsize = nrf_queue_in(&m_rx_queue, m_rx_buffer, size); ASSERT(size == qsize); /*Setup next transfer*/ ret_code_t ret = app_usbd_cdc_acm_read(&nrf_cli_cdc_acm, m_rx_buffer, sizeof(m_rx_buffer)); ASSERT(ret == NRF_SUCCESS); /*Should not happen*/ break; } default: break; } }