blob: a27558284dd1d5922b90416dbdc1a5e5aed8d816 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2017 - 2018 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:
* Johannes Messmer - initial API and implementation and/or initial documentation
* Jose Cabral - Cleaning of namespaces
*******************************************************************************/
#ifndef SRC_CORE_IO_CONFIGFB_ADAPTER_MULTI_H_
#define SRC_CORE_IO_CONFIGFB_ADAPTER_MULTI_H_
#include <adapter.h>
namespace forte {
namespace core {
namespace io {
#define ADAPTER_CTOR_FOR_IO_MULTI(fbclass) \
fbclass(CStringDictionary::TStringId paAdapterInstanceName, CResource *paSrcRes, bool paIsPlug) : \
IOConfigFBMultiAdapter( (const TForteUInt8* const) &scmSlaveConfigurationIO, scmSlaveConfigurationIONum, paSrcRes, &scm_stFBInterfaceSpecSocket, paAdapterInstanceName, &scm_stFBInterfaceSpecPlug, paIsPlug, m_anFBConnData, m_anFBVarsData)
class IOConfigFBMultiAdapter : public CAdapter {
public:
IOConfigFBMultiAdapter(const TForteUInt8* const paSlaveConfigurationIO, const TForteUInt8 paSlaveConfigurationIONum, CResource *paSrcRes,
const SFBInterfaceSpec *patInterfaceSpecSocket, const CStringDictionary::TStringId paInstanceNameId, const SFBInterfaceSpec *paInterfaceSpecPlug,
bool paIsPlug, TForteByte *paFBConnData, TForteByte *paFBVarsData);
virtual ~IOConfigFBMultiAdapter();
CIEC_BOOL &QO() {
return *static_cast<CIEC_BOOL*>((isSocket()) ? getDI(0) : getDO(0));
}
CIEC_BOOL &QI() {
return *static_cast<CIEC_BOOL*>((isSocket()) ? getDO(0) : getDI(0));
}
CIEC_UINT &MasterId() {
return *static_cast<CIEC_UINT*>((isSocket()) ? getDO(1) : getDI(1));
}
CIEC_UINT &Index() {
return *static_cast<CIEC_UINT*>((isSocket()) ? getDO(2) : getDI(2));
}
static const TEventID scmEventINITID = 0;
int INIT() {
return m_nParentAdapterListEventID + scmEventINITID;
}
static const TEventID scmEventINITOID = 0;
int INITO() {
return m_nParentAdapterListEventID + scmEventINITOID;
}
const TForteUInt8* cmSlaveConfigurationIO;
TForteUInt8 mSlaveConfigurationIONum;
TIEC_ANYPtr getSlaveConfig(int paIndex) {
return (isSocket()) ? getDO(cmSlaveConfigurationIO[paIndex]) : getDI(cmSlaveConfigurationIO[paIndex]);
}
};
} //namespace IO
} //namepsace core
} //namespace forte
#endif /* SRC_CORE_IO_CONFIGFB_ADAPTER_MULTI_H_ */