首页 > 其他分享 >nrf52840 设置128bit服务uuid

nrf52840 设置128bit服务uuid

时间:2022-10-26 20:45:20浏览次数:59  
标签:128bit uuid nus char add params ble nrf52840

sdk版本:nRF5_SDK_17.1.0_ddde560

主要更改以下函数:

uint32_t ble_nus_init(ble_nus_t * p_nus, ble_nus_init_t const * p_nus_init)
{
ret_code_t err_code;
ble_uuid_t ble_uuid;
ble_uuid128_t nus_base_uuid = NUS_COMMUNICATE_UUID; //服务的128bit uuid
ble_add_char_params_t add_char_params;

VERIFY_PARAM_NOT_NULL(p_nus);
VERIFY_PARAM_NOT_NULL(p_nus_init);

// Initialize the service structure.
p_nus->data_handler = p_nus_init->data_handler;

/**@snippet [Adding proprietary Service to the SoftDevice] */
// Add a custom base UUID.
err_code = sd_ble_uuid_vs_add(&nus_base_uuid, &p_nus->uuid_type);
VERIFY_SUCCESS(err_code);

ble_uuid.type = p_nus->uuid_type;
ble_uuid.uuid = BLE_UUID_NUS_BASE;                 //BLE_UUID_NUS_SERVICE;

// Add the service.
err_code = sd_ble_gatts_service_add(BLE_GATTS_SRVC_TYPE_PRIMARY,
                                    &ble_uuid,
                                    &p_nus->service_handle);
/**@snippet [Adding proprietary Service to the SoftDevice] */
VERIFY_SUCCESS(err_code);
//--------------------add by xxx 2022.6.13 -----------------------------------
ble_uuid128_t         nus_rx_base_uuid = NUS_SEND_UUID;  //特征值 写(对方是读) 128bit uuid
err_code = sd_ble_uuid_vs_add(&nus_rx_base_uuid, &p_nus->uuid_type);
VERIFY_SUCCESS(err_code);
//--------------------add by xxx 2022.6.13 -----------------------------------

// Add the RX Characteristic.
memset(&add_char_params, 0, sizeof(add_char_params));
add_char_params.uuid                     = BLE_UUID_NUS_BASE;               //BLE_UUID_NUS_RX_CHARACTERISTIC;
add_char_params.uuid_type                = p_nus->uuid_type;
add_char_params.max_len                  = BLE_NUS_MAX_RX_CHAR_LEN;
add_char_params.init_len                 = sizeof(uint8_t);
add_char_params.is_var_len               = true;    //length variable
add_char_params.char_props.write         = 1;
add_char_params.char_props.write_wo_resp = 1;
add_char_params.read_access  = SEC_JUST_WORKS;       //SEC_OPEN
add_char_params.write_access = SEC_JUST_WORKS;

err_code = characteristic_add(p_nus->service_handle, &add_char_params, &p_nus->rx_handles);
if (err_code != NRF_SUCCESS)
{
    return err_code;
}

//--------------------add by xxx 2022.6.13 ----------------------------------- 
ble_uuid128_t         nus_tx_base_uuid = NUS_RECEIVE_UUID;  //特征值 接收(对方是写) 128bit uuid
err_code = sd_ble_uuid_vs_add(&nus_tx_base_uuid, &p_nus->uuid_type);
VERIFY_SUCCESS(err_code);
//--------------------add by xxx 2022.6.13 -----------------------------------

// Add the TX Characteristic.
/**@snippet [Adding proprietary characteristic to the SoftDevice] */
memset(&add_char_params, 0, sizeof(add_char_params));
add_char_params.uuid              = BLE_UUID_NUS_BASE;               //BLE_UUID_NUS_TX_CHARACTERISTIC;
add_char_params.uuid_type         = p_nus->uuid_type;
add_char_params.max_len           = BLE_NUS_MAX_TX_CHAR_LEN;
add_char_params.init_len          = sizeof(uint8_t);
add_char_params.is_var_len        = true;
add_char_params.char_props.notify = 1;        //notify

add_char_params.read_access       = SEC_JUST_WORKS;//SEC_OPEN;
add_char_params.write_access      = SEC_JUST_WORKS;//SEC_OPEN;
add_char_params.cccd_write_access = SEC_JUST_WORKS;//SEC_OPEN;

return characteristic_add(p_nus->service_handle, &add_char_params, &p_nus->tx_handles);

}

其中,主要是在设置特征值Characteristic时,需要重新添加一遍128bit的uuid(add by xxx 2022.6.13部分代码)

标签:128bit,uuid,nus,char,add,params,ble,nrf52840
From: https://www.cnblogs.com/A-Water-absorbing-sponge/p/16829909.html

相关文章

  • mysQL uuID 查询
    mysql怎么获取刚生成的uuid作为主键,UUID长度过长,主键索引KeyLength长度过大,而影响能够基于内存的索引记录数量,进而影响基于内存的索引命中率,而基于硬盘进行索引查询性能很差......
  • java生成uuid(java生成word文件)
    JAVAJDK提供的一个自动生成主键UUID.randomUUID()的方法它永远都不会重复嘛??关于是否重复,首先要说一下uuid生成的原理UUID是指在一台机器上生成的数字,它保证对在同一时空......
  • java类uuid源码分析
    通用唯一识别码(英语:UniversallyUniqueIdentifier,简称UUID)是一种软件建构的标准,亦为自由软件基金会组织在分散式计算环境领域的一部份。UUID的目的,是让分散式系统中的所有......
  • NRF52832-QFAA、NRF52840-QIAA性能区别-蓝牙智能手环穿戴
    nRF52840可以说是nRF52832的超强升级版,虽然同样是蓝牙5.0,但是整体稳定性和性能上的提升却相差甚远,下面为大家简单讲解下NRF52832和NRF52840的性能上的区别!先说说共......
  • java中如何生成UUID呢?
    转自:​​​  http://www.java265.com/JavaProblem/202110/1361.html​​下文笔者将讲述java代码生成UUID的方法分享,如下所示:UUID简介UUID(UniversallyUniqueIdentifie......
  • jmeter截取指定长度的UUID
    1、使用BeanShellSampler,写如下代码:importjava.util.UUID;UUIDuuid1=UUID.randomUUID();//获取UUID的值//把uuid中的‘-’去掉,从左开始取32位字符,然后传给变量id......
  • java 生成GUID,可以用UUID类来生成GUID
    全局唯一标识符(GUID,GloballyUniqueIdentifier)是一种由算法生成的二进制长度为128位的数字标识符,一般用16进制表示。在理想情况下,任何计算机和计算机集群都不会生成......
  • python模块之uuid模块
    uuid有什么用?很多应用场景需要一个id,但是又不要求这个id有具体的意义,仅仅用来标识一个对象。常见的用处有数据库表的id字段;用户session的key值;前端的各种UI库,因为它们通......
  • postgresql uuid模糊搜索 uuid string 类型转换 SQL Error [42883] explicit type cas
    问题描述在postgresql的使用过程中,你可能有以下几种需求:要对uuid类型的列进行过滤,但是需要手动输入整个uuid太麻烦容易出错,如果uuid列也能像字符串一样模糊匹配就......
  • pg 随机函数 和uuid 生成
      UUID生成--创建createextension"uuid-ossp";--使用selectuuid_generate_v4()--创建随机函数CREATEORREPLACEFUNCTIONget_random_number(integer,int......