diff --git a/.vscode/settings.json b/.vscode/settings.json index a0c1166..4641089 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -35,6 +35,9 @@ "esp_intr_alloc.h": "c", "motor_drive.h": "c", "stdint.h": "c", - "freertos.h": "c" + "freertos.h": "c", + "bitset": "c", + "chrono": "c", + "algorithm": "c" }, } \ No newline at end of file diff --git a/main/ble_spp_server_demo.c b/main/ble_spp_server_demo.c index 6f8c752..fa14b3b 100644 --- a/main/ble_spp_server_demo.c +++ b/main/ble_spp_server_demo.c @@ -709,4 +709,36 @@ void bleuart_schedule() { s_module->has_rx_size = 0; s_module->receive_data_processing_flag = false; } +} + +/** + * @brief 主动上报 + * + * @param buffer 发送的数据 + * @param buffer_size 发送数据的大小 + */ +void bleuart_notify_send(uint8_t *buffer, uint8_t buffer_size) { + uint8_t send_times = buffer_size / 15; //发送次数 + uint8_t send_buffer_remainder = buffer_size % 15; + uint8_t buffer_temp[16] = {0}; + uint8_t send_buffer_size = 0; + uint8_t i = 0; + uint8_t j = 0; + + if (table_handle_m != 0) { + for (i = 0; i < send_times; i++) { + for (j = 0; j < 15; j++) { + buffer_temp[j] = buffer[send_buffer_size++]; + } + esp_ble_gatts_send_indicate(table_gatts_if_m, table_conn_id_m, table_handle_m, 15, buffer_temp, false); + } + + if (send_buffer_remainder > 0) { + for (j = 0; j < send_buffer_remainder; j++) { + buffer_temp[j] = buffer[send_buffer_size++]; + } + buffer_temp[send_buffer_remainder] = 0; + esp_ble_gatts_send_indicate(table_gatts_if_m, table_conn_id_m, table_handle_m, send_buffer_remainder, buffer_temp, false); + } + } } \ No newline at end of file diff --git a/main/ble_spp_server_demo.h b/main/ble_spp_server_demo.h index 22d3f6a..cdfe30e 100644 --- a/main/ble_spp_server_demo.h +++ b/main/ble_spp_server_demo.h @@ -89,3 +89,5 @@ void bleuart_send_packet(uint8_t *tx, size_t txsize); * @brief */ void bleuart_schedule(); + +void bleuart_notify_send(uint8_t *buffer, uint8_t buffer_size); \ No newline at end of file diff --git a/main/main.c b/main/main.c index 062e971..96bbf24 100644 --- a/main/main.c +++ b/main/main.c @@ -93,8 +93,11 @@ void app_main(void) { motor_init(&ble_uart_motor_structer); motor_reg_event_cb(motor_on_event); + uint8_t test[] = {"peiluoxisibahhh,finny noob !lol"}; + while (true) { bleuart_schedule(); // motor_module_schedule(); + bleuart_notify_send(test,sizeof(test)); } }