From 184fc77a5426d6cd0a617d46497d59149b534939 Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 2 Feb 2024 10:27:23 -0300 Subject: [PATCH 1/5] add wait-pin scenario --- src/main.ts | 2 ++ src/scenario/WaitPinCommand.ts | 25 +++++++++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 src/scenario/WaitPinCommand.ts diff --git a/src/main.ts b/src/main.ts index 57ed56f..73514be 100644 --- a/src/main.ts +++ b/src/main.ts @@ -16,6 +16,7 @@ import { DelayCommand } from './scenario/DelayCommand.js'; import { ExpectPinCommand } from './scenario/ExpectPinCommand.js'; import { SetControlCommand } from './scenario/SetControlCommand.js'; import { WaitSerialCommand } from './scenario/WaitSerialCommand.js'; +import { WaitPinCommand } from './scenario/WaitPinCommand.js'; import { uploadFirmware } from './uploadFirmware.js'; const millis = 1_000_000; @@ -141,6 +142,7 @@ async function main() { 'expect-pin': new ExpectPinCommand(), 'set-control': new SetControlCommand(), 'wait-serial': new WaitSerialCommand(expectEngine), + 'wait-pin': new WaitPinCommand(), }); scenario.validate(); } diff --git a/src/scenario/WaitPinCommand.ts b/src/scenario/WaitPinCommand.ts new file mode 100644 index 0000000..3740544 --- /dev/null +++ b/src/scenario/WaitPinCommand.ts @@ -0,0 +1,25 @@ +import chalkTemplate from 'chalk-template'; +import type { APIClient } from '../APIClient.js'; +import type { IScenarioCommand, TestScenario } from '../TestScenario.js'; + +export interface IExpectPinParams { + 'part-id': string; + pin: string; + value: number; +} + +export class WaitPinCommand implements IScenarioCommand { + async run(scenario: TestScenario, client: APIClient, params: IExpectPinParams) { + const partId = params['part-id']; + const pinName = params.pin; + const expectedValue = params.value; + scenario.log( + chalkTemplate`wait-pin {yellow ${partId}}:{magenta ${pinName}} == {yellow ${expectedValue}}`, + ); + let value = (await client.pinRead(partId, pinName))?.value ? 1 : 0; + + while (value !== expectedValue) { + value = (await client.pinRead(partId, pinName))?.value ? 1 : 0; + } + } +} From 97551d43617395362ad0b8e817ec85e44c3d0ab6 Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 2 Feb 2024 10:47:33 -0300 Subject: [PATCH 2/5] new scenario wait pin change --- src/main.ts | 2 ++ src/scenario/WaitPinChangeCommand.ts | 28 ++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 src/scenario/WaitPinChangeCommand.ts diff --git a/src/main.ts b/src/main.ts index 73514be..febc9c5 100644 --- a/src/main.ts +++ b/src/main.ts @@ -17,6 +17,7 @@ import { ExpectPinCommand } from './scenario/ExpectPinCommand.js'; import { SetControlCommand } from './scenario/SetControlCommand.js'; import { WaitSerialCommand } from './scenario/WaitSerialCommand.js'; import { WaitPinCommand } from './scenario/WaitPinCommand.js'; +import { WaitPinChangeCommand } from './scenario/WaitPinChangeCommand.js'; import { uploadFirmware } from './uploadFirmware.js'; const millis = 1_000_000; @@ -143,6 +144,7 @@ async function main() { 'set-control': new SetControlCommand(), 'wait-serial': new WaitSerialCommand(expectEngine), 'wait-pin': new WaitPinCommand(), + 'wait-pin-change': new WaitPinChangeCommand(), }); scenario.validate(); } diff --git a/src/scenario/WaitPinChangeCommand.ts b/src/scenario/WaitPinChangeCommand.ts new file mode 100644 index 0000000..4cde717 --- /dev/null +++ b/src/scenario/WaitPinChangeCommand.ts @@ -0,0 +1,28 @@ +import chalkTemplate from 'chalk-template'; +import type { APIClient } from '../APIClient.js'; +import type { IScenarioCommand, TestScenario } from '../TestScenario.js'; + +export interface IExpectPinParams { + 'part-id': string; + pin: string; + value: number; +} + +export class WaitPinChangeCommand implements IScenarioCommand { + async run(scenario: TestScenario, client: APIClient, params: IExpectPinParams) { + const partId = params['part-id']; + const pinName = params.pin; + const initalValue = (await client.pinRead(partId, pinName))?.value ? 1 : 0; + + scenario.log( + chalkTemplate`wait-pin-toggle {yellow ${partId}}:{magenta ${pinName}} to change from {yellow ${initalValue}}`, + ); + + + let value = (await client.pinRead(partId, pinName))?.value ? 1 : 0; + + while (value == initalValue) { + value = (await client.pinRead(partId, pinName))?.value ? 1 : 0; + } + } +} From d0d1ef8508139f7e7ade25a54d68e7ecd8ee0b79 Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 2 Feb 2024 10:50:28 -0300 Subject: [PATCH 3/5] formating code --- src/scenario/WaitPinChangeCommand.ts | 4 ---- src/scenario/WaitPinCommand.ts | 1 - 2 files changed, 5 deletions(-) diff --git a/src/scenario/WaitPinChangeCommand.ts b/src/scenario/WaitPinChangeCommand.ts index 4cde717..8e40821 100644 --- a/src/scenario/WaitPinChangeCommand.ts +++ b/src/scenario/WaitPinChangeCommand.ts @@ -13,14 +13,10 @@ export class WaitPinChangeCommand implements IScenarioCommand { const partId = params['part-id']; const pinName = params.pin; const initalValue = (await client.pinRead(partId, pinName))?.value ? 1 : 0; - scenario.log( chalkTemplate`wait-pin-toggle {yellow ${partId}}:{magenta ${pinName}} to change from {yellow ${initalValue}}`, ); - - let value = (await client.pinRead(partId, pinName))?.value ? 1 : 0; - while (value == initalValue) { value = (await client.pinRead(partId, pinName))?.value ? 1 : 0; } diff --git a/src/scenario/WaitPinCommand.ts b/src/scenario/WaitPinCommand.ts index 3740544..54f99e3 100644 --- a/src/scenario/WaitPinCommand.ts +++ b/src/scenario/WaitPinCommand.ts @@ -17,7 +17,6 @@ export class WaitPinCommand implements IScenarioCommand { chalkTemplate`wait-pin {yellow ${partId}}:{magenta ${pinName}} == {yellow ${expectedValue}}`, ); let value = (await client.pinRead(partId, pinName))?.value ? 1 : 0; - while (value !== expectedValue) { value = (await client.pinRead(partId, pinName))?.value ? 1 : 0; } From 1bca0228f20034f70d860d985f4357f20e8be9eb Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 2 Feb 2024 11:08:28 -0300 Subject: [PATCH 4/5] dummy --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 3e5cccc..a8f619a 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ # wokwi-cli + Wokwi Simulation API command line interface. ## Installation From 1174075238c2266a14be740cd9671665d2797e4e Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 2 Feb 2024 11:13:55 -0300 Subject: [PATCH 5/5] modify install path to fork --- scripts/install.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/install.sh b/scripts/install.sh index 479a890..4ebfac6 100644 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -25,9 +25,9 @@ main() { # URL based on detected values and version if [ "$version" = "latest" ]; then - wokwi_cli_uri="https://github.com/wokwi/wokwi-cli/releases/latest/download/wokwi-cli-$os-$arch" + wokwi_cli_uri="https://github.com/rafaelcorsi/wokwi-cli/releases/latest/download/wokwi-cli-$os-$arch" else - wokwi_cli_uri="https://github.com/wokwi/wokwi-cli/releases/download/v$version/wokwi-cli-$os-$arch" + wokwi_cli_uri="https://github.com/rafaelcorsi/wokwi-cli/releases/download/v$version/wokwi-cli-$os-$arch" fi wokwi_cli_install="${WOKWI_CLI_INSTALL:-$HOME/.wokwi}" @@ -72,4 +72,4 @@ main() { echo "Stuck? Join our Discord at https://wokwi.com/discord" } -main "$1" \ No newline at end of file +main "$1"