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