mirror of https://github.com/nirenjan/libx52.git
Add more error codes and translation from libusb
These new error codes correspond to similar ones returned by libusb, but abstract away the usage of libusb underneath libx52. This lets the application rely solely on libx52 error codes to perform error handling.feature/test-new-mem-api
parent
d4afbd6de2
commit
6f3f8d7c46
|
@ -160,6 +160,34 @@ typedef enum {
|
|||
|
||||
/** Error encountered during USB interaction */
|
||||
LIBX52_ERROR_USB_FAILURE,
|
||||
|
||||
/** Input output error */
|
||||
LIBX52_ERROR_IO,
|
||||
|
||||
/** Insufficient permissions */
|
||||
LIBX52_ERROR_PERM,
|
||||
|
||||
/** No such device */
|
||||
LIBX52_ERROR_NO_DEVICE,
|
||||
|
||||
/** Entry not found */
|
||||
LIBX52_ERROR_NOT_FOUND,
|
||||
|
||||
/** Busy */
|
||||
LIBX52_ERROR_BUSY,
|
||||
|
||||
/** Timeout */
|
||||
LIBX52_ERROR_TIMEOUT,
|
||||
|
||||
/** Overflow */
|
||||
LIBX52_ERROR_OVERFLOW,
|
||||
|
||||
/** Pipe error */
|
||||
LIBX52_ERROR_PIPE,
|
||||
|
||||
/** Operation interrupted */
|
||||
LIBX52_ERROR_INTERRUPTED,
|
||||
|
||||
} libx52_error_code;
|
||||
|
||||
/**
|
||||
|
|
|
@ -19,6 +19,55 @@
|
|||
#include "x52_commands.h"
|
||||
#include "x52_common.h"
|
||||
|
||||
/* Translate a libusb error to a libx52 error */
|
||||
static int libx52_translate_libusb_error(enum libusb_error errcode)
|
||||
{
|
||||
switch (errcode) {
|
||||
case LIBUSB_SUCCESS:
|
||||
return LIBX52_SUCCESS;
|
||||
|
||||
case LIBUSB_ERROR_IO:
|
||||
return LIBX52_ERROR_IO;
|
||||
|
||||
case LIBUSB_ERROR_INVALID_PARAM:
|
||||
return LIBX52_ERROR_INVALID_PARAM;
|
||||
|
||||
case LIBUSB_ERROR_ACCESS:
|
||||
return LIBX52_ERROR_PERM;
|
||||
|
||||
case LIBUSB_ERROR_NO_DEVICE:
|
||||
return LIBX52_ERROR_NO_DEVICE;
|
||||
|
||||
case LIBUSB_ERROR_NOT_FOUND:
|
||||
return LIBX52_ERROR_NOT_FOUND;
|
||||
|
||||
case LIBUSB_ERROR_BUSY:
|
||||
return LIBX52_ERROR_BUSY;
|
||||
|
||||
case LIBUSB_ERROR_TIMEOUT:
|
||||
return LIBX52_ERROR_TIMEOUT;
|
||||
|
||||
case LIBUSB_ERROR_OVERFLOW:
|
||||
return LIBX52_ERROR_OVERFLOW;
|
||||
|
||||
case LIBUSB_ERROR_PIPE:
|
||||
return LIBX52_ERROR_PIPE;
|
||||
|
||||
case LIBUSB_ERROR_INTERRUPTED:
|
||||
return LIBX52_ERROR_INTERRUPTED;
|
||||
|
||||
case LIBUSB_ERROR_NO_MEM:
|
||||
return LIBX52_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
case LIBUSB_ERROR_NOT_SUPPORTED:
|
||||
return LIBX52_ERROR_NOT_SUPPORTED;
|
||||
|
||||
case LIBUSB_ERROR_OTHER:
|
||||
default:
|
||||
return LIBX52_ERROR_USB_FAILURE;
|
||||
};
|
||||
}
|
||||
|
||||
int libx52_vendor_command(libx52_device *x52, uint16_t index, uint16_t value)
|
||||
{
|
||||
int j;
|
||||
|
@ -34,11 +83,11 @@ int libx52_vendor_command(libx52_device *x52, uint16_t index, uint16_t value)
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (rc == LIBUSB_SUCCESS) {
|
||||
return LIBX52_SUCCESS;
|
||||
} else {
|
||||
return LIBX52_ERROR_USB_FAILURE;
|
||||
return libx52_translate_libusb_error(rc);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue