202 lines
5.3 KiB
C++
Raw Permalink Blame History

//----------------------------------------------------------------------------
//
// Copyright (C) 2008 Intel Corporation
//
// File: EventManagerFlow.cpp
//
// Contents: Api code for Intel(R) Active Management Technology
// (Intel<65> AMT) EventManager Sample.
//
// Notes: This file contains the EventManagerFlow methods implementation.
//
//----------------------------------------------------------------------------
#include "EventManagerFlow.h"
#include "AMT_PETFilterSetting.h"
#include "CmdLineArguments.h"
#pragma region MEMBERS
int index = 1;
CmdLineArguments::Format format;
#pragma endregion
#pragma region METHODS
#pragma region HELP_METHODS
#pragma region PRINT_MESSAGE
// Print success message
void DisplaySuccess()
{
format.SetConsoleTextColor(HGREEN);
cout << "Success" << endl;
format.SetConsoleTextColor(LGRAY);
}
// Print fail message
void PrintFail()
{
format.SetConsoleTextColor(HRED);
cout << "Failed" << endl;
format.SetConsoleTextColor(LGRAY);
}
#pragma endregion
/*
* Description: Print the filter data
* Arguments:
* operationOnFilter - The operation name
* eventFilter - The AMT_PETFilterSetting to print
*/
void PrintFilter(const string operationOnFilter, AMT_PETFilterSetting & eventFilter)
{
if(operationOnFilter != "")
cout << endl << endl << operationOnFilter << " " << eventFilter.ElementName() << " :" << endl;
else
cout << endl << endl << "Event filter #" << index++ << " :" << endl;
cout << "\tInstance ID\t\t: " << eventFilter.InstanceID() << endl;
cout << "\tDevice Address\t\t: " << (unsigned short)eventFilter.DeviceAddress() << endl;
cout << "\tEvent Sensor Type\t: " << (unsigned short)eventFilter.EventSensorType() << endl;
cout << "\tEvent Type\t\t: " << (unsigned short)eventFilter.EventType() << endl;
cout << "\tEvent Source Type\t: " << (unsigned short)eventFilter.EventSourceType() << endl;
cout << "\tSensor Number\t\t: " << (unsigned short)eventFilter.SensorNumber() << endl;
cout << "\tEntity\t\t\t: " << (unsigned short)eventFilter.Entity() << endl;
cout << "\tEntity Instance\t\t: " << (unsigned short)eventFilter.EntityInstance() << endl;
}
#pragma endregion
#pragma region MAIN_METHODS
/*
* Description: Enumerate event filters.
* Arguments:
* wsmanClient - The client to connect
* numOfFilters - The number of existing filters
* verbose - Indicates whether to print extended details about the operation
*/
void EnumerateEventFilter(ICimWsmanClient *wsmanClient, int &numOfFilters, bool verbose)
{
cout << endl << "Enumerate AMT_PETFilterSetting... ";
vector<std::tr1::shared_ptr<AMT_PETFilterSetting>> petFilterVector;
try
{
// Enumerate AMT_PETFilterSetting instances.
AMT_PETFilterSetting petFilterSetting;
petFilterVector = petFilterSetting.Enumerate(wsmanClient);
}
catch(WSManException e)
{
if (verbose)
cout << endl << "Error: " << e.what() << endl;
else
PrintFail();
cout << "Error: Error in Enumerate method." << endl;
return;
}
numOfFilters = petFilterVector.size();
if(verbose)
{
// Go over the array of the filters and print the data
vector<std::tr1::shared_ptr<AMT_PETFilterSetting> >::iterator itr;
for(itr = petFilterVector.begin(); itr != petFilterVector.end(); itr++)
{
PrintFilter("", *(*itr).get());
}
}
else
DisplaySuccess();
}
/*
* Description: Create new event filter
* Arguments:
* petFilterObj - The AMT_PETFilterSetting object to print
* verbose - Indicate whether to print extended details about the operation
*/
void CreateEventFilter(AMT_PETFilterSetting & petFilterObj, bool verbose)
{
cout << endl << "Create AMT_PETFilterSetting... ";
petFilterObj.EnableFilter(DEFAULT_ENABLE_FILTER);
petFilterObj.OEMFilter(DEFAULT_OEM_FILTER);
petFilterObj.LogOnEvent(DEFAULT_LOG_EVENT);
petFilterObj.DeviceAddress(DEFAULT_DEVICE_ADDRESS);
petFilterObj.EventSensorType(DEFAULT_EVENT_SENSOR_TYPE);
petFilterObj.EventType(DEFAULT_EVENT_TYPE);
petFilterObj.EventOffset(DEFAULT_EVENT_OFFSET);
petFilterObj.EventSourceType(DEFAULT_EVENT_SOURCE_TYPE);
petFilterObj.EventSeverity(DEFAULT_EVENT_SEVERITY);
petFilterObj.SensorNumber(DEFAULT_SENSOR_NUMBER);
petFilterObj.Entity(DEFAULT_ENTITY);
petFilterObj.EntityInstance(DEFAULT_ENTITY_INSTANCE);
petFilterObj.PolicyID(DEFAULT_POLICY_ID);
petFilterObj.ElementName(DEFAULT_ELEMENT_NAME);
petFilterObj.InstanceID(DEFAULT_INSTACE_ID);
petFilterObj.SendAlert(DEFAULT_SEND_ALERT);
CimReference petReference;
try
{
petReference = petFilterObj.Create();
DisplaySuccess();
}
catch(WSManException e)
{
if (verbose)
cout << endl << "Error: " << e.what() << endl;
else
PrintFail();
cout << "Error: Error in Create method." << endl;
return;
}
petFilterObj.Get(petReference);
}
/*
* Description: Delete a specific event filter
* Arguments:
* petFilterObj - The AMT_PETFilterSetting object to delete
* verbose - Indicate whether to print extended details about the operation
*/
void DeleteEventFilter(AMT_PETFilterSetting & petFilterObj, bool verbose)
{
cout << endl << "Delete AMT_PETFilterSetting... ";
try
{
petFilterObj.Delete();
}
catch(WSManException e)
{
if (verbose)
cout << endl << "Error: " << e.what() << endl;
else
PrintFail();
cout << "Error: Error in Delete method." << endl;
return;
}
if(verbose)
{
PrintFilter("Deleting Filter", petFilterObj);
}
DisplaySuccess();
}
#pragma endregion
#pragma endregion