1
0
Fork 0

android - Switch of internal GPS after timeout when serial was used

master
Martin Boonk 2023-01-14 01:01:05 +01:00
parent 75be0f45e1
commit faca786436
1 changed files with 9 additions and 4 deletions

View File

@ -221,19 +221,24 @@
NRF.on('disconnect', ()=>{handleConnection(1);}); NRF.on('disconnect', ()=>{handleConnection(1);});
// Work around Serial1 for GPS not working when connected to something // Work around Serial1 for GPS not working when connected to something
let serialTimeout;
let wrap = function(f){ let wrap = function(f){
return (s)=>{ return (s)=>{
if (serialTimeout) clearTimeout(serialTimeout);
origSetGPSPower(1,"android_gpsserial"); origSetGPSPower(1,"android_gpsserial");
f(s); f(s);
serialTimeout = setTimeout(()=>{
serialTimeout = undefined;
origSetGPSPower(0,"android_gpsserial");
},5000);
}; };
} };
Serial.println = wrap(Serial1.println); Serial1.println = wrap(Serial1.println);
Serial.write = wrap(Serial1.write); Serial1.write = wrap(Serial1.write);
// 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 and always // disable our own request for GPS power first and always
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);
if (!Bangle._PWR) Bangle._PWR={}; if (!Bangle._PWR) Bangle._PWR={};