add_char_params.uuid_type = p_uarts->uuid_type; //设置RX特征值的最大长度 add_char_params.max_len = BLE_UARTS_MAX_RX_CHAR_LEN; //设置RX特征值的初始长度 add_char_params.init_len = sizeof(uint8_t); //设置RX的特征值长度为可变长度 add_char_params.is_var_len = true; //设置RX特...
} ble_gatts_char_handles_t; add_char_params (类型为ble_add_char_params_t)是对characteristic的参数进行赋值,如“低功耗蓝牙ATT_GATT_Profile_Service_Char规格解读”所述,characteristic包含多个attribute,每个attribute都有自己的value/handle/uuid/permission,所以ble_add_char_params_t这个结构体设计的比较复杂。
值得注意的是,当使用16bit的UUID时,就不需要调用sd_ble_uuid_vs_add()函数往协议栈里面写BASE UUID了。 uint32_tble_nus_init(ble_nus_t*p_nus,ble_nus_init_tconst*p_nus_init){ret_code_t err_code;ble_uuid_t ble_uuid;//ble_uuid128_t nus_base_uuid = NUS_BASE_UUID;ble_add_char_params...
uint32_tble_lbs_init(ble_lbs_t*p_lbs,constble_lbs_init_t*p_lbs_init){uint32_terr_code;ble_uuid_tble_uuid;ble_add_char_params_tadd_char_params;// Initialize service structure.p_lbs->led_write_handler=p_lbs_init->led_write_handler;// Add service.ble_uuid128_tbase_uuid={LBS_UUID_...
} ble_nus_init_t; 1. 2. 3. 4. 5. 6. 7. 8. 下面我们实现一下自己的 nus_data_handler,这里我们将蓝牙接收到的数据直接原样通过BLE发送到手机端。 void nus_data_handler(ble_nus_t * p_nus, uint8_t * p_data, uint16_t length) ...
static void ble_on_connected(struct bt_conn *conn, uint8_t err) { char addr[BT_ADDR_LE_STR_LEN]; /*Print err code when the connection is error*/ if (err) { LOG_ERR("Connection failed, err 0x%02x %s", err, bt_hci_err_to_str(err)); ...
ble_conn_params SDK模块确保与主机(集中器)的连接参数相适应,如果不适应,外围设备将要求更改连接参数,超过设定的更新次数都没有更新成功后,它就会断开连接或者根据设置返回一个事件到应用层。 3.5 服务 服务可以通过sd_ble_gatts_service_add()进行添加,最好不要在应用层代码中建立服务,而是在一个单独的文件中建立...
//服务Service IDuint16_tchar_handle;//特征Characteristic句柄esp_bt_uuid_t char_uuid;//特征Characteristic的UUIDesp_gatt_perm_t perm;//特征属性Attribute 授权esp_gatt_char_prop_t property;//特征Characteristic的特性uint16_tdescr_handle;//描述descriptor句柄esp_bt_uuid_t descr_uuid;//描述descriptor...
添加服务本身。直接调用sd_ble_gatts_service_add就可以完成。 添加服务下面的characteristics。server的characteristic一般都是通过sd_ble_gatts_characteristic_add来添加的。以NUS的RX characteristic为例,可以看到: sd_ble_gatts_characteristic_add(p_nus->service_handle,&char_md,&attr_char_value,&p_nus->rx_ha...
}else{unsignedcharuuidDataTemp[16];memcpy(&uuidDataTemp, uuidData,sizeof(uuidDataTemp)); nordicUUID.uuid = (uuidData[13] <<8) | uuidData[12]; uuidDataTemp[13] =0; uuidDataTemp[12] =0; sd_ble_uuid_vs_add((ble_uuid128_t*)&uuidDataTemp, &nordicUUID.type); ...