Skip to content

Commit

Permalink
Add assembling directory and ASSEMBLE_XYZ_FROM_QUARTERS_fct functions
Browse files Browse the repository at this point in the history
add ASSEMBLE_BYTE_FROM_QUARTERS_fct

add ASSEMBLE_DWORD_FROM_QUARTERS_fct

add ASSEMBLE_LWORD_FROM_QUARTERS_fct

add ASSEMBLE_WORD_FROM_QUARTERS_fct

newer version

change amount of stars in header

change stars back

change Version info
  • Loading branch information
MoritzO02 authored and azoitl committed Sep 28, 2024
1 parent dc876db commit 90cf1d6
Show file tree
Hide file tree
Showing 8 changed files with 1,466 additions and 0 deletions.
165 changes: 165 additions & 0 deletions src/modules/utils/assembling/ASSEMBLE_BYTE_FROM_QUARTERS_fct.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,165 @@
/*******************************************************************************
*** Copyright (c) 2024 HR Agrartechnik 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
***
*** FORTE Library Element
***
*** This file was generated using the 4DIAC FORTE Export Filter V1.0.x NG!
***
*** Name: ASSEMBLE_BYTE_FROM_QUARTERS
*** Description: this Function combines the 4 QUARTER BYTES to a BYTE
*** Version:
*** 1.0: 2024-02-22/Franz Höpfinger - HR Agrartechnik - initial Implementation
*** 1.1: 2024-07-28/Moritz Ortmeier - HR Agrartechnik - rename Function and change Input/Output Variables
*******************************************************************************/

#include "ASSEMBLE_BYTE_FROM_QUARTERS_fct.h"
#ifdef FORTE_ENABLE_GENERATED_SOURCE_CPP
#include "ASSEMBLE_BYTE_FROM_QUARTERS_fct_gen.cpp"
#endif

#include "criticalregion.h"
#include "resource.h"
#include "forte_any_int_variant.h"
#include "forte_byte.h"
#include "forte_any_bit_variant.h"
#include "iec61131_functions.h"
#include "forte_array_common.h"
#include "forte_array.h"
#include "forte_array_fixed.h"
#include "forte_array_variable.h"
#include "quarterconst_gcf.h"
#include "ASSEMBLE_BYTE_FROM_QUARTERS_fct.h"

DEFINE_FIRMWARE_FB(FORTE_ASSEMBLE_BYTE_FROM_QUARTERS, g_nStringIdASSEMBLE_BYTE_FROM_QUARTERS)

const CStringDictionary::TStringId FORTE_ASSEMBLE_BYTE_FROM_QUARTERS::scmDataInputNames[] = {g_nStringIdQUARTER_BYTE_00, g_nStringIdQUARTER_BYTE_01, g_nStringIdQUARTER_BYTE_02, g_nStringIdQUARTER_BYTE_03};
const CStringDictionary::TStringId FORTE_ASSEMBLE_BYTE_FROM_QUARTERS::scmDataInputTypeIds[] = {g_nStringIdBYTE, g_nStringIdBYTE, g_nStringIdBYTE, g_nStringIdBYTE};
const CStringDictionary::TStringId FORTE_ASSEMBLE_BYTE_FROM_QUARTERS::scmDataOutputNames[] = {g_nStringId};
const CStringDictionary::TStringId FORTE_ASSEMBLE_BYTE_FROM_QUARTERS::scmDataOutputTypeIds[] = {g_nStringIdBYTE};
const TDataIOID FORTE_ASSEMBLE_BYTE_FROM_QUARTERS::scmEIWith[] = {0, 1, 2, 3, scmWithListDelimiter};
const TForteInt16 FORTE_ASSEMBLE_BYTE_FROM_QUARTERS::scmEIWithIndexes[] = {0};
const CStringDictionary::TStringId FORTE_ASSEMBLE_BYTE_FROM_QUARTERS::scmEventInputNames[] = {g_nStringIdREQ};
const TDataIOID FORTE_ASSEMBLE_BYTE_FROM_QUARTERS::scmEOWith[] = {0, scmWithListDelimiter};
const TForteInt16 FORTE_ASSEMBLE_BYTE_FROM_QUARTERS::scmEOWithIndexes[] = {0};
const CStringDictionary::TStringId FORTE_ASSEMBLE_BYTE_FROM_QUARTERS::scmEventOutputNames[] = {g_nStringIdCNF};
const SFBInterfaceSpec FORTE_ASSEMBLE_BYTE_FROM_QUARTERS::scmFBInterfaceSpec = {
1, scmEventInputNames, scmEIWith, scmEIWithIndexes,
1, scmEventOutputNames, scmEOWith, scmEOWithIndexes,
4, scmDataInputNames, scmDataInputTypeIds,
1, scmDataOutputNames, scmDataOutputTypeIds,
0, nullptr,
0, nullptr
};

FORTE_ASSEMBLE_BYTE_FROM_QUARTERS::FORTE_ASSEMBLE_BYTE_FROM_QUARTERS(const CStringDictionary::TStringId paInstanceNameId, forte::core::CFBContainer &paContainer) :
CFunctionBlock(paContainer, scmFBInterfaceSpec, paInstanceNameId),
var_conn_(var_),
conn_CNF(this, 0),
conn_QUARTER_BYTE_00(nullptr),
conn_QUARTER_BYTE_01(nullptr),
conn_QUARTER_BYTE_02(nullptr),
conn_QUARTER_BYTE_03(nullptr),
conn_(this, 0, &var_conn_) {
}

void FORTE_ASSEMBLE_BYTE_FROM_QUARTERS::setInitialValues() {
var_QUARTER_BYTE_00 = 0_BYTE;
var_QUARTER_BYTE_01 = 0_BYTE;
var_QUARTER_BYTE_02 = 0_BYTE;
var_QUARTER_BYTE_03 = 0_BYTE;
var_ = 0_BYTE;
}

void FORTE_ASSEMBLE_BYTE_FROM_QUARTERS::readInputData(const TEventID paEIID) {
switch(paEIID) {
case scmEventREQID: {
readData(0, var_QUARTER_BYTE_00, conn_QUARTER_BYTE_00);
readData(1, var_QUARTER_BYTE_01, conn_QUARTER_BYTE_01);
readData(2, var_QUARTER_BYTE_02, conn_QUARTER_BYTE_02);
readData(3, var_QUARTER_BYTE_03, conn_QUARTER_BYTE_03);
break;
}
default:
break;
}
}

void FORTE_ASSEMBLE_BYTE_FROM_QUARTERS::writeOutputData(const TEventID paEIID) {
switch(paEIID) {
case scmEventCNFID: {
writeData(0, var_, conn_);
break;
}
default:
break;
}
}

CIEC_ANY *FORTE_ASSEMBLE_BYTE_FROM_QUARTERS::getDI(const size_t paIndex) {
switch(paIndex) {
case 0: return &var_QUARTER_BYTE_00;
case 1: return &var_QUARTER_BYTE_01;
case 2: return &var_QUARTER_BYTE_02;
case 3: return &var_QUARTER_BYTE_03;
}
return nullptr;
}

CIEC_ANY *FORTE_ASSEMBLE_BYTE_FROM_QUARTERS::getDO(const size_t paIndex) {
switch(paIndex) {
case 0: return &var_;
}
return nullptr;
}

CEventConnection *FORTE_ASSEMBLE_BYTE_FROM_QUARTERS::getEOConUnchecked(const TPortId paIndex) {
switch(paIndex) {
case 0: return &conn_CNF;
}
return nullptr;
}

CDataConnection **FORTE_ASSEMBLE_BYTE_FROM_QUARTERS::getDIConUnchecked(const TPortId paIndex) {
switch(paIndex) {
case 0: return &conn_QUARTER_BYTE_00;
case 1: return &conn_QUARTER_BYTE_01;
case 2: return &conn_QUARTER_BYTE_02;
case 3: return &conn_QUARTER_BYTE_03;
}
return nullptr;
}

CDataConnection *FORTE_ASSEMBLE_BYTE_FROM_QUARTERS::getDOConUnchecked(const TPortId paIndex) {
switch(paIndex) {
case 0: return &conn_;
}
return nullptr;
}

void FORTE_ASSEMBLE_BYTE_FROM_QUARTERS::executeEvent(const TEventID, CEventChainExecutionThread *const paECET) {
var_ = func_ASSEMBLE_BYTE_FROM_QUARTERS(var_QUARTER_BYTE_00, var_QUARTER_BYTE_01, var_QUARTER_BYTE_02, var_QUARTER_BYTE_03);
sendOutputEvent(scmEventCNFID, paECET);
}

CIEC_BYTE func_ASSEMBLE_BYTE_FROM_QUARTERS(CIEC_BYTE st_lv_QUARTER_BYTE_00, CIEC_BYTE st_lv_QUARTER_BYTE_01, CIEC_BYTE st_lv_QUARTER_BYTE_02, CIEC_BYTE st_lv_QUARTER_BYTE_03) {
CIEC_BYTE st_ret_val = 0_BYTE;

#line 11 "ASSEMBLE_BYTE_FROM_QUARTERS.fct"
st_ret_val = st_global_BYTE_QUARTER_ZZ;
#line 12 "ASSEMBLE_BYTE_FROM_QUARTERS.fct"
st_ret_val = func_OR<CIEC_BYTE>(st_ret_val, func_SHL(st_lv_QUARTER_BYTE_03, st_global_SHIFT_QUARTER_03));
#line 13 "ASSEMBLE_BYTE_FROM_QUARTERS.fct"
st_ret_val = func_OR<CIEC_BYTE>(st_ret_val, func_SHL(st_lv_QUARTER_BYTE_02, st_global_SHIFT_QUARTER_02));
#line 14 "ASSEMBLE_BYTE_FROM_QUARTERS.fct"
st_ret_val = func_OR<CIEC_BYTE>(st_ret_val, func_SHL(st_lv_QUARTER_BYTE_01, st_global_SHIFT_QUARTER_01));
#line 15 "ASSEMBLE_BYTE_FROM_QUARTERS.fct"
st_ret_val = func_OR<CIEC_BYTE>(st_ret_val, func_SHL(st_lv_QUARTER_BYTE_00, st_global_SHIFT_QUARTER_00));

return st_ret_val;
}

98 changes: 98 additions & 0 deletions src/modules/utils/assembling/ASSEMBLE_BYTE_FROM_QUARTERS_fct.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
/*******************************************************************************
*** Copyright (c) 2024 HR Agrartechnik 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
***
*** FORTE Library Element
***
*** This file was generated using the 4DIAC FORTE Export Filter V1.0.x NG!
***
*** Name: ASSEMBLE_BYTE_FROM_QUARTERS
*** Description: this Function combines the 4 QUARTER BYTES to a BYTE
*** Version:
*** 1.0: 2024-02-22/Franz Höpfinger - HR Agrartechnik - initial Implementation
*** 1.1: 2024-07-28/Moritz Ortmeier - HR Agrartechnik - rename Function and change Input/Output Variables
*******************************************************************************/

#pragma once

#include "funcbloc.h"
#include "forte_byte.h"
#include "iec61131_functions.h"
#include "forte_array_common.h"
#include "forte_array.h"
#include "forte_array_fixed.h"
#include "forte_array_variable.h"

class FORTE_ASSEMBLE_BYTE_FROM_QUARTERS final : public CFunctionBlock {
DECLARE_FIRMWARE_FB(FORTE_ASSEMBLE_BYTE_FROM_QUARTERS)

private:
static const CStringDictionary::TStringId scmDataInputNames[];
static const CStringDictionary::TStringId scmDataInputTypeIds[];
static const CStringDictionary::TStringId scmDataOutputNames[];
static const CStringDictionary::TStringId scmDataOutputTypeIds[];
static const TEventID scmEventREQID = 0;
static const TDataIOID scmEIWith[];
static const TForteInt16 scmEIWithIndexes[];
static const CStringDictionary::TStringId scmEventInputNames[];
static const TEventID scmEventCNFID = 0;
static const TDataIOID scmEOWith[];
static const TForteInt16 scmEOWithIndexes[];
static const CStringDictionary::TStringId scmEventOutputNames[];

static const SFBInterfaceSpec scmFBInterfaceSpec;

void executeEvent(TEventID paEIID, CEventChainExecutionThread *const paECET) override;

void readInputData(TEventID paEIID) override;
void writeOutputData(TEventID paEIID) override;
void setInitialValues() override;

public:
FORTE_ASSEMBLE_BYTE_FROM_QUARTERS(CStringDictionary::TStringId paInstanceNameId, forte::core::CFBContainer &paContainer);

CIEC_BYTE var_QUARTER_BYTE_00;
CIEC_BYTE var_QUARTER_BYTE_01;
CIEC_BYTE var_QUARTER_BYTE_02;
CIEC_BYTE var_QUARTER_BYTE_03;

CIEC_BYTE var_;

CIEC_BYTE var_conn_;

CEventConnection conn_CNF;

CDataConnection *conn_QUARTER_BYTE_00;
CDataConnection *conn_QUARTER_BYTE_01;
CDataConnection *conn_QUARTER_BYTE_02;
CDataConnection *conn_QUARTER_BYTE_03;

CDataConnection conn_;

CIEC_ANY *getDI(size_t) override;
CIEC_ANY *getDO(size_t) override;
CEventConnection *getEOConUnchecked(TPortId) override;
CDataConnection **getDIConUnchecked(TPortId) override;
CDataConnection *getDOConUnchecked(TPortId) override;

void evt_REQ(const CIEC_BYTE &paQUARTER_BYTE_00, const CIEC_BYTE &paQUARTER_BYTE_01, const CIEC_BYTE &paQUARTER_BYTE_02, const CIEC_BYTE &paQUARTER_BYTE_03, CIEC_BYTE &pa) {
var_QUARTER_BYTE_00 = paQUARTER_BYTE_00;
var_QUARTER_BYTE_01 = paQUARTER_BYTE_01;
var_QUARTER_BYTE_02 = paQUARTER_BYTE_02;
var_QUARTER_BYTE_03 = paQUARTER_BYTE_03;
executeEvent(scmEventREQID, nullptr);
pa = var_;
}

void operator()(const CIEC_BYTE &paQUARTER_BYTE_00, const CIEC_BYTE &paQUARTER_BYTE_01, const CIEC_BYTE &paQUARTER_BYTE_02, const CIEC_BYTE &paQUARTER_BYTE_03, CIEC_BYTE &pa) {
evt_REQ(paQUARTER_BYTE_00, paQUARTER_BYTE_01, paQUARTER_BYTE_02, paQUARTER_BYTE_03, pa);
}
};

CIEC_BYTE func_ASSEMBLE_BYTE_FROM_QUARTERS(CIEC_BYTE st_lv_QUARTER_BYTE_00, CIEC_BYTE st_lv_QUARTER_BYTE_01, CIEC_BYTE st_lv_QUARTER_BYTE_02, CIEC_BYTE st_lv_QUARTER_BYTE_03);


Loading

0 comments on commit 90cf1d6

Please sign in to comment.