diff --git a/example/embedded/spp_and_le_counter.c b/example/embedded/spp_and_le_counter.c index 60f644937..03ee5b1bf 100644 --- a/example/embedded/spp_and_le_counter.c +++ b/example/embedded/spp_and_le_counter.c @@ -267,12 +267,12 @@ int btstack_main(void) service_record_item_t * service_record_item = (service_record_item_t *) spp_service_buffer; sdp_create_spp_service( (uint8_t*) &service_record_item->service_record, RFCOMM_SERVER_CHANNEL, "SPP Counter"); printf("SDP service buffer size: %u\n", (uint16_t) (sizeof(service_record_item_t) + de_get_len((uint8_t*) &service_record_item->service_record))); - sdp_register_service_internal(NULL, service_record_item); + sdp_register_service_internal(service_record_item); /* LISTING_PAUSE */ #else sdp_create_spp_service( (uint8_t*)spp_service_buffer, RFCOMM_SERVER_CHANNEL, "SPP Counter"); printf("SDP service record size: %u\n", de_get_len((uint8_t*)spp_service_buffer)); - sdp_register_service_internal(NULL, (uint8_t*)spp_service_buffer); + sdp_register_service_internal((uint8_t*)spp_service_buffer); #endif /* LISTING_RESUME */ diff --git a/example/embedded/spp_counter.c b/example/embedded/spp_counter.c index b9f19205f..9510ab089 100644 --- a/example/embedded/spp_counter.c +++ b/example/embedded/spp_counter.c @@ -106,12 +106,12 @@ static void spp_service_setup(void){ service_record_item_t * service_record_item = (service_record_item_t *) spp_service_buffer; sdp_create_spp_service( (uint8_t*) &service_record_item->service_record, RFCOMM_SERVER_CHANNEL, "SPP Counter"); printf("SDP service buffer size: %u\n", (uint16_t) (sizeof(service_record_item_t) + de_get_len((uint8_t*) &service_record_item->service_record))); - sdp_register_service_internal(NULL, service_record_item); + sdp_register_service_internal(service_record_item); /* LISTING_PAUSE */ #else sdp_create_spp_service( (uint8_t*) spp_service_buffer, RFCOMM_SERVER_CHANNEL, "SPP Counter"); printf("SDP service record size: %u\n", de_get_len((uint8_t*) spp_service_buffer)); - sdp_register_service_internal(NULL, (uint8_t*)spp_service_buffer); + sdp_register_service_internal((uint8_t*)spp_service_buffer); #endif /* LISTING_RESUME */ } diff --git a/example/embedded/spp_flowcontrol.c b/example/embedded/spp_flowcontrol.c index 86b0c7cec..07ee4c9a4 100644 --- a/example/embedded/spp_flowcontrol.c +++ b/example/embedded/spp_flowcontrol.c @@ -96,7 +96,7 @@ static void spp_service_setup(void){ service_record_item_t * service_record_item = (service_record_item_t *) spp_service_buffer; sdp_create_spp_service( (uint8_t*) &service_record_item->service_record, 1, "SPP Counter"); printf("SDP service buffer size: %u\n\r", (uint16_t) (sizeof(service_record_item_t) + de_get_len((uint8_t*) &service_record_item->service_record))); - sdp_register_service_internal(NULL, service_record_item); + sdp_register_service_internal(service_record_item); } /* LISTING_END */ diff --git a/platform/daemon/src/daemon.c b/platform/daemon/src/daemon.c index 8aa0a9222..dd8f70de0 100644 --- a/platform/daemon/src/daemon.c +++ b/platform/daemon/src/daemon.c @@ -988,7 +988,7 @@ static int btstack_command_handler(connection_t *connection, uint8_t *packet, ui case SDP_REGISTER_SERVICE_RECORD: log_info("SDP_REGISTER_SERVICE_RECORD size %u\n", size); - service_record_handle = sdp_register_service_internal(connection, &packet[3]); + service_record_handle = sdp_register_service_internal(&packet[3]); if (service_record_handle){ daemon_add_client_sdp_service_record_handle(connection, service_record_handle); sdp_emit_service_registered(connection, service_record_handle, 0); @@ -999,7 +999,7 @@ static int btstack_command_handler(connection_t *connection, uint8_t *packet, ui case SDP_UNREGISTER_SERVICE_RECORD: service_record_handle = READ_BT_32(packet, 3); log_info("SDP_UNREGISTER_SERVICE_RECORD handle 0x%x ", service_record_handle); - sdp_unregister_service_internal(connection, service_record_handle); + sdp_unregister_service_internal(service_record_handle); daemon_remove_client_sdp_service_record_handle(connection, service_record_handle); break; case SDP_CLIENT_QUERY_RFCOMM_SERVICES: diff --git a/port/ez430-rf2560/example/ant-test.c b/port/ez430-rf2560/example/ant-test.c index 5c03defc0..70b155cd8 100644 --- a/port/ez430-rf2560/example/ant-test.c +++ b/port/ez430-rf2560/example/ant-test.c @@ -230,7 +230,7 @@ int btstack_main(int argc, const char * argv[]){ service_record_item_t * service_record_item = (service_record_item_t *) spp_service_buffer; sdp_create_spp_service( (uint8_t*) &service_record_item->service_record, 1, "SPP Counter"); printf("SDP service buffer size: %u\n\r", (uint16_t) (sizeof(service_record_item_t) + de_get_len((uint8_t*) &service_record_item->service_record))); - sdp_register_service_internal(NULL, service_record_item); + sdp_register_service_internal(service_record_item); // set one-shot timer timer_source_t heartbeat; diff --git a/port/ez430-rf2560/example/spp_accel.c b/port/ez430-rf2560/example/spp_accel.c index 148b90e81..d44ce3355 100644 --- a/port/ez430-rf2560/example/spp_accel.c +++ b/port/ez430-rf2560/example/spp_accel.c @@ -220,7 +220,7 @@ int btstack_main(int argc, const char * argv[]){ service_record_item_t * service_record_item = (service_record_item_t *) spp_service_buffer; sdp_create_spp_service( (uint8_t*) &service_record_item->service_record, 1, "SPP Accel"); printf("SDP service buffer size: %u\n\r", (uint16_t) (sizeof(service_record_item_t) + de_get_len((uint8_t*) &service_record_item->service_record))); - sdp_register_service_internal(NULL, service_record_item); + sdp_register_service_internal(service_record_item); // ready - enable irq used in h4 task __enable_interrupt(); diff --git a/port/msp-exp430f5438-cc2564b/example/ant-test.c b/port/msp-exp430f5438-cc2564b/example/ant-test.c index 4bb74a2f7..d88678488 100644 --- a/port/msp-exp430f5438-cc2564b/example/ant-test.c +++ b/port/msp-exp430f5438-cc2564b/example/ant-test.c @@ -230,7 +230,7 @@ int btstack_main(int argc, const char * argv[]){ service_record_item_t * service_record_item = (service_record_item_t *) spp_service_buffer; sdp_create_spp_service( (uint8_t*) &service_record_item->service_record, 1, "SPP Counter"); printf("SDP service buffer size: %u\n\r", (uint16_t) (sizeof(service_record_item_t) + de_get_len((uint8_t*) &service_record_item->service_record))); - sdp_register_service_internal(NULL, service_record_item); + sdp_register_service_internal(service_record_item); // set one-shot timer timer_source_t heartbeat; diff --git a/port/msp-exp430f5438-cc2564b/example/spp_accel.c b/port/msp-exp430f5438-cc2564b/example/spp_accel.c index 7d72fac23..6739faa81 100644 --- a/port/msp-exp430f5438-cc2564b/example/spp_accel.c +++ b/port/msp-exp430f5438-cc2564b/example/spp_accel.c @@ -220,7 +220,7 @@ int btstack_main(int argc, const char * argv[]){ service_record_item_t * service_record_item = (service_record_item_t *) spp_service_buffer; sdp_create_spp_service( (uint8_t*) &service_record_item->service_record, 1, "SPP Accel"); printf("SDP service buffer size: %u\n\r", (uint16_t) (sizeof(service_record_item_t) + de_get_len((uint8_t*) &service_record_item->service_record))); - sdp_register_service_internal(NULL, service_record_item); + sdp_register_service_internal(service_record_item); // ready - enable irq used in h4 task __enable_interrupt(); diff --git a/src/classic/sdp.c b/src/classic/sdp.c index 27a14af27..4073453e0 100644 --- a/src/classic/sdp.c +++ b/src/classic/sdp.c @@ -122,7 +122,7 @@ static uint32_t sdp_create_service_record_handle(void){ // pre: ServiceRecordHandle is first attribute and valid // pre: record // @returns ServiceRecordHandle or 0 if registration failed -uint32_t sdp_register_service_internal(void *connection, service_record_item_t * record_item){ +uint32_t sdp_register_service_internal(service_record_item_t * record_item){ // get user record handle uint32_t record_handle = record_item->service_record_handle; // get actual record @@ -167,7 +167,7 @@ static const uint8_t removeServiceRecordHandleAttributeIDList[] = { 0x36, 0x00, // register service record internally - the normal version creates a copy of the record // pre: AttributeIDs are in ascending order => ServiceRecordHandle is first attribute if present // @returns ServiceRecordHandle or 0 if registration failed -uint32_t sdp_register_service_internal(void *connection, uint8_t * record){ +uint32_t sdp_register_service_internal(uint8_t * record){ // dump for now // log_info("Register service record"); @@ -200,8 +200,6 @@ uint32_t sdp_register_service_internal(void *connection, uint8_t * record){ if (!newRecordItem) { return 0; } - // link new service item to client connection - newRecordItem->connection = connection; // set new handle newRecordItem->service_record_handle = record_handle; @@ -235,14 +233,13 @@ uint32_t sdp_register_service_internal(void *connection, uint8_t * record){ // // makes sure one client cannot remove service records of other clients // -void sdp_unregister_service_internal(void *connection, uint32_t service_record_handle){ +void sdp_unregister_service_internal(uint32_t service_record_handle){ service_record_item_t * record_item = sdp_get_record_for_handle(service_record_handle); - if (record_item && record_item->connection == connection) { - linked_list_remove(&sdp_service_records, (linked_item_t *) record_item); + if (!record_item) return; + linked_list_remove(&sdp_service_records, (linked_item_t *) record_item); #ifndef EMBEDDED - free(record_item); + free(record_item); #endif - } } // PDU diff --git a/src/classic/sdp.h b/src/classic/sdp.h index c9ec173b2..81a7100ab 100644 --- a/src/classic/sdp.h +++ b/src/classic/sdp.h @@ -63,9 +63,6 @@ typedef struct { // linked list - assert: first field linked_item_t item; - // client connection - void * connection; - // data is contained in same memory uint32_t service_record_handle; uint8_t service_record[1]; // waste 1 byte to allow compilation with older compilers @@ -92,7 +89,7 @@ void sdp_register_packet_handler(void (*handler)(void * connection, uint8_t pack - ServiceRecordHandle is first attribute and valid. * @return ServiceRecordHandle or 0 if registration failed. */ -uint32_t sdp_register_service_internal(void *connection, service_record_item_t * record_item); +uint32_t sdp_register_service_internal(service_record_item_t * record_item); #endif #ifndef EMBEDDED @@ -100,13 +97,13 @@ uint32_t sdp_register_service_internal(void *connection, service_record_item_t * * @brief Register service record internally - this version creates a copy of the record precondition: AttributeIDs are in ascending order => ServiceRecordHandle is first attribute if present. * @return ServiceRecordHandle or 0 if registration failed */ -uint32_t sdp_register_service_internal(void *connection, uint8_t * service_record); +uint32_t sdp_register_service_internal(uint8_t * service_record); #endif /** * @brief Unregister service record internally. */ -void sdp_unregister_service_internal(void *connection, uint32_t service_record_handle); +void sdp_unregister_service_internal(uint32_t service_record_handle); /* API_END */ #if defined __cplusplus diff --git a/test/pts/bnep_test.c b/test/pts/bnep_test.c index 157790d2a..3f05f9e1b 100644 --- a/test/pts/bnep_test.c +++ b/test/pts/bnep_test.c @@ -803,11 +803,11 @@ int btstack_main(int argc, const char * argv[]){ service_record_item_t * service_record_item = (service_record_item_t *) panu_sdp_record; pan_create_panu_service((uint8_t*) &service_record_item->service_record, network_packet_types, NULL, NULL, BNEP_SECURITY_NONE); printf("SDP service buffer size: %u\n", (uint16_t) (sizeof(service_record_item_t) + de_get_len((uint8_t*) &service_record_item->service_record))); - sdp_register_service_internal(NULL, service_record_item); + sdp_register_service_internal(service_record_item); #else pan_create_panu_service(panu_sdp_record, network_packet_types, NULL, NULL, BNEP_SECURITY_NONE); printf("SDP service record size: %u\n", de_get_len((uint8_t*) panu_sdp_record)); - sdp_register_service_internal(NULL, (uint8_t*)panu_sdp_record); + sdp_register_service_internal((uint8_t*)panu_sdp_record); #endif /* Turn on the device */ diff --git a/test/pts/classic_test.c b/test/pts/classic_test.c index 2b7a2b620..67fb3c06b 100644 --- a/test/pts/classic_test.c +++ b/test/pts/classic_test.c @@ -781,12 +781,12 @@ int btstack_main(int argc, const char * argv[]){ sdp_create_spp_service((uint8_t*) spp_service_buffer, RFCOMM_SERVER_CHANNEL, "SPP Counter"); de_dump_data_element((uint8_t*) spp_service_buffer); printf("SDP service record size: %u\n\r", de_get_len((uint8_t*)spp_service_buffer)); - sdp_register_service_internal(NULL, (uint8_t*)spp_service_buffer); + sdp_register_service_internal((uint8_t*)spp_service_buffer); memset(dummy_service_buffer, 0, sizeof(dummy_service_buffer)); sdp_create_dummy_service((uint8_t*)dummy_service_buffer, "UUID128 Test"); de_dump_data_element((uint8_t*)dummy_service_buffer); printf("Dummy service record size: %u\n\r", de_get_len((uint8_t*)dummy_service_buffer)); - sdp_register_service_internal(NULL, (uint8_t*)dummy_service_buffer); + sdp_register_service_internal((uint8_t*)dummy_service_buffer); sdp_query_rfcomm_register_callback(handle_query_rfcomm_event, NULL); diff --git a/test/pts/hfp_ag_test.c b/test/pts/hfp_ag_test.c index 9e26f2b2e..66b33fa33 100644 --- a/test/pts/hfp_ag_test.c +++ b/test/pts/hfp_ag_test.c @@ -207,7 +207,7 @@ int btstack_main(int argc, const char * argv[]){ memset((uint8_t *)hfp_service_buffer, 0, sizeof(hfp_service_buffer)); hfp_ag_create_sdp_record((uint8_t *)hfp_service_buffer, rfcomm_channel_nr, hfp_ag_service_name, 0, 0); - sdp_register_service_internal(NULL, (uint8_t *)hfp_service_buffer); + sdp_register_service_internal((uint8_t *)hfp_service_buffer); // turn on! hci_power_control(HCI_POWER_ON); diff --git a/test/pts/hfp_hf_test.c b/test/pts/hfp_hf_test.c index c7df8bd29..91cb128ac 100644 --- a/test/pts/hfp_hf_test.c +++ b/test/pts/hfp_hf_test.c @@ -240,7 +240,7 @@ int btstack_main(int argc, const char * argv[]){ // init SDP, create record for SPP and register with SDP memset((uint8_t *)hfp_service_buffer, 0, sizeof(hfp_service_buffer)); hfp_hf_create_sdp_record((uint8_t *)hfp_service_buffer, rfcomm_channel_nr, hfp_hf_service_name, 0); - sdp_register_service_internal(NULL, (uint8_t *)hfp_service_buffer); + sdp_register_service_internal((uint8_t *)hfp_service_buffer); // turn on! hci_power_control(HCI_POWER_ON); diff --git a/test/pts/hsp_ag_test.c b/test/pts/hsp_ag_test.c index ad6158561..99c0495b5 100644 --- a/test/pts/hsp_ag_test.c +++ b/test/pts/hsp_ag_test.c @@ -192,7 +192,7 @@ int btstack_main(int argc, const char * argv[]){ hsp_ag_register_packet_handler(packet_handler); sdp_init(); - sdp_register_service_internal(NULL, (uint8_t *)hsp_service_buffer); + sdp_register_service_internal((uint8_t *)hsp_service_buffer); // turn on! hci_power_control(HCI_POWER_ON); diff --git a/test/pts/hsp_hs_test.c b/test/pts/hsp_hs_test.c index d08410ac7..66e859fcb 100644 --- a/test/pts/hsp_hs_test.c +++ b/test/pts/hsp_hs_test.c @@ -312,7 +312,7 @@ int btstack_main(int argc, const char * argv[]){ hsp_hs_register_packet_handler(packet_handler); sdp_init(); - sdp_register_service_internal(NULL, (uint8_t *)hsp_service_buffer); + sdp_register_service_internal((uint8_t *)hsp_service_buffer); hci_discoverable_control(1); hci_set_class_of_device(0x200418);