]> rtime.felk.cvut.cz Git - lincan.git/blobdiff - embedded/libs4c/usb/base/usb/usb.h
Update of system-less architecture and board support code to actual uLAN.sf.net version.
[lincan.git] / embedded / libs4c / usb / base / usb / usb.h
index 4807b5998959bba51dc3450d82a45a3040a69188..a81c8c2d70f01ef9613df188b0009f59fe3cf4f4 100644 (file)
 
   #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
 
@@ -32,9 +32,9 @@
   #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