blob: 57a3af9289fbfe4bb4fcc9458ed153fa0623919a [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2012 - 2015 ACIN, fortiss GmbH
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Ingo Hegny, Alois Zoitl
* - initial implementation and rework communication infrastructure
*******************************************************************************/
#ifndef MGMCMDSTRUCT_H_
#define MGMCMDSTRUCT_H_
#include <mgmcmd.h>
#include <forte_string.h>
#include <fixedcapvector.h>
namespace forte {
namespace core {
/** \ingroup CORE \defgroup MGMCommands Management Command Exchange Representation
* \brief In this section the FORTE-internal data-exchange-structure for management command passing is described.
*/
/*@{*/
typedef util::CFixedCapazityVector<CStringDictionary::TStringId,
FORTE_MGM_MAX_SUPPORTED_NAME_HIERARCHY> TNameIdentifier;
/*!\brief All the data necessary for processing a management command.
*
* The data of this structure is the internal FORTE representation of an IEC 61499 management command.
* e.g. create \<FB name="START" type="E_RESTART"\> will result in the following data values:
* - m_nCMD = 0x30
* - m_sDestination = ""
* - m_sFistParam = "START"
* - m_sSecondParam = "E_RESTART"
* - m_sAdditionalParams = ""
*/
struct SManagementCMD{
/*!\brief An identification number for the requested command based on the definitons in the standard.
*
* See the constants in devadmin.h for the available commands
*/
EMGMCommandType mCMD;
/*!\brief The destination of the command.
*
* if the destination is scm_nInvalidStringID device is the target.
* Otherwise a the TStringId of the resource's name the command
* should be exectued in is the target.
* FIXME if more than the resource should be supported (e.g. composite FBs) the type needs to be changed .
*/
CStringDictionary::TStringId mDestination;
/*!\brief The first parameter of the command e.g. the FB name to create or the src of an connection.
*
* The data is stored as an array TStringIds for the hierarchical FB name identifier (e.g., SubApp1.FB, CFB.FB, FB.Port)
* Each level is stored as one entry in the vector. Top hierarchy is the first entry.
*/
TNameIdentifier mFirstParam;
/*!\brief The second parameter of the command e.g. the FB name to create or the src of an connection.
*
* The data is stored as an array TStringIds for the hierarchical FB name identifier (e.g., SubApp1.FB, CFB.FB, FB.Port)
* Each level is stored as one entry in the vector. Top hierarchy is the first entry.
*/
TNameIdentifier mSecondParam;
/*!\brief Additional params needed by a MGM command (e.g., to return results of query commands)
*/
CIEC_STRING mAdditionalParams;
/*\brief pointer to the ID to generate the correct response */
char *mID;
#ifdef FORTE_SUPPORT_MONITORING
/*\brief pointer to the response to generate the correct response */
CIEC_STRING mMonitorResponse;
#endif
};
} // namespace core
} // namespace forte
#endif /* MGMCMDSTRUCT_H_ */