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