hfp.c (a874746709fd7a8c0715bc158b817e9b8a601294) hfp.c (5611a760af48d1ce1beea59c7908be73bd2393f1)
1/*
2 * Copyright (C) 2014 BlueKitchen GmbH
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 *
8 * 1. Redistributions of source code must retain the above copyright

--- 404 unchanged lines hidden (view full) ---

413 de_add_data(service, DE_STRING, strlen(name), (uint8_t *) name);
414}
415
416static hfp_connection_t * connection_doing_sdp_query = NULL;
417
418static void handle_query_rfcomm_event(uint8_t packet_type, uint8_t *packet, uint16_t size, void * context){
419 hfp_connection_t * connection = connection_doing_sdp_query;
420
1/*
2 * Copyright (C) 2014 BlueKitchen GmbH
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 *
8 * 1. Redistributions of source code must retain the above copyright

--- 404 unchanged lines hidden (view full) ---

413 de_add_data(service, DE_STRING, strlen(name), (uint8_t *) name);
414}
415
416static hfp_connection_t * connection_doing_sdp_query = NULL;
417
418static void handle_query_rfcomm_event(uint8_t packet_type, uint8_t *packet, uint16_t size, void * context){
419 hfp_connection_t * connection = connection_doing_sdp_query;
420
421 if ( connection->state != HFP_W4_SDP_QUERY_COMPLETE) return;
421 if ( connection->state != HFP_W4_SDP_EVENT_QUERY_COMPLETE) return;
422
423 switch (packet[0]){
422
423 switch (packet[0]){
424 case SDP_QUERY_RFCOMM_SERVICE:
424 case SDP_EVENT_QUERY_RFCOMM_SERVICE:
425 if (!connection) {
426 log_error("handle_query_rfcomm_event alloc connection for RFCOMM port %u failed", sdp_query_rfcomm_service_event_get_rfcomm_channel(packet));
427 return;
428 }
429 connection->rfcomm_channel_nr = sdp_query_rfcomm_service_event_get_rfcomm_channel(packet);
430 break;
425 if (!connection) {
426 log_error("handle_query_rfcomm_event alloc connection for RFCOMM port %u failed", sdp_query_rfcomm_service_event_get_rfcomm_channel(packet));
427 return;
428 }
429 connection->rfcomm_channel_nr = sdp_query_rfcomm_service_event_get_rfcomm_channel(packet);
430 break;
431 case SDP_QUERY_COMPLETE:
431 case SDP_EVENT_QUERY_COMPLETE:
432 connection_doing_sdp_query = NULL;
433 if (connection->rfcomm_channel_nr > 0){
434 connection->state = HFP_W4_RFCOMM_CONNECTED;
432 connection_doing_sdp_query = NULL;
433 if (connection->rfcomm_channel_nr > 0){
434 connection->state = HFP_W4_RFCOMM_CONNECTED;
435 log_info("HFP: SDP_QUERY_COMPLETE context %p, addr %s, state %d", connection, bd_addr_to_str( connection->remote_addr), connection->state);
435 log_info("HFP: SDP_EVENT_QUERY_COMPLETE context %p, addr %s, state %d", connection, bd_addr_to_str( connection->remote_addr), connection->state);
436 rfcomm_create_channel(connection->remote_addr, connection->rfcomm_channel_nr, NULL);
437 break;
438 }
439 log_info("rfcomm service not found, status %u.", sdp_query_complete_event_get_status(packet));
440 break;
441 default:
442 break;
443 }

--- 846 unchanged lines hidden (view full) ---

1290 case HFP_W2_DISCONNECT_RFCOMM:
1291 context->state = HFP_SERVICE_LEVEL_CONNECTION_ESTABLISHED;
1292 return;
1293 case HFP_W4_RFCOMM_DISCONNECTED:
1294 context->state = HFP_W4_RFCOMM_DISCONNECTED_AND_RESTART;
1295 return;
1296 case HFP_IDLE:
1297 memcpy(context->remote_addr, bd_addr, 6);
436 rfcomm_create_channel(connection->remote_addr, connection->rfcomm_channel_nr, NULL);
437 break;
438 }
439 log_info("rfcomm service not found, status %u.", sdp_query_complete_event_get_status(packet));
440 break;
441 default:
442 break;
443 }

--- 846 unchanged lines hidden (view full) ---

1290 case HFP_W2_DISCONNECT_RFCOMM:
1291 context->state = HFP_SERVICE_LEVEL_CONNECTION_ESTABLISHED;
1292 return;
1293 case HFP_W4_RFCOMM_DISCONNECTED:
1294 context->state = HFP_W4_RFCOMM_DISCONNECTED_AND_RESTART;
1295 return;
1296 case HFP_IDLE:
1297 memcpy(context->remote_addr, bd_addr, 6);
1298 context->state = HFP_W4_SDP_QUERY_COMPLETE;
1298 context->state = HFP_W4_SDP_EVENT_QUERY_COMPLETE;
1299 connection_doing_sdp_query = context;
1300 context->service_uuid = service_uuid;
1301 sdp_query_rfcomm_channel_and_name_for_uuid(context->remote_addr, service_uuid);
1302 break;
1303 default:
1304 break;
1305 }
1306}

--- 54 unchanged lines hidden ---
1299 connection_doing_sdp_query = context;
1300 context->service_uuid = service_uuid;
1301 sdp_query_rfcomm_channel_and_name_for_uuid(context->remote_addr, service_uuid);
1302 break;
1303 default:
1304 break;
1305 }
1306}

--- 54 unchanged lines hidden ---