libusbgx-0.3.0
Loading...
Searching...
No Matches
Data Structures | Macros | Typedefs | Enumerations | Functions
usbg.h File Reference
#include <dirent.h>
#include <sys/queue.h>
#include <netinet/ether.h>
#include <stdint.h>
#include <limits.h>
#include <stdbool.h>
#include <stdio.h>
#include <malloc.h>
#include "usbg_version.h"

Go to the source code of this file.

Data Structures

struct  usbg_gadget_attrs
 USB gadget device attributes. More...
 
struct  usbg_gadget_strs
 USB gadget device strings. More...
 
struct  usbg_gadget_os_descs
 USB gadget Microsoft OS Descriptors. More...
 
struct  usbg_config_attrs
 USB configuration attributes. More...
 
struct  usbg_config_strs
 USB configuration strings. More...
 
struct  usbg_function_os_desc
 USB OS Descriptor function attributes. More...
 

Macros

#define DEFAULT_UDC   NULL
 
#define LANG_US_ENG   0x0409
 
#define DEFAULT_CONFIG_LABEL   "config"
 
#define GUID_BIN_LENGTH   16
 
#define GUID_CHAR_LENGTH   36 /* 32 bytes + 4 dashes */
 
#define USBG_MAX_STR_LENGTH   256
 
#define USBG_MAX_NAME_LENGTH   40
 
#define USBG_MAX_DEV_LENGTH   (USBG_MAX_NAME_LENGTH - 4)
 
#define USBG_TO_UNION(UNAME, FIELD, WHAT)    ((union UNAME){ .FIELD = WHAT, })
 
#define USBG_RM_RECURSE   1
 Additional option for usbg_rm_* functions.
 
#define usbg_for_each_gadget(g, s)
 
#define usbg_for_each_function(f, g)
 
#define usbg_for_each_config(c, g)
 
#define usbg_for_each_binding(b, c)
 
#define usbg_for_each_udc(u, s)
 

Typedefs

typedef struct usbg_state usbg_state
 State of the gadget devices in the system.
 
typedef struct usbg_gadget usbg_gadget
 USB gadget device.
 
typedef struct usbg_config usbg_config
 USB configuration.
 
typedef struct usbg_function usbg_function
 USB function.
 
typedef struct usbg_binding usbg_binding
 USB function to config binding.
 
typedef struct usbg_udc usbg_udc
 USB device controller.
 

Enumerations

enum  usbg_gadget_attr {
  USBG_GADGET_ATTR_MIN = 0 , USBG_BCD_USB = USBG_GADGET_ATTR_MIN , USBG_B_DEVICE_CLASS , USBG_B_DEVICE_SUB_CLASS ,
  USBG_B_DEVICE_PROTOCOL , USBG_B_MAX_PACKET_SIZE_0 , USBG_ID_VENDOR , USBG_ID_PRODUCT ,
  USBG_BCD_DEVICE , USBG_GADGET_ATTR_MAX
}
 Gadget attributes which can be set using usbg_set_gadget_attr() function.
 
enum  usbg_gadget_str {
  USBG_GADGET_STR_MIN = 0 , USBG_STR_MANUFACTURER = USBG_GADGET_STR_MIN , USBG_STR_PRODUCT , USBG_STR_SERIAL_NUMBER ,
  USBG_GADGET_STR_MAX
}
 
enum  usbg_gadget_os_desc_strs {
  USBG_GADGET_OS_DESC_MIN = 0 , OS_DESC_USE = USBG_GADGET_OS_DESC_MIN , OS_DESC_B_VENDOR_CODE , OS_DESC_QW_SIGN ,
  USBG_GADGET_OS_DESC_MAX
}
 Microsoft OS Descriptors strings.
 
enum  usbg_function_type {
  USBG_FUNCTION_TYPE_MIN = 0 , USBG_F_SERIAL = USBG_FUNCTION_TYPE_MIN , USBG_F_ACM , USBG_F_OBEX ,
  USBG_F_ECM , USBG_F_SUBSET , USBG_F_NCM , USBG_F_EEM ,
  USBG_F_RNDIS , USBG_F_PHONET , USBG_F_FFS , USBG_F_MASS_STORAGE ,
  USBG_F_MIDI , USBG_F_LOOPBACK , USBG_F_HID , USBG_F_UAC2 ,
  USBG_F_UVC , USBG_F_PRINTER , USBG_F_9PFS , USBG_FUNCTION_TYPE_MAX
}
 Supported USB function types.
 
enum  usbg_error {
  USBG_SUCCESS = 0 , USBG_ERROR_NO_MEM = -1 , USBG_ERROR_NO_ACCESS = -2 , USBG_ERROR_INVALID_PARAM = -3 ,
  USBG_ERROR_NOT_FOUND = -4 , USBG_ERROR_IO = -5 , USBG_ERROR_EXIST = -6 , USBG_ERROR_NO_DEV = -7 ,
  USBG_ERROR_BUSY = -8 , USBG_ERROR_NOT_SUPPORTED = -9 , USBG_ERROR_PATH_TOO_LONG = -10 , USBG_ERROR_INVALID_FORMAT = -11 ,
  USBG_ERROR_MISSING_TAG = -12 , USBG_ERROR_INVALID_TYPE = -13 , USBG_ERROR_INVALID_VALUE = -14 , USBG_ERROR_NOT_EMPTY = -15 ,
  USBG_ERROR_OTHER_ERROR = -99
}
 Errors which could be returned by library functions.
 

Functions

const char * usbg_error_name (usbg_error e)
 Get the error name as a constant string.
 
const char * usbg_strerror (usbg_error e)
 Get the short description of error.
 
int usbg_init (const char *configfs_path, usbg_state **state)
 Initialize the libusbgx library state.
 
void usbg_cleanup (usbg_state *s)
 Clean up the libusbgx library state.
 
const char * usbg_get_configfs_path (usbg_state *s)
 Get ConfigFS path.
 
int usbg_get_configfs_path_s (usbg_state *s, char *buf, int len)
 Get ConfigFS path into user buffer.
 
usbg_gadgetusbg_get_gadget (usbg_state *s, const char *name)
 Get a gadget device by name.
 
usbg_functionusbg_get_function (usbg_gadget *g, usbg_function_type type, const char *instance)
 Get a function by name.
 
usbg_configusbg_get_config (usbg_gadget *g, int id, const char *label)
 Get a configuration by name.
 
usbg_udcusbg_get_udc (usbg_state *s, const char *name)
 Get a udc by name.
 
int usbg_rm_binding (usbg_binding *b)
 Remove binding between configuration and function.
 
int usbg_rm_config (usbg_config *c, int opts)
 Remove configuration.
 
int usbg_rm_function (usbg_function *f, int opts)
 Remove existing USB function.
 
int usbg_rm_gadget (usbg_gadget *g, int opts)
 Remove existing USB gadget.
 
int usbg_rm_config_strs (usbg_config *c, int lang)
 Remove configuration strings for given language.
 
int usbg_rm_gadget_strs (usbg_gadget *g, int lang)
 Remove gadget strings for given language.
 
int usbg_create_gadget_vid_pid (usbg_state *s, const char *name, uint16_t idVendor, uint16_t idProduct, usbg_gadget **g)
 Create a new USB gadget device.
 
int usbg_create_gadget (usbg_state *s, const char *name, const struct usbg_gadget_attrs *g_attrs, const struct usbg_gadget_strs *g_strs, usbg_gadget **g)
 Create a new USB gadget device and set given attributes and strings.
 
const char * usbg_get_gadget_attr_str (usbg_gadget_attr attr)
 Get string representing selected gadget attribute.
 
int usbg_lookup_gadget_attr (const char *name)
 Lookup attr code based on its name.
 
int usbg_lookup_gadget_str (const char *name)
 Lookup str code based on its name.
 
const char * usbg_get_gadget_str_name (usbg_gadget_str str)
 Get name of selected gadget string.
 
const char * usbg_get_gadget_os_desc_name (usbg_gadget_os_desc_strs str)
 Get name of selected OS Descriptor string.
 
int usbg_set_gadget_attr (usbg_gadget *g, usbg_gadget_attr attr, int val)
 Set selected attribute to value.
 
int usbg_get_gadget_attr (usbg_gadget *g, usbg_gadget_attr attr)
 Get value of selected attribute.
 
int usbg_set_gadget_attrs (usbg_gadget *g, const struct usbg_gadget_attrs *g_attrs)
 Set the USB gadget attributes.
 
int usbg_get_gadget_attrs (usbg_gadget *g, struct usbg_gadget_attrs *g_attrs)
 Get the USB gadget strings.
 
const char * usbg_get_gadget_name (usbg_gadget *g)
 Get gadget name.
 
int usbg_get_gadget_name_s (usbg_gadget *g, char *buf, int len)
 Get gadget name into user buffer.
 
int usbg_set_gadget_vendor_id (usbg_gadget *g, uint16_t idVendor)
 Set the USB gadget vendor id.
 
int usbg_set_gadget_product_id (usbg_gadget *g, uint16_t idProduct)
 Set the USB gadget product id.
 
int usbg_set_gadget_device_class (usbg_gadget *g, uint8_t bDeviceClass)
 Set the USB gadget device class code.
 
int usbg_set_gadget_device_protocol (usbg_gadget *g, uint8_t bDeviceProtocol)
 Set the USB gadget protocol code.
 
int usbg_set_gadget_device_subclass (usbg_gadget *g, uint8_t bDeviceSubClass)
 Set the USB gadget device subclass code.
 
int usbg_set_gadget_device_max_packet (usbg_gadget *g, uint8_t bMaxPacketSize0)
 Set the maximum packet size for a gadget.
 
int usbg_set_gadget_device_bcd_device (usbg_gadget *g, uint16_t bcdDevice)
 Set the gadget device BCD release number.
 
int usbg_set_gadget_device_bcd_usb (usbg_gadget *g, uint16_t bcdUSB)
 Set the gadget device BCD USB version.
 
int usbg_get_gadget_strs (usbg_gadget *g, int lang, struct usbg_gadget_strs *g_strs)
 Get the USB gadget strings.
 
int usbg_get_gadget_strs_langs (usbg_gadget *g, int **langs)
 Get the array of languages available in this gadget.
 
int usbg_set_gadget_str (usbg_gadget *g, usbg_gadget_str str, int lang, const char *val)
 Set selected string.
 
int usbg_set_gadget_strs (usbg_gadget *g, int lang, const struct usbg_gadget_strs *g_strs)
 Set the USB gadget strings.
 
int usbg_set_gadget_serial_number (usbg_gadget *g, int lang, const char *ser)
 Set the serial number for a gadget.
 
int usbg_set_gadget_manufacturer (usbg_gadget *g, int lang, const char *mnf)
 Set the manufacturer name for a gadget.
 
int usbg_set_gadget_product (usbg_gadget *g, int lang, const char *prd)
 Set the product name for a gadget.
 
int usbg_get_gadget_os_descs (usbg_gadget *g, struct usbg_gadget_os_descs *g_os_descs)
 Get the USB gadget OS Descriptor.
 
int usbg_set_gadget_os_descs (usbg_gadget *g, const struct usbg_gadget_os_descs *g_os_descs)
 Set the USB gadget OS Descriptor.
 
int usbg_create_function (usbg_gadget *g, usbg_function_type type, const char *instance, void *f_attrs, usbg_function **f)
 Create a new USB gadget function and set its attributes.
 
const char * usbg_get_function_instance (usbg_function *f)
 Get function instance name.
 
int usbg_get_function_instance_s (usbg_function *f, char *buf, int len)
 Get function instance name into user buffer.
 
const char * usbg_get_function_type_str (usbg_function_type type)
 Get function type as a string.
 
int usbg_lookup_function_type (const char *name)
 Lookup function type suitable for given name.
 
void usbg_cleanup_function_attrs (usbg_function *f, void *f_attrs)
 Cleanup content of function attributes.
 
usbg_function_type usbg_get_function_type (usbg_function *f)
 Get type of given function.
 
int usbg_get_function_attrs (usbg_function *f, void *f_attrs)
 Get attributes of given function.
 
int usbg_set_function_attrs (usbg_function *f, void *f_attrs)
 Set attributes of given function.
 
int usbg_get_interf_os_desc (usbg_function *f, const char *iname, struct usbg_function_os_desc *f_os_desc)
 Get OS Descriptor compatibility of given function.
 
int usbg_set_interf_os_desc (usbg_function *f, const char *iname, const struct usbg_function_os_desc *f_os_desc)
 Set OS Descriptor compatibility of given function.
 
int usbg_create_config (usbg_gadget *g, int id, const char *label, const struct usbg_config_attrs *c_attrs, const struct usbg_config_strs *c_strs, usbg_config **c)
 Create a new USB gadget configuration.
 
const char * usbg_get_config_label (usbg_config *c)
 Get config label.
 
int usbg_get_config_label_s (usbg_config *c, char *buf, int len)
 Get config label into user buffer.
 
int usbg_get_config_id (usbg_config *c)
 Get config id.
 
int usbg_set_config_attrs (usbg_config *c, const struct usbg_config_attrs *c_attrs)
 Set the USB configuration attributes.
 
int usbg_get_config_attrs (usbg_config *c, struct usbg_config_attrs *c_attrs)
 Get the USB configuration strings.
 
int usbg_set_config_max_power (usbg_config *c, int bMaxPower)
 Set the configuration maximum power.
 
int usbg_set_config_bm_attrs (usbg_config *c, int bmAttributes)
 Set the configuration bitmap attributes.
 
int usbg_get_config_strs (usbg_config *c, int lang, struct usbg_config_strs *c_strs)
 Get the USB configuration strings.
 
int usbg_get_config_strs_langs (usbg_config *c, int **langs)
 Get the array of languages available in this config.
 
int usbg_set_config_strs (usbg_config *c, int lang, const struct usbg_config_strs *c_strs)
 Set the USB configuration strings.
 
int usbg_set_config_string (usbg_config *c, int lang, const char *string)
 Set the configuration string.
 
int usbg_add_config_function (usbg_config *c, const char *name, usbg_function *f)
 Add a function to a configuration.
 
usbg_functionusbg_get_binding_target (usbg_binding *b)
 Get target function of given binding.
 
const char * usbg_get_binding_name (usbg_binding *b)
 Get binding name.
 
int usbg_get_binding_name_s (usbg_binding *b, char *buf, int len)
 Get binding name into user buffer.
 
usbg_configusbg_get_os_desc_binding (usbg_gadget *g)
 Get configuration selected for OS Descriptors.
 
int usbg_set_os_desc_config (usbg_gadget *g, usbg_config *c)
 Set configuration for OS Descriptors.
 
int usbg_enable_gadget (usbg_gadget *g, usbg_udc *udc)
 Enable a USB gadget device.
 
int usbg_disable_gadget (usbg_gadget *g)
 Disable a USB gadget device.
 
const char * usbg_get_udc_name (usbg_udc *u)
 Get name of udc.
 
int usbg_get_udc_name_s (usbg_udc *u, char *buf, int len)
 Get udc name into user buffer.
 
usbg_udcusbg_get_gadget_udc (usbg_gadget *g)
 Get udc to which gadget is bound.
 
usbg_gadgetusbg_get_udc_gadget (usbg_udc *u)
 Get gadget which is attached to this UDC.
 
usbg_gadgetusbg_get_first_gadget (usbg_state *s)
 Get first gadget in gadget list.
 
usbg_functionusbg_get_first_function (usbg_gadget *g)
 Get first function in function list.
 
usbg_configusbg_get_first_config (usbg_gadget *g)
 Get first config in config list.
 
usbg_bindingusbg_get_first_binding (usbg_config *c)
 Get first binding in binding list.
 
usbg_udcusbg_get_first_udc (usbg_state *s)
 Get first udc in udc list.
 
usbg_gadgetusbg_get_next_gadget (usbg_gadget *g)
 Get the next gadget on a list.
 
usbg_functionusbg_get_next_function (usbg_function *f)
 Get the next function on a list.
 
usbg_configusbg_get_next_config (usbg_config *c)
 Get the next config on a list.
 
usbg_bindingusbg_get_next_binding (usbg_binding *b)
 Get the next binding on a list.
 
usbg_udcusbg_get_next_udc (usbg_udc *u)
 Get the next udc on a list.
 
int usbg_export_function (usbg_function *f, FILE *stream)
 Exports usb function to file.
 
int usbg_export_config (usbg_config *c, FILE *stream)
 Exports configuration to file.
 
int usbg_export_gadget (usbg_gadget *g, FILE *stream)
 Exports whole gadget to file.
 
int usbg_import_function (usbg_gadget *g, FILE *stream, const char *instance, usbg_function **f)
 Imports usb function from file and adds it to given gadget.
 
int usbg_import_config (usbg_gadget *g, FILE *stream, int id, usbg_config **c)
 Imports usb configuration from file and adds it to given gadget.
 
int usbg_import_gadget (usbg_state *s, FILE *stream, const char *name, usbg_gadget **g)
 Imports usb gadget from file.
 
const char * usbg_get_func_import_error_text (usbg_gadget *g)
 Get text of error which occurred during last function import.
 
int usbg_get_func_import_error_line (usbg_gadget *g)
 Get line number where function import error occurred.
 
const char * usbg_get_config_import_error_text (usbg_gadget *g)
 Get text of error which occurred during last config import.
 
int usbg_get_config_import_error_line (usbg_gadget *g)
 Get line number where config import error occurred.
 
const char * usbg_get_gadget_import_error_text (usbg_state *s)
 Get text of error which occurred during last gadget import.
 
int usbg_get_gadget_import_error_line (usbg_state *s)
 Get line number where gadget import error occurred.
 

Detailed Description

Todo:
Clean up static buffers in structures