mirror of
https://github.com/linux-usb-gadgets/libusbgx.git
synced 2025-07-13 15:19:43 +03:00
Merge pull request #83 from mgrzeschik/uac2-controls
uac2: add additional configuration controls
This commit is contained in:
commit
ec0b01c03f
2 changed files with 93 additions and 0 deletions
|
@ -31,6 +31,26 @@ struct usbg_f_uac2_attrs {
|
||||||
int p_chmask;
|
int p_chmask;
|
||||||
int p_srate;
|
int p_srate;
|
||||||
int p_ssize;
|
int p_ssize;
|
||||||
|
unsigned char p_hs_bint;
|
||||||
|
unsigned char c_hs_bint;
|
||||||
|
|
||||||
|
const char * c_sync;
|
||||||
|
unsigned int req_number;
|
||||||
|
unsigned int fb_max;
|
||||||
|
|
||||||
|
bool p_mute_present;
|
||||||
|
bool p_volume_present;
|
||||||
|
short p_volume_min;
|
||||||
|
short p_volume_max;
|
||||||
|
short p_volume_res;
|
||||||
|
|
||||||
|
bool c_mute_present;
|
||||||
|
bool c_volume_present;
|
||||||
|
short c_volume_min;
|
||||||
|
short c_volume_max;
|
||||||
|
short c_volume_res;
|
||||||
|
|
||||||
|
const char *function_name;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum usbg_f_uac2_attr {
|
enum usbg_f_uac2_attr {
|
||||||
|
@ -41,6 +61,22 @@ enum usbg_f_uac2_attr {
|
||||||
USBG_F_UAC2_P_CHMASK,
|
USBG_F_UAC2_P_CHMASK,
|
||||||
USBG_F_UAC2_P_SRATE,
|
USBG_F_UAC2_P_SRATE,
|
||||||
USBG_F_UAC2_P_SSIZE,
|
USBG_F_UAC2_P_SSIZE,
|
||||||
|
USBG_F_UAC2_P_HS_BINT,
|
||||||
|
USBG_F_UAC2_C_HS_BINT,
|
||||||
|
USBG_F_UAC2_C_SYNC,
|
||||||
|
USBG_F_UAC2_REQ_NUMBER,
|
||||||
|
USBG_F_UAC2_FB_MAX,
|
||||||
|
USBG_F_UAC2_P_MUTE_PRESENT,
|
||||||
|
USBG_F_UAC2_P_VOLUME_PRESENT,
|
||||||
|
USBG_F_UAC2_P_VOLUME_MIN,
|
||||||
|
USBG_F_UAC2_P_VOLUME_MAX,
|
||||||
|
USBG_F_UAC2_P_VOLUME_RES,
|
||||||
|
USBG_F_UAC2_C_MUTE_PRESENT,
|
||||||
|
USBG_F_UAC2_C_VOLUME_PRESENT,
|
||||||
|
USBG_F_UAC2_C_VOLUME_MIN,
|
||||||
|
USBG_F_UAC2_C_VOLUME_MAX,
|
||||||
|
USBG_F_UAC2_C_VOLUME_RES,
|
||||||
|
USBG_F_UAC2_FUNCTION_NAME,
|
||||||
USBG_F_UAC2_ATTR_MAX
|
USBG_F_UAC2_ATTR_MAX
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -51,6 +87,27 @@ union usbg_f_uac2_attr_val {
|
||||||
int p_chmask;
|
int p_chmask;
|
||||||
int p_srate;
|
int p_srate;
|
||||||
int p_ssize;
|
int p_ssize;
|
||||||
|
|
||||||
|
char p_hs_bint;
|
||||||
|
char c_hs_bint;
|
||||||
|
|
||||||
|
const char * c_sync;
|
||||||
|
unsigned int req_number;
|
||||||
|
unsigned int fb_max;
|
||||||
|
|
||||||
|
bool p_mute_present;
|
||||||
|
bool p_volume_present;
|
||||||
|
int p_volume_min;
|
||||||
|
int p_volume_max;
|
||||||
|
int p_volume_res;
|
||||||
|
|
||||||
|
bool c_mute_present;
|
||||||
|
bool c_volume_present;
|
||||||
|
int c_volume_min;
|
||||||
|
int c_volume_max;
|
||||||
|
int c_volume_res;
|
||||||
|
|
||||||
|
const char * function_name;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define USBG_F_UAC2_INT_TO_ATTR_VAL(WHAT) \
|
#define USBG_F_UAC2_INT_TO_ATTR_VAL(WHAT) \
|
||||||
|
|
|
@ -23,6 +23,26 @@ struct usbg_f_uac2 {
|
||||||
struct usbg_function func;
|
struct usbg_function func;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define UAC2_BOOL_ATTR(_name) \
|
||||||
|
{ \
|
||||||
|
.name = #_name, \
|
||||||
|
.offset = offsetof(struct usbg_f_uac2_attrs, _name), \
|
||||||
|
.get = usbg_get_bool, \
|
||||||
|
.set = usbg_set_bool, \
|
||||||
|
.import = usbg_get_config_node_bool, \
|
||||||
|
.export = usbg_set_config_node_bool, \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define UAC2_STRING_ATTR(_name) \
|
||||||
|
{ \
|
||||||
|
.name = #_name, \
|
||||||
|
.offset = offsetof(struct usbg_f_uac2_attrs, _name), \
|
||||||
|
.get = usbg_get_string, \
|
||||||
|
.set = usbg_set_string, \
|
||||||
|
.export = usbg_set_config_node_string, \
|
||||||
|
.import = usbg_get_config_node_string, \
|
||||||
|
}
|
||||||
|
|
||||||
#define UAC2_DEC_ATTR(_name) \
|
#define UAC2_DEC_ATTR(_name) \
|
||||||
{ \
|
{ \
|
||||||
.name = #_name, \
|
.name = #_name, \
|
||||||
|
@ -47,6 +67,22 @@ static struct {
|
||||||
[USBG_F_UAC2_P_CHMASK] = UAC2_DEC_ATTR(p_chmask),
|
[USBG_F_UAC2_P_CHMASK] = UAC2_DEC_ATTR(p_chmask),
|
||||||
[USBG_F_UAC2_P_SRATE] = UAC2_DEC_ATTR(p_srate),
|
[USBG_F_UAC2_P_SRATE] = UAC2_DEC_ATTR(p_srate),
|
||||||
[USBG_F_UAC2_P_SSIZE] = UAC2_DEC_ATTR(p_ssize),
|
[USBG_F_UAC2_P_SSIZE] = UAC2_DEC_ATTR(p_ssize),
|
||||||
|
[USBG_F_UAC2_P_HS_BINT] = UAC2_DEC_ATTR(p_hs_bint),
|
||||||
|
[USBG_F_UAC2_C_HS_BINT] = UAC2_DEC_ATTR(c_hs_bint),
|
||||||
|
[USBG_F_UAC2_C_SYNC] = UAC2_STRING_ATTR(c_sync),
|
||||||
|
[USBG_F_UAC2_REQ_NUMBER] = UAC2_DEC_ATTR(req_number),
|
||||||
|
[USBG_F_UAC2_FB_MAX] = UAC2_DEC_ATTR(fb_max),
|
||||||
|
[USBG_F_UAC2_P_MUTE_PRESENT] = UAC2_BOOL_ATTR(p_mute_present),
|
||||||
|
[USBG_F_UAC2_P_VOLUME_PRESENT] = UAC2_BOOL_ATTR(p_volume_present),
|
||||||
|
[USBG_F_UAC2_P_VOLUME_MIN] = UAC2_DEC_ATTR(p_volume_min),
|
||||||
|
[USBG_F_UAC2_P_VOLUME_MAX] = UAC2_DEC_ATTR(p_volume_max),
|
||||||
|
[USBG_F_UAC2_P_VOLUME_RES] = UAC2_DEC_ATTR(p_volume_res),
|
||||||
|
[USBG_F_UAC2_C_MUTE_PRESENT] = UAC2_BOOL_ATTR(c_mute_present),
|
||||||
|
[USBG_F_UAC2_C_VOLUME_PRESENT] = UAC2_BOOL_ATTR(c_volume_present),
|
||||||
|
[USBG_F_UAC2_C_VOLUME_MIN] = UAC2_DEC_ATTR(c_volume_min),
|
||||||
|
[USBG_F_UAC2_C_VOLUME_MAX] = UAC2_DEC_ATTR(c_volume_max),
|
||||||
|
[USBG_F_UAC2_C_VOLUME_RES] = UAC2_DEC_ATTR(c_volume_res),
|
||||||
|
[USBG_F_UAC2_FUNCTION_NAME] = UAC2_STRING_ATTR(function_name),
|
||||||
};
|
};
|
||||||
|
|
||||||
#undef UAC2_DEC_ATTR
|
#undef UAC2_DEC_ATTR
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue