EP CalcOff no Msg

Signed-off-by: Bernardo Carvalho <bernardo.carvalho@tecnico.ulisboa.pt>
This commit is contained in:
2024-12-05 12:56:51 +00:00
parent 33a9ec9bef
commit 86ac19ff83
6 changed files with 329 additions and 136 deletions

View File

@@ -80,8 +80,8 @@ def get_arguments():
action='store_true', help='Import Mirnov')
parser.add_argument('-l', '--langmuir',
action='store_true', help='Import Langmuir')
parser.add_argument('-t', '--ploT',
action='store_true', help='Plot Signals')
parser.add_argument('-t', '--trigger', type=int,
help='Trigger sample', default='0')
parser.add_argument('-n', '--names',
action='store_true', help='Print Node Table')
parser.add_argument('-z', '--zeros', type=int,
@@ -101,8 +101,13 @@ if (__name__ == "__main__"):
data, tzero_us, period = LoadSdasData(client, nd['sdas'], pulseNo)
langmuirData.append(data)
time = np.arange(len(data), dtype='uint32') * int(period)
trigger = np.zeros(len(data), dtype='uint32')
if args.trigger > 0:
trigger[args.trigger:] = 1
langmuirNp = np.array(langmuirData).T
data2file = np.insert(langmuirNp, 0, time, axis=1)
data2file = np.insert(langmuirNp, 0, trigger, axis=1)
data2file = np.insert(data2file, 0, time, axis=1)
if args.zeros > 0:
nCol = data2file.shape[1]
zerRows = np.zeros([args.zeros, nCol])
@@ -112,8 +117,8 @@ if (__name__ == "__main__"):
# head = ('#Time (uint32)[1],Langmuir0 (float32)[1],Langmuir1 (float32)[1],'
# 'Langmuir2 (float32)[1],Langmuir3 (float32)[1]')
# formt = '%d,%.6f,%.6f,%.6f,%.6f'
formt = '%d,{%.6f,%.6f,%.6f,%.6f}'
head = '#TimeSdas (uint32)[1],LangmuirSignals (float32)[4]'
formt = '%d,%d,{%.6f,%.6f,%.6f,%.6f}'
head = '#TimeSdas (uint32)[1],Trigger (uint32)[1],LangmuirSignals (float32)[4]'
np.savetxt(filename, data2file, fmt=formt,
header=head, comments='')
# , delimiter=',')

113
Analysis/pyqtPlotFile.py Executable file
View File

@@ -0,0 +1,113 @@
#!/usr/bin/env python3
"""
This script plots the MARTe2 ATCAIop samples stored in MDSplus
All of the plots may be panned/scaled by dragging with
the left/right mouse buttons. Right click on any plot to show a context menu.
To change EPICS EO, WO use. e.g.
caput -a ISTTOK:central:ATCAIOP1-WO 14 0.191 0.174 -0.036 -0.044 0.183 0.126 0.020 0.140 -0.461 -0.572 0.022 -0.262 0.475 0.353
"""
import numpy as np
import pyqtgraph as pg
# from pyqtgraph.Qt import QtCore
import argparse
app = pg.mkQApp("Plotting MARTe2 AtcaIop Data")
# mw = QtWidgets.QMainWindow()
# mw.resize(800,800)
# MAX_SAMPLES = 50000
ADC_CHANNELS = 14 # channels stored in ISTTOK
ADC_DECIM_RATE = 200
parser = argparse.ArgumentParser(description=
"""Script to plot AtcaIop MDSplus data and calc drifts
To change EPICS EO, WO use. e.g.
caput -a ISTTOK:central:ATCAIOP1-WO 14 0.191 0.174 -0.036 -0.044 0.183 0.126 0.020 0.140 -0.461 -0.572 0.022 -0.262 0.475 0.353""")
# parser.add_argument('-l','--list', nargs='+',
# help='<Required> Set flag', required=True)
# parser.add_argument('-l','--list', nargs='+')
parser.add_argument('-c', '--crange', nargs='+', type=int,
help='Channel plots (1 12)', default=[1, 12])
parser.add_argument('-i', '--irange', nargs='+', type=int, default=[1, 12])
# arser.add_argument('pulse','-', nargs='+', help='<Required> Set flag', required=True)
parser.add_argument('-s', '--shot', type=int,
help='Mds+ pulse Number ([1, ...])', default=100)
parser.add_argument('-m', '--maxpoints', type=int,
help='Max points to plot', default=1000)
parser.add_argument('-e', '--averages', action='store_true',
help='Calc averages')
parser.add_argument('-d', '--decimated', action='store_true',
help='Use decimated data')
# parser.add_argument('-w', '--drift', action='store_true', help='Calc drifts')
parser.add_argument('-z', '--zero', action='store_true',
help='Zero integral Lines')
parser.add_argument('-f', '--file', type=str,
help='filename device to open', default='LangmuirSdas')
args = parser.parse_args()
win = pg.GraphicsLayoutWidget(show=True, title="Basic plotting examples")
win.resize(1000, 600)
win.setWindowTitle('ISTTOK Plotting')
# Enable antialiasing for prettier plots
pg.setConfigOptions(antialias=True)
p1 = win.addPlot(title="SDAS Languir Probe data")
# add plt.addLegend() BEFORE you create the curves.
# mdsNode = tree.getNode("ATCAIOP1.ADC0RAW")
# dataAdc = mdsNode.getData().data()
# timeData = mdsNode.getDimensionAt(0).data()
p1.addLegend()
start = args.crange[0] - 1
stop = args.crange[1]
dataSdas = np.load(args.file)
x = dataSdas[:args.maxpoints, 0] / 1e3 # us -> ms
# for i in range(1, 2):
lineName = ['Time', 'Trigger',
'ElectricTop', 'ElectricInner', 'ElectricOuter', 'ElectricBottom']
for i in [2, 3, 4, 5]:
y = dataSdas[:args.maxpoints, i]
# p1.plot(y, pen=pg.mkPen(i, width=2), name=f"Ch {i}")
p1.plot(y, pen=pg.mkPen(i, width=2), name=lineName[i])
p1.showGrid(x=True, y=True, alpha=0.5)
# p1.setLabel('bottom', "Time", units='ms')
# p1.setLabel('bottom', "Samp", units='')
win.nextRow()
p2 = win.addPlot(title="MARTE2 output data")
dataOut = np.genfromtxt('../Startup/IsttokOutput.csv', delimiter=',')
p2.addLegend()
x = dataOut[:args.maxpoints, 0] / 1e3 # us -> ms
y = dataOut[:args.maxpoints, 1]
# for i in range(1, 5):
lineName = ['Time', 'OutMdsW0', 'OutMdsW1', 'OutMdsW2', 'OutMdsW3']
for i in [1, 2, 3, 4,]:
y = dataOut[:args.maxpoints, i]
p2.plot(y, pen=pg.mkPen(i, width=2), name=lineName[i])
p2.showGrid(x=True, y=True, alpha=0.5)
# p2.plot(x, y) # , pen=pg.mkPen(i, width=2)) # , name=f"Ch {i+1}")
p2.setLabel('bottom', "Time", units='ms')
# print("WO: ", end='')
# updatePlot()
if __name__ == '__main__':
# import sys
# if sys.flags.interactive != 1 or not hasattr(QtCore, 'PYQT_VERSION'):
# pg.QtGui.QApplication.exec_()
# iprint("xwc")
pg.exec()
# vim: syntax=python ts=4 sw=4 sts=4 sr et

View File

@@ -168,12 +168,14 @@
param1 = Online
}
}
/*
+CalcOffSetsMsg = {
Class = "Message"
Destination = "MdsLoopApp.Functions.GAMElectricProbes"
Function = "CalcOffSets"
Mode = "ExpectsReply"
}
*/
+StopCurrentStateExecutionMsg = {
Class = Message
Destination = MdsLoopApp
@@ -243,20 +245,6 @@
}
}
}
+Types = {
Class = ReferenceContainer
+LangmuirStructure = {
Class = IntrospectionStructure
TimeSdas = {
Type = uint32
NumberOfElements = 1
}
SignalArray = {
Type = float32
NumberOfElements = 4
}
}
}
$MdsLoopApp = {
Class = RealTimeApplication
+Functions = {
@@ -306,50 +294,39 @@ $MdsLoopApp = {
+GAMFileReader = {
Class = IOGAM
InputSignals = {
Inputs = {
TimeSdas = {
DataSource = FileReader_DS
Type = LangmuirStructure
MemberAliases = {
Inputs.TimeSdas = TimeSdas
Inputs.SignalArray = LangmuirSignals
}
}
Type = uint32
}
Trigger = {
DataSource = FileReader_DS
Type = uint32
}
LangmuirSignals = {
DataSource = FileReader_DS
Type = float32
}
}
OutputSignals = {
LangmuirStrt = {
DataSource = DDB1
Type = LangmuirStructure
MemberAliases = {
TimeSdasA = "LangmuirStrt.TimeSdas"
LangmuirSignalsA = "LangmuirStrt.SignalArray"
}
}
}
}
+FlatIOGAM = {
Class = FlattenedStructIOGAM
InputSignals = {
LangmuirStrt = { //Exactly one structure signal shall be defined.
Type = LangmuirStructure //The Type shall be structured and is required.
DataSource = DDB1 //Compulsory.
}
}
OutputSignals = {
LangmuirStrt_TimeSdas = {
TimeSdas = {
DataSource = "DDB1"
Type = uint32
NumberOfElements = 1
}
LangmuirStrt_SignalArray = {
}
TriggerSdas = {
DataSource = "DDB1"
Type = uint32
}
LangmuirSigs = {
DataSource = "DDB1"
Type = float32
NumberOfElements = 4
}
}
}
}
+GAMLangSigs= {
Class = IOGAM
InputSignals = {
LangmuirStrt_SignalArray = {
LangmuirSigs = {
DataSource = "DDB1"
Type = float32
NumberOfElements = 4
@@ -374,58 +351,17 @@ $MdsLoopApp = {
}
}
}
/*
+GAMFileReaderS = {
Class = IOGAM
InputSignals = {
TimeSdas = {
DataSource = FileReaderS_DS
Type = uint32
}
LangmuirSignals = {
DataSource = FileReaderS_DS
Type = float32
NumberOfElements = 4
}
}
OutputSignals = {
TimeSdasS = {
DataSource = "DDB1"
Type = uint32
}
LangmuirS = {
DataSource = "DDB1"
Type = float32
NumberOfElements = 4
}
}
}
OutMdsW1 = {
DataSource = FileSignalsWriter
Type = float32
}
OutMdsW2 = {
DataSource = FileSignalsWriter
Type = float32
}
OutMdsW3 = {
DataSource = FileSignalsWriter
Type = float32
}
//"LangmuirStrt.SignalsL[0]" = {
LangmuirStrt_SignalArray = {
DataSource = "DDB1"
Type = float32
NumberOfElements = 4
}
*/
+GAMElectricProbes = {
Class = ElectricProbesGAM
Gain = 5 //Compulsory
NumberOfSamplesAvg = 5 //Compulsory
ResetInEachState = 0//Compulsory. 1> reset in each state, 0> reset if the previous state is different from the next state
ResetInEachState = 0 //Compulsory. 1> reset in each state, 0> reset if the previous state is different from the next state
InputSignals = {
LangmuirStrt_SignalArray = {
TriggerSdas = {
DataSource = "DDB1"
Type = uint32
}
LangmuirSigs = {
DataSource = "DDB1"
Type = float32
NumberOfElements = 4
@@ -576,7 +512,7 @@ $MdsLoopApp = {
+Thread1 = {
Class = RealTimeThread
CPUs = 0x1
Functions = {GAMTimer GAMFileReader FlatIOGAM GAMLangSigs GAMElectricProbes GAMFileWriter }
Functions = {GAMTimer GAMFileReader GAMLangSigs GAMElectricProbes GAMFileWriter }
}
}
}

View File

@@ -64,12 +64,15 @@ namespace MARTe {
inputElectricOuter = NULL_PTR(MARTe::float32 *);
inputElectricBottom = NULL_PTR(MARTe::float32 *);
*/
lastInputs = NULL_PTR(MARTe::float32**);
triggerSdas = NULL_PTR(MARTe::uint32 *);
inputSignal = NULL; // NULL_PTR(MARTe::float32*);
outputEpR = NULL_PTR(MARTe::float32 *);
outputEpZ = NULL_PTR(MARTe::float32 *);
resetInEachState = false;
lastInputs = NULL_PTR(MARTe::float32**);
lastTriggerSdas = 0u;
}
ElectricProbesGAM::~ElectricProbesGAM() {
@@ -90,13 +93,6 @@ namespace MARTe {
}
delete[] lastInputs;
}
/*
for (k=0u; k < EP_NUM_INPUTS; k++) {
if(lastInputs[k] != NULL_PTR(MARTe::float32 *)) {
delete [] lastInputs[k];
}
}
*/
}
bool ElectricProbesGAM::Initialise(MARTe::StructuredDataI & data) {
@@ -151,20 +147,20 @@ namespace MARTe {
bool ElectricProbesGAM::Setup() {
using namespace MARTe;
uint32 numberOfInputSignals = GetNumberOfInputSignals();
bool ok = (numberOfInputSignals == 1u);
bool ok = (numberOfInputSignals == 2u);
if (!ok) {
REPORT_ERROR(ErrorManagement::ParametersError, "The number of input signals shall be equal to 4. numberOfInputSignals = %d ", numberOfInputSignals);
REPORT_ERROR(ErrorManagement::ParametersError, "The number of input signals shall be equal to 2. numberOfInputSignals = %d ", numberOfInputSignals);
}
if (ok) {
StreamString inputSignalName;
ok = GetSignalName(InputSignals, 0u, inputSignalName);
TypeDescriptor inputSignalType = GetSignalType(InputSignals, 0u);
ok = (inputSignalType == Float32Bit);
ok = (inputSignalType == UnsignedInteger32Bit);
if (!ok) {
const char8 * const inputSignalTypeStr = TypeDescriptor::GetTypeNameFromTypeDescriptor(inputSignalType);
REPORT_ERROR(ErrorManagement::ParametersError,
"The type of the input signals shall be float32. inputSignalType = %s", inputSignalTypeStr);
"The type of the input signals shall be uint32. inputSignalType = %s", inputSignalTypeStr);
}
uint32 numberOfInputSamples = 0u;
if (ok) {
@@ -194,6 +190,49 @@ namespace MARTe {
if (ok) {
ok = GetSignalNumberOfElements(InputSignals, 0u, numberOfInputElements);
}
if (ok) {
ok = (numberOfInputElements == 1u);
}
if (!ok) {
REPORT_ERROR(ErrorManagement::ParametersError,
"The number of input signal elements shall be equal to 1. numberOfInputElements(%s) = %d", inputSignalName.Buffer(), numberOfInputElements);
}
ok = GetSignalName(InputSignals, 1u, inputSignalName);
inputSignalType = GetSignalType(InputSignals, 1u);
ok = (inputSignalType == Float32Bit);
if (!ok) {
const char8 * const inputSignalTypeStr = TypeDescriptor::GetTypeNameFromTypeDescriptor(inputSignalType);
REPORT_ERROR(ErrorManagement::ParametersError,
"The type of the input signals shall be float32. inputSignalType = %s", inputSignalTypeStr);
}
numberOfInputSamples = 0u;
if (ok) {
ok = GetSignalNumberOfSamples(InputSignals, 1u, numberOfInputSamples);
}
if (ok) {
ok = (numberOfInputSamples == 1u);
}
if (!ok) {
REPORT_ERROR(ErrorManagement::ParametersError,
"The number of input signals samples shall be equal to 1. numberOfInputSamples = %d", numberOfInputSamples);
}
numberOfInputDimensions = 0u;
if (ok) {
ok = GetSignalNumberOfDimensions(InputSignals, 1u, numberOfInputDimensions);
}
if (ok) {
ok = (numberOfInputDimensions == 0u);
if (!ok) {
REPORT_ERROR(
ErrorManagement::ParametersError,
"The number of input signals dimensions shall be equal to 0. numberOfInputDimensions(%s) = %d", inputSignalName.Buffer(), numberOfInputDimensions);
}
}
if (ok) {
ok = GetSignalNumberOfElements(InputSignals, 1u, numberOfInputElements);
}
if (ok) {
ok = (numberOfInputElements == 4u);
}
@@ -220,7 +259,8 @@ namespace MARTe {
}
}
if (ok) {
inputSignal = reinterpret_cast<float32 *>(GetInputSignalMemory(0u));
triggerSdas = reinterpret_cast<uint32 *>(GetInputSignalMemory(0u));
inputSignal = reinterpret_cast<float32 *>(GetInputSignalMemory(1u));
/*
inputElectricTop = reinterpret_cast<float32 *>(GetInputSignalMemory(0u));
inputElectricInner = reinterpret_cast<float32 *>(GetInputSignalMemory(1u));
@@ -309,18 +349,16 @@ namespace MARTe {
}
bool ElectricProbesGAM::Execute() {
//*outputEpZ = 3.4;
*outputEpR = inputSignal[0];
*outputEpZ = inputSignal[0] - inputOffsets[0];
//*outputEpR = (inputSignal[2] - inputOffsets[2]) -
/* inputElectricOuter - inputElectricInner */
*outputEpR = (inputSignal[2] - inputOffset[2]) -
(inputSignal[1] - inputOffset[1]);
*outputEpZ = inputSignal[0] - inputOffset[0];
//*outputEpZ = inputSignal[0] - inputSignal[3];
//*outputSignal1 = *inputSignals[0] - *inputSignals[1];
//update the last values
/* update the last value arrays */
for (MARTe::uint32 i = 0u; i < numberOfInputElements; i++) {
if (numberOfSamplesAvg > 2u) {
/*lint -e{9117} implicit conversion is safe*/
for (MARTe::uint32 k = (numberOfSamplesAvg - 1u); k > 0u; k--) {
lastInputs[i][k] = lastInputs[i][k - 1];
}
@@ -335,10 +373,19 @@ namespace MARTe {
lastInputs[1][0] = *inputElectricInner;
lastInputs[2][0] = *inputElectricOuter;
lastInputs[3][0] = *inputElectricBottom;
//lastInputs[i][0] = input[i][numberOfSamples - 1u];
lastInputs[i][0] = input[i][numberOfSamples - 1u];
}
*/
return true;
/* Should use a MARTe2 Message.
* Here for Sdas recorded signel with Trigger pseudo-signal
* */
if ((lastTriggerSdas == 0u) && (*triggerSdas == 1u)) {
CalcOffSets();
}
lastTriggerSdas = *triggerSdas;
return true;
}
bool ElectricProbesGAM::PrepareNextState(const char8 * const currentStateName,
@@ -404,8 +451,6 @@ namespace MARTe {
ErrorManagement::ErrorType ElectricProbesGAM::CalcOffSets() {
ErrorManagement::ErrorType ret = MARTe::ErrorManagement::NoError;
//REPORT_ERROR(ErrorManagement::Information,
// "CalcOffSets. numberOfSamplesAvg: %d!", numberOfSamplesAvg);
REPORT_ERROR(ErrorManagement::Information,
"CalcOffSets. Inputs:%f, %f, %f, %f.",
inputSignal[0],
@@ -414,27 +459,26 @@ namespace MARTe {
inputSignal[3]);
if (numberOfSamplesAvg > 1u) {
for (uint32 i = 0u; i < EP_NUM_INPUTS; i++) {
inputOffsets[i] = 0.0f;
inputOffset[i] = 0.0f;
for (uint32 k = 0 ; k < numberOfSamplesAvg; k++) {
inputOffsets[i] += lastInputs[i][k];
inputOffset[i] += lastInputs[i][k];
}
inputOffsets[i] /= numberOfSamplesAvg;
inputOffset[i] /= numberOfSamplesAvg;
}
REPORT_ERROR(ErrorManagement::Information,
"CalcOffSets. Offset:%f, %f, %f, %f.",
inputOffsets[0],
inputOffsets[1],
inputOffsets[2],
inputOffsets[3]);
inputOffset[0],
inputOffset[1],
inputOffset[2],
inputOffset[3]);
}
return ret;
}
CLASS_REGISTER(ElectricProbesGAM, "1.0")
CLASS_REGISTER(ElectricProbesGAM, "1.1")
// CLASS_METHOD_REGISTER(ElectricProbesGAM, ElectricProbesGAM::CalcOffSets)
CLASS_METHOD_REGISTER(ElectricProbesGAM, CalcOffSets)
} /* namespace MARTeIsttok */

View File

@@ -153,8 +153,9 @@ namespace MARTe {
* The input signals
*/
uint32 *triggerSdas;
/**
* The input signal
* The input Electric Probes signals
*/
float32 *inputSignal;
@@ -166,7 +167,7 @@ namespace MARTe {
*/
uint32 numberOfInputElements;
float32 inputOffsets[4];
float32 inputOffset[4];
MARTe::float32 **lastInputs;
@@ -174,7 +175,6 @@ namespace MARTe {
* The output signals
*/
// MARTe::float32 **outputSignals;
//MARTe::float32 *outputSignal1;
float32 *outputEpR;
float32 *outputEpZ;
@@ -188,6 +188,10 @@ namespace MARTe {
*/
StreamString lastStateExecuted;
/**
* Flag to detect SDAS Trigger Edge.
*/
uint32 lastTriggerSdas;
};
}

91
Startup/RtAppFile.sh Executable file
View File

@@ -0,0 +1,91 @@
#!/bin/bash
#Arguments -f FILENAME -m MESSAGE | -s STATE [-d cgdb|strace]
MDS=0
DEBUG=""
INPUT_ARGS=$*
while test $# -gt 0
do
case "$1" in
-d|--debug)
DEBUG="$2"
;;
-mds)
MDS=1
;;
esac
shift
done
MARTe2_HOME=~/git-repos/MARTe2
MARTe2_DIR=$MARTe2_HOME/MARTe2
MARTe2_Components_DIR=$MARTe2_HOME/MARTe2-components
MARTe2_Demos_DIR=~/git-repos/MARTe2-demos-padova
EPICS_ROOT=/opt/epics
EPICS_BASE=${EPICS_ROOT}/epics-base
EPICS_HOST_ARCH=linux-x86_64
EPICS_CA_ADDR_LIST="localhost"
#export EPICS_CA_ADDR_LIST="192.168.0.60 192.168.0.21 192.168.0.22 192.168.0.99"
#export EPICS_CA_ADDR_LIST="192.168.88.251"
# export EPICS_CA_ADDR_LIST="10.10.136.177"
export EPICS_CA_AUTO_ADDR_LIST="NO"
# export rtappdemo_path=$MARTe2_Demos_DIR/Trees
# rtappreader_path=$MARTe2_Demos_DIR/Trees
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/Components/GAMs/ElectricProbesGAM/
# LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/Components/DataSources/ADCSimulator/
#LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/Components/Other/ControllerEx1/
#LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/Components/Other/ControllerEx2/
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_DIR/Build/x86-linux/Core/
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/DataSources/EPICSCA/
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/DataSources/EPICSPVA/
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/DataSources/LinuxTimer/
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/DataSources/LoggerDataSource/
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/DataSources/FileDataSource/
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/DataSources/LinkDataSource/
#LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/DataSources/UDP/
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/DataSources/MDSReader/
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/DataSources/MDSWriter/
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/DataSources/RealTimeThreadSynchronisation/
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/DataSources/RealTimeThreadAsyncBridge/
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/GAMs/ConstantGAM/
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/GAMs/ConversionGAM/
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/GAMs/FlattenedStructIOGAM/
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/GAMs/IOGAM/
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/GAMs/MessageGAM/
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/GAMs/FilterGAM/
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/GAMs/HistogramGAM/
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/GAMs/SSMGAM/
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/GAMs/TriggerOnChangeGAM/
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/GAMs/WaveformGAM/
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/Interfaces/BaseLib2Wrapper/
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/Interfaces/EPICS/
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/Interfaces/EPICSPVA/
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/Interfaces/MemoryGate/
# LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/Interfaces/NI9157Device/
# LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/Interfaces/OPCUA/
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/Interfaces/SysLogger/
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$EPICS_BASE/lib/$EPICS_HOST_ARCH
echo $LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH
#export isttoksdas_path=/home/mdsplus/Trees
export isttokoutput_path=/home/mdsplus/Trees
# export rtappdemo_path=../Trees
#if [ ${MDS} == 1 ]; then
#fi
if [ "$DEBUG" = "cgdb" ]
then
cgdb --args $MARTe2_DIR/Build/x86-linux/App/MARTeApp.ex $INPUT_ARGS
else
$MARTe2_DIR/Build/x86-linux/App/MARTeApp.ex $INPUT_ARGS
fi