firmware/usbmmap.h
author root@rika
Thu, 23 Apr 2009 19:10:12 +0200
changeset 30 7fd00015f62f
parent 2 2f55e5dd591d
permissions -rw-r--r--
several changes..
     1 /*********************************************************************
     2  *
     3  *                Microchip USB C18 Firmware Version 1.0
     4  *
     5  *********************************************************************
     6  * FileName:        usbmmap.h
     7  * Dependencies:    See INCLUDES section below
     8  * Processor:       PIC18
     9  * Compiler:        C18 2.30.01+
    10  * Company:         Microchip Technology, Inc.
    11  *
    12  * Software License Agreement
    13  *
    14  * The software supplied herewith by Microchip Technology Incorporated
    15  * (the “Company”) for its PICmicro® Microcontroller is intended and
    16  * supplied to you, the Company’s customer, for use solely and
    17  * exclusively on Microchip PICmicro Microcontroller products. The
    18  * software is owned by the Company and/or its supplier, and is
    19  * protected under applicable copyright laws. All rights are reserved.
    20  * Any use in violation of the foregoing restrictions may subject the
    21  * user to criminal sanctions under applicable laws, as well as to
    22  * civil liability for the breach of the terms and conditions of this
    23  * license.
    24  *
    25  * THIS SOFTWARE IS PROVIDED IN AN “AS IS” CONDITION. NO WARRANTIES,
    26  * WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED
    27  * TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
    28  * PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. THE COMPANY SHALL NOT,
    29  * IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL OR
    30  * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
    31  *
    32  * Author               Date        Comment
    33  *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    34  * Rawin Rojvanit       11/19/04    Original.
    35  ********************************************************************/
    36 
    37 #ifndef USBMMAP_H
    38 #define USBMMAP_H
    39 
    40 /** I N C L U D E S **********************************************************/
    41 #include "typedefs.h"
    42 
    43 /** D E F I N I T I O N S ****************************************************/
    44 
    45 /* Buffer Descriptor Status Register Initialization Parameters */
    46 #define _BSTALL     0x04                //Buffer Stall enable
    47 #define _DTSEN      0x08                //Data Toggle Synch enable
    48 #define _INCDIS     0x10                //Address increment disable
    49 #define _KEN        0x20                //SIE keeps buff descriptors enable
    50 #define _DAT0       0x00                //DATA0 packet expected next
    51 #define _DAT1       0x40                //DATA1 packet expected next
    52 #define _DTSMASK    0x40                //DTS Mask
    53 #define _USIE       0x80                //SIE owns buffer
    54 #define _UCPU       0x00                //CPU owns buffer
    55 
    56 /* USB Device States - To be used with [byte usb_device_state] */
    57 #define DETACHED_STATE          0
    58 #define ATTACHED_STATE          1
    59 #define POWERED_STATE           2
    60 #define DEFAULT_STATE           3
    61 #define ADR_PENDING_STATE       4
    62 #define ADDRESS_STATE           5
    63 #define CONFIGURED_STATE        6
    64 
    65 /* Memory Types for Control Transfer - used in USB_DEVICE_STATUS */
    66 #define _RAM 0
    67 #define _ROM 1
    68 
    69 /** T Y P E S ****************************************************************/
    70 typedef union _USB_DEVICE_STATUS
    71 {
    72     byte _byte;
    73     struct
    74     {
    75         unsigned RemoteWakeup:1;// [0]Disabled [1]Enabled: See usbdrv.c,usb9.c
    76         unsigned ctrl_trf_mem:1;// [0]RAM      [1]ROM
    77     };
    78 } USB_DEVICE_STATUS;
    79 
    80 typedef union _BD_STAT
    81 {
    82     byte _byte;
    83     struct{
    84         unsigned BC8:1;
    85         unsigned BC9:1;
    86         unsigned BSTALL:1;              //Buffer Stall Enable
    87         unsigned DTSEN:1;               //Data Toggle Synch Enable
    88         unsigned INCDIS:1;              //Address Increment Disable
    89         unsigned KEN:1;                 //BD Keep Enable
    90         unsigned DTS:1;                 //Data Toggle Synch Value
    91         unsigned UOWN:1;                //USB Ownership
    92     };
    93     struct{
    94         unsigned BC8:1;
    95         unsigned BC9:1;
    96         unsigned PID0:1;
    97         unsigned PID1:1;
    98         unsigned PID2:1;
    99         unsigned PID3:1;
   100         unsigned :1;
   101         unsigned UOWN:1;
   102     };
   103     struct{
   104         unsigned :2;
   105         unsigned PID:4;                 //Packet Identifier
   106         unsigned :2;
   107     };
   108 } BD_STAT;                              //Buffer Descriptor Status Register
   109 
   110 typedef union _BDT
   111 {
   112     struct
   113     {
   114         BD_STAT Stat;
   115         byte Cnt;
   116         byte ADRL;                      //Buffer Address Low
   117         byte ADRH;                      //Buffer Address High
   118     };
   119     struct
   120     {
   121         unsigned :8;
   122         unsigned :8;
   123         byte* ADR;                      //Buffer Address
   124     };
   125 } BDT;                                  //Buffer Descriptor Table
   126 
   127 /** E X T E R N S ************************************************************/
   128 extern byte usb_device_state;
   129 extern USB_DEVICE_STATUS usb_stat;
   130 extern byte usb_active_cfg;
   131 extern byte usb_alt_intf[MAX_NUM_INT];
   132 
   133 extern volatile far BDT ep0Bo;          //Endpoint #0 BD Out
   134 extern volatile far BDT ep0Bi;          //Endpoint #0 BD In
   135 extern volatile far BDT ep1Bo;          //Endpoint #1 BD Out
   136 extern volatile far BDT ep1Bi;          //Endpoint #1 BD In
   137 extern volatile far BDT ep2Bo;          //Endpoint #2 BD Out
   138 extern volatile far BDT ep2Bi;          //Endpoint #2 BD In
   139 extern volatile far BDT ep3Bo;          //Endpoint #3 BD Out
   140 extern volatile far BDT ep3Bi;          //Endpoint #3 BD In
   141 extern volatile far BDT ep4Bo;          //Endpoint #4 BD Out
   142 extern volatile far BDT ep4Bi;          //Endpoint #4 BD In
   143 extern volatile far BDT ep5Bo;          //Endpoint #5 BD Out
   144 extern volatile far BDT ep5Bi;          //Endpoint #5 BD In
   145 extern volatile far BDT ep6Bo;          //Endpoint #6 BD Out
   146 extern volatile far BDT ep6Bi;          //Endpoint #6 BD In
   147 extern volatile far BDT ep7Bo;          //Endpoint #7 BD Out
   148 extern volatile far BDT ep7Bi;          //Endpoint #7 BD In
   149 extern volatile far BDT ep8Bo;          //Endpoint #8 BD Out
   150 extern volatile far BDT ep8Bi;          //Endpoint #8 BD In
   151 extern volatile far BDT ep9Bo;          //Endpoint #9 BD Out
   152 extern volatile far BDT ep9Bi;          //Endpoint #9 BD In
   153 extern volatile far BDT ep10Bo;         //Endpoint #10 BD Out
   154 extern volatile far BDT ep10Bi;         //Endpoint #10 BD In
   155 extern volatile far BDT ep11Bo;         //Endpoint #11 BD Out
   156 extern volatile far BDT ep11Bi;         //Endpoint #11 BD In
   157 extern volatile far BDT ep12Bo;         //Endpoint #12 BD Out
   158 extern volatile far BDT ep12Bi;         //Endpoint #12 BD In
   159 extern volatile far BDT ep13Bo;         //Endpoint #13 BD Out
   160 extern volatile far BDT ep13Bi;         //Endpoint #13 BD In
   161 extern volatile far BDT ep14Bo;         //Endpoint #14 BD Out
   162 extern volatile far BDT ep14Bi;         //Endpoint #14 BD In
   163 extern volatile far BDT ep15Bo;         //Endpoint #15 BD Out
   164 extern volatile far BDT ep15Bi;         //Endpoint #15 BD In
   165 
   166 extern volatile far CTRL_TRF_SETUP SetupPkt;
   167 extern volatile far CTRL_TRF_DATA CtrlTrfData;
   168 
   169 #if defined(USB_USE_CDC)
   170 extern volatile far unsigned char cdc_notice[CDC_INT_EP_SIZE];
   171 extern volatile far unsigned char cdc_data_rx[CDC_BULK_OUT_EP_SIZE];
   172 extern volatile far unsigned char cdc_data_tx[CDC_BULK_IN_EP_SIZE];
   173 #endif
   174 
   175 #endif //USBMMAP_H