您好目前已完成在DA14580透過atts_read_req_ind_handlerd,编写特点後讀取資料的功能。現在考慮要轉移到DA14585。
但在程式上的搬移,DA14585 SDK和DA14580缺少的部分太多的……
有建議的方法或步驟嗎?
你好,
可以参考以下文档:
//www.wsdof.com/sites/default/files/training_03_cus..。
你好,謝謝回覆。
但這份文件裡面只有註明怎麼對定制概要文件去写数据。並沒有針對如何读取数据做任何的說明。
目前清楚使用通知也可以回覆,但現在需要的是读取数据。
抱歉误解你的意思,你想问的是,如何在外围端支持中央发送过来的gatt_read命令吧?
首先,需要给态度添加读属性,例如下面的CUST1_IDX_RECV_VALUE态度:
struct attm_desc_128 custs1_att_db [CUST1_IDX_NB] = {[CUST1_IDX_SVC] = {(uint8_t *) &att_decl_svc ATT_UUID_16_LEN,烫(RD,启用),sizeof (custs1_svc), sizeof (custs1_svc), (uint8_t *) &custs1_svc}, [CUST1_IDX_SEND_CHAR] = {(uint8_t *) &att_decl_char ATT_UUID_16_LEN,烫(RD,启用),sizeof (custs1_send_char), sizeof (custs1_send_char),(uint8_t *) &custs1_send_char}, (CUST1_IDX_SEND_VALUE) = {CUST1_SEND_UUID_128 ATT_UUID_128_LEN,烫(RD,使)|烫(WR,启用),DEF_CUST1_SEND_CHAR_LEN, 0,零},[CUST1_IDX_RECV_CHAR] = {(uint8_t *) &att_decl_char ATT_UUID_16_LEN,烫(RD,启用),sizeof (custs1_recv_char), sizeof (custs1_recv_char), (uint8_t *) &custs1_recv_char},[CUST1_IDX_RECV_VALUE] = {CUST1_RECV_UUID_128, ATT_UUID_128_LEN, PERM(RD, ENABLE) | PERM(NTF, ENABLE), DEF_CUST1_RECV_CHAR_LEN, 0, NULL}, [CUST1_IDX_RECV_NTF_CFG] = {(uint8_t*)&att_decl_cfg, ATT_UUID_16_LEN, PERM(RD, ENABLE) | PERM(WR, ENABLE), sizeof(uint16_t), 0, NULL},};
然后,在概要文件的任务文件中,添加GATTC_READ_CMD_IND命令,和其对应的处理程序,例如:
/ /在cust1_task.c中常量struct 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},};Static int gattc_read_cmd_ind_handler(ke_msg_id_t const msgid, 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消息。
注意,阅读是被动的,周边无法知道中央发起阅读的时机而提前将数据准备好,然后交给中央去阅读
你好,
可以参考以下文档:
//www.wsdof.com/sites/default/files/training_03_cus..。
你好,謝謝回覆。
但這份文件裡面只有註明怎麼對定制概要文件去写数据。
並沒有針對如何读取数据做任何的說明。
目前清楚使用通知也可以回覆,但現在需要的是读取数据。
你好,
抱歉误解你的意思,你想问的是,如何在外围端支持中央发送过来的gatt_read命令吧?
首先,需要给态度添加读属性,例如下面的CUST1_IDX_RECV_VALUE态度:
然后,在概要文件的任务文件中,添加GATTC_READ_CMD_IND命令,和其对应的处理程序,例如:
以上。
每次中央(手机应用)发起一次读取请求,外围(580)的协议栈就会把相应的attitube数据库的内容返回给中央。数据返回成功后,协议栈就会向上层发送一条GATTC_READ_CMD_IND消息。
注意,阅读是被动的,周边无法知道中央发起阅读的时机而提前将数据准备好,然后交给中央去阅读