blob: 6e14c5337f9742b461ea5aef8f78c36c1ebdbd4e [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2015 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:
* Martin Jobst
* - initial API and implementation and/or initial documentation
*******************************************************************************/
#ifndef SRC_CORE_LUABFB_H_
#define SRC_CORE_LUABFB_H_
#include "basicfb.h"
#include "luabfbtypeentry.h"
class CIEC_ANY;
extern "C" {
#include <lua.h>
#include <lauxlib.h>
int CLuaFB_index(lua_State *luaState);
int CLuaFB_newindex(lua_State *luaState);
int CLuaFB_call(lua_State *luaState);
}
class CLuaBFB : public CBasicFB {
private:
static const TForteUInt32 LUA_FB_VAR_MAX = 65535;
static const TForteUInt32 LUA_AD_VAR_MAX = 255;
static const TForteUInt32 LUA_FB_STATE = 0;
static const TForteUInt32 LUA_FB_DI_FLAG = 1 << 25;
static const TForteUInt32 LUA_FB_DO_FLAG = 1 << 26;
static const TForteUInt32 LUA_FB_AD_FLAG = 1 << 27;
static const TForteUInt32 LUA_FB_IN_FLAG = 1 << 28;
const CLuaBFBTypeEntry* mTypeEntry;
CIEC_ANY* getVariable(TForteUInt32 paId);
int recalculateID(int pa_nEIID) {
return CLuaBFB::LUA_FB_AD_FLAG | ((((pa_nEIID >> 8) - 1) << 16) & 0xFF0000) | (pa_nEIID & 0x00FF);
}
public:
static const char LUA_NAME[];
static const luaL_Reg LUA_FUNCS[];
CLuaBFB(CStringDictionary::TStringId paInstanceNameId, const CLuaBFBTypeEntry* paTypeEntry, TForteByte *paConnData, TForteByte *paVarsData,
CResource *paResource);
virtual ~CLuaBFB();
virtual void executeEvent(int paEIID);
virtual CStringDictionary::TStringId getFBTypeId(void) const {
return mTypeEntry->getTypeNameId();
}
friend int CLuaFB_index(lua_State *paLuaState);
friend int CLuaFB_newindex(lua_State *paLuaState);
friend int CLuaFB_call(lua_State *paLuaState);
};
#endif /* SRC_CORE_LUABFB_H_ */