gap_params_init()函数
GAP定义了设备如何发现和创建与其余设备的连接。该函数就是用来设置GAP的参数,设置设备名等。能够从Generic Access Service 中看到设置的这些参数。sd_ble_gap_ppcp_set()中ppcp表示外围设备链接首选参数。这个参数主要是让中央设备在首次链接外设时能够读取他们以及时调整链接参数。或者当当中央设备之后重连该设备,而且保留这些参数,那么就免去链接后可能须要修改链接参数的麻烦。固然也能够经过sd_ble_gap_ppcp_set()来更改链接参数。ui
conn_params_init() spa
连接参数更新设置。主要设置何时发起更新连接参数请求以及间隔和最大尝试次数。事件
client characteristic configuration descriptor 客户端特征配置描述符ip
ble_stack_init()it
softdevice_ble_evt_handler_set(ble_evt_dispatch)注册事件派发程序。io
由于个人蓝牙须要和苹果的homekit平台对接,因此就拿homekit_init(void)做为添加服务的分析。模板
homekit总体上能够分为三个部分,uuid的初始化,外设信息初始化和配对初始化。cli
在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()来进行广播了。