boart test board

Dependencies:   USBDevice mbed-dev lwip

Fork of USBSerial_HelloWorld by Compass Yap

Committer:
ua1arn
Date:
Fri Aug 03 05:41:14 2018 +0000
Revision:
23:121b78470d39
Parent:
21:85a0f94a84cd
mistyped

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ua1arn 21:85a0f94a84cd 1 #ifndef APPLICATION_USER_RLNDIS_USBD_DESC2_H
ua1arn 21:85a0f94a84cd 2 #define APPLICATION_USER_RLNDIS_USBD_DESC2_H
ua1arn 21:85a0f94a84cd 3
ua1arn 21:85a0f94a84cd 4 #include <stdint.h>
ua1arn 21:85a0f94a84cd 5 #include <stddef.h>
ua1arn 21:85a0f94a84cd 6 #include <stdio.h>
ua1arn 21:85a0f94a84cd 7
ua1arn 21:85a0f94a84cd 8 //#define WITHDEBUG 1
ua1arn 21:85a0f94a84cd 9
ua1arn 21:85a0f94a84cd 10 #define WITHUSBHW 1
ua1arn 21:85a0f94a84cd 11 //#define WITHUSBUAC 1 /* использовать виртуальную звуковую плату на USB соединении */
ua1arn 21:85a0f94a84cd 12 //#define WITHUSBUAC3 1 /* формируются три канала передачи звука */
ua1arn 21:85a0f94a84cd 13 //#define WITHUABUACOUTAUDIO48MONO 1 /* для уменьшения размера буферов в endpoints */
ua1arn 21:85a0f94a84cd 14
ua1arn 21:85a0f94a84cd 15 #define WITHUSBRNDIS 1 /* RNDIS использовать Remote NDIS на USB соединении */
ua1arn 21:85a0f94a84cd 16 #define WITHUSBCDCECM 1 /* ECM использовать Ethernet Control Model на USB соединении */
ua1arn 21:85a0f94a84cd 17
ua1arn 21:85a0f94a84cd 18 //#define WITHUSBCDC 1 /* ACM использовать виртуальный последовательный порт на USB соединении */
ua1arn 21:85a0f94a84cd 19 //#define WITHUSBCDCEEM 1 /* EEM использовать Ethernet Emulation Model на USB соединении */
ua1arn 21:85a0f94a84cd 20 //#define WITHUSBHID 1 /* HID использовать Human Interface Device на USB соединении */
ua1arn 21:85a0f94a84cd 21
ua1arn 21:85a0f94a84cd 22 #define WITHPLAINDESCROPTOR 0 /* один configuration descriptor с составным устройством */
ua1arn 21:85a0f94a84cd 23
ua1arn 21:85a0f94a84cd 24 #if WITHPLAINDESCROPTOR
ua1arn 21:85a0f94a84cd 25
ua1arn 21:85a0f94a84cd 26 #if WITHUSBUAC
ua1arn 21:85a0f94a84cd 27 #if WITHUSBUAC3
ua1arn 21:85a0f94a84cd 28 //#define INTERFACE_UAC_count 2 /* количество интерфейсов в одном UAC */
ua1arn 21:85a0f94a84cd 29 #else /* WITHUSBUAC3 */
ua1arn 21:85a0f94a84cd 30 #define INTERFACE_UAC_count 3 /* количество интерфейсов в одном UAC */
ua1arn 21:85a0f94a84cd 31 #endif /* WITHUSBUAC3 */
ua1arn 21:85a0f94a84cd 32 #endif /* WITHUSBUAC */
ua1arn 21:85a0f94a84cd 33
ua1arn 21:85a0f94a84cd 34 /* Последовательность в данном enum должна соответствовать порядку использования в fill_Configuration_main_group */
ua1arn 21:85a0f94a84cd 35 enum
ua1arn 21:85a0f94a84cd 36 {
ua1arn 21:85a0f94a84cd 37
ua1arn 21:85a0f94a84cd 38 #if WITHUSBRNDIS
ua1arn 21:85a0f94a84cd 39 INTERFACE_RNDIS_CONTROL_5, /* RNDIS control Interface */
ua1arn 21:85a0f94a84cd 40 INTERFACE_RNDIS_DATA_6, /* RNDIS data Interface */
ua1arn 21:85a0f94a84cd 41 #endif /* WITHUSBRNDIS */
ua1arn 21:85a0f94a84cd 42
ua1arn 21:85a0f94a84cd 43 #if WITHUSBUAC
ua1arn 21:85a0f94a84cd 44 #if WITHUSBUAC3
ua1arn 21:85a0f94a84cd 45 INTERFACE_AUDIO_CONTROL_0, /* AUDIO transmitter input control interface */
ua1arn 21:85a0f94a84cd 46 INTERFACE_AUDIO_SPK_1, /* USB Speaker Standard AS Interface Descriptor - Audio Streaming Zero Bandwith */
ua1arn 21:85a0f94a84cd 47 INTERFACE_AUDIO_MIKE_2, /* USB receiver output Standard AS Interface Descriptor (Alt. Set. 0) (CODE == 3)*/ //zero-bandwidth interface
ua1arn 21:85a0f94a84cd 48 /* */INTERFACE_AUDIO_CONTROL_1, /* AUDIO spectrum control interface */
ua1arn 21:85a0f94a84cd 49 INTERFACE_AUDIO_RTS_3, /* USB spectrum Standard AS Interface Descriptor (Alt. Set. 0) (CODE == 3)*/ //zero-bandwidth interface
ua1arn 21:85a0f94a84cd 50 //INTERFACE_AUDIO_last = INTERFACE_AUDIO_CONTROL_0 + 3,
ua1arn 21:85a0f94a84cd 51 #else
ua1arn 21:85a0f94a84cd 52 INTERFACE_AUDIO_CONTROL_0, /* AUDIO control interface */
ua1arn 21:85a0f94a84cd 53 INTERFACE_AUDIO_SPK_1, /* USB Speaker Standard AS Interface Descriptor - Audio Streaming Zero Bandwith */
ua1arn 21:85a0f94a84cd 54 INTERFACE_AUDIO_MIKE_2, /* USB Microphone Standard AS Interface Descriptor (Alt. Set. 0) (CODE == 3)*/ //zero-bandwidth interface
ua1arn 21:85a0f94a84cd 55 //INTERFACE_AUDIO_last = INTERFACE_AUDIO_CONTROL_0 + 2,
ua1arn 21:85a0f94a84cd 56 #endif
ua1arn 21:85a0f94a84cd 57 #endif /* WITHUSBUAC */
ua1arn 21:85a0f94a84cd 58
ua1arn 21:85a0f94a84cd 59 #if WITHUSBCDC
ua1arn 21:85a0f94a84cd 60 INTERFACE_CDC_base,
ua1arn 21:85a0f94a84cd 61 INTERFACE_CDC_CONTROL_3a = INTERFACE_CDC_base, /* CDC ACM control Interface */
ua1arn 21:85a0f94a84cd 62 INTERFACE_CDC_DATA_4a, /* CDC ACM data Interface */
ua1arn 21:85a0f94a84cd 63 INTERFACE_CDC_CONTROL_3b, /* CDC ACM control Interface */
ua1arn 21:85a0f94a84cd 64 INTERFACE_CDC_DATA_4b, /* CDC ACM data Interface */
ua1arn 21:85a0f94a84cd 65 INTERFACE_CDC_last = INTERFACE_CDC_base + WITHUSBHWCDC_N * 2 - 1,
ua1arn 21:85a0f94a84cd 66 #endif /* WITHUSBCDC */
ua1arn 21:85a0f94a84cd 67
ua1arn 21:85a0f94a84cd 68 #if WITHUSBCDCEEM
ua1arn 21:85a0f94a84cd 69 INTERFACE_CDCEEM_DATA_6, /* CDC ECM/CDC EEM data Interface */
ua1arn 21:85a0f94a84cd 70 #endif /* WITHUSBCDCEEM */
ua1arn 21:85a0f94a84cd 71
ua1arn 21:85a0f94a84cd 72 #if WITHUSBCDCECM
ua1arn 21:85a0f94a84cd 73 INTERFACE_CDCECM_CONTROL_5, /* CDC ECM control Interface */
ua1arn 21:85a0f94a84cd 74 INTERFACE_CDCECM_DATA_6, /* CDC ECM/CDC EEM data Interface */
ua1arn 21:85a0f94a84cd 75 #endif /* WITHUSBCDCECM */
ua1arn 21:85a0f94a84cd 76
ua1arn 21:85a0f94a84cd 77 #if WITHUSBHID
ua1arn 21:85a0f94a84cd 78 INTERFACE_HID_CONTROL_7, /* HID control Interface */
ua1arn 21:85a0f94a84cd 79 #endif /* WITHUSBHID */
ua1arn 21:85a0f94a84cd 80 //
ua1arn 21:85a0f94a84cd 81 INTERFACE_COMPOSITE_count /* Значение для configuration descriptor */
ua1arn 21:85a0f94a84cd 82 };
ua1arn 21:85a0f94a84cd 83
ua1arn 21:85a0f94a84cd 84 #define INTERFACE_CDCACM_count 2 /* количество интерфейсов в одном CDC */
ua1arn 21:85a0f94a84cd 85 #define INTERFACE_CDCEEM_count 1 /* количество интерфейсов в одном CDC EEM */
ua1arn 21:85a0f94a84cd 86 #define INTERFACE_CDCECM_count 2 /* количество интерфейсов в одном CDC EEM */
ua1arn 21:85a0f94a84cd 87 #define INTERFACE_HID_count 1 /* количество интерфейсов в одном HID */
ua1arn 21:85a0f94a84cd 88 #define INTERFACE_RNDIS_count 2 /* количество интерфейсов в одном RNDIS */
ua1arn 21:85a0f94a84cd 89
ua1arn 21:85a0f94a84cd 90 enum
ua1arn 21:85a0f94a84cd 91 {
ua1arn 21:85a0f94a84cd 92 RNDIS_cfgidx = 1,
ua1arn 21:85a0f94a84cd 93 CDCECM_cfgidx = 1
ua1arn 21:85a0f94a84cd 94 };
ua1arn 21:85a0f94a84cd 95
ua1arn 21:85a0f94a84cd 96 #else /* WITHPLAINDESCROPTOR */
ua1arn 21:85a0f94a84cd 97
ua1arn 21:85a0f94a84cd 98 #if WITHUSBUAC
ua1arn 21:85a0f94a84cd 99 #if WITHUSBUAC3
ua1arn 21:85a0f94a84cd 100 //#define INTERFACE_UAC_count 2 /* количество интерфейсов в одном UAC */
ua1arn 21:85a0f94a84cd 101 #else /* WITHUSBUAC3 */
ua1arn 21:85a0f94a84cd 102 #define INTERFACE_UAC_count 3 /* количество интерфейсов в одном UAC */
ua1arn 21:85a0f94a84cd 103 #endif /* WITHUSBUAC3 */
ua1arn 21:85a0f94a84cd 104 #endif /* WITHUSBUAC */
ua1arn 21:85a0f94a84cd 105
ua1arn 21:85a0f94a84cd 106 #if WITHUSBRNDIS
ua1arn 21:85a0f94a84cd 107 enum
ua1arn 21:85a0f94a84cd 108 {
ua1arn 21:85a0f94a84cd 109 INTERFACE_RNDIS_CONTROL_5, /* RNDIS control Interface */
ua1arn 21:85a0f94a84cd 110 INTERFACE_RNDIS_DATA_6, /* RNDIS data Interface */
ua1arn 21:85a0f94a84cd 111 };
ua1arn 21:85a0f94a84cd 112 #endif /* WITHUSBRNDIS */
ua1arn 21:85a0f94a84cd 113
ua1arn 21:85a0f94a84cd 114 #if WITHUSBUAC
ua1arn 21:85a0f94a84cd 115 enum
ua1arn 21:85a0f94a84cd 116 {
ua1arn 21:85a0f94a84cd 117 #if WITHUSBUAC3
ua1arn 21:85a0f94a84cd 118 INTERFACE_AUDIO_CONTROL_0, /* AUDIO transmitter input control interface */
ua1arn 21:85a0f94a84cd 119 INTERFACE_AUDIO_SPK_1, /* USB Speaker Standard AS Interface Descriptor - Audio Streaming Zero Bandwith */
ua1arn 21:85a0f94a84cd 120 INTERFACE_AUDIO_MIKE_2, /* USB receiver output Standard AS Interface Descriptor (Alt. Set. 0) (CODE == 3)*/ //zero-bandwidth interface
ua1arn 21:85a0f94a84cd 121 /* */INTERFACE_AUDIO_CONTROL_1, /* AUDIO spectrum control interface */
ua1arn 21:85a0f94a84cd 122 INTERFACE_AUDIO_RTS_3, /* USB spectrum Standard AS Interface Descriptor (Alt. Set. 0) (CODE == 3)*/ //zero-bandwidth interface
ua1arn 21:85a0f94a84cd 123 //INTERFACE_AUDIO_last = INTERFACE_AUDIO_CONTROL_0 + 3,
ua1arn 21:85a0f94a84cd 124 #else
ua1arn 21:85a0f94a84cd 125 INTERFACE_AUDIO_CONTROL_0, /* AUDIO control interface */
ua1arn 21:85a0f94a84cd 126 INTERFACE_AUDIO_SPK_1, /* USB Speaker Standard AS Interface Descriptor - Audio Streaming Zero Bandwith */
ua1arn 21:85a0f94a84cd 127 INTERFACE_AUDIO_MIKE_2, /* USB Microphone Standard AS Interface Descriptor (Alt. Set. 0) (CODE == 3)*/ //zero-bandwidth interface
ua1arn 21:85a0f94a84cd 128 //INTERFACE_AUDIO_last = INTERFACE_AUDIO_CONTROL_0 + 2,
ua1arn 21:85a0f94a84cd 129 #endif
ua1arn 21:85a0f94a84cd 130 };
ua1arn 21:85a0f94a84cd 131 #endif /* WITHUSBUAC */
ua1arn 21:85a0f94a84cd 132 #if WITHUSBCDC
ua1arn 21:85a0f94a84cd 133 enum
ua1arn 21:85a0f94a84cd 134 {
ua1arn 21:85a0f94a84cd 135 INTERFACE_CDC_base,
ua1arn 21:85a0f94a84cd 136 INTERFACE_CDC_CONTROL_3a = INTERFACE_CDC_base, /* CDC ACM control Interface */
ua1arn 21:85a0f94a84cd 137 INTERFACE_CDC_DATA_4a, /* CDC ACM data Interface */
ua1arn 21:85a0f94a84cd 138 INTERFACE_CDC_CONTROL_3b, /* CDC ACM control Interface */
ua1arn 21:85a0f94a84cd 139 INTERFACE_CDC_DATA_4b, /* CDC ACM data Interface */
ua1arn 21:85a0f94a84cd 140 INTERFACE_CDC_last = INTERFACE_CDC_base + WITHUSBHWCDC_N * 2 - 1,
ua1arn 21:85a0f94a84cd 141 };
ua1arn 21:85a0f94a84cd 142 #endif /* WITHUSBCDC */
ua1arn 21:85a0f94a84cd 143 #if WITHUSBCDCEEM
ua1arn 21:85a0f94a84cd 144 enum
ua1arn 21:85a0f94a84cd 145 {
ua1arn 21:85a0f94a84cd 146
ua1arn 21:85a0f94a84cd 147 INTERFACE_CDCEEM_DATA_6, /* CDC ECM/CDC EEM data Interface */
ua1arn 21:85a0f94a84cd 148 };
ua1arn 21:85a0f94a84cd 149 #endif /* WITHUSBCDCEEM */
ua1arn 21:85a0f94a84cd 150 #if WITHUSBCDCECM
ua1arn 21:85a0f94a84cd 151 enum
ua1arn 21:85a0f94a84cd 152 {
ua1arn 21:85a0f94a84cd 153 INTERFACE_CDCECM_CONTROL_5, /* CDC ECM control Interface */
ua1arn 21:85a0f94a84cd 154 INTERFACE_CDCECM_DATA_6, /* CDC ECM/CDC EEM data Interface */
ua1arn 21:85a0f94a84cd 155 };
ua1arn 21:85a0f94a84cd 156 #endif /* WITHUSBCDCECM */
ua1arn 21:85a0f94a84cd 157 #if WITHUSBHID
ua1arn 21:85a0f94a84cd 158 enum
ua1arn 21:85a0f94a84cd 159 {
ua1arn 21:85a0f94a84cd 160 INTERFACE_HID_CONTROL_7, /* HID control Interface */
ua1arn 21:85a0f94a84cd 161 //
ua1arn 21:85a0f94a84cd 162 };
ua1arn 21:85a0f94a84cd 163 #endif /* WITHUSBHID */
ua1arn 21:85a0f94a84cd 164
ua1arn 21:85a0f94a84cd 165
ua1arn 21:85a0f94a84cd 166 #define INTERFACE_CDCACM_count 2 /* количество интерфейсов в одном CDC */
ua1arn 21:85a0f94a84cd 167 #define INTERFACE_CDCEEM_count 1 /* количество интерфейсов в одном CDC EEM */
ua1arn 21:85a0f94a84cd 168 #define INTERFACE_CDCECM_count 2 /* количество интерфейсов в одном CDC ECM */
ua1arn 21:85a0f94a84cd 169 #define INTERFACE_HID_count 1 /* количество интерфейсов в одном HID */
ua1arn 21:85a0f94a84cd 170 #define INTERFACE_RNDIS_count 2 /* количество интерфейсов в одном RNDIS */
ua1arn 21:85a0f94a84cd 171
ua1arn 21:85a0f94a84cd 172 enum
ua1arn 21:85a0f94a84cd 173 {
ua1arn 21:85a0f94a84cd 174 UNUSED_cfgidx = 0,
ua1arn 21:85a0f94a84cd 175 //
ua1arn 21:85a0f94a84cd 176 RNDIS_cfgidx,
ua1arn 21:85a0f94a84cd 177 CDCECM_cfgidx,
ua1arn 21:85a0f94a84cd 178 //
ua1arn 21:85a0f94a84cd 179 UNUSED2_cfgidx
ua1arn 21:85a0f94a84cd 180 };
ua1arn 21:85a0f94a84cd 181
ua1arn 21:85a0f94a84cd 182 #endif /* WITHPLAINDESCROPTOR */
ua1arn 21:85a0f94a84cd 183
ua1arn 21:85a0f94a84cd 184 //#define INTERFACE_UAC_count (INTERFACE_AUDIO_last - INTERFACE_AUDIO_CONTROL_0)
ua1arn 21:85a0f94a84cd 185
ua1arn 21:85a0f94a84cd 186 // STM32F429:
ua1arn 21:85a0f94a84cd 187 // valid EPs: dcp, 0x01/0x81, 0x02/0x82, 0x03/0x83
ua1arn 21:85a0f94a84cd 188 // STM32F446, STM32F746:
ua1arn 21:85a0f94a84cd 189 // valid EPs: dcp, 0x01/0x81, 0x02/0x82, 0x03/0x83, 0x04/0x84, 0x05/0x85
ua1arn 21:85a0f94a84cd 190
ua1arn 21:85a0f94a84cd 191
ua1arn 21:85a0f94a84cd 192 #if WITHUSBUAC
ua1arn 21:85a0f94a84cd 193 #if WITHUSBUAC3
ua1arn 21:85a0f94a84cd 194
ua1arn 21:85a0f94a84cd 195 #define WITHUSBHWCDC_N 2 // количество виртуальных последовательных портов
ua1arn 21:85a0f94a84cd 196
ua1arn 21:85a0f94a84cd 197 #else /* WITHUSBUAC3 */
ua1arn 21:85a0f94a84cd 198
ua1arn 21:85a0f94a84cd 199 #define WITHUSBHWCDC_N 2 // количество виртуальных последовательных портов
ua1arn 21:85a0f94a84cd 200
ua1arn 21:85a0f94a84cd 201 #endif /* WITHUSBUAC3 */
ua1arn 21:85a0f94a84cd 202 #endif /* WITHUSBUAC */
ua1arn 21:85a0f94a84cd 203
ua1arn 21:85a0f94a84cd 204 #if ! defined (WITHUSBHWCDC_N)
ua1arn 21:85a0f94a84cd 205 #define WITHUSBHWCDC_N 2 // количество виртуальных последовательных портов
ua1arn 21:85a0f94a84cd 206 #endif /* ! defined (WITHUSBHWCDC_N) */
ua1arn 21:85a0f94a84cd 207
ua1arn 21:85a0f94a84cd 208
ua1arn 21:85a0f94a84cd 209 // IN and INT Endpoints allocation
ua1arn 21:85a0f94a84cd 210 enum
ua1arn 21:85a0f94a84cd 211 {
ua1arn 21:85a0f94a84cd 212 ep0inxxx = 0x80,
ua1arn 21:85a0f94a84cd 213
ua1arn 21:85a0f94a84cd 214 #if WITHUSBRNDIS
ua1arn 21:85a0f94a84cd 215 RNDIS_NOTIFICATION_IN_EP,
ua1arn 21:85a0f94a84cd 216 RNDIS_DATA_IN_EP,
ua1arn 21:85a0f94a84cd 217 #endif /* WITHUSBRNDIS */
ua1arn 21:85a0f94a84cd 218
ua1arn 21:85a0f94a84cd 219 #if WITHUSBUAC
ua1arn 21:85a0f94a84cd 220 #if WITHUSBUAC3
ua1arn 21:85a0f94a84cd 221 USBD_EP_AUDIO_IN, // ISOC IN Аудиоданные в компьютер из TRX
ua1arn 21:85a0f94a84cd 222 USBD_EP_RTS_IN, // ISOC IN Аудиоданные в компьютер из TRX
ua1arn 21:85a0f94a84cd 223 #else
ua1arn 21:85a0f94a84cd 224 USBD_EP_AUDIO_IN, // ISOC IN Аудиоданные в компьютер из TRX
ua1arn 21:85a0f94a84cd 225 #endif
ua1arn 21:85a0f94a84cd 226 #endif /* WITHUSBUAC */
ua1arn 21:85a0f94a84cd 227
ua1arn 21:85a0f94a84cd 228 #if WITHUSBCDC
ua1arn 21:85a0f94a84cd 229 USBD_EP_CDC_IN, // CDC IN Данные ком-порта в компьютер из TRX
ua1arn 21:85a0f94a84cd 230 USBD_EP_CDC_INb, // CDC IN Данные ком-порта в компьютер из TRX
ua1arn 21:85a0f94a84cd 231 USBD_EP_CDC_INlast = USBD_EP_CDC_IN + WITHUSBHWCDC_N - 1,
ua1arn 21:85a0f94a84cd 232
ua1arn 21:85a0f94a84cd 233 USBD_EP_CDC_INT, // CDC INT События ком-порта в компьютер из TRX
ua1arn 21:85a0f94a84cd 234 USBD_EP_CDC_INTb, // CDC INT События ком-порта в компьютер из TRX
ua1arn 21:85a0f94a84cd 235 USBD_EP_CDC_INTlast = USBD_EP_CDC_INT + WITHUSBHWCDC_N - 1,
ua1arn 21:85a0f94a84cd 236 #endif /* WITHUSBCDC */
ua1arn 21:85a0f94a84cd 237
ua1arn 21:85a0f94a84cd 238 #if WITHUSBCDCEEM
ua1arn 21:85a0f94a84cd 239 USBD_EP_CDCEEM_IN, // CDC IN Данные ком-порта в компьютер из TRX
ua1arn 21:85a0f94a84cd 240 #endif /* WITHUSBCDCEEM */
ua1arn 21:85a0f94a84cd 241
ua1arn 21:85a0f94a84cd 242 #if WITHUSBCDCECM
ua1arn 21:85a0f94a84cd 243 USBD_EP_CDCECM_IN, // CDC IN Данные ком-порта в компьютер из TRX
ua1arn 21:85a0f94a84cd 244 USBD_EP_CDCECM_INT, // CDC INT События ком-порта в компьютер из TRX
ua1arn 21:85a0f94a84cd 245 #endif /* WITHUSBCDCECM */
ua1arn 21:85a0f94a84cd 246
ua1arn 21:85a0f94a84cd 247 #if WITHUSBHID
ua1arn 21:85a0f94a84cd 248 //USBD_EP_HIDMOUSE_INT, // HID INT События манипулятора в компьютер из TRX
ua1arn 21:85a0f94a84cd 249 #endif /* WITHUSBHID */
ua1arn 21:85a0f94a84cd 250
ua1arn 21:85a0f94a84cd 251 //
ua1arn 21:85a0f94a84cd 252 epincount
ua1arn 21:85a0f94a84cd 253 };
ua1arn 21:85a0f94a84cd 254
ua1arn 21:85a0f94a84cd 255 // OUT Endpoints allocation
ua1arn 21:85a0f94a84cd 256 enum
ua1arn 21:85a0f94a84cd 257 {
ua1arn 21:85a0f94a84cd 258 ep0outxxx = 0x00,
ua1arn 21:85a0f94a84cd 259
ua1arn 21:85a0f94a84cd 260 #if WITHUSBRNDIS
ua1arn 21:85a0f94a84cd 261 RNDIS_DATA_OUT_EP,
ua1arn 21:85a0f94a84cd 262 #endif /* WITHUSBRNDIS */
ua1arn 21:85a0f94a84cd 263
ua1arn 21:85a0f94a84cd 264 #if WITHUSBUAC
ua1arn 21:85a0f94a84cd 265 #if WITHUSBUAC3
ua1arn 21:85a0f94a84cd 266 USBD_EP_AUDIO_OUT,
ua1arn 21:85a0f94a84cd 267 #else
ua1arn 21:85a0f94a84cd 268 USBD_EP_AUDIO_OUT, // ISOC OUT Аудиоданные от компьютера в TRX
ua1arn 21:85a0f94a84cd 269 #endif
ua1arn 21:85a0f94a84cd 270 #endif /* WITHUSBUAC */
ua1arn 21:85a0f94a84cd 271
ua1arn 21:85a0f94a84cd 272 #if WITHUSBCDC
ua1arn 21:85a0f94a84cd 273 USBD_EP_CDC_OUT, // CDC OUT Данные ком-порта от компьютера в TRX
ua1arn 21:85a0f94a84cd 274 USBD_EP_CDC_OUTb, // CDC OUT Данные ком-порта от компьютера в TRX
ua1arn 21:85a0f94a84cd 275 USBD_EP_CDC_OUTlast = USBD_EP_CDC_OUT + WITHUSBHWCDC_N - 1,
ua1arn 21:85a0f94a84cd 276 #endif /* WITHUSBCDC */
ua1arn 21:85a0f94a84cd 277
ua1arn 21:85a0f94a84cd 278 #if WITHUSBCDCEEM
ua1arn 21:85a0f94a84cd 279 USBD_EP_CDCEEM_OUT, // CDC OUT Данные ком-порта от компьютера в TRX
ua1arn 21:85a0f94a84cd 280 #endif /* WITHUSBCDCEEM */
ua1arn 21:85a0f94a84cd 281
ua1arn 21:85a0f94a84cd 282 #if WITHUSBCDCECM
ua1arn 21:85a0f94a84cd 283 USBD_EP_CDCECM_OUT, // CDC OUT Данные ком-порта от компьютера в TRX
ua1arn 21:85a0f94a84cd 284 #endif /* WITHUSBCDCECM */
ua1arn 21:85a0f94a84cd 285
ua1arn 21:85a0f94a84cd 286 #if WITHUSBHID
ua1arn 21:85a0f94a84cd 287 #endif /* WITHUSBHID */
ua1arn 21:85a0f94a84cd 288 //
ua1arn 21:85a0f94a84cd 289 epoutcount
ua1arn 21:85a0f94a84cd 290 };
ua1arn 21:85a0f94a84cd 291
ua1arn 21:85a0f94a84cd 292 //#if WITHUSBCDC
ua1arn 21:85a0f94a84cd 293 #define VIRTUAL_COM_PORT_INT_SIZE 10
ua1arn 21:85a0f94a84cd 294 #define VIRTUAL_COM_PORT_DATA_SIZE 64
ua1arn 21:85a0f94a84cd 295 //#endif /* WITHUSBCDC */
ua1arn 21:85a0f94a84cd 296
ua1arn 21:85a0f94a84cd 297 //#if WITHUSBHID
ua1arn 21:85a0f94a84cd 298 #define HIDMOUSE_INT_DATA_SIZE 4
ua1arn 21:85a0f94a84cd 299 //#endif /* WITHUSBHID */
ua1arn 21:85a0f94a84cd 300
ua1arn 21:85a0f94a84cd 301 //#if WITHUSBCDCEEM
ua1arn 21:85a0f94a84cd 302 #define USBD_CDCEEM_BUFSIZE 64
ua1arn 21:85a0f94a84cd 303 //#endif /* WITHUSBCDCEEM */
ua1arn 21:85a0f94a84cd 304
ua1arn 21:85a0f94a84cd 305 //#if WITHUSBCDCECM
ua1arn 21:85a0f94a84cd 306 #define CDCECM_NOTIFICATION_IN_SZ 16
ua1arn 21:85a0f94a84cd 307 #define CDCECM_DATA_IN_SZ 64
ua1arn 21:85a0f94a84cd 308 #define CDCECM_DATA_OUT_SZ 64
ua1arn 21:85a0f94a84cd 309 //#endif /* WITHUSBCDCECM */
ua1arn 21:85a0f94a84cd 310
ua1arn 21:85a0f94a84cd 311 //#if WITHUSBRNDIS
ua1arn 21:85a0f94a84cd 312 #define RNDIS_NOTIFICATION_IN_SZ 8
ua1arn 21:85a0f94a84cd 313 #define RNDIS_DATA_IN_SZ 64
ua1arn 21:85a0f94a84cd 314 #define RNDIS_DATA_OUT_SZ 64
ua1arn 21:85a0f94a84cd 315 //#endif /* WITHUSBRNDIS */
ua1arn 21:85a0f94a84cd 316
ua1arn 21:85a0f94a84cd 317 #define HSINTERVAL_AUDIO48 4 // endpoint descriptor parameters - для обеспечсения 1 кГц периода
ua1arn 21:85a0f94a84cd 318 #define FSINTERVAL_AUDIO48 1
ua1arn 21:85a0f94a84cd 319
ua1arn 21:85a0f94a84cd 320 #define HSINTERVAL_32MS 9 // endpoint descriptor parameters - для обеспечсения 1 кГц периода
ua1arn 21:85a0f94a84cd 321 #define FSINTERVAL_32MS 32
ua1arn 21:85a0f94a84cd 322
ua1arn 21:85a0f94a84cd 323 struct descholder
ua1arn 21:85a0f94a84cd 324 {
ua1arn 21:85a0f94a84cd 325 const uint8_t * data;
ua1arn 21:85a0f94a84cd 326 unsigned size;
ua1arn 21:85a0f94a84cd 327 };
ua1arn 21:85a0f94a84cd 328
ua1arn 21:85a0f94a84cd 329 #define USBD_NCONFIGS 4
ua1arn 21:85a0f94a84cd 330
ua1arn 21:85a0f94a84cd 331 extern struct descholder StringDescrTbl [];
ua1arn 21:85a0f94a84cd 332 extern struct descholder ConfigDescrTbl [USBD_NCONFIGS];
ua1arn 21:85a0f94a84cd 333 extern struct descholder DeviceDescrTbl [USBD_NCONFIGS];
ua1arn 21:85a0f94a84cd 334 extern struct descholder DeviceQualifierTbl [USBD_NCONFIGS];
ua1arn 21:85a0f94a84cd 335 extern struct descholder OtherSpeedConfigurationTbl [USBD_NCONFIGS];
ua1arn 21:85a0f94a84cd 336 extern struct descholder BinaryDeviceObjectStoreTbl [1];
ua1arn 21:85a0f94a84cd 337 extern struct descholder HIDReportDescrTbl [1];
ua1arn 21:85a0f94a84cd 338
ua1arn 21:85a0f94a84cd 339 uint_fast8_t usbd_get_stringsdesc_count(void);
ua1arn 21:85a0f94a84cd 340
ua1arn 21:85a0f94a84cd 341 void usbd_descriptors_initialize(uint_fast8_t HSdesc);
ua1arn 21:85a0f94a84cd 342
ua1arn 21:85a0f94a84cd 343 #define HI_32BY(w) (((w) >> 24) & 0xFF) /* Extract 31..24 bits from unsigned word */
ua1arn 21:85a0f94a84cd 344 #define HI_24BY(w) (((w) >> 16) & 0xFF) /* Extract 23..16 bits from unsigned word */
ua1arn 21:85a0f94a84cd 345 #define HI_BYTE(w) (((w) >> 8) & 0xFF) /* Extract high-order byte from unsigned word */
ua1arn 21:85a0f94a84cd 346 #define LO_BYTE(w) ((w) & 0xFF) /* Extract low-order byte from unsigned word */
ua1arn 21:85a0f94a84cd 347
ua1arn 21:85a0f94a84cd 348 #define ARRAY_SIZE(a) (sizeof(a)/sizeof(a[0]))
ua1arn 21:85a0f94a84cd 349 /* bMaxPower in Configuration Descriptor */
ua1arn 21:85a0f94a84cd 350 #define USB_CONFIG_POWER_MA(mA) ((mA)/2)
ua1arn 21:85a0f94a84cd 351
ua1arn 21:85a0f94a84cd 352
ua1arn 21:85a0f94a84cd 353 #include <inttypes.h> // format specifiers for printing
ua1arn 21:85a0f94a84cd 354
ua1arn 21:85a0f94a84cd 355
ua1arn 21:85a0f94a84cd 356 #define FLASHMEM /* */
ua1arn 21:85a0f94a84cd 357
ua1arn 21:85a0f94a84cd 358 uint_fast8_t local_snprintf_P( char *buffer, uint_fast8_t count, const FLASHMEM char *format, ... );
ua1arn 21:85a0f94a84cd 359
ua1arn 21:85a0f94a84cd 360
ua1arn 21:85a0f94a84cd 361 void arm_hardware_invalidate(uintptr_t base, size_t size); // Сейчас в эту память будем читать по DMA
ua1arn 21:85a0f94a84cd 362 void arm_hardware_flush(uintptr_t base, size_t size); // Сейчас эта память будет записываться по DMA куда-то
ua1arn 21:85a0f94a84cd 363 void arm_hardware_flush_invalidate(uintptr_t base, size_t size); // Сейчас эта память будет записываться по DMA куда-то. Потом содержимое не требуется
ua1arn 21:85a0f94a84cd 364 void arm_hardware_flush_all(void);
ua1arn 21:85a0f94a84cd 365
ua1arn 21:85a0f94a84cd 366
ua1arn 21:85a0f94a84cd 367
ua1arn 21:85a0f94a84cd 368 #define PSTR(s) (__extension__({static const char __c[] FLASHMEM = (s); &__c[0];}))
ua1arn 21:85a0f94a84cd 369
ua1arn 21:85a0f94a84cd 370 #if WITHDEBUG
ua1arn 21:85a0f94a84cd 371 #define TP() \
ua1arn 21:85a0f94a84cd 372 do { \
ua1arn 21:85a0f94a84cd 373 static const char this_file [] = __FILE__; \
ua1arn 21:85a0f94a84cd 374 printf(PSTR("At %d in %s.\n"), __LINE__, this_file); \
ua1arn 21:85a0f94a84cd 375 } while(0)
ua1arn 21:85a0f94a84cd 376 #else /* WITHDEBUG */
ua1arn 21:85a0f94a84cd 377 #define TP() do { } while(0)
ua1arn 21:85a0f94a84cd 378 #endif /* WITHDEBUG */
ua1arn 21:85a0f94a84cd 379
ua1arn 21:85a0f94a84cd 380 #if WITHDEBUG
ua1arn 21:85a0f94a84cd 381
ua1arn 21:85a0f94a84cd 382 #define ASSERT(v) do { if ((v) == 0) { \
ua1arn 21:85a0f94a84cd 383 printf(PSTR("%s(%d): Assert '%s'\n"), __FILE__, __LINE__, (# v)); \
ua1arn 21:85a0f94a84cd 384 for (;;) ; \
ua1arn 21:85a0f94a84cd 385 } } while (0)
ua1arn 21:85a0f94a84cd 386
ua1arn 21:85a0f94a84cd 387 #define VERIFY(v) do { if ((v) == 0) { \
ua1arn 21:85a0f94a84cd 388 printf(PSTR("%s(%d): Verify '%s'\n"), __FILE__, __LINE__, (# v)); \
ua1arn 21:85a0f94a84cd 389 for (;;) ; \
ua1arn 21:85a0f94a84cd 390 } } while (0)
ua1arn 21:85a0f94a84cd 391
ua1arn 21:85a0f94a84cd 392 #define TRACE0(f) printf( PSTR(f))
ua1arn 21:85a0f94a84cd 393 #define TRACE1(f,a1) printf( PSTR(f),(a1))
ua1arn 21:85a0f94a84cd 394 #define TRACE2(f,a1,a2) printf( PSTR(f),(a1),(a2))
ua1arn 21:85a0f94a84cd 395 #define TRACE3(f,a1,a2,a3) printf( PSTR(f),(a1),(a2),(a3))
ua1arn 21:85a0f94a84cd 396 #define TRACE4(f,a1,a2,a3,a4) printf( PSTR(f),(a1),(a2),(a3),(a4))
ua1arn 21:85a0f94a84cd 397 #define TRACE5(f,a1,a2,a3,a4,a5) printf( PSTR(f),(a1),(a2),(a3),(a4),(a5))
ua1arn 21:85a0f94a84cd 398
ua1arn 21:85a0f94a84cd 399 #else /* WITHDEBUG */
ua1arn 21:85a0f94a84cd 400
ua1arn 21:85a0f94a84cd 401 #define ASSERT(v) ((void) (0))
ua1arn 21:85a0f94a84cd 402 #define VERIFY(v) ((void) (v))
ua1arn 21:85a0f94a84cd 403
ua1arn 21:85a0f94a84cd 404 #define TRACE0(f) do {} while (0)
ua1arn 21:85a0f94a84cd 405 #define TRACE1(f,a1) do {} while (0)
ua1arn 21:85a0f94a84cd 406 #define TRACE2(f,a1,a2) do {} while (0)
ua1arn 21:85a0f94a84cd 407 #define TRACE3(f,a1,a2,a3) do {} while (0)
ua1arn 21:85a0f94a84cd 408 #define TRACE4(f,a1,a2,a3,a4) do {} while (0)
ua1arn 21:85a0f94a84cd 409 #define TRACE5(f,a1,a2,a3,a4,a5) do {} while (0)
ua1arn 21:85a0f94a84cd 410
ua1arn 21:85a0f94a84cd 411 #endif /* WITHDEBUG */
ua1arn 21:85a0f94a84cd 412
ua1arn 21:85a0f94a84cd 413 /* NIC-to-LwIP buffers interface functions.
ua1arn 21:85a0f94a84cd 414 * Should be called in IRQ handler request or in disabled IRQ state.
ua1arn 21:85a0f94a84cd 415 * */
ua1arn 21:85a0f94a84cd 416 unsigned comm_allocbuffer(uint8_t * * bp);
ua1arn 21:85a0f94a84cd 417 void comm_freebuffer(uint8_t * p);
ua1arn 21:85a0f94a84cd 418 void comm_saverxbuffer(uint8_t * p, unsigned len);
ua1arn 21:85a0f94a84cd 419
ua1arn 21:85a0f94a84cd 420 #define PRINTF printf
ua1arn 21:85a0f94a84cd 421
ua1arn 21:85a0f94a84cd 422 #endif /* APPLICATION_USER_RLNDIS_USBD_DESC2_H */