写在前面:移植比较简单,本文不再具体讲实现过程,TI官方给的demo是基于BLE STACK2.0的ANCS,现在把它移植到BLE STACK2.1上,所以本文只是大致介绍整个移植过程中我所出现的问题,以便警示后者。
一、ANCS简介
ANCS is the Apple Notification Center Service (ANCS)
The purpose of ANCS is to give Bluetooth accessories (that connect to iOS devices through a Bluetooth low-energy link) a simple and convenient way to access many kinds of notifications that are generated on iOS devices,like incoming calls, missing calls, new emails, etc.
An accessory acting as a GATT client is free to access and use other services provided by the iOS device while using the ANCS.
ANCS Service UUID: 7905F431-B5CE-4E99-A40F-4B1E122D00D0
---上述均摘自TI的wiki
二、版权声明
博主:summer
声明:喝水不忘挖井人,转载请注明出处。
原文地址:http://blog.csdn.net/qq_21842557
联系方式:dxl0725@126.com
技术交流QQ:1073811738
三、试验平台
Software Version:BLE_STACK_CC26XX_2.1.0
Hardware Version:CC2640/CC2650
IDE:IAR 7.40
四、正文
TI给的ANCS是基于2.0的协议栈开发的,因为前期一直是在2.1的协议栈中开发代码、实现多任务等等,实现ANCS时需要把在2.0协议栈下的代码移植到2.1协议栈下面,移植过程比较简单,但是移植过程中出现了一个问题,刚开始一直不知道是什么问题,最后跟踪调试才发现是因为参数类型不一致所导致的编译错误。所以,以后移植代码代码时一定要注意数据类型。
上面这个是由于数据类型不一致导致的。
上面这个是由于定义的和声明的类型不一致导致的。
查找原型如下:
四、总结
ANCS也是基于BLE STACK实现的一个应用,类似于SimpleBLEPeripheral例程一样,创建一套实现ANCS的服务代码,在开发时基于ANCS添加了另外的几个服务,测试结果正常。
// Initialize GATT attributes. GGS_AddService(GATT_ALL_SERVICES); // GAP GATTServApp_AddService(GATT_ALL_SERVICES); // GATT attributes DevInfo_AddService(); HeartRate_AddService(GATT_ALL_SERVICES); BOD_AddService(); ImmediateAlert_AddService();
在通用例程SimpleBLEPeripheral中可以实现的,在ANCS中也可以同样实现,都是按照同样的方式修改或者添加所需要的功能代码,比如通用Peripheral、multi-tasks、multi-services、multi-characteristics等等。
在代码移植过程中最主要要考虑的就是数据类型和函数参数个数问题所引起的。在移植某个特定算法时由于数据类型的不同容易导致最后结算结果的错误,由这种问题导致的错误最难发现,所以移植时需要多多注意;由函数参数个数不同引起的问题比较容易发现,在编译阶段编译器就会提示编译错误。