summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhselasky <hselasky@FreeBSD.org>2011-09-19 08:52:06 +0000
committerhselasky <hselasky@FreeBSD.org>2011-09-19 08:52:06 +0000
commitc186259e3181ae2f836aef914837c5abff6820fc (patch)
tree5f1edfe8c0f6f8eefa57d51cf108c2d03e053aa5
parentd3ab0cf954ad6a22d6d4abd24a9711534e70af19 (diff)
downloadFreeBSD-src-c186259e3181ae2f836aef914837c5abff6820fc.zip
FreeBSD-src-c186259e3181ae2f836aef914837c5abff6820fc.tar.gz
Implement missing USB debug information functions.
Approved by: re (kib) MFC after: 1 week
-rw-r--r--lib/libusb/Makefile3
-rw-r--r--lib/libusb/libusb.311
-rw-r--r--lib/libusb/libusb.h1
-rw-r--r--lib/libusb/libusb10.c71
-rw-r--r--lib/libusb/libusb20.323
-rw-r--r--lib/libusb/libusb20.c74
-rw-r--r--lib/libusb/libusb20.h5
7 files changed, 184 insertions, 4 deletions
diff --git a/lib/libusb/Makefile b/lib/libusb/Makefile
index c4396cc..b76618a 100644
--- a/lib/libusb/Makefile
+++ b/lib/libusb/Makefile
@@ -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
diff --git a/lib/libusb/libusb.3 b/lib/libusb/libusb.3
index 1f52b9e..b69922e 100644
--- a/lib/libusb/libusb.3
+++ b/lib/libusb/libusb.3
@@ -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
diff --git a/lib/libusb/libusb.h b/lib/libusb/libusb.h
index bbde475..63e3ebc 100644
--- a/lib/libusb/libusb.h
+++ b/lib/libusb/libusb.h
@@ -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);
diff --git a/lib/libusb/libusb10.c b/lib/libusb/libusb10.c
index b66ccb6..e02b90a 100644
--- a/lib/libusb/libusb10.c
+++ b/lib/libusb/libusb10.c
@@ -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");
+ }
}
diff --git a/lib/libusb/libusb20.3 b/lib/libusb/libusb20.3
index 042f885..b41bec1 100644
--- a/lib/libusb/libusb20.3
+++ b/lib/libusb/libusb20.3
@@ -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
diff --git a/lib/libusb/libusb20.c b/lib/libusb/libusb20.c
index b35e2bf..747c160 100644
--- a/lib/libusb/libusb20.c
+++ b/lib/libusb/libusb20.c
@@ -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");
+ }
+}
diff --git a/lib/libusb/libusb20.h b/lib/libusb/libusb20.h
index 22a2899..e4359fc 100644
--- a/lib/libusb/libusb20.h
+++ b/lib/libusb/libusb20.h
@@ -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
OpenPOWER on IntegriCloud