diff --git a/.vscode/settings.json b/.vscode/settings.json index 7085a61..c7c3406 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -18,6 +18,7 @@ "files.associations": { "ble_spp_server_demo.h": "c", "esp_bt_main.h": "c", - "esp_gatts_api.h": "c" + "esp_gatts_api.h": "c", + "freertos.h": "c" }, } \ No newline at end of file diff --git a/main/ble_spp_server_demo.c b/main/ble_spp_server_demo.c index ab3bca3..4eeb41d 100644 --- a/main/ble_spp_server_demo.c +++ b/main/ble_spp_server_demo.c @@ -141,7 +141,7 @@ static const uint16_t character_declaration_uuid = ESP_GATT_UUID_CHAR_DECLARE; static const uint16_t character_client_config_uuid = ESP_GATT_UUID_CHAR_CLIENT_CONFIG; static const uint8_t char_prop_read_notify = ESP_GATT_CHAR_PROP_BIT_READ|ESP_GATT_CHAR_PROP_BIT_NOTIFY; -static const uint8_t char_prop_read_write = ESP_GATT_CHAR_PROP_BIT_WRITE_NR|ESP_GATT_CHAR_PROP_BIT_READ; +static const uint8_t char_prop_read_write = ESP_GATT_CHAR_PROP_BIT_WRITE_NR; #ifdef SUPPORT_HEARTBEAT static const uint8_t char_prop_read_write_notify = ESP_GATT_CHAR_PROP_BIT_READ|ESP_GATT_CHAR_PROP_BIT_WRITE_NR|ESP_GATT_CHAR_PROP_BIT_NOTIFY; @@ -149,7 +149,7 @@ static const uint8_t char_prop_read_write_notify = ESP_GATT_CHAR_PROP_BIT_READ|E ///SPP Service - data receive characteristic, read&write without response // static const uint16_t spp_data_receive_uuid = ESP_GATT_UUID_SPP_DATA_RECEIVE; -static const uint8_t spp_data_receive_val[20] = {0x00}; +static const uint8_t spp_data_receive_val[128] = {0x00}; ///SPP Service - data notify characteristic, notify&read // static const uint16_t spp_data_notify_uuid = ESP_GATT_UUID_SPP_DATA_NOTIFY; @@ -195,16 +195,6 @@ static const esp_gatts_attr_db_t spp_gatt_db[SPP_IDX_NB] = {{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&primary_service_uuid, ESP_GATT_PERM_READ, sizeof(spp_service_uuid128), sizeof(spp_service_uuid128), (uint8_t *)&spp_service_uuid128}}, - //SPP - data receive characteristic Declaration - [SPP_IDX_SPP_DATA_RECV_CHAR] = - {{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&character_declaration_uuid, ESP_GATT_PERM_READ, - CHAR_DECLARATION_SIZE,CHAR_DECLARATION_SIZE, (uint8_t *)&char_prop_read_write}}, - - //SPP - data receive characteristic Value - [SPP_IDX_SPP_DATA_RECV_VAL] = - {{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_128, (uint8_t *)&spp_char_uuid128_rx, ESP_GATT_PERM_READ|ESP_GATT_PERM_WRITE, - SPP_DATA_MAX_LEN,sizeof(spp_data_receive_val), (uint8_t *)spp_data_receive_val}}, - //SPP - data notify characteristic Declaration [SPP_IDX_SPP_DATA_NOTIFY_CHAR] = {{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&character_declaration_uuid, ESP_GATT_PERM_READ, @@ -212,7 +202,7 @@ static const esp_gatts_attr_db_t spp_gatt_db[SPP_IDX_NB] = //SPP - data notify characteristic Value [SPP_IDX_SPP_DATA_NTY_VAL] = - {{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_128, (uint8_t *)&spp_char_uuid128_tx, ESP_GATT_PERM_READ, + {{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_128, (uint8_t *)&spp_char_uuid128_rx, ESP_GATT_PERM_READ, SPP_DATA_MAX_LEN, sizeof(spp_data_notify_val), (uint8_t *)spp_data_notify_val}}, // SPP - data notify characteristic - Client Characteristic Configuration Descriptor @@ -220,6 +210,16 @@ static const esp_gatts_attr_db_t spp_gatt_db[SPP_IDX_NB] = {{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&character_client_config_uuid, ESP_GATT_PERM_READ|ESP_GATT_PERM_WRITE, sizeof(uint16_t),sizeof(spp_data_notify_ccc), (uint8_t *)spp_data_notify_ccc}}, + //SPP - data receive characteristic Declaration + [SPP_IDX_SPP_DATA_RECV_CHAR] = + {{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&character_declaration_uuid, ESP_GATT_PERM_WRITE, + CHAR_DECLARATION_SIZE,CHAR_DECLARATION_SIZE, (uint8_t *)&char_prop_read_write}}, + + //SPP - data receive characteristic Value + [SPP_IDX_SPP_DATA_RECV_VAL] = + {{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_128, (uint8_t *)&spp_char_uuid128_tx, ESP_GATT_PERM_WRITE, + SPP_DATA_MAX_LEN,sizeof(spp_data_receive_val), (uint8_t *)spp_data_receive_val}}, + // //SPP - command characteristic Declaration // [SPP_IDX_SPP_COMMAND_CHAR] = // {{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&character_declaration_uuid, ESP_GATT_PERM_READ, @@ -526,6 +526,8 @@ static void gatts_profile_event_handler(esp_gatts_cb_event_t event, esp_gatt_if_ } break; case ESP_GATTS_WRITE_EVT: { + static uint8_t i = 0; + ESP_LOGE(GATTS_TABLE_TAG, "i = %d\n", i++); res = find_char_and_desr_index(p_data->write.handle); if(p_data->write.is_prep == false){ ESP_LOGI(GATTS_TABLE_TAG, "ESP_GATTS_WRITE_EVT : handle = %d\n", res); @@ -584,6 +586,7 @@ static void gatts_profile_event_handler(esp_gatts_cb_event_t event, esp_gatt_if_ } case ESP_GATTS_MTU_EVT: spp_mtu_size = p_data->mtu.mtu; + ESP_LOGI(GATTS_TABLE_TAG, "------------spp_mtu_size %d --------------\n",spp_mtu_size); break; case ESP_GATTS_CONF_EVT: break; diff --git a/main/ble_spp_server_demo.h b/main/ble_spp_server_demo.h index a7c1be5..a33bfed 100644 --- a/main/ble_spp_server_demo.h +++ b/main/ble_spp_server_demo.h @@ -17,7 +17,7 @@ //#define SUPPORT_HEARTBEAT //#define SPP_DEBUG_MODE -#define spp_sprintf(s, ...) sprintf((char*)(s), ##__VA_ARGS__) +#define spp_sprintf(s, ...) sprintf((char *)(s), ##__VA_ARGS__) #define SPP_DATA_MAX_LEN (512) #define SPP_CMD_MAX_LEN (20) #define SPP_STATUS_MAX_LEN (20) @@ -26,13 +26,13 @@ enum { SPP_IDX_SVC, - SPP_IDX_SPP_DATA_RECV_CHAR, - SPP_IDX_SPP_DATA_RECV_VAL, - SPP_IDX_SPP_DATA_NOTIFY_CHAR, SPP_IDX_SPP_DATA_NTY_VAL, SPP_IDX_SPP_DATA_NTF_CFG, + SPP_IDX_SPP_DATA_RECV_CHAR, + SPP_IDX_SPP_DATA_RECV_VAL, + SPP_IDX_SPP_COMMAND_CHAR, SPP_IDX_SPP_COMMAND_VAL, @@ -49,4 +49,4 @@ enum { SPP_IDX_NB, }; -void ble_spp_server_demo_app_main(uint16_t *conn_id_ble, esp_gatt_if_t *gatts_if_ble, uint16_t *handle_ble ); +void ble_spp_server_demo_app_main(uint16_t *conn_id_ble, esp_gatt_if_t *gatts_if_ble, uint16_t *handle_ble); diff --git a/main/main.c b/main/main.c index 5bc99d1..2ee5888 100644 --- a/main/main.c +++ b/main/main.c @@ -16,15 +16,15 @@ uint16_t table_handle_m; void app_main(void) { ble_spp_server_demo_app_main(&table_conn_id_m, &table_gatts_if_m, &table_handle_m); + // table_conn_id_m = + // char temp_buffer[5] = {'1', '2', '3', '4', '5'}; - char temp_buffer[5] = {'1', '2', '3', '4', '5'}; - - while (true) { - if (table_handle_m != 0) { - ets_delay_us(1000000); - esp_ble_gatts_send_indicate(table_gatts_if_m, table_conn_id_m, table_handle_m, 5, (uint8_t *)temp_buffer, false); - } - } + // while (true) { + // if (table_handle_m != 0) { + // ets_delay_us(1000000); + // esp_ble_gatts_send_indicate(table_gatts_if_m, table_conn_id_m, table_handle_m, 5, (uint8_t *)temp_buffer, false); + // } + // } return; }