📄 gadget.h
字号:
#ifndef _GADGET_H_
#define _GADGET_H_
/**
* USB Gadget Driver APIs head file
*
* Create by Wanyong @2006-08-29
*/
#include <os/ioapi/include/ioapi.h>
/**
*
* Gadget name defines.
*
*/
#define USB_GADGET_TD242 "/dev/disk/td242_fc"
#define USB_GADGET_TD1120 "/dev/disk/td1120_fc"
#define USB_GADGET_DWC "/dev/dwc_fc"
#define USB_GADGET_DWC1 "/dev/dwc_fc1"
/**
*
* Gadget ioctl command defines.
*
*/
#define GADGETIO_REGISTER _IO('U', 0) /* Register gadget */
#define GADGETIO_START _IO('U', 1) /* Start gadget */
#define GADGETIO_STOP _IO('U', 2) /* Stop gadget */
#define GADGETIO_GETCTL _IO('U', 3) /* Get usb controller by gadget */
#define GADGETIO_GETGEDGET _IO('U', 4) /* Get gadget by name */
#define GADGETIO_GETCONNSTS _IO('U', 5) /* Get device Connected status */
/**
*
* Gadget backup file device pre-defines.
*
*/
#define GADGET_STORAGE_UDISK "/dev/disk/usba0"
#define GADGET_STORAGE_HD "/dev/disk/hda"
#define GADGET_STORAGE_NAND "/dev/disk/nanda"
#define GADGET_STORAGE_CF "/dev/disk/cf"
#define GADGET_STORAGE_MS "/dev/disk/ms"
#define GADGET_STORAGE_SD "/dev/disk/sd"
#define GADGET_STORAGE_XD "/dev/disk/xd"
#define GADGET_STORAGE_SM "/dev/disk/sm"
/**
*
* Gadget structs defines.
*
*/
#define MAX_LUNS 8
typedef enum gadget_style{
NULL_GADGET_STYLE = 0,
MS_GADGET_STYLE,
PTP_GADGET_STYLE,
END_GADGET_STYLE
}gadget_style_t;
typedef int(*MSG_CB)(int msg,int arg1,int arg2,void * parg); /* message call back */
typedef struct _usb_device_desc{
u16_t idVendor; /* Vendor ID */
u16_t idProduct; /* Product ID */
u16_t bcdDevice; /* Device Version */
const char *strManufacturer;/* Manufacturer String */
const char *strProduct; /* Product String */
const char *strSerial; /* Serial String */
}usb_device_desc;
typedef struct _product_desc{
const char *strVendor;
const char *strMode;
const char *strVersion;
}product_desc;
typedef struct _gadget_handle{
gadget_style_t style; /** Gadget Style */
char * controller; /** USB Control node, like: "/dev/dwc_fc"*/
char * name; /** Gadget name, like: "ms_gadget,ptp_gadget"*/
usb_device_desc usb_desc;/** USB standard description */
product_desc product_desc;/** Product description */
int (*init)(char * controller); /** init routine */
int (*exit)(char * controller); /** exit routine */
char * lun_filename[MAX_LUNS]; /** ms_gadget file/device name, like: "/dev/disk/nanda" */
char lun_is_ro[MAX_LUNS]; /** ms_gadget read only flag */
OS_EVENT * msg_queue; /** Message queue */
MSG_CB msg_cb; /*message call back*/
void * data;
}gadget_handle_t;
extern struct _gadget_handle ms_gadget_handle ;
extern struct _gadget_handle ptp_gadget_handle ;
/**
*
* Gadget Driver Interfaces.
*
*/
avfs_device_driver usb_dwcfc_initialize (avfs_device_major_number major, avfs_device_minor_number minor, void *arg);
avfs_device_driver usb_dwcfc_open (avfs_device_major_number major,
avfs_device_minor_number minor, void *arg);
avfs_device_driver usb_dwcfc_close (avfs_device_major_number major,
avfs_device_minor_number minor, void *arg);
avfs_device_driver usb_dwcfc_ioctl(avfs_device_major_number major,
avfs_device_minor_number minor, void *arg);
/**
*
* Gadget Driver Interface Tables.
*
*/
#ifdef AML_ATHENA
#define DEVICE_TALBE_USB_GADGET { usb_dwcfc_initialize, usb_dwcfc_open, usb_dwcfc_close,NULL ,NULL,usb_dwcfc_ioctl }
#else
#define DEVICE_TALBE_USB_GADGET { 0 }
#endif
/**
*
* Gadget APIs.
*
*/
int usb_gadget_register(char * controller,gadget_handle_t * pgh);
int usb_gadget_start(char *controller,gadget_style_t style);
int usb_gadget_stop(char *controller,gadget_style_t style);
int usb_gadget_controller_connect_state(char * controller,char * state);
int usb_gadget_set_lun_storage(int lun_idx,char * filename,char is_read_only);
int usb_gadget_set_ptp_msg_cb(MSG_CB msg_cb);
int usb_gadget_set_device_desc(struct _gadget_handle * pgh,struct _usb_device_desc *pudd);
int usb_gadget_set_product_desc(struct _gadget_handle * pgh,struct _product_desc *ppd);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -