添加 USB 主机、BLE 和 Socket 数据端口驱动程序:
- 支持大容量存储类(MSC)的 USB 主机驱动程序 - BLE SPP(串行端口配置文件)客户端和服务器实现 - Socket(UDP/TCP)数据端口驱动程序 - 相关的 shell 接口用于配置和测试
This commit is contained in:
109
app/drivers/data_port/usb-host/esp_usbh_cdc.h
Normal file
109
app/drivers/data_port/usb-host/esp_usbh_cdc.h
Normal file
@@ -0,0 +1,109 @@
|
||||
// Copyright 2019-2021 Espressif Systems (Shanghai) PTE LTD
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#pragma once
|
||||
#include "stdio.h"
|
||||
#include "freertos/FreeRTOS.h"
|
||||
#include "esp_err.h"
|
||||
#include "hal/usbh_ll.h"
|
||||
#include "hcd.h"
|
||||
|
||||
/**
|
||||
* @brief USB host CDC configuration type, callbacks should not in block state
|
||||
*/
|
||||
typedef struct usbh_cdc_config
|
||||
{
|
||||
uint8_t bulk_in_ep_addr; /*!< USB CDC bulk in endpoint address, will be overwritten if bulk_in_ep is specified */
|
||||
uint8_t bulk_out_ep_addr; /*!< USB CDC bulk out endpoint address, will be overwritten if bulk_out_ep is specified */
|
||||
int rx_buffer_size; /*!< USB receive/in pipe_obj size */
|
||||
int tx_buffer_size; /*!< USB transport/out pipe_obj size */
|
||||
usb_ep_desc_t *bulk_in_ep; /*!< USB CDC bulk in endpoint descriptor, set NULL if using default param */
|
||||
usb_ep_desc_t *bulk_out_ep; /*!< USB CDC bulk out endpoint descriptor, set NULL if using default param */
|
||||
usbh_cdc_cb_t conn_callback; /*!< USB connect calllback, set NULL if not use */
|
||||
usbh_cdc_cb_t disconn_callback; /*!< USB disconnect calllback, usb cdc driver reset to connect waitting after disconnect, set NULL if not use */
|
||||
usbh_cdc_cb_t rx_callback; /*!< packet receive callback, set NULL if not use */
|
||||
void *conn_callback_arg; /*!< USB connect calllback args, set NULL if not use */
|
||||
void *disconn_callback_arg; /*!< USB disconnect calllback args, set NULL if not use */
|
||||
void *rx_callback_arg; /*!< packet receive callback args, set NULL if not use */
|
||||
} usbh_cdc_config_t;
|
||||
|
||||
/**
|
||||
* @brief Install USB CDC driver.
|
||||
*
|
||||
* @param config USB Host CDC configs
|
||||
* @return
|
||||
* ESP_ERR_INVALID_STATE driver has been installed
|
||||
* ESP_ERR_INVALID_ARG args not supported
|
||||
* ESP_FAIL driver install failed
|
||||
* ESP_OK driver install succeed
|
||||
*/
|
||||
esp_err_t usbh_cdc_driver_install(const usbh_cdc_config_t *config);
|
||||
|
||||
/**
|
||||
* @brief Uninstall USB driver.
|
||||
*
|
||||
* @return
|
||||
* ESP_ERR_INVALID_STATE driver not installed
|
||||
* ESP_OK start succeed
|
||||
*/
|
||||
esp_err_t usbh_cdc_driver_delete(void);
|
||||
|
||||
/**
|
||||
* @brief Waitting until CDC device connect
|
||||
*
|
||||
* @param ticks_to_wait Wait timeout value, count in RTOS ticks
|
||||
* @return
|
||||
* ESP_ERR_INVALID_STATE driver not installed
|
||||
* ESP_ERR_TIMEOUT wait timeout
|
||||
* ESP_OK device connect succeed
|
||||
*/
|
||||
esp_err_t usbh_cdc_wait_connect(TickType_t ticks_to_wait);
|
||||
|
||||
/**
|
||||
* @brief Send data to connected USB device from a given buffer and length,
|
||||
* this function will return after copying all the data to tx ring buffer.
|
||||
*
|
||||
* @param buf data buffer address
|
||||
* @param length data length to send
|
||||
* @return int The number of bytes pushed to the tx buffer
|
||||
*/
|
||||
int usbh_cdc_write_bytes(const uint8_t *buf, size_t length);
|
||||
|
||||
/**
|
||||
* @brief Get USB receive ring buffer cached data length.
|
||||
*
|
||||
* @param size
|
||||
* @return
|
||||
* ESP_ERR_INVALID_STATE cdc not configured, or not running
|
||||
* ESP_ERR_INVALID_ARG args not supported
|
||||
* ESP_FAIL start failed
|
||||
* ESP_OK start succeed
|
||||
*/
|
||||
esp_err_t usbh_cdc_get_buffered_data_len(size_t *size);
|
||||
|
||||
/**
|
||||
* @brief Read data bytes from USB receive/in buffer.
|
||||
*
|
||||
* @param buf data buffer address
|
||||
* @param length data length to read
|
||||
* @param ticks_to_wait sTimeout, count in RTOS ticks
|
||||
* @return int The number of bytes read from USB FIFO
|
||||
*/
|
||||
int usbh_cdc_read_bytes(uint8_t *buf, size_t length, TickType_t ticks_to_wait);
|
||||
|
||||
/**
|
||||
* @brief print internal memory usage for debug
|
||||
* @return void
|
||||
*/
|
||||
void usbh_cdc_print_buffer_msg(void);
|
||||
Reference in New Issue
Block a user