From 184fc77a5426d6cd0a617d46497d59149b534939 Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 2 Feb 2024 10:27:23 -0300 Subject: [PATCH 1/3] 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/3] 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/3] 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; }