问题:为什么我修改simple_profile_att_table,服务信息未发生改变?
-
使用外设例程的时候,根据文档,发现void sp_gatt_add_service(void)用于添加服务,并使用手机软件成功连接到蓝牙,测试功能ok,如下图

想要修改服务内容,通过修改void sp_gatt_add_service(void),不管我是修改函数内部引用的服务表simple_profile_att_table各个服务的属性,还是把simple_profile_svc.att_nb的值由SP_IDX_NB减少到5,重新连接蓝牙后,显示的服务属性和服务的个数都未发生变化,比较疑惑,是我修改的方式不对吗?
下面是我使用的蓝牙软件

-
自己回复自己,已解决;
-
目前已经修改了属性INDICATE成功,想问下这个功能如何测试?
-
@adhliang 啥功能,主从之间通信嘛?
我发你的文档协议栈部分有介绍功能是怎么实现的
-
@zr 是的就是通信功能,通信功能包含read,write,notify,还有indicate,对应sdk接口void gatt_indication(gatt_ind_t ind_att);
目前我使用的方法是在ble_simple_peripheral例程中,服务回调函数中static uint16_t sp_gatt_msg_handler(gatt_msg_t *p_msg)中增加
入口case GATTC_MSG_IND_REQ;使用BLE调试工具连接,但是找不到发送或者旋钮开关之类的,我想知道的是对于这个发送数据的接口gatt_indication正确的测试方法?
-
@adhliang indication的功能和notifi的用法差不多,定义特征,在属性表配置好特征,先使能indi(调试工具上使能),后面通过void gatt_indication(gatt_ind_t ind_att);发送数据给主机
-
@zr 是的,我原本也是这么理解的,notify跟indicate都一样应该在软件上有有个开关,但是我没有找到,所以不知道要怎么去打开这个indicate的功能;

-
@adhliang 你把这段代码贴出来,我看下是怎么配置的
-
-
@zr 好的,这是我的配置代码,使用的是SP_IDX_CHAR1_VALUE

-
@adhliang 没问题呀,你用这个软件试下
https://www.123865.com/s/74Sxjv-iatGA
-
@zr 软件有显示,但是还是有问题;

我这边实际配置了indication的是SP_IDX_CHAR1_VALUE,但是点击软件上的开关按钮,实际生效的UUID是0x2902(对应的是SP_IDX_CHAR1_CFG),中断入口为case :GATTC_MSG_WRITE_REQ下else if (p_msg->att_idx == SP_IDX_CHAR1_CFG)

但是运行ind_data函数发送indicate消息,软件又无反应(没有显示接收到的消息)

总结起来就是2个问题:
1、打开A-UUID的indicate,实际生效的是B-UUID(这里对应值0x2902);
2、软件接收不到gatt_indication(ind)发送给手机的值;

