当前位置: 首页 > news >正文

企业信息查询系统官网北京/合肥网站优化推广方案

企业信息查询系统官网北京,合肥网站优化推广方案,软件开发人员犯罪,沈阳网站建设思路uuid是通用唯一标识码的意思,保证同一时空同一时空中所有机器标识唯一(百度这样说的) 下面总结下nrf52832怎么添加uuid. 可以做一下分类 添加蓝牙技术联盟定义的uuid添加自定义的uuid 这2类又各可以分成下面2个 添加服务的uuid添加特性的…
uuid是通用唯一标识码的意思,保证同一时空同一时空中所有机器标识唯一(百度这样说的)

下面总结下nrf52832怎么添加uuid.
可以做一下分类

  • 添加蓝牙技术联盟定义的uuid
  • 添加自定义的uuid

这2类又各可以分成下面2个

  • 添加服务的uuid
  • 添加特性的uuid

在总结之前先看下nordic提供的关于uuid的2个结构体

typedef struct
{ uint8_t uuid128[16]; /**< Little-Endian UUID bytes. */
} ble_uuid128_t;
typedef struct
{uint16_t    uuid; /**< 16-bit UUID value or octets 12-13 of 128-bit UUID. */uint8_t     type; /**< UUID type, see @ref BLE_UUID_TYPES. If type is @ref BLE_UUID_TYPE_UNKNOWN, the value of uuid is undefined. */
} ble_uuid_t;

ble_uuid128_t 是定义128bit(16字节)uuid的结构体,采用小端模式
ble_uuid_t 是定义16bit(2字节)uuid的结构体,还用一个type元素标识是那种类型的uuid,type可以取以下值,

#define BLE_UUID_TYPE_UNKNOWN       0x00 /**< Invalid UUID type. */
#define BLE_UUID_TYPE_BLE           0x01 /**< Bluetooth SIG UUID (16-bit). */
#define BLE_UUID_TYPE_VENDOR_BEGIN  0x02 /**< Vendor UUID types start at this index (128-bit). */

1.添加蓝牙技术联盟定义的uuid

比如心电的例子中

a.添加服务的uuid

心电服务是SIG定义好的服务,所以添加SIG定义uuid

  • 定义16bit uuid
ble_uuid_t ble_uuid;
  • 对结构体赋值
BLE_UUID_BLE_ASSIGN(ble_uuid, BLE_UUID_HEART_RATE_SERVICE);

这个宏展开如下

#define BLE_UUID_BLE_ASSIGN(instance, value) do {\instance.type = BLE_UUID_TYPE_BLE; \instance.uuid = value;} while(0)

就是把结构体里的type赋值成BLE_UUID_TYPE_BLE (SIG),16bit uuid赋值成BLE_UUID_HEART_RATE_SERVICE

  • 调用添加服务申明的api,把uuid添加到属性表中
err_code = sd_ble_gatts_service_add(BLE_GATTS_SRVC_TYPE_PRIMARY,&ble_uuid,&p_hrs->service_handle);

BLE_GATTS_SRVC_TYPE_PRIMARY 标识该申明的服务是首要服务
&ble_uuid 就是16bit uuid 结构体地址
&p_hrs->service_handle 是这个申明服务的操作句柄

b.添加特性的uuid
  • 定义16bit uuid
ble_uuid_t ble_uuid;
  • 对结构体赋值
BLE_UUID_BLE_ASSIGN(ble_uuid, BLE_UUID_HEART_RATE_MEASUREMENT_CHAR);

就是把结构体里的type赋值成BLE_UUID_TYPE_BLE (SIG),16bit uuid赋值成BLE_UUID_HEART_RATE_MEASUREMENT_CHAR

  • 调用添加特性申明的api,把uuid添加到属性表中
		//属性值memset(&attr_char_value, 0, sizeof(attr_char_value));attr_char_value.p_uuid    = &ble_uuid;attr_char_value.p_attr_md = &attr_md;attr_char_value.init_len  = hrm_encode(p_hrs, INITIAL_VALUE_HRM, encoded_initial_hrm);attr_char_value.init_offs = 0;attr_char_value.max_len   = MAX_HRM_LEN;attr_char_value.p_value   = NULL;//encoded_initial_hrm;return sd_ble_gatts_characteristic_add(p_hrs->service_handle,&char_md,&attr_char_value,&p_hrs->hrm_handles);

p_hrs->service_handle 是这个特性所属服务的句柄
&char_md 是特性标识符结构体地址
&attr_char_value 是特性值结构体地址,其中attr_char_value.p_uuid就是指向ble_uuid(16bit uuid)的地址
&p_hrs->hrm_handles 是这个特性的句柄

2.添加自定义的uuid

蓝牙串口的例子就是自定义的uuid

a.添加服务的uuid
  • 定义128bit uuid
#define NUS_BASE_UUID  {{0x9E, 0xCA, 0xDC, 0x24, 0x0E, 0xE5, 0xA9, 0xE0, 0x93, 0xF3, 0xA3, 0xB5, 0x00, 0x00, 0x40, 0x6E}} 
/**< Used vendor specific UUID. */
ble_uuid128_t nus_base_uuid = NUS_BASE_UUID;

这里定义的同时赋值了,注意是小端字节序

  • 把基础uuid添加进协议栈
err_code = sd_ble_uuid_vs_add(&nus_base_uuid, &p_nus->uuid_type);

&p_nus->uuid_type 会返回添加进去的uuid类型

  • 调用添加服务申明的api,把uuid添加到属性表中
    这里还要用定义16bit uuid 用于服务申明api的入口参数
    ble_uuid.type = p_nus->uuid_type; //类型ble_uuid.uuid = BLE_UUID_NUS_SERVICE;//服务的uuid// Add the service.err_code = sd_ble_gatts_service_add(BLE_GATTS_SRVC_TYPE_PRIMARY,&ble_uuid,&p_nus->service_handle);
a.添加特性的uuid

和前面特性uuid添加一样,如下

//1.定义16bit uuid结构体
ble_uuid_t          ble_uuid; 
//2.赋值
ble_uuid.type = p_nus->uuid_type;
ble_uuid.uuid = BLE_UUID_NUS_RX_CHARACTERISTIC; 
//3.特性申明
memset(&attr_char_value, 0, sizeof(attr_char_value));attr_char_value.p_uuid    = &ble_uuid;
attr_char_value.p_attr_md = &attr_md;
attr_char_value.init_len  = sizeof(uint8_t);
attr_char_value.init_offs = 0;
attr_char_value.max_len   = BLE_NUS_MAX_RX_CHAR_LEN;return sd_ble_gatts_characteristic_add(p_nus->service_handle,&char_md,&attr_char_value,&p_nus->rx_handles);

总结下,

  • 官方的uuid就是定义16bit uuid结构体,赋值uuid类型和uuid值,是服务的uuid就调用服务申明api,是特性uuid就调用特性申明api
  • 自定义uuid就要先定义128bit uuid结构体,调用sd_ble_uuid_vs_add把基础uuid添加进协议栈中并获得uuid类型,然后再定义16bit uuid结构体,赋值uuid类型和uuid值,是服务的uuid就调用服务申明api,是特性uuid就调用特性申明api

还有不管是官方还是自定义的uuid都不要忘了在广播初始化时添加uuid列表,不然手机扫描的话扫描不出uuid信息
在这里插入图片描述

m_adv_uuids是一个结构体数组
在这里插入图片描述

http://www.jmfq.cn/news/4878361.html

相关文章:

  • 0基础做网站/泉州网站关键词排名
  • 网站建站需要什么/电商网站首页
  • 网站空间备案流程/销售平台软件有哪些
  • 怎么在虚拟主机上发布网站/图片识别搜索引擎
  • wordpress重复网站/百度指数分析报告
  • 徐州好点的做网站的公司有哪些/软文广告案例分析
  • 学做面包网站/百度搜索网页版
  • 第五次普查数据自网站怎么做/网络营销推广的方法
  • dw制作asp网站模板/网站排名怎么做上去
  • 树莓派下载wordpress/周口seo推广
  • 一个网站做数据维护3天正常吗/谷歌应用商店
  • 我想学制作网站吗/kol推广是什么意思
  • 怎么做轴承网站/热门关键词查询
  • ps做 网站标准尺寸是多少合适/教育培训机构加盟
  • 手机网站建设方案doc/semantics
  • 网站建设实施步骤/百度爱采购客服电话
  • 网页标准化对网站开发维护的好处/公众号软文推广多少钱一篇
  • 上海网上做鸭子的网站/站长之家站长工具综合查询
  • 做分类信息网站如何/百度下载老版本
  • 可以自己做网站赚钱吗/什么是sem推广
  • 建站神器/小程序推广
  • 安阳网站优化/怎么建立网站?
  • 图片背景在网站建设中/市场营销
  • 重庆找做墩子网站/windows10优化大师
  • 做不锈钢门的网站/舆情优化公司
  • 违法网站开发人员/企业推广文案
  • 做网站困难吗/厦门百度广告开户
  • python软件开发/长沙官网网站推广优化
  • 智慧团建网站密码忘了/2023年免费进入b站
  • 免费申请做网站/短信营销