github.com/tinygo-org/tinygo@v0.31.3-0.20240404173401-90b0bf646c27/src/machine/usb/cdc/cdc.go (about) 1 package cdc 2 3 const ( 4 cdcEndpointACM = 1 5 cdcEndpointOut = 2 6 cdcEndpointIn = 3 7 ) 8 9 // New returns USBCDC struct. 10 func New() *USBCDC { 11 if USB == nil { 12 USB = &USBCDC{ 13 rxBuffer: NewRxRingBuffer(), 14 txBuffer: NewTxRingBuffer(), 15 } 16 } 17 return USB 18 } 19 20 const ( 21 // bmRequestType 22 usb_REQUEST_HOSTTODEVICE = 0x00 23 usb_REQUEST_DEVICETOHOST = 0x80 24 usb_REQUEST_DIRECTION = 0x80 25 26 usb_REQUEST_STANDARD = 0x00 27 usb_REQUEST_CLASS = 0x20 28 usb_REQUEST_VENDOR = 0x40 29 usb_REQUEST_TYPE = 0x60 30 31 usb_REQUEST_DEVICE = 0x00 32 usb_REQUEST_INTERFACE = 0x01 33 usb_REQUEST_ENDPOINT = 0x02 34 usb_REQUEST_OTHER = 0x03 35 usb_REQUEST_RECIPIENT = 0x1F 36 37 usb_REQUEST_DEVICETOHOST_CLASS_INTERFACE = (usb_REQUEST_DEVICETOHOST | usb_REQUEST_CLASS | usb_REQUEST_INTERFACE) 38 usb_REQUEST_HOSTTODEVICE_CLASS_INTERFACE = (usb_REQUEST_HOSTTODEVICE | usb_REQUEST_CLASS | usb_REQUEST_INTERFACE) 39 usb_REQUEST_DEVICETOHOST_STANDARD_INTERFACE = (usb_REQUEST_DEVICETOHOST | usb_REQUEST_STANDARD | usb_REQUEST_INTERFACE) 40 41 // CDC Class requests 42 usb_CDC_SET_LINE_CODING = 0x20 43 usb_CDC_GET_LINE_CODING = 0x21 44 usb_CDC_SET_CONTROL_LINE_STATE = 0x22 45 usb_CDC_SEND_BREAK = 0x23 46 47 usb_CDC_V1_10 = 0x0110 48 usb_CDC_COMMUNICATION_INTERFACE_CLASS = 0x02 49 50 usb_CDC_CALL_MANAGEMENT = 0x01 51 usb_CDC_ABSTRACT_CONTROL_MODEL = 0x02 52 usb_CDC_HEADER = 0x00 53 usb_CDC_ABSTRACT_CONTROL_MANAGEMENT = 0x02 54 usb_CDC_UNION = 0x06 55 usb_CDC_CS_INTERFACE = 0x24 56 usb_CDC_CS_ENDPOINT = 0x25 57 usb_CDC_DATA_INTERFACE_CLASS = 0x0A 58 59 usb_CDC_LINESTATE_DTR = 0x01 60 usb_CDC_LINESTATE_RTS = 0x02 61 )