6 write_string(string a, string description)
8 int len = String::length(a);
10 printf("/* %s */\n", description);
11 printf("#define AO_%s_LEN 0x%02x\n", description, len * 2 + 2);
12 printf("#define AO_%s_STRING", description);
13 for (int i = 0; i < len; i++) {
17 if (0x20 <= c && c < 128)
18 printf(" '%c', 0", c);
20 printf(" LE_WORD(0x%04x),", c);
26 write_int(int a, string description)
28 printf ("/* %s */\n", description);
29 printf ("#define AO_%s_NUMBER %d\n\n", description, a);
32 string manufacturer = "altusmetrum.org";
33 string product = "TeleMetrum";
40 .var = { .arg_string = &manufacturer },
42 .name = "manufacturer",
44 .desc = "Manufacturer name." },
46 .var = { .arg_string = &product },
50 .desc = "Product name." },
52 .var = { .arg_int = &serial },
55 .expr_name = "number",
56 .desc = "Serial number." },
58 .prog_name = "usb descriptors",
64 string[dim(argv)-1] nargv = {[n] = argv[n+1]};
65 parseargs(&argd, &nargv);
66 write_string(manufacturer, "iManufacturer");
67 write_string(product, "iProduct");
68 write_string(sprintf("%06d", serial), "iSerial");
69 write_int(serial, "iSerial");