diff --git a/packages/sample/src/command/analog.ts b/packages/sample/src/command/analog.ts index 0c45a8a4..5630cf22 100644 --- a/packages/sample/src/command/analog.ts +++ b/packages/sample/src/command/analog.ts @@ -1,69 +1,33 @@ -import { openConnectedExpansionHubs } from "@rev-robotics/expansion-hub"; +import { ExpansionHub, openConnectedExpansionHubs } from "@rev-robotics/expansion-hub"; -export async function analog(channel: number, continuous: boolean) { - const hubs = await openConnectedExpansionHubs(); - - if (continuous) { - while (true) { - let value = await hubs[0].getAnalogInput(channel); - console.log(`ADC: ${value} mV`); - } - } else { - let value = await hubs[0].getAnalogInput(channel); +export async function analog(hub: ExpansionHub, channel: number, continuous: boolean) { + while (true) { + let value = await hub.getAnalogInput(channel); console.log(`ADC: ${value} mV`); - hubs.forEach((hub) => { - hub.close(); - }); + if (!continuous) break; } } -export async function temperature(continuous: boolean) { - const hubs = await openConnectedExpansionHubs(); - - if (continuous) { - while (true) { - let value = await hubs[0].getTemperature(); - console.log(`Temperature: ${value} C`); - } - } else { - let value = await hubs[0].getTemperature(); +export async function temperature(hub: ExpansionHub, continuous: boolean) { + while (true) { + let value = await hub.getTemperature(); console.log(`Temperature: ${value} C`); - hubs.forEach((hub) => { - hub.close(); - }); + if (!continuous) break; } } -export async function battery(continuous: boolean) { - const hubs = await openConnectedExpansionHubs(); - - if (continuous) { - while (true) { - let value = await hubs[0].getBatteryVoltage(); - console.log(`Battery: ${value} mV`); - } - } else { - let value = await hubs[0].getBatteryVoltage(); - console.log(`Battery: ${value} mV`); - hubs.forEach((hub) => { - hub.close(); - }); +export async function battery(hub: ExpansionHub, continuous: boolean) { + while (true) { + let value = await hub.getTemperature(); + console.log(`Temperature: ${value} C`); + if (!continuous) break; } } -export async function voltageRail(continuous: boolean) { - const hubs = await openConnectedExpansionHubs(); - - if (continuous) { - while (true) { - let value = await hubs[0].get5VBusVoltage(); - console.log(`5V rail: ${value} mV`); - } - } else { - let value = await hubs[0].get5VBusVoltage(); +export async function voltageRail(hub: ExpansionHub, continuous: boolean) { + while (true) { + let value = await hub.get5VBusVoltage(); console.log(`5V rail: ${value} mV`); - hubs.forEach((hub) => { - hub.close(); - }); + if (!continuous) break; } } diff --git a/packages/sample/src/command/led.ts b/packages/sample/src/command/led.ts index e6571753..91824245 100644 --- a/packages/sample/src/command/led.ts +++ b/packages/sample/src/command/led.ts @@ -2,11 +2,9 @@ import { createLedPattern, ExpansionHub, LedPatternStep, - openConnectedExpansionHubs, } from "@rev-robotics/expansion-hub"; -export async function led() { - const hubs: ExpansionHub[] = await openConnectedExpansionHubs(); +export async function led(hub: ExpansionHub) { const steps = [ new LedPatternStep(1, 0, 255, 0), //green new LedPatternStep(1, 255, 0, 0), //red @@ -14,7 +12,7 @@ export async function led() { new LedPatternStep(1, 255, 0, 255), //magenta new LedPatternStep(1, 255, 255, 0), //yellow ]; - await hubs[0].sendKeepAlive(); + await hub.sendKeepAlive(); const pattern = createLedPattern(steps); - await hubs[0].setModuleLedPattern(pattern); + await hub.setModuleLedPattern(pattern); } diff --git a/packages/sample/src/command/servo.ts b/packages/sample/src/command/servo.ts index 67b9093d..d3711b2f 100644 --- a/packages/sample/src/command/servo.ts +++ b/packages/sample/src/command/servo.ts @@ -1,9 +1,12 @@ -import { openConnectedExpansionHubs } from "@rev-robotics/expansion-hub"; +import { ExpansionHub } from "@rev-robotics/expansion-hub"; -export async function runServo(channel: number, pulseWidth: number, framePeriod: number) { - const hubs = await openConnectedExpansionHubs(); - - await hubs[0].setServoConfiguration(channel, framePeriod); - await hubs[0].setServoPulseWidth(channel, pulseWidth); - await hubs[0].setServoEnable(channel, true); +export async function runServo( + hub: ExpansionHub, + channel: number, + pulseWidth: number, + framePeriod: number, +) { + await hub.setServoConfiguration(channel, framePeriod); + await hub.setServoPulseWidth(channel, pulseWidth); + await hub.setServoEnable(channel, true); } diff --git a/packages/sample/src/main.ts b/packages/sample/src/main.ts index 4240fa5a..779244af 100644 --- a/packages/sample/src/main.ts +++ b/packages/sample/src/main.ts @@ -4,6 +4,14 @@ import { error } from "./command/error.js"; import { list } from "./command/list.js"; import { led } from "./command/led.js"; import { runServo } from "./command/servo.js"; +import { openConnectedExpansionHubs } from "@rev-robotics/expansion-hub"; + +function runOnSigint(block: () => void) { + process.on("SIGINT", () => { + block(); + process.exit(); + }); +} const program = new Command(); @@ -30,7 +38,13 @@ program .command("led") .description("Run LED steps") .action(async () => { - await led(); + runOnSigint(() => { + hub.close(); + }); + + let hubs = await openConnectedExpansionHubs(); + let hub = hubs[0]; + await led(hub); }); program @@ -41,9 +55,15 @@ program "--continuous to run continuously.", ) .action(async (port, options) => { + runOnSigint(() => { + hub.close(); + }); + let isContinuous = options.continuous !== undefined; let portNumber = Number(port); - await analog(portNumber, isContinuous); + let hubs = await openConnectedExpansionHubs(); + let hub = hubs[0]; + await analog(hub, portNumber, isContinuous); }); program @@ -54,8 +74,14 @@ program "Specify --continuous to run continuously", ) .action(async (options) => { + runOnSigint(() => { + hub.close(); + }); + let isContinuous = options.continuous !== undefined; - await temperature(isContinuous); + let hubs = await openConnectedExpansionHubs(); + let hub = hubs[0]; + await temperature(hub, isContinuous); }); program @@ -65,8 +91,15 @@ program "Read the current 5V rail voltage. Specify --continuous to run continuously", ) .action(async (options) => { + runOnSigint(() => { + hub.close(); + }); + let isContinuous = options.continuous !== undefined; - await voltageRail(isContinuous); + let hubs = await openConnectedExpansionHubs(); + let hub = hubs[0]; + await voltageRail(hub, isContinuous); + hub.close(); }); program @@ -76,19 +109,33 @@ program "Read the current battery Voltage. Specify --continuous to run continuously", ) .action(async (options) => { + runOnSigint(() => { + hub.close(); + }); + let isContinuous = options.continuous !== undefined; - await battery(isContinuous); + let hubs = await openConnectedExpansionHubs(); + let hub = hubs[0]; + await battery(hub, isContinuous); + hub.close(); }); program .command("servo [frameWidth]") .description("Run a servo with pulse width and optional frame width") .action(async (channel, pulseWidth, frameWidth) => { + runOnSigint(async () => { + await hub.setServoEnable(channelValue, false); + hub.close(); + }); + let channelValue = Number(channel); let pulseWidthValue = Number(pulseWidth); let frameWidthValue = frameWidth ? Number(frameWidth) : 4000; + let hubs = await openConnectedExpansionHubs(); + let hub = hubs[0]; - await runServo(channelValue, pulseWidthValue, frameWidthValue); + await runServo(hub, channelValue, pulseWidthValue, frameWidthValue); }); program.parse(process.argv);