The usb gadget's config uses only one string information.
So instead of dynamically creating string information, only use one fixed.
Change-Id: Ie7e5bb198a429c8ac766002711f6add47d06fa1e
if (ret)
return ret;
- for (i = 0; usb_config->strs && usb_config->strs[i].lang_code; ++i) {
- ret = usbg_set_config_string(config, usb_config->strs[i].lang_code, usb_config->strs[i].config_str);
+ if (usb_config->strs.config_str) {
+ ret = usbg_set_config_string(config, usb_config->strs.lang_code, usb_config->strs.config_str);
if (ret)
return ret;
}
for (j = 0; gadget->configs[j]; ++j) {
struct usb_configuration *config = gadget->configs[j];
- if (config->strs && config->strs[0].lang_code)
- return false;
-
if (!config->funcs)
return false;
struct usb_configuration {
struct usb_configuration_attributes attrs;
- struct usb_configuration_strings *strs;
+ struct usb_configuration_strings strs;
struct usb_function **funcs;
};
static void simple_cleanup_config(struct usb_configuration *config)
{
- int i;
-
if (!config)
return;
- if (config->strs) {
- for (i = 0; config->strs[i].lang_code; ++i)
- free(config->strs[i].config_str);
-
- free(config->strs);
- }
+ free(config->strs.config_str);
if (config->funcs)
free(config->funcs);
config = calloc(1, sizeof(*config));
if (!config)
- goto out;
-
- config->strs = calloc(1, sizeof(*config->strs));
- if (!config->strs)
- goto free_config;
+ return -ENOMEM;
config->attrs.bmAttributs = DEFAULT_BMATTRIBUTES;
config->attrs.MaxPower = DEFAULT_MAX_POWER;
+ /* TODO. Here is where to set the string used in config of configfs */
+
*_config = config;
return 0;
-
-free_config:
- free(config);
-out:
- return -ENOMEM;
}
static int get_device_serial(char **out)