4个帖子/ 0新
最后一篇
Ziv324
离线
最后一次露面:1个月1周前
加入:2016-01-08 07:36
DA14585读取资料方法

您好
目前已成成在DA14580透过atts_read_req_ind_handlerd,写知特征后读取资料的功能。
在考虑要转移到到da14585。

但在进行上的搬移,da14585 sdk和da14580缺少的分量的...

有了建议的方法或步骤吗吗?

设备:
cyibin.
离线
最后一次露面:4个月3周前
职员
加入:2017-12-14 02:48
你好,
Ziv324
离线
最后一次露面:1个月1周前
加入:2016-01-08 07:36
你好,。

你好,。

但这份文库里面有条明明怎么对自定义概况去写入数据。
没有针对如何读取数据做任何的说明。

目前目前使使用通知也可以,但现出的是读取数据。

cyibin.
离线
最后一次露面:4个月3周前
职员
加入:2017-12-14 02:48
你好,

你好,

你的♥,你想问的是,如何在外围端支持中央发表意外的gatt_read命令吧?

首先,需要需要态度添加读属性,例如下载的cust1_idx_recv_value态度:

struct attm_desc_128 custs1_att_db [cust1_dx_nb] = {[cust1_dx_svc] = {(uint8_t *)&att_decl_svc,att_uuid_16_len,perm(rd,启用),sizeof(custs1_svc),sizeof(custs1_svc),(uint8_t *)和custs1_svc},[cust1_idx_send_char] = {(UINT8_T *)和ATT_DECL_CHAR,ATT_UUID_16_LEN,PERM(RD,ENABLE),SIZEOF(CUSTS1_SEND_CHAR),SIZEOF(CUSTS1_SEND_CHAR),(UINT8_T *)和CUSTS1_SEND_CHAR},[CUST1_IDX_UUID_VALUE] = {CUST1_SEND_UUID_128,ATT_UUID_128_LEN,PERM(RD,ENABLE)|perm(wr,启用),def_cust1_send_char_len,0,null},[cust1_dx_recv_char] = {(uint8_t *)和att_decl_char,att_uuid_16_len,perm(rd,启用),sizeof(custs1_recv_char),sizeof(custs1_recv_char),(uint8_t *)&custs1_recv_char},[cust1_idx_recv_value] = {cust1_recv_uuuid_128,att_uuid_128_len,perm(rd,启用)|perm(ntf,启用),def_cust1_recv_char_len,0,null} [cust1_dx_recv_ntf_cfg] = {(uint8_t *)和att_decl_cfg,att_uuid_16_len,perm(rd,启用)|perm(wr,启用),sizeof(uint16_t),0,null},};

然后,在档案的任务文章中,添加gattc_read_cmd_ind命令,和和对应的处理程序,例如:

//在cust1_task.c中const的结构ke_msg_handler custs1_connected [] = {{GATTC_READ_CMD_IND,(ke_msg_func_t)gattc_read_cmd_ind_handler},{GATTC_WRITE_CMD_IND,(ke_msg_func_t)gattc_write_cmd_ind_handler},{GATTC_CMP_EVT,(ke_msg_func_t)gattc_cmp_evt_handler},{CUSTS1_VAL_NTF_REQ,(ke_msg_func_t)custs1_val_ntf_req_handler},{custs1_val_set_req,(ke_msg_func_t)custs1_val_set_req_handler},{custs1_val_ind_req,(ke_msg_func_t)custs1_val_ind_req_handler},};静态int gattc_read_cmd_ind_handler(ke_msg_id_t const msgs,struct gattc_read_cmd_ind const * param,ke_task_id_t const dest_id,ke_task_id_t const src_id){uint16_t att_idx,value_hdl;if(ke_idx_get(src_id)== custs1_env.con_info.conidx){att_idx = param-> handle  -  custs1_env.shdl;if(att_idx == cust1_idx_recv_value){//获得了读取请求,已读取数据库中的数据。}} return(ke_msg_consumed);}

以上。

每次中央(手机应用)发起一次读请求,外围设备(580)的协议栈就会把相应的attitube数据库的内容返回给中央。数据返回成功后,协议栈就会向上层发送一条GATTC_READ_CMD_IND消息。

注意,读取的是,外围的,外围无法知道中央发表读取的时机而提前将数码设备好,然后交给中央去阅读