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。

ble_app_profile

图5BLE概要文件应用程序项目

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 /,保存用户的实现处理事件和任何额外的应用程序代码。

在下图中可以看到服务器应用程序之间的消息流图的实体,自定义配置文件服务和远程客户端。

自定义服务消息流图

图6自定义服务消息流图

当我们设备的靴子,定制概要文件应用程序启动的服务数据库创建定制的概要文件。创建数据库的确认,等待客户端连接。当远程客户端连接时,服务会启用和远程客户端现在可以启动我们的服务器的请求。在上面的用例中,远程客户端请求写特点1。这是用户应用程序定制概要文件所示,更新的价值特点1。最后我们的远程客户端断开连接,这禁用定制概要文件的服务,进而表明,用户应用程序。

4.3。逐步添加一个特征

以下步骤将指导您如何创建定制BLE DA14531或DA14585 / DA14586设备概要文件。

  1. 导航到文件da1458x_config_advanced.h在文件夹user_config /和修改默认的蓝牙设备地址。这个地址必须是独特的在祝福网络。

#定义CFG_NVDS_TAG_BD_ADDRESS {0 x03 0 x00 0 x70、0 xca 0 xea, 0 x80}
  1. 在文件user_module_config.h、检查和定义DLG_CUST1模块。

#定义EXCLUDE_DLG_SUOTAR (1)/ /这个模块被_excluded_#定义EXCLUDE_DLG_CUSTS1 (0)/ /这个模块被_included_
  1. 激活定制概要文件在您的应用程序通过定义相应的宏中user_profiles_config.h文件。

#定义CFG_PRF_DISS#定义CFG_PRF_CUST1
  1. 现在导航到文件user_config.h和改变广告设备名称。

/ / /设备名称#定义USER_DEVICE_NAME“DLG-PRPH”
  1. 改变广告数据。可以找到更多的信息BLE广告概念教程DA14531和DA14585 / DA14586设备

/ / /广告数据# define USER_ADVERTISE_DATA (" \ x03 " \ ADV_TYPE_COMPLETE_LIST_16BIT_SERVICE_IDS \ ADV_UUID_DEVICE_INFORMATION_SERVICE \ \ x11“\ / /下一节0 x11 = 17字节ADV_TYPE_COMPLETE_LIST_128BIT_SERVICE_IDS \ / /显示128位服务的完整列表UUID \ x59 \ x5A \”(x86 \ x2A \ x9E \ \ xE4 \ x8F \ xE9 \ x11 \ xBC \ x7C \ x98 \ x43 \×\ x18“) / /定制服务UUID

请注意

您的自定义服务UUID必须写在低位优先的格式。你应该期待看到服务UUID为“184243987 c…5的事故”。

  1. 可选地,选择默认的睡眠模式。低功耗,你可以设置它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的定义及其特点,其长度和其他常量。

在凯尔IDE打开头文件

图7在凯尔IDE打开头文件

  1. 定义我们的定制服务的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位数字用于避免冲突的例子。用户可以选择任何号码,这并不需要注册在蓝牙特别兴趣小组。

  1. 添加服务的控制点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}
  1. 添加控制点的数据长度。

#定义DEF_SVC1_CTRL_POINT_CHAR_LEN 1
  1. 添加控制点的描述名称为字符串。

#定义DEF_SVC1_CONTROL_POINT_USER_DESC“控制点”
  1. 如前所述,一个属性也属性,值,选择一些描述符。控制点的实现使用“用户描述“特征描述符。添加您的自定义服务数据库控制点特点,用户描述来定义一个枚举值,将用于服务器的数据库。

/ / / Custom1 enum服务数据基本特征枚举{/ /自定义服务1SVC1_IDX_SVC=0,SVC1_IDX_CONTROL_POINT_CHAR,SVC1_IDX_CONTROL_POINT_VAL,SVC1_IDX_CONTROL_POINT_USER_DESC,[…]
  1. 打开文件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;
  1. 添加你的特点声明,自定义服务器的数据库中属性值和描述。

/ /控制点特点声明(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},

此时,您已经创建了您的第一个自定义配置文件的特点,控制特征点。这一特点主要用于用户配置。在下一节中,我们将添加一个特征,也是一个服务来访问和修改它。