如题,如果不需要手机使能通知,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 的参数怎么填呢。。。

          529011577

          参考官方的帖子

            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.

                      貌似还是不行。。。


                      然后就报错了

                        529011577

                        我的数组是8个字节,你的可以不止。把数组的大小从8变到64再看看。

                          数组大小256都试过了,还是报这个错。。。

                            529011577
                            你这个报错,很明显是你的buffer不够,你可以先从官方的ble_app_uart的示例工程新增这个代码。

                            NRF_ERROR_DATA_SIZE The system attribute information did not fit into the provided buffer
                              3 个月后

                              Wireless-Tech 我看官方提供的sd_ble_gatts_sys_attr_get这个函数可以获取长度:p_sys_attr_data 指向缓冲区的指针,其中将填充有关系统属性的更新信息。数据的格式在系统属性的用户内存布局中进行了描述。可以提供 NULL 来获取数据的长度。但是我获取完长度,然后用这个长度调整的数组长度,依旧报错说长度不够是为什么

                                1105367465 可以先从我贴子上描述的例程上先试试吗?

                                  撰写回复...