altos: Define USB product ID in per-product Makefile.defs file
authorKeith Packard <keithp@keithp.com>
Sun, 22 Aug 2010 00:09:41 +0000 (17:09 -0700)
committerKeith Packard <keithp@keithp.com>
Sun, 22 Aug 2010 00:09:41 +0000 (17:09 -0700)
This allows Win7 to tell which kind of device is connected purely by
USB id as it doesn't expose the USB product ID string to user space.

Signed-off-by: Keith Packard <keithp@keithp.com>
src/Makefile.proto
src/ao-make-product.5c
src/ao_product.c
src/teledongle-v0.1/Makefile.defs
src/teledongle-v0.2/Makefile.defs
src/telemetrum-v0.1-sirf/Makefile.defs
src/telemetrum-v0.1-sky/Makefile.defs
src/telemetrum-v1.0/Makefile.defs
src/tidongle/Makefile.defs

index 106333a677fd68bb29f41fddb219d309c5603ae3..eedb878a778e3f7b6875ff31ea3550d5eccc10f2 100644 (file)
@@ -214,7 +214,7 @@ all: ../$(PROG)
        nickle $< > $@
 
 ao_product.h: ao-make-product.5c
-       $(call quiet,NICKLE,$<) $< -m altusmetrum.org -p $(PRODUCT) -v $(VERSION) > $@
+       $(call quiet,NICKLE,$<) $< -m altusmetrum.org -i $(IDPRODUCT) -p $(PRODUCT) -v $(VERSION) > $@
 
 ao_product.rel: ao_product.c ao_product.h
        $(call quiet,CC) -c $(CFLAGS) -D PRODUCT_DEFS='\"ao_product.h\"' -o$@ $<
index 933032dd6344f3835bfe88d8066ba1c2c508d724..5f2eb8e895557a492405c016336cac51dd3eedea 100644 (file)
@@ -37,11 +37,19 @@ write_int(int a, string description)
        printf ("#define AO_%s_NUMBER %d\n\n", description, a);
 }
 
+void
+write_hex(int a, string description)
+{
+       printf ("/* %s */\n", description);
+       printf ("#define AO_%s_NUMBER 0x%04x\n\n", description, a);
+}
+
 string manufacturer = "altusmetrum.org";
 string product = "TeleMetrum";
 string version = "0.0";
 int serial = 1;
 int user_argind = 0;
+int id_product = 0x000a;
 
 argdesc argd = {
        .args = {
@@ -57,6 +65,12 @@ argdesc argd = {
                        .name = "product",
                        .expr_name = "prod",
                        .desc = "Product name." },
+               {
+                       .var = { .arg_int = &id_product },
+                       .abbr = 'i',
+                       .name = "id_product",
+                       .expr_name = "id_p",
+                       .desc = "Product ID." },
                {
                        .var = { .arg_int = &serial },
                        .abbr = 's',
@@ -82,6 +96,7 @@ main()
        write_ucs2(product, "iProduct");
        write_ucs2(sprintf("%06d", serial), "iSerial");
        write_int(serial, "iSerial");
+       write_hex(id_product, "idProduct");
        write_string(version, "iVersion");
 }
 
index b42e62c09a800c92644542a63795d59cb537c017..2bd0b59c870146865fc36fc5091b818f23b6b3c5 100644 (file)
@@ -40,7 +40,7 @@ const uint8_t ao_usb_descriptors [] =
        0x00,                   /*  bDeviceProtocol */
        AO_USB_CONTROL_SIZE,    /*  bMaxPacketSize */
        LE_WORD(0xFFFE),        /*  idVendor */
-       LE_WORD(0x000A),        /*  idProduct */
+       LE_WORD(AO_idProduct_NUMBER),   /*  idProduct */
        LE_WORD(0x0100),        /*  bcdDevice */
        0x01,                   /*  iManufacturer */
        0x02,                   /*  iProduct */
index 06559b2881a1ed5ca71456ffeda948eb1e16636c..be7741d889798be64b6577c83ba54131fdb31493 100644 (file)
@@ -6,3 +6,4 @@ SRC = \
 
 PRODUCT=TeleDongle-v0.1
 PRODUCT_DEF=-DTELEDONGLE_V_0_1
+IDPRODUCT=0x000c
index 23694fdaaf6463283307dcf271817297440b5331..cbec7805df5b45f651ab6b4f57b2b0a08e645e98 100644 (file)
@@ -6,3 +6,4 @@ SRC = \
 
 PRODUCT=TeleDongle-v0.2
 PRODUCT_DEF=-DTELEDONGLE_V_0_2
+IDPRODUCT=0x000c
index 7306683eb340aa07ea7298a700c71b3acdeea07a..2ce6e6ed2cdf31b5c821b00054d23ae8fc3d8d07 100644 (file)
@@ -8,3 +8,4 @@ SRC = \
 
 PRODUCT=TeleMetrum-v0.1-SiRF
 PRODUCT_DEF=-DTELEMETRUM_V_0_1
+IDPRODUCT=0x000b
index df475baafa4c3110e9e96222dd67012779522d6a..098ac547aa8bebe5f735e6814f2f84f9afb29a62 100644 (file)
@@ -8,3 +8,4 @@ SRC = \
 
 PRODUCT=TeleMetrum-v0.1
 PRODUCT_DEF=-DTELEMETRUM_V_0_1
+IDPRODUCT=0x000b
index e3cc5eb2f80335b8593023c9e7882083195a067c..624ce6e84e5febd303816cdd358df31ce6c7fe92 100644 (file)
@@ -8,3 +8,4 @@ SRC = \
 
 PRODUCT=TeleMetrum-v1.0
 PRODUCT_DEF=-DTELEMETRUM_V_1_0
+IDPRODUCT=0x000b
index 5b910b9b3c39250b468a767428bc251846e3e953..fdd517327b55e0336a5938c4c2654fac8a975872 100644 (file)
@@ -6,3 +6,4 @@ SRC = \
 PRODUCT=TIDongle
 
 PRODUCT_DEF=-DTIDONGLE
+IDPRODUCT=0x000a