|
|
#pragma once
//-----------------------------------------------------------
// Constants / macros
#define TMMS_INFINITE 0x7fffffff
#define TMMS_Tr 0x00000bb8 // Timeout until a rescan completes: ms(3sec)
#define TMMS_Tc 0x0000ea60 // Timeout to retry a valid configuration: ms(1min)
#define TMMS_Tp 0x000007d0 // Timeout to expect a media connect for a selected config: ms(2sec)
#define TMMS_Tf 0x0000ea60 // Timeout to recover from a failed configuration: ms(1min)
#define TMMS_Td 0x00001388 // Timeout to delay the {SSr} processing: ms(5sec)
#define TIMER_SET(pIntf, tm, Err) Err=StateTmSetOneTimeTimer((pIntf), (tm))
#define TIMER_RESET(pIntf, Err) Err=StateTmSetOneTimeTimer((pIntf), TMMS_INFINITE)
extern DWORD DhcpStaticRefreshParams(IN LPWSTR Adapter);
//-----------------------------------------------------------
// Type definitions
//
// Defines the state handler function. The interface context contains
// a pointer to one State Handler function. Based on the function it points
// to, this pointer identifies the state where the context is in. There should
// be one function call having this prototype for each possible state:
// x StateInitFn {SI}
// x StateHardResetFn, {SHr}
// x StateSoftResetFn, {SSr}
// x StateDelaySoftResetFn, {SDSr}
// x StateQueryFn, {SQ}
// x StateIterateFn, {SIter}
// x StateNotifyFn, {SN}
// x StateCfgHardKeyFn, {SCk}
// x StateConfiguredFn, {SC}
// x StateCfgRemoveFn, {SRs}
// x StateCfgPreserveFn, {SPs}
// x StateFailedFn, {SF}
typedef struct _INTF_CONTEXT *PINTF_CONTEXT; typedef DWORD(*PFN_STATE_HANDLER)(PINTF_CONTEXT pIntfContext);
// Enumeration for state transition events
typedef enum { // a new interface has been added to the system (either device arrival or adapter bind)
eEventAdd=0, // the interface has been removed from the system (either device removal or adapter unbind)
eEventRemove, // media connect has been received for the interface
eEventConnect, // media disconnect has been received for the interface
eEventDisconnect, // a timeout occured for the interface
eEventTimeout, // a refresh command has been issued
eEventCmdRefresh, // a reset command has been issued
eEventCmdReset, // a WZCCMD_CFG_NEXT command has been issued
eEventCmdCfgNext, // a WZCCMD_CFG_DELETE command has been issued
eEventCmdCfgDelete, // a WZCCMD_CFG_NOOP command has been issued
eEventCmdCfgNoop } ESTATE_EVENT;
//-----------------------------------------------------------
// Function declarations
//-----------------------------------------------------------
// StateTmSetOneTimeTimer: Sets a one time timer for the given context with the
// hardcoded callback WZCTimeoutCallback() and with the parameter the interface
// context itself.
// Parameters:
// [in/out] pIntfContext: identifies the context for which is set the timer.
// [in] dwMSeconds: miliseconds interval when the timer is due to fire
DWORD StateTmSetOneTimeTimer( PINTF_CONTEXT pIntfContext, DWORD dwMSeconds);
//-----------------------------------------------------------
// StateDispatchEvent: processes an event that will cause the state machine to transition
// through one or more states.
// Parameters:
// [in] StateEvent: identifies the event that triggers the transition(s)
// [in] pIntfContext: points to the interface that is subject for the transition(s)
// [in] pvEventData: any data related to the event
DWORD StateDispatchEvent( ESTATE_EVENT StateEvent, PINTF_CONTEXT pIntfContext, PVOID pvEventData);
//-----------------------------------------------------------
// State Handler functions:
//-----------------------------------------------------------
// StateInitFn: Handler for the {SI} state.
DWORD StateInitFn( PINTF_CONTEXT pIntfContext);
//-----------------------------------------------------------
// StateHardResetFn: Handler for the {SHr} state
DWORD StateHardResetFn( PINTF_CONTEXT pIntfContext);
//-----------------------------------------------------------
// StateSoftResetFn: Handler for the {SSr} state
DWORD StateSoftResetFn( PINTF_CONTEXT pIntfContext);
//-----------------------------------------------------------
// StateDelaySoftResetFn: Handler for the {SDSr} state
DWORD StateDelaySoftResetFn( PINTF_CONTEXT pIntfContext);
//-----------------------------------------------------------
// StateQueryFn: Handler for the {SQ} state
DWORD StateQueryFn( PINTF_CONTEXT pIntfContext);
//-----------------------------------------------------------
// StateIterateFn: Handler for the {SIter} state
DWORD StateIterateFn( PINTF_CONTEXT pIntfContext);
//-----------------------------------------------------------
// StateConfiguredFn: Handler for the {SC} state
DWORD StateConfiguredFn( PINTF_CONTEXT pIntfContext);
//-----------------------------------------------------------
// StateFailedFn: Handler for the {SF} state
DWORD StateFailedFn( PINTF_CONTEXT pIntfContext);
//-----------------------------------------------------------
// StateCfgRemoveFn: Handler for the {SRs} state
DWORD StateCfgRemoveFn( PINTF_CONTEXT pIntfContext);
//-----------------------------------------------------------
// StateCfgPreserveFn: Handler for the {SPs} state
DWORD StateCfgPreserveFn( PINTF_CONTEXT pIntfContext);
//-----------------------------------------------------------
// StateCfgHardKeyFn: Handler for the {SCk} state
DWORD StateCfgHardKeyFn( PINTF_CONTEXT pIntfContext);
//-----------------------------------------------------------
// StateNotifyFn: Handler for the {SN} state
DWORD StateNotifyFn( PINTF_CONTEXT pIntfContext);
|