uint32_t ser_conn_received_pkt_process( ser_hal_transport_evt_rx_pkt_received_params_t * p_rx_pkt_params) { uint32_t err_code = NRF_SUCCESS; if (NULL != p_rx_pkt_params) { /* For further processing pass only command (opcode + data). */ uint8_t * p_command = &p_rx_pkt_params->p_buffer[SER_PKT_OP_CODE_POS]; uint16_t command_len = p_rx_pkt_params->num_of_bytes - SER_PKT_TYPE_SIZE; switch (p_rx_pkt_params->p_buffer[SER_PKT_TYPE_POS]) { case SER_PKT_TYPE_CMD: { err_code = ser_conn_command_process(p_command, command_len); break; } case SER_PKT_TYPE_DTM_CMD: { err_code = ser_conn_dtm_command_process(p_command, command_len); break; } case SER_PKT_TYPE_RESET_CMD: { ser_conn_reset_command_process(); break; } default: { APP_ERROR_CHECK(SER_WARNING_CODE); break; } } if (NRF_SUCCESS == err_code) { /* Free a received packet. */ err_code = ser_hal_transport_rx_pkt_free(p_rx_pkt_params->p_buffer); if (NRF_SUCCESS != err_code) { err_code = NRF_ERROR_INTERNAL; } } else { err_code = NRF_ERROR_INTERNAL; } } else { err_code = NRF_ERROR_NULL; } return err_code; }
uint32_t ser_sd_transport_rx_free(uint8_t * p_data) { p_data -= SER_PKT_TYPE_SIZE; return ser_hal_transport_rx_pkt_free(p_data); }