EC600U_esp32_iap_uart/usb/usb_demo.c

67 lines
2.7 KiB
C
Raw Normal View History

2024-02-05 17:39:56 +08:00
/*================================================================
Copyright (c) 2020 Quectel Wireless Solution, Co., Ltd. All Rights Reserved.
Quectel Wireless Solution Proprietary and Confidential.
=================================================================*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "ql_api_osi.h"
#include "ql_log.h"
#include "usb_demo.h"
#define QL_USB_LOG_LEVEL QL_LOG_LEVEL_INFO
#define QL_USB_LOG(msg, ...) QL_LOG(QL_USB_LOG_LEVEL, "ql_usb", msg, ##__VA_ARGS__)
#define QL_USB_LOG_PUSH(msg, ...) QL_LOG_PUSH("ql_usb", msg, ##__VA_ARGS__)
#define QL_USB_MASS_STORAGE 0 //验证mass storage功能打开此宏
static void ql_usb_demo_thread(void *param)
{
QL_USB_LOG("enter usb demo");
#if QL_USB_MASS_STORAGE
ql_usb_msc_cfg_t msc_cfg = {0};
/*
flash/sd卡/6线flash等存储器到PC端, U盘
1. target.config中,CONFIG_QUEC_PROJECT_FEATURE_USB_MASS_STORAGE宏
2. protocol参数中支持MTP和MSG两种协议,ql_usb_protocol_e定义处
3. app可能会比较慢,sd卡/flash在app挂载,sd卡/flash,
*/
msc_cfg.msc_device = QL_USB_MSC_SDCARD; //如需映射2个存储器,可用"|"连接,如同时映射外置6线flash和sd卡: QL_USB_MSC_EFS | QL_USB_MSC_SDCARD
msc_cfg.protocol = QL_USB_PROTOCOL_MTP; //QL_USB_PROTOCOL_MSG传输速率更快,但支持的功能少一点,详见ql_usb_protocol_e定义处的备注
/*
1. PC上显示的磁盘名称,,15,MTP协议下支持; "ANDROID"
2. : U盘的PC,msc_cfg.dev_name,QUECTEL的USB驱动,windows系统会记住第一次识别到的设备名称,
USB驱动才会去刷新虚拟U盘设备名称;
*/
strcpy(msc_cfg.dev_name, "ANDROID");
ql_usb_set_enum_mode(QL_USB_ENUM_MASS_STORAGE); //重启生效
ql_usb_msc_config_set(&msc_cfg); //重启生效
#endif
/*
使,USB端口,quec_usb_serial_create中配置,app_start.c中
ql_usb_set_enum_mode(QL_USB_ENUM_USBNET_COM);
*/
ql_rtos_task_delete(NULL);
}
void ql_usb_app_init(void)
{
QlOSStatus err = QL_OSI_SUCCESS;
ql_task_t ql_usb_task = NULL;
QL_USB_LOG("usb demo enter");
err = ql_rtos_task_create(&ql_usb_task, QL_USB_TASK_STACK, APP_PRIORITY_NORMAL, "ql_usb_demo", ql_usb_demo_thread, NULL, 5);
if(err != QL_OSI_SUCCESS)
{
QL_USB_LOG("usb task create failed");
}
}