libusbgx-0.3.0
|
#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_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. | |