mirror of
https://github.com/preble/libpinproc
synced 2026-02-24 18:25:23 +01:00
Added private Shutdown() method to PRDevice to disable all drivers and switch rules before Close().
This commit is contained in:
@@ -37,6 +37,7 @@ PRDevice::PRDevice(PRMachineType machineType) : machineType(machineType)
|
|||||||
|
|
||||||
PRDevice::~PRDevice()
|
PRDevice::~PRDevice()
|
||||||
{
|
{
|
||||||
|
Shutdown();
|
||||||
Close();
|
Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -99,6 +100,31 @@ void PRDevice::Reset()
|
|||||||
// TODO: Assign defaults based on machineType. Some may have already been done above.
|
// TODO: Assign defaults based on machineType. Some may have already been done above.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PRDevice::Shutdown()
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
PRDriverState driverState;
|
||||||
|
PRSwitchRule switchRule;
|
||||||
|
|
||||||
|
// Deactivate all drivers
|
||||||
|
for (i = 0; i < maxDrivers; i++)
|
||||||
|
{
|
||||||
|
// Get each driver's current state just in case polarity was changed from the default.
|
||||||
|
DriverGetState(i, &driverState);
|
||||||
|
driverState.state = false;
|
||||||
|
DriverUpdateState(&driverState);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deactivate all switch rules
|
||||||
|
switchRule.notifyHost = false;
|
||||||
|
for (i = kPRSwitchPhysicalFirst; i < kPRSwitchPhysicalLast; i++)
|
||||||
|
{
|
||||||
|
SwitchUpdateRule(i, kPREventTypeSwitchOpenDebounced, &switchRule, NULL, 0);
|
||||||
|
SwitchUpdateRule(i, kPREventTypeSwitchClosedDebounced, &switchRule, NULL, 0);
|
||||||
|
SwitchUpdateRule(i, kPREventTypeSwitchOpenNondebounced, &switchRule, NULL, 0);
|
||||||
|
SwitchUpdateRule(i, kPREventTypeSwitchClosedNondebounced, &switchRule, NULL, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int PRDevice::GetEvents(PREvent *events, int maxEvents)
|
int PRDevice::GetEvents(PREvent *events, int maxEvents)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -121,6 +121,7 @@ protected:
|
|||||||
|
|
||||||
|
|
||||||
// Local Device State
|
// Local Device State
|
||||||
|
void Shutdown();
|
||||||
void Reset();
|
void Reset();
|
||||||
PRMachineType machineType;
|
PRMachineType machineType;
|
||||||
PRDriverGlobalConfig driverGlobalConfig;
|
PRDriverGlobalConfig driverGlobalConfig;
|
||||||
|
|||||||
Reference in New Issue
Block a user