关于消息的问题
在SimpleBLECentral的例子中,为什么gapCentralRole_ProcessOSALMsg 可以接收到Gap层消息,而不能接收到GATT层的消息,而SimpleBLECentral_ProcessEven可以接收到GATT层的消息,而t不可以接收到Gap层的消息,
截图来自CC2540/1文档,可以看到GAP和GATT来自协议栈更底层的ATT和SM层,而这些都架构在L2CAP上,因此协议栈可以选择消息的传递路线,在TI封装的协议栈里面,消息的传递就是按照你说的方式来做的。
very good,貌似说的很好,你说的是相邻两层才有消息传递的路线咯!
按照图的结构,GATT在ATT之上, ATT在L2CAP之上, GAP和SM一部分来自L2CAP一部分直接来自controller层的协议,
按照信息封包机制,就是这么传的
能请教你一个问题吗?是这样的通过Btool,链接从机,但是链接不稳定。会自动断开链接。我对GATT服务加了一个特征值char6,然后就这样了,对于GAP层的那些链接参数我都没设置。。。。但是呢。我用一个没有更改过的从机工程下载下去有能很稳定的建立链接。不会在我读特征值的时候断开。
我这边加char 不会出现你说的这样的不稳定的状况 我也没有修改过链接参数。
所以会担心是软件处理里面有问题,lightbule是跑在iOS上面的软件,iOS的BLE一致性做的比较好,建议用iOS验证
我都没有下载到移动操作系统里面,只是下载到开发板里面。。。
SimpleBLECentral_ProcessEven这个函数是在应用层吧,那天是不是应该既可以接收GATT的消息也可以接收GAP的消息呢
按上面高才生的说法理解是这样的。
你的程序是下载到开发板里面的
我说的程序是跑在iOS系统上和你的开发板一起跑来验证的
换言之在IOS手机上安装lightblue之后,可以通过手机搜索到开发板并连接,如果你连接不上,说明您添加的char不成功,如果您能从手机连接上并看到您新添加的char属性,则是btool的问题。
从理论上当然可以在APP层获取GATT和GAP的消息,但是在TI的协议栈的实现上,消息的传递就是您一开始说的状况,Event在底层就没有注册自然就不会传到上层来
值得一试。。