116 lines
3.5 KiB
C++

//----------------------------------------------------------------------------
//
// 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
};