NRF52832 蓝牙协议栈中关于SD=BLE=OPT=SET操作的参数

//关联sd_ble_opt_set函数的一些参数
//ble.h.
//BLE通用枚举
//通用API SVC编码
enum BLE_COMMON_SVCS
{
    //启用并初始化BLE堆栈
    SD_BLE_ENABLE = BLE_SVC_BASE,
    //从挂起的事件队列中获取事件
    SD_BLE_EVT_GET,
    //添加特定于供应商的基本UUID
    SD_BLE_UUID_VS_ADD,
    //解码UUID字节
    SD_BLE_UUID_DECODE,
    //对UUID字节进行编码
    SD_BLE_UUID_ENCODE,
    //获取本地版本信息(公司ID、链路层版本、链路层子版本)
    SD_BLE_VERSION_GET,
    //用户内存回复
    SD_BLE_USER_MEN_REPLY,
    //设置BLE选项
    SD_BLE_OPT_SET,
    //获取BLE选项
    SD_BLE_OPT_GET,
    //向BLE堆栈添加配置
    SD_BLE_CFG_SET,
    //删除供应商特定的基本UUID
    SD_BLE_UUID_VS_REMOVE,
}

//ble_gattc.h
//UUID发现选项
//与sd_ble_opt_set一起使用,以启用和禁用将发现的128位UUID自动插入到供应商特定UUID表中,默认情况下是禁用的
//在禁用时,如果由sd_ble_gattc_primary_services_discover,sd_ble_gattc_relationships_discover和sd_blale_gattc_characteristics_discover
//启动的过程发现了一个128位UUID,而该UUID不是由sd_ble_UUID_vs_add,ble_uuid_t::type添加的,则在响应的事件中将该UUID设置位
//ble_UUID_type_UNKNOWN
//在启用时,将自动添加所有找到的128位UUID。应用程序可以使用sd_ble_uuid_encode从响应事件中接收的ble_uuid_t中检索128位UUID
//如果特定于供应商的UUID总数超过表容量,ble_uuid_t::type将在响应事件中设置为 ble_uuid_type_UNKNOWN
//另外请参考ble_common_cfg_vs_uuid_t,sd_ble_uuid_vs_remove
//此选项不支持sd_ble_opt_get
//
typedef struct
{
    //C语言的位域是一种特殊的结构体成员,允许我们按位对成员进行定义,指定其占用的位数。
    //这里设置为1可启用(或0禁用)可发现的128位UUID的自动插入
    uint8_t auto_add_vs_enable : 1;
}ble_gattc_opt_uuid_disc_t;

//ble_gap.h
//通道映射选项
/*
与sd_ble_opt_get一起使用以获取当前通道映射,或与sd_ble_opt_set一起使用以设置新的通道映射。
设置通道映射时,它将应用于所有当前和未来的连接。获取当前通道映射时,它应用于单个连接,并且必须
提供连接句柄。
根据连接参数的不同,设置通道映射可能需要一些事件。
每个连接所花费的事件可能不同,获取操作将返回以前的通道映射,直到新的通道映射生效。
设置通道映射后,根据规范,在至少1秒后才能在此操作设置
请参阅蓝牙规4.1版第2卷E部分第7.3.46节
返回的参数:
获取或设置成功
以下一项或多项为真
在ch_map中设置少于两个比特
设置用于主要广播信道(37-39)的比特
在足够的时间过去之前,通道映射被重新设置
为get提供的连接句柄无效
*/
typedef struct
{
    //连接句柄(仅适用于get)
    uint16_t conn_handle;
    //通道映射(37位)
    uint8_t ch_map[5];
}ble_gap_opt_ch_map_t;

/*
本地连接延迟选项
本地连接延迟是一种功能,它使从设备能够通过忽略对等设备设置的从设备延迟来提高电流消耗。本地连接延迟只能设置为从机
延迟的倍数,并且不能高于监督超时的一半。
与sd_ble_opt_set一起用于设置本地连接延迟,此选项不支持sd_ble_opt_get,但在设置该选项时,会将实际本地连接延迟
(除非设置为NULL)设置为返回参数。
注意:延迟集将被截断为最接近的从机延时时间倍数,或在一半监督超时之前最接近的倍数
注意:本地连接延迟在默认情况下是禁用的,需要为新连接以及更新连接时启用
有返回值
*/
typedef struct
{
    //连接句柄
    uint16_t conn_handle;
    //请求的本地连接延迟
    uint16_t requested_latency;
    //指向存储实际本地连接延迟的指针(可设置为NULL以跳过返回值)
    uint16_t * p_actual_latency;
}ble_gap_opt_local_conn_latency_t;

/*
禁用从机延迟
与sd_ble_opt_set一起使用,以临时引用外围设备连接的从属延迟(请参考ble_gap_conn_params_t::slave_latency)
并重新启用它。
禁用时,外围设备将忽略中心设置的slave_latency
注意:只能在外围链路上调用
*/
typedef struct
{
    //连接句柄
    uint16_t conn_handle;
    //设置为1可禁用从属延迟 设置为0 在此启用它
    uint8_t disable:1;
}ble_gap_opt_slave_latency_disable_t;

/*
密码选项
包含配对过程中要使用的密钥的结构。这可以与sd_ble_opt_set一起使用,使软设备使用预编程的密钥进行身份验证,而不是
生成随机密钥
注意:重复使用同一个预编程密钥进行配对会使配容易收到MITIM攻击
sd_ble_opt_get不支持此选项
*/
typedef struct
{
    /*
    密钥选项 指向配对过程中要使用的6位ASCII字符串(仅限0-9,无NULL终止)密钥的指针。如果此值为NULL,则softdevice
    将要需要生成一个随机密钥
    */
    uint8_t const * p_passkey;
} ble_gap_opt_passkey_t;

//兼容性模式1选项
/*
这个可以与sd_ble_opt_set一起使用,以启用和禁用兼容性模式1
默认情况下禁用兼容模式1
注意:兼容模式1允许与不支持链路层CONNECT_IND数据包中winoffset参数值为0的外设进行互操作。这适用于来自另一个供应商的
一组有限的传统外围设备。只有当本地设备充当中央设备并启动与外围设备的连接时,启用此兼容模式才会产生效果。在这种情况下,
可能会导致所有连接的连接创建需要更长的一个连接间隔才能完成
*/
typedef struct
{
    uint8_t enable:1:
}ble_gap_opt_compat_mode1_t;

/*
经过身份验证的负载超时选项
这个可以与sd_ble_opt_set一起使用,将AUTHENTICATED有效负载超时更改为除默认值BLE_GAP_AUTH_PAYLOAD_TIMEROUT_MAX
之外的值
注意:如果经过AUTH_PAYLOAD_TIMEOUT时间而未在加密链路上接收到具有有效MIC的数据包,则经生成经过身份验证的有效负载超时事件:
BLE_GAP_TIMEOUT_SRC_AUTH_PAYLOAD
注意:LE ping过程将在定时器到期之前启动,以给对等方重置定时器的机会。此外,堆栈将尝试将LE ping的运行优先于其他活动,以增加
在计时器到期之前完成LE ping的机会。为了避免对其他活动产生副作用,建议使用高超时值
建议超时 > > 2*(connInterval * (6 + connSlaveLatency)).
*/
typedef struct
{
    //连接句柄
    uint16_t conn_handle;
    //请求超时以10毫秒为单位
    uint16_t auth_payload_timeout;
}ble_gap_opt_auth_payload_timeout_t;

//ble.h
/*
设置BLE选项
这个调用允许应用程序设置一个选项的值
输入参数 opt_id 选项ID 请参考 BLE_COMMON_OPTS BLE_GAP_OPTS和BLE_GATTC_OPTS
输入参数 p_opt 指向包含选项值的ble_opt_t结构的指针
SVCALL(SD_BLE_OPT_SET,uint32_t,sd_ble_opt_set(uint32_t opt_id,ble_opt_t const * p_opt));
*/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值