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); }
'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,
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),