mirror of https://github.com/espruino/BangleApps
Add setting for GNSS type
parent
cf1f2119cc
commit
d537fc5d73
|
@ -4,6 +4,8 @@ Load assisted GPS (A-GPS) data directly to your Bangle.js using the new http req
|
|||
|
||||
Will download A-GPS data in background (if enabled in settings).
|
||||
|
||||
The GNSS type can be configured in the settings.
|
||||
|
||||
Make sure:
|
||||
* your GadgetBridge version supports http requests
|
||||
* turn on internet access in GadgetBridge settings
|
||||
|
|
|
@ -21,15 +21,34 @@ function display(text1, text2) {
|
|||
Bangle.loadWidgets();
|
||||
Bangle.drawWidgets();
|
||||
|
||||
let waiting = false;
|
||||
|
||||
function start() {
|
||||
display("Updating A-GPS...");
|
||||
require("agpsdata").pull(function() {
|
||||
display("A-GPS updated.", "touch to close");
|
||||
Bangle.on("touch", () => { load(); });
|
||||
},
|
||||
function(error) {
|
||||
display("Error:" + error, "touch to retry");
|
||||
Bangle.on("touch", () => { start(); });
|
||||
});
|
||||
g.reset();
|
||||
g.clear();
|
||||
waiting = false;
|
||||
display("Retry?", "touch to retry");
|
||||
Bangle.on("touch", () => { updateAgps(); });
|
||||
}
|
||||
start();
|
||||
|
||||
function updateAgps() {
|
||||
g.reset();
|
||||
g.clear();
|
||||
if (!waiting) {
|
||||
waiting = true;
|
||||
display("Updating A-GPS...");
|
||||
require("agpsdata").pull(function() {
|
||||
waiting = false;
|
||||
display("A-GPS updated.", "touch to close");
|
||||
Bangle.on("touch", () => { load(); });
|
||||
},
|
||||
function(error) {
|
||||
waiting = false;
|
||||
E.showAlert(error, "Error")
|
||||
.then(() => { start(); });
|
||||
});
|
||||
} else {
|
||||
display("Waiting...");
|
||||
}
|
||||
}
|
||||
updateAgps();
|
||||
|
|
|
@ -1 +1 @@
|
|||
{"enabled":true,"refresh":1440}
|
||||
{"enabled":true,"refresh":1440,"gnsstype":1}
|
||||
|
|
|
@ -1,3 +1,13 @@
|
|||
function readSettings() {
|
||||
settings = Object.assign(
|
||||
require('Storage').readJSON("agpsdata.default.json", true) || {},
|
||||
require('Storage').readJSON(FILE, true) || {});
|
||||
}
|
||||
|
||||
var FILE = "agpsdata.settings.json";
|
||||
var settings;
|
||||
readSettings();
|
||||
|
||||
function setAGPS(data) {
|
||||
var js = jsFromBase64(data);
|
||||
try {
|
||||
|
@ -14,8 +24,8 @@ function jsFromBase64(b64) {
|
|||
var bin = atob(b64);
|
||||
var chunkSize = 128;
|
||||
var js = "Bangle.setGPSPower(1);\n"; // turn GPS on
|
||||
var gnss_select="1";
|
||||
js += `Serial1.println("${CASIC_CHECKSUM("$PCAS04,"+gnss_select)}")\n`; // set GNSS mode
|
||||
var gnsstype = settings.gnsstype || 1; // default GPS
|
||||
js += `Serial1.println("${CASIC_CHECKSUM("$PCAS04,"+gnsstype)}")\n`; // set GNSS mode
|
||||
// What about:
|
||||
// NAV-TIMEUTC (0x01 0x10)
|
||||
// NAV-PV (0x01 0x03)
|
||||
|
@ -60,6 +70,6 @@ exports.pull = function(successCallback, failureCallback) {
|
|||
});
|
||||
} else {
|
||||
console.log("error: No http method found");
|
||||
if (failureCallback) failureCallback(/*LANG*/"No http method found");
|
||||
if (failureCallback) failureCallback(/*LANG*/"No http method");
|
||||
}
|
||||
};
|
||||
|
|
|
@ -1,62 +1,71 @@
|
|||
(function(back) {
|
||||
function writeSettings(key, value) {
|
||||
var s = Object.assign(
|
||||
require('Storage').readJSON("agpsdata.default.json", true) || {},
|
||||
require('Storage').readJSON(FILE, true) || {}
|
||||
);
|
||||
s[key] = value;
|
||||
require('Storage').writeJSON(FILE, s);
|
||||
readSettings();
|
||||
}
|
||||
|
||||
function readSettings(){
|
||||
settings = Object.assign(
|
||||
require('Storage').readJSON("agpsdata.default.json", true) || {},
|
||||
require('Storage').readJSON(FILE, true) || {}
|
||||
);
|
||||
}
|
||||
|
||||
var FILE="agpsdata.settings.json";
|
||||
var settings;
|
||||
function writeSettings(key, value) {
|
||||
var s = Object.assign(
|
||||
require('Storage').readJSON(settingsDefaultFile, true) || {},
|
||||
require('Storage').readJSON(settingsFile, true) || {});
|
||||
s[key] = value;
|
||||
require('Storage').writeJSON(settingsFile, s);
|
||||
readSettings();
|
||||
}
|
||||
|
||||
function buildMainMenu(){
|
||||
var mainmenu = {
|
||||
'': { 'title': 'AGPS download' },
|
||||
'< Back': back,
|
||||
"Enabled": {
|
||||
value: !!settings.enabled,
|
||||
onchange: v => {
|
||||
writeSettings("enabled", v);
|
||||
}
|
||||
},
|
||||
"Refresh every": {
|
||||
value: settings.refresh / 60,
|
||||
min: 1,
|
||||
max: 168,
|
||||
step: 1,
|
||||
format: v=>v+"h",
|
||||
onchange: v => {
|
||||
writeSettings("refresh",Math.round(v * 60));
|
||||
}
|
||||
},
|
||||
"Force refresh": ()=>{
|
||||
E.showMessage("Loading AGPS data");
|
||||
|
||||
require("agpsdata").pull(function() {
|
||||
E.showAlert("Success").then(()=>{
|
||||
E.showMenu(buildMainMenu());
|
||||
function readSettings() {
|
||||
settings = Object.assign(
|
||||
require('Storage').readJSON(settingsDefaultFile, true) || {},
|
||||
require('Storage').readJSON(settingsFile, true) || {});
|
||||
}
|
||||
|
||||
var settingsFile = "agpsdata.settings.json";
|
||||
var settingsDefaultFile = "agpsdata.default.json";
|
||||
|
||||
var settings;
|
||||
readSettings();
|
||||
|
||||
const gnsstypes = [
|
||||
"", "GPS", "BDS", "GPS+BDS", "GLONASS", "GPS+GLONASS", "BDS+GLONASS",
|
||||
"GPS+BDS+GLON."
|
||||
];
|
||||
|
||||
function buildMainMenu() {
|
||||
var mainmenu = {
|
||||
'' : {'title' : 'AGPS download'},
|
||||
'< Back' : back,
|
||||
"Enabled" : {
|
||||
value : !!settings.enabled,
|
||||
onchange : v => { writeSettings("enabled", v); }
|
||||
},
|
||||
"Refresh every" : {
|
||||
value : settings.refresh / 60,
|
||||
min : 1,
|
||||
max : 168,
|
||||
step : 1,
|
||||
format : v => v + "h",
|
||||
onchange : v => { writeSettings("refresh", Math.round(v * 60)); }
|
||||
},
|
||||
"GNSS type" : {
|
||||
value : settings.gnsstype,
|
||||
min : 1,
|
||||
max : 7,
|
||||
step : 1,
|
||||
format : v => gnsstypes[v],
|
||||
onchange : x => writeSettings('gnsstype', x)
|
||||
},
|
||||
"Force refresh" : () => {
|
||||
E.showMessage("Loading A-GPS data");
|
||||
require("agpsdata")
|
||||
.pull(
|
||||
function() {
|
||||
E.showAlert("Success").then(
|
||||
() => { E.showMenu(buildMainMenu()); });
|
||||
},
|
||||
function(error) {
|
||||
E.showAlert(error, "Error")
|
||||
.then(() => { E.showMenu(buildMainMenu()); });
|
||||
});
|
||||
},function(error) {
|
||||
E.showAlert(error,"Error").then(()=>{
|
||||
E.showMenu(buildMainMenu());
|
||||
});
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
return mainmenu;
|
||||
}
|
||||
return mainmenu;
|
||||
}
|
||||
|
||||
E.showMenu(buildMainMenu());
|
||||
E.showMenu(buildMainMenu());
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue