4所示。创建一个定制的概要文件特性
4.1。开始
有了蓝牙协议和通用的属性的基础属性剖面,我们现在可以构建我们的定制服务和特点,和在我们的应用程序中使用它。
去SDK 6.0.12文件夹下载在硬盘和导航到\ \ target_apps \ ble_examples \ ble_app_profile \ Keil_5项目
文件夹中。在那里打开ble_app_profile.uvprojx
我们的项目。这个模板的项目,您可以使用它们来构建您自己的配置文件。您还可以使用\ \ target_apps \ ble_examples \ ble_app_peripheral项目
引用更多的扩展实现。
你可以看到左边的项目文件结构边缘的IDE。
4.2。项目结构
你可以看到,有两种类型的文件夹包含在项目中,一些他们的名字开头“sdk_”和一些“user_”。用户代码开发文件夹下开始“user_”和我们所有的修改将在这些文件中,但我们也会看看一些SDK函数时这将有利于我们的理解。这些文件夹:
user_config /
,包含大多数配置文件。
da1458x_config_advanced.h
拥有先进的配置设置。
da1458x_config_basic.h
拥有基本的配置设置。
user_callback_config.h
指定回调函数,处理各种事件或操作。这将在稍后讨论。
user_profiles_config.h
定义了哪些BLE概要文件(采用蓝牙技术联盟或自定义的)将包含在用户的应用程序。每个宏表示各自的祝福概要文件将包括在内。
user_modules_config.h
定义应用程序模块所包含或排除在用户的应用程序。如果它是定义每个宏0包括,或者如果它是1被排除在外。很重要的一点要注意的是,这些设置,如果没有影响各自的模块是一个祝福剖面,它不是用于用户的应用程序。
user_config.h
拥有广告参数,连接参数等。
user_periph_setup.h
定义了相关的硬件设置相对于使用开发工具包。
user_platform /
,包含目标相关功能的实现,尤其是外围设备的配置和初始化文件user_periph_setup.c
。user_custom_profile /
包含我们BLE服务器的数据库声明和配置参数。user_app /
,保存用户的实现处理事件和任何额外的应用程序代码。
在下图中可以看到服务器应用程序之间的消息流图的实体,自定义配置文件服务和远程客户端。
当我们设备的靴子,定制概要文件应用程序启动的服务数据库创建定制的概要文件。创建数据库的确认,等待客户端连接。当远程客户端连接时,服务会启用和远程客户端现在可以启动我们的服务器的请求。在上面的用例中,远程客户端请求写特点1。这是用户应用程序定制概要文件所示,更新的价值特点1。最后我们的远程客户端断开连接,这禁用定制概要文件的服务,进而表明,用户应用程序。
4.3。逐步添加一个特征
以下步骤将指导您如何创建定制BLE DA14531或DA14585 / DA14586设备概要文件。
导航到文件
da1458x_config_advanced.h
在文件夹user_config /
和修改默认的蓝牙设备地址。这个地址必须是独特的在祝福网络。
#定义CFG_NVDS_TAG_BD_ADDRESS {0 x03 0 x00 0 x70、0 xca 0 xea, 0 x80}
在文件
user_module_config.h
、检查和定义DLG_CUST1模块。
#定义EXCLUDE_DLG_SUOTAR (1)/ /这个模块被_excluded_#定义EXCLUDE_DLG_CUSTS1 (0)/ /这个模块被_included_
激活定制概要文件在您的应用程序通过定义相应的宏中
user_profiles_config.h
文件。
#定义CFG_PRF_DISS#定义CFG_PRF_CUST1
现在导航到文件
user_config.h
和改变广告设备名称。
/ / /设备名称#定义USER_DEVICE_NAME“DLG-PRPH”
改变广告数据。可以找到更多的信息BLE广告概念教程DA14531和DA14585 / DA14586设备。
/ / /广告数据#定义USER_ADVERTISE_DATA (\“\ x03”ADV_TYPE_COMPLETE_LIST_16BIT_SERVICE_IDS \ADV_UUID_DEVICE_INFORMATION_SERVICE \\ \ x11ADV_TYPE_COMPLETE_LIST_128BIT_SERVICE_IDS \“\ x59 \ x5A \ (x86 \ x2A \ x9E \ \ xE4 \ x8F \ xE9 \ x11 \ xBC \ x7C \ x98 \ x43 \×\ x18“)
请注意
您的自定义服务UUID必须写在低位优先的格式。你应该期待看到服务UUID为“184243987 c…5的事故”。
可选地,选择默认的睡眠模式。低功耗,你可以设置它
ARCH_EXT_SLEEP_ON
,但记住,当调试器连接您无法监视DA14531或DA14585 / DA14586的超低功耗。
静态常量sleep_state_tapp_default_sleep_mode=ARCH_SLEEP_OFF;
4.3.1。自定义配置文件服务
请注意
定制概要文件的实现的一些功能已经搬到罗DA14531设备。接下来的步骤在本教程都是相同的设备上的家庭,但是你可以参考SDK移植指南如果你想找到更多的相关变化。
我们设备的基本配置,以及设置广告参数,我们现在可以更深入到关贸总协定服务器的实现细节。
1。打开文件user_custs1_def.h
在文件夹中user_custom_profile /
。这个头文件不是我们所示的项目结构。你可以找到它在你的文件浏览器,或打开user_custs1_def.c
文件,右键单击标题的文件包括指令并选择“打开文档user_custs1_def.h”。在那里你会发现服务的UUID的定义及其特点,其长度和其他常量。
定义我们的定制服务的UUID。这比赛中定义的服务UUID,广告数据;在前一节中看到第五步。
#定义DEF_SVC1_UUID_128 {0 x59, 0 x5a (0 xe4, 0 x86, 0 x2a 0 x9e 0 x8f 0 xe9 0 x11, 0 xbc 0 x7c 0 x98 0 x43 0×, 0 x18}
请注意
本教程提供了一个示例的一个128位的UUID。发布前一个产品市场用户将需要定义一个不同的128位数字用于避免冲突的例子。用户可以选择任何号码,这并不需要注册在蓝牙特别兴趣小组。
添加服务的控制点UUID。
#定义DEF_SVC1_CTRL_POINT_UUID_128 {0 x20 0 xee 0 x8d, 0 x0c 0 xe1 0 xf0 0 x4a 0 x0c 0 xb3 0 25, 0 xdc 0 x53 0 x6a 0 x68 0 x86, 0 x2d}
添加控制点的数据长度。
#定义DEF_SVC1_CTRL_POINT_CHAR_LEN 1
添加控制点的描述名称为字符串。
#定义DEF_SVC1_CONTROL_POINT_USER_DESC“控制点”
如前所述,一个属性也属性,值,选择一些描述符。控制点的实现使用“用户描述“特征描述符。添加您的自定义服务数据库控制点特点,用户描述来定义一个枚举值,将用于服务器的数据库。
/ / / Custom1 enum服务数据基本特征枚举{/ /自定义服务1SVC1_IDX_SVC=0,SVC1_IDX_CONTROL_POINT_CHAR,SVC1_IDX_CONTROL_POINT_VAL,SVC1_IDX_CONTROL_POINT_USER_DESC,[…]
打开文件
user_custs1_def.c
在文件夹中user_custom_profile
。声明并分配自定义服务器的属性值。使用一个变量,将控制点的描述符UUID。
静态常量uint8_tSVC1_CTRL_POINT_UUID_128(ATT_UUID_128_LEN]=DEF_SVC1_CTRL_POINT_UUID_128;静态常量uint16_tatt_desc_user_desc=ATT_DESC_CHAR_USER_DESCRIPTION;
添加你的特点声明,自定义服务器的数据库中属性值和描述。
/ /控制点特点声明(SVC1_IDX_CONTROL_POINT_CHAR]={(uint8_t*)&att_decl_char,ATT_UUID_16_LEN,烫(理查德·道金斯,启用),0,0,零},/ /控制特征值(SVC1_IDX_CONTROL_POINT_VAL]={SVC1_CTRL_POINT_UUID_128,ATT_UUID_128_LEN,烫(或者说是,启用)|烫(WRITE_REQ,启用),DEF_SVC1_CTRL_POINT_CHAR_LEN,0,零},/ /控制点用户描述特征(SVC1_IDX_CONTROL_POINT_USER_DESC]={(uint8_t*)&att_desc_user_desc,ATT_UUID_16_LEN,烫(理查德·道金斯,启用),运算符(DEF_SVC1_CONTROL_POINT_USER_DESC)- - - - - -1,运算符(DEF_SVC1_CONTROL_POINT_USER_DESC)- - - - - -1,(uint8_t*)DEF_SVC1_CONTROL_POINT_USER_DESC},
此时,您已经创建了您的第一个自定义配置文件的特点,控制特征点。这一特点主要用于用户配置。在下一节中,我们将添加一个特征,也是一个服务来访问和修改它。