From 75c6f68dde6ddaa7b7e0579d5f62eaf0d661511b Mon Sep 17 00:00:00 2001 From: Nikias Bassen Date: Thu, 14 Jul 2016 03:09:44 +0200 Subject: Handle 'Paired' message and pass event to client through callback --- include/usbmuxd.h | 3 ++- src/libusbmuxd.c | 12 ++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/include/usbmuxd.h b/include/usbmuxd.h index d413eab..f345be2 100644 --- a/include/usbmuxd.h +++ b/include/usbmuxd.h @@ -45,7 +45,8 @@ typedef struct { */ enum usbmuxd_event_type { UE_DEVICE_ADD = 1, - UE_DEVICE_REMOVE + UE_DEVICE_REMOVE, + UE_DEVICE_PAIRED }; /** diff --git a/src/libusbmuxd.c b/src/libusbmuxd.c index 90ae6e6..327746b 100644 --- a/src/libusbmuxd.c +++ b/src/libusbmuxd.c @@ -711,6 +711,18 @@ static int get_next_event(int sfd, usbmuxd_event_cb_t callback, void *user_data) collection_remove(&devices, devinfo); free(devinfo); } + } else if (hdr.message == MESSAGE_DEVICE_PAIRED) { + uint32_t handle; + usbmuxd_device_info_t *devinfo; + + memcpy(&handle, payload, sizeof(uint32_t)); + + devinfo = devices_find(handle); + if (!devinfo) { + DEBUG(1, "%s: WARNING: got paired message for device handle %d, but couldn't find the corresponding handle in the device list. This event will be ignored.\n", __func__, handle); + } else { + generate_event(callback, devinfo, UE_DEVICE_PAIRED, user_data); + } } else if (hdr.length > 0) { DEBUG(1, "%s: Unexpected message type %d length %d received!\n", __func__, hdr.message, hdr.length); } -- cgit v1.1-32-gdbae