aboutsummaryrefslogtreecommitdiff
path: root/src/gamepad.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gamepad.c')
-rw-r--r--src/gamepad.c22
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