#include "usb_spec.h"
#include "usb_devdes.h"
-
+
#if defined(SDCC) || defined(__KEIL__) || defined(__C51__)
/*8051 special handling*/
- #define REENTRANT_SIGN reentrant
+ #define REENTRANT_SIGN __reentrant
#else
- #define xdata /*nothing*/
+ #define __xdata /*nothing*/
#define REENTRANT_SIGN /*nothing*/
#endif
#define MAX_CONTROL_XFER_DATA_SIZE 8
struct usb_ep_t;
-
+
typedef void endfnc_t( struct usb_ep_t *ep) REENTRANT_SIGN;
-
+
#define USB_NEXT_PKT_SEND 0
#define USB_NEXT_PKT_REC 1
#endif /*USB_WITH_CB_FNC*/
} usb_ep_t;
-
-/* Vendor & Class functions */
-/*
- #ifdef USB_WITH_CB_FNC
- typedef int usb_vendor_extension_fnc_t(usb_ep_t *ep, USB_DEVICE_REQUEST *dreq);
- extern xdata usb_vendor_extension_fnc_t USBVendorRequestCBFnc;
-
- typedef int usb_class_extension_fnc_t(usb_ep_t *ep, USB_DEVICE_REQUEST *dreq);
- extern xdata usb_class_extension_fnc_t USBClassRequestCBFnc;
- #else //USB_WITH_CB_FNC
- char USBVendorRequest( USB_DEVICE_REQUEST *dr);
- char USBClassRequest( USB_DEVICE_REQUEST *dr);
- #endif //USB_WITH_CB_FNC
-*/
-
-
-/* USB device */
+/* USB device */
typedef struct usb_device_t {
unsigned char id; /* device ID ??? */
unsigned char flags; /* usb device flags + endpoint0 events */
// unsigned char interface; /* current interface */
// unsigned char altinterface; /* current alternative interface */
- //int (stdreq[13])( struct usb_device_t *udev) REENTRANT_SIGN; /* pointer to array of standard request processing functions */
int (*vendor_fnc)( struct usb_device_t *udev) REENTRANT_SIGN; /* pointer to vendor request processing function */
int (*class_fnc)( struct usb_device_t *udev) REENTRANT_SIGN; /* pointer to class request processing function */
+ int (*standard_fnc)( struct usb_device_t *udev) REENTRANT_SIGN; /* pointer to standard request processing function */
+
+ //int (stdreq[13])( struct usb_device_t *udev) REENTRANT_SIGN; /* pointer to array of standard request processing functions - not used in actual implementation */
const USB_DEVICE_DESCRIPTORS_TABLE *devdes_table;
int (*read_endpoint)( usb_ep_t *ep, void *ptr, int size) REENTRANT_SIGN;
int (*write_endpoint)( usb_ep_t *ep, const void *ptr, int size) REENTRANT_SIGN;
#endif /*USB_WITH_UDEV_FNC*/
-
+
// USB_DEVICE_REQUEST *request; /* current usb request - only if there is a valid usb request in processing */
USB_DEVICE_REQUEST request; /* usb device request */
-
+
unsigned char cntep; /* number of device endpoints in ep array without EP0 */
usb_ep_t ep0; /* endpoint 0 */
usb_ep_t *ep; /* others endpoints in array */
#define USB_FLAG_SUSPEND 0x04
#define USB_FLAG_SETUP 0x08 // setup_packet
#define USB_FLAG_REMOTE_WAKE 0x10
-
+
#define USB_FLAG_EVENT_RX0 0x40
#define USB_FLAG_EVENT_TX0 0x80
-
+
/* device functions - inline ??? */
/* check usb events(interrupts) */
int usb_check_events( usb_device_t *udev);
/* response to standard constrol requests */
- int usb_control_response( usb_device_t *udev);
+ int usb_control_response( usb_device_t *udev);
/* send control data */
void usb_send_control_data( usb_device_t *udev, unsigned char *pData, unsigned short len);
void usb_set_control_endfnc( usb_device_t *udev, endfnc_t *efnc);// REENTRANT_SIGN;
void usb_ack_setup( usb_ep_t *ep);
-
+
/* Standard requests functions */
// typedef int (*usb_stdreq_fnc_t)( usb_device_t *udev) REENTRANT_SIGN;
// extern xdata usb_stdreq_fnc_t usb_standard_requests[13];
-
+
+int usb_standard_control_response(usb_device_t *udev) REENTRANT_SIGN;
#ifdef USB_WITH_UDEV_FNC
#define usb_udev_is_fnc(_M_udev, _M_fnc) (_M_udev->_M_fnc)
-
+
#define usb_udev_init(_M_udev) (_M_udev->init(_M_udev))
#define usb_udev_set_addr(_M_udev, _M_addr) (_M_udev->set_addr(_M_udev, _M_addr))
#define usb_udev_set_configuration(_M_udev, _M_iCfg) (_M_udev->set_configuration(_M_udev, _M_iCfg))
#else /*USB_WITH_UDEV_FNC*/
#define USB_PDI_DIRECT_FNC
- #include "pdi.h"
+ #include "usb/pdi.h"
#endif /*USB_WITH_UDEV_FNC*/
-
+
#endif