+StateMachine = { Class = StateMachine +INITIAL = { Class = ReferenceContainer +Start = { Class = StateMachineEvent NextState = "WAITSTANDBY" NextStateError = "WAITSTANDBY" +PrepareNextStateMsg = { Class = Message Destination = JAGyrotronRTApp Mode = ExpectsReply Function = PrepareNextState +Parameters = { Class = ConfigurationDatabase param1 = WaitStandby } } +StartNextStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StartNextStateExecution Mode = ExpectsReply } } } +WAITSTANDBY = { Class = ReferenceContainer +Stay = { Class = StateMachineEvent NextState = "WAITSTANDBY" NextStateError = "WAITSTANDBY" +StopCurrentStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StopCurrentStateExecution Mode = ExpectsReply } +PrepareNextStateMsg = { Class = Message Destination = JAGyrotronRTApp Mode = ExpectsReply Function = PrepareNextState +Parameters = { Class = ConfigurationDatabase param1 = WaitStandby } } +StartNextStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StartNextStateExecution Mode = ExpectsReply } } } } +JAGyrotronRTApp = { Class = RealTimeApplication +Functions = { Class = ReferenceContainer +GAMSDNSubCommand = { Class = IOGAM InputSignals = { Command = { DataSource = SDNSubCommands Type = uint16 NumberOfDimensions = 1 NumberOfElements = 64 Ranges = {{0 0}} Frequency = 1 } ESDNTime = { DataSource = SDNSubCommands Type = uint32 NumberOfDimensions = 1 NumberOfElements = 1 } ESDNTimeDisplay = { Alias = ESDNTime DataSource = SDNSubCommands Type = uint32 NumberOfDimensions = 1 NumberOfElements = 1 } } OutputSignals = { Command = { DataSource = Display Type = uint16 } ESDNTime = { DataSource = DDB1 Type = uint32 } ESDNTimeDisplay = { DataSource = Display Type = uint32 } } } +GAMSDNSubWaveform = { Class = IOGAM InputSignals = { GYA_FHPS_SP = { DataSource = SDNSubWaveform Type = float32 NumberOfDimensions = 1 NumberOfElements = 1 } GYA_MCPS_SP = { DataSource = SDNSubWaveform Type = float32 NumberOfDimensions = 1 NumberOfElements = 1 } GYA_CCPS_SP = { DataSource = SDNSubWaveform Type = float32 NumberOfDimensions = 1 NumberOfElements = 1 } MHVPS_SP = { DataSource = SDNSubWaveform Type = float32 NumberOfDimensions = 1 NumberOfElements = 1 } GYA_BPS_SP = { DataSource = SDNSubWaveform Type = float32 NumberOfDimensions = 1 NumberOfElements = 1 } GYA_APS_SP = { DataSource = SDNSubWaveform Type = float32 NumberOfDimensions = 1 NumberOfElements = 1 } WaveformPacketIDFor1kHz = { DataSource = SDNSubWaveform Alias = WaveformPacketID Type = uint16 } } OutputSignals = { GYA_FHPS_SP = { DataSource = DDB1 Type = float32 } GYA_MCPS_SP = { DataSource = DDB1 Type = float32 } GYA_CCPS_SP = { DataSource = DDB1 Type = float32 } MHVPS_SP = { DataSource = DDB1 Type = float32 } GYA_BPS_SP = { DataSource = DDB1 Type = float32 } GYA_APS_SP = { DataSource = DDB1 Type = float32 } WaveformPacketIDFor1kHz = { DataSource = DDB1 Alias = WaveformPacketID Type = uint16 } } } +GAMReply = { Class = IOGAM InputSignals = { ESDNTime = { DataSource = DDB1 Type = uint32 } WaveformPacketID = { DataSource = DDB1 Type = uint16 } } OutputSignals = { ESDNTime = { DataSource = SDNReply Type = uint32 Trigger = 1 } ReplyWaveformAck = { DataSource = SDNReply Type = uint16 } } } } +Data = { Class = ReferenceContainer DefaultDataSource = DDB1 +DDB1 = { Class = GAMDataSource } +Timings = { Class = TimingDataSource } +Display = { Class = LoggerDataSource } +SDNSubCommands = { Class = SDN::SDNSubscriber Topic = ECPC2SCUJA Interface = lo CPUs = 0x2 Locked = 1 Timeout = 1000 // TODO: change to 1 ms Signals = { Header = { Type = uint8 NumberOfDimensions = 1 NumberOfElements = 48 } ESDNHeaderVersionId = { Type = uint8 NumberOfDimensions = 1 NumberOfElements = 1 } ESDNHeaderSize = { Type = uint8 NumberOfDimensions = 1 NumberOfElements = 1 } ESDNStatus = { Type = uint8 NumberOfDimensions = 1 NumberOfElements = 1 } ESDNDoNotUse = { Type = uint8 NumberOfDimensions = 1 NumberOfElements = 1 } ESDNTime = { Type = uint32 NumberOfDimensions = 1 NumberOfElements = 1 } Command = { Type = uint16 NumberOfDimensions = 1 NumberOfElements = 64 } } } +SDNReply = { Class = SDN::SDNPublisher Topic = SCUJA2ECPC Interface = lo CPUs = 0x8 Locked = 1 Signals = { Header = { Type = uint8 NumberOfElements = 48 } ESDNHeaderVersionId = { Type = uint8 NumberOfDimensions = 1 NumberOfElements = 1 } ESDNHeaderSize = { Type = uint8 NumberOfDimensions = 1 NumberOfElements = 1 } ESDNStatus = { Type = uint8 NumberOfDimensions = 1 NumberOfElements = 1 } ESDNDoNotUse = { Type = uint8 NumberOfDimensions = 1 NumberOfElements = 1 } ESDNTime = { Type = uint32 NumberOfDimensions = 1 NumberOfElements = 1 } ReplyStatus = { Type = uint16 NumberOfDimensions = 1 NumberOfElements = 1 } ReplyWaveformAck = { Type = uint16 NumberOfDimensions = 1 NumberOfElements = 1 } } } +SDNSubWaveform = { Class = SDN::SDNSubscriber Topic = ECPC2SCUJAWF Interface = lo Locked = 1 Timeout = 1000 // TODO: change to 1 ms Signals = { Header = { Type = uint8 NumberOfElements = 48 } ESDNHeaderVersionId = { Type = uint8 NumberOfDimensions = 1 NumberOfElements = 1 } ESDNHeaderSize = { Type = uint8 NumberOfDimensions = 1 NumberOfElements = 1 } ESDNStatus = { Type = uint8 NumberOfDimensions = 1 NumberOfElements = 1 } ESDNDoNotUse = { Type = uint8 NumberOfDimensions = 1 NumberOfElements = 1 } ESDNTime = { Type = uint32 NumberOfDimensions = 1 NumberOfElements = 1 } WaveformPacketID = { Type = uint16 NumberOfDimensions = 1 NumberOfElements = 1 } GYA_MCPS_SP = { Type = float32 NumberOfDimensions = 1 NumberOfElements = 1 } GYA_CCPS_SP = { Type = float32 NumberOfDimensions = 1 NumberOfElements = 1 } MHVPS_SP = { Type = float32 NumberOfDimensions = 1 NumberOfElements = 1 } GYA_BPS_SP = { Type = float32 NumberOfDimensions = 1 NumberOfElements = 1 } GYA_APS_SP = { Type = float32 NumberOfDimensions = 1 NumberOfElements = 1 } } } } +States = { Class = ReferenceContainer +WaitStandby = { Class = RealTimeState +Threads = { Class = ReferenceContainer +Thread1 = { Class = RealTimeThread Functions = {GAMSDNSubCommand GAMSDNSubWaveform GAMReply} CPUs = 0x1 } } } } +Scheduler = { Class = GAMScheduler TimingDataSource = Timings } }