diff options
author | Jan200101 <sentrycraft123@gmail.com> | 2024-08-06 14:00:02 +0200 |
---|---|---|
committer | Jan200101 <sentrycraft123@gmail.com> | 2024-08-06 14:00:02 +0200 |
commit | ffb8e89885c66d8d7dee104773c29e322265daa0 (patch) | |
tree | e13c29067d76fe0101e0217576e2d9b046ead217 /src/gamepad.c | |
parent | f9b2f241871ea7db22579cf16335e47d33e183ba (diff) | |
download | Wirecutter-ffb8e89885c66d8d7dee104773c29e322265daa0.tar.gz Wirecutter-ffb8e89885c66d8d7dee104773c29e322265daa0.zip |
add logic for dynamically handling device id
Diffstat (limited to 'src/gamepad.c')
-rw-r--r-- | src/gamepad.c | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/src/gamepad.c b/src/gamepad.c index 93af18f..5e4a426 100644 --- a/src/gamepad.c +++ b/src/gamepad.c @@ -14,6 +14,7 @@ static const char hid_device_name[] = "Wirecutter Adapter"; static const char service_name[] = "Wireless Gamepad"; static uint8_t hid_service_buffer[4090]; static uint8_t device_id_sdp_service_buffer[100]; +static uint8_t device_id_sdp_service_record_handle = 0; static btstack_packet_callback_registration_t hci_event_callback_registration; uint16_t hid_cid; @@ -199,6 +200,25 @@ static void setup_sync_button(void) irq_set_enabled(IO_IRQ_BANK0, true); } +void change_device_id(uint16_t vendor_id, uint16_t product_id) +{ + if (0 == device_id_sdp_service_record_handle) + device_id_sdp_service_record_handle = sdp_create_service_record_handle(); + else + sdp_unregister_service(device_id_sdp_service_record_handle); + + + device_id_create_sdp_record( + device_id_sdp_service_buffer, + device_id_sdp_service_record_handle, + DEVICE_ID_VENDOR_ID_SOURCE_USB, + vendor_id, product_id, + 1 + ); + btstack_assert(de_get_len(device_id_sdp_service_buffer) <= sizeof(device_id_sdp_service_buffer)); + sdp_register_service(device_id_sdp_service_buffer); +} + int btstack_main(int argc, const char * argv[]); int btstack_main(int argc, const char * argv[]){ (void)argc; @@ -244,7 +264,7 @@ int btstack_main(int argc, const char * argv[]){ ); hid_create_sdp_record(hid_service_buffer, sdp_create_service_record_handle(), &hid_params); - btstack_assert(de_get_len( hid_service_buffer) <= sizeof(hid_service_buffer)); + btstack_assert(de_get_len(hid_service_buffer) <= sizeof(hid_service_buffer)); sdp_register_service(hid_service_buffer); // HID Device |