1
0
mirror of https://github.com/preble/libpinproc synced 2026-02-24 18:25:23 +01:00

Added 'now' param to patter functions.

This commit is contained in:
Gerry Stellenberg
2012-02-03 16:38:33 -06:00
parent 27bfbbf342
commit 26670142b3
3 changed files with 13 additions and 18 deletions

View File

@@ -102,7 +102,7 @@ void ConfigureSternFlipperSwitchRule (PRHandle proc, int swNum, int mainCoilNum,
// Flipper on rules // Flipper on rules
PRDriverGetState(proc, mainCoilNum, &drivers[0]); 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.notifyHost = false;
sw.reloadActive = false; sw.reloadActive = false;
PRSwitchUpdateRule(proc, swNum, kPREventTypeSwitchClosedNondebounced, &sw, drivers, numDriverRules, true); PRSwitchUpdateRule(proc, swNum, kPREventTypeSwitchClosedNondebounced, &sw, drivers, numDriverRules, true);

View File

@@ -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. * Assigns a pitter-patter schedule (repeating on/off) to the given driver.
* This function is provided for convenience. See PRDriverStatePatter() for a full description. * 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. * 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. * 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); PINPROC_API PRResult PRDriverPulsedPatter(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 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);
/** /**
* Prepares an Aux Command to drive the Aux bus. * Prepares an Aux Command to drive the Aux bus.
* This function is provided for convenience. * 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. * 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. * @brief Changes the given #PRDriverState to reflect a pitter-patter schedule state.
* Just like the regular Patter above, but PulsePatter only drives the patter * Just like the regular Patter above, but PulsePatter only drives the patter
* scheduled for the given number of milliseconds before disabling the driver. * 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. * Write Aux Port commands into the Aux Port command memory.

View File

@@ -207,18 +207,18 @@ PRResult PRDriverSchedule(PRHandle handle, uint8_t driverNum, uint32_t schedule,
PRDriverStateSchedule(&driver, schedule, cycleSeconds, now); PRDriverStateSchedule(&driver, schedule, cycleSeconds, now);
return handleAsDevice->DriverUpdateState(&driver); 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; PRDriverState driver;
handleAsDevice->DriverGetState(driverNum, &driver); handleAsDevice->DriverGetState(driverNum, &driver);
PRDriverStatePatter(&driver, millisecondsOn, millisecondsOff, originalOnTime); PRDriverStatePatter(&driver, millisecondsOn, millisecondsOff, originalOnTime, now);
return handleAsDevice->DriverUpdateState(&driver); 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; PRDriverState driver;
handleAsDevice->DriverGetState(driverNum, &driver); handleAsDevice->DriverGetState(driverNum, &driver);
PRDriverStatePulsedPatter(&driver, millisecondsOn, millisecondsOff, duration); PRDriverStatePulsedPatter(&driver, millisecondsOn, millisecondsOff, duration, now);
return handleAsDevice->DriverUpdateState(&driver); return handleAsDevice->DriverUpdateState(&driver);
} }
PRResult PRDriverAuxSendCommands(PRHandle handle, PRDriverAuxCommand * commands, uint8_t numCommands, uint8_t startingAddr) 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->patterEnable = false;
driver->futureEnable = 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->state = true;
driver->timeslots = 0; driver->timeslots = 0;
driver->waitForFirstTimeSlot = false; driver->waitForFirstTimeSlot = !now;
driver->outputDriveTime = originalOnTime; driver->outputDriveTime = originalOnTime;
driver->patterOnTime = millisecondsOn; driver->patterOnTime = millisecondsOn;
driver->patterOffTime = millisecondsOff; driver->patterOffTime = millisecondsOff;
@@ -333,11 +333,11 @@ void PRDriverStatePatter(PRDriverState *driver, uint8_t millisecondsOn, uint8_t
driver->futureEnable = false; 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->state = false;
driver->timeslots = 0; driver->timeslots = 0;
driver->waitForFirstTimeSlot = false; driver->waitForFirstTimeSlot = !now;
driver->outputDriveTime = patterTime; driver->outputDriveTime = patterTime;
driver->patterOnTime = millisecondsOn; driver->patterOnTime = millisecondsOn;
driver->patterOffTime = millisecondsOff; driver->patterOffTime = millisecondsOff;