/* * Copyright (c) 2011-2014, Intel Corporation * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation and/or * other materials provided with the distribution. * * 3. Neither the name of the copyright holder nor the names of its contributors * may be used to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #pragma once #include "ParameterMgrPlatformConnector.h" #include "RemoteCommandHandlerTemplate.h" #include "RemoteProcessorServer.h" #include #include #include class CParameterMgrPlatformConnectorLogger; class ISelectionCriterionInterface; class CTestPlatform { typedef TRemoteCommandHandlerTemplate CCommandHandler; typedef CCommandHandler::CommandStatus CommandReturn; public: CTestPlatform(const std::string &strclass, std::string bindAddress); virtual ~CTestPlatform(); // Init bool run(std::string &strError); private: //////////////// Remote command parsers /// Selection Criterion CommandReturn createExclusiveSelectionCriterionFromStateList( const IRemoteCommand &remoteCommand, std::string &strResult); CommandReturn createInclusiveSelectionCriterionFromStateList( const IRemoteCommand &remoteCommand, std::string &strResult); CommandReturn createExclusiveSelectionCriterion(const IRemoteCommand &remoteCommand, std::string &strResult); CommandReturn createInclusiveSelectionCriterion(const IRemoteCommand &remoteCommand, std::string &strResult); CommandReturn getSchemaUri(const IRemoteCommand &remotecommand, std::string &result); CommandReturn setSchemaUri(const IRemoteCommand &remotecommand, std::string &result); /** Callback to set a criterion's value, see ISelectionCriterionInterface::setCriterionState. * @see CCommandHandler::RemoteCommandParser for detail on each arguments and return * * @param[in] remoteCommand the first argument should be the name of the criterion to set. * if the criterion is provided in lexical space, * the following arguments should be criterion new values * if the criterion is provided in numerical space, * the second argument should be the criterion new value */ CommandReturn setCriterionState(const IRemoteCommand &remoteCommand, std::string &strResult); /** Callback to start the PFW, see CParameterMgrPlatformConnector::start. * @see CCommandHandler::RemoteCommandParser for detail on each arguments and return * * @param[in] remoteCommand is ignored */ CommandReturn startParameterMgr(const IRemoteCommand &remoteCommand, std::string &strResult); /** Callback to apply PFW configuration, see CParameterMgrPlatformConnector::applyConfiguration. * @see CCommandHandler::RemoteCommandParser for detail on each arguments and return * * @param[in] remoteCommand is ignored * * @return EDone (never fails) */ CommandReturn applyConfigurations(const IRemoteCommand &remoteCommand, std::string &strResult); /** Callback to exit the test-platform. * * @param[in] remoteCommand is ignored * * @return EDone (never fails) */ CommandReturn exit(const IRemoteCommand &remoteCommand, std::string &strResult); /** The type of a CParameterMgrPlatformConnector boolean setter. */ typedef bool (CParameterMgrPlatformConnector::*setter_t)(bool, std::string &); /** Template callback to create a _pParameterMgrPlatformConnector boolean setter callback. * @see CCommandHandler::RemoteCommandParser for detail on each arguments and return * * Convert the remoteCommand first argument to a boolean and call the * template parameter function with this value. * * @tparam the boolean setter method. * @param[in] remoteCommand the first argument should be ether "on" or "off". */ template CommandReturn setter(const IRemoteCommand &remoteCommand, std::string &strResult); /** The type of a CParameterMgrPlatformConnector boolean getter. */ typedef bool (CParameterMgrPlatformConnector::*getter_t)() const; /** Template callback to create a ParameterMgrPlatformConnector boolean getter callback. * @see CCommandHandler::RemoteCommandParser for detail on each arguments and return * * Convert to boolean returned by the template parameter function converted to a * std::string ("True", "False") and return it. * * @param the boolean getter method. * @param[in] remoteCommand is ignored * * @return EDone (never fails) */ template CommandReturn getter(const IRemoteCommand &remoteCommand, std::string &strResult); // Commands bool createExclusiveSelectionCriterionFromStateList(const std::string &strName, const IRemoteCommand &remoteCommand, std::string &strResult); bool createInclusiveSelectionCriterionFromStateList(const std::string &strName, const IRemoteCommand &remoteCommand, std::string &strResult); bool createExclusiveSelectionCriterion(const std::string &strName, size_t nbValues, std::string &strResult); bool createInclusiveSelectionCriterion(const std::string &strName, size_t nbValues, std::string &strResult); bool setCriterionState(const std::string &strName, uint32_t uiState, std::string &strResult); bool setCriterionStateByLexicalSpace(const IRemoteCommand &remoteCommand, std::string &strResult); // Connector CParameterMgrPlatformConnector mParameterMgrPlatformConnector; class : public CParameterMgrPlatformConnector::ILogger { public: virtual void info(const std::string &log) { std::cout << log << std::endl; } virtual void warning(const std::string &log) { std::cerr << log << std::endl; } } mLogger; // Remote Processor Server CRemoteProcessorServer mRemoteProcessorServer; };