1010
1111import android .telephony .CellInfo ;
1212
13- public class DataExtractor {
13+ public class DataExtractor { // data to be moved out of here
1414 public static BasicCellData getBasicData (CellData cellData ) {
1515 if (cellData instanceof NrCellData ) {
1616 BasicCellData basicCellData = getNrBasicData (cellData .getChannelNumber ());
1717 if (basicCellData .getBand () == -1
1818 && (cellData .getBand () != -1 && cellData .getBand () != CellInfo .UNAVAILABLE )) {
19- return new BasicCellData (cellData .getBand (), -1 ); // temporary solution to get at least the band
19+ int freq ;
20+
21+ if (cellData .getChannelNumber () <= 599999 )
22+ freq = (int ) (0.005 * cellData .getChannelNumber ());
23+ else
24+ freq = 3000 + (int ) (0.015 * (cellData .getChannelNumber () - 600000 ));
25+
26+ return new BasicCellData (cellData .getBand (), freq );
2027 }
2128
2229 return basicCellData ;
@@ -32,10 +39,42 @@ public static BasicCellData getBasicData(CellData cellData) {
3239 return new BasicCellData (-1 , -1 );
3340 }
3441
35- private static BasicCellData getNrBasicData (int nrarfcn ) {
42+ private static BasicCellData getNrBasicData (int nrarfcn ) { // currently might return inaccurate data
43+ if (nrarfcn >= 422000 && nrarfcn <= 434000 )
44+ return new BasicCellData (1 , 2100 );
45+ if (nrarfcn >= 386000 && nrarfcn <= 398000 )
46+ return new BasicCellData (2 , 1900 );
47+ if (nrarfcn >= 361000 && nrarfcn <= 376000 )
48+ return new BasicCellData (3 , 1800 );
49+ if (nrarfcn >= 173800 && nrarfcn <= 178800 )
50+ return new BasicCellData (5 , 850 );
51+ if (nrarfcn >= 524000 && nrarfcn <= 538000 )
52+ return new BasicCellData (7 , 2600 );
53+ if (nrarfcn >= 185000 && nrarfcn <= 192000 )
54+ return new BasicCellData (8 , 900 );
55+ if (nrarfcn >= 145800 && nrarfcn <= 149200 )
56+ return new BasicCellData (12 , 700 );
57+ if (nrarfcn >= 149200 && nrarfcn <= 155400 )
58+ return new BasicCellData (13 , 700 );
59+ if (nrarfcn >= 151600 && nrarfcn <= 153600 )
60+ return new BasicCellData (14 , 700 );
61+ if (nrarfcn >= 172000 && nrarfcn <= 175000 )
62+ return new BasicCellData (18 , 800 );
63+ if (nrarfcn >= 158200 && nrarfcn <= 164200 )
64+ return new BasicCellData (20 , 800 );
65+ if (nrarfcn >= 305000 && nrarfcn <= 325300 )
66+ return new BasicCellData (24 , 1600 );
67+ if (nrarfcn >= 386000 && nrarfcn <= 399000 )
68+ return new BasicCellData (25 , 1900 );
69+ if (nrarfcn >= 171800 && nrarfcn <= 178800 )
70+ return new BasicCellData (26 , 850 );
71+ if (nrarfcn >= 151600 && nrarfcn <= 160600 )
72+ return new BasicCellData (28 , 700 );
73+ if (nrarfcn >= 143400 && nrarfcn <= 145600 )
74+ return new BasicCellData (29 , 700 ); // WIP: EU/NA/ASIA/GLOBAL overlap fix with mcc
75+
3676 if (nrarfcn >= 620000 && nrarfcn <= 653333 )
3777 return new BasicCellData (78 , 3500 );
38- // n78
3978 if (nrarfcn >= 636667 && nrarfcn <= 646666 )
4079 return new BasicCellData (48 , 3600 );
4180 if (nrarfcn >= 653334 && nrarfcn <= 680000 )
@@ -46,50 +85,20 @@ private static BasicCellData getNrBasicData(int nrarfcn) {
4685 return new BasicCellData (46 , 5200 );
4786 if (nrarfcn >= 514000 && nrarfcn <= 524000 )
4887 return new BasicCellData (38 , 2600 );
49- // n38
5088 if (nrarfcn >= 499200 && nrarfcn <= 537999 )
5189 return new BasicCellData (41 , 2500 );
5290 if (nrarfcn >= 496700 && nrarfcn <= 499000 )
5391 return new BasicCellData (53 , 2500 );
5492 if (nrarfcn >= 460000 && nrarfcn <= 480000 )
5593 return new BasicCellData (40 , 2300 );
56- if (nrarfcn >= 422000 && nrarfcn <= 434000 )
57- return new BasicCellData (1 , 2100 );
5894 if (nrarfcn >= 422000 && nrarfcn <= 440000 )
5995 return new BasicCellData (66 , 1700 );
6096 if (nrarfcn >= 399000 && nrarfcn <= 404000 )
6197 return new BasicCellData (70 , 1700 );
6298 if (nrarfcn >= 402000 && nrarfcn <= 405000 )
6399 return new BasicCellData (34 , 2000 );
64- if (nrarfcn >= 386000 && nrarfcn <= 399000 )
65- return new BasicCellData (25 , 1900 );
66- // n25
67- if (nrarfcn >= 386000 && nrarfcn <= 398000 )
68- return new BasicCellData (2 , 1900 );
69100 if (nrarfcn >= 376000 && nrarfcn <= 384000 )
70101 return new BasicCellData (39 , 1900 );
71- if (nrarfcn >= 361000 && nrarfcn <= 376000 )
72- return new BasicCellData (3 , 1800 );
73- if (nrarfcn >= 158200 && nrarfcn <= 164200 )
74- return new BasicCellData (20 , 800 );
75- if (nrarfcn >= 151600 && nrarfcn <= 160600 )
76- return new BasicCellData (28 , 700 );
77- // n28
78- if (nrarfcn >= 151600 && nrarfcn <= 153600 )
79- return new BasicCellData (14 , 700 );
80- if (nrarfcn >= 145800 && nrarfcn <= 149200 )
81- return new BasicCellData (12 , 700 );
82- if (nrarfcn >= 143400 && nrarfcn <= 145600 )
83- return new BasicCellData (29 , 700 );
84- if (nrarfcn >= 185000 && nrarfcn <= 192000 )
85- return new BasicCellData (8 , 900 );
86- if (nrarfcn >= 171800 && nrarfcn <= 178800 )
87- return new BasicCellData (26 , 850 );
88- // n26
89- if (nrarfcn >= 173800 && nrarfcn <= 178800 )
90- return new BasicCellData (5 , 850 );
91- if (nrarfcn >= 172000 && nrarfcn <= 175000 )
92- return new BasicCellData (18 , 800 );
93102 if (nrarfcn >= 295000 && nrarfcn <= 303600 )
94103 return new BasicCellData (74 , 1500 );
95104 if (nrarfcn >= 285400 && nrarfcn <= 286400 )
@@ -161,7 +170,6 @@ private static BasicCellData getLteBasicData(int earfcn) {
161170 return new BasicCellData (31 , 450 );
162171 if (earfcn >= 9920 && earfcn <= 10359 )
163172 return new BasicCellData (32 , 1500 );
164-
165173 if (earfcn >= 36000 && earfcn <= 36199 )
166174 return new BasicCellData (33 , 1900 );
167175 if (earfcn >= 36200 && earfcn <= 36349 )
@@ -204,7 +212,6 @@ private static BasicCellData getLteBasicData(int earfcn) {
204212 return new BasicCellData (52 , 3300 );
205213 if (earfcn >= 60140 && earfcn <= 60254 )
206214 return new BasicCellData (53 , 2500 );
207-
208215 if (earfcn >= 65536 && earfcn <= 66435 )
209216 return new BasicCellData (65 , 2100 );
210217 if (earfcn >= 66436 && earfcn <= 67335 )
@@ -244,17 +251,13 @@ private static BasicCellData getLteBasicData(int earfcn) {
244251 private static BasicCellData getUmtsBasicData (int uarfcn ) {
245252 if (uarfcn >= 10562 && uarfcn <= 10838 )
246253 return new BasicCellData (1 , 2100 );
247- if (uarfcn >= 412 && uarfcn <= 687 )
248- return new BasicCellData (2 , 1900 );
249- if (uarfcn >= 9662 && uarfcn <= 9938 )
254+ if (uarfcn >= 412 && uarfcn <= 687 || uarfcn >= 9662 && uarfcn <= 9938 )
250255 return new BasicCellData (2 , 1900 );
251256 if (uarfcn >= 1162 && uarfcn <= 1513 )
252257 return new BasicCellData (3 , 1800 );
253258 if (uarfcn >= 1537 && uarfcn <= 2087 )
254259 return new BasicCellData (4 , 1700 );
255- if (uarfcn >= 1007 && uarfcn <= 1087 )
256- return new BasicCellData (5 , 850 );
257- if (uarfcn >= 4357 && uarfcn <= 4458 )
260+ if (uarfcn >= 1007 && uarfcn <= 1087 || uarfcn >= 4357 && uarfcn <= 4458 )
258261 return new BasicCellData (5 , 850 );
259262 if (uarfcn >= 2237 && uarfcn <= 2563 )
260263 return new BasicCellData (7 , 2600 );
@@ -280,9 +283,7 @@ private static BasicCellData getUmtsBasicData(int uarfcn) {
280283 return new BasicCellData (21 , 1500 );
281284 if (uarfcn >= 4662 && uarfcn <= 5038 )
282285 return new BasicCellData (22 , 3500 );
283- if (uarfcn >= 5112 && uarfcn <= 5413 )
284- return new BasicCellData (25 , 1900 );
285- if (uarfcn >= 6292 && uarfcn <= 6592 )
286+ if (uarfcn >= 5112 && uarfcn <= 5413 || uarfcn >= 6292 && uarfcn <= 6592 )
286287 return new BasicCellData (25 , 1900 );
287288 if (uarfcn >= 5762 && uarfcn <= 5913 )
288289 return new BasicCellData (26 , 850 );
@@ -293,20 +294,18 @@ private static BasicCellData getUmtsBasicData(int uarfcn) {
293294 }
294295
295296 private static BasicCellData getGsmBasicData (int arfcn ) {
296- if (arfcn >= 0 && arfcn <= 124 )
297- return new BasicCellData (8 , 900 );
297+ if (arfcn >= 512 && arfcn <= 810 )
298+ return new BasicCellData (2 , 1900 );
299+ if (arfcn >= 811 && arfcn <= 885 )
300+ return new BasicCellData (3 , 1800 );
298301 if (arfcn >= 128 && arfcn <= 251 )
299302 return new BasicCellData (5 , 850 );
303+ if (arfcn >= 0 && arfcn <= 124 || arfcn >= 955 && arfcn <= 1023 )
304+ return new BasicCellData (8 , 900 );
300305 if (arfcn >= 259 && arfcn <= 293 )
301306 return new BasicCellData (31 , 450 );
302307 if (arfcn >= 306 && arfcn <= 340 )
303308 return new BasicCellData (72 , 480 );
304- if (arfcn >= 512 && arfcn <= 810 )
305- return new BasicCellData (2 , 1900 );
306- if (arfcn >= 811 && arfcn <= 885 )
307- return new BasicCellData (3 , 1800 );
308- if (arfcn >= 955 && arfcn <= 1023 )
309- return new BasicCellData (8 , 900 );
310309
311310 return new BasicCellData (-1 , -1 );
312311 }
0 commit comments