Subversion Repositories chibiosIgnition

Rev

Rev 18 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 18 Rev 19
Line 19... Line 19...
19
 
19
 
20
 
20
 
21
/* Virtual serial port over USB.*/
21
/* Virtual serial port over USB.*/
22
SerialUSBDriver SDU1;
22
SerialUSBDriver SDU1;
23
 
23
 
24
#if HAL_USE_SERIAL_USB  == TRUE
24
#if HAL_USE_USB_DUAL_CDC == TRUE
25
SerialUSBDriver SDU2;
25
SerialUSBDriver SDU2;
26
#endif
26
#endif
27
 
27
 
28
 
28
 
-
 
29
 
-
 
30
#if  HAL_USE_USB_DUAL_CDC==TRUE
-
 
31
#define USB_EP_BULK_DATASIZE 0x0020
-
 
32
#define USB_EP_INTR_DATASIZE 0x0010
-
 
33
#define USB_MAX_PACKETSIZE 0x0008
-
 
34
#else
-
 
35
#define USB_EP_BULK_DATASIZE 0x0040
-
 
36
#define USB_EP_INTR_DATASIZE 0x0010
-
 
37
#define USB_MAX_PACKETSIZE 0x0040
-
 
38
#endif
-
 
39
 
-
 
40
 
29
/*
41
/*
30
 * Endpoints to be used for USBD1/SDU1.
42
 * Endpoints to be used for USBD1/SDU1.
31
 */
43
 */
32
#define USBD1_DATA_REQUEST_EP           1
44
#define USBD1_DATA_REQUEST_EP           1
33
#define USBD1_DATA_AVAILABLE_EP         1
45
#define USBD1_DATA_AVAILABLE_EP         1
Line 47... Line 59...
47
static const uint8_t vcom_device_descriptor_data[18] = {
59
static const uint8_t vcom_device_descriptor_data[18] = {
48
  USB_DESC_DEVICE       (0x0110,        /* bcdUSB (1.1).                    */
60
  USB_DESC_DEVICE       (0x0110,        /* bcdUSB (1.1).                    */
49
                         0x02,          /* bDeviceClass (CDC).              */
61
                         0x02,          /* bDeviceClass (CDC).              */
50
                         0x00,          /* bDeviceSubClass.                 */
62
                         0x00,          /* bDeviceSubClass.                 */
51
                         0x00,          /* bDeviceProtocol.                 */
63
                         0x00,          /* bDeviceProtocol.                 */
52
                         0x40,          /* bMaxPacketSize.                  */
64
                         USB_MAX_PACKETSIZE,          /* bMaxPacketSize.                  */
53
                         0x0483,        /* idVendor (ST).                   */
65
                         0x0483,        /* idVendor (ST).                   */
54
                         0x5740,        /* idProduct.                       */
66
                         0x5740,        /* idProduct.                       */
55
                         0x0200,        /* bcdDevice.                       */
67
                         0x0200,        /* bcdDevice.                       */
56
                         1,             /* iManufacturer.                   */
68
                         1,             /* iManufacturer.                   */
57
                         2,             /* iProduct.                        */
69
                         2,             /* iProduct.                        */
58
                         3,             /* iSerialNumber. */
70
                         4,             /* iSerialNumber. */
59
                         1)             /* bNumConfigurations.              */
71
                         1)             /* bNumConfigurations.              */
60
};
72
};
61
 
73
 
62
/*
74
/*
63
 * Device Descriptor wrapper.
75
 * Device Descriptor wrapper.
Line 66... Line 78...
66
  sizeof vcom_device_descriptor_data,
78
  sizeof vcom_device_descriptor_data,
67
  vcom_device_descriptor_data
79
  vcom_device_descriptor_data
68
};
80
};
69
 
81
 
70
 
82
 
-
 
83
 
-
 
84
 
-
 
85
 
71
/* Configuration Descriptor tree for a CDC.*/
86
/* Configuration Descriptor tree for a CDC.*/
72
 
87
 
73
static const uint8_t vcom_configuration_descriptor_data[] = {
88
static const uint8_t vcom_configuration_descriptor_data[] = {
74
  /* Configuration Descriptor.*/
89
  /* Configuration Descriptor.*/
75
#if HAL_USE_USB_DUAL_CDC == FALSE
90
#if HAL_USE_USB_DUAL_CDC == FALSE
76
                                 /* the header is 9 bytes long, total has 2 EPs in use = 67 bytes */
91
                                 /* the header is 9 bytes long, total has 2 EPs in use = 67 bytes */
77
  USB_DESC_CONFIGURATION(67,            /* wTotalLength.                    */
92
  USB_DESC_CONFIGURATION(67,            /* wTotalLength.                    */
78
                         0x02,          /* bNumInterfaces.                  */
93
                         0x02,          /* bNumInterfaces.                  */
79
                         0x01,          /* bConfigurationValue.             */
94
                         0x01,          /* bConfigurationValue.             */
80
                         0,             /* iConfiguration.                  */
95
                         0,             /* iConfiguration.                  */
81
                         0xC0,          /* bmAttributes (self powered).     */
96
                         0x80,          /* bmAttributes (bus  powered).     */
82
                         50),           /* bMaxPower (100mA).               */
97
                         50),           /* bMaxPower (100mA).               */
83
#else
98
#else
84
                                                 /* the header is 9 bytes long, total has 4 EP in use = 67 * 2 -9 bytes */
99
                                                 /* the header is 9 bytes long, total has 4 EP in use = 67 * 2 -9 bytes */
85
  USB_DESC_CONFIGURATION(125,           /* wTotalLength.                    */
100
  USB_DESC_CONFIGURATION(125,           /* wTotalLength.                    */
86
                                             0x04,          /* bNumInterfaces.                  */
101
                                             0x04,          /* bNumInterfaces.                  */
87
                                                 0x01,          /* bConfigurationValue.             */
102
                                                 0x01,          /* bConfigurationValue.             */
88
                                                 0,             /* iConfiguration.                  */
103
                                                 0,             /* iConfiguration.                  */
89
                                                 0xC0,          /* bmAttributes (self powered).     */
104
                                                 0x80,          /* bmAttributes (bus powered).     */
90
                                                 50),           /* bMaxPower (100mA).               */
105
                                                 50),           /* bMaxPower (100mA).               */
91
#endif
106
#endif
92
                                                                                                 /* Interface Descriptor.*/
107
                                                                                                 /* Interface Descriptor.*/
93
  USB_DESC_INTERFACE    (0x00,          /* bInterfaceNumber.                */
108
  USB_DESC_INTERFACE    (0x00,          /* bInterfaceNumber.                */
94
                         0x00,          /* bAlternateSetting.               */
109
                         0x00,          /* bAlternateSetting.               */
Line 147... Line 162...
147
                                           4.7).                            */
162
                                           4.7).                            */
148
                         0x00),         /* iInterface.                      */
163
                         0x00),         /* iInterface.                      */
149
  /* Endpoint 3 Descriptor.*/
164
  /* Endpoint 3 Descriptor.*/
150
  USB_DESC_ENDPOINT     (USBD1_DATA_AVAILABLE_EP,       /* bEndpointAddress.*/
165
  USB_DESC_ENDPOINT     (USBD1_DATA_AVAILABLE_EP,       /* bEndpointAddress.*/
151
                         0x02,          /* bmAttributes (Bulk).             */
166
                         0x02,          /* bmAttributes (Bulk).             */
152
                         0x0040,        /* wMaxPacketSize.                  */
167
                                                 0x0040,        /* wMaxPacketSize.                  */
153
                         0x00),         /* bInterval.                       */
168
                         0x00),         /* bInterval.                       */
154
  /* Endpoint 1 Descriptor.*/
169
  /* Endpoint 1 Descriptor.*/
155
  USB_DESC_ENDPOINT     (USBD1_DATA_REQUEST_EP|0x80,    /* bEndpointAddress.*/
170
  USB_DESC_ENDPOINT     (USBD1_DATA_REQUEST_EP|0x80,    /* bEndpointAddress.*/
156
                         0x02,          /* bmAttributes (Bulk).             */
171
                         0x02,          /* bmAttributes (Bulk).             */
157
                         0x0040,        /* wMaxPacketSize.                  */
172
                         0x0040,        /* wMaxPacketSize.                  */
Line 224... Line 239...
224
                       0x02,          /* bmAttributes (Bulk).             */
239
                       0x02,          /* bmAttributes (Bulk).             */
225
                       0x0040,        /* wMaxPacketSize.                  */
240
                       0x0040,        /* wMaxPacketSize.                  */
226
                       0x00)          /* bInterval.                       */
241
                       0x00)          /* bInterval.                       */
227
#endif
242
#endif
228
};
243
};
-
 
244
 
-
 
245
 
229
/*
246
/*
230
 * Configuration Descriptor wrapper.
247
 * Configuration Descriptor wrapper.
231
 */
248
 */
232
static const USBDescriptor vcom_configuration_descriptor = {
249
static const USBDescriptor vcom_configuration_descriptor = {
233
  sizeof vcom_configuration_descriptor_data,
250
  sizeof vcom_configuration_descriptor_data,
Line 321... Line 338...
321
static USBOutEndpointState ep1outstate;
338
static USBOutEndpointState ep1outstate;
322
 
339
 
323
/**
340
/**
324
 * @brief   EP1 initialization structure (both IN and OUT).
341
 * @brief   EP1 initialization structure (both IN and OUT).
325
 */
342
 */
-
 
343
 
326
static const USBEndpointConfig ep1config = {
344
static const USBEndpointConfig ep1config = {
327
  USB_EP_MODE_TYPE_BULK,
345
  USB_EP_MODE_TYPE_BULK,
328
  NULL,
346
  NULL,
329
  sduDataTransmitted,
347
  sduDataTransmitted,
330
  sduDataReceived,
348
  sduDataReceived,
331
  0x0040,
349
  USB_EP_BULK_DATASIZE,
332
  0x0040,
350
  USB_EP_BULK_DATASIZE,
333
  &ep1instate,
351
  &ep1instate,
334
  &ep1outstate,
352
  &ep1outstate,
335
  2,
353
  2,
336
  NULL
354
  NULL
337
};
355
};
Line 347... Line 365...
347
static const USBEndpointConfig ep2config = {
365
static const USBEndpointConfig ep2config = {
348
  USB_EP_MODE_TYPE_INTR,
366
  USB_EP_MODE_TYPE_INTR,
349
  NULL,
367
  NULL,
350
  sduInterruptTransmitted,
368
  sduInterruptTransmitted,
351
  NULL,
369
  NULL,
352
  0x0010,
370
  USB_EP_INTR_DATASIZE,
353
  0x0000,
371
  0x0000,
354
  &ep2instate,
372
  &ep2instate,
355
  NULL,
373
  NULL,
356
  1,
374
  1,
357
  NULL
375
  NULL
358
};
376
};
359
 
377
 
360
 
378
 
361
#if DUAL_CDC_EP ==TRUE
379
#if  HAL_USE_USB_DUAL_CDC==TRUE
362
/**
380
/**
363
 * @brief   IN EP3 state.
381
 * @brief   IN EP3 state.
364
 */
382
 */
365
static USBInEndpointState ep3instate;
383
static USBInEndpointState ep3instate;
366
 
384
 
Line 375... Line 393...
375
static const USBEndpointConfig ep3config = {
393
static const USBEndpointConfig ep3config = {
376
  USB_EP_MODE_TYPE_BULK,
394
  USB_EP_MODE_TYPE_BULK,
377
  NULL,
395
  NULL,
378
  sduDataTransmitted,
396
  sduDataTransmitted,
379
  sduDataReceived,
397
  sduDataReceived,
380
  0x0040,
398
  USB_EP_BULK_DATASIZE,
381
  0x0040,
399
  USB_EP_BULK_DATASIZE,
382
  &ep3instate,
400
  &ep3instate,
383
  &ep3outstate,
401
  &ep3outstate,
384
  2,
402
  2,
385
  NULL
403
  NULL
386
};
404
};
Line 396... Line 414...
396
static const USBEndpointConfig ep4config = {
414
static const USBEndpointConfig ep4config = {
397
  USB_EP_MODE_TYPE_INTR,
415
  USB_EP_MODE_TYPE_INTR,
398
  NULL,
416
  NULL,
399
  sduInterruptTransmitted,
417
  sduInterruptTransmitted,
400
  NULL,
418
  NULL,
401
  0x0010,
419
  USB_EP_INTR_DATASIZE,
402
  0x0000,
420
  0x0000,
403
  &ep4instate,
421
  &ep4instate,
404
  NULL,
422
  NULL,
405
  1,
423
  1,
406
  NULL
424
  NULL
Line 423... Line 441...
423
    /* Enables the endpoints specified into the configuration.
441
    /* Enables the endpoints specified into the configuration.
424
       Note, this callback is invoked from an ISR so I-Class functions
442
       Note, this callback is invoked from an ISR so I-Class functions
425
       must be used.*/
443
       must be used.*/
426
    usbInitEndpointI(usbp, USBD1_DATA_REQUEST_EP, &ep1config);
444
    usbInitEndpointI(usbp, USBD1_DATA_REQUEST_EP, &ep1config);
427
    usbInitEndpointI(usbp, USBD1_INTERRUPT_REQUEST_EP, &ep2config);
445
    usbInitEndpointI(usbp, USBD1_INTERRUPT_REQUEST_EP, &ep2config);
428
#if DUAL_CDC_EP == TRUE
446
#if  HAL_USE_USB_DUAL_CDC == TRUE
429
    usbInitEndpointI(usbp, USBD1_DATA2_REQUEST_EP, &ep3config);
447
    usbInitEndpointI(usbp, USBD1_DATA2_REQUEST_EP, &ep3config);
430
    usbInitEndpointI(usbp, USBD1_INTERRUPT2_REQUEST_EP, &ep4config);
448
    usbInitEndpointI(usbp, USBD1_INTERRUPT2_REQUEST_EP, &ep4config);
431
#endif
449
#endif
432
    /* Resetting the state of the CDC subsystem.*/
450
    /* Resetting the state of the CDC subsystem.*/
433
    sduConfigureHookI(&SDU1);
451
    sduConfigureHookI(&SDU1);