Improvements to the Serial over USB driver.
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@2810 35acf78f-673a-0410-8e92-d51de3d6d3f4master
parent
6b1c74271c
commit
ebaac50aa4
|
@ -90,18 +90,6 @@ typedef struct {
|
|||
* @brief USB driver configuration structure.
|
||||
*/
|
||||
USBConfig usb_config;
|
||||
/*
|
||||
* @brief Endpoint used for data transmission.
|
||||
*/
|
||||
usbep_t data_request_ep;
|
||||
/*
|
||||
* @brief Endpoint used for data reception.
|
||||
*/
|
||||
usbep_t data_available_ep;
|
||||
/*
|
||||
* @brief Endpoint used for interrupt request.
|
||||
*/
|
||||
usbep_t interrupt_request_ep;
|
||||
} SerialUSBConfig;
|
||||
|
||||
/**
|
||||
|
|
|
@ -119,7 +119,7 @@ static void inotify(GenericQueue *qp) {
|
|||
emptied, then a whole packet is loaded in the queue.*/
|
||||
if (chIQIsEmptyI(&sdup->iqueue)) {
|
||||
|
||||
n = usbReadPacketI(sdup->config->usbp, sdup->config->data_available_ep,
|
||||
n = usbReadPacketI(sdup->config->usbp, DATA_AVAILABLE_EP,
|
||||
sdup->iqueue.q_buffer, SERIAL_USB_BUFFERS_SIZE);
|
||||
if (n != USB_ENDPOINT_BUSY) {
|
||||
sdup->iqueue.q_rdptr = sdup->iqueue.q_buffer;
|
||||
|
@ -138,7 +138,7 @@ static void onotify(GenericQueue *qp) {
|
|||
|
||||
/* If there is any data in the output queue then it is sent within a
|
||||
single packet and the queue is emptied.*/
|
||||
n = usbWritePacketI(sdup->config->usbp, sdup->config->data_request_ep,
|
||||
n = usbWritePacketI(sdup->config->usbp, DATA_REQUEST_EP,
|
||||
sdup->oqueue.q_buffer, chOQGetFullI(&sdup->oqueue));
|
||||
if (n != USB_ENDPOINT_BUSY) {
|
||||
sdup->oqueue.q_wrptr = sdup->oqueue.q_buffer;
|
||||
|
|
|
@ -28,6 +28,10 @@
|
|||
#ifndef _USB_CDC_H_
|
||||
#define _USB_CDC_H_
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver constants. */
|
||||
/*===========================================================================*/
|
||||
|
||||
#define CDC_SEND_ENCAPSULATED_COMMAND 0x00
|
||||
#define CDC_GET_ENCAPSULATED_RESPONSE 0x01
|
||||
#define CDC_SET_COMM_FEATURE 0x02
|
||||
|
@ -48,16 +52,6 @@
|
|||
#define CDC_SET_OPERATION_PARMS 0x32
|
||||
#define CDC_GET_OPERATION_PARMS 0x33
|
||||
|
||||
/**
|
||||
* @brief Type of Line Coding structure.
|
||||
*/
|
||||
typedef struct {
|
||||
uint8_t dwDTERate[4];
|
||||
uint8_t bCharFormat;
|
||||
uint8_t bParityType;
|
||||
uint8_t bDataBits;
|
||||
} cdc_linecoding_t;
|
||||
|
||||
#define LC_STOP_1 0
|
||||
#define LC_STOP_1P5 1
|
||||
#define LC_STOP_2 2
|
||||
|
@ -68,6 +62,57 @@ typedef struct {
|
|||
#define LC_PARITY_MARK 3
|
||||
#define LC_PARITY_SPACE 4
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver pre-compile time settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Endpoint number for bulk IN.
|
||||
*/
|
||||
#if !defined(DATA_REQUEST_EP) || defined(__DOXYGEN__)
|
||||
#define DATA_REQUEST_EP 1
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Endpoint number for interrupt IN.
|
||||
*/
|
||||
#if !defined(INTERRUPT_REQUEST_EP) || defined(__DOXYGEN__)
|
||||
#define INTERRUPT_REQUEST_EP 2
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Endpoint number for bulk OUT.
|
||||
*/
|
||||
#if !defined(DATA_AVAILABLE_EP) || defined(__DOXYGEN__)
|
||||
#define DATA_AVAILABLE_EP 3
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Derived constants and error checks. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver data structures and types. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Type of Line Coding structure.
|
||||
*/
|
||||
typedef struct {
|
||||
uint8_t dwDTERate[4];
|
||||
uint8_t bCharFormat;
|
||||
uint8_t bParityType;
|
||||
uint8_t bDataBits;
|
||||
} cdc_linecoding_t;
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver macros. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* External declarations. */
|
||||
/*===========================================================================*/
|
||||
|
||||
#endif /* _USB_CDC_H_ */
|
||||
|
||||
/** @} */
|
||||
|
|
|
@ -71,6 +71,7 @@
|
|||
*****************************************************************************
|
||||
|
||||
*** 2.3.1 ***
|
||||
- OPT: Simplified Serial over USB driver configuration.
|
||||
- CHANGE: Removed all the prefixes from the structure/union field names
|
||||
in the HAL subsystem.
|
||||
|
||||
|
|
|
@ -21,14 +21,12 @@
|
|||
#include "hal.h"
|
||||
#include "test.h"
|
||||
|
||||
#include "usb_cdc.h"
|
||||
|
||||
/*===========================================================================*/
|
||||
/* USB related stuff. */
|
||||
/*===========================================================================*/
|
||||
|
||||
#define DATA_REQUEST_EP 1
|
||||
#define INTERRUPT_REQUEST_EP 2
|
||||
#define DATA_AVAILABLE_EP 3
|
||||
|
||||
/*
|
||||
* USB Driver structure.
|
||||
*/
|
||||
|
@ -300,10 +298,7 @@ static const SerialUSBConfig serusbcfg = {
|
|||
get_descriptor,
|
||||
sduRequestsHook,
|
||||
NULL
|
||||
},
|
||||
DATA_REQUEST_EP,
|
||||
DATA_AVAILABLE_EP,
|
||||
INTERRUPT_REQUEST_EP
|
||||
}
|
||||
};
|
||||
|
||||
/*===========================================================================*/
|
||||
|
|
Loading…
Reference in New Issue