FreeCalypso > hg > freecalypso-tools
annotate miscutil/arfcn2ti.c @ 905:546bf873ccc8
tchtools: new program fc-vm2gsmx
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Wed, 28 Dec 2022 09:08:50 +0000 |
parents | b8cb116a7dc7 |
children |
rev | line source |
---|---|
758
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /* |
b8cb116a7dc7
arfcn2ti 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 |
b8cb116a7dc7
arfcn2ti 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 |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 * components and all external interfaces do use standard ARFCNs, thus |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 * conversion functions are invoked at appropriate points in the firmware. |
b8cb116a7dc7
arfcn2ti 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, |
b8cb116a7dc7
arfcn2ti 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 |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 * standard ARFCNs and L1-internal radio_freq. |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 * |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 * The present utility converts a standard ARFCN into TI L1 radio_freq. |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 */ |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 #include <stdio.h> |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 #include <stdlib.h> |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 #include <string.h> |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 #include <strings.h> |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 main(argc, argv) |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 char **argv; |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20 { |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 int arfcn; |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 if (argc != 3) { |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 usage: fprintf(stderr, "usage: %s {eu|us} arfcn\n", argv[0]); |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 exit(1); |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 } |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27 arfcn = atoi(argv[2]); |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 if (!strcmp(argv[1], "eu")) |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 arfcn2ti_eu(arfcn); |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 else if (!strcmp(argv[1], "us")) |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 arfcn2ti_us(arfcn); |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 else |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 goto usage; |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 exit(0); |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 } |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 arfcn2ti_eu(arfcn) |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38 { |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
39 if (arfcn == 0) |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
40 arfcn = 174; |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41 else if ((arfcn >= 975) && (arfcn <= 1023)) |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
42 arfcn -= 850; |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43 else if ((arfcn >= 512) && (arfcn <= 885)) |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
44 arfcn -= 337; |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
45 else if ((arfcn >= 1) && (arfcn <= 124)) |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
46 ; |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
47 else { |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48 fprintf(stderr, |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
49 "error: specified ARFCN is invalid for dual-EU\n"); |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
50 exit(1); |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
51 } |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
52 printf("%d\n", arfcn); |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
53 } |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
54 |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
55 arfcn2ti_us(arfcn) |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
56 { |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
57 if ((arfcn >= 128) && (arfcn <= 251)) |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
58 arfcn -= 127; |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
59 else if ((arfcn >= 512) && (arfcn <= 810)) |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
60 arfcn -= 387; |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
61 else { |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
62 fprintf(stderr, |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
63 "error: specified ARFCN is invalid for dual-US\n"); |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
64 exit(1); |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
65 } |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
66 printf("%d\n", arfcn); |
b8cb116a7dc7
arfcn2ti utility added to miscutil
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
67 } |