1#ifndef _ERROR_H_
2#define _ERROR_H_
3
4typedef enum {
5  USB_ERROR_TYPE_NONE = 0,
6  USB_ERROR_TYPE_STRING,
7  USB_ERROR_TYPE_ERRNO,
8} usb_error_type_t;
9
10extern char usb_error_str[1024];
11extern int usb_error_errno;
12extern usb_error_type_t usb_error_type;
13
14#define USB_ERROR(x) \
15	do { \
16          usb_error_type = USB_ERROR_TYPE_ERRNO; \
17          usb_error_errno = x; \
18	  return x; \
19	} while (0)
20
21#define USB_ERROR_STR(x, format, args...) \
22	do { \
23	  usb_error_type = USB_ERROR_TYPE_STRING; \
24	  snprintf(usb_error_str, sizeof(usb_error_str) - 1, format, ## args); \
25          if (usb_debug >= 2) \
26            fprintf(stderr, "USB error: %s\n", usb_error_str); \
27	  return x; \
28	} while (0)
29
30#endif /* _ERROR_H_ */
31
32