Loading...
Searching...
No Matches
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
9#pragma once
10
23
42
43#include <stdint.h>
44#include "usb/cdc.h"
45#include "usb/usbus.h"
46#include "tsrb.h"
47
48#ifdef __cplusplus
49extern "C" {
50#endif
51
61#ifdef CONFIG_USBUS_CDC_ACM_STDIO_BUF_SIZE_EXP
62#define CONFIG_USBUS_CDC_ACM_STDIO_BUF_SIZE (1<<CONFIG_USBUS_CDC_ACM_STDIO_BUF_SIZE_EXP)
63#endif
64#ifndef CONFIG_USBUS_CDC_ACM_STDIO_BUF_SIZE
65#define CONFIG_USBUS_CDC_ACM_STDIO_BUF_SIZE (128)
66#endif
67
71#if IS_ACTIVE(CONFIG_USBUS_CDC_ACM_BULK_EP_SIZE_8)
72#define CONFIG_USBUS_CDC_ACM_BULK_EP_SIZE (8)
73#elif IS_ACTIVE(CONFIG_USBUS_CDC_ACM_BULK_EP_SIZE_16)
74#define CONFIG_USBUS_CDC_ACM_BULK_EP_SIZE (16)
75#elif IS_ACTIVE(CONFIG_USBUS_CDC_ACM_BULK_EP_SIZE_32)
76#define CONFIG_USBUS_CDC_ACM_BULK_EP_SIZE (32)
77#elif IS_ACTIVE(CONFIG_USBUS_CDC_ACM_BULK_EP_SIZE_64)
78#define CONFIG_USBUS_CDC_ACM_BULK_EP_SIZE (64)
79#endif
80
81#ifndef CONFIG_USBUS_CDC_ACM_BULK_EP_SIZE
82#define CONFIG_USBUS_CDC_ACM_BULK_EP_SIZE (64)
83#endif
85
89#define USBUS_CDC_ACM_INT_EP_SIZE (8)
90
94#define USBUS_CDC_ACM_EP_IN_REQUIRED_NUMOF 2
95
99#define USBUS_CDC_ACM_EP_OUT_REQUIRED_NUMOF 1
100
115
120
131 uint8_t *data, size_t len);
132
148 uint32_t baud, uint8_t bits,
149 uint8_t parity, uint8_t stop);
150
178
191 usbus_cdcacm_coding_cb_t coding_cb,
192 uint8_t *buf, size_t len);
193
204 const uint8_t *buf, size_t len);
205
212
222 usbus_cdcacm_coding_cb_t coding_cb);
223
224#ifdef __cplusplus
225}
226#endif
227
Definition for USB CDC interfaces.
#define usbdev_ep_buf_t
Instantiation type for usbdev endpoint buffers.
Definition usbdev.h:126
struct event event_t
event structure forward declaration
Definition event.h:135
struct tsrb tsrb_t
thread-safe ringbuffer struct
struct usbus_descr_gen usbus_descr_gen_t
USBUS descriptor generator.
struct usbus_interface usbus_interface_t
USBUS interface.
struct usbus_handler usbus_handler_t
USBUS event handler forward declaration.
Definition usbus.h:223
struct usbus usbus_t
USBUS context forward declaration.
Definition usbus.h:218
#define CONFIG_USBUS_CDC_ACM_BULK_EP_SIZE
USB CDC ACM bulk endpoint size.
Definition acm.h:82
#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:65
usbus_cdcacm_line_state_t
CDC ACM line state as reported by the host computer.
Definition acm.h:104
void(* usbus_cdcacm_cb_t)(usbus_cdcacm_device_t *cdcacm, uint8_t *data, size_t len)
CDC ACM data callback.
Definition acm.h:130
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:147
struct usbus_cdcacm_device usbus_cdcacm_device_t
USBUS CDC ACM context struct forward declaration.
Definition acm.h:119
@ USBUS_CDC_ACM_LINE_STATE_DISCONNECTED
No DTE connected.
Definition acm.h:108
@ USBUS_CDC_ACM_LINE_STATE_DTE
DTE (e.g.
Definition acm.h:113
USB CDC ACM line coding setup content.
Definition cdc.h:281
USBUS CDC ACM context struct.
Definition acm.h:154
usbus_cdcacm_coding_cb_t coding_cb
Callback for ACM coding changes.
Definition acm.h:160
tsrb_t tsrb
TSRB for data to the host.
Definition acm.h:161
usbus_t * usbus
USBUS reference.
Definition acm.h:162
event_t flush
device2host forced flush event
Definition acm.h:165
usbus_cdcacm_line_state_t state
Current line state.
Definition acm.h:164
usbus_handler_t handler_ctrl
control handler
Definition acm.h:155
usb_req_cdcacm_coding_t coding
Current coding configuration.
Definition acm.h:166
usbus_interface_t iface_ctrl
CDC control interface.
Definition acm.h:156
size_t occupied
Number of bytes for the host.
Definition acm.h:163
usbus_interface_t iface_data
CDC data interface.
Definition acm.h:157
usbdev_ep_buf_t out_buf[CONFIG_USBUS_CDC_ACM_BULK_EP_SIZE]
Host to device data buffer.
Definition acm.h:171
usbus_cdcacm_cb_t cb
Callback for data handlers.
Definition acm.h:159
usbus_descr_gen_t cdcacm_descr
CDC descriptor generator.
Definition acm.h:158
usbdev_ep_buf_t in_buf[CONFIG_USBUS_CDC_ACM_STDIO_BUF_SIZE]
Device to host data buffer.
Definition acm.h:176
USBUS context struct.
Definition usbus.h:447
Thread-safe ringbuffer interface definition.
USBUS basic interface.