blob: 0c5ae51b0d8d84c9cfad7d65d4835cb7cbe16fdb [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2012 AIT, ACIN
* 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:
* Filip Andren, Alois Zoitl - initial API and implementation and/or initial documentation
*******************************************************************************/
#ifndef OPCPROCESSVAR_H_
#define OPCPROCESSVAR_H_
#include "windows.h"
#include "Variant.h"
#include "fortelist.h"
#include <forte_sync.h>
class COPCItem;
class COpcProcessVar{
public:
enum EOpcProcessVarFunctions{
e_FBInput, e_FBOutput
};
COpcProcessVar(const char* pa_acItemGroupName, const char* pa_acItemName, EOpcProcessVarFunctions pa_eFunction);
~COpcProcessVar(){
}
const char* getItemName() const {
return m_acItemName;
}
const char* getItemGroupName() const {
return m_acItemGroupName;
}
EOpcProcessVarFunctions getItemFunction() const {
return m_eFunction;
}
void setOpcItem(COPCItem* pa_pOpcItem){
m_pOpcItem = pa_pOpcItem;
}
void sendItemData();
void setNewValue(Variant pa_oNewValue);
Variant peekNewValue();
Variant updateValue();
bool getIsActive() const {
return m_bActive;
}
void setIsActive(bool pa_bActive){
m_bActive = pa_bActive;
}
private:
COPCItem* m_pOpcItem;
const char* m_acItemGroupName;
const char* m_acItemName;
bool m_bActive;
Variant m_oCurrentValue;
typedef CSinglyLinkedList<Variant> TVariantList;
TVariantList m_lNewValueQueue;
Variant m_oNewValue;
CSyncObject m_oSync;
EOpcProcessVarFunctions m_eFunction;
};
#endif // OPCPROCESSVAR_H_