【WCH蓝牙系列芯片】-基于CH582开发板—添加一组自定义属性服务

发布时间 2023-09-11 14:47:50作者: zyl4444

---------------------------------------------------------------------------------------------------------------------------------------------------------------------

在WCH沁恒官方提供的CH583的EVT资源包中,找到BLE文件中找到BLE_UART这个工程文件,在这个程序中添加一组自定义的属性服务,自定义包含五种不同属性的服务,包含可读、可写、通知、可读可写、安全可读。
在没有添加之前,通过手机的BLE调试助手连接对应的蓝牙,可以观察到只有一个属性服务,这个属性服务是在BLE_UART程序中利用串口3与蓝牙进行数据收发功能。

因此在此基础上,将整个gattprofile.c文件添加到BLE_UART程序中,这样就可以添加一组自定义属性服务,包含五种不同属性的服务,包含可读、可写、通知、可读可写、安全可读。
具体实现步骤如下:

第一步:
在peripheral.c中找到void Peripheral_Init()初始化BLE外设中,在初始化GATT属性中添加SimpleProfile_AddService(GATT_ALL_SERVICES);这是添加一个SimpleProfile的GATT属性服务到BLE设备上,并指定添加所有的GATT属性服务。可以根据定义的特征和属性,实现自定义的功能好数据交换。

 1 GGS_AddService(GATT_ALL_SERVICES);         // GAP
2 GATTServApp_AddService(GATT_ALL_SERVICES); // GATT attributes
 3     DevInfo_AddService();                      // Device Information Service
 4     ble_uart_add_service(on_bleuartServiceEvt);
 5 
 6     SimpleProfile_AddService(GATT_ALL_SERVICES); //添加了一个简单的自定义Profile服务
 7 
 8     // Setup the SimpleProfile Characteristic Values   //设置SimpleProfile的特征值
 9    {
10        //定义5个特征值
11        uint8_t charValue1[SIMPLEPROFILE_CHAR1_LEN] = {1};
12        uint8_t charValue2[SIMPLEPROFILE_CHAR2_LEN] = {23};  //23是十进制数,在手机APP中读取的数值是十六进制17
13        uint8_t charValue3[SIMPLEPROFILE_CHAR3_LEN] = {3};
14        uint8_t charValue4[SIMPLEPROFILE_CHAR4_LEN] = {4};
15        uint8_t charValue5[SIMPLEPROFILE_CHAR5_LEN] = {1, 2, 3, 4, 5};
16 
17        //将特征值设置对应的特征参数(特征参数的ID、长度、数据)
18        SimpleProfile_SetParameter(SIMPLEPROFILE_CHAR1, SIMPLEPROFILE_CHAR1_LEN, charValue1);
19        SimpleProfile_SetParameter(SIMPLEPROFILE_CHAR2, SIMPLEPROFILE_CHAR2_LEN, charValue2);
20        SimpleProfile_SetParameter(SIMPLEPROFILE_CHAR3, SIMPLEPROFILE_CHAR3_LEN, charValue3);
21        SimpleProfile_SetParameter(SIMPLEPROFILE_CHAR4, SIMPLEPROFILE_CHAR4_LEN, charValue4);
22        SimpleProfile_SetParameter(SIMPLEPROFILE_CHAR5, SIMPLEPROFILE_CHAR5_LEN, charValue5);
23    }