示例#1
0
static void PIOS_USB_CDC_CTRL_EP_IN_Callback(void)
{
	struct pios_usb_cdc_dev * usb_cdc_dev = (struct pios_usb_cdc_dev *)pios_usb_cdc_id;

	bool valid = PIOS_USB_CDC_validate(usb_cdc_dev);
	PIOS_Assert(valid);

	/* Give back UART State Bitmap */
	/* UART State Bitmap
	 *   15-7: reserved
	 *      6:  bOverRun    overrun error
	 *      5:  bParity     parity error
	 *      4:  bFraming    framing error
	 *      3:  bRingSignal RI
	 *      2:  bBreak      break reception
	 *      1:  bTxCarrier  DSR
	 *      0:  bRxCarrier  DCD
	 */
	uart_state.bmUartState = htousbs(0x0003);

	UserToPMABufferCopy((uint8_t *) &uart_state,
			GetEPTxAddr(usb_cdc_dev->cfg->ctrl_tx_ep),
			sizeof(uart_state));
	SetEPTxCount(usb_cdc_dev->cfg->ctrl_tx_ep, PIOS_USB_BOARD_CDC_MGMT_LENGTH);
	SetEPTxValid(usb_cdc_dev->cfg->ctrl_tx_ep);
}
示例#2
0
    'o', 0,
    'n', 0,
    ' ', 0,
    'f', 0,
    'c', 0,
};

static uint8_t usb_serial_number[2 + PIOS_SYS_SERIAL_NUM_ASCII_LEN*2 + (sizeof(PIOS_USB_BOARD_SN_SUFFIX)-1)*2] = {
    sizeof(usb_serial_number),
    USB_DESC_TYPE_STRING,
};

static const struct usb_string_langid usb_lang_id = {
    .bLength = sizeof(usb_lang_id),
    .bDescriptorType = USB_DESC_TYPE_STRING,
    .bLangID = htousbs(USB_LANGID_ENGLISH_US),
};

static const uint8_t usb_vendor_id[44] = {
    sizeof(usb_vendor_id),
    USB_DESC_TYPE_STRING,
    'Q', 0,
    'u', 0,
    'a', 0,
    'n', 0,
    't', 0,
    'e', 0,
    'c', 0,
    ' ', 0,
    'N', 0,
    'e', 0,
示例#3
0
		return NULL;
	}

	if (Length == 0) {
		pInformation->Ctrl_Info.Usb_wLength = sizeof(line_coding);
		return NULL;
	} else {
		return ((uint8_t *) &line_coding);
	}
}

struct usb_cdc_serial_state_report uart_state = {
	.bmRequestType = 0xA1,
	.bNotification = USB_CDC_NOTIFICATION_SERIAL_STATE,
	.wValue        = 0,
	.wIndex        = htousbs(1),
	.wLength       = htousbs(2),
	.bmUartState  = htousbs(0),
};
	
static void PIOS_USB_CDC_CTRL_EP_IN_Callback(void)
{
	struct pios_usb_cdc_dev * usb_cdc_dev = (struct pios_usb_cdc_dev *)pios_usb_cdc_id;

	bool valid = PIOS_USB_CDC_validate(usb_cdc_dev);
	PIOS_Assert(valid);

	/* Give back UART State Bitmap */
	/* UART State Bitmap
	 *   15-7: reserved
	 *      6:  bOverRun    overrun error
 *
 * You should have received a copy of the GNU General Public License along
 * with this program; if not, write to the Free Software Foundation, Inc.,
 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 */

#include "pios_usb_desc_hid_cdc_priv.h" /* exported API */
#include "pios_usb_defs.h"		/* struct usb_*, USB_* */
#include "pios_usb_board_data.h"	/* PIOS_USB_BOARD_* */
#include "pios_usbhook.h"		/* PIOS_USBHOOK_Register* */
#include "pios_usb_hid.h"		/* PIOS_USB_HID_Register* */

static const struct usb_device_desc device_desc = {
	.bLength            = sizeof(struct usb_device_desc),
	.bDescriptorType    = USB_DESC_TYPE_DEVICE,
	.bcdUSB             = htousbs(0x0200),
	.bDeviceClass       = 0xef,
	.bDeviceSubClass    = 0x02,
	.bDeviceProtocol    = 0x01,
	.bMaxPacketSize0    = 64, /* Must be 64 for high-speed devices */
	.idVendor           = htousbs(PIOS_USB_BOARD_VENDOR_ID),
	.idProduct          = htousbs(PIOS_USB_BOARD_PRODUCT_ID),
	.bcdDevice          = htousbs(PIOS_USB_BOARD_DEVICE_VER),
	.iManufacturer      = USB_STRING_DESC_VENDOR,
	.iProduct           = USB_STRING_DESC_PRODUCT,
	.iSerialNumber      = USB_STRING_DESC_SERIAL,
	.bNumConfigurations = 1,
};

static const uint8_t hid_report_desc[89] = {
	HID_GLOBAL_ITEM_2 (HID_TAG_GLOBAL_USAGE_PAGE),