|
|
@ -188,13 +188,25 @@ static void db_disc_handler(ble_db_discovery_evt_t* p_evt) { ble_nus_c_on_db_dis |
|
|
|
* If @ref ECHOBACK_BLE_UART_DATA is set, the data is sent back to sender. |
|
|
|
*/ |
|
|
|
|
|
|
|
static void app_uart_force_put(uint8_t data){ |
|
|
|
ret_code_t ret_val; |
|
|
|
do { |
|
|
|
ret_val = app_uart_put(data); |
|
|
|
if ((ret_val != NRF_SUCCESS) && (ret_val != NRF_ERROR_BUSY)) { |
|
|
|
NRF_LOG_ERROR("app_uart_put failed for index 0x%04x.", 0); |
|
|
|
APP_ERROR_CHECK(ret_val); |
|
|
|
} |
|
|
|
} while (ret_val == NRF_ERROR_BUSY); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
static void ble_nus_chars_received_uart_print(uint8_t* p_data, uint16_t data_len) { |
|
|
|
ret_code_t ret_val; |
|
|
|
|
|
|
|
NRF_LOG_DEBUG("Receiving data."); |
|
|
|
NRF_LOG_HEXDUMP_DEBUG(p_data, data_len); |
|
|
|
app_uart_put(0x5A); |
|
|
|
app_uart_put(0xA5); |
|
|
|
app_uart_force_put(0x5A); |
|
|
|
app_uart_force_put(0xA5); |
|
|
|
for (uint32_t i = 0; i < data_len; i++) { |
|
|
|
do { |
|
|
|
ret_val = app_uart_put(p_data[i]); |
|
|
@ -204,8 +216,8 @@ static void ble_nus_chars_received_uart_print(uint8_t* p_data, uint16_t data_len |
|
|
|
} |
|
|
|
} while (ret_val == NRF_ERROR_BUSY); |
|
|
|
} |
|
|
|
app_uart_put(0x5B); |
|
|
|
app_uart_put(0xB5); |
|
|
|
app_uart_force_put(0x5B); |
|
|
|
app_uart_force_put(0xB5); |
|
|
|
} |
|
|
|
|
|
|
|
static void ble_nus_chars_received_uart_print_ch4(uint8_t* p_data, uint16_t data_len) { |
|
|
@ -213,8 +225,8 @@ static void ble_nus_chars_received_uart_print_ch4(uint8_t* p_data, uint16_t data |
|
|
|
|
|
|
|
NRF_LOG_DEBUG("Receiving data."); |
|
|
|
NRF_LOG_HEXDUMP_DEBUG(p_data, data_len); |
|
|
|
app_uart_put(0x4A); |
|
|
|
app_uart_put(0xA4); |
|
|
|
app_uart_force_put(0x4A); |
|
|
|
app_uart_force_put(0xA4); |
|
|
|
for (uint32_t i = 0; i < data_len; i++) { |
|
|
|
do { |
|
|
|
ret_val = app_uart_put(p_data[i]); |
|
|
@ -224,8 +236,8 @@ static void ble_nus_chars_received_uart_print_ch4(uint8_t* p_data, uint16_t data |
|
|
|
} |
|
|
|
} while (ret_val == NRF_ERROR_BUSY); |
|
|
|
} |
|
|
|
app_uart_put(0x4B); |
|
|
|
app_uart_put(0xB4); |
|
|
|
app_uart_force_put(0x4B); |
|
|
|
app_uart_force_put(0xB4); |
|
|
|
} |
|
|
|
|
|
|
|
/**@brief Function for handling app_uart events. |
|
|
@ -286,8 +298,13 @@ void uart_event_handle(app_uart_evt_t* p_event) { |
|
|
|
*/ |
|
|
|
|
|
|
|
/**@snippet [Handling events from the ble_nus_c module] */ |
|
|
|
static int32_t rxcnt; |
|
|
|
static void ble_nus_c_evt_handler(ble_nus_c_t* p_ble_nus_c, ble_nus_c_evt_t const* p_ble_nus_evt) { |
|
|
|
typedef struct { |
|
|
|
uint32_t rxcnt; |
|
|
|
uint32_t m_rx_sum_cnt; |
|
|
|
} block_data_rx_state_t; |
|
|
|
block_data_rx_state_t block_data_rx_state; |
|
|
|
|
|
|
|
static void ble_nus_c_evt_handler(ble_nus_c_t* p_ble_nus_c, ble_nus_c_evt_t const* p_ble_nus_evt) { |
|
|
|
ret_code_t err_code; |
|
|
|
|
|
|
|
switch (p_ble_nus_evt->evt_type) { |
|
|
@ -305,9 +322,11 @@ static void ble_nus_c_evt_handler(ble_nus_c_t* p_ble_nus_c, ble_nus_c_evt_t c |
|
|
|
ble_nus_chars_received_uart_print(p_ble_nus_evt->p_data, p_ble_nus_evt->data_len); |
|
|
|
break; |
|
|
|
case BLE_NUS_C_EVT_NUS_TX_EVT_2: |
|
|
|
ble_nus_chars_received_uart_print_ch4(p_ble_nus_evt->p_data, p_ble_nus_evt->data_len); |
|
|
|
rxcnt += p_ble_nus_evt->data_len; |
|
|
|
// printf("data_len:%d %d\n",p_ble_nus_evt->data_len,rxcnt); |
|
|
|
block_data_rx_state.rxcnt += p_ble_nus_evt->data_len; |
|
|
|
for (size_t i = 0; i < p_ble_nus_evt->data_len; i++) { |
|
|
|
block_data_rx_state.m_rx_sum_cnt += p_ble_nus_evt->p_data[i]; |
|
|
|
} |
|
|
|
ble_nus_chars_received_uart_print_ch4((uint8_t*)&block_data_rx_state, sizeof(block_data_rx_state)); |
|
|
|
break; |
|
|
|
|
|
|
|
case BLE_NUS_C_EVT_DISCONNECTED: |
|
|
@ -601,15 +620,9 @@ int main(void) { |
|
|
|
app_timer_create(&m_uart_send_tmr, APP_TIMER_MODE_REPEATED, uart_send_tmr_cb); |
|
|
|
app_timer_start(m_uart_send_tmr, APP_TIMER_TICKS(2), NULL); |
|
|
|
|
|
|
|
app_uart_put(1); |
|
|
|
app_uart_put(1); |
|
|
|
app_uart_put(1); |
|
|
|
app_uart_put(1); |
|
|
|
app_uart_put(1); |
|
|
|
app_uart_put(1); |
|
|
|
|
|
|
|
// Start execution. |
|
|
|
printf("BLE UART central example started.\r\n"); |
|
|
|
// printf("BLE UART central example started.\r\n"); |
|
|
|
NRF_LOG_INFO("BLE UART central example started."); |
|
|
|
scan_start(); |
|
|
|
|
|
|
|