+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 = { //Time attribute is updated with us resolution. DataSource = Timer Type = uint32 } Counter = { DataSource = Timer Type = uint32 Frequency = 10 //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 } } } +TimerDisplayGAM = { Class = IOGAM InputSignals = { Time = { DataSource = DDB1 Type = uint32 } Counter = { DataSource = DDB1 Type = uint32 } } OutputSignals = { TimeDISP = { DataSource = Display Type = uint32 } CounterDISP = { DataSource = Display Type = uint32 } } } } +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 } } } +Display = { Class = LoggerDataSource } +Timings = { Class = TimingDataSource } } +States = { Class = ReferenceContainer +State1 = { Class = RealTimeState +Threads = { Class = ReferenceContainer +Thread1 = { Class = RealTimeThread Functions = {GAMTimer TimerDisplayGAM} CPUMask = 0x1 } } } } +Scheduler = { Class = GAMScheduler TimingDataSource = Timings } }