TI论坛
直播中

邝计嘉

8年用户 246经验值
私信 关注
[问答]

为什么要上位机先使能Notification之后才会收到通知的数据?

大家好,以下是我使用GATT_Notification的做法:
uint16 ConnHandle;
attHandleValueNoti_t Notify;
GAPRole_GetParameter( GAPROLE_CONNHANDLE, &ConnHandle );
Notify.handle = UartServiceAttTbl[2].handle;//特征值对应的handle
Notify.len = UartRxLen;//特征值的长度
osal_memcpy(Notify.value,UartRxData,UartRxLen);//特征值的数据
GATT_Notification(ConnHandle,&Notify,FALSE);
我使用Andriod上位机与Keyfob通信,每次都要上位机先使能Notification之后才会收到通知的数据。
但是当我使用USBDongle与Keyfob通信时,即使未使能Notification,也能监听到Keyfob发送通知数据。如下
[74] : - 10:53:06.421
-Type : 0x04 (Event)
-EventCode : 0xFF (HCI_LE_ExtEvent)
-Data Length : 0x1B (27) bytes(s)
Event : 0x051B (ATT_HandleValueNotification)
Status : 0x00 (Success)
ConnHandle : 0x0000 (0)
PduLen : 0x15 (21)
Handle : 0x0025 (37)
Value : 01:02:04:00:00:00:00:00:00:00:00:00:00:00:00:00:
00:00:00
Dump(Rx):
04 FF 1B 1B 05 00 00 00 15 25 00 01 02 04 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00
问题1:从机使用GATT_Notification发送通知时,不论主机有没有使能Notification,从机都可以发送通知,对吗?
问题2:主机使能Notification只是决定对从机发送的通知要不要处理,对吗?
问题3:如果不是的话,要怎么理解呢?求解~~~
Thanks

回帖(13)

邝计嘉

2019-9-29 13:17:54
看来这个帖子要沉了啊...0.0
为什么....
为什么..
举报

华农武

2019-9-29 13:23:32
shaokai,
1. 不对。 做的好的逻辑的话,主机没有使能你从机的notification,从机不应该发notification出去。这是蓝牙协议栈的规定。请你检查一下你的Android代码,肯定有地方设置了按键notification的使能。TI默认的keyfob代码是不能在主机没法使能之前发送按键请求的。
2. 不对。从机要听从主机的使能安排。主机要确定从机是否能发送notification.
3. 这是逻辑问题,涉及两边的通信握手协议,数据交互的流程,保证数据通信的过程正确,主机能收到想要的数据。
举报

邝计嘉

2019-9-29 13:42:10
引用: 骑猪去天山 发表于 2019-9-29 22:15
shaokai,
1. 不对。 做的好的逻辑的话,主机没有使能你从机的notification,从机不应该发notification出去。这是蓝牙协议栈的规定。请你检查一下你的Android代码,肯定有地方设置了按键notification的使能。TI默认的keyfob代码是不能在主机没法使能之前发送按键请求的。
2. 不对。从机要听从主机的使能安排。主机要确定从机 ...

Yan:
不好意思,有点让你误解了:
1. 我说的Keyfob其实不是Keyfob的工程代码,而是Keyfob开发小板,真正使用的工程代码是我在simpleBLEPeripheral基础上进行修改过的——从机不管主机有没有使能Notification,都调用GATT_Notification();
2. 按您所提议的:从机要听从主机的使能安排(主机没有使能你从机的notification,从机不应该发notification出去),这一点以后我会注意。
3. 我很想知道:
    在主机未使能从机Notification时,而从机发送Notification的情况下。
    从理论上 链路层还是会发送信号的,对吗?只是这不符合双方的握手协议,也不应该这么做!
Thanks
举报

华农武

2019-9-29 14:02:06
引用: 蟹蟹蟹蟹 发表于 2019-9-29 22:34
Yan:
不好意思,有点让你误解了:
1. 我说的Keyfob其实不是Keyfob的工程代码,而是Keyfob开发小板,真正使用的工程代码是我在simpleBLEPeripheral基础上进行修改过的——从机不管主机有没有使能Notification,都调用GATT_Notification();

shaokai,
关于3, 是的!
举报

更多回帖

发帖
×
20
完善资料,
赚取积分