@@ -8,6 +8,7 @@ console.log("=============================================")
8
8
const Comms = {
9
9
// Write the given data, returns a promise
10
10
write : ( data ) => new Promise ( ( resolve , reject ) => {
11
+ if ( data === undefined ) throw new Error ( "Comms.write(undefined) called!" )
11
12
return Puck . write ( data , function ( result ) {
12
13
if ( result === null ) return reject ( "" ) ;
13
14
resolve ( result ) ;
@@ -38,6 +39,7 @@ const Comms = {
38
39
// Reset the device, if opt=="wipe" erase any saved code
39
40
reset : ( opt ) => new Promise ( ( resolve , reject ) => {
40
41
let tries = 8 ;
42
+ if ( Const . NO_RESET ) return resolve ( ) ;
41
43
console . log ( "<COMMS> reset" ) ;
42
44
Puck . write ( `\x03\x10reset(${ opt == "wipe" ?"1" :"" } );\n` , function rstHandler ( result ) {
43
45
console . log ( "<COMMS> reset: got " + JSON . stringify ( result ) ) ;
@@ -51,7 +53,7 @@ const Comms = {
51
53
} else {
52
54
console . log ( `<COMMS> reset: rebooted - sending commands to clear out any boot code` ) ;
53
55
// see https://github.com/espruino/BangleApps/issues/1759
54
- Puck . write ( "\x10clearInterval();clearWatch();global.Bangle&&Bangle.removeAllListeners();E.removeAllListeners();NRF.removeAllListeners();\n" , function ( ) {
56
+ Puck . write ( "\x10clearInterval();clearWatch();global.Bangle&&Bangle.removeAllListeners();E.removeAllListeners();global.NRF&& NRF.removeAllListeners();\n" , function ( ) {
55
57
console . log ( `<COMMS> reset: complete.` ) ;
56
58
setTimeout ( resolve , 250 ) ;
57
59
} ) ;
@@ -244,7 +246,9 @@ const Comms = {
244
246
let device = Const . CONNECTION_DEVICE ;
245
247
if ( Const . SINGLE_APP_ONLY ) // only one app on device, info file is in app.info
246
248
cmd = `\x10${ device } .println("["+(require("Storage").read("app.info")||"null")+","+${ finalJS } )\n` ;
247
- else
249
+ else if ( Const . FILES_IN_FS ) // file in a FAT filesystem
250
+ cmd = `\x10${ device } .print("[");if (!require("fs").statSync("APPINFO"))require("fs").mkdir("APPINFO");require("fs").readdirSync("APPINFO").forEach(f=>{var j=JSON.parse(require("fs").readFileSync("APPINFO/"+f))||"{}";${ device } .print(JSON.stringify({id:f.slice(0,-5),version:j.version,files:j.files,data:j.data,type:j.type})+",")});${ device } .println(${ finalJS } )\n` ;
251
+ else // the default, files in Storage
248
252
cmd = `\x10${ device } .print("[");require("Storage").list(/\\.info$/).forEach(f=>{var j=require("Storage").readJSON(f,1)||{};${ device } .print(JSON.stringify({id:f.slice(0,-5),version:j.version,files:j.files,data:j.data,type:j.type})+",")});${ device } .println(${ finalJS } )\n` ;
249
253
Puck . write ( cmd , ( appListStr , err ) => {
250
254
Progress . hide ( { sticky :true } ) ;
@@ -287,7 +291,10 @@ const Comms = {
287
291
} ,
288
292
// Get an app's info file from Bangle.js
289
293
getAppInfo : app => {
290
- return Comms . write ( `\x10${ Const . CONNECTION_DEVICE } .println(require("Storage").read(${ JSON . stringify ( AppInfo . getAppInfoFilename ( app ) ) } )||"null")\n` ) .
294
+ var cmd ;
295
+ if ( Const . FILES_IN_FS ) cmd = `\x10${ Const . CONNECTION_DEVICE } .println(require("fs").readFileSync(${ JSON . stringify ( AppInfo . getAppInfoFilename ( app ) ) } )||"null")\n` ;
296
+ else cmd = `\x10${ Const . CONNECTION_DEVICE } .println(require("fs").readFileSync(${ JSON . stringify ( "APPINFO/" + AppInfo . getAppInfoFilename ( app ) ) } )||"null")\n` ;
297
+ return Comms . write ( cmd ) .
291
298
then ( appJSON => {
292
299
let app ;
293
300
try {
@@ -397,7 +404,7 @@ const Comms = {
397
404
} ,
398
405
// Reset the device
399
406
resetDevice : ( ) => {
400
- let cmd = "reset(); load()\n" ;
407
+ let cmd = "load(); \n" ;
401
408
return Comms . write ( cmd ) ;
402
409
} ,
403
410
// Check if we're connected
0 commit comments