Misc fixes for apploader

master
Gordon Williams 2020-06-05 15:05:56 +01:00
parent 2a494ebef0
commit 8a83eb3140
2 changed files with 29 additions and 6 deletions

33
bin/apploader.js Normal file → Executable file
View File

@ -1,4 +1,4 @@
#!/bin/node #!/usr/bin/nodejs
/* Simple Command-line app loader for Node.js /* Simple Command-line app loader for Node.js
=============================================== ===============================================
@ -32,7 +32,9 @@ try {
var args = process.argv; var args = process.argv;
if (args.length==3 && args[2]=="list") cmdListApps(); if (args.length==3 && args[2]=="list") cmdListApps();
else if (args.length==3 && args[2]=="list") cmdListDevices();
else if (args.length==4 && args[2]=="install") cmdInstallApp(args[3]); else if (args.length==4 && args[2]=="install") cmdInstallApp(args[3]);
else if (args.length==5 && args[2]=="install") cmdInstallApp(args[3], args[4]);
else { else {
console.log(`apploader.js console.log(`apploader.js
------------- -------------
@ -40,7 +42,10 @@ else {
USAGE: USAGE:
apploader.js list apploader.js list
apploader.js install appname - list available apps
apploader.js devices
- list available device addresses
apploader.js install appname [de:vi:ce:ad:dr:es]
`); `);
process.exit(0); process.exit(0);
} }
@ -48,7 +53,23 @@ process.exit(0);
function cmdListApps() { function cmdListApps() {
console.log(apps.map(a=>a.id).join("\n")); console.log(apps.map(a=>a.id).join("\n"));
} }
function cmdInstallApp(appId) { function cmdListDevices() {
var foundDevices = [];
noble.on('discover', function(dev) {
if (!dev.advertisement) return;
if (!dev.advertisement.localName) return;
var a = dev.address.toString();
if (foundDevices.indexOf(a)>=0) return;
foundDevices.push(a);
console.log(a,dev.advertisement.localName);
});
noble.startScanning([], true);
setTimeout(function() {
noble.stopScanning();
}, 2000);
}
function cmdInstallApp(appId, deviceAddress) {
var app = apps.find(a=>a.id==appId); var app = apps.find(a=>a.id==appId);
if (!app) ERROR(`App ${JSON.stringify(appId)} not found`); if (!app) ERROR(`App ${JSON.stringify(appId)} not found`);
if (app.custom) ERROR(`App ${JSON.stringify(appId)} requires HTML customisation`); if (app.custom) ERROR(`App ${JSON.stringify(appId)} requires HTML customisation`);
@ -58,11 +79,11 @@ function cmdInstallApp(appId) {
}, settings : SETTINGS}).then(files => { }, settings : SETTINGS}).then(files => {
//console.log(files); //console.log(files);
var command = files.map(f=>f.cmd).join("\n")+"\n"; var command = files.map(f=>f.cmd).join("\n")+"\n";
bangleSend(command).then(() => process.exit(0)); bangleSend(command, deviceAddress).then(() => process.exit(0));
}); });
} }
function bangleSend(command) { function bangleSend(command, deviceAddress) {
var log = function() { var log = function() {
var args = [].slice.call(arguments); var args = [].slice.call(arguments);
console.log("UART: "+args.join(" ")); console.log("UART: "+args.join(" "));
@ -70,6 +91,8 @@ function bangleSend(command) {
var RESET = true; var RESET = true;
var DEVICEADDRESS = ""; var DEVICEADDRESS = "";
if (deviceAddress!==undefined)
DEVICEADDRESS = deviceAddress;
var complete = false; var complete = false;
var foundDevices = []; var foundDevices = [];

View File

@ -33,7 +33,7 @@ function toJS(txt) {
} }
if ("undefined"!=typeof module) if ("undefined"!=typeof module)
Espruino = require("./espruinotools.js"); Espruino = require("../lib/espruinotools.js");
const AppInfo = { const AppInfo = {
/* Get files needed for app. /* Get files needed for app.