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  )