static void handle_query_rfcomm_event(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size){ UNUSED(packet_type); // ok: handling own sdp events UNUSED(channel); // ok: no channel UNUSED(size); // ok: handling own sdp events switch (hci_event_packet_get_type(packet)){ case SDP_EVENT_QUERY_RFCOMM_SERVICE: channel_nr = sdp_event_query_rfcomm_service_get_rfcomm_channel(packet); log_info("** Service name: '%s', RFCOMM port %u", sdp_event_query_rfcomm_service_get_name(packet), channel_nr); break; case SDP_EVENT_QUERY_COMPLETE: if (channel_nr > 0){ hsp_state = HSP_W4_RFCOMM_CONNECTED; log_info("HSP: SDP_QUERY_COMPLETE. RFCOMM create channel, addr %s, rfcomm channel nr %d", bd_addr_to_str(remote), channel_nr); rfcomm_create_channel(packet_handler, remote, channel_nr, NULL); break; } hsp_hs_reset_state(); log_info("Service not found, status %u.", sdp_event_query_complete_get_status(packet)); if (sdp_event_query_complete_get_status(packet)){ emit_event(HSP_SUBEVENT_AUDIO_CONNECTION_COMPLETE, sdp_event_query_complete_get_status(packet)); } else { emit_event(HSP_SUBEVENT_AUDIO_CONNECTION_COMPLETE, SDP_SERVICE_NOT_FOUND); } break; } }
static void handle_query_rfcomm_event(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size){ switch (hci_event_packet_get_type(packet)){ case SDP_EVENT_QUERY_RFCOMM_SERVICE: channel_nr = sdp_event_query_rfcomm_service_get_rfcomm_channel(packet); log_info("** Service name: '%s', RFCOMM port %u", sdp_event_query_rfcomm_service_get_name(packet), channel_nr); break; case SDP_EVENT_QUERY_COMPLETE: if (channel_nr > 0){ hsp_state = HSP_W4_RFCOMM_CONNECTED; log_info("HSP: SDP_QUERY_COMPLETE. RFCOMM create channel, addr %s, rfcomm channel nr %d", bd_addr_to_str(remote), channel_nr); rfcomm_create_channel(packet_handler, remote, channel_nr, NULL); break; } hsp_hs_reset_state(); log_info("Service not found, status %u.", sdp_event_query_complete_get_status(packet)); break; } }
static void handle_query_rfcomm_event(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size){ switch (packet[0]){ case SDP_EVENT_QUERY_RFCOMM_SERVICE: handle_found_service(sdp_event_query_rfcomm_service_get_name(packet), sdp_event_query_rfcomm_service_get_rfcomm_channel(packet)); break; case SDP_EVENT_QUERY_COMPLETE: if (state != W4_SDP_COMPLETE){ printf("Requested SPP Service %s not found \n", spp_service_name_prefix); break; } // connect printf("Requested SPP Service found, creating RFCOMM channel\n"); state = W4_RFCOMM_CHANNEL; rfcomm_create_channel(packet_handler, remote, channel_nr, NULL); break; default: break; } }