diff options
Diffstat (limited to 'ao-make-product.5c')
-rw-r--r-- | ao-make-product.5c | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/ao-make-product.5c b/ao-make-product.5c index 4f5bcba9..933032dd 100644 --- a/ao-make-product.5c +++ b/ao-make-product.5c @@ -3,13 +3,14 @@ autoimport ParseArgs; void -write_string(string a, string description) +write_ucs2(string a, string description) { int len = String::length(a); printf("/* %s */\n", description); printf("#define AO_%s_LEN 0x%02x\n", description, len * 2 + 2); - printf("#define AO_%s_STRING", description); + printf("#define AO_%s_STRING \"%s\"\n", description, a); + printf("#define AO_%s_UCS2", description); for (int i = 0; i < len; i++) { int c = a[i]; if (i > 0) @@ -23,6 +24,13 @@ write_string(string a, string description) } void +write_string(string a, string description) +{ + printf ("/* %s */\n", description); + printf ("#define AO_%s_STRING \"%s\"\n", description, a); +} + +void write_int(int a, string description) { printf ("/* %s */\n", description); @@ -31,6 +39,7 @@ write_int(int a, string description) string manufacturer = "altusmetrum.org"; string product = "TeleMetrum"; +string version = "0.0"; int serial = 1; int user_argind = 0; @@ -54,6 +63,12 @@ argdesc argd = { .name = "serial", .expr_name = "number", .desc = "Serial number." }, + { + .var = { .arg_string = &version }, + .abbr = 'v', + .name = "version", + .expr_name = "string", + .desc = "Program version." }, }, .prog_name = "usb descriptors", }; @@ -63,10 +78,11 @@ main() { string[dim(argv)-1] nargv = {[n] = argv[n+1]}; parseargs(&argd, &nargv); - write_string(manufacturer, "iManufacturer"); - write_string(product, "iProduct"); - write_string(sprintf("%06d", serial), "iSerial"); + write_ucs2(manufacturer, "iManufacturer"); + write_ucs2(product, "iProduct"); + write_ucs2(sprintf("%06d", serial), "iSerial"); write_int(serial, "iSerial"); + write_string(version, "iVersion"); } main(); |