Loading...
Searching...
No Matches
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)
#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_gadget * | usbg_get_gadget (usbg_state *s, const char *name)
| Get a gadget device by name.
usbg_function * | usbg_get_function (usbg_gadget *g, usbg_function_type type, const char *instance)
| Get a function by name.
usbg_config * | usbg_get_config (usbg_gadget *g, int id, const char *label)
| Get a configuration by name.
usbg_udc * | usbg_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_function * | usbg_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_config * | usbg_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_udc * | usbg_get_gadget_udc (usbg_gadget *g)
| Get udc to which gadget is bound.
usbg_gadget * | usbg_get_udc_gadget (usbg_udc *u)
| Get gadget which is attached to this UDC.
usbg_gadget * | usbg_get_first_gadget (usbg_state *s)
| Get first gadget in gadget list.
usbg_function * | usbg_get_first_function (usbg_gadget *g)
| Get first function in function list.
usbg_config * | usbg_get_first_config (usbg_gadget *g)
| Get first config in config list.
usbg_binding * | usbg_get_first_binding (usbg_config *c)
| Get first binding in binding list.
usbg_udc * | usbg_get_first_udc (usbg_state *s)
| Get first udc in udc list.
usbg_gadget * | usbg_get_next_gadget (usbg_gadget *g)
| Get the next gadget on a list.
usbg_function * | usbg_get_next_function (usbg_function *f)
| Get the next function on a list.
usbg_config * | usbg_get_next_config (usbg_config *c)
| Get the next config on a list.
usbg_binding * | usbg_get_next_binding (usbg_binding *b)
| Get the next binding on a list.
usbg_udc * | usbg_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