android - Remove GBGPS tracking

pull/2473/head
Martin Boonk 2023-01-13 10:31:42 +01:00
parent 2675783aae
commit 436a3dfd97
2 changed files with 25 additions and 74 deletions

View File

@ -141,7 +141,7 @@
Bangle.emit('GPS', event); Bangle.emit('GPS', event);
}, },
"is_gps_active": function() { "is_gps_active": function() {
gbSend({ t: "gps_power", status: Bangle.isGBGPSOn() }); gbSend({ t: "gps_power", status: Bangle.isGPSOn() });
} }
}; };
var h = HANDLERS[event.t]; var h = HANDLERS[event.t];
@ -207,24 +207,19 @@
}; };
// GPS overwrite logic // GPS overwrite logic
if (settings.overwriteGps) { // if the overwrite option is set../ if (settings.overwriteGps) { // if the overwrite option is set../
const origIsGPSOn = Bangle.isGPSOn;
const origSetGPSPower = Bangle.setGPSPower; const origSetGPSPower = Bangle.setGPSPower;
// migrate all GPS clients to the other variant on connection events // migrate all GPS clients to the other variant on connection events
let handleConnect = () => { let handleConnect = () => {
if (origIsGPSOn()){ let orig = Bangle._PWR.GPS;
for (let c of Bangle._PWR.GPS){ delete Bangle._PWR.GPS;
Bangle.setGBGPSPower(1, c); origSetGPSPower(0);
origSetGPSPower(0, c); Bangle._PWR.GPS = orig;
}
}
}; };
let handleDisconnect = () => { let handleDisconnect = () => {
if (Bangle.isGBGPSOn()){ let orig = Bangle._PWR.GPS;
for (let c of Bangle._PWR.GBGPS){ delete Bangle._PWR.GPS;
origSetGPSPower(1, c); origSetGPSPower(1);
Bangle.setGBGPSPower(0, c); Bangle._PWR.GPS = orig;
}
}
}; };
NRF.on('connect', handleConnect); NRF.on('connect', handleConnect);
NRF.on('disconnect', handleDisconnect); NRF.on('disconnect', handleDisconnect);
@ -240,35 +235,28 @@
o(s); o(s);
})(Serial1.write); })(Serial1.write);
Bangle.setGBGPSPower = (isOn, appID) => {
if (!Bangle._PWR) Bangle._PWR={};
if (!Bangle._PWR.GBGPS) Bangle._PWR.GBGPS=[];
if (!appID) appID="?";
if (isOn && !Bangle._PWR.GBGPS.includes(appID)) Bangle._PWR.GBGPS.push(appID);
if (!isOn && Bangle._PWR.GBGPS.includes(appID)) Bangle._PWR.GBGPS.splice(Bangle._PWR.GBGPS.indexOf(appID),1);
let pwr = Bangle._PWR.GBGPS.length>0;
gbSend({ t: "gps_power", status: pwr });
return pwr;
};
// Replace set GPS power logic to suppress activation of gps (and instead request it from the phone) // Replace set GPS power logic to suppress activation of gps (and instead request it from the phone)
Bangle.setGPSPower = (isOn, appID) => { Bangle.setGPSPower = (isOn, appID) => {
// disable our own request for GPS power first // disable our own request for GPS power first and always
if (!isOn) origSetGPSPower(0,"android_gpsserial"); if (!isOn) origSetGPSPower(0,"android_gpsserial");
// if not connected use internal GPS power function // if not connected use internal GPS power function
if (!NRF.getSecurityStatus().connected) return origSetGPSPower(isOn, appID); if (!NRF.getSecurityStatus().connected) return origSetGPSPower(isOn, appID);
return Bangle.setGBGPSPower(isOn, appID); if (!Bangle._PWR) Bangle._PWR={};
if (!Bangle._PWR.GPS) Bangle._PWR.GPS=[];
if (!appID) appID="?";
if (isOn && !Bangle._PWR.GPS.includes(appID)) Bangle._PWR.GPS.push(appID);
if (!isOn && Bangle._PWR.GPS.includes(appID)) Bangle._PWR.GPS.splice(Bangle._PWR.GPS.indexOf(appID),1);
let pwr = Bangle._PWR.GPS.length>0;
gbSend({ t: "gps_power", status: pwr });
return pwr;
}; };
// Allow checking for GPS via GadgetBridge // Allow checking for GPS via GadgetBridge
Bangle.isGBGPSOn = () => {
return !!(Bangle._PWR && Bangle._PWR.GBGPS && Bangle._PWR.GBGPS.length>0);
};
// Replace check if the GPS is on to check both internal and external GPS
Bangle.isGPSOn = () => { Bangle.isGPSOn = () => {
return Bangle.isGBGPSOn() || origIsGPSOn(); return !!(Bangle._PWR && Bangle._PWR.GPS && Bangle._PWR.GPS.length>0);
}; };
// stop GPS on boot if not activated // stop GPS on boot if not activated
setTimeout(()=>{ setTimeout(()=>{
if (!Bangle.isGBGPSOn()) gbSend({ t: "gps_power", status: false }); if (!Bangle.isGPSOn()) gbSend({ t: "gps_power", status: false });
},3000); },3000);
} }

View File

@ -26,84 +26,55 @@ let sec = {
NRF.getSecurityStatus = () => sec; NRF.getSecurityStatus = () => sec;
setTimeout(() => { setTimeout(() => {
print(Bangle._PWR); // add an empty starting point to make the asserts work
Bangle._PWR={};
print("Not connected, should use internal GPS"); print("Not connected, should use internal GPS");
assertTrue(!NRF.getSecurityStatus().connected, "Not connected"); assertTrue(!NRF.getSecurityStatus().connected, "Not connected");
assertUndefinedOrEmpty(Bangle._PWR.GBGPS, "No GBGPS");
assertUndefinedOrEmpty(Bangle._PWR.GPS, "No GPS"); assertUndefinedOrEmpty(Bangle._PWR.GPS, "No GPS");
assertFalse(Bangle.isGPSOn(), "isGPSOn"); assertFalse(Bangle.isGPSOn(), "isGPSOn");
assertFalse(Bangle.isGBGPSOn(), "isGBGPSOn");
assertTrue(Bangle.setGPSPower(1), "Switch GPS on"); assertTrue(Bangle.setGPSPower(1), "Switch GPS on");
assertUndefinedOrEmpty(Bangle._PWR.GBGPS, "No GBGPS");
assertNotEmpty(Bangle._PWR.GPS, "GPS"); assertNotEmpty(Bangle._PWR.GPS, "GPS");
assertTrue(Bangle.isGPSOn(), "isGPSOn"); assertTrue(Bangle.isGPSOn(), "isGPSOn");
assertFalse(Bangle.isGBGPSOn(), "isGBGPSOn");
assertFalse(Bangle.setGPSPower(0), "Switch GPS off"); assertFalse(Bangle.setGPSPower(0), "Switch GPS off");
assertUndefinedOrEmpty(Bangle._PWR.GBGPS, "No GBGPS");
assertUndefinedOrEmpty(Bangle._PWR.GPS, "No GPS"); assertUndefinedOrEmpty(Bangle._PWR.GPS, "No GPS");
assertFalse(Bangle.isGPSOn(), "isGPSOn"); assertFalse(Bangle.isGPSOn(), "isGPSOn");
assertFalse(Bangle.isGBGPSOn(), "isGBGPSOn");
assertTrue(Bangle.setGBGPSPower(1), "Switch GBGPS on");
assertUndefinedOrEmpty(Bangle._PWR.GPS, "No GPS");
assertNotEmpty(Bangle._PWR.GBGPS, "GBGPS");
assertTrue(Bangle.isGPSOn(), "isGPSOn");
assertTrue(Bangle.isGBGPSOn(), "isGBGPSOn");
assertFalse(Bangle.setGBGPSPower(0), "Switch GBGPS off");
assertUndefinedOrEmpty(Bangle._PWR.GBGPS, "No GBGPS");
assertUndefinedOrEmpty(Bangle._PWR.GPS, "No GPS");
assertFalse(Bangle.isGPSOn(), "isGPSOn");
assertFalse(Bangle.isGBGPSOn(), "isGBGPSOn");
print("Connected, should use GB GPS"); print("Connected, should use GB GPS");
sec.connected = true; sec.connected = true;
assertTrue(NRF.getSecurityStatus().connected, "Connected"); assertTrue(NRF.getSecurityStatus().connected, "Connected");
assertUndefinedOrEmpty(Bangle._PWR.GBGPS, "No GBGPS");
assertUndefinedOrEmpty(Bangle._PWR.GPS, "No GPS"); assertUndefinedOrEmpty(Bangle._PWR.GPS, "No GPS");
assertFalse(Bangle.isGPSOn(), "isGPSOn"); assertFalse(Bangle.isGPSOn(), "isGPSOn");
assertFalse(Bangle.isGBGPSOn(), "isGBGPSOn");
assertTrue(Bangle.setGPSPower(1), "Switch GPS on"); assertTrue(Bangle.setGPSPower(1), "Switch GPS on");
assertUndefinedOrEmpty(Bangle._PWR.GPS, "No GPS"); assertNotEmpty(Bangle._PWR.GPS, "GPS");
assertNotEmpty(Bangle._PWR.GBGPS, "GBGPS");
assertTrue(Bangle.isGPSOn(), "isGPSOn"); assertTrue(Bangle.isGPSOn(), "isGPSOn");
assertTrue(Bangle.isGBGPSOn(), "isGBGPSOn");
assertFalse(Bangle.setGPSPower(0), "Switch GPS off"); assertFalse(Bangle.setGPSPower(0), "Switch GPS off");
assertUndefinedOrEmpty(Bangle._PWR.GBGPS, "No GBGPS");
assertUndefinedOrEmpty(Bangle._PWR.GPS, "No GPS"); assertUndefinedOrEmpty(Bangle._PWR.GPS, "No GPS");
assertFalse(Bangle.isGPSOn(), "isGPSOn"); assertFalse(Bangle.isGPSOn(), "isGPSOn");
assertFalse(Bangle.isGBGPSOn(), "isGBGPSOn");
print("Connected, then reconnect cycle"); print("Connected, then reconnect cycle");
sec.connected = true; sec.connected = true;
assertTrue(NRF.getSecurityStatus().connected, "Connected"); assertTrue(NRF.getSecurityStatus().connected, "Connected");
assertUndefinedOrEmpty(Bangle._PWR.GBGPS, "No GBGPS");
assertUndefinedOrEmpty(Bangle._PWR.GPS, "No GPS"); assertUndefinedOrEmpty(Bangle._PWR.GPS, "No GPS");
assertFalse(Bangle.isGPSOn(), "isGPSOn"); assertFalse(Bangle.isGPSOn(), "isGPSOn");
assertFalse(Bangle.isGBGPSOn(), "isGBGPSOn");
assertTrue(Bangle.setGPSPower(1), "Switch GPS on"); assertTrue(Bangle.setGPSPower(1), "Switch GPS on");
assertUndefinedOrEmpty(Bangle._PWR.GPS, "No GPS"); assertNotEmpty(Bangle._PWR.GPS, "GPS");
assertNotEmpty(Bangle._PWR.GBGPS, "GBGPS");
assertTrue(Bangle.isGPSOn(), "isGPSOn"); assertTrue(Bangle.isGPSOn(), "isGPSOn");
assertTrue(Bangle.isGBGPSOn(), "isGBGPSOn");
print("disconnect"); print("disconnect");
NRF.emit("disconnect", {}); NRF.emit("disconnect", {});
@ -112,34 +83,26 @@ setTimeout(() => {
setTimeout(() => { setTimeout(() => {
assertNotEmpty(Bangle._PWR.GPS, "GPS"); assertNotEmpty(Bangle._PWR.GPS, "GPS");
assertUndefinedOrEmpty(Bangle._PWR.GBGPS, "No GBGPS");
assertTrue(Bangle.isGPSOn(), "isGPSOn"); assertTrue(Bangle.isGPSOn(), "isGPSOn");
assertFalse(Bangle.isGBGPSOn(), "isGBGPSOn");
print("connect"); print("connect");
NRF.emit("connect", {}); NRF.emit("connect", {});
sec.connected = true; sec.connected = true;
setTimeout(() => { setTimeout(() => {
assertUndefinedOrEmpty(Bangle._PWR.GPS, "No GPS"); assertNotEmpty(Bangle._PWR.GPS, "GPS");
assertNotEmpty(Bangle._PWR.GBGPS, "GBGPS");
assertTrue(Bangle.isGPSOn(), "isGPSOn"); assertTrue(Bangle.isGPSOn(), "isGPSOn");
assertTrue(Bangle.isGBGPSOn(), "isGBGPSOn");
assertFalse(Bangle.setGPSPower(0), "Switch GPS off"); assertFalse(Bangle.setGPSPower(0), "Switch GPS off");
assertUndefinedOrEmpty(Bangle._PWR.GBGPS, "No GBGPS");
assertUndefinedOrEmpty(Bangle._PWR.GPS, "No GPS"); assertUndefinedOrEmpty(Bangle._PWR.GPS, "No GPS");
assertFalse(Bangle.isGPSOn(), "isGPSOn"); assertFalse(Bangle.isGPSOn(), "isGPSOn");
assertFalse(Bangle.isGBGPSOn(), "isGBGPSOn");
setTimeout(() => { setTimeout(() => {
print("Test disconnect without gps on"); print("Test disconnect without gps on");
assertUndefinedOrEmpty(Bangle._PWR.GBGPS, "No GBGPS");
assertUndefinedOrEmpty(Bangle._PWR.GPS, "No GPS"); assertUndefinedOrEmpty(Bangle._PWR.GPS, "No GPS");
assertFalse(Bangle.isGPSOn(), "isGPSOn"); assertFalse(Bangle.isGPSOn(), "isGPSOn");
assertFalse(Bangle.isGBGPSOn(), "isGBGPSOn");
print("Result Overall is " + (result ? "OK" : "FAIL")); print("Result Overall is " + (result ? "OK" : "FAIL"));
}, 0); }, 0);