//---------------------------------------------------------------------------- // // Copyright (C) 2022 Intel Corporation // // File: WatchdogCommand.h // // Contents: header file of WatchdogCommand class // //---------------------------------------------------------------------------- #ifndef __WATCHDOG_COMMAND_H__ #define __WATCHDOG_COMMAND_H__ #include "HECIWin.h" #include "HostBasedSetupTypedFlow.h" #include "HostBasedSetupUntypedFlow.h" /* * Type definitions */ typedef unsigned char UINT8; typedef unsigned short UINT16; typedef unsigned int UINT32; typedef unsigned long ULONG; typedef UINT32 AMT_BOOLEAN; typedef UINT32 AMT_STATUS; #pragma pack (1) typedef struct _STATE_INDEPENDENCE_IS_CHANGE_ENABLED_RESPONSE { UINT8 Enabled : 1; UINT8 CurrentOperationalState : 1; UINT8 Reserved : 4; UINT8 TlsOnLocalPorts : 1; UINT8 IsNewInterfaceVersion : 1; } STATE_INDEPENDENCE_IS_CHANGE_ENABLED_RESPONSE; typedef struct _STATE_INDEPENDENCE_IS_CHANGE_TO_AMT_ENABLED_RESPONSE { STATE_INDEPENDENCE_IS_CHANGE_ENABLED_RESPONSE ChangeEnabledResponse; } STATE_INDEPENDENCE_IS_CHANGE_TO_AMT_ENABLED_RESPONSE; typedef struct _STATE_INDEPENDENCE_IS_CHANGE_TO_AMT_ENABLED_REQUEST { UINT8 Command; UINT8 ByteCount; UINT8 SubCommand; UINT8 VersionNumber; } STATE_INDEPENDENCE_IS_CHANGE_TO_AMT_ENABLED_REQUEST; typedef struct _MHC_SET_AMT_OPERATIONAL_STATE_RESPONSE { UINT8 Command; UINT8 ByteCount; UINT8 SubCommand; UINT8 VersionNumber; UINT32 Status; } MHC_SET_AMT_OPERATIONAL_STATE_RESPONSE; typedef struct _MHC_SET_AMT_OPERATIONAL_STATE_REQUEST { UINT8 Command; UINT8 ByteCount; UINT8 SubCommand; UINT8 VersionNumber; UINT8 Enabled; } MHC_SET_AMT_OPERATIONAL_STATE_REQUEST; #pragma pack ( ) class WatchdogCommand { public: WatchdogCommand(bool verbose = false); ~WatchdogCommand(); AMT_STATUS IsAMTEnablingMechanismSupported(STATE_INDEPENDENCE_IS_CHANGE_ENABLED_RESPONSE* changeEnabledResponse); AMT_STATUS SetAMTOperationalState(UINT32* operationalStateResponseStatus); HECIWin WatchdogClient; private: STATE_INDEPENDENCE_IS_CHANGE_ENABLED_RESPONSE parseStateIndependenceIsChangeEnabledResponse(UINT8 resBuffer); }; #endif const UINT8 STATE_INDEPENDENCE_IS_CHANGE_TO_AMT_ENABLED_COMMAND = 0x05; const UINT8 STATE_INDEPENDENCE_IS_CHANGE_TO_AMT_ENABLED_BYTE_COUNT = 0x02; const UINT8 STATE_INDEPENDENCE_IS_CHANGE_TO_AMT_ENABLED_SUB_COMMAND = 0x51; const UINT8 STATE_INDEPENDENCE_IS_CHANGE_TO_AMT_ENABLED_VERSION_NUMBER = 0x10; const STATE_INDEPENDENCE_IS_CHANGE_TO_AMT_ENABLED_REQUEST GET_STATE_INDEPENDENCE_IS_CHANGE_TO_AMT_ENABLED_REQUEST = { STATE_INDEPENDENCE_IS_CHANGE_TO_AMT_ENABLED_COMMAND, STATE_INDEPENDENCE_IS_CHANGE_TO_AMT_ENABLED_BYTE_COUNT, STATE_INDEPENDENCE_IS_CHANGE_TO_AMT_ENABLED_SUB_COMMAND, STATE_INDEPENDENCE_IS_CHANGE_TO_AMT_ENABLED_VERSION_NUMBER }; const UINT8 SET_AMT_OPERATINAL_STATE_COMMAND = 0x05; const UINT8 SET_AMT_OPERATIONAL_STATE_BYTE_COUNT = 0x03; const UINT8 SET_AMT_OPERATINAL_STATE_SUB_COMMAND = 0x53; const UINT8 SET_AMT_OPERATINAL_STATE_VERSION_NUMBER = 0x10; const UINT8 SET_AMT_OPERATINAL_STATE_ENABLED = 1; const MHC_SET_AMT_OPERATIONAL_STATE_REQUEST GET_SET_AMT_OPERATIONAL_STATE_REQUEST_REQUEST = { SET_AMT_OPERATINAL_STATE_COMMAND, SET_AMT_OPERATIONAL_STATE_BYTE_COUNT, SET_AMT_OPERATINAL_STATE_SUB_COMMAND, SET_AMT_OPERATINAL_STATE_VERSION_NUMBER, SET_AMT_OPERATINAL_STATE_ENABLED };