Skip to content

Commit bab35c9

Browse files
committed
try and tidy up sending by setting time in the 'sending' event rather than by adding to the program code
1 parent a903e26 commit bab35c9

3 files changed

Lines changed: 49 additions & 46 deletions

File tree

bin/espruino-cli.js

Lines changed: 42 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -473,49 +473,51 @@ function sendCode(callback) {
473473
}
474474
}
475475
}
476-
Espruino.callProcessor("transformForEspruino", code, function(code) {
477-
if (args.outputHEX) {
478-
log("Writing hex output to "+args.outputHEX);
479-
var storage = {}
480-
var hadCode = false;
481-
for (let storageName in args.storageContents) {
482-
let storageContent = args.storageContents[storageName];
483-
if (storageContent.code) {
484-
storage[storageName] = code;
485-
hadCode = true;
486-
} else {
487-
storage[storageName] = storageContent.data;
476+
Espruino.callProcessor("sending", null, function() {
477+
Espruino.callProcessor("transformForEspruino", code, function(code) {
478+
if (args.outputHEX) {
479+
log("Writing hex output to "+args.outputHEX);
480+
var storage = {}
481+
var hadCode = false;
482+
for (let storageName in args.storageContents) {
483+
let storageContent = args.storageContents[storageName];
484+
if (storageContent.code) {
485+
storage[storageName] = code;
486+
hadCode = true;
487+
} else {
488+
storage[storageName] = storageContent.data;
489+
}
488490
}
489-
}
490-
// add code in default place
491-
if (!hadCode) storage[".bootcde"]=code;
492-
require("fs").writeFileSync(args.outputHEX, toIntelHex(storage));
493-
} else {
494-
// if not creating a hex, we just add the code needed to upload
495-
// files to the beginning of what we upload
496-
for (let storageName in args.storageContents) {
497-
let storageContent = args.storageContents[storageName];
498-
if (!storageContent.code) {
499-
code = Espruino.Core.Utils.getUploadFileCode(storageName, storageContent.data)+"\n" + code;
491+
// add code in default place
492+
if (!hadCode) storage[".bootcde"]=code;
493+
require("fs").writeFileSync(args.outputHEX, toIntelHex(storage));
494+
} else {
495+
// if not creating a hex, we just add the code needed to upload
496+
// files to the beginning of what we upload
497+
for (let storageName in args.storageContents) {
498+
let storageContent = args.storageContents[storageName];
499+
if (!storageContent.code) {
500+
code = Espruino.Core.Utils.getUploadFileCode(storageName, storageContent.data)+"\n" + code;
501+
}
500502
}
501503
}
502-
}
503-
if (args.outputJS) {
504-
log("Writing output to "+args.outputJS);
505-
require("fs").writeFileSync(args.outputJS, code, "binary");
506-
}
507-
if (!args.nosend)
508-
Espruino.Core.CodeWriter.writeToEspruino(code, function() {
509-
if (args.sleepAfterUpload) {
510-
log("Upload Complete. Sleeping for "+args.sleepAfterUpload+"s");
511-
setTimeout(callback, args.sleepAfterUpload*1000);
512-
} else {
513-
log("Upload Complete");
514-
callback();
515-
}
516-
});
517-
else
518-
callback();
504+
if (args.outputJS) {
505+
log("Writing output to "+args.outputJS);
506+
require("fs").writeFileSync(args.outputJS, code, "binary");
507+
}
508+
if (!args.nosend)
509+
Espruino.Core.CodeWriter.writeToEspruino(code, function() {
510+
if (args.sleepAfterUpload) {
511+
log("Upload Complete. Sleeping for "+args.sleepAfterUpload+"s");
512+
setTimeout(callback, args.sleepAfterUpload*1000);
513+
} else {
514+
log("Upload Complete");
515+
callback();
516+
}
517+
});
518+
else
519+
callback();
520+
});
519521
});
520522
} else {
521523
callback();

espruino.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
*
2121
* jsCodeChanged - called when the code in JS editor changes with {code, editor}
2222
* xmlCodeChanged - called when the code in the blockly editor changes with {code}
23-
* sending - sending code to Espruino (no data)
23+
* sending - sending code to Espruino (no data). Called before code is requested and transformed (but after connection)
2424
* sendModeChanged - called when the send mode (RAM/Flash/Storage) changes
2525
* transformForEspruino - transform code ready to be sent to Espruino
2626
* transformModuleForEspruino({code,name})

plugins/setTime.js

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,14 @@
2323
onChange : function(newValue) { }
2424
});
2525

26-
// When code is sent to Espruino, append code to set the current time
27-
Espruino.addProcessor("transformForEspruino", function(code, callback) {
26+
// Just before code is sent to Espruino, write code that will set the current time and timezone
27+
Espruino.addProcessor("sending", function(_, callback) {
2828
if (Espruino.Config.SET_TIME_ON_WRITE) {
2929
var time = new Date();
30-
code = "setTime("+(time.getTime()/1000)+");E.setTimeZone("+(-time.getTimezoneOffset()/60)+")\n"+code;
31-
}
32-
callback(code);
30+
var code = "\x10setTime("+(time.getTime()/1000)+");E.setTimeZone("+(-time.getTimezoneOffset()/60)+")\n";
31+
Espruino.Core.Serial.write(code, false, callback);
32+
} else
33+
callback();
3334
});
3435
}
3536

0 commit comments

Comments
 (0)