如题,如果不需要手机使能通知,nus服务能默认使能么?
NRF52840的nus服务例程怎么才能默认打开通知呢
要咋操作呢
529011577 当链接建立之后,调用sd_ble_gatts_sys_attr_set把CCCD使能,这样就不用手机使能了。
Wireless-Tech sd_ble_gatts_value_set(uint16_t conn_handle, uint16_t handle, ble_gatts_value_t *p_value)) 应该是用这个改CCCD吧? sd_ble_gatts_sys_attr_set API参数 没有特征的handle
sd_ble_gatts_value_set 这个API出错了。。。
sd_ble_gatts_sys_attr_set 的参数怎么填呢。。。
Wireless-Tech
这个帖子还没结帖呢,还是没能解决问题呢。我遇到的问题和上面说的一样
529011577 晚点我试试
Wireless-Tech 万波拉德,结果咋样呢,我的是SDK17.0不行...
坛主试过了么?
529011577 这几天比较忙,我有空会在这里回复你的。
- 已编辑
err_code = sd_ble_gatts_sys_attr_set(m_conn_handle,sys_attr_data,p_sys_attr_data_len,BLE_GATTS_SYS_ATTR_FLAG_USR_SRVCS);
APP_ERROR_CHECK(err_code);
其中,上述的形参如下:
static uint8_t sys_attr_data[8]={0x10,0x00,0x02,0x00,0x01,0x00,0xcd,0xca};
static uint16_t p_sys_attr_data_len = 8;
你可能会问上面的参数哪来的?
先用手机将带有Notify的属性Enable了,然后断开连接,然后在断开连接事件中获取这些值,然后再原封不动的copy下来;之后就可以注释掉这个辅助代码了。
经过,实测一连接上就自己使能enable.
貌似还是不行。。。
然后就报错了
我的数组是8个字节,你的可以不止。把数组的大小从8变到64再看看。
数组大小256都试过了,还是报这个错。。。
529011577
你这个报错,很明显是你的buffer不够,你可以先从官方的ble_app_uart的示例工程新增这个代码。
NRF_ERROR_DATA_SIZE The system attribute information did not fit into the provided buffer
Wireless-Tech 我看官方提供的sd_ble_gatts_sys_attr_get这个函数可以获取长度:p_sys_attr_data 指向缓冲区的指针,其中将填充有关系统属性的更新信息。数据的格式在系统属性的用户内存布局中进行了描述。可以提供 NULL 来获取数据的长度。但是我获取完长度,然后用这个长度调整的数组长度,依旧报错说长度不够是为什么
1105367465 可以先从我贴子上描述的例程上先试试吗?