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
|