From 8eb7dde2cf35323e538c7b43a0f28e4d6e596376 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Thu, 24 Sep 2020 09:26:33 +1000 Subject: [PATCH] libei: better device state debugging Signed-off-by: Peter Hutterer --- src/libei-device.c | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/src/libei-device.c b/src/libei-device.c index 11a399b..fb4c525 100644 --- a/src/libei-device.c +++ b/src/libei-device.c @@ -33,6 +33,30 @@ #include "libei-private.h" +static const char * +ei_device_state_to_string(enum ei_device_state state) +{ + switch (state) { + CASE_RETURN_STRING(EI_DEVICE_STATE_NEW); + CASE_RETURN_STRING(EI_DEVICE_STATE_CONNECTING); + CASE_RETURN_STRING(EI_DEVICE_STATE_SUSPENDED); + CASE_RETURN_STRING(EI_DEVICE_STATE_RESUMED); + CASE_RETURN_STRING(EI_DEVICE_STATE_REMOVED); + } + assert(!"Unhandled device state"); +} + +static void +ei_device_set_state(struct ei_device *device, + enum ei_device_state state) +{ + enum ei_device_state old_state = device->state; + device->state = state; + log_debug(ei_device_get_context(device), "device %d: %s → %s\n", + device->id, ei_device_state_to_string(old_state), + ei_device_state_to_string(state)); +} + static void ei_device_destroy(struct ei_device *device) { @@ -188,7 +212,7 @@ _public_ void ei_device_add(struct ei_device *device) { ei_add_device(device); - device->state = EI_DEVICE_STATE_CONNECTING; + ei_device_set_state(device, EI_DEVICE_STATE_CONNECTING); } _public_ void @@ -197,20 +221,20 @@ ei_device_remove(struct ei_device *device) if (device->state == EI_DEVICE_STATE_REMOVED) return; - device->state = EI_DEVICE_STATE_REMOVED; + ei_device_set_state(device, EI_DEVICE_STATE_REMOVED); ei_remove_device(device); } void ei_device_resumed(struct ei_device *device) { - device->state = EI_DEVICE_STATE_RESUMED; + ei_device_set_state(device, EI_DEVICE_STATE_RESUMED); } void ei_device_suspended(struct ei_device *device) { - device->state = EI_DEVICE_STATE_SUSPENDED; + ei_device_set_state(device, EI_DEVICE_STATE_SUSPENDED); } void