From 1efc146beee43b5882980f91895192016e2a1f7b Mon Sep 17 00:00:00 2001 From: galperti <cristian.galperti@epfl.ch> Date: Mon, 27 Jun 2022 10:13:06 +0200 Subject: [PATCH] fixed cfg deleted --- .../template/algo_template_marte2_tester.cfg | 447 ------------------ 1 file changed, 447 deletions(-) delete mode 100644 algos/template/algo_template_marte2_tester.cfg diff --git a/algos/template/algo_template_marte2_tester.cfg b/algos/template/algo_template_marte2_tester.cfg deleted file mode 100644 index f04823c..0000000 --- a/algos/template/algo_template_marte2_tester.cfg +++ /dev/null @@ -1,447 +0,0 @@ -+MDSParamLoader1 = { - Class = MDSObjLoader // Compulsory - //Shot = "-1" // Optional if defined in MDSObjConnection - - +MDSConnection1 = { - Class = MDSObjConnection // Compulsory - ClientType = "Thin" //( "Thin" | "Distributed" ) // Optional. Default: "Thin" - Server = "tcvscd.crpp.tcv:8000" // Compulsory if ClientType = "Thin" - Tree = "martetest" // Compulsory - Shot = "10" // Optional if defined in MDSObjLoader - - +k = { Class = MDSParameter Path = "k" } - +tp-ks1 = { Class = MDSParameter Path = "ks1" } - +tp-kv1 = { Class = MDSParameter Path = "kv1" } - +tp-km1 = { Class = MDSParameter Path = "km1" } - - /* - +gainStruct-gain_a = { - Class = MDSParameter // Compulsory - Path = "\\TREE_NAME::TOP:NODE2" // Compulsory - DataOrientation = ( "RowMajor" | "ColumnMajor" ) // Only for 2D matrices. Optional. Default: "ColumnMajor" - } - +gainStruct-gain_b = { - Class = MDSParameter // Compulsory - Path = "\\TREE_NAME::TOP:NODE3" // Compulsory - DataOrientation = ( "RowMajor" | "ColumnMajor" ) // Only for 2D matrices. Optional. Default: "ColumnMajor" - } - */ - } -} - -$TestApp = { - Class = RealTimeApplication - +Functions = { - Class = ReferenceContainer - +GAMTimer = { - Class = IOGAM - InputSignals = { - Counter = { DataSource = Timer Type = uint32 } - Time = { Frequency = 1000 DataSource = Timer Type = uint32 } - } - OutputSignals = { - Counter = { DataSource = DDB1 Type = uint32 } - Time = { DataSource = DDB1 Type = uint32 } - } - } - +Constants = { - Class = ConstantGAM - OutputSignals = { - zero = { DataSource = DDB1 Type = float32 NumberOfElements = 1 NumberOfDimensions=0 Default=0 } - input-signal1 = { DataSource = DDB1 Type = float32 NumberOfElements = 1 NumberOfDimensions=0 Default=0 } - input-signal2 = { DataSource = DDB1 Type = float32 NumberOfElements = 1 NumberOfDimensions=0 Default=0 } - - } - } - +ReaderBroker = { - Class = IOGAM - InputSignals = { - mdsint1 = { DataSource = MDSReader_0 Type = uint32 NumberOfElements = 1 } - Time = { DataSource = MDSReader_0 Type = int32 NumberOfElements = 1 } - } - OutputSignals = { - mdsint1 = { DataSource = DDB1 Type = uint32 NumberOfElements = 1 } - mdsintime = { DataSource = DDB1 Type = int32 NumberOfElements = 1 } - } - } - +Wavegen0TimeBroker = { - Class = IOGAM - InputSignals = { - Time = { DataSource = DDB1 Type = uint32 } - } - OutputSignals = { - time = { DataSource = MDSWavegen_0 Type = int32 } - } - } - +Wavegen0DataBroker = { - Class = IOGAM - InputSignals = { - wavegen_0 = { DataSource = MDSWavegen_0 Type = float32 NumberOfElements = 1 } - } - OutputSignals = { - wavegen_0 = { DataSource = DDB1 Type = float32 NumberOfElements = 1 } - } - } - +GAMSimulink1 = { - Class = SimulinkWrapperGAM - Library = "/root/algo_template.so" - SymbolPrefix = "algo_template" - Verbosity = 2 - SkipInvalidTunableParams = 1 - TunableParamExternalSource= "MDSParamLoader1" - //NonVirtualBusMode = "ByteArray" // NOTE: homogeneus buses are not handled correctly, wrong - // handling of NumberOfElements = 1 - NonVirtualBusMode = "Structured" - - InputSignals = { - realtime = { DataSource = DDB1 Type = float32 NumberOfElements = 1 NumberOfDimensions=0 Alias = wavegen_0 } - //input = { DataSource = DDB1 Type = float32 NumberOfElements = 1 NumberOfDimensions=0 Alias = wavegen_0 } - input={ - signal1 = { Type = float32 NumberOfDimensions = 0 NumberOfElements = 1 DataSource = DDB1 Alias = input-signal1 } - signal2 = { Type = float32 NumberOfDimensions = 0 NumberOfElements = 1 DataSource = DDB1 Alias = input-signal2 } -} - /* - inputbus = { - sig1 = { Type = float32 NumberOfDimensions = 0 NumberOfElements = 1 DataSource = DDB1 Alias = wavegen_0 } - sig2 = { Type = float32 NumberOfDimensions = 0 NumberOfElements = 1 DataSource = DDB1 Alias = wavegen_0 } - } - */ - } - OutputSignals = { - //algo_template_outport = { DataSource = DDB1 Type = uint8 NumberOfElements = 8 NumberOfDimensions = 1 } - - /* - outputs2 = { DataSource = DDB1 Type = float32 NumberOfElements = 1 NumberOfDimensions=0 } - outputv1 = { DataSource = DDB1 Type = float32 NumberOfElements = 1 NumberOfDimensions=0 } - outputv2 = { DataSource = DDB1 Type = float32 NumberOfElements = 1 NumberOfDimensions=0 } - outputm1 = { DataSource = DDB1 Type = float32 NumberOfElements = 1 NumberOfDimensions=0 } - outputm2 = { DataSource = DDB1 Type = float32 NumberOfElements = 1 NumberOfDimensions=0 } - */ - - /* - outputbus1 = { DataSource = DDB1 Type = uint8 NumberOfElements = 12 NumberOfDimensions = 1 } - outputbus2 = { DataSource = DDB1 Type = float32 NumberOfElements = 1 NumberOfDimensions = 0 } // TODO: bug here, a bus cannot have numelem=1 - */ - - /* - outputbus1 = { - sig1 = { Type = float32 NumberOfDimensions = 0 NumberOfElements = 1 DataSource = DDB1 Alias = outputbus1sig1 } - sig2 = { Type = float32 NumberOfDimensions = 0 NumberOfElements = 1 DataSource = DDB1 Alias = outputbus1sig2 } - sig3 = { Type = int32 NumberOfDimensions = 0 NumberOfElements = 1 DataSource = DDB1 Alias = outputbus1sig3 } - subbus1 = { - sig1 = { Type = float32 NumberOfDimensions = 0 NumberOfElements = 1 DataSource = DDB1 Alias = outputbus1sig4 } - sig2 = { Type = float32 NumberOfDimensions = 0 NumberOfElements = 1 DataSource = DDB1 Alias = outputbus1sig5 } - } - } - outputbus2 = { - sig1 = { Type = float32 NumberOfDimensions = 0 NumberOfElements = 1 DataSource = DDB1 Alias = outputbus1sig6 } - sig2 = { Type = float32 NumberOfDimensions = 0 NumberOfElements = 1 DataSource = DDB1 Alias = outputbus1sig7 } - } - */ - -output={ - signal1 = { Type = float32 NumberOfDimensions = 0 NumberOfElements = 1 DataSource = DDB1 Alias = output-signal1 } - signal2 = { Type = float32 NumberOfDimensions = 0 NumberOfElements = 1 DataSource = DDB1 Alias = output-signal2 } - signal3 = { Type = int32 NumberOfDimensions = 0 NumberOfElements = 1 DataSource = DDB1 Alias = output-signal3 } -} - } - Parameters = { - //k2 = (float32) 2.5 - //vectorParameter = (uint32) { 0, 1, 2, 3 } - //matrixParameter = (float64) { {0.0, 1.0}, {2.0, 3.0} } - //ks1 = (float32) 1.0; - tp-ks2 = (float32) 1.0 - //kv1 = (float32) { 1.0, 1.0 } - tp-kv2 = (float32) { 1.0, 1.0 } - //km1 = (float32) {{ 1.0, 1.0 }, { 1.0, 1.0 }} - tp-km2 = (float32) {{ 1.0, 1.0 }, { 1.0, 1.0 }} - } - } - +StorageBroker = { - Class = IOGAM - InputSignals = { - wavegen_00 = { DataSource = DDB1 Type = float32 Alias=wavegen_0 } - wavegen_0 = { DataSource = DDB1 Type = float32 } - - /* - outputbus1sig1 = { DataSource = DDB1 Type = float32 } - outputbus1sig2 = { DataSource = DDB1 Type = float32 } - outputbus1sig3 = { DataSource = DDB1 Type = int32 } - outputbus1sig4 = { DataSource = DDB1 Type = float32 } - outputbus1sig5 = { DataSource = DDB1 Type = float32 } - outputbus1sig6 = { DataSource = DDB1 Type = float32 } - outputbus1sig7 = { DataSource = DDB1 Type = float32 } - */ - - Thread1_CycleTime = { DataSource = Timings Type = uint32 Alias = State1.Thread1_CycleTime } - GAMSimulink1_ReadTime = { DataSource = Timings Type = uint32 } - GAMSimulink1_ExecTime = { DataSource = Timings Type = uint32 } - GAMSimulink1_WriteTime = { DataSource = Timings Type = uint32 } - } - OutputSignals = { - outputs1 = { DataSource = MDSWriter_0 Type = float32 } - wavegen_0 = { DataSource = MDSWriter_0 Type = float32 } - - /* - outputbus1sig1 = { DataSource = MDSWriter_0 Type = float32 } - outputbus1sig2 = { DataSource = MDSWriter_0 Type = float32 } - outputbus1sig3 = { DataSource = MDSWriter_0 Type = int32 } - outputbus1sig4 = { DataSource = MDSWriter_0 Type = float32 } - outputbus1sig5 = { DataSource = MDSWriter_0 Type = float32 } - outputbus1sig6 = { DataSource = MDSWriter_0 Type = float32 } - outputbus1sig7 = { DataSource = MDSWriter_0 Type = float32 } - */ - - Thread1_Cycletime = { DataSource = MDSWriter_0 Type = uint32 } - GAMSimulink1_ReadTime = { DataSource = MDSWriter_0 Type = uint32 } - GAMSimulink1_ExecTime = { DataSource = MDSWriter_0 Type = uint32 } - GAMSimulink1_WriteTime = { DataSource = MDSWriter_0 Type = uint32 } - } - } - +LoggerBroker = { - Class = IOGAM - InputSignals = { - Counter = { DataSource = DDB1 Type = uint32 } - //wavegen_0 = { DataSource = DDB1 Type = float32 } - - - //outputs2 = { DataSource = DDB1 Type = float32 } - //outputv1 = { DataSource = DDB1 Type = float32 } - //outputv2 = { DataSource = DDB1 Type = float32 } - //outputm1 = { DataSource = DDB1 Type = float32 } - //outputm2 = { DataSource = DDB1 Type = float32 } - //mdsint1 = { DataSource = DDB1 Type = uint32 } - //mdsintime = { DataSource = DDB1 Type = int32 } - - } - OutputSignals = { - Counter = { DataSource = LoggerDataSource Type = uint32 } - //outputs1 = { DataSource = LoggerDataSource Type = float32 } - //outputs2 = { DataSource = LoggerDataSource Type = float32 } - //outputv1 = { DataSource = LoggerDataSource Type = float32 } - //outputv2 = { DataSource = LoggerDataSource Type = float32 } - //outputm1 = { DataSource = LoggerDataSource Type = float32 } - //outputm2 = { DataSource = LoggerDataSource Type = float32 } - //mdsint1 = { DataSource = LoggerDataSource Type = uint32 } - //mdsintime = { DataSource = LoggerDataSource Type = int32 } - } - } - } - +Data = { - Class = ReferenceContainer - DefaultDataSource = DDB1 - +DDB1 = { Class = GAMDataSource } - +LoggerDataSource = { Class = LoggerDataSource } - +Timings = { Class = TimingDataSource } - +Timer = { - Class = LinuxTimer - SleepNature = "Busy" // Default | Busy - ExecutionMode = RealTimeThread // IndependentThread | RealTimeThread - CPUMask = 0x8 // IndependentThread CPU mask - Signals = { - Counter = { Type = uint32 } - Time = { Type = uint32 } - } - } - +MDSWavegen_0 = { - Class = MDSObjWavegen - Server="tcvscd.crpp.tcv" - Tree="martetest" - Shot = 10 - Frequency = 1000 - Verbosity = 2 - Interpolation = 1 - TimeOffset = 0.000 - +sig1 = { Class=MDSWgSigSingle Path="ai.ch004" } - Signals = { - time = { Type = int32 } - wavegen_0 = { Type = float32 NumberOfElements = 1 } - } - } - +MDSWriter_0 = { - Class = MDSWriter - NumberOfBuffers = 2000 //Compulsory. Number of buffers in the circular buffer defined above. Each buffer is capable of holding a copy of all the DataSourceI signals. - CPUMask = 0x8 //Compulsory. Affinity assigned to the threads responsible for asynchronously flush data into the MDSplus database. - StackSize = 10000000 //Compulsory. Stack size of the thread above. - TreeName = "martetest" //Compulsory. Name of the MDSplus tree. - PulseNumber = -1 //Optional. If -1 a new pulse will be created and the MDSplus pulse number incremented. - StoreOnTrigger = 0 //Compulsory. If 0 all the data in the circular buffer is continuously stored. If 1 data is stored when the Trigger signal is 1 (see below). - EventName = "updatejScope" //Compulsory. Event sent to jScope when TimeRefresh seconds have elapsed. - TimeRefresh = 5 //Compulsory. An event with the name set in the property EventName is sent to jScope when TimeRefresh seconds have elapsed. - NumberOfPreTriggers = 0 //Compulsory iff StoreOnTrigger = 1. Number of cycles to store before the trigger. - NumberOfPostTriggers = 0 //Compulsory iff StoreOnTrigger = 1. Number of cycles to store after the trigger. - Signals = { - /* - Trigger = { //Compulsory when StoreOnTrigger = 1. Must be set in index 0 of the Signals node. When the value of this signal is 1 data will be stored. - Type = uint8 //Type must be uint8 - } - Time = { //Compulsory when StoreOnTrigger = 1. Can be store in any index, but TimeSignal must be set = 1 - Type = uint32 //Type must be uint32 or int32 - TimeSignal = 1 //When set, this signal will be considered as the time source against which all signals will be stored. - TimeSignalMultiplier = 1e-9 //Default = 1e-6. Multiplier to convert the time signal units into seconds, - } - */ - - Thread1_Cycletime = { NodeName = "ST.CH01" Period = 1 AutomaticSegmentation = 0 MakeSegmentAfterNWrites = 2000 SamplePhase = 0 } - GAMSimulink1_ReadTime = { NodeName = "ST.CH02" Period = 1 AutomaticSegmentation = 0 MakeSegmentAfterNWrites = 2000 SamplePhase = 0 } - GAMSimulink1_ExecTime = { NodeName = "ST.CH03" Period = 1 AutomaticSegmentation = 0 MakeSegmentAfterNWrites = 2000 SamplePhase = 0 } - GAMSimulink1_WriteTime = { NodeName = "ST.CH04" Period = 1 AutomaticSegmentation = 0 MakeSegmentAfterNWrites = 2000 SamplePhase = 0 } - - - outputs1 = { //As many as required. - NodeName = "AO.CH01" //Compulsory. MDSplus node name - Period = 1 //Compulsory. Period between signal samples. - AutomaticSegmentation = 0 // 1 || 0. When set to 1 MDSplus::putRow() is used instead of MDSplus::makeSegment() - MakeSegmentAfterNWrites = 2000 //Compulsory if AutomaticSegmentation = 0. Forces the creation of a segment after N MARTe cycles. If AutomaticSegmentation = 0 then MakeSegmentAfterNWrites = 1. - /* - DecimatedNodeName = "SIGUINT16D" //Optional. The node where MDSplus stores the automatically computed decimated signal. When AutomaticSegmentation = 1 this field is ignored. - MinMaxResampleFactor = 4 //Compulsory if DecimatedNodeName is set. Decimation factor that MDSplus applies to the decimated version of the signal. AutomaticSegmentation = 1 this field is ignored. - */ - SamplePhase = 0 //Optional. Shift the time vector by SamplePhase * Period - //DiscontinuityFactor = 0. // Optional. A discontinuity is considered if the delta between two consecutive samples is greater than T+DiscontinuityFactor*T (where T is the nominal period) or - // minor than max(T-DiscontinuityFactor*T, 0). If a discontinuity is detected, the samples will be flushed and a new segment created for the next ones. - } - - - wavegen_0 = { NodeName = "AO.CH02" Period = 1 AutomaticSegmentation = 0 MakeSegmentAfterNWrites = 2000 SamplePhase = 0 } - - /* - outputbus1sig1 = { NodeName = "AO.CH11" Period = 1 AutomaticSegmentation = 0 MakeSegmentAfterNWrites = 2000 SamplePhase = 0 } - outputbus1sig2 = { NodeName = "AO.CH12" Period = 1 AutomaticSegmentation = 0 MakeSegmentAfterNWrites = 2000 SamplePhase = 0 } - outputbus1sig3 = { NodeName = "AO.CH13" Period = 1 AutomaticSegmentation = 0 MakeSegmentAfterNWrites = 2000 SamplePhase = 0 } - outputbus1sig4 = { NodeName = "AO.CH14" Period = 1 AutomaticSegmentation = 0 MakeSegmentAfterNWrites = 2000 SamplePhase = 0 } - outputbus1sig5 = { NodeName = "AO.CH15" Period = 1 AutomaticSegmentation = 0 MakeSegmentAfterNWrites = 2000 SamplePhase = 0 } - outputbus1sig6 = { NodeName = "AO.CH16" Period = 1 AutomaticSegmentation = 0 MakeSegmentAfterNWrites = 2000 SamplePhase = 0 } - outputbus1sig7 = { NodeName = "AO.CH17" Period = 1 AutomaticSegmentation = 0 MakeSegmentAfterNWrites = 2000 SamplePhase = 0 } - */ - - } - /* - +Messages = { //Optional. If set a message will be fired every time one of the events below occur - Class = ReferenceContainer - +TreeOpenedOK = { //Optional, but if set, the name of the Object shall be TreeOpenedOK. If set a message containing a ConfigurationDatabase with param1=PULSE_NUMBER will be sent to the Destination, every time the Tree is successfully opened - Class = Message - Destination = SomeObject - Function = SomeFunction - Mode = ExpectsReply - } - +TreeOpenedFail = { //Optional, but if set, the name of the Object shall be TreeOpenedFail. If set a message will be sent to the Destination, every time the Tree cannot be successfully opened - Class = Message - Destination = SomeObject - Function = SomeFunction - Mode = ExpectsReply - } - +TreeFlushed = { //Optional, but if set, the name of the Object shall be TreeFlushed. If set a message will be sent to the Destination, every time the Tree is flushed. - Class = Message - Destination = SomeObject - Function = SomeFunction - Mode = ExpectsReply - } - } - */ - } - } - +States = { - Class = ReferenceContainer - +State1 = { - Class = RealTimeState - +Threads = { - Class = ReferenceContainer - +Thread1 = { - Class = RealTimeThread - CPUs = 0x4 - Functions = { - GAMTimer - Constants - //ReaderBroker - Wavegen0TimeBroker - Wavegen0DataBroker - GAMSimulink1 - StorageBroker - //LoggerBroker - } - } - } - } - } - +Scheduler = { - Class = GAMScheduler - TimingDataSource = Timings - } -} - - - -/** - * @brief MDSReader is a data source which allows to read data from a MDSplus tree. - * @details MDSReader is an input data source which takes data from MDSPlus nodes (as many as desired) and publishes it on a real time application. - * - * The MDSReader can either interpolate, decimate or take the raw data, as it is, from the tree depending on the parameter called "DataManagement" which is given - * in the configuration file. - * Moreover, this data source can deal with discontinuous data and has a configuration parameter for managing the absence of data. - * DataManagement can take the following values: - * <ul> - * <li>0 --> MDSReader takes the data from the tree as it is (raw). In this configuration, the frequency/numberOfElements must be the same than the node sampling frequency.</li> - * <li>1--> MDSReader interpolates the signal taking as a reference the two nearest data values. If the frequency/numberOfElements is smaller than the sample frequency - * of the MDSplus node the data source interpolates the signal. If the frequency/numberOfElements larger than the node sample frequency the signals is decimated.</li> - * <li>2 --> MDSReader holds the value following the criteria of the nearest value given specific time. I.e the node data is (t1, d1) = (1, 1) and (t2, d2) = (2, 5) and the currentTime is t = 1.6 the - * nearest data to the given time is 5.</li> - * </ul> - * - * HoleManagement can take the following values: - * <ul> - * <li>0 --> MDSreader fills the absence of data with 0</li> - * <li>1 --> MDSReader fills the absence of data with the last value.</li> - * </ul> - * - * Even if the MDSReader can deal with the absence of data, the sampling time must be constant with-in the node, however the sampling time between - * nodes can be different. - * - * The MDSReader can handle as many nodes as desired. Each node can have their on data type, maximum number of segments, elements per segment and sampling time. When the - * end of a node is reached the data of the corresponding node is filled with 0 and the data source continuous running until all nodes reach the end. - * - * The supported types for the nodes are: - * <ul> - * <li>uint8</li> - * <li>int8</li> - * <li>uint16</li> - * <li>int16</li> - * <li>uint32</li> - * <li>int32</li> - * <li>uint64</li> - * <li>int64</li> - * <li>float32</li> - * <li>float64</li> - * </ul> - * - * The last signal specified must be the time. - * The supported type for the time are: - * <ul> - * <li>uint32</li> - * <li>int32</li> - * <li>uint64</li> - * <li>int64</li> - * </ul> - */ - - /* - +MDSReader_0 = { - Class = MDSReader - TreeName = "martetest" //Compulsory. Name of the MDSplus tree. - ShotNumber = 10 //Compulsory. 0 --> last shot number (to use 0 shotid.sys must exist) - Frequency = 1 // in Hz. Is the cycle time of the real time application. - Signals = { - mdsint1 = { - NodeName = "AI.CH003" // node of the tree node - Type = "uint32" //Can be any of the node supported types - NumberOfElements = 1 - DataManagement = 0 //could be 0, 1 or 2 - HoleManagement = 1 //could be 0 or 1 - } - Time = { //Compulsory - Type = "int32" //can be any of the supported types - NumberOfElements = 1 //must be always one. - } - } - } -*/ -- GitLab