蓝牙代码分析二

gap_params_init()

GAP定义了设备如何发现和建立与其他设备的链接。该函数就是用来设置GAP的参数,设置设备名等。可以从Generic Access Service 中看到设置的这些参数。sd_ble_gap_ppcp_set()中ppcp表示外围设备连接首选参数。这个参数主要是让中央设备在首次连接外设时可以读取他们以及时调整连接参数。或者当当中央设备以后重连该设备,并且保留这些参数,那么就免去连接后可能需要修改连接参数的麻烦。当然也可以通过sd_ble_gap_ppcp_set()来更改连接参数。

conn_params_init() 

链接参数更新设置。主要设置什么时候发起更新链接参数请求以及间隔和最大尝试次数。

client characteristic configuration descriptor  客户端特征配置描述符

ble_stack_init()

softdevice_ble_evt_handler_set(ble_evt_dispatch)注册事件派发程序。

因为我的蓝牙需要和苹果的homekit平台对接,所以就拿homekit_init(void)作为添加服务的分析。

homekit整体上可以分为三个部分,uuid的初始化,外设信息初始化和配对初始化。

在uuids_init(void)中通过static const ble_uuid128_t base_uuid = { { HOMEKIT_BASE_UUID } };赋值,然后通过sd_ble_uuid_vs_add(&base_uuid, &uuids_type)函数将自定义的uuid添加到协议栈中。

在void accessoryinfo_init(void),主要是实现了添加服务和特征值。

然后通过service_addService(&service, characteristics)函数将这些服务放到协议栈里。通过函数service_add_characteristic(uint16_t service_handle, const service_characteristic_t* characteristics)来添加服务的特性值。其实其他任何服务添加模板都是一样,这些已是套路。

最后通过函数pairing_init(void)来初始化配对参数。配对的设置整体代码也一样,具体的需要另外章节分析。

然后就到了广播初始化函数advertising_init(void),初始化函数中通过ble_advdata_t结构体来设置广播参数比如:广播的uuid,广播所依赖的homekit版本,还有广播数据等。广播一般有四种类型分别是:通用广播,定向广播,不可连接广播,可发现广播。最后通过函数ble_advdata_set()将这些数据设置进栈。之后就可以通过函数sd_ble_gap_adv_start()来进行广播了。

转载于:https://my.oschina.net/u/2241389/blog/734400

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值