[PATCH v2 03/26] libusbg: Separate gadget strings from gadget.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Gadget strings are not logically part of gadget, so should
be separated.

Signed-off-by: Krzysztof Opasiak <k.opasiak@xxxxxxxxxxx>
---
 examples/show-gadgets.c |    6 +++---
 include/usbg/usbg.h     |   14 +++++++++++---
 src/usbg.c              |   20 ++++++++++----------
 3 files changed, 24 insertions(+), 16 deletions(-)

diff --git a/examples/show-gadgets.c b/examples/show-gadgets.c
index 29a30d3..5b6cb61 100644
--- a/examples/show-gadgets.c
+++ b/examples/show-gadgets.c
@@ -40,9 +40,9 @@ void show_gadget(struct gadget *g)
 	fprintf(stdout, "  bcdUSB\t\t0x%04x\n", g->attrs.bcdUSB);
 	fprintf(stdout, "  idVendor\t\t0x%04x\n", g->attrs.idVendor);
 	fprintf(stdout, "  idProduct\t\t0x%04x\n", g->attrs.idProduct);
-	fprintf(stdout, "  Serial Number\t\t%s\n", g->str_ser);
-	fprintf(stdout, "  Manufacturer\t\t%s\n", g->str_mnf);
-	fprintf(stdout, "  Product\t\t%s\n", g->str_prd);
+	fprintf(stdout, "  Serial Number\t\t%s\n", g->strs.str_ser);
+	fprintf(stdout, "  Manufacturer\t\t%s\n", g->strs.str_mnf);
+	fprintf(stdout, "  Product\t\t%s\n", g->strs.str_prd);
 }
 
 void show_function(struct function *f)
diff --git a/include/usbg/usbg.h b/include/usbg/usbg.h
index 840c047..5b2213d 100644
--- a/include/usbg/usbg.h
+++ b/include/usbg/usbg.h
@@ -68,6 +68,16 @@ struct gadget_attrs
 	uint16_t bcdDevice;
 };
 
+/**
+ * @struct gadget_strs
+ * @brief USB gadget device strings
+ */
+struct gadget_strs
+{
+	char str_ser[USBG_MAX_STR_LENGTH];
+	char str_mnf[USBG_MAX_STR_LENGTH];
+	char str_prd[USBG_MAX_STR_LENGTH];
+};
 
 /**
  * @struct gadget
@@ -80,10 +90,8 @@ struct gadget
 	char udc[USBG_MAX_STR_LENGTH];
 
 	struct gadget_attrs attrs;
+	struct gadget_strs strs;
 
-	char str_ser[USBG_MAX_STR_LENGTH];
-	char str_mnf[USBG_MAX_STR_LENGTH];
-	char str_prd[USBG_MAX_STR_LENGTH];
 	TAILQ_ENTRY(gadget) gnode;
 	TAILQ_HEAD(chead, config) configs;
 	TAILQ_HEAD(fhead, function) functions;
diff --git a/src/usbg.c b/src/usbg.c
index f5e06ba..b908a98 100644
--- a/src/usbg.c
+++ b/src/usbg.c
@@ -335,17 +335,17 @@ static void usbg_parse_gadget_attrs(char *path, char *name,
 	g_attrs->bcdDevice = (uint16_t)usbg_read_hex(path, name, "bcdDevice");
 }
 
-static void usbg_parse_strings(char *path, struct gadget *g)
+static void usbg_parse_strings(char *path, char *name, struct gadget_strs *g_strs)
 {
 	/* Strings - hardcoded to U.S. English only for now */
 	int lang = LANG_US_ENG;
 	char spath[USBG_MAX_PATH_LENGTH];
 
-	sprintf(spath, "%s/%s/%s/0x%x", path, g->name, STRINGS_DIR, lang);
+	sprintf(spath, "%s/%s/%s/0x%x", path, name, STRINGS_DIR, lang);
 
-	usbg_read_string(spath, "", "serialnumber", g->str_ser);
-	usbg_read_string(spath, "", "manufacturer", g->str_mnf);
-	usbg_read_string(spath, "", "product", g->str_prd);
+	usbg_read_string(spath, "", "serialnumber", g_strs->str_ser);
+	usbg_read_string(spath, "", "manufacturer", g_strs->str_mnf);
+	usbg_read_string(spath, "", "product", g_strs->str_prd);
 }
 
 static int usbg_parse_gadgets(char *path, struct state *s)
@@ -365,7 +365,7 @@ static int usbg_parse_gadgets(char *path, struct state *s)
 		/* UDC bound to, if any */
 		usbg_read_string(path, g->name, "UDC", g->udc);
 		usbg_parse_gadget_attrs(path, g->name, &g->attrs);
-		usbg_parse_strings(path, g);
+		usbg_parse_strings(path, g->name, &g->strs);
 		usbg_parse_functions(path, g);
 		usbg_parse_configs(path, g);
 		TAILQ_INSERT_TAIL(&s->gadgets, g, gnode);
@@ -548,7 +548,7 @@ struct gadget *usbg_create_gadget(struct state *s, char *name,
 	usbg_write_hex16(s->path, name, "idProduct", idProduct);
 
 	usbg_parse_gadget_attrs(s->path, name, &g->attrs);
-	usbg_parse_strings(s->path, g);
+	usbg_parse_strings(s->path, name, &g->strs);
 
 	/* Insert in string order */
 	if (TAILQ_EMPTY(&s->gadgets) ||
@@ -610,7 +610,7 @@ void usbg_set_gadget_serial_number(struct gadget *g, int lang, char *serno)
 
 	mkdir(path, S_IRWXU|S_IRWXG|S_IRWXO);
 
-	strcpy(g->str_ser, serno);
+	strcpy(g->strs.str_ser, serno);
 
 	usbg_write_string(path, "", "serialnumber", serno);
 }
@@ -623,7 +623,7 @@ void usbg_set_gadget_manufacturer(struct gadget *g, int lang, char *mnf)
 
 	mkdir(path, S_IRWXU|S_IRWXG|S_IRWXO);
 
-	strcpy(g->str_mnf, mnf);
+	strcpy(g->strs.str_mnf, mnf);
 
 	usbg_write_string(path, "", "manufacturer", mnf);
 }
@@ -636,7 +636,7 @@ void usbg_set_gadget_product(struct gadget *g, int lang, char *prd)
 
 	mkdir(path, S_IRWXU|S_IRWXG|S_IRWXO);
 
-	strcpy(g->str_prd, prd);
+	strcpy(g->strs.str_prd, prd);
 
 	usbg_write_string(path, "", "product", prd);
 }
-- 
1.7.9.5

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux