From 26670142b3b71393b2365417ea15e5bca8501a64 Mon Sep 17 00:00:00 2001 From: Gerry Stellenberg Date: Fri, 3 Feb 2012 16:38:33 -0600 Subject: [PATCH] Added 'now' param to patter functions. --- examples/pinproctest/switches.cpp | 2 +- include/pinproc.h | 13 ++++--------- src/pinproc.cpp | 16 ++++++++-------- 3 files changed, 13 insertions(+), 18 deletions(-) diff --git a/examples/pinproctest/switches.cpp b/examples/pinproctest/switches.cpp index 3c49690..5b19132 100644 --- a/examples/pinproctest/switches.cpp +++ b/examples/pinproctest/switches.cpp @@ -102,7 +102,7 @@ void ConfigureSternFlipperSwitchRule (PRHandle proc, int swNum, int mainCoilNum, // Flipper on rules PRDriverGetState(proc, mainCoilNum, &drivers[0]); - PRDriverStatePatter(&drivers[0],patterOnTime,patterOffTime,pulseTime); // Pulse coil for 34ms. + PRDriverStatePatter(&drivers[0],patterOnTime,patterOffTime,pulseTime,true); // Pulse coil for 34ms. sw.notifyHost = false; sw.reloadActive = false; PRSwitchUpdateRule(proc, swNum, kPREventTypeSwitchClosedNondebounced, &sw, drivers, numDriverRules, true); diff --git a/include/pinproc.h b/include/pinproc.h index 99e2c62..a8975fe 100644 --- a/include/pinproc.h +++ b/include/pinproc.h @@ -271,17 +271,12 @@ PINPROC_API PRResult PRDriverSchedule(PRHandle handle, uint8_t driverNum, uint32 * Assigns a pitter-patter schedule (repeating on/off) to the given driver. * This function is provided for convenience. See PRDriverStatePatter() for a full description. */ -PINPROC_API PRResult PRDriverPatter(PRHandle handle, uint8_t driverNum, uint8_t millisecondsOn, uint8_t millisecondsOff, uint8_t originalOnTime); +PINPROC_API PRResult PRDriverPatter(PRHandle handle, uint8_t driverNum, uint8_t millisecondsOn, uint8_t millisecondsOff, uint8_t originalOnTime, bool_t now); /** * Assigns a pitter-patter schedule (repeating on/off) to the given driver on for the given duration. * This function is provided for convenience. See PRDriverStatePulsedPatter() for a full description. */ -PINPROC_API PRResult PRDriverPulsedPatter(PRHandle handle, uint8_t driverNum, uint8_t millisecondsOn, uint8_t millisecondsOff, uint8_t originalOnTime); -/** - * Assigns a pitter-patter schedule (repeating on/off) to the given driver for the given duration. - * This function is provided for convenience. See PRDriverStatePatter() for a full description. - */ -PINPROC_API PRResult PRDriverPulsedPatter(PRHandle handle, uint8_t driverNum, uint8_t millisecondsOn, uint8_t millisecondsOff, uint8_t originalOnTime); +PINPROC_API PRResult PRDriverPulsedPatter(PRHandle handle, uint8_t driverNum, uint8_t millisecondsOn, uint8_t millisecondsOff, uint8_t originalOnTime, bool_t now); /** * Prepares an Aux Command to drive the Aux bus. * This function is provided for convenience. @@ -342,14 +337,14 @@ PINPROC_API void PRDriverStateSchedule(PRDriverState *driverState, uint32_t sche * * Use originalOnTime to pulse the driver for a number of milliseconds before the pitter-patter schedule begins. */ -PINPROC_API void PRDriverStatePatter(PRDriverState *driverState, uint8_t millisecondsOn, uint8_t millisecondsOff, uint8_t originalOnTime); +PINPROC_API void PRDriverStatePatter(PRDriverState *driverState, uint8_t millisecondsOn, uint8_t millisecondsOff, uint8_t originalOnTime, bool_t now); /** * @brief Changes the given #PRDriverState to reflect a pitter-patter schedule state. * Just like the regular Patter above, but PulsePatter only drives the patter * scheduled for the given number of milliseconds before disabling the driver. */ -PINPROC_API void PRDriverStatePulsedPatter(PRDriverState *driverState, uint8_t millisecondsOn, uint8_t millisecondsOff, uint8_t patterTime); +PINPROC_API void PRDriverStatePulsedPatter(PRDriverState *driverState, uint8_t millisecondsOn, uint8_t millisecondsOff, uint8_t patterTime, bool_t now); /** * Write Aux Port commands into the Aux Port command memory. diff --git a/src/pinproc.cpp b/src/pinproc.cpp index 3cd153d..55910f6 100644 --- a/src/pinproc.cpp +++ b/src/pinproc.cpp @@ -207,18 +207,18 @@ PRResult PRDriverSchedule(PRHandle handle, uint8_t driverNum, uint32_t schedule, PRDriverStateSchedule(&driver, schedule, cycleSeconds, now); return handleAsDevice->DriverUpdateState(&driver); } -PRResult PRDriverPatter(PRHandle handle, uint8_t driverNum, uint8_t millisecondsOn, uint8_t millisecondsOff, uint8_t originalOnTime) +PRResult PRDriverPatter(PRHandle handle, uint8_t driverNum, uint8_t millisecondsOn, uint8_t millisecondsOff, uint8_t originalOnTime, bool_t now) { PRDriverState driver; handleAsDevice->DriverGetState(driverNum, &driver); - PRDriverStatePatter(&driver, millisecondsOn, millisecondsOff, originalOnTime); + PRDriverStatePatter(&driver, millisecondsOn, millisecondsOff, originalOnTime, now); return handleAsDevice->DriverUpdateState(&driver); } -PRResult PRDriverPulsedPatter(PRHandle handle, uint8_t driverNum, uint8_t millisecondsOn, uint8_t millisecondsOff, uint8_t duration) +PRResult PRDriverPulsedPatter(PRHandle handle, uint8_t driverNum, uint8_t millisecondsOn, uint8_t millisecondsOff, uint8_t duration, bool_t now) { PRDriverState driver; handleAsDevice->DriverGetState(driverNum, &driver); - PRDriverStatePulsedPatter(&driver, millisecondsOn, millisecondsOff, duration); + PRDriverStatePulsedPatter(&driver, millisecondsOn, millisecondsOff, duration, now); return handleAsDevice->DriverUpdateState(&driver); } PRResult PRDriverAuxSendCommands(PRHandle handle, PRDriverAuxCommand * commands, uint8_t numCommands, uint8_t startingAddr) @@ -321,11 +321,11 @@ void PRDriverStateSchedule(PRDriverState *driver, uint32_t schedule, uint8_t cyc driver->patterEnable = false; driver->futureEnable = false; } -void PRDriverStatePatter(PRDriverState *driver, uint8_t millisecondsOn, uint8_t millisecondsOff, uint8_t originalOnTime) +void PRDriverStatePatter(PRDriverState *driver, uint8_t millisecondsOn, uint8_t millisecondsOff, uint8_t originalOnTime, bool_t now) { driver->state = true; driver->timeslots = 0; - driver->waitForFirstTimeSlot = false; + driver->waitForFirstTimeSlot = !now; driver->outputDriveTime = originalOnTime; driver->patterOnTime = millisecondsOn; driver->patterOffTime = millisecondsOff; @@ -333,11 +333,11 @@ void PRDriverStatePatter(PRDriverState *driver, uint8_t millisecondsOn, uint8_t driver->futureEnable = false; } -void PRDriverStatePulsedPatter(PRDriverState *driver, uint8_t millisecondsOn, uint8_t millisecondsOff, uint8_t patterTime) +void PRDriverStatePulsedPatter(PRDriverState *driver, uint8_t millisecondsOn, uint8_t millisecondsOff, uint8_t patterTime, bool_t now) { driver->state = false; driver->timeslots = 0; - driver->waitForFirstTimeSlot = false; + driver->waitForFirstTimeSlot = !now; driver->outputDriveTime = patterTime; driver->patterOnTime = millisecondsOn; driver->patterOffTime = millisecondsOff;