annotate miscutil/ti2arfcn.c @ 921:74d284add54d

fc-fsio: guard against bogus readdir results from the target If the FFS being operated on contains SE K2x0 extended filenames, readdir will return strings that are bad for printing. We need to guard against this possibility, and also against possible other bogosity that could be sent by other alien firmwares.
author Mychaela Falconia <falcon@freecalypso.org>
date Sat, 31 Dec 2022 22:55:23 +0000
parents d2fccd82a83e
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
759
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 /*
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 * TI's TCS211 L1 does not use standard ARFCNs internally, instead it uses
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 * its own non-standard radio_freq numbers in their place. Other firmware
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4 * components and all external interfaces do use standard ARFCNs, thus
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5 * conversion functions are invoked at appropriate points in the firmware.
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6 * However, L1-internal radio_freq numbers are emitted in L1 debug traces,
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 * thus anyone looking at these traces needs to be able to convert between
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 * standard ARFCNs and L1-internal radio_freq.
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 *
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 * The present utility converts TI's radio_freq numbers as seen in L1 traces
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11 * into standard ARFCNs.
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12 */
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14 #include <stdio.h>
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 #include <stdlib.h>
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16 #include <string.h>
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17 #include <strings.h>
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 main(argc, argv)
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20 char **argv;
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21 {
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22 int ti_num;
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24 if (argc != 3) {
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25 usage: fprintf(stderr, "usage: %s {eu|us} L1_radio_freq\n", argv[0]);
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26 exit(1);
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27 }
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28 ti_num = atoi(argv[2]);
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
29 if (!strcmp(argv[1], "eu"))
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
30 ti2arfcn_eu(ti_num);
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
31 else if (!strcmp(argv[1], "us"))
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
32 ti2arfcn_us(ti_num);
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
33 else
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
34 goto usage;
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
35 exit(0);
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
36 }
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
37
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
38 ti2arfcn_eu(radio_freq)
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
39 {
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
40 int arfcn;
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
41
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
42 if (radio_freq < 1 || radio_freq > 548) {
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
43 fprintf(stderr,
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
44 "error: specified radio_freq is out of range for dual-EU\n");
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
45 exit(1);
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
46 }
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
47 if (radio_freq < 175) {
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
48 if (radio_freq <= 124)
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
49 arfcn = radio_freq;
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
50 else if (radio_freq < 174)
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
51 arfcn = radio_freq - 125 + 975;
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
52 else
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
53 arfcn = 0;
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
54 } else
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
55 arfcn = radio_freq - 175 + 512;
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
56 printf("%d\n", arfcn);
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
57 }
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
58
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
59 ti2arfcn_us(radio_freq)
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
60 {
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
61 int arfcn;
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
62
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
63 if (radio_freq < 1 || radio_freq > 423) {
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
64 fprintf(stderr,
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
65 "error: specified radio_freq is out of range for dual-US\n");
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
66 exit(1);
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
67 }
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
68 if (radio_freq < 125)
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
69 arfcn = radio_freq - 1 + 128;
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
70 else
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
71 arfcn = radio_freq - 125 + 512;
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
72 printf("%d\n", arfcn);
d2fccd82a83e ti2arfcn utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
73 }