From 0d0f888eb88293a6d77e64796331e81b6af89d65 Mon Sep 17 00:00:00 2001 From: Alberto Iannaccone Date: Wed, 28 Oct 2020 09:29:12 +0100 Subject: [PATCH 1/2] change fwupdater binary name based on the tool version --- src/firmware-updater.js | 22 ++++++++++++++-------- src/signatures.js | 14 ++++++++++++++ 2 files changed, 28 insertions(+), 8 deletions(-) create mode 100644 src/signatures.js diff --git a/src/firmware-updater.js b/src/firmware-updater.js index 702af6ec..fb3b821c 100644 --- a/src/firmware-updater.js +++ b/src/firmware-updater.js @@ -1,10 +1,11 @@ import { BehaviorSubject } from 'rxjs'; - import { takeUntil, filter, first } from 'rxjs/operators'; +import semverCompare from 'semver-compare'; +import { fwupdaterSignatures, oldFwupdaterSignatures } from './signatures'; /* The status of the Firmware Updater Tool */ const FWUToolStatusEnum = Object.freeze({ @@ -15,12 +16,9 @@ const FWUToolStatusEnum = Object.freeze({ }); /* The signatures needed to run the commands to use the Firmware Updater Tool */ -const signaturesEnum = Object.freeze({ - GET_FIRMWARE_INFO: 'aceffd98d331df0daa5bb3308bb49a95767d77e7a1557c07a0ec544d2f41c3ec67269f01ce9a63e01f3b43e087ab8eb22b7f1d34135b6686e8ce27d4b5dc083ec8e6149df11880d32486448a71280ef3128efccbd45a84dbd7990a9420a65ee86b3822edba3554fa8e6ca11aec12d4dd99ad072285b98bfdf7b2b64f677da50feb8bddef25a36f52d7605078487d8a5d7cbdc84bfa65d510cee97b46baefea149139a9a6ed4b545346040536e33d850e6ad84c83fe605f677e2ca77439de3fa42350ce504ad9a49cf62c6751d4c2a284500d2c628cd52cd73b4c3e7ef08ae823eb8941383f9c6ff0686da532369d3b266ded8fdd33cca1a128068a4795920f25', - UPLOAD_FIRMWARE_BOSSAC: '5c61682e3ce2544365b05577f9016d5fbfa4c20efdce6ec2ebe6940380ea4f9421322b338c83b7721f900c99c61282720224d9fb20a639154984fd1feef682ee432c8a225f14fe7ba80d2d71d51bc92bfffe63de9386c0b9bc17a827ce21dda837fe3fd0c518ff0b84982c65db81a3eebab88712593c068f5a43f7bc22d4a3f3608969e8f30b3102b382d2c0f7f28d482b39cbcfd16eb680dd04bda66b9cb0d1c2b2e91d89dd8c6033562f1d3983002b61aa39ef70d45a456178867609c058a09bbcd8bce4d97d2e65c28756659bf5ba111e8541302cea934a2c005331ef89425390f610d2f609d581175d16193e72752fe8384f66051e6a2abea79757f042eb', - UPLOAD_FIRMWARE_AVRDUDE: '83b177b05dcd7043d484e321417d1dd499fdbd80b7109cc86fcb91cb14e59b834c3956a279e8d4ceba466a308cb8a1aceb5ab6770b8f207e9bc92e84a191edc21cdecb4f7cc1883fbf0eb258f1f849ffbe76bb0320dfe92d85f77226b45fd90824fc126e22ebe8d2350f854c9d43a03186d7f260d8d03bf83e6669646b2e13a6371dcbf1dd5711edcbe3c3a0f186d091ba26118ed2cdb3ef58e0079096403a2e93684d5089b216c53f2fcb1387b6e9d49feea914943971ac1e58bba1ecdf4f14f557d278e8b4f05d594e21887ba87322fbe1d70d05f03412d87f3149a4b3aff302088a2f0ecc42302b6ba66024e94226b5d99c9e0375383e4494bc1e0d0e20b8' -}); +let signaturesEnum = fwupdaterSignatures; +let updaterBinaryName = 'FirmwareUploader'; export default class FirmwareUpdater { constructor(Daemon) { @@ -56,6 +54,14 @@ export default class FirmwareUpdater { .pipe(takeUntil(this.updatingError)); } + setToolVersion(version) { + this.toolVersion = version; + if (semverCompare(version, '0.1.2') < 0) { + signaturesEnum = oldFwupdaterSignatures; + updaterBinaryName = 'updater'; + } + } + getFirmwareInfo(boardId, port, firmwareVersion) { this.firmwareVersionData = null; this.loaderPath = null; @@ -112,7 +118,7 @@ export default class FirmwareUpdater { const data = { board: boardId, port, - commandline: `"{runtime.tools.fwupdater.path}/updater" -get_available_for {network.password}`, + commandline: `"{runtime.tools.fwupdater.path}/${updaterBinaryName}" -get_available_for {network.password}`, signature: signaturesEnum.GET_FIRMWARE_INFO, extra: { auth: { @@ -199,7 +205,7 @@ export default class FirmwareUpdater { const data = { board: boardId, port, - commandline: `"{runtime.tools.fwupdater.path}/updater" -flasher {network.password} -port {serial.port} -restore_binary "{build.path}/{build.project_name}.bin" -programmer ${programmer}`, + commandline: `"{runtime.tools.fwupdater.path}/${updaterBinaryName}" -flasher {network.password} -port {serial.port} -restore_binary "{build.path}/{build.project_name}.bin" -programmer ${programmer}`, hex: '', extra: { auth: { diff --git a/src/signatures.js b/src/signatures.js new file mode 100644 index 00000000..e3226427 --- /dev/null +++ b/src/signatures.js @@ -0,0 +1,14 @@ +// For versions of the fwupater tool >= 0.1.2 +export const fwupdaterSignatures = Object.freeze({ + GET_FIRMWARE_INFO: '5aae0c2b9cfa783ab6d791491b6ebcb7ffb69644dcc8984def2a5f69029a46701dc8c95fc38a60efebb78c2802b6d172d7f38852b44ae1d2697c0211b6ac389f574c4ff85593ccae55e7c8c415f8d07f932fc64aec620ddb925dbd97b77cf395b9929911b6d4c40b8d3d5a4720a0613fe301344a45f505a430c956a527831896b42fddd0f737d630a3dc3714ce421bd30e9229b2ed503667a915bfc696b6221759640ff492e37356ef025ba9802d578227b8f15fd0f647c395bf73a84adf7a57281c31bc743ca92c09f8eec64d428acd25ced8f8420fdbf989db3625662970d3f16693fec44a418e8c7b12e9f4e94d353e4d6f6876bd74fc543eaeba20a09dc6', + UPLOAD_FIRMWARE_BOSSAC: '39ba449f5d0694807464d925619ead7ed4b1ab3eb6c6dd721d28b7967e1aad667eae85be3d274641dfb350ff775bff1889e192841d04871310092e0edaac2d6f3efa92ddb0b392fe522a92cebcf1cdb6fd61ae28ca685fff890de856fb6b0ab443e9864158609abcfc3103cf7468f9435a5b8f053f9d2332b76355588a379e982c20e275c64385a02a22ecdbaad09ec5f6c4c96a9cf90358d1e4ac5c991bb868c0175400e8703fc12da70da4c12040b0fd4c39a9b0c3619e5158620587767d8448e243c0400f9a5a4638e3f3505580e93ee7bb6e694e0bb5aaf514d139f0a41137aa1e1f3921189d3a1e9e489480e709607ccd5eba5c10329abef4b231ead8dc', + UPLOAD_FIRMWARE_AVRDUDE: '0101ea09742cb0e0ae2947bc6de90e8ecd2db0384c7aa39a729ad7adbc4534b467ed95cb1ea9ee95236f2249ff8313ca93d819762a9d0309ed623691f8dbbfb2a73459492e825e016301a0d467b9649157cc3287963e3aba69a68ce107be279669629273eef580e9f2ea42cbba7040cb166d2869dc91805931861241b5ed80eb4963d6c1aa18bb2a1cd6880930df5e29e9c839e712294c01dadd59f23c7df3748a8911c7c0b1eeed27ffc125854928fefd9402b43dfddfc66116a142807c0401072b772eb014570cfa0bd125dec3658d4946e6778a6bb5126515735f47b51de448bd934c28e279d3c910b56203044c0d539a692f3b11ac41a0b75a6ec11c6d06', +}); + + +// For versions of the fwupater tool <= 0.1.1 +export const oldFwupdaterSignatures = Object.freeze({ + GET_FIRMWARE_INFO: 'aceffd98d331df0daa5bb3308bb49a95767d77e7a1557c07a0ec544d2f41c3ec67269f01ce9a63e01f3b43e087ab8eb22b7f1d34135b6686e8ce27d4b5dc083ec8e6149df11880d32486448a71280ef3128efccbd45a84dbd7990a9420a65ee86b3822edba3554fa8e6ca11aec12d4dd99ad072285b98bfdf7b2b64f677da50feb8bddef25a36f52d7605078487d8a5d7cbdc84bfa65d510cee97b46baefea149139a9a6ed4b545346040536e33d850e6ad84c83fe605f677e2ca77439de3fa42350ce504ad9a49cf62c6751d4c2a284500d2c628cd52cd73b4c3e7ef08ae823eb8941383f9c6ff0686da532369d3b266ded8fdd33cca1a128068a4795920f25', + UPLOAD_FIRMWARE_BOSSAC: '5c61682e3ce2544365b05577f9016d5fbfa4c20efdce6ec2ebe6940380ea4f9421322b338c83b7721f900c99c61282720224d9fb20a639154984fd1feef682ee432c8a225f14fe7ba80d2d71d51bc92bfffe63de9386c0b9bc17a827ce21dda837fe3fd0c518ff0b84982c65db81a3eebab88712593c068f5a43f7bc22d4a3f3608969e8f30b3102b382d2c0f7f28d482b39cbcfd16eb680dd04bda66b9cb0d1c2b2e91d89dd8c6033562f1d3983002b61aa39ef70d45a456178867609c058a09bbcd8bce4d97d2e65c28756659bf5ba111e8541302cea934a2c005331ef89425390f610d2f609d581175d16193e72752fe8384f66051e6a2abea79757f042eb', + UPLOAD_FIRMWARE_AVRDUDE: '83b177b05dcd7043d484e321417d1dd499fdbd80b7109cc86fcb91cb14e59b834c3956a279e8d4ceba466a308cb8a1aceb5ab6770b8f207e9bc92e84a191edc21cdecb4f7cc1883fbf0eb258f1f849ffbe76bb0320dfe92d85f77226b45fd90824fc126e22ebe8d2350f854c9d43a03186d7f260d8d03bf83e6669646b2e13a6371dcbf1dd5711edcbe3c3a0f186d091ba26118ed2cdb3ef58e0079096403a2e93684d5089b216c53f2fcb1387b6e9d49feea914943971ac1e58bba1ecdf4f14f557d278e8b4f05d594e21887ba87322fbe1d70d05f03412d87f3149a4b3aff302088a2f0ecc42302b6ba66024e94226b5d99c9e0375383e4494bc1e0d0e20b8' +}); From 364b89eb77cad7acefea2a09cc603bc6971cb030 Mon Sep 17 00:00:00 2001 From: Alberto Iannaccone Date: Thu, 29 Oct 2020 14:28:45 +0100 Subject: [PATCH 2/2] 2.3.4 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index cfa7134e..c77b5105 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "arduino-create-agent-js-client", - "version": "2.3.3", + "version": "2.3.4", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 7db1587f..bb3012e4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "arduino-create-agent-js-client", - "version": "2.3.3", + "version": "2.3.4", "description": "JS module providing discovery of the Arduino Create Plugin and communication with it", "main": "lib/index.js", "module": "es/index.js",