android - GadgetBridge handles connect/disconnect GPS state

master
Martin Boonk 2023-01-28 12:42:38 +01:00
parent 10da4e8a06
commit 3f5fb1527b
1 changed files with 4 additions and 9 deletions

View File

@ -283,7 +283,7 @@
if (isFinite(msg.id)) return gbSend({ t: "notify", n:"MUTE", id: msg.id }); if (isFinite(msg.id)) return gbSend({ t: "notify", n:"MUTE", id: msg.id });
}; };
// 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 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
Bangle.moveGPSPower = (state) => { Bangle.moveGPSPower = (state) => {
@ -300,22 +300,17 @@
let wrap = function(f){ let wrap = function(f){
return (s)=>{ return (s)=>{
if (serialTimeout) clearTimeout(serialTimeout); if (serialTimeout) clearTimeout(serialTimeout);
Bangle.moveGPSPower(1); origSetGPSPower(1, "androidgpsserial")
f(s); f(s);
serialTimeout = setTimeout(()=>{ serialTimeout = setTimeout(()=>{
serialTimeout = undefined; serialTimeout = undefined;
if (gpsState.firstGPSEvent) Bangle.moveGPSPower(0); origSetGPSPower(0, "androidgpsserial");
}, 10000); }, 10000);
}; };
}; };
Serial1.println = wrap(Serial1.println); Serial1.println = wrap(Serial1.println);
Serial1.write = wrap(Serial1.write); Serial1.write = wrap(Serial1.write);
// update the GPS state on reconnect
NRF.on("connect", ()=>{
gbSend({ t: "gps_power", status: Bangle.isGPSOn() });
});
// 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) => {
let pwr; let pwr;
@ -323,7 +318,7 @@
// use internal GPS power function if no gps event has arrived from GadgetBridge // use internal GPS power function if no gps event has arrived from GadgetBridge
pwr = origSetGPSPower(isOn, appID); pwr = origSetGPSPower(isOn, appID);
} else { } else {
// we currently expecting the next GPS event from GadgetBridge, keep track of GPS state per App // we are currently expecting the next GPS event from GadgetBridge, keep track of GPS state per app
if (!Bangle._PWR) Bangle._PWR={}; if (!Bangle._PWR) Bangle._PWR={};
if (!Bangle._PWR.GPS) Bangle._PWR.GPS=[]; if (!Bangle._PWR.GPS) Bangle._PWR.GPS=[];
if (!appID) appID="?"; if (!appID) appID="?";