Enable GPS degraded mode, set 10 sec degraded timeout.
[fw/altos] / src / ao-make-product.5c
1 #!/bin/sh
2
3 autoimport ParseArgs;
4
5 void
6 write_ucs2(string a, string description)
7 {
8         int len = String::length(a);
9
10         printf("/* %s */\n", description);
11         printf("#define AO_%s_LEN 0x%02x\n", description, len * 2 + 2);
12         printf("#define AO_%s_STRING \"%s\"\n", description, a);
13         printf("#define AO_%s_UCS2", description);
14         for (int i = 0; i < len; i++) {
15                 int     c = a[i];
16                 if (i > 0)
17                         printf(",");
18                 if (0x20 <= c && c < 128)
19                         printf(" '%c', 0", c);
20                 else
21                         printf(" LE_WORD(0x%04x),", c);
22         }
23         printf("\n\n");
24 }
25
26 void
27 write_string(string a, string description)
28 {
29         printf ("/* %s */\n", description);
30         printf ("#define AO_%s_STRING \"%s\"\n", description, a);
31 }
32
33 void
34 write_int(int a, string description)
35 {
36         printf ("/* %s */\n", description);
37         printf ("#define AO_%s_NUMBER %d\n\n", description, a);
38 }
39
40 string manufacturer = "altusmetrum.org";
41 string product = "TeleMetrum";
42 string version = "0.0";
43 int serial = 1;
44 int user_argind = 0;
45
46 argdesc argd = {
47         .args = {
48                 {
49                         .var = { .arg_string = &manufacturer },
50                         .abbr = 'm',
51                         .name = "manufacturer",
52                         .expr_name = "manf",
53                         .desc = "Manufacturer name." },
54                 {
55                         .var = { .arg_string = &product },
56                         .abbr = 'p',
57                         .name = "product",
58                         .expr_name = "prod",
59                         .desc = "Product name." },
60                 {
61                         .var = { .arg_int = &serial },
62                         .abbr = 's',
63                         .name = "serial",
64                         .expr_name = "number",
65                         .desc = "Serial number." },
66                 {
67                         .var = { .arg_string = &version },
68                         .abbr = 'v',
69                         .name = "version",
70                         .expr_name = "string",
71                         .desc = "Program version." },
72         },
73         .prog_name = "usb descriptors",
74 };
75
76 void
77 main()
78 {
79         string[dim(argv)-1] nargv = {[n] = argv[n+1]};
80         parseargs(&argd, &nargv);
81         write_ucs2(manufacturer, "iManufacturer");
82         write_ucs2(product, "iProduct");
83         write_ucs2(sprintf("%06d", serial), "iSerial");
84         write_int(serial, "iSerial");
85         write_string(version, "iVersion");
86 }
87
88 main();