diff --git a/c8_remote/include/usb_helpers.h b/c8_remote/include/usb_helpers.h index 672a537..841600c 100644 --- a/c8_remote/include/usb_helpers.h +++ b/c8_remote/include/usb_helpers.h @@ -46,4 +46,6 @@ int ctrl_transfer(struct pwned_device *dev, int reset(struct pwned_device *dev); int serial_descriptor(struct pwned_device *dev, unsigned char *serial_buf, int len); +const char *usb_error_name(int ret); + #endif //CHECKM8_TOOL_LIBUSB_HELPERS_H diff --git a/c8_remote/src/command.c b/c8_remote/src/command.c index 08dd929..0051b3d 100644 --- a/c8_remote/src/command.c +++ b/c8_remote/src/command.c @@ -29,7 +29,7 @@ int dfu_send_data(struct pwned_device *dev, unsigned char *data, long data_len, if(ret > 0) checkm8_debug_indent("\ttransferred %i bytes\n", ret); else { - checkm8_debug_indent("\trequest failed with error code %i\n", ret); + checkm8_debug_indent("\trequest failed with error code %i (%s)\n", ret, usb_error_name(ret)); return CHECKM8_FAIL_XFER; } index += amount; @@ -75,7 +75,7 @@ struct dev_cmd_resp *command(struct pwned_device *dev, if(ret >= 0) checkm8_debug_indent("\ttransferred %i bytes\n", ret); else { - checkm8_debug_indent("\trequest failed with error code %i\n", ret); + checkm8_debug_indent("\trequest failed with error code %i (%s)\n", ret, usb_error_name(ret)); cmd_resp->ret = ret; return cmd_resp; } @@ -84,7 +84,7 @@ struct dev_cmd_resp *command(struct pwned_device *dev, if(ret >= 0) checkm8_debug_indent("\ttransferred %i bytes\n", ret); else { - checkm8_debug_indent("\trequest failed with error code %i\n", ret); + checkm8_debug_indent("\trequest failed with error code %i (%s)\n", ret, usb_error_name(ret)); cmd_resp->ret = ret; return cmd_resp; } @@ -93,7 +93,7 @@ struct dev_cmd_resp *command(struct pwned_device *dev, if(ret >= 0) checkm8_debug_indent("\ttransferred %i bytes\n", ret); else { - checkm8_debug_indent("\trequest failed with error code %i\n", ret); + checkm8_debug_indent("\trequest failed with error code %i (%s)\n", ret, usb_error_name(ret)); cmd_resp->ret = ret; return cmd_resp; } @@ -114,7 +114,7 @@ struct dev_cmd_resp *command(struct pwned_device *dev, if(ret >= 0) checkm8_debug_indent("\tfinal request transferred %i bytes\n", ret); else { - checkm8_debug_indent("\tfinal request failed with error code %i\n", ret); + checkm8_debug_indent("\tfinal request failed with error code %i (%s)\n", ret, usb_error_name(ret)); cmd_resp->ret = ret; return cmd_resp; } @@ -128,7 +128,7 @@ struct dev_cmd_resp *command(struct pwned_device *dev, if(ret >= 0) checkm8_debug_indent("\tfinal request transferred %i bytes\n", ret); else { - checkm8_debug_indent("\tfinal request failed with error code %i\n", ret); + checkm8_debug_indent("\tfinal request failed with error code %i (%s)\n", ret, usb_error_name(ret)); cmd_resp->ret = ret; return cmd_resp; } diff --git a/c8_remote/src/usb_helpers.c b/c8_remote/src/usb_helpers.c index d64b22b..06e7027 100644 --- a/c8_remote/src/usb_helpers.c +++ b/c8_remote/src/usb_helpers.c @@ -247,6 +247,7 @@ int is_device_session_open(struct pwned_device *dev) } #ifdef WITH_ARDUINO + void ard_read(struct pwned_device *dev, unsigned char *target, int nbytes) { int index = 0, amount; @@ -257,6 +258,7 @@ void ard_read(struct pwned_device *dev, unsigned char *target, int nbytes) else index += amount; } } + #endif @@ -649,4 +651,41 @@ int serial_descriptor(struct pwned_device *dev, unsigned char *serial_buf, int l libusb_get_string_descriptor_ascii(handle, desc->iSerialNumber, serial_buf, len); return CHECKM8_SUCCESS; #endif +} + +const char *usb_error_name(int code) +{ +#ifdef WITH_ARDUINO + switch(code) + { + case CHECKM8_SUCCESS: + return "CHECKM8_SUCCESS"; + + case CHECKM8_FAIL_INVARGS: + return "CHECKM8_FAIL_INVARGS"; + + case CHECKM8_FAIL_NODEV: + return "CHECKM8_FAIL_NODEV"; + + case CHECKM8_FAIL_NOEXP: + return "CHECKM8_FAIL_NOEXP"; + + case CHECKM8_FAIL_NOTDONE: + return "CHECKM8_FAIL_NOTDONE"; + + case CHECKM8_FAIL_XFER: + return "CHECKM8_FAIL_XFER"; + + case CHECKM8_FAIL_NOINST: + return "CHECKM8_FAIL_NOINST"; + + case CHECKM8_FAIL_PROT: + return "CHECKM8_FAIL_PROT"; + + default: + return "UNKNOWN"; + } +#else + return libusb_error_name(code); +#endif } \ No newline at end of file