Nordic服务流程与服务获得的数据的使用流程

一、服务流程
1、定义一个服务实例
注册成BLE事件监视者,触发事件后可以通过注册时带的处理函数处理事件
这个函数处理GATT的事件类型BLE_GATTS_EVTS
实例化指的是定义一个带有需要功能,变量的全局变量。
这个结构体需要:指向应用层的函数指针
存储该服务的UUID type的u8
存储从协议栈获得的服务句柄的u16
存储从协议栈中获得的特征的句柄ble_gatts_char_handles_t
事件数据结构体
实例化
2、将服务的自定义结构体其中的指针指向最终应用数据的应用函数。
3、将自定义UUID添加到协议栈中,获得指向该UUID的句柄(sd_ble_uuid_vs_add)
4、添加自定义服务到协议栈中,获得指向该服务的句柄(sd_ble_gatts_service_add)
5、定义特征参数,带着服务句柄添加到协议栈中,并获得指向该特征的句柄(characteristic_add)

二、服务获得的数据的使用流程
当定义一个服务实例后,会顺带注册一个BLE事件的观测者。
其中NRF_SDH_BLE_OBSERVER函数需要一个handler,这个handler将会获取并处理通过GATT传来的数据。此handler结构如下:
/**@brief BLE stack event handler. */
typedef void (*nrf_sdh_ble_evt_handler_t)(ble_evt_t const * p_ble_evt, void * p_context);
因此指针可以指向我们添加的自定义handler。
在自定义handler中p_ble_evt的evt_id可以判断GATT事件,
如果是写事件,则可通过p_ble_evt的ble_gatts_evt_t结构体中的ble_gatts_evt_write_t结构体获得写进来的数据和长度与该数据的句柄。
通过这个句柄,可以判断是哪一个特征写进来的数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值