1
0
mirror of https://github.com/preble/libpinproc synced 2026-02-22 18:15:25 +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
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);

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.
* 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.

View File

@@ -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;