【三】CC2541 Central 与 Peripheral 主从机实验 小结

【1】主机、从机 代码主要区别。有无profile。

主机:无 profile

从机:有 profile  (从机里包含了一个叫做profile的相关代码,这个profile决定了从机的功能。例如防丢器、血压仪、心率计等均是蓝牙组织规定的profile。)

【2】主机、从机 读写函数的区别

主机(Client客户端):   GATT_WriteCharValue(?); 或者 GATT_ReadCharValue(?); 需要提前注册GATT的notify和indicate的接收端,

                                 才能接收从机通过GATT_Notification发来的数据。

从机(Service服务端): 通过notify的方式。调用GATT_Notification发起和主机的通信。问题:具体读写函数呢?

【3】重点函数介绍

回调函数? 定义: 会被其他系统自动调用的一个函数。经常涉及到函数指针。初学者可先记着但暂且不要深究,以后有机会再深究。

学习BLE函数方法:初步了解-->会使用(会传递参数、使用返回值)-->会熟练使用(会传递参数、使用返回值),重要的函数会背诵其函数名-->如果有必要,再深究

主机:

1、void simpleBLECentralRssiCB( uint16 connHandle, int8 rssi ); //回调函数  作用:系统通过rssi告诉用户,当前的 rssi信号值,然后可LCD显示

     void simpleBLECentralEventCB( gapCentralRoleEvent_t *pEvent ); //回调函数 作用:通知用户当前的主机状态,然后决定下一步如果操作(如LCD显示数据)。

2、void simpleBLECentral_ProcessOSALMsg(?);

     simpleBLECentral_HandleKeys(?);

3、 GAPCentralRole_StartDiscovery(?); GAPCentralRole_CancelDiscovery(?);

4、GATT_WriteCharValue(?); 

     GATT_ReadCharValue(?);

     simpleBLECentralProcessGATTMsg(?); 

5、RSP: 响应

     RSQ: 请求


6、关于回调函数如何被调用。【深度理解】   理解为:注册一下回调函数后,当某个参数变化时,系统会自动调用该回调函数。 

在uint16 SimpleBLECentral_ProcessEvent(?) 事件处理函数中的 

VOID GAPCentralRole_StartDevice( ( gapCentralRoleCB_t * )  &simpleBLERoleCB ); //启动设备事件发生时,注册GAP状态回调函数,

每当GAP状态改变时,系统会自动调用该回调函数进行相应的操作。


【插播】:

用SI软件打开从机、主机例程。

对比: 从机SimpleBLEPeripheral_Init() --主机 SimpleBLEPeripheral_Init()


【三】CC2541 Central 与 Peripheral 主从机实验 小结_第1张图片

1: 设备名。将鼠标放在1圆圈处,即可自动显示当前各自的设备名。【结合实验现象: LCD液晶 显示的字样。】

2:GAP绑定。看下这个2区域,哪些函数、变量有何区别。【结合实验现象: LCD液晶 显示的字样。结合主机、从机读写方式的区别理解。】

注意:截图 左边是从机,右边是主机。

主从机读写方面,各自为对方付出:

从机: 有profile.

主机: 有注册ATT  Indications/notification. 用到函数 GATT_RegisterForInd(xxx);


【三】CC2541 Central 与 Peripheral 主从机实验 小结_第2张图片



你可能感兴趣的:(【三】CC2541 Central 与 Peripheral 主从机实验 小结)