| /******************************************************************************* |
| * Copyright (c) 2018 Johannes Kepler University |
| * |
| * 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: |
| * Alois Zoitl - initial implementation and rework communication infrastructure |
| *******************************************************************************/ |
| #ifndef _GENFB_H_ |
| #define _GENFB_H_ |
| |
| #include "funcbloc.h" |
| |
| template <class T> |
| class CGenFunctionBlock : public T { |
| public: |
| |
| /*!\brief The getFBType method is used by the Query command to get the instances correct type name (eg. "CLIENT_3_2") |
| * \return pointer to typename string |
| */ |
| CStringDictionary::TStringId getFBTypeId() const { |
| return mConfiguredFBTypeNameId; |
| } |
| |
| bool configureFB(const char *paConfigString); |
| |
| protected: |
| CGenFunctionBlock(CResource *paSrcRes, const CStringDictionary::TStringId paInstanceNameId); |
| virtual ~CGenFunctionBlock(); |
| |
| |
| static void generateGenericInterfacePointNameArray(const char * const paPrefix, |
| CStringDictionary::TStringId* paNamesArayStart, |
| size_t paNumGenericDataPoints); |
| static void generateGenericDataPointArrays(const char * const paPrefix, |
| CStringDictionary::TStringId* paDataTypeNamesArrayStart, |
| CStringDictionary::TStringId* paNamesArrayStart, size_t paNumGenericDataPoints); |
| |
| private: |
| /*! \brief parse the config string and generate the according interface specification |
| * |
| * This function is to be implemented by a generic fb and should parse the given interface |
| * string and generate an according interface specification. The resulting interface specification |
| * has to be set in the paInterfaceSpec parameter. |
| * |
| * @paConfigString the string sent from the id for configuring this fb (e.g., PUBLISH_2) |
| * @paInterfaceSpec the interface data structure where the resulting interface config must be stored |
| * @retval true if the string could be parsed, false if the string is invalid and no interface spec could be derived from it |
| */ |
| virtual bool createInterfaceSpec(const char *paConfigString, SFBInterfaceSpec &paInterfaceSpec) = 0; |
| |
| void setConfiguredTypeNameId( CStringDictionary::TStringId paTypeNameId){ |
| mConfiguredFBTypeNameId = paTypeNameId; |
| } |
| |
| CStringDictionary::TStringId mConfiguredFBTypeNameId; |
| SFBInterfaceSpec mGenInterfaceSpec; //!< the interface spec for this specific instance of generic FB |
| TForteByte *mFBConnData; |
| TForteByte *mFBVarsData; |
| }; |
| |
| #include "genfb.tpp" |
| |
| #endif /* _GENFB_H_ */ |