|
有哪位大神试过实验16-1:无线(BLE)修改设备名称.zip这套源码? 我在验证的时候发现在手机端操作修改设备名称时没效果。
在BLE事件处理函数中加了log发现是evt_id与uuid 不匹配. (实际evt_id:BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST 实际的uuid:0x03(不知道0x03是个啥玩意儿))
代码中的条件是如下,
void ble_gatt_params_on_ble_evt(ble_evt_t const * p_ble_evt)
{
//定义一个GATTS写事件结构体并指向BLE事件结构体中的写事件,方便取值
ble_gatts_evt_write_t const * p_evt_write = &p_ble_evt->evt.gatts_evt.params.write;
//如果事件类型是BLE_GATTS_EVT_WRITE并且UIID是GAP服务的设备名称特征的UUID,即为写GAP设备名称特征
NRF_LOG_INFO("uuid:[0x%x 0x%x] evtid:[0x%x 0x%x]",p_evt_write->uuid.uuid,BLE_UUID_GAP_CHARACTERISTIC_DEVICE_NAME,p_ble_evt->header.evt_id,BLE_GATTS_EVT_WRITE);
if((p_evt_write->uuid.uuid == BLE_UUID_GAP_CHARACTERISTIC_DEVICE_NAME) &&
(p_ble_evt->header.evt_id == BLE_GATTS_EVT_WRITE))
{
NRF_LOG_INFO("write name.");
//拷贝设备名称
memcpy(&device_name_info.name.name8[8], p_evt_write->data, p_evt_write->len);
//第一个字设置为名称类型
device_name_info.name.name32[0] = FLASH_TYPE_NAME;
//第二个字设置为名称的长度
device_name_info.name.name32[1] = p_evt_write->len;
//更新广播内容
adv_updata();
//设备名称保存标志置位,主循环中根据该标志判断是否需要将设备名称存储到Flash
device_name_info.save_name_flag = true;
}
}
请问有谁知道为啥会是一个BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST 事件而不是BLE_GATTS_EVT_WRITE吗?
|
|