27 "EventInfo must have one entry per CrEvent");
39 {
NULL,
"PreparingDevicesOff", 0,
47 { &Resetting,
"DrainingReferences", 0,
51 { &Resetting,
"PreparingDevices", 0,
115 case CrEvent::ControllerLost:
119 case CrEvent::ControllerNeedsReset:
122 case CrEvent::HubRequestsReset:
125 case CrEvent::RootHubPoweringDown:
143 case CrEvent::ControllerResetDone:
151 case CrEvent::ControllerNeedsReset:
156 case CrEvent::RootHubPoweredUp:
163 case CrEvent::ControllerLost:
176 if (
Event != CrEvent::DevicesReady)
190 if (
Event == CrEvent::ControllerNeedsReset)
210 if (
Event == CrEvent::ResetBlocksCleared)
227 if (
Event == CrEvent::DevicesReady)
246 case CrEvent::ControllerResetDone:
254 case CrEvent::ControllerNeedsReset:
266 if (
Event == CrEvent::ControllerResetDone)
278 case CrEvent::HubRequestsReset:
281 case CrEvent::ControllerNeedsReset:
285 case CrEvent::RootHubPoweringDown:
290 case CrEvent::ControllerLost:
304 if (
Event == CrEvent::ControllerNeedsReset)
316 case CrEvent::HubRequestsReset:
320 case CrEvent::RootHubPoweringDown:
335 case CrEvent::ControllerResetDone:
339 case CrEvent::RootHubPoweredUp:
VOID AllowRootHubPowerDown()
VOID DereferenceController()
SM_RESULT OnRootHubOff(_In_ CrEvent Event)
m_ResetSeen: a reset done while off was caught up. m_ResetPending: a reset is owed.
SM_RESULT OnDrainingReferences(_In_ CrEvent Event)
SM_RESULT OnResettingController(_In_ CrEvent Event)
static const State RootHubOn
SM_RESULT OnFailedOff(_In_ CrEvent Event)
VOID UnblockRootHubTraffic()
static const State RootHubOff
SM_RESULT OnPreparingDevices(_In_ CrEvent Event)
SM_RESULT OnAwaitingHubReset(_In_ CrEvent Event)
SM_RESULT EndResetForHub()
static const State FailedOff
static const SM_EVENT_INFO EventInfo[]
VOID MarkResetInProgress()
SM_RESULT OnRootHubOn(_In_ CrEvent Event)
static const State DrainingReferences
static const State PreparingDevicesOff
SM_RESULT EnterPreparingDevices()
SM_RESULT PowerDown(_In_ BOOLEAN ResetSeen)
SM_RESULT StartReset(_In_ BOOLEAN ForHub)
VOID HoldDeviceRequests()
VOID CompleteHubReset(_In_ BOOLEAN Succeeded)
UcxController * m_Controller
UcxController * Controller() const
static const State Resetting
SM_RESULT EnterDrainingReferences()
VOID NotifyDevicesResetDone()
SM_RESULT OnResetting(_In_ CrEvent Event)
SM_RESULT OnPreparingDevicesOff(_In_ CrEvent Event)
static const State AwaitingHubReset
static const State AwaitingResetDone
VOID ReleaseDeviceRequests()
VOID PrepareDevicesForReset()
SM_RESULT EnterResettingController()
static const State Failed
SM_RESULT OnFailed(_In_ CrEvent Event)
SM_RESULT OnAwaitingResetDone(_In_ CrEvent Event)
VOID ReleaseResetCompleteWaiter()
static const State ResettingController
VOID LetResetCompletionProceed()
VOID Initialize(_In_ UcxController *Controller)
SM_RESULT OnFailedOn(_In_ CrEvent Event)
VOID ReferenceController()
static const State FailedOn
static const State PreparingDevices
VOID SmInitialize(_In_ const State *Initial)
static SM_RESULT SmTransition(_In_ const State *Target)
static SM_RESULT SmHandled()
static SM_RESULT SmUnhandled()
_Check_return_ _In_ DXGK_EVENT_TYPE _In_ ULONG Event
#define SM_STATE_TAKES_REQUESTS
#define SM_STATE_NEEDS_PASSIVE
One state. Handler gets every event the state sees.
_Must_inspect_result_ _In_ WDFDEVICE _In_ PUCX_CONTROLLER_CONFIG _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ UCXCONTROLLER * Controller