android ble不配对接收广播数据_BLE协议栈 GAP

GAP(Generic Access Profile)通用访问规范层算是BLE协议栈中最顶部的一层,它定义了设备如何广播、扫描、发现和建立连接,以及配置工作角色(Role)、可发现性、广播数据内容和安全相关的参数。从编程视角来看,GAP中的内容就像是一个config文件,BLE协议栈其他层的工作,都要从GAP中获取初始化参数和配置信息。GAP中定义了一系列模式(Mode)和规程(Procedure),二者相互配合,完成广播和连接的工作。

GAP角色(Role)

有以下几种种GAP角色:

  • Central:中央设备

  • Peripheral:外围设备

  • Broadcaster:广播者

  • Observer:观察者

  • Central & Peripheral

第五种Central&Peripheral,在内部是两种角色进行按需转换,并非一种独立的角色。中央设备是向外围发起连接的设备,连接起来后就称为主设备(Master)。Peripheral是向外部广播的设备,连接起来后称为从设备(Slave)。因为建立连接需要进行数据收发,所以无论是Central还是Peripheral,他们都必须具有数据接收和发送的能力。

广播者是一个纯广播设备,观察者是一个纯扫描设备。假如功能需求极其简单,这两种角色可以是只接收或只发送的设备。iBeacon设备就可以设置为一个广播者角色。

与GAP角色相似的还有一个GATT角色概念。GATT角色包括以下三种:

  • GATT Server

  • GATT Client

  • GATT Server & Client

GATT Server是指数据服务器,有发送数据的需求,GATT Client指数据客户端,有接收数据的需求。GATT Server的特征值有Read/Write/Indicate等属性,配置后可以收发处理数据;而GATT Client的特征值是没有这些属性的,仅能够扫描读取GATT Server的特征值,针对Server的特征值进行读写。所以大多数情况下,Central扮演着GATT Client的角色,而Peripheral扮演着GATT Server的角色。不过这并不绝对,理论上无论Central还是Peripheral设备,它都可以是GATT Server,或者GATT Client。比如Alert Notification Profile,它是一个主机,提供扫描功能,但是连接后它是数据源,向外部提供数据,承担Server责任,因而它是GAP Central + GATT Server。总而言之,GAP角色决定了谁广播谁扫描,GATT角色决定了数据从哪里出发。

基本信息

设备地址

BLE设备地址为6字节,分两部分,前半部分为公司部分,后半部分为设备部分。一个典型的BLE设备地址为:00A050-123456,00A050表示Cypress,123456表示设备序号。BLE广播时候会携带设备地址,扫描时候也会记录设备地址,如果两个设备使用相同的地址,则会产生冲突,所以BLE的设备地址应该保证唯一。后半部分3个字节总共6个字符空间&

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`ble_gap_sec_params_t`是Nordic nRF5 SDK中用于BLE安全参数配置的结构体。它包含了BLE连接的各种安全参数,例如加密要求、身份验证要求、秘钥大小、秘钥分发方式等等。以下是`ble_gap_sec_params_t`结构体的定义: ``` typedef struct { uint8_t bond : 1; /**< Perform bonding. */ uint8_t mitm : 1; /**< Man In The Middle protection required. */ uint8_t lesc : 1; /**< LE Secure Connections. */ uint8_t keypress : 1; /**< Generation of keypress notifications required. */ uint8_t io_caps : 3; /**< IO capabilities. */ uint8_t oob : 1; /**< Out Of Band data available. */ uint8_t min_key_size; /**< Minimum encryption key size in octets between 7 and 16. */ uint8_t max_key_size; /**< Maximum encryption key size in octets between min_key_size and 16. */ uint16_t kdist_own; /**< Key distribution bitmap: keys that the local device will distribute. */ uint16_t kdist_peer; /**< Key distribution bitmap: keys that the remote device will distribute. */ } ble_gap_sec_params_t; ``` 下面是`ble_gap_sec_params_t`结构体中的各个参数的含义: - `bond`:是否需要进行配对,1表示需要,0表示不需要; - `mitm`:是否需要进行中间人攻击保护,1表示需要,0表示不需要; - `lesc`:是否使用LE Secure Connections,1表示使用,0表示不使用; - `keypress`:是否需要生成按键通知,1表示需要,0表示不需要; - `io_caps`:设备的输入输出能力,包括无能力、数字输入、数字输出、数字输入输出、模拟输入、模拟输出和模拟输入输出; - `oob`:是否有Out Of Band数据可用,1表示有,0表示没有; - `min_key_size`:加密密钥的最小长度,单位为字节; - `max_key_size`:加密密钥的最大长度,单位为字节; - `kdist_own`:本地设备需要分发的秘钥类型,包括加密秘钥、签名秘钥等; - `kdist_peer`:远程设备需要分发的秘钥类型。 在BLE连接过程中,需要根据应用场景和安全要求,设置相应的`ble_gap_sec_params_t`参数来保证BLE连接的安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值