Signed-off-by: Bernardo Carvalho <bernardo.carvalho@tecnico.ulisboa.pt>
960 lines
33 KiB
C++
960 lines
33 KiB
C++
+EPICSCAInterface= {
|
||
Class = EPICS::EPICSCAClient
|
||
StackSize = 1048576
|
||
CPUs = 0x1
|
||
AutoStart = 0
|
||
+PV_STATUS = {
|
||
Class = EPICS::EPICSPV
|
||
PVName = "MARTE2-DEMO-APP:STATUS"
|
||
PVType = int32
|
||
}
|
||
+PV_COMMAND = {
|
||
Class = EPICS::EPICSPV
|
||
PVName = "MARTE2-DEMO-APP:COMMAND"
|
||
PVType = uint32
|
||
Event = {
|
||
Destination = StateMachine
|
||
PVValue = Function
|
||
FunctionMap = {{"2", "GOTOPULSING"}, {"1", "GOTOWAITING_FOR_PRE"}, {"0", "GOTOIDLE"}}
|
||
}
|
||
}
|
||
}
|
||
+WebRoot = {
|
||
Class = HttpObjectBrowser
|
||
Root = "."
|
||
+ObjectBrowse = {
|
||
Class = HttpObjectBrowser
|
||
Root = "/"
|
||
}
|
||
+ResourcesHtml = {
|
||
Class = HttpDirectoryResource
|
||
BaseDir = "../../MARTe2/MARTe2/Resources/HTTP/"
|
||
}
|
||
+HttpMessageInterface = {
|
||
Class = HttpMessageInterface
|
||
+GOTOIDLE = {
|
||
Class = Message
|
||
Destination = StateMachine
|
||
Function = GOTOIDLE
|
||
Mode = ExpectsReply
|
||
}
|
||
+GOTOWAITING_FOR_PRE = {
|
||
Class = Message
|
||
Destination = StateMachine
|
||
Function = GOTOWAITING_FOR_PRE
|
||
Mode = ExpectsReply
|
||
}
|
||
+GOTOPULSING = {
|
||
Class = Message
|
||
Destination = StateMachine
|
||
Function = GOTOPULSING
|
||
Mode = ExpectsReply
|
||
}
|
||
+GOTOERR = {
|
||
Class = Message
|
||
Destination = StateMachineError
|
||
Function = GOTOERR
|
||
Mode = ExpectsReply
|
||
}
|
||
}
|
||
}
|
||
+WebServer = {
|
||
Class = HttpService
|
||
Port = 8084
|
||
WebRoot = WebRoot
|
||
Timeout = 0
|
||
ListenMaxConnections = 255
|
||
AcceptTimeout = 1000
|
||
MaxNumberOfThreads = 8
|
||
MinNumberOfThreads = 1
|
||
}
|
||
+StateMachine = {
|
||
Class = StateMachine
|
||
+INITIAL = {
|
||
Class = ReferenceContainer
|
||
+START = {
|
||
Class = StateMachineEvent
|
||
NextState = "IDLE"
|
||
NextStateError = "IDLE"
|
||
Timeout = 0
|
||
+StartHttpServer = {
|
||
Class = Message
|
||
Destination = "WebServer"
|
||
Function = "Start"
|
||
Mode = ExpectsReply
|
||
}
|
||
+StartEPICSCAInterface = {
|
||
Class = Message
|
||
Destination = "EPICSCAInterface"
|
||
Mode = ExpectsReply
|
||
Function = "Start"
|
||
}
|
||
+OpenTreeMsg = {
|
||
Class = Message
|
||
Destination = "MdsLoopApp.Data.MDSWriter"
|
||
Function = OpenTree
|
||
Mode = ExpectsReply
|
||
+Parameters = {
|
||
Class = ConfigurationDatabase
|
||
param1 = 1
|
||
}
|
||
}
|
||
+ChangeToStateIdleMsg = {
|
||
Class = Message
|
||
Destination = MdsLoopApp
|
||
Mode = ExpectsReply
|
||
Function = PrepareNextState
|
||
+Parameters = {
|
||
Class = ConfigurationDatabase
|
||
param1 = Idle
|
||
}
|
||
}
|
||
+StartNextStateExecutionMsg = {
|
||
Class = Message
|
||
Destination = MdsLoopApp
|
||
Function = StartNextStateExecution
|
||
Mode = ExpectsReply
|
||
}
|
||
}
|
||
}
|
||
+IDLE = {
|
||
Class = ReferenceContainer
|
||
+GOTOWAITING_FOR_PRE = {
|
||
Class = StateMachineEvent
|
||
NextState = "WAITING_FOR_PRE"
|
||
NextStateError = "IDLE"
|
||
Timeout = 0
|
||
+ChangeToRunMsg = {
|
||
Class = Message
|
||
Destination = MdsLoopApp
|
||
Mode = ExpectsReply
|
||
Function = PrepareNextState
|
||
+Parameters = {
|
||
Class = ConfigurationDatabase
|
||
param1 = Online
|
||
}
|
||
}
|
||
+StopCurrentStateExecutionMsg = {
|
||
Class = Message
|
||
Destination = MdsLoopApp
|
||
Function = StopCurrentStateExecution
|
||
Mode = ExpectsReply
|
||
}
|
||
+StartNextStateExecutionMsg = {
|
||
Class = Message
|
||
Destination = MdsLoopApp
|
||
Function = StartNextStateExecution
|
||
Mode = ExpectsReply
|
||
}
|
||
}
|
||
}
|
||
+WAITING_FOR_PRE = {
|
||
Class = ReferenceContainer
|
||
+ENTER = {
|
||
Class = ReferenceContainer
|
||
+SetStatusPV = {
|
||
Class = Message
|
||
Destination = "EPICSCAInterface.PV_STATUS"
|
||
Function = CAPut
|
||
Mode = ExpectsReply
|
||
+Parameters = {
|
||
Class = ConfigurationDatabase
|
||
param1 = 1
|
||
}
|
||
}
|
||
}
|
||
+GOTOPULSING = {
|
||
Class = StateMachineEvent
|
||
NextState = "PULSING"
|
||
NextStateError = "IDLE"
|
||
Timeout = 0
|
||
+ChangeToRunMsg = {
|
||
Class = Message
|
||
Destination = MdsLoopApp
|
||
Mode = ExpectsReply
|
||
Function = PrepareNextState
|
||
+Parameters = {
|
||
Class = ConfigurationDatabase
|
||
param1 = Online
|
||
}
|
||
}
|
||
+CalcOffSetsMsg = {
|
||
Class = "Message"
|
||
Destination = "MdsLoopApp.Functions.GAMElectricProbes"
|
||
Function = "CalcOffSets"
|
||
Mode = "ExpectsReply"
|
||
}
|
||
+StopCurrentStateExecutionMsg = {
|
||
Class = Message
|
||
Destination = MdsLoopApp
|
||
Function = StopCurrentStateExecution
|
||
Mode = ExpectsReply
|
||
}
|
||
+StartNextStateExecutionMsg = {
|
||
Class = Message
|
||
Destination = MdsLoopApp
|
||
Function = StartNextStateExecution
|
||
Mode = ExpectsReply
|
||
}
|
||
}
|
||
}
|
||
+PULSING = {
|
||
Class = ReferenceContainer
|
||
+ENTER = {
|
||
Class = ReferenceContainer
|
||
+SetStatusPV = {
|
||
Class = Message
|
||
Destination = "EPICSCAInterface.PV_STATUS"
|
||
Function = CAPut
|
||
Mode = ExpectsReply
|
||
+Parameters = {
|
||
Class = ConfigurationDatabase
|
||
param1 = 2
|
||
}
|
||
}
|
||
}
|
||
+GOTOIDLE = {
|
||
Class = StateMachineEvent
|
||
NextState = "IDLE"
|
||
NextStateError = "IDLE"
|
||
Timeout = 0
|
||
+ChangeToIdleMsg = {
|
||
Class = Message
|
||
Destination = MdsLoopApp
|
||
Mode = ExpectsReply
|
||
Function = PrepareNextState
|
||
+Parameters = {
|
||
Class = ConfigurationDatabase
|
||
param1 = Idle
|
||
}
|
||
}
|
||
+StopCurrentStateExecutionMsg = {
|
||
Class = Message
|
||
Destination = MdsLoopApp
|
||
Function = StopCurrentStateExecution
|
||
Mode = ExpectsReply
|
||
}
|
||
+StartNextStateExecutionMsg = {
|
||
Class = Message
|
||
Destination = MdsLoopApp
|
||
Function = StartNextStateExecution
|
||
Mode = ExpectsReply
|
||
}
|
||
+SetStatusPV = {
|
||
Class = Message
|
||
Destination = "EPICSCAInterface.PV_STATUS"
|
||
Function = CAPut
|
||
Mode = ExpectsReply
|
||
+Parameters = {
|
||
Class = ConfigurationDatabase
|
||
param1 = 0
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
$MdsLoopApp = {
|
||
Class = RealTimeApplication
|
||
+Functions = {
|
||
Class = ReferenceContainer
|
||
+GAMTimer = {
|
||
Class = IOGAM
|
||
InputSignals = {
|
||
Counter = {
|
||
DataSource = Timer
|
||
Type = uint32
|
||
}
|
||
Time = {
|
||
Frequency = 10000
|
||
DataSource = Timer
|
||
Type = uint32
|
||
}
|
||
Idle_Thread1_CycleTime = {
|
||
DataSource = Timings
|
||
Alias = "Idle.Thread1_CycleTime"
|
||
Type = uint32
|
||
}
|
||
Run_Thread1_CycleTime = {
|
||
DataSource = Timings
|
||
Alias = "Online.Thread1_CycleTime"
|
||
Type = uint32
|
||
}
|
||
}
|
||
OutputSignals = {
|
||
Counter = {
|
||
DataSource = DDB1
|
||
Type = uint32
|
||
}
|
||
Time = {
|
||
DataSource = DDB1
|
||
Type = uint32
|
||
}
|
||
Idle_Thread1_CycleTime = {
|
||
DataSource = DDB1
|
||
Type = uint32
|
||
}
|
||
Run_Thread1_CycleTime = {
|
||
DataSource = DDB1
|
||
Type = uint32
|
||
}
|
||
}
|
||
}
|
||
+GAMWF1 = {
|
||
Class = WaveformGAM::WaveformSin
|
||
Amplitude = 10.0
|
||
Frequency = 1.0
|
||
Phase = 0.0
|
||
Offset = 1.1
|
||
InputSignals = {
|
||
Time = {
|
||
DataSource = "DDB1"
|
||
Type = uint32 //Supported type uint32 (int32 also valid since time cannot be negative. uint64 && int64 valid types)
|
||
}
|
||
}
|
||
OutputSignals = {
|
||
Wave = {
|
||
DataSource = "DDB1"
|
||
Type = float32
|
||
}
|
||
}
|
||
}
|
||
+GAMLangSigs= {
|
||
Class = IOGAM
|
||
InputSignals = {
|
||
Langmuir0 = {
|
||
DataSource = "DDB1"
|
||
Type = float32
|
||
}
|
||
Langmuir1 = {
|
||
DataSource = "DDB1"
|
||
Type = float32
|
||
}
|
||
Langmuir2 = {
|
||
DataSource = "DDB1"
|
||
Type = float32
|
||
}
|
||
Langmuir3 = {
|
||
DataSource = "DDB1"
|
||
Type = float32
|
||
}
|
||
}
|
||
OutputSignals = {
|
||
LangmuirSigs = {
|
||
DataSource = "DDB1"
|
||
Type = float32
|
||
NumberOfElements = 4
|
||
}
|
||
}
|
||
}
|
||
+GAMElectricProbes = {
|
||
Class = ElectricProbesGAM
|
||
Gain = 5 //Compulsory
|
||
NumberOfSamplesAvg = 4 //Compulsory
|
||
ResetInEachState = 0//Compulsory. 1–> reset in each state, 0–> reset if the previous state is different from the next state
|
||
InputSignals = {
|
||
Time = {
|
||
DataSource = "DDB1"
|
||
Type = uint32
|
||
}
|
||
LangmuirSigs = {
|
||
DataSource = "DDB1"
|
||
Type = float32
|
||
NumberOfElements = 4
|
||
}
|
||
}
|
||
/*
|
||
InputSignals = {
|
||
Langmuir0 = {
|
||
DataSource = "DDB1"
|
||
Type = float32
|
||
}
|
||
Langmuir1 = {
|
||
DataSource = "DDB1"
|
||
Type = float32
|
||
}
|
||
Langmuir2 = {
|
||
DataSource = "DDB1"
|
||
Type = float32
|
||
}
|
||
Langmuir3 = {
|
||
DataSource = "DDB1"
|
||
Type = float32
|
||
}
|
||
}
|
||
*/
|
||
OutputSignals = {
|
||
SignalEP_OutR = {
|
||
DataSource = "DDB1"
|
||
Type = float32
|
||
}
|
||
SignalEP_OutZ = {
|
||
DataSource = "DDB1"
|
||
Type = float32
|
||
}
|
||
}
|
||
}
|
||
+GAMConvert2Double = {
|
||
Class = "ConversionGAM"
|
||
InputSignals = {
|
||
Mirnov0 = {
|
||
DataSource = "DDB1"
|
||
Type = float32
|
||
}
|
||
Mirnov1 = {
|
||
DataSource = DDB1
|
||
DataSource = "DDB1"
|
||
Type = float32
|
||
}
|
||
Mirnov2 = {
|
||
DataSource = "DDB1"
|
||
Type = float32
|
||
}
|
||
Mirnov3 = {
|
||
DataSource = "DDB1"
|
||
Type = float32
|
||
}
|
||
Mirnov4 = {
|
||
DataSource = "DDB1"
|
||
Type = float32
|
||
}
|
||
Mirnov5 = {
|
||
DataSource = "DDB1"
|
||
Type = float32
|
||
}
|
||
Mirnov6 = {
|
||
DataSource = "DDB1"
|
||
Type = uint32
|
||
Type = float32
|
||
}
|
||
Mirnov7 = {
|
||
DataSource = "DDB1"
|
||
Type = float32
|
||
}
|
||
Mirnov8 = {
|
||
DataSource = "DDB1"
|
||
Type = float32
|
||
}
|
||
Mirnov9 = {
|
||
DataSource = "DDB1"
|
||
Type = float32
|
||
}
|
||
Mirnov10= {
|
||
DataSource = "DDB1"
|
||
Type = float32
|
||
}
|
||
Mirnov11 = {
|
||
DataSource = "DDB1"
|
||
Type = float32
|
||
}
|
||
}
|
||
OutputSignals = {
|
||
MirnovD0 = {
|
||
DataSource = "DDB1"
|
||
Type = float64
|
||
}
|
||
MirnovD1 = {
|
||
DataSource = DDB1
|
||
DataSource = "DDB1"
|
||
Type = float64
|
||
}
|
||
MirnovD2 = {
|
||
DataSource = "DDB1"
|
||
Type = float64
|
||
}
|
||
MirnovD3 = {
|
||
DataSource = "DDB1"
|
||
Type = float64
|
||
}
|
||
MirnovD4 = {
|
||
DataSource = "DDB1"
|
||
Type = float64
|
||
}
|
||
MirnovD5 = {
|
||
DataSource = "DDB1"
|
||
Type = float64
|
||
}
|
||
MirnovD6 = {
|
||
DataSource = "DDB1"
|
||
Type = float64
|
||
}
|
||
MirnovD7 = {
|
||
DataSource = "DDB1"
|
||
Type = float64
|
||
}
|
||
MirnovD8 = {
|
||
DataSource = "DDB1"
|
||
Type = float64
|
||
}
|
||
MirnovD9 = {
|
||
DataSource = "DDB1"
|
||
Type = float64
|
||
}
|
||
MirnovD10= {
|
||
DataSource = "DDB1"
|
||
Type = float64
|
||
}
|
||
MirnovD11 = {
|
||
DataSource = "DDB1"
|
||
Type = float64
|
||
}
|
||
}
|
||
}
|
||
+GAMSSM = {
|
||
Class = SSMGAM
|
||
StateMatrix = {{1.0 0}{0 1.0}} //Compulsory
|
||
InputMatrix = {{0 0 0 0}{0 0 0 0}} //Compulsory
|
||
OutputMatrix = {{0 0}} //Compulsory
|
||
FeedthroughMatrix = {{1 1 1 1}} //Optional
|
||
ResetInEachState = 1//Compulsory. 1–> reset in each state, 0–> reset if the previous state is different from the next state
|
||
SampleFrequency = 0.0001 // Currently optional and not used.
|
||
InputSignals = {
|
||
MirnovD0 = { //input of the SS
|
||
DataSource = "DDB1"
|
||
Type = float64 //Only supported type.
|
||
NumberOfElements = 1
|
||
NumberOfDimensions = 1 // or 0
|
||
Samples = 1
|
||
}
|
||
MirnovD1 = {
|
||
DataSource = "DDB1"
|
||
Type = float64 //Only supported type.
|
||
NumberOfElements = 1
|
||
NumberOfDimensions = 1
|
||
Samples = 1
|
||
}
|
||
MirnovD2 = {
|
||
DataSource = "DDB1"
|
||
Type = float64 //Only supported type.
|
||
NumberOfElements = 1
|
||
NumberOfDimensions = 1
|
||
Samples = 1
|
||
}
|
||
MirnovD3 = {
|
||
DataSource = "DDB1"
|
||
Type = float64 //Only supported type.
|
||
NumberOfElements = 1
|
||
NumberOfDimensions = 1
|
||
Samples = 1
|
||
}
|
||
}
|
||
OutputSignals = {
|
||
OutputSignalSSM = {
|
||
DataSource = "DDB1"
|
||
Type = float64
|
||
}
|
||
State0 = {
|
||
Type = float64
|
||
DataSource = "DDB1"
|
||
}
|
||
State1 = {
|
||
Type = float64
|
||
DataSource = "DDB1"
|
||
}
|
||
}
|
||
}
|
||
+GAMMDSReader = {
|
||
Class = IOGAM
|
||
InputSignals = {
|
||
MirnovMdsR0 = {
|
||
DataSource = MDSReader
|
||
Type = float32
|
||
}
|
||
MirnovMdsR1 = {
|
||
DataSource = MDSReader
|
||
Type = float32
|
||
}
|
||
MirnovMdsR2 = {
|
||
DataSource = MDSReader
|
||
Type = float32
|
||
}
|
||
MirnovMdsR3 = {
|
||
DataSource = MDSReader
|
||
Type = float32
|
||
}
|
||
MirnovMdsR4 = {
|
||
DataSource = MDSReader
|
||
Type = float32
|
||
}
|
||
MirnovMdsR5 = {
|
||
DataSource = MDSReader
|
||
Type = float32
|
||
}
|
||
MirnovMdsR6 = {
|
||
DataSource = MDSReader
|
||
Type = float32
|
||
}
|
||
MirnovMdsR7 = {
|
||
DataSource = MDSReader
|
||
Type = float32
|
||
}
|
||
MirnovMdsR8 = {
|
||
DataSource = MDSReader
|
||
Type = float32
|
||
}
|
||
MirnovMdsR9 = {
|
||
DataSource = MDSReader
|
||
Type = float32
|
||
}
|
||
MirnovMdsR10 = {
|
||
DataSource = MDSReader
|
||
Type = float32
|
||
}
|
||
MirnovMdsR11 = {
|
||
DataSource = MDSReader
|
||
Type = float32
|
||
}
|
||
LangmuirMdsR0 = {
|
||
DataSource = MDSReader
|
||
Type = float32
|
||
}
|
||
LangmuirMdsR1 = {
|
||
DataSource = MDSReader
|
||
Type = float32
|
||
}
|
||
LangmuirMdsR2 = {
|
||
DataSource = MDSReader
|
||
Type = float32
|
||
}
|
||
LangmuirMdsR3 = {
|
||
DataSource = MDSReader
|
||
Type = float32
|
||
}
|
||
Time = {
|
||
DataSource = MDSReader
|
||
Type = uint32
|
||
}
|
||
}
|
||
OutputSignals = {
|
||
Mirnov0 = {
|
||
DataSource = "DDB1"
|
||
Type = float32
|
||
}
|
||
Mirnov1 = {
|
||
DataSource = DDB1
|
||
DataSource = "DDB1"
|
||
Type = float32
|
||
}
|
||
Mirnov2 = {
|
||
DataSource = "DDB1"
|
||
Type = float32
|
||
}
|
||
Mirnov3 = {
|
||
DataSource = "DDB1"
|
||
Type = float32
|
||
}
|
||
Mirnov4 = {
|
||
DataSource = "DDB1"
|
||
Type = float32
|
||
}
|
||
Mirnov5 = {
|
||
DataSource = "DDB1"
|
||
Type = float32
|
||
}
|
||
Mirnov6 = {
|
||
DataSource = "DDB1"
|
||
Type = float32
|
||
}
|
||
Mirnov7 = {
|
||
DataSource = "DDB1"
|
||
Type = float32
|
||
}
|
||
Mirnov8 = {
|
||
DataSource = "DDB1"
|
||
Type = float32
|
||
}
|
||
Mirnov9 = {
|
||
DataSource = "DDB1"
|
||
Type = float32
|
||
}
|
||
Mirnov10= {
|
||
DataSource = "DDB1"
|
||
Type = float32
|
||
}
|
||
Mirnov11 = {
|
||
DataSource = "DDB1"
|
||
Type = float32
|
||
}
|
||
Langmuir0 = {
|
||
DataSource = "DDB1"
|
||
Type = float32
|
||
}
|
||
Langmuir1 = {
|
||
DataSource = "DDB1"
|
||
Type = float32
|
||
}
|
||
Langmuir2 = {
|
||
DataSource = "DDB1"
|
||
Type = float32
|
||
}
|
||
Langmuir3 = {
|
||
DataSource = "DDB1"
|
||
Type = float32
|
||
}
|
||
MdsTime = {
|
||
DataSource = "DDB1"
|
||
Type = uint32
|
||
}
|
||
}
|
||
}
|
||
+GAMMDSWriter = {
|
||
Class = IOGAM
|
||
InputSignals = {
|
||
Mirnov0 = {
|
||
DataSource = "DDB1"
|
||
Type = float32
|
||
}
|
||
Langmuir0 = {
|
||
DataSource = "DDB1"
|
||
Type = float32
|
||
}
|
||
OutputSignalSSM = {
|
||
DataSource = "DDB1"
|
||
Type = float64
|
||
}
|
||
CycleTime = {
|
||
DataSource = Timings
|
||
Alias = Idle.Thread1_CycleTime
|
||
Type = uint32
|
||
}
|
||
}
|
||
OutputSignals = {
|
||
OutMdsW0 = {
|
||
DataSource = MDSWriter
|
||
Type = float32
|
||
}
|
||
OutMdsW1 = {
|
||
DataSource = MDSWriter
|
||
Type = float32
|
||
}
|
||
OutMdsW2 = {
|
||
DataSource = MDSWriter
|
||
Type = float64
|
||
}
|
||
CycleTime = {
|
||
DataSource = MDSWriter
|
||
Type = uint32
|
||
}
|
||
}
|
||
}
|
||
}
|
||
+Data = {
|
||
Class = ReferenceContainer
|
||
DefaultDataSource = DDB1
|
||
+DDB1 = {
|
||
Class = GAMDataSource
|
||
}
|
||
+LoggerDataSource = {
|
||
Class = LoggerDataSource
|
||
}
|
||
+Timings = {
|
||
Class = TimingDataSource
|
||
}
|
||
+Timer = {
|
||
Class = LinuxTimer
|
||
SleepNature = "Default"
|
||
ExecutionMode = RealTimeThread
|
||
Signals = {
|
||
Counter = {
|
||
Type = uint32
|
||
}
|
||
Time = {
|
||
Type = uint32
|
||
}
|
||
}
|
||
}
|
||
+MDSReader = {
|
||
Class = MDSReader
|
||
TreeName = "isttoksdas" //Compulsory. Name of the MDSplus tree.
|
||
//TreeName = "rtappwriter" //Compulsory. Name of the MDSplus tree.
|
||
ShotNumber = 46241//Compulsory. 0 –> last shot number (to use 0 shotid.sys must exist)
|
||
Frequency = 10000 // in Hz. Is the cycle time of the real time application.
|
||
Signals = {
|
||
MirnovMdsR0 = {
|
||
NodeName = "\TOP.HARDWARE.ATCA1.IOC_0.CHANNEL_0.RAW" // node of the tree node
|
||
// \TOP.HARDWARE.ATCA1.IOC_0.CHANNEL_0.RAW
|
||
Type = "float32" // 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
|
||
}
|
||
MirnovMdsR1 = {
|
||
NodeName = "\TOP.HARDWARE.ATCA1.IOC_0.CHANNEL_1.RAW" // node of the tree node
|
||
Type = "float32" // 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
|
||
}
|
||
MirnovMdsR2 = {
|
||
NodeName = "\TOP.HARDWARE.ATCA1.IOC_0.CHANNEL_2.RAW" // node of the tree node
|
||
Type = "float32" // 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
|
||
}
|
||
MirnovMdsR3 = {
|
||
NodeName = "\TOP.HARDWARE.ATCA1.IOC_0.CHANNEL_3.RAW" // node of the tree node
|
||
Type = "float32" // 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
|
||
}
|
||
MirnovMdsR4 = {
|
||
NodeName = "\TOP.HARDWARE.ATCA1.IOC_0.CHANNEL_4.RAW" // node of the tree node
|
||
Type = "float32" // 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
|
||
}
|
||
MirnovMdsR5 = {
|
||
NodeName = "\TOP.HARDWARE.ATCA1.IOC_0.CHANNEL_5.RAW" // node of the tree node
|
||
Type = "float32" // 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
|
||
}
|
||
MirnovMdsR6 = {
|
||
NodeName = "\TOP.HARDWARE.ATCA1.IOC_0.CHANNEL_6.RAW" // node of the tree node
|
||
Type = "float32" // 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
|
||
}
|
||
MirnovMdsR7 = {
|
||
NodeName = "\TOP.HARDWARE.ATCA1.IOC_0.CHANNEL_7.RAW" // node of the tree node
|
||
Type = "float32" // 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
|
||
}
|
||
MirnovMdsR8 = {
|
||
NodeName = "\TOP.HARDWARE.ATCA1.IOC_0.CHANNEL_8.RAW" // node of the tree node
|
||
Type = "float32" // 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
|
||
}
|
||
MirnovMdsR9 = {
|
||
NodeName = "\TOP.HARDWARE.ATCA1.IOC_0.CHANNEL_9.RAW" // node of the tree node
|
||
Type = "float32" // 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
|
||
}
|
||
MirnovMdsR10 = {
|
||
NodeName = "\TOP.HARDWARE.ATCA1.IOC_0.CHANNEL_10.RAW" // node of the tree node
|
||
Type = "float32" // 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
|
||
}
|
||
MirnovMdsR11 = {
|
||
NodeName = "\TOP.HARDWARE.ATCA1.IOC_0.CHANNEL_11.RAW" // node of the tree node
|
||
Type = "float32" // 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
|
||
}
|
||
LangmuirMdsR0 = {
|
||
NodeName = "\TOP.HARDWARE.ATCA1.IOC_1.CHANNEL_0.RAW" // node of the tree node
|
||
Type = "float32" // 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
|
||
}
|
||
LangmuirMdsR1 = {
|
||
NodeName = "\TOP.HARDWARE.ATCA1.IOC_1.CHANNEL_1.RAW" // node of the tree node
|
||
Type = "float32" // 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
|
||
}
|
||
LangmuirMdsR2 = {
|
||
NodeName = "\TOP.HARDWARE.ATCA1.IOC_1.CHANNEL_2.RAW" // node of the tree node
|
||
Type = "float32" // 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
|
||
}
|
||
LangmuirMdsR3 = {
|
||
NodeName = "\TOP.HARDWARE.ATCA1.IOC_1.CHANNEL_3.RAW" // node of the tree node
|
||
Type = "float32" // Can be any of the node supported types
|
||
NumberOfElements = 1
|
||
DataManagement = 0 //could be 0, 0 –> MDSReader takes the data from the tree as it is (raw). 1 or 2
|
||
HoleManagement = 1 //could be 0 or 1, 1-> fills the absence of data with the last value.
|
||
}
|
||
Time = { //Compulsory
|
||
Type = "uint32" //can be any of the supported types
|
||
NumberOfElements = 1 //must be always one.
|
||
}
|
||
}
|
||
}
|
||
+MDSWriter = {
|
||
Class = MDSWriter
|
||
NumberOfBuffers = 10 //Compulsory. Number of buffers in the circular buffer defined above. Each buffer is capable of holding a copy of all the DataSourceI signals.
|
||
CPUMask = 2 //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 = "isttokoutput" //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.
|
||
Signals = {
|
||
OutMdsW0 = { //As many as required.
|
||
NodeName = "\TOP.OUT.OUT0" // node of the tree node
|
||
Period = 0.0001 //Compulsory. Period between signal samples.
|
||
AutomaticSegmentation = 0
|
||
MakeSegmentAfterNWrites = 100
|
||
}
|
||
OutMdsW1 = { //As many as required.
|
||
NodeName = "\TOP.OUT.OUT1"
|
||
Period = 0.0001
|
||
AutomaticSegmentation = 1
|
||
// MakeSegmentAfterNWrites = 100
|
||
}
|
||
OutMdsW2 = {
|
||
NodeName = "\TOP.OUT.OUT2"
|
||
Period = 0.0001
|
||
AutomaticSegmentation = 0
|
||
MakeSegmentAfterNWrites = 100
|
||
}
|
||
CycleTime = { //As many as required.
|
||
NodeName = "\TOP.OUT.Cycle_Time" // node of the tree node
|
||
Period = 0.0001
|
||
AutomaticSegmentation = 0
|
||
MakeSegmentAfterNWrites = 100
|
||
}
|
||
}
|
||
}
|
||
}
|
||
+States = {
|
||
Class = ReferenceContainer
|
||
+Idle = {
|
||
Class = RealTimeState
|
||
+Threads = {
|
||
Class = ReferenceContainer
|
||
+Thread1 = {
|
||
Class = RealTimeThread
|
||
CPUs = 0x1
|
||
Functions = {GAMTimer GAMWF1}
|
||
}
|
||
}
|
||
}
|
||
+Online = {
|
||
Class = RealTimeState
|
||
+Threads = {
|
||
Class = ReferenceContainer
|
||
+Thread1 = {
|
||
Class = RealTimeThread
|
||
CPUs = 0x1
|
||
Functions = {GAMTimer GAMWF1 GAMMDSReader GAMConvert2Double GAMLangSigs GAMElectricProbes GAMSSM GAMMDSWriter}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
+Scheduler = {
|
||
Class = GAMScheduler
|
||
TimingDataSource = Timings
|
||
}
|
||
}
|
||
// vim: syntax=cpp ts=4 sw=4 sts=4 sr et
|