Browse Source

update

master
zwsd 3 years ago
parent
commit
31573e7917
  1. 61
      main/ble_spp_server_demo.c

61
main/ble_spp_server_demo.c

@ -214,25 +214,25 @@ static const esp_gatts_attr_db_t spp_gatt_db[SPP_IDX_NB] = {
{ESP_UUID_LEN_128, (uint8_t *)&spp_char_uuid128_tx, ESP_GATT_PERM_READ | ESP_GATT_PERM_WRITE, SPP_DATA_MAX_LEN, sizeof(spp_data_receive_val), {ESP_UUID_LEN_128, (uint8_t *)&spp_char_uuid128_tx, ESP_GATT_PERM_READ | ESP_GATT_PERM_WRITE, SPP_DATA_MAX_LEN, sizeof(spp_data_receive_val),
(uint8_t *)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, CHAR_DECLARATION_SIZE, CHAR_DECLARATION_SIZE, (uint8_t *)&char_prop_read_write}},
// // 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, CHAR_DECLARATION_SIZE, CHAR_DECLARATION_SIZE, (uint8_t *)&char_prop_read_write}},
// // SPP - command characteristic Value
// [SPP_IDX_SPP_COMMAND_VAL] = {{ESP_GATT_AUTO_RSP},
// {ESP_UUID_LEN_16, (uint8_t *)&spp_command_uuid, ESP_GATT_PERM_READ | ESP_GATT_PERM_WRITE, SPP_CMD_MAX_LEN, sizeof(spp_command_val), (uint8_t *)spp_command_val}},
// // SPP - command characteristic Value
// [SPP_IDX_SPP_COMMAND_VAL] = {{ESP_GATT_AUTO_RSP},
// {ESP_UUID_LEN_16, (uint8_t *)&spp_command_uuid, ESP_GATT_PERM_READ | ESP_GATT_PERM_WRITE, SPP_CMD_MAX_LEN, sizeof(spp_command_val), (uint8_t *)spp_command_val}},
// // SPP - status characteristic Declaration
// [SPP_IDX_SPP_STATUS_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_notify}},
// // SPP - status characteristic Declaration
// [SPP_IDX_SPP_STATUS_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_notify}},
// // SPP - status characteristic Value
// [SPP_IDX_SPP_STATUS_VAL] = {{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&spp_status_uuid, ESP_GATT_PERM_READ, SPP_STATUS_MAX_LEN, sizeof(spp_status_val), (uint8_t *)spp_status_val}},
// // SPP - status characteristic Value
// [SPP_IDX_SPP_STATUS_VAL] = {{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&spp_status_uuid, ESP_GATT_PERM_READ, SPP_STATUS_MAX_LEN, sizeof(spp_status_val), (uint8_t *)spp_status_val}},
// // SPP - status characteristic - Client Characteristic Configuration Descriptor
// [SPP_IDX_SPP_STATUS_CFG] = {{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_status_ccc),
// (uint8_t *)spp_status_ccc}},
// // SPP - status characteristic - Client Characteristic Configuration Descriptor
// [SPP_IDX_SPP_STATUS_CFG] = {{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_status_ccc),
// (uint8_t *)spp_status_ccc}},
#ifdef SUPPORT_HEARTBEAT #ifdef SUPPORT_HEARTBEAT
// SPP - Heart beat characteristic Declaration // SPP - Heart beat characteristic Declaration
@ -498,26 +498,27 @@ static void gatts_profile_event_handler(esp_gatts_cb_event_t event, esp_gatt_if_
esp_ble_gatts_create_attr_tab(spp_gatt_db, gatts_if, SPP_IDX_NB, SPP_SVC_INST_ID); esp_ble_gatts_create_attr_tab(spp_gatt_db, gatts_if, SPP_IDX_NB, SPP_SVC_INST_ID);
break; break;
case ESP_GATTS_READ_EVT: case ESP_GATTS_READ_EVT:
res = find_char_and_desr_index(p_data->read.handle);
if (res == SPP_IDX_SPP_STATUS_VAL) {
// TODO:client read the status characteristic
}
// res = find_char_and_desr_index(p_data->read.handle);
// if (res == SPP_IDX_SPP_STATUS_VAL) {
// // TODO:client read the status characteristic
// }
break; break;
case ESP_GATTS_WRITE_EVT: { case ESP_GATTS_WRITE_EVT: {
res = find_char_and_desr_index(p_data->write.handle); res = find_char_and_desr_index(p_data->write.handle);
if (p_data->write.is_prep == false) { if (p_data->write.is_prep == false) {
ESP_LOGI(GATTS_TABLE_TAG, "ESP_GATTS_WRITE_EVT : handle = %d\n", res); ESP_LOGI(GATTS_TABLE_TAG, "ESP_GATTS_WRITE_EVT : handle = %d\n", res);
if (res == SPP_IDX_SPP_COMMAND_VAL) {
uint8_t *spp_cmd_buff = NULL;
spp_cmd_buff = (uint8_t *)malloc((spp_mtu_size - 3) * sizeof(uint8_t));
if (spp_cmd_buff == NULL) {
ESP_LOGE(GATTS_TABLE_TAG, "%s malloc failed\n", __func__);
break;
}
memset(spp_cmd_buff, 0x0, (spp_mtu_size - 3));
memcpy(spp_cmd_buff, p_data->write.value, p_data->write.len);
xQueueSend(cmd_cmd_queue, &spp_cmd_buff, 10 / portTICK_PERIOD_MS);
} else if (res == SPP_IDX_SPP_DATA_NTF_CFG) {
// if (res == SPP_IDX_SPP_COMMAND_VAL) {
// uint8_t *spp_cmd_buff = NULL;
// spp_cmd_buff = (uint8_t *)malloc((spp_mtu_size - 3) * sizeof(uint8_t));
// if (spp_cmd_buff == NULL) {
// ESP_LOGE(GATTS_TABLE_TAG, "%s malloc failed\n", __func__);
// break;
// }
// memset(spp_cmd_buff, 0x0, (spp_mtu_size - 3));
// memcpy(spp_cmd_buff, p_data->write.value, p_data->write.len);
// xQueueSend(cmd_cmd_queue, &spp_cmd_buff, 10 / portTICK_PERIOD_MS);
// } else if (res == SPP_IDX_SPP_DATA_NTF_CFG) {
if (res == SPP_IDX_SPP_DATA_NTF_CFG) {
if ((p_data->write.len == 2) && (p_data->write.value[0] == 0x01) && (p_data->write.value[1] == 0x00)) { if ((p_data->write.len == 2) && (p_data->write.value[0] == 0x01) && (p_data->write.value[1] == 0x00)) {
enable_data_ntf = true; enable_data_ntf = true;
} else if ((p_data->write.len == 2) && (p_data->write.value[0] == 0x00) && (p_data->write.value[1] == 0x00)) { } else if ((p_data->write.len == 2) && (p_data->write.value[0] == 0x00) && (p_data->write.value[1] == 0x00)) {

Loading…
Cancel
Save