@@ -8,6 +8,7 @@ console.log("=============================================")
88const Comms = {
99 // Write the given data, returns a promise
1010 write : ( data ) => new Promise ( ( resolve , reject ) => {
11+ if ( data === undefined ) throw new Error ( "Comms.write(undefined) called!" )
1112 return Puck . write ( data , function ( result ) {
1213 if ( result === null ) return reject ( "" ) ;
1314 resolve ( result ) ;
@@ -38,6 +39,7 @@ const Comms = {
3839 // Reset the device, if opt=="wipe" erase any saved code
3940 reset : ( opt ) => new Promise ( ( resolve , reject ) => {
4041 let tries = 8 ;
42+ if ( Const . NO_RESET ) return resolve ( ) ;
4143 console . log ( "<COMMS> reset" ) ;
4244 Puck . write ( `\x03\x10reset(${ opt == "wipe" ?"1" :"" } );\n` , function rstHandler ( result ) {
4345 console . log ( "<COMMS> reset: got " + JSON . stringify ( result ) ) ;
@@ -51,7 +53,7 @@ const Comms = {
5153 } else {
5254 console . log ( `<COMMS> reset: rebooted - sending commands to clear out any boot code` ) ;
5355 // 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 ( ) {
5557 console . log ( `<COMMS> reset: complete.` ) ;
5658 setTimeout ( resolve , 250 ) ;
5759 } ) ;
@@ -244,7 +246,9 @@ const Comms = {
244246 let device = Const . CONNECTION_DEVICE ;
245247 if ( Const . SINGLE_APP_ONLY ) // only one app on device, info file is in app.info
246248 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
248252 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` ;
249253 Puck . write ( cmd , ( appListStr , err ) => {
250254 Progress . hide ( { sticky :true } ) ;
@@ -287,7 +291,10 @@ const Comms = {
287291 } ,
288292 // Get an app's info file from Bangle.js
289293 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 ) .
291298 then ( appJSON => {
292299 let app ;
293300 try {
@@ -397,7 +404,7 @@ const Comms = {
397404 } ,
398405 // Reset the device
399406 resetDevice : ( ) => {
400- let cmd = "reset(); load()\n" ;
407+ let cmd = "load(); \n" ;
401408 return Comms . write ( cmd ) ;
402409 } ,
403410 // Check if we're connected
0 commit comments