| /* |
| * 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 <string> |
| #include <iostream> |
| #include <list> |
| |
| class CParameterMgrPlatformConnectorLogger; |
| class ISelectionCriterionInterface; |
| |
| class CTestPlatform |
| { |
| typedef TRemoteCommandHandlerTemplate<CTestPlatform> CCommandHandler; |
| typedef CCommandHandler::CommandStatus CommandReturn; |
| |
| public: |
| CTestPlatform(const std::string &strclass, uint16_t iPortNumber); |
| 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 <setter_t setFunction> |
| 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 <getter_t getFunction> |
| 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; |
| }; |