BLE service, characteristic

BLE协议栈架构如下所示:

在这里插入图片描述
用户开发应用程序或者说service的时候,调用的都是GATT API,而GATT又调用了ATT API。

BLE client/server(C/S) 架构

在这里插入图片描述

1、上图所示的Request和Response其实就是我们经常说的ATT命令(ATT PDU),也就是说Client和Server之间通过ATT PDU进行交互。
2、在BLE中,数据是通过characteristic进行包装的,而且多个characteristic组成一个service,service是一个独立的服务单元,或者说service是一个基本的BLE应用。
3、如果某个service是一个蓝牙联盟定义的标准服务,也可以称其为profile,比如HID/心率计/体温计/血糖仪等,都是标准蓝牙服务,因此都有相应的profile规格书。

一个characteristic包含三种条目:characte
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
BLE是指蓝牙低功耗(Bluetooth Low Energy),是一种用于物联网设备间通信的无线协议。在汇编中,可以通过使用蓝牙芯片厂商提供的API库来实现BLE通信。 例如,在Nordic Semiconductor的nRF5系列芯片上,可以使用nRF5 SDK中提供的SoftDevice API来实现BLE通信。以下是一个简单的汇编代码示例,用于初始化并启动SoftDevice,以及创建一个BLE服务和特征: ``` ; Include the required headers #include "nrf_sdm.h" #include "ble.h" #include "ble_gap.h" #include "ble_gatts.h" #include "ble_srv_common.h" ; Define the BLE service and characteristic UUIDs BLE_UUID_DEF(my_service_uuid, 0x1234); BLE_UUID_DEF(my_char_uuid, 0x5678); ; Define the BLE service and characteristic handles my_service_handle: dd 0 my_char_handle: dd 0 ; Initialize and start the SoftDevice sd_softdevice_enable ; Create the BLE service and characteristic ble_uuid128_t base_uuid mov r0, #0x00001234 mov r1, #0x0000 mov r2, #0x1000 bl ble_uuid_from_base_uuid128 mov r3, r0 mov r4, #0 mov r5, #0 mov r6, #0 mov r7, #0 mov r8, #0 mov r9, #0 mov r10, #0 mov r11, #0 mov r12, #0 mov r13, #0 mov r14, #0 mov r15, #0 mov r0, r3 mov r1, #0 mov r2, #0 mov r3, #0 mov r4, #0 mov r5, #0 mov r6, #0 mov r7, #0 mov r8, #0 mov r9, #0 mov r10, #0 mov r11, #0 mov r12, #0 mov r13, #0 mov r14, #0 mov r15, #0 mov r0, #BLE_GATTS_SRVC_TYPE_PRIMARY mov r1, r3 mov r2, my_service_handle bl sd_ble_gatts_service_add mov r0, #BLE_UUID_TYPE_BLE mov r1, my_char_uuid mov r2, my_service_handle mov r3, my_char_handle bl sd_ble_gatts_characteristic_add ``` 在这个示例中,首先通过调用`sd_softdevice_enable`函数来初始化并启动SoftDevice。接着,使用`ble_uuid_from_base_uuid128`函数来创建自定义的BLE服务和特征的UUID,并将其保存在寄存器r3中。然后,使用`sd_ble_gatts_service_add`函数来创建BLE服务,将其句柄保存在`my_service_handle`变量中。最后,使用`sd_ble_gatts_characteristic_add`函数来创建BLE特征,将其句柄保存在`my_char_handle`变量中。 需要注意的是,这只是一个简单的示例代码,实际使用中还需要对参数和返回值进行检查和处理,以确保BLE通信的稳定和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值