cc2640官方demo更新连接参数service-CCservice
来源:互联网 发布:个人收支软件app 编辑:程序博客网 时间:2024/06/09 18:29
背景
cc2640项目需要添加oad功能,为了降低功耗,默认连接参数设置的比较大,这将导致oad时间过长,此时需要在oad之前先更新一组较小的连接参数,提高oad的速度。
更新连接参数的api
/******************************************************************** * @fn GAPRole_SendUpdateParam * * @brief Update the parameters of an existing connection * * @param minConnInterval - the new min connection interval * @param maxConnInterval - the new max connection interval * @param latency - the new slave latency * @param connTimeout - the new timeout value * @param handleFailure - what to do if the update does not occur. * Method may choose to terminate connection, try again, * or take no action * * @return SUCCESS, bleNotConnected, or bleInvalidRange */bStatus_t GAPRole_SendUpdateParam(uint16_t minConnInterval, uint16_t maxConnInterval, uint16_t latency, uint16_t connTimeout, uint8_t handleFailure)
移植官方ccservice的回调函数
/********************************************************************* * @fn ccChangeCB * * @brief Callback from Connection Control indicating a value change * * @param paramID - parameter ID of the value that was changed. * * @return none */static void ccChangeCB( uint8 paramID ){ // CCSERVICE_CHAR1: read & notify only // CCSERVICE_CHAR: requested connection parameters if (paramID == CCSERVICE_CHAR2) { uint8_t buf[CCSERVICE_CHAR2_LEN]; // Get new connection parameters CcService_getParameter( CCSERVICE_CHAR2, buf); // Update connection parameters GAPRole_SendUpdateParam( BUILD_UINT16(buf[0],buf[1]), BUILD_UINT16(buf[2],buf[3]), // minConnInterval, maxConnInterval BUILD_UINT16(buf[4],buf[5]), BUILD_UINT16(buf[6],buf[7]), // slaveLatency, timeoutMultiplier GAPROLE_TERMINATE_LINK); } // CCSERVICE_CHAR3: Disconnect request else if (paramID == CCSERVICE_CHAR3) { // Any change in the value will terminate the connection GAPRole_TerminateConnection(); }}
更新现象
测试发现按照官方demo这样直接更新连接参数,会导致断开连接,细查发现是会导致死机
解决方法
分析导致死机可能是跟ti-rtos有关,没有细查死机原因,解决这个死机问题,只需要将更新连接参数的接口放到其它地方执行,而不能在回调函数里面直接执行。
参考方法:使用定时器任务
0 0
- cc2640官方demo更新连接参数service-CCservice
- 【BLE-CC2640】CC2640之连接时广播
- 【BLE-CC2640】CC2640之主机端自动连接
- CC2640
- CC2640之CCS编译器安装及更新
- BLE固件开发--更新连接参数
- nrf51822蓝牙笔记之连接参数更新
- Handler传递参数动态更新UI界面demo
- Android 蓝牙官方demo中的一个问题(service discovery failed)
- Bmob发送短信验证码官方demo更新(3.5.0)版本
- 微信小程序导航:官方文档+精品教程+demo集合(5月9日更新)
- 微信小程序导航:官方文档+精品教程+demo集合(5月31日更新)
- 微信小程序联盟:官方文档+精品教程+demo集合(11月更新……)
- 微信小程序导航:官方文档+精品教程+demo集合(6月12日更新)
- 微信小程序联盟:官方文档+精品教程+demo集合(6月30日更新)
- 十月微信小程序导航:官方文档+精品教程+demo集合(10月14日更新)
- CC2640之配置串口打印及可变参数打印
- CC2640之配置串口打印及可变参数打印
- vs2013提示未能找到aspose.cells.dll文件的问题
- 微信开发--开发模式简单配置
- Kafka 0.10 SocketServer源代码分析
- Mybatis如何配置generator代码生成器插件
- 字符串问题(一)
- cc2640官方demo更新连接参数service-CCservice
- CmakeLists实践(2)
- Effective Java读书笔记八:序列化(74-78)
- HBase Shell 常用命令及例子
- Hanoi 塔问题
- PostgreSQL学习第十四篇 listen与notify
- play framework学习笔记之Model类的使用及JPA entity manager
- 【BZOJ 3505】[Cqoi2014]数三角形 组合数学
- Apache Commons工具集简介