码迷,mamicode.com
首页 > 其他好文 > 详细

蓝牙4.0 BLE

时间:2014-07-05 22:57:29      阅读:321      评论:0      收藏:0      [点我收藏+]

标签:style   color   文件   数据   os   art   


读了N多文档,其中推荐的有:

Webee的《蓝牙4.0是战演练》

Ghostyu的 《BLE权威教程》

1:透穿实现:


利用TI的BLE包里的工程直接烧

上位设备用 central,下位设备用peripheral工程


做以下处理:

central 的NPI初始化时添加uart CB,并在串口回调函数中 直接添加write char函数写进特征值(实现上位从串口接收并通过蓝牙发送), 使能特征值通知,并在通知处理事件中将数据从串口发送(实现上位的从蓝牙接受并从串口发送)


peripheral在charchangeCB中添加串口发送(实现从蓝牙接受,从串口发送),在注册profile时注意注册成可通知类型,并在串口回调函数中setchar来设定特征值(实现从串口接受从蓝牙发送)


以上两个特征值可以自己注册。


2:利用cenral或者peripheral等协议栈模板工程定制自己的工程


(1)定义自己的函数(init 及 process)定义函数对应的事件 16位最多16种事件(事件定义位置及形式 参考peripheral.c中 Simple BLE  peripheral Task Events部分)

定义好之后 在协议栈init task部分添加自己函数的init,然后把process函数放在taskarr[]函数数组最后(参见SimpleBLEeventProcss位置)。

(2)定义好的task events应该与process中的switch选项对应

(3)启动事件,可以同样在SimpleTLEperipheral_init()函数的最后用osal_set_events(函数ID,事件)启动事件。

(要实现周期运行,可在events_process中调用延时osal_set_events());

最后最重要的一点是:根据自己工程需求,配置连接方式,上电advertising比较方便。


PS: 如果有新的硬件初始化需求,可以在HL层的common文件中 halDriveInit()函数中添加,该函数会被main()调用。

       GAP及GATT提供的API简介  见 BLE协议栈中Document中的HTML格式文档。

PSS:event用于同一任务传递命令,而message用于不同任务之间命令传递。

event见上2,message自定义方法如下:

Comdef.h中给出了用户自定义message的宏范围,根据其范围可以在app中自定义message

定义message后,在需要用的地方创建消息结构体:msgpkt = (keyChange_t *)osal_msg_allocate(sizeof(keyChang_t));

msgkpt->hdr.event = KEY_CHANG;

msgpkt->state = state;

msgpkt->keys = keys;

然后发送即可:osal_msg_send(registeredKeystaskid,uint8 * msgkpt);


最后在接受消息的函数

MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive(SampleApp);

while( MSGpkt

{

    switch( MSGpkt->har.evet )

      case: KEY_CHANG; ````````break;

      case:USER_MSG;```````````break;

})


通用工程模板及通用OSAL模板后续补充。




蓝牙4.0 BLE,布布扣,bubuko.com

蓝牙4.0 BLE

标签:style   color   文件   数据   os   art   

原文地址:http://blog.csdn.net/metalseed/article/details/36887605

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!