可以在这个事件里面找到你要的服务,然后拿到对应的handle进行传输
case GATTC_MSG_SVC_REPORT:
{
uint8_t spss_svc_uuid[UUID_SIZE_16]={0xbb, 0x5c, 0x49, 0xd2, 0x04, 0xa3, 0x40, 0x71, 0xa0, 0xb5, 0x35, 0x85, 0x3e, 0xb0, 0x83, 0x07};
gatt_uuid_t client_att_tb[2]={0};
gatt_svc_report_t *svc_rpt = (gatt_svc_report_t *)(p_msg->param.msg.p_msg_data);
#if 1
for(uint8_t j=0; j<svc_rpt->end_hdl-svc_rpt->start_hdl; j++)
if(memcmp(svc_rpt->info[j].att_value.uuid, spss_svc_uuid,16) == 0)
{
for(uint16_t i = 0; i<(svc_rpt->end_hdl - svc_rpt->start_hdl); i++)
{
co_printf("info[%d].att_type:%d\r\n",i,svc_rpt->info[i].att_type);
if(svc_rpt->info[i].att_type == ATT_TYPE_CHAR_DECL)
{
if((svc_rpt->info[i].char_decl.prop & GATT_PROP_NOTI) && handles_scan[0] == 0)
{
handles_scan[0] = svc_rpt->info[i].char_decl.handle;
co_printf("decl, prop:%x,handle:%d\r\n",svc_rpt->info[i].char_decl.prop, handles_scan[0]);
}
if((svc_rpt->info[i].char_decl.prop & GATT_PROP_WRITE_CMD) && handles_scan[1] == 0)
{
handles_scan[1] = svc_rpt->info[i].char_decl.handle;
client_att_tb[0].size = svc_rpt->info[i].att_value.uuid_len;
memcpy(client_att_tb[0].p_uuid, svc_rpt->info[i].att_value.uuid, client_att_tb[0].size);
co_printf("decl, prop:%x,handle:%d\r\n",svc_rpt->info[i].char_decl.prop, handles_scan[1]);
// gatt_add_client_uuid((gatt_uuid_t*)client_att_tb[0].p_uuid,3,0,handles_scan);
}
}
if(svc_rpt->info[i].att_type == ATT_TYPE_VAL)
{
//co_printf("att_val, uuid_len:%d,uuid:",svc_rpt->info[i].att_value.uuid_len);
//show_reg(svc_rpt->info[i].att_value.uuid,svc_rpt->info[i].att_value.uuid_len,1);
if( i == (handles_scan[0] - svc_rpt->start_hdl - 1))
{
client_att_tb[0].size = svc_rpt->info[i].att_value.uuid_len;
memcpy(client_att_tb[0].p_uuid, svc_rpt->info[i].att_value.uuid, client_att_tb[0].size);
}
else if( i == (handles_scan[1] - svc_rpt->start_hdl - 1))
{
client_att_tb[1].size = svc_rpt->info[i].att_value.uuid_len;
memcpy(client_att_tb[1].p_uuid,svc_rpt->info[i].att_value.uuid,client_att_tb[1].size);
}
}
if(svc_rpt->info[i].att_type == ATT_TYPE_DESC)
{
//co_printf("desc, uuid_len:%d,uuid:",svc_rpt->info[i].att_value.uuid_len);
//show_reg(svc_rpt->info[i].att_value.uuid,svc_rpt->info[i].att_value.uuid_len,1);
}
}
}
#endif
// gatt_add_client_uuid();
co_printf("UUID Start:");
for (uint8_t i = 0; i < svc_rpt->uuid_len; i++)
co_printf("%02x ", svc_rpt->uuid[i]);
co_printf("\r\n");
co_printf("Handle_Len:%d, Start_Handle:%d - End_Handle:%d\r\n", svc_rpt->uuid_len, svc_rpt->start_hdl, svc_rpt->end_hdl);
for(uint8_t j=0; j<svc_rpt->end_hdl-svc_rpt->start_hdl; j++)
{
co_printf("att_value uuid->:");
for (uint8_t i = 0; i < svc_rpt->info[j].att_value.uuid_len; i++)
co_printf("%02x ", svc_rpt->info[j].att_value.uuid[i]);
co_printf(" ;\r\n");
co_printf("handle: %02x \r\n", svc_rpt->info[j].char_decl.handle);
}
co_printf("UUID END\r\n");
os_timer_start(&time_send_id, 3000,1);
}
break;