【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()
1: 设备名。将鼠标放在1圆圈处,即可自动显示当前各自的设备名。【结合实验现象: LCD液晶 显示的字样。】
2:GAP绑定。看下这个2区域,哪些函数、变量有何区别。【结合实验现象: LCD液晶 显示的字样。结合主机、从机读写方式的区别理解。】
注意:截图 左边是从机,右边是主机。
主从机读写方面,各自为对方付出:
从机: 有profile.
主机: 有注册ATT Indications/notification. 用到函数 GATT_RegisterForInd(xxx);