acm.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2018 Mesotic SAS
3  *
4  * This file is subject to the terms and conditions of the GNU Lesser General
5  * Public License v2.1. See the file LICENSE in the top level directory for
6  * more details.
7  */
8 
41 #ifndef USB_USBUS_CDC_ACM_H
42 #define USB_USBUS_CDC_ACM_H
43 
44 #include <stdint.h>
45 #include "usb/cdc.h"
46 #include "usb/usbus.h"
47 #include "tsrb.h"
48 
49 #ifdef __cplusplus
50 extern "C" {
51 #endif
52 
62 #ifdef CONFIG_USBUS_CDC_ACM_STDIO_BUF_SIZE_EXP
63 #define CONFIG_USBUS_CDC_ACM_STDIO_BUF_SIZE (1<<CONFIG_USBUS_CDC_ACM_STDIO_BUF_SIZE_EXP)
64 #endif
65 #ifndef CONFIG_USBUS_CDC_ACM_STDIO_BUF_SIZE
66 #define CONFIG_USBUS_CDC_ACM_STDIO_BUF_SIZE (128)
67 #endif
68 
72 #if IS_ACTIVE(CONFIG_USBUS_CDC_ACM_BULK_EP_SIZE_8)
73 #define CONFIG_USBUS_CDC_ACM_BULK_EP_SIZE (8)
74 #elif IS_ACTIVE(CONFIG_USBUS_CDC_ACM_BULK_EP_SIZE_16)
75 #define CONFIG_USBUS_CDC_ACM_BULK_EP_SIZE (16)
76 #elif IS_ACTIVE(CONFIG_USBUS_CDC_ACM_BULK_EP_SIZE_32)
77 #define CONFIG_USBUS_CDC_ACM_BULK_EP_SIZE (32)
78 #elif IS_ACTIVE(CONFIG_USBUS_CDC_ACM_BULK_EP_SIZE_64)
79 #define CONFIG_USBUS_CDC_ACM_BULK_EP_SIZE (64)
80 #endif
81 
82 #ifndef CONFIG_USBUS_CDC_ACM_BULK_EP_SIZE
83 #define CONFIG_USBUS_CDC_ACM_BULK_EP_SIZE (64)
84 #endif
90 #define USBUS_CDC_ACM_INT_EP_SIZE (8)
91 
95 #define USBUS_CDC_ACM_EP_IN_REQUIRED_NUMOF 2
96 
100 #define USBUS_CDC_ACM_EP_OUT_REQUIRED_NUMOF 1
101 
105 typedef enum {
110 
116 
121 
131 typedef void (*usbus_cdcacm_cb_t)(usbus_cdcacm_device_t *cdcacm,
132  uint8_t *data, size_t len);
133 
149  uint32_t baud, uint8_t bits,
150  uint8_t parity, uint8_t stop);
151 
164  size_t occupied;
173 
178 };
179 
192  usbus_cdcacm_coding_cb_t coding_cb,
193  uint8_t *buf, size_t len);
194 
205  const uint8_t *buf, size_t len);
206 
213 
223  usbus_cdcacm_coding_cb_t coding_cb);
224 
225 #ifdef __cplusplus
226 }
227 #endif
228 
229 #endif /* USB_USBUS_CDC_ACM_H */
Definition for USB CDC interfaces.
#define usbdev_ep_buf_t
Instantiation type for usbdev endpoint buffers.
Definition: usbdev.h:126
#define CONFIG_USBUS_CDC_ACM_BULK_EP_SIZE
USB CDC ACM bulk endpoint size.
Definition: acm.h:83
#define CONFIG_USBUS_CDC_ACM_STDIO_BUF_SIZE
Buffer size for STDIN and STDOUT data to and from USB when using the USBUS_CDC_ACM_STDIO module.
Definition: acm.h:66
usbus_cdcacm_line_state_t
CDC ACM line state as reported by the host computer.
Definition: acm.h:105
void(* usbus_cdcacm_cb_t)(usbus_cdcacm_device_t *cdcacm, uint8_t *data, size_t len)
CDC ACM data callback.
Definition: acm.h:131
void usbus_cdc_acm_init(usbus_t *usbus, usbus_cdcacm_device_t *cdcacm, usbus_cdcacm_cb_t cb, usbus_cdcacm_coding_cb_t coding_cb, uint8_t *buf, size_t len)
Initialize an USBUS CDC ACM interface.
void usbus_cdc_acm_set_coding_cb(usbus_cdcacm_device_t *cdcacm, usbus_cdcacm_coding_cb_t coding_cb)
Set the callback for control settings.
size_t usbus_cdc_acm_submit(usbus_cdcacm_device_t *cdcacm, const uint8_t *buf, size_t len)
Submit bytes to the CDC ACM handler.
void usbus_cdc_acm_flush(usbus_cdcacm_device_t *cdcacm)
Flush the buffer to the USB host.
int(* usbus_cdcacm_coding_cb_t)(usbus_cdcacm_device_t *cdcacm, uint32_t baud, uint8_t bits, uint8_t parity, uint8_t stop)
CDC ACM line coding callback.
Definition: acm.h:148
@ USBUS_CDC_ACM_LINE_STATE_DISCONNECTED
No DTE connected.
Definition: acm.h:109
@ USBUS_CDC_ACM_LINE_STATE_DTE
DTE (e.g.
Definition: acm.h:114
event structure
Definition: event.h:148
thread-safe ringbuffer struct
Definition: tsrb.h:39
USB CDC ACM line coding setup content.
Definition: cdc.h:282
USBUS CDC ACM context struct.
Definition: acm.h:155
usbus_cdcacm_coding_cb_t coding_cb
Callback for ACM coding changes.
Definition: acm.h:161
tsrb_t tsrb
TSRB for data to the host
Definition: acm.h:162
usbus_t * usbus
USBUS reference
Definition: acm.h:163
event_t flush
device2host forced flush event
Definition: acm.h:166
usbus_cdcacm_line_state_t state
Current line state
Definition: acm.h:165
usbus_handler_t handler_ctrl
control handler
Definition: acm.h:156
usb_req_cdcacm_coding_t coding
Current coding configuration
Definition: acm.h:167
usbus_interface_t iface_ctrl
CDC control interface
Definition: acm.h:157
size_t occupied
Number of bytes for the host
Definition: acm.h:164
usbus_interface_t iface_data
CDC data interface
Definition: acm.h:158
usbdev_ep_buf_t out_buf[CONFIG_USBUS_CDC_ACM_BULK_EP_SIZE]
Host to device data buffer.
Definition: acm.h:172
usbus_cdcacm_cb_t cb
Callback for data handlers
Definition: acm.h:160
usbus_descr_gen_t cdcacm_descr
CDC descriptor generator
Definition: acm.h:159
usbdev_ep_buf_t in_buf[CONFIG_USBUS_CDC_ACM_STDIO_BUF_SIZE]
Device to host data buffer.
Definition: acm.h:177
USBUS descriptor generator.
Definition: usbus.h:298
USBUS handler struct.
Definition: usbus.h:436
USBUS interface.
Definition: usbus.h:353
USBUS context struct.
Definition: usbus.h:448
Thread-safe ringbuffer interface definition.
USBUS basic interface.