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