mirror of
https://github.com/preble/libpinproc
synced 2026-02-24 18:25:23 +01:00
Added code to set up Stern flipper rules
This commit is contained in:
@@ -81,6 +81,30 @@ void ConfigureWPCFlipperSwitchRule (PRHandle proc, int swNum, int mainCoilNum, i
|
|||||||
PRSwitchUpdateRule(proc, swNum, kPREventTypeSwitchOpenDebounced, &sw, NULL, 0);
|
PRSwitchUpdateRule(proc, swNum, kPREventTypeSwitchOpenDebounced, &sw, NULL, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ConfigureSternFlipperSwitchRule (PRHandle proc, int swNum, int mainCoilNum, int pulseTime, int patterOnTime, int patterOffTime)
|
||||||
|
{
|
||||||
|
printf("swNum: %d', coilnum: %d, pulseTime: %d, pon: %d, poff: %d\n", swNum,mainCoilNum,pulseTime,patterOnTime,patterOffTime);
|
||||||
|
const int numDriverRules = 1;
|
||||||
|
PRDriverState drivers[numDriverRules];
|
||||||
|
PRSwitchRule sw;
|
||||||
|
|
||||||
|
// Flipper on rules
|
||||||
|
PRDriverGetState(proc, mainCoilNum, &drivers[0]);
|
||||||
|
PRDriverStatePatter(&drivers[0],patterOnTime,patterOffTime,pulseTime); // Pulse coil for 34ms.
|
||||||
|
sw.notifyHost = false;
|
||||||
|
PRSwitchUpdateRule(proc, swNum, kPREventTypeSwitchClosedNondebounced, &sw, drivers, numDriverRules);
|
||||||
|
sw.notifyHost = true;
|
||||||
|
PRSwitchUpdateRule(proc, swNum, kPREventTypeSwitchClosedDebounced, &sw, NULL, 0);
|
||||||
|
|
||||||
|
// Flipper off rules
|
||||||
|
PRDriverGetState(proc, mainCoilNum, &drivers[0]);
|
||||||
|
PRDriverStateDisable(&drivers[0]); // Disable main coil
|
||||||
|
sw.notifyHost = false;
|
||||||
|
PRSwitchUpdateRule(proc, swNum, kPREventTypeSwitchOpenNondebounced, &sw, drivers, numDriverRules);
|
||||||
|
sw.notifyHost = true;
|
||||||
|
PRSwitchUpdateRule(proc, swNum, kPREventTypeSwitchOpenDebounced, &sw, NULL, 0);
|
||||||
|
}
|
||||||
|
|
||||||
void ConfigureBumperRule (PRHandle proc, int swNum, int coilNum, int pulseTime)
|
void ConfigureBumperRule (PRHandle proc, int swNum, int coilNum, int pulseTime)
|
||||||
{
|
{
|
||||||
const int numDriverRules = 1;
|
const int numDriverRules = 1;
|
||||||
@@ -106,11 +130,21 @@ void ConfigureSwitchRules(PRHandle proc, YAML::Node& yamlDoc)
|
|||||||
int swNum, coilMain, coilHold;
|
int swNum, coilMain, coilHold;
|
||||||
std::string flipperName;
|
std::string flipperName;
|
||||||
*flippersIt >> flipperName;
|
*flippersIt >> flipperName;
|
||||||
|
if (machineType == kPRMachineWPC)
|
||||||
|
{
|
||||||
yamlDoc[kSwitchesSection][flipperName][kNumberField] >> numStr; swNum = PRDecode(machineType, numStr.c_str());
|
yamlDoc[kSwitchesSection][flipperName][kNumberField] >> numStr; swNum = PRDecode(machineType, numStr.c_str());
|
||||||
yamlDoc[kCoilsSection][flipperName + "Main"][kNumberField] >> numStr; coilMain = PRDecode(machineType, numStr.c_str());
|
yamlDoc[kCoilsSection][flipperName + "Main"][kNumberField] >> numStr; coilMain = PRDecode(machineType, numStr.c_str());
|
||||||
yamlDoc[kCoilsSection][flipperName + "Hold"][kNumberField] >> numStr; coilHold = PRDecode(machineType, numStr.c_str());
|
yamlDoc[kCoilsSection][flipperName + "Hold"][kNumberField] >> numStr; coilHold = PRDecode(machineType, numStr.c_str());
|
||||||
ConfigureWPCFlipperSwitchRule (proc, swNum, coilMain, coilHold, kFlipperPulseTime);
|
ConfigureWPCFlipperSwitchRule (proc, swNum, coilMain, coilHold, kFlipperPulseTime);
|
||||||
}
|
}
|
||||||
|
else if (machineType == kPRMachineStern)
|
||||||
|
{
|
||||||
|
printf("hi\n");
|
||||||
|
yamlDoc[kSwitchesSection][flipperName][kNumberField] >> numStr; swNum = PRDecode(machineType, numStr.c_str());
|
||||||
|
yamlDoc[kCoilsSection][flipperName + "Main"][kNumberField] >> numStr; coilMain = PRDecode(machineType, numStr.c_str());
|
||||||
|
ConfigureSternFlipperSwitchRule (proc, swNum, coilMain, kFlipperPulseTime, kFlipperPatterOnTime, kFlipperPatterOffTime);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const YAML::Node& bumpers = yamlDoc[kBumpersSection];
|
const YAML::Node& bumpers = yamlDoc[kBumpersSection];
|
||||||
for (YAML::Iterator bumpersIt = bumpers.begin(); bumpersIt != bumpers.end(); ++bumpersIt)
|
for (YAML::Iterator bumpersIt = bumpers.begin(); bumpersIt != bumpers.end(); ++bumpersIt)
|
||||||
|
|||||||
Reference in New Issue
Block a user