动态地更改数据库上的值

大家好. .谢谢你来参加论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,并包含在主对话网站中。所有的帖子和账号都已迁移。我们现在只接受新论坛的流量-请张贴任何新的线程在//www.wsdof.com/support.我们将在未来几天修复bug /优化搜索和标记。
3个帖子/ 0个新
最后发表
TMiranda
离线
最后看到:2年4个月前
加入:2017-11-16 18:00
动态地更改数据库上的值

嗨,伙计们,

我正在跟进我在这里发布的一个问题(https://support.dialog-semiconductor.com/forums/post/dialog-smartbond-bl..。——software/reading-dummy-value),它并没有完全满足我的需求。

我试图在我的蓝牙服务中设置一个虚拟值,我已经这样做了:

在文件@user_custs1_impl.c

空白updating_device_id ()

struct custs1_val_set_req *req = KE_MSG_ALLOC_DYN,
prf_get_task_from_id (TASK_ID_CUSTS1),
TASK_APP,
custs1_val_set_req,
DEF_SVC1_DEVICE_ID_CHAR_LEN);

//需要采样的ADC值
静态uint16_t样本;
示例= 1234;

/ /请求- > conhdl = app_env - > conhdl;
申请- >处理= SVC1_IDX_DEVICE_ID_VAL;
申请- >长度= DEF_SVC1_DEVICE_ID_CHAR_LEN;
/ /请求- >通知= true;
顺利进行,memcpy(请求- >价值DEF_SVC1_DEVICE_ID_CHAR_LEN);

ke_msg_send(要求的);

空白updating_major ()

struct custs1_val_set_req *req = KE_MSG_ALLOC_DYN,
prf_get_task_from_id (TASK_ID_CUSTS1),
TASK_APP,
custs1_val_set_req,
DEF_SVC1_MAJOR_CHAR_LEN);

//需要采样的ADC值
静态uint16_t样本;
示例= 4536;

/ /请求- > conhdl = app_env - > conhdl;
申请- >处理= SVC1_IDX_MAJOR_VAL;
申请- >长度= DEF_SVC1_MAJOR_CHAR_LEN;
/ /请求- >通知= true;
顺利进行,memcpy(请求- >价值DEF_SVC1_MAJOR_CHAR_LEN);

ke_msg_send(要求的);

空白updating_minor ()

struct custs1_val_set_req *req = KE_MSG_ALLOC_DYN,
prf_get_task_from_id (TASK_ID_CUSTS1),
TASK_APP,
custs1_val_set_req,
DEF_SVC1_MINOR_CHAR_LEN);

静态uint16_t样本;
示例= 0 xa0aa;
/ /请求- > conhdl = app_env - > conhdl;
申请- >处理= SVC1_IDX_MINOR_VAL;
申请- >长度= DEF_SVC1_MINOR_CHAR_LEN;
/ /请求- >通知= true;
顺利进行,memcpy(请求- >价值DEF_SVC1_MINOR_CHAR_LEN);

ke_msg_send(要求的);

空白updating_location ()

struct custs1_val_set_req *req = KE_MSG_ALLOC_DYN,
prf_get_task_from_id (TASK_ID_CUSTS1),
TASK_APP,
custs1_val_set_req,
DEF_SVC1_LOCATION__CHAR_LEN);

//需要采样的ADC值
静态uint16_t样本;
示例= 6435;

/ /请求- > conhdl = app_env - > conhdl;
申请- >处理= SVC1_IDX_LOCATION_VAL;
申请- >长度= DEF_SVC1_LOCATION__CHAR_LEN;
/ /请求- >通知= true;
顺利进行,memcpy(请求- >价值DEF_SVC1_LOCATION__CHAR_LEN);

ke_msg_send(要求的);

文件@user_peripheral.c
Void user_app_connection(uint8_t connection_idx, struct gapc_connection_req_ind const *param)

如果(app_env [connection_idx]。conidx ! = GAP_INVALID_CONIDX)

app_connection_idx = connection_idx;

//停止广告数据更新定时器
app_easy_timer_cancel (app_adv_data_update_timer_used);
updating_device_id ();
updating_major ();
updating_minor ();
updating_location ();

...

基本上,我在我的数据库上设置板和应用程序之间的连接的值。我的问题是:我如何能动态地改变那些值?
例如,如果我读取一次该值,我希望将0x0001添加到数据库上的存储值中,并在下一个read命令中显示新值。

我试图在user_catch_rest_hndl函数上这样做,特别是在案例CUSTS1_ATT_INFO_REQ上。但这根本不起作用。任何建议吗?
我使用SDK 6.0.6的ble_pheriperal示例来构建我的代码。

关键词:
设备:
TMiranda
离线
最后看到:2年4个月前
加入:2017-11-16 18:00
我都读过了
MT_dialog
离线
最后看到:1周2天前
工作人员
加入:2015-06-08 34
嗨TMiranda,

嗨TMiranda,

我不知道明白你想做什么,在你的代码粘贴你只是为了更新发送消息的价值特征,只要我能理解你想从手机读取这些值,只要这些值是读取你想更新特性的值,如果是这样的话,那么您可以使用580年ATTS_READ_REQ_IND,以便在应用程序级别上获得那种指示,一旦一个特征被读取,当接收到它时,你可以再次更新特征的值。在585/586中情况有所不同,cust1配置文件没有向应用程序级别发送消息来指示这一点,但如果你在user_custs1_def.c文件的数据库定义中应用RI选项,例如,使用下面的行作为参考,以便为您希望在读取时得到指示的自定义特征激活该特性:

// ADC值1特征值
[svc1_idx_adc_val_1_val] = {svc1_adc_val_1_uuid_128, att_uuid_128_len, perm (rd, enable) | perm (ntf, enable),
烫(RI,启用)| DEF_SVC1_ADC_VAL_1_CHAR_LEN0零}

通过这样做,你将得到gattc_read_req_ind_handler()函数在中央试图读取特定的特性时立即执行,这样你就可以实现你想要的,也请检查使用类似选项的DISS配置文件的实现。

由于MT_dialog