2 posts / 0 new
Last post
Stone_wang
Offline
Last seen:10月3周前
加入:2015-10-23 03:55
DA14580作为主机

SDK3.0.6
采用DA14580作为主机与一个DA14580从机,进行通信。
采用官方提供的sample128.c.h等文件,
主机端与从机端可以成功连接,并且主机端可以发送数据给从机端。
问题:从机端发送数据给主机端不成功。
Peripheral 端的Notification处理:
// Check provided values
if(param->conhdl == gapc_get_conhdl(sample128_env.con_info.conidx))
{
// Update value in DB
attmdb_att_set_value(sample128_env.sample128_shdl + SAMPLE128_2_IDX_VAL,
sizeof(uint8_t), (uint8_t *)¶m->val);

if((sample128_env.feature & PRF_CLI_START_NTF))
// Send notification through GATT
prf_server_send_event((prf_env_struct *)&sample128_env, false,
sample128_env.sample128_shdl + SAMPLE128_2_IDX_VAL);
}
从机端按照文档是否会调用GATTC_EVENT_IND 命令?因此添加代码如下:
// CONNECTED State handlers definition.
const struct ke_msg_handler sample128m_connected[] =
{
{SAMPLE128M_RD_CHAR_1_REQ, (ke_msg_func_t)sample128m_rd_char_1_req_handler},
{SAMPLE128M_WR_CHAR_1_REQ, (ke_msg_func_t)sample128m_wr_char_1_req_handler},
{GATTC_READ_IND, (ke_msg_func_t)gattc_read_ind_handler},
{GATTC_EVENT_IND, (ke_msg_func_t)gattc_event_ind_handler},
};
但,都不会调用gattc_event_ind_handler 这个函数。我这样做对吗?
另,从机端已经使用手机端测试。手机端可以写数据也可以接受从机端发来的数据。(说明从机端profile 配置应该是没问题的)。
谢谢,你们的回答。

Device:
snowdream1
Offline
Last seen:5 months 1 week ago
工作人员
加入:2014-08-17 14:25
简单归纳,就是拿手机主动发起连接DA14580,服务建立后

简单归纳,就是拿手机主动发起连接DA14580,服务建立后,可以进行写操作,也可以接收580过来的Notification数据。但是拿另一台580替换手机,则只能进行写操作,无法收到Notification数据?对吧?

如果是,你可以参考client端的代码,比如glpc_task.c 。我看到里面都是在接口gattc_event_ind_handler里面去处理发过来的通知消息。