mirror of
https://github.com/reactos/reactos.git
synced 2025-03-10 18:24:02 +00:00
198 lines
3.3 KiB
C++
198 lines
3.3 KiB
C++
![]() |
//
|
||
|
// Copyright (C) Microsoft. All rights reserved.
|
||
|
//
|
||
|
#ifndef _FXPOXINTERFACE_H_
|
||
|
#define _FXPOXINTERFACE_H_
|
||
|
|
||
|
#include "FxDevicePwrReqStateMachine.hpp"
|
||
|
|
||
|
class FxPoxInterface {
|
||
|
|
||
|
friend class FxDevicePwrRequirementMachine;
|
||
|
|
||
|
public:
|
||
|
FxPoxInterface(
|
||
|
__in FxPkgPnp* PkgPnp
|
||
|
);
|
||
|
|
||
|
~FxPoxInterface(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
NTSTATUS
|
||
|
CreateDevicePowerRequirementMachine(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
NTSTATUS
|
||
|
NotifyDevicePowerDown(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
|
||
|
VOID
|
||
|
DeviceIsPoweredOn(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
FxPkgPnp*
|
||
|
PkgPnp(
|
||
|
VOID
|
||
|
)
|
||
|
{
|
||
|
return m_PkgPnp;
|
||
|
}
|
||
|
|
||
|
POHANDLE
|
||
|
GetPoHandle(
|
||
|
VOID
|
||
|
)
|
||
|
{
|
||
|
return m_PoHandle;
|
||
|
}
|
||
|
|
||
|
NTSTATUS
|
||
|
InitializeComponents(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
UninitializeComponents(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
RequestComponentActive(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
BOOLEAN
|
||
|
DeclareComponentIdle(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
UpdateIdleTimeoutHint(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
SimulateDevicePowerRequired(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
SimulateDevicePowerNotRequired(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
PoxReportDevicePoweredOn(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
PowerRequiredCallbackInvoked(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
PowerNotRequiredCallbackInvoked(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
private:
|
||
|
|
||
|
NTSTATUS
|
||
|
PoxRegisterDevice(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
DprProcessEventFromPoxCallback(
|
||
|
__in FxDevicePwrRequirementEvents Event
|
||
|
);
|
||
|
|
||
|
struct _POX_SETTINGS *
|
||
|
GetPowerFrameworkSettings(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
PowerRequiredCallbackWorker(
|
||
|
__in BOOLEAN InvokedFromPoxCallback
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
PowerNotRequiredCallbackWorker(
|
||
|
__in BOOLEAN InvokedFromPoxCallback
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
PoxStartDevicePowerManagement(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
|
||
|
VOID
|
||
|
PoxUnregisterDevice(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
PoxActivateComponent(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
PoxIdleComponent(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
PoxSetDeviceIdleTimeout(
|
||
|
__in ULONGLONG IdleTimeout
|
||
|
);
|
||
|
|
||
|
static PO_FX_COMPONENT_IDLE_STATE_CALLBACK StateCallback;
|
||
|
static PO_FX_COMPONENT_ACTIVE_CONDITION_CALLBACK ComponentActiveCallback;
|
||
|
static PO_FX_COMPONENT_IDLE_CONDITION_CALLBACK ComponentIdleCallback;
|
||
|
static PO_FX_DEVICE_POWER_REQUIRED_CALLBACK PowerRequiredCallback;
|
||
|
static PO_FX_DEVICE_POWER_NOT_REQUIRED_CALLBACK PowerNotRequiredCallback;
|
||
|
static PO_FX_POWER_CONTROL_CALLBACK PowerControlCallback;
|
||
|
|
||
|
public:
|
||
|
//
|
||
|
// Device power requirement state machine
|
||
|
//
|
||
|
FxDevicePwrRequirementMachine * m_DevicePowerRequirementMachine;
|
||
|
|
||
|
//
|
||
|
// Idle timeout hint to be provided to power framework at the next
|
||
|
// opportunity, i.e. a pending update to the idle timeout hint.
|
||
|
//
|
||
|
ULONG m_NextIdleTimeoutHint;
|
||
|
|
||
|
private:
|
||
|
FxPkgPnp* m_PkgPnp;
|
||
|
|
||
|
//
|
||
|
// Handle obtained upon registration with power manager
|
||
|
//
|
||
|
POHANDLE m_PoHandle;
|
||
|
|
||
|
//
|
||
|
// Variable that tracks whether device power is required and the lock that
|
||
|
// protects this variable
|
||
|
//
|
||
|
BOOLEAN m_DevicePowerRequired;
|
||
|
MxLock m_DevicePowerRequiredLock;
|
||
|
|
||
|
//
|
||
|
// Idle timeout hint currently provided to power framework.
|
||
|
//
|
||
|
ULONG m_CurrentIdleTimeoutHint;
|
||
|
};
|
||
|
|
||
|
#endif // _FXPOXINTERFACE_H_
|