+LoggerService = { Class = LoggerService CPUs = 0x1 StackSize = 32768 NumberOfLogPages = 128 +ConLogger = { Class = ConsoleLogger Format = "EtOoFmC" PrintKeys = 1 } } +StateMachine = { Class = StateMachine +INITIAL = { Class = ReferenceContainer +START = { Class = StateMachineEvent NextState = "RUNNING" NextStateError = "ERROR" +PrepareNextStateOnOurRTApp = { Class = Message Destination = MyDemoApp Mode = ExpectsReply Function = PrepareNextState +Parameters = { Class = ConfigurationDatabase param1 = State1 } } +StartNextStateExecutionMsg = { Class = Message Destination = MyDemoApp Function = StartNextStateExecution Mode = ExpectsReply } } } +RUNNING = { Class = ReferenceContainer +LOCKEDFOREVER = { Class = StateMachineEvent NextState = RUNNING NextStateError = ERROR } } +ERROR = { Class = ReferenceContainer +LOCKEDFOREVER = { Class = StateMachineEvent NextState = ERROR NextStateError = ERROR } } } +MyDemoApp = { Class = RealTimeApplication +Functions = { Class = ReferenceContainer +GAMTimer = { Class = IOGAM InputSignals = { Time = { DataSource = Timer Type = uint32 } Counter = { DataSource = Timer Type = uint32 Frequency = 1 //in Hz. Cycle for one state execution. } RTThreadPerf = { DataSource = Timings Alias = "State1.Thread1_CycleTime" Type = uint32 } } OutputSignals = { Time = { DataSource = DDB1 Type = uint32 } Counter = { DataSource = DDB1 Type = uint32 } RTThreadPerf = { DataSource = DDB1 Type = uint32 } } } +GAMEPICSCA = { Class = IOGAM InputSignals = { doValue = { DataSource = EPICSCAInput Type = uint8 } } OutputSignals = { Value = { DataSource = DDB1 Type = uint8 } } } +GAMDebug = { Class = IOGAM InputSignals = { Value = { DataSource = DDB1 Type = uint8 } } OutputSignals = { Value = { DataSource = NI6528 Type = uint8 } } } } +Data = { Class = ReferenceContainer DefaultDataSource = DDB1 +DDB1 = { Class = GAMDataSource } +Timer = { Class = LinuxTimer SleepNature = "Busy" SleepPercentage = 0 ExecutionMode = RealTimeThread CPUMask = 0x1 Signals = { Counter = { Type = uint32 } Time = { Type = uint32 } } } +NI6528 = { Class = NI6528 DeviceName = "/dev/pxi6528.0" Port = 3 Value = { Counter = { Type = uint8 } } } +EPICSCAInput = { Class = "EPICSCA::EPICSCAInput" CPUMask = "1" StackSize = "10000000" Signals = { doValue = { PVName = "test:doValue" } } } +Display = { Class = LoggerDataSource } +Timings = { Class = TimingDataSource } } +States = { Class = ReferenceContainer +State1 = { Class = RealTimeState +Threads = { Class = ReferenceContainer +Thread1 = { Class = RealTimeThread Functions = {GAMTimer GAMEPICSCA GAMDebug} CPUMask = 0x1 } } } } +Scheduler = { Class = GAMScheduler TimingDataSource = Timings } }