static void handle_sdp_parser_event(sdp_query_event_t * event){ sdp_query_attribute_value_event_t * ve; switch (event->type){ case SDP_QUERY_ATTRIBUTE_VALUE: ve = (sdp_query_attribute_value_event_t*) event; // printf("handle_sdp_parser_event [ AID, ALen, DOff, Data] : [%x, %u, %u] BYTE %02x\n", // ve->attribute_id, ve->attribute_length, ve->data_offset, ve->data); switch (ve->attribute_id){ case SDP_ProtocolDescriptorList: // find rfcomm channel handleProtocolDescriptorListData(ve->attribute_length, ve->data_offset, ve->data); break; case 0x0100: // get service name handleServiceNameData(ve->attribute_length, ve->data_offset, ve->data); break; default: // give up return; } break; case SDP_QUERY_COMPLETE: (*sdp_app_callback)((sdp_query_event_t*)&event, sdp_app_context); break; } // insert higher level code HERE }
static void handle_sdp_parser_event(sdp_query_event_t * event){ sdp_query_attribute_value_event_t * ve; switch (event->type){ case SDP_QUERY_SERVICE_RECORD_HANDLE: // handle service without a name if (sdp_rfcomm_channel_nr){ emit_service(); } // prepare for new record sdp_rfcomm_channel_nr = 0; sdp_service_name[0] = 0; break; case SDP_QUERY_ATTRIBUTE_VALUE: ve = (sdp_query_attribute_value_event_t*) event; // log_info("handle_sdp_parser_event [ AID, ALen, DOff, Data] : [%x, %u, %u] BYTE %02x", // ve->attribute_id, ve->attribute_length, ve->data_offset, ve->data); switch (ve->attribute_id){ case SDP_ProtocolDescriptorList: // find rfcomm channel handleProtocolDescriptorListData(ve->attribute_length, ve->data_offset, ve->data); break; case 0x0100: // get service name handleServiceNameData(ve->attribute_length, ve->data_offset, ve->data); break; default: // give up return; } break; case SDP_QUERY_COMPLETE: // handle service without a name if (sdp_rfcomm_channel_nr){ emit_service(); } (*sdp_app_callback)(event, sdp_app_context); break; } // insert higher level code HERE }