/*================================================================ Copyright (c) 2021, Quectel Wireless Solutions Co., Ltd. All rights reserved. Quectel Wireless Solutions Proprietary and Confidential. =================================================================*/ #ifndef __QL_USB_H__ #define __QL_USB_H__ //绑定USB网卡 #include "quec_net.h" #include "quec_usb.h" #include //states: 1>USB插入 0>USB拔出 typedef void (*usbdectcb)(unsigned int states); /*********************************************** *注册USB插入与拔出的检测回调函敿 *函数成功返回0,否则返囿1 ***********************************************/ int ql_usbdect_register_cb(usbdectcb cb); /***************************************************************** * Function: ql_usb_get_type * * Description: * 获取USB的类型。 * * Parameters: * void * Return: * 1 USB正常枚举。 * 0 USB未能正常枚举,非USB,可能是适配器。 * NOTES:此接口耗时2s *****************************************************************/ extern int ql_usb_get_type(void); /***************************************************************** * Function: ql_usb_connect_state * * Description: * 获取USB的连接状态,d+,d-。 * * Parameters: * void * Return: * 1 USB正常枚举且可以正常通讯。 * 0 USB未连接。 * *****************************************************************/ int ql_usb_connect_state(void); /***************************************************************** * Function: ql_usb_plugin * * Description: 软件触发插入USB,进行枚举。 * * Parameters: void * Return: void *****************************************************************/ void ql_usb_plugin(void); /***************************************************************** * Function: ql_usb_unplug * * Description: 软件触发拔出USB,进行去枚举。 * * Parameters: void * Return: void *****************************************************************/ void ql_usb_unplug(void); /***************************************************************** * Function: ql_usb_disable_enumeration * * Description: * 关闭USB枚举,配置掉电保存。 * * Parameters: * disable 是否关闭usb枚举,1 关闭 ,0 打开 * Return: * 1 配置成功 * 0 配置失败 * *****************************************************************/ int ql_usb_disable_enumeration(unsigned int disable); /***************************************************************** * Function: ql_cdc_switch_ccid_desc * * Description: * 将cdc接口切换为ccid标准设备。 * * Parameters: * enable: 是否将cdc切换为ccid,1 ccid ,0 cdc * Return: * void: * *****************************************************************/ void ql_cdc_switch_ccid_desc(unsigned char enable); /***************************************************************** * Function: ql_cdc_switch_printer_desc * * Description: * 将cdc接口切换为printer设备。 * * Parameters: * enable: 是否将cdc切换为printer,1 printer ,0 cdc * config printer配置 * Return: * void: * *****************************************************************/ void ql_cdc_switch_printer_desc(unsigned char enable,struct usb_printer_config config); #ifdef MV_USB2_HID_SUPPORT /***************************************************************** * Function: ql_usb_hid_send_data * * Description: * 将数据发送给usb hid设备。 * * Parameters: * buf: 数据指针 * len: 数据长度 * Return: * 0: 发送成功 * -1: 发送失败 * *****************************************************************/ int ql_usb_hid_send_data(char *buf, unsigned char len); /***************************************************************** * Function: ql_usb_device_get_hid_dtd_cnt * * Description: * 获取usb hid 当前缓冲的包个数 * * Parameters: * void * Return: * 缓冲包个数 * * *****************************************************************/ unsigned char ql_usb_device_get_hid_dtd_cnt(void); /***************************************************************** * Function: ql_usb_device_free_hid_dtd * * Description: * 释放usb hid设备。 * * Parameters: * void * Return: * 0: 释放成功 * -1: 释放失败 * *****************************************************************/ void ql_usb_device_free_hid_dtd(void); /***************************************************************** * Function: ql_usb_enable_hid * * Description: * 使能usb hid设备。 * * Parameters: * enable: 是否使能usb hid,1 使能 ,0 不使能 * Return: * void: * *****************************************************************/ void ql_usb_enable_hid(unsigned char enable); #endif //绑定USB网卡 typedef enum { QL_NETIF_DISCONNECT=0, QL_NETIF_CONNECT, QL_NETIF_REMOVE=0xFF, }ql_netif_status_e; typedef enum { QL_NETIF_ECM_MODE=0, /* ECM模式 */ QL_NETIF_RNDIS_MODE, /* RNDIS模式 */ } ql_netif_mode_e; QuecOSStatus ql_netdevctl_lwip_config(ql_netif_status_e netif_config,uint8 set_cid); QuecOSStatus ql_set_usbnet_mode(ql_netif_mode_e netif_mode); QuecOSStatus ql_get_usbnet_mode(ql_netif_mode_e *netif_mode); uint8_t ql_usb_vbus_wakeup_get_enable(void); void ql_usb_vbus_wakeup_set_enable(uint8_t enable); #endif