diff --git a/Analysis/SdasImport2File.py b/Analysis/SdasImport2File.py index 28c9055..b20ee45 100644 --- a/Analysis/SdasImport2File.py +++ b/Analysis/SdasImport2File.py @@ -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=',') diff --git a/Analysis/pyqtPlotFile.py b/Analysis/pyqtPlotFile.py new file mode 100755 index 0000000..45ea5a3 --- /dev/null +++ b/Analysis/pyqtPlotFile.py @@ -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=' 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=' 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 diff --git a/Configurations/RTApp-Isttok-File.cfg b/Configurations/RTApp-Isttok-File.cfg index 3f86251..5fd1c52 100644 --- a/Configurations/RTApp-Isttok-File.cfg +++ b/Configurations/RTApp-Isttok-File.cfg @@ -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 } } } } diff --git a/GAMs/ElectricProbesGAM/ElectricProbesGAM.cpp b/GAMs/ElectricProbesGAM/ElectricProbesGAM.cpp index e6b3a5c..3889981 100644 --- a/GAMs/ElectricProbesGAM/ElectricProbesGAM.cpp +++ b/GAMs/ElectricProbesGAM/ElectricProbesGAM.cpp @@ -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(GetInputSignalMemory(0u)); + triggerSdas = reinterpret_cast(GetInputSignalMemory(0u)); + inputSignal = reinterpret_cast(GetInputSignalMemory(1u)); /* inputElectricTop = reinterpret_cast(GetInputSignalMemory(0u)); inputElectricInner = reinterpret_cast(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 */ diff --git a/GAMs/ElectricProbesGAM/ElectricProbesGAM.h b/GAMs/ElectricProbesGAM/ElectricProbesGAM.h index 45104c5..2e6621b 100644 --- a/GAMs/ElectricProbesGAM/ElectricProbesGAM.h +++ b/GAMs/ElectricProbesGAM/ElectricProbesGAM.h @@ -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; }; } diff --git a/Startup/RtAppFile.sh b/Startup/RtAppFile.sh new file mode 100755 index 0000000..e3f7a2c --- /dev/null +++ b/Startup/RtAppFile.sh @@ -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 +