blob: 7bd260c0571edcae3ff45ba46f8678bff9868327 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2016 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:
* Alois Zoitl - initial API and implementation and/or initial documentation
*******************************************************************************/
#include "processinterface.h"
COdroidProcessInterface::COdroidProcessInterface(CResource *paSrcRes,
const SFBInterfaceSpec *paInterfaceSpec, const CStringDictionary::TStringId paInstanceNameId,
TForteByte *paFBConnData, TForteByte *paFBVarsData) :
CSysFsProcessInterface(paSrcRes, paInterfaceSpec, paInstanceNameId, paFBConnData, paFBVarsData){
}
COdroidProcessInterface::~COdroidProcessInterface(){
}
bool COdroidProcessInterface::initialise(bool paIsInput){
bool retVal = true;
if((paIsInput) && (getDO(2)->getDataTypeID() == CIEC_ANY::e_WORD)){
std::string fileName("/sys/class/saradc/ch");
fileName += PARAMS().getValue();
mFile.open(fileName.c_str(), std::fstream::in);
if(mFile.is_open()){
STATUS() = scmOK;
}
else{
STATUS() = scmNotInitialised;
DEVLOG_ERROR("Opening file %s failed.\n", fileName.c_str());
retVal = false;
}
}
else{
retVal = CSysFsProcessInterface::initialise(paIsInput);
}
return retVal;
}
bool COdroidProcessInterface::deinitialise(){
bool retVal = true;
STATUS() = scmOK;
if(getDO(2)->getDataTypeID() == CIEC_ANY::e_WORD){
mFile.close();
}
else{
retVal = CSysFsProcessInterface::deinitialise();
}
return retVal;
}
bool COdroidProcessInterface::readWord(){
bool retVal = false;
if(mFile.is_open()){
std::string binData;
mFile.clear();
mFile.seekg(0, std::ios::beg);
std::getline(mFile, binData);
if(mFile.fail()){
STATUS() = scmCouldNotRead;
}
else{
if(-1 != IN_W().fromString(binData.c_str())){
STATUS() = scmOK;
retVal = true;
} else {
STATUS() = scmError;
}
}
}
else{
STATUS() = scmNotInitialised;
}
return retVal;
}