Skip to content

Commit 2fbecc3

Browse files
committed
Small changed and additions
1 parent 3bfac3c commit 2fbecc3

17 files changed

Lines changed: 403 additions & 248 deletions

File tree

android/app/src/main/java/pw/dotto/netmanager/Core/Events/EventTypes.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@ public enum EventTypes {
44
MOBILE_BAND_CHANGED,
55
MOBILE_PLMN_CHANGED,
66
MOBILE_TECHNOLOGY_CHANGED,
7+
MOBILE_NODE_CHANGED
78
}

android/app/src/main/java/pw/dotto/netmanager/Core/Manager.java

Lines changed: 47 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
import pw.dotto.netmanager.Core.Mobile.SIMData;
5151
import pw.dotto.netmanager.Core.Mobile.SimReceiverManager;
5252
import pw.dotto.netmanager.Utils.DebugLogger;
53+
import pw.dotto.netmanager.Utils.Mobile;
5354
import pw.dotto.netmanager.Utils.Permissions;
5455

5556
public class Manager {
@@ -390,8 +391,9 @@ public void onCellInfo(@NonNull List<CellInfo> cellInfo) {
390391
}
391392
}
392393

393-
List<String> dump = PhysicalChannelDumper.dump(telephony); // test
394-
DebugLogger.add("PhysicalChannelDumper dump: " + dump);
394+
// temporarily disabled until caching is added
395+
// List<String> dump = PhysicalChannelDumper.dump(telephony);
396+
// DebugLogger.add("PhysicalChannelDumper dump: " + dump);
395397

396398
List<Integer> cellBandwidths = new ArrayList<>();
397399
try {
@@ -544,28 +546,28 @@ public void onCellInfo(@NonNull List<CellInfo> cellInfo) {
544546
}
545547
}
546548

547-
// to be filtered for only nsa + moved to another file + rsrp/frequency
548-
// difference with multiple nr bands + optimisation
549-
for (CellData cellData : data.getActiveCells()) {
550-
if (cellData instanceof NrCellData) {
551-
NrCellData nrCellData = (NrCellData) cellData;
549+
if (data.getPrimaryCell() != null &&
550+
data.getPrimaryCell() instanceof LteCellData) {
551+
552+
// to be filtered for only nsa + moved to another file + rsrp/frequency
553+
// difference with multiple nr bands + optimisation
554+
for (CellData cellData : data.getActiveCells()) {
555+
if (cellData instanceof NrCellData) {
556+
NrCellData nrCellData = (NrCellData) cellData;
552557

553-
if (nrCellData.getProcessedSignal() == CellInfo.UNAVAILABLE) {
554-
CellSignalStrength[] cellSignalStrengths = getSignalStrengths(telephony);
558+
if (nrCellData.getProcessedSignal() == CellInfo.UNAVAILABLE) {
559+
CellSignalStrength[] cellSignalStrengths = getSignalStrengths(telephony);
555560

556-
for (CellSignalStrength cellSignalStrength : cellSignalStrengths) {
557-
if (cellSignalStrength instanceof CellSignalStrengthNr) {
558-
int ssRsrp = ((CellSignalStrengthNr) cellSignalStrength).getSsRsrp();
559-
if (ssRsrp != CellInfo.UNAVAILABLE)
560-
cellData.setProcessedSignal(ssRsrp);
561+
for (CellSignalStrength cellSignalStrength : cellSignalStrengths) {
562+
if (cellSignalStrength instanceof CellSignalStrengthNr) {
563+
int ssRsrp = ((CellSignalStrengthNr) cellSignalStrength).getSsRsrp();
564+
if (ssRsrp != CellInfo.UNAVAILABLE)
565+
cellData.setProcessedSignal(ssRsrp);
566+
}
561567
}
562568
}
563569
}
564570
}
565-
}
566-
567-
if (data.getPrimaryCell() != null &&
568-
data.getPrimaryCell() instanceof LteCellData) {
569571

570572
data.setActiveBw(data.getPrimaryCell().getBandwidth());
571573
for (CellData cellData : data.getActiveCells()) {
@@ -585,17 +587,38 @@ public SIMData getSimNetworkData(int simId) {
585587
switch (simId) {
586588
case 0:
587589
simData = getSimNetworkData(firstManager);
588-
if (simData != null && simData.getPrimaryCell() != null)
590+
591+
if (simData != null && simData.getPrimaryCell() != null) {
592+
CellData primaryCell = simData.getPrimaryCell();
593+
589594
saveEvent(EventTypes.MOBILE_BAND_CHANGED, 0,
590-
(simData.getPrimaryCell() instanceof NrCellData ? "N" : "B")
591-
+ simData.getPrimaryCell().getBand());
595+
(primaryCell instanceof NrCellData ? "N" : "B")
596+
+ primaryCell.getBand());
597+
598+
try {
599+
long node = Long.parseLong(primaryCell.getCellIdentifierString()) / Mobile.getFactor(primaryCell);
600+
saveEvent(EventTypes.MOBILE_NODE_CHANGED, 0, String.valueOf(node));
601+
} catch (Exception ignored) {
602+
saveEvent(EventTypes.MOBILE_NODE_CHANGED, 0, "N/A");
603+
}
604+
}
592605
return simData;
593606
case 1:
594607
simData = getSimNetworkData(secondManager);
595-
if (simData != null && simData.getPrimaryCell() != null)
608+
if (simData != null && simData.getPrimaryCell() != null) {
609+
CellData primaryCell = simData.getPrimaryCell();
610+
596611
saveEvent(EventTypes.MOBILE_BAND_CHANGED, 1,
597-
(simData.getPrimaryCell() instanceof NrCellData ? "N" : "B")
598-
+ simData.getPrimaryCell().getBand());
612+
(primaryCell instanceof NrCellData ? "N" : "B")
613+
+ primaryCell.getBand());
614+
615+
try {
616+
long node = Long.parseLong(primaryCell.getCellIdentifierString()) / Mobile.getFactor(primaryCell);
617+
saveEvent(EventTypes.MOBILE_NODE_CHANGED, 1, String.valueOf(node));
618+
} catch (Exception ignored) {
619+
saveEvent(EventTypes.MOBILE_NODE_CHANGED, 1, "N/A");
620+
}
621+
}
599622
return simData;
600623
default:
601624
return null;

android/app/src/main/java/pw/dotto/netmanager/Core/Mobile/Extractors/CellExtractor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
import pw.dotto.netmanager.Core.Mobile.CellDatas.TdscdmaCellData;
3030
import pw.dotto.netmanager.Core.Mobile.CellDatas.WcdmaCellData;
3131

32-
public class CellExtractor { // to be improved!
32+
public class CellExtractor { // data to be moved out of here
3333
@NonNull
3434
public static GsmCellData getGsmCellData(CellInfoGsm baseCell) {
3535
CellIdentityGsm identityGsm = (CellIdentityGsm) baseCell.getCellIdentity();

android/app/src/main/java/pw/dotto/netmanager/Core/Mobile/Extractors/DataExtractor.java

Lines changed: 52 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,20 @@
1010

1111
import 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
}

android/app/src/main/java/pw/dotto/netmanager/Core/Notifications/Manager.java

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import pw.dotto.netmanager.Core.Mobile.CellDatas.GsmCellData;
2020
import pw.dotto.netmanager.Core.Mobile.CellDatas.NrCellData;
2121
import pw.dotto.netmanager.Core.Mobile.SIMData;
22+
import pw.dotto.netmanager.Utils.Mobile;
2223
import pw.dotto.netmanager.Utils.Permissions;
2324
import pw.dotto.netmanager.MainActivity;
2425

@@ -111,16 +112,8 @@ public void build() { // to be optimised and refactored
111112
long firstPart, secondPart;
112113

113114
CellData primaryCell = simData.getPrimaryCell();
114-
if (primaryCell instanceof GsmCellData) {
115-
firstPart = Long.parseLong(primaryCell.getCellIdentifier()) / 64;
116-
secondPart = Long.parseLong(primaryCell.getCellIdentifier()) % 64;
117-
} else if (primaryCell instanceof CdmaCellData) {
118-
firstPart = Long.parseLong(primaryCell.getCellIdentifier());
119-
secondPart = Long.parseLong(primaryCell.getCellIdentifier());
120-
} else {
121-
firstPart = Long.parseLong(primaryCell.getCellIdentifier()) / 256;
122-
secondPart = Long.parseLong(primaryCell.getCellIdentifier()) % 256;
123-
}
115+
firstPart = Long.parseLong(primaryCell.getCellIdentifier()) / Mobile.getFactor(primaryCell);
116+
secondPart = Long.parseLong(primaryCell.getCellIdentifier()) % Mobile.getFactor(primaryCell);
124117

125118
nodeStr = firstPart + "/" + secondPart;
126119
} catch (Exception ignored) {

0 commit comments

Comments
 (0)