void FeedSocketDriver::ExecuteCommand( Command command )
{
	string logMessage = "FeedsSocket Driver - Execute Command "	+ command.Name();
	EventLogger::Instance()->WriteInformation( logMessage.c_str() );

	if ( !strcmp( command.Name().c_str(), INIT_CMD ) )
	{
		CommandParameter* ipParam = command.GetParameter( SOCKETDriver_IP );
		this->ip = *(string*)(ipParam->Value);

		CommandParameter* portParam = command.GetParameter( SOCKETDriver_PORT );
		this->port = *(int*)(portParam->Value);

		FeedsSocketClient::Instance()->Initialize(this->ip, this->port);

	    string initMessage = "{\"command\":\"Init\", \"userId\"=\"1\"}";
	    FeedsSocketClient::Instance()->SendMessage(initMessage);
	}
	else if( !strcmp( command.Name().c_str(), STOP_CMD ) )
	{
		FeedsSocketClient::Instance()->Close();
	}
	else if( !strcmp( command.Name().c_str(), SETVAL_CMD) )
	{
		CommandParameter* ipParam = command.GetParameter( VALUE_KEY );
		string msg = *(string*)(ipParam->Value);

		string sendmsg = "{\"command\":\"PostData\", \"userId\":\"1\", \"feedId\":\"1\", \"date\":\"Today\", \"value\":\"" + msg + "\"}";
		FeedsSocketClient::Instance()->SendMessage( sendmsg );
	}
}
void UltraHeatDriver::ExecuteCommand( Command command )
{
	string logMessage = "UltraHeatDriver - Execute Command " + command.Name();
	EventLogger::Instance()->WriteInformation( logMessage.c_str() );

	if ( !strcmp( command.Name().c_str(), INIT_CMD ) )
	{
		CommandParameter* comNumberParam = command.GetParameter( COMPORT_NUM );
		this->comPortNumber = *(int*) ( comNumberParam->Value );

		char temp[50];
		sprintf( temp, "%s%d", SERIAL_PORT, this->comPortNumber );
		this->comPortName = temp;

		this->comPortFD = this->Open_port();
		this->StartReadDataThread();
		EventLogger::Instance()->WriteVerbose( "UltraHeatDriver - Opening serial port - %s", this->comPortName.c_str() );
	}
	else if ( !strcmp( command.Name().c_str(), SETVAL_CMD ) )
	{
		string data = "Exeuting SETVAL_CMD\n";
		write(this->fdDebug, data.c_str(), data.size() );

		CommandParameter* valueParam = command.GetParameter( VALUE_KEY );
		int value = *(int*) ( valueParam->Value );
		string message;

		if( value == 1 )
		{
			message = this->CreateMessage( HEAT_ON_CMDNAME, "" );
			EventLogger::Instance()->WriteVerbose( "UltraHeatDriver - HEAT ONN - %s", message.c_str() );
		}
		else
		{
			message = this->CreateMessage( HEAT_OFF_CMDNAME, "" );
			EventLogger::Instance()->WriteVerbose( "UltraHeatDriver - HEAT OFF - %s", message.c_str() );
		}

		this->WriteData( message );
	}
	else if ( !strcmp( command.Name().c_str(), STOP_CMD ) )
	{

		string logMessage = "UltraHeatDriver - Stop succeeded.";

		if( this->comPortFD == -1)
		{
			logMessage = "UltraHeatDriver - the COM hasn't been opened!";
		}
		else
		{
			this->Close_port( this->comPortFD );
		}

		EventLogger::Instance()->WriteVerbose( logMessage.c_str() );
		this->StopReadDataThread();
	}
	else if( ! strcmp( command.Name().c_str(), SET_PARAM_CMD ) )
	{
		CommandParameter* cmdParamKey = command.GetParameter( SET_PARAM_NAME );
		CommandParameter* cmdParamValue = command.GetParameter( SET_PARAM_VAL );

		if( cmdParamKey == NULL || cmdParamValue == NULL )
		{
			EventLogger::Instance()->WriteVerbose("The %s command should contain two parameters - %s and %s.", SET_PARAM_CMD, SET_PARAM_NAME, SET_PARAM_VAL);
			// throw
			return;
		}

		string key = *(string*)cmdParamKey->Value;
		string value = *(string*)cmdParamValue->Value;

		string message = this->CreateMessage( key, value );
		this->WriteData( message );
		EventLogger::Instance()->WriteVerbose( "UltraHeatDriver - %s", message.c_str() );
	}
	else
	{
		EventLogger::Instance()->WriteVerbose( "The command '%s' is not supported by the UltraHeatDriver.", command.Name().c_str() );
	}
}