Implement missing USB debug information functions.

Approved by:	re (kib)
MFC after:	1 week
This commit is contained in:
Hans Petter Selasky 2011-09-19 08:52:06 +00:00
parent c49e3f837c
commit c61f25617c
7 changed files with 184 additions and 4 deletions

View File

@ -40,6 +40,7 @@ CFLAGS+= -DCOMPAT_32BIT
MLINKS += libusb.3 libusb_init.3
MLINKS += libusb.3 libusb_exit.3
MLINKS += libusb.3 libusb_strerror.3
MLINKS += libusb.3 libusb_error_name.3
MLINKS += libusb.3 libusb_set_debug.3
MLINKS += libusb.3 libusb_get_device_list.3
MLINKS += libusb.3 libusb_free_device_list.3
@ -210,3 +211,5 @@ MLINKS += libusb20.3 libusb20_me_get_2.3
MLINKS += libusb20.3 libusb20_me_encode.3
MLINKS += libusb20.3 libusb20_me_decode.3
MLINKS += libusb20.3 libusb20_desc_foreach.3
MLINKS += libusb20.3 libusb20_strerror.3
MLINKS += libusb20.3 libusb20_error_name.3

View File

@ -63,6 +63,14 @@ Other libusb routines may not be called after this function.
Get the ASCII representation of the error given by the
.Fa code
argument.
This function does not return NULL.
.Pp
.Ft const char *
.Fn libusb_error_name "int code"
Get the ASCII representation of the error enum given by the
.Fa code
argument.
This function does not return NULL.
.Pp
.Ft void
.Fn libusb_set_debug "libusb_context *ctx" "int level"
@ -502,7 +510,8 @@ The library is also compliant with LibUSB version 0.1.12.
.Sh SEE ALSO
.Xr libusb20 3 ,
.Xr usb 4 ,
.Xr usbconfig 8
.Xr usbconfig 8 ,
.Xr usbdump 8
.Pp
.Pa http://libusb.sourceforge.net/
.Sh HISTORY

View File

@ -303,6 +303,7 @@ typedef struct libusb_transfer {
void libusb_set_debug(libusb_context * ctx, int level);
const char *libusb_strerror(int code);
const char *libusb_error_name(int code);
int libusb_init(libusb_context ** context);
void libusb_exit(struct libusb_context *ctx);

View File

@ -1449,6 +1449,73 @@ libusb_le16_to_cpu(uint16_t x)
const char *
libusb_strerror(int code)
{
/* TODO */
return ("Unknown error");
switch (code) {
case LIBUSB_SUCCESS:
return ("Success");
case LIBUSB_ERROR_IO:
return ("I/O error");
case LIBUSB_ERROR_INVALID_PARAM:
return ("Invalid parameter");
case LIBUSB_ERROR_ACCESS:
return ("Permissions error");
case LIBUSB_ERROR_NO_DEVICE:
return ("No device");
case LIBUSB_ERROR_NOT_FOUND:
return ("Not found");
case LIBUSB_ERROR_BUSY:
return ("Device busy");
case LIBUSB_ERROR_TIMEOUT:
return ("Timeout");
case LIBUSB_ERROR_OVERFLOW:
return ("Overflow");
case LIBUSB_ERROR_PIPE:
return ("Pipe error");
case LIBUSB_ERROR_INTERRUPTED:
return ("Interrupted");
case LIBUSB_ERROR_NO_MEM:
return ("Out of memory");
case LIBUSB_ERROR_NOT_SUPPORTED:
return ("Not supported");
case LIBUSB_ERROR_OTHER:
return ("Other error");
default:
return ("Unknown error");
}
}
const char *
libusb_error_name(int code)
{
switch (code) {
case LIBUSB_SUCCESS:
return ("LIBUSB_SUCCESS");
case LIBUSB_ERROR_IO:
return ("LIBUSB_ERROR_IO");
case LIBUSB_ERROR_INVALID_PARAM:
return ("LIBUSB_ERROR_INVALID_PARAM");
case LIBUSB_ERROR_ACCESS:
return ("LIBUSB_ERROR_ACCESS");
case LIBUSB_ERROR_NO_DEVICE:
return ("LIBUSB_ERROR_NO_DEVICE");
case LIBUSB_ERROR_NOT_FOUND:
return ("LIBUSB_ERROR_NOT_FOUND");
case LIBUSB_ERROR_BUSY:
return ("LIBUSB_ERROR_BUSY");
case LIBUSB_ERROR_TIMEOUT:
return ("LIBUSB_ERROR_TIMEOUT");
case LIBUSB_ERROR_OVERFLOW:
return ("LIBUSB_ERROR_OVERFLOW");
case LIBUSB_ERROR_PIPE:
return ("LIBUSB_ERROR_PIPE");
case LIBUSB_ERROR_INTERRUPTED:
return ("LIBUSB_ERROR_INTERRUPTED");
case LIBUSB_ERROR_NO_MEM:
return ("LIBUSB_ERROR_NO_MEM");
case LIBUSB_ERROR_NOT_SUPPORTED:
return ("LIBUSB_ERROR_NOT_SUPPORTED");
case LIBUSB_ERROR_OTHER:
return ("LIBUSB_ERROR_OTHER");
default:
return ("LIBUSB_ERROR_UNKNOWN");
}
}

View File

@ -212,6 +212,10 @@ USB access library (libusb -lusb)
.Fn libusb20_me_decode "const void *pdata" "uint16_t len" "void *pdecoded"
.Ft "const uint8_t *"
.Fn libusb20_desc_foreach "const struct libusb20_me_struct *me" "const uint8_t *pdesc"
.Ft "const char *"
.Fn libusb20_strerror "int code"
.Ft "const char *"
.Fn libusb20_error_name "int code"
.
.
.Sh DESCRIPTION
@ -996,6 +1000,22 @@ The total decoded length is returned.
The buffer pointer cannot be NULL.
.
.
.Sh USB DEBUGGING
.Pp
.Ft const char *
.Fn libusb20_strerror "int code"
Get the ASCII representation of the error given by the
.Fa code
argument.
This function does not return NULL.
.Pp
.Ft const char *
.Fn libusb20_error_name "int code"
Get the ASCII representation of the error enum given by the
.Fa code
argument.
This function does not return NULL.
.
.Sh FILES
.
.
@ -1003,7 +1023,8 @@ The buffer pointer cannot be NULL.
.Sh SEE ALSO
.Xr usb 4 ,
.Xr libusb 3 ,
.Xr usbconfig 8
.Xr usbconfig 8 ,
.Xr usbdump 8
.
.
.Sh HISTORY

View File

@ -1244,3 +1244,77 @@ libusb20_be_dequeue_device(struct libusb20_backend *pbe,
{
TAILQ_REMOVE(&(pbe->usb_devs), pdev, dev_entry);
}
const char *
libusb20_strerror(int code)
{
switch (code) {
case LIBUSB20_SUCCESS:
return ("Success");
case LIBUSB20_ERROR_IO:
return ("I/O error");
case LIBUSB20_ERROR_INVALID_PARAM:
return ("Invalid parameter");
case LIBUSB20_ERROR_ACCESS:
return ("Permissions error");
case LIBUSB20_ERROR_NO_DEVICE:
return ("No device");
case LIBUSB20_ERROR_NOT_FOUND:
return ("Not found");
case LIBUSB20_ERROR_BUSY:
return ("Device busy");
case LIBUSB20_ERROR_TIMEOUT:
return ("Timeout");
case LIBUSB20_ERROR_OVERFLOW:
return ("Overflow");
case LIBUSB20_ERROR_PIPE:
return ("Pipe error");
case LIBUSB20_ERROR_INTERRUPTED:
return ("Interrupted");
case LIBUSB20_ERROR_NO_MEM:
return ("Out of memory");
case LIBUSB20_ERROR_NOT_SUPPORTED:
return ("Not supported");
case LIBUSB20_ERROR_OTHER:
return ("Other error");
default:
return ("Unknown error");
}
}
const char *
libusb20_error_name(int code)
{
switch (code) {
case LIBUSB20_SUCCESS:
return ("LIBUSB20_SUCCESS");
case LIBUSB20_ERROR_IO:
return ("LIBUSB20_ERROR_IO");
case LIBUSB20_ERROR_INVALID_PARAM:
return ("LIBUSB20_ERROR_INVALID_PARAM");
case LIBUSB20_ERROR_ACCESS:
return ("LIBUSB20_ERROR_ACCESS");
case LIBUSB20_ERROR_NO_DEVICE:
return ("LIBUSB20_ERROR_NO_DEVICE");
case LIBUSB20_ERROR_NOT_FOUND:
return ("LIBUSB20_ERROR_NOT_FOUND");
case LIBUSB20_ERROR_BUSY:
return ("LIBUSB20_ERROR_BUSY");
case LIBUSB20_ERROR_TIMEOUT:
return ("LIBUSB20_ERROR_TIMEOUT");
case LIBUSB20_ERROR_OVERFLOW:
return ("LIBUSB20_ERROR_OVERFLOW");
case LIBUSB20_ERROR_PIPE:
return ("LIBUSB20_ERROR_PIPE");
case LIBUSB20_ERROR_INTERRUPTED:
return ("LIBUSB20_ERROR_INTERRUPTED");
case LIBUSB20_ERROR_NO_MEM:
return ("LIBUSB20_ERROR_NO_MEM");
case LIBUSB20_ERROR_NOT_SUPPORTED:
return ("LIBUSB20_ERROR_NOT_SUPPORTED");
case LIBUSB20_ERROR_OTHER:
return ("LIBUSB20_ERROR_OTHER");
default:
return ("LIBUSB20_ERROR_UNKNOWN");
}
}

View File

@ -293,6 +293,11 @@ void libusb20_be_dequeue_device(struct libusb20_backend *pbe, struct libusb20_de
void libusb20_be_enqueue_device(struct libusb20_backend *pbe, struct libusb20_device *pdev);
void libusb20_be_free(struct libusb20_backend *pbe);
/* USB debugging */
const char *libusb20_strerror(int);
const char *libusb20_error_name(int);
#if 0
{ /* style */
#endif