// +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 } } } //EPICS PV read GAM +PV2DDB1GAM = { Class = IOGAM InputSignals = { ni6259d0p0do0 = { DataSource = EPICSCAInput Type = uint32 } ni6259d0p0do1 = { DataSource = EPICSCAInput Type = uint32 } ni6259d0p0do2 = { DataSource = EPICSCAInput Type = uint32 } ni6259d0p0do3 = { DataSource = EPICSCAInput Type = uint32 } ni6259d0p0do4 = { DataSource = EPICSCAInput Type = uint32 } ni6259d0p0do5 = { DataSource = EPICSCAInput Type = uint32 } ni6259d0p0do6 = { DataSource = EPICSCAInput Type = uint32 } ni6259d0p0do7 = { DataSource = EPICSCAInput Type = uint32 } ni6528d0p3do0 = { DataSource = EPICSCAInput Type = uint32 } ni6528d0p3do1 = { DataSource = EPICSCAInput Type = uint32 } ni6528d0p3do2 = { DataSource = EPICSCAInput Type = uint32 } ni6528d0p3do3 = { DataSource = EPICSCAInput Type = uint32 } ni6528d0p3do4 = { DataSource = EPICSCAInput Type = uint32 } ni6528d0p3do5 = { DataSource = EPICSCAInput Type = uint32 } ni6528d0p3do6 = { DataSource = EPICSCAInput Type = uint32 } ni6528d0p3do7 = { DataSource = EPICSCAInput Type = uint32 } ni6528d0p4do0 = { DataSource = EPICSCAInput Type = uint32 } ni6528d0p4do1 = { DataSource = EPICSCAInput Type = uint32 } ni6528d0p4do2 = { DataSource = EPICSCAInput Type = uint32 } ni6528d0p4do3 = { DataSource = EPICSCAInput Type = uint32 } ni6528d0p4do4 = { DataSource = EPICSCAInput Type = uint32 } ni6528d0p4do5 = { DataSource = EPICSCAInput Type = uint32 } ni6528d0p4do6 = { DataSource = EPICSCAInput Type = uint32 } ni6528d0p4do7 = { DataSource = EPICSCAInput Type = uint32 } ni6259d1p0do0 = { DataSource = EPICSCAInput Type = uint32 } ni6259d1p0do1 = { DataSource = EPICSCAInput Type = uint32 } ni6259d1p0do2 = { DataSource = EPICSCAInput Type = uint32 } ni6259d1p0do3 = { DataSource = EPICSCAInput Type = uint32 } ni6259d1p0do4 = { DataSource = EPICSCAInput Type = uint32 } ni6259d1p0do5 = { DataSource = EPICSCAInput Type = uint32 } ni6259d1p0do6 = { DataSource = EPICSCAInput Type = uint32 } ni6259d1p0do7 = { DataSource = EPICSCAInput Type = uint32 } ni6528d1p3do0 = { DataSource = EPICSCAInput Type = uint32 } ni6528d1p3do1 = { DataSource = EPICSCAInput Type = uint32 } ni6528d1p3do2 = { DataSource = EPICSCAInput Type = uint32 } ni6528d1p3do3 = { DataSource = EPICSCAInput Type = uint32 } ni6528d1p3do4 = { DataSource = EPICSCAInput Type = uint32 } ni6528d1p3do5 = { DataSource = EPICSCAInput Type = uint32 } ni6528d1p3do6 = { DataSource = EPICSCAInput Type = uint32 } ni6528d1p3do7 = { DataSource = EPICSCAInput Type = uint32 } ni6528d1p4do0 = { DataSource = EPICSCAInput Type = uint32 } ni6528d1p4do1 = { DataSource = EPICSCAInput Type = uint32 } ni6528d1p4do2 = { DataSource = EPICSCAInput Type = uint32 } ni6528d1p4do3 = { DataSource = EPICSCAInput Type = uint32 } ni6528d1p4do4 = { DataSource = EPICSCAInput Type = uint32 } ni6528d1p4do5 = { DataSource = EPICSCAInput Type = uint32 } ni6528d1p4do6 = { DataSource = EPICSCAInput Type = uint32 } ni6528d1p4do7 = { DataSource = EPICSCAInput Type = uint32 } } OutputSignals = { ni6259d0p0do0 = { DataSource = DDB1 Type = uint32 } ni6259d0p0do1 = { DataSource = DDB1 Type = uint32 } ni6259d0p0do2 = { DataSource = DDB1 Type = uint32 } ni6259d0p0do3 = { DataSource = DDB1 Type = uint32 } ni6259d0p0do4 = { DataSource = DDB1 Type = uint32 } ni6259d0p0do5 = { DataSource = DDB1 Type = uint32 } ni6259d0p0do6 = { DataSource = DDB1 Type = uint32 } ni6259d0p0do7 = { DataSource = DDB1 Type = uint32 } ni6528d0p3do0 = { DataSource = DDB1 Type = uint32 } ni6528d0p3do1 = { DataSource = DDB1 Type = uint32 } ni6528d0p3do2 = { DataSource = DDB1 Type = uint32 } ni6528d0p3do3 = { DataSource = DDB1 Type = uint32 } ni6528d0p3do4 = { DataSource = DDB1 Type = uint32 } ni6528d0p3do5 = { DataSource = DDB1 Type = uint32 } ni6528d0p3do6 = { DataSource = DDB1 Type = uint32 } ni6528d0p3do7 = { DataSource = DDB1 Type = uint32 } ni6528d0p4do0 = { DataSource = DDB1 Type = uint32 } ni6528d0p4do1 = { DataSource = DDB1 Type = uint32 } ni6528d0p4do2 = { DataSource = DDB1 Type = uint32 } ni6528d0p4do3 = { DataSource = DDB1 Type = uint32 } ni6528d0p4do4 = { DataSource = DDB1 Type = uint32 } ni6528d0p4do5 = { DataSource = DDB1 Type = uint32 } ni6528d0p4do6 = { DataSource = DDB1 Type = uint32 } ni6528d0p4do7 = { DataSource = DDB1 Type = uint32 } ni6259d1p0do0 = { DataSource = DDB1 Type = uint32 } ni6259d1p0do1 = { DataSource = DDB1 Type = uint32 } ni6259d1p0do2 = { DataSource = DDB1 Type = uint32 } ni6259d1p0do3 = { DataSource = DDB1 Type = uint32 } ni6259d1p0do4 = { DataSource = DDB1 Type = uint32 } ni6259d1p0do5 = { DataSource = DDB1 Type = uint32 } ni6259d1p0do6 = { DataSource = DDB1 Type = uint32 } ni6259d1p0do7 = { DataSource = DDB1 Type = uint32 } ni6528d1p3do0 = { DataSource = DDB1 Type = uint32 } ni6528d1p3do1 = { DataSource = DDB1 Type = uint32 } ni6528d1p3do2 = { DataSource = DDB1 Type = uint32 } ni6528d1p3do3 = { DataSource = DDB1 Type = uint32 } ni6528d1p3do4 = { DataSource = DDB1 Type = uint32 } ni6528d1p3do5 = { DataSource = DDB1 Type = uint32 } ni6528d1p3do6 = { DataSource = DDB1 Type = uint32 } ni6528d1p3do7 = { DataSource = DDB1 Type = uint32 } ni6528d1p4do0 = { DataSource = DDB1 Type = uint32 } ni6528d1p4do1 = { DataSource = DDB1 Type = uint32 } ni6528d1p4do2 = { DataSource = DDB1 Type = uint32 } ni6528d1p4do3 = { DataSource = DDB1 Type = uint32 } ni6528d1p4do4 = { DataSource = DDB1 Type = uint32 } ni6528d1p4do5 = { DataSource = DDB1 Type = uint32 } ni6528d1p4do6 = { DataSource = DDB1 Type = uint32 } ni6528d1p4do7 = { DataSource = DDB1 Type = uint32 } } } //HW Write GAMs //NI6259 uses uint32, so it is not able to use BitSumGAM +NI6259D0P0GAM = { Class = JABitSumGAM InputSignals = { ni6259d0p0do0 = { DataSource = DDB1 Type = uint32 } ni6259d0p0do1 = { DataSource = DDB1 Type = uint32 } ni6259d0p0do2 = { DataSource = DDB1 Type = uint32 } ni6259d0p0do3 = { DataSource = DDB1 Type = uint32 } ni6259d0p0do4 = { DataSource = DDB1 Type = uint32 } ni6259d0p0do5 = { DataSource = DDB1 Type = uint32 } ni6259d0p0do6 = { DataSource = DDB1 Type = uint32 } ni6259d0p0do7 = { DataSource = DDB1 Type = uint32 } } OutputSignals = { NI6259D0P0Value = { DataSource = Display Type = uint8 } } } +NI6528D0P3GAM = { Class = JABitSumGAM InputSignals = { ni6528d0p3do0 = { DataSource = DDB1 Type = uint32 } ni6528d0p3do1 = { DataSource = DDB1 Type = uint32 } ni6528d0p3do2 = { DataSource = DDB1 Type = uint32 } ni6528d0p3do3 = { DataSource = DDB1 Type = uint32 } ni6528d0p3do4 = { DataSource = DDB1 Type = uint32 } ni6528d0p3do5 = { DataSource = DDB1 Type = uint32 } ni6528d0p3do6 = { DataSource = DDB1 Type = uint32 } ni6528d0p3do7 = { DataSource = DDB1 Type = uint32 } } OutputSignals = { NI6528D0P3Value = { DataSource = Display Type = uint8 } } } +NI6528D0P4GAM = { Class = JABitSumGAM InputSignals = { ni6528d0p4do0 = { DataSource = DDB1 Type = uint32 } ni6528d0p4do1 = { DataSource = DDB1 Type = uint32 } ni6528d0p4do2 = { DataSource = DDB1 Type = uint32 } ni6528d0p4do3 = { DataSource = DDB1 Type = uint32 } ni6528d0p4do4 = { DataSource = DDB1 Type = uint32 } ni6528d0p4do5 = { DataSource = DDB1 Type = uint32 } ni6528d0p4do6 = { DataSource = DDB1 Type = uint32 } ni6528d0p4do7 = { DataSource = DDB1 Type = uint32 } } OutputSignals = { NI6528D0P4Value = { DataSource = Display Type = uint8 } } } //NI6259 uses uint32, so it is not able to use BitSumGAM +NI6259D1P0GAM = { Class = JABitSumGAM InputSignals = { ni6259d1p0do0 = { DataSource = DDB1 Type = uint32 } ni6259d1p0do1 = { DataSource = DDB1 Type = uint32 } ni6259d1p0do2 = { DataSource = DDB1 Type = uint32 } ni6259d1p0do3 = { DataSource = DDB1 Type = uint32 } ni6259d1p0do4 = { DataSource = DDB1 Type = uint32 } ni6259d1p0do5 = { DataSource = DDB1 Type = uint32 } ni6259d1p0do6 = { DataSource = DDB1 Type = uint32 } ni6259d1p0do7 = { DataSource = DDB1 Type = uint32 } } OutputSignals = { NI6259D1P0Value = { DataSource = Display Type = uint8 } } } +NI6528D1P3GAM = { Class = JABitSumGAM InputSignals = { ni6528d1p3do0 = { DataSource = DDB1 Type = uint32 } ni6528d1p3do1 = { DataSource = DDB1 Type = uint32 } ni6528d1p3do2 = { DataSource = DDB1 Type = uint32 } ni6528d1p3do3 = { DataSource = DDB1 Type = uint32 } ni6528d1p3do4 = { DataSource = DDB1 Type = uint32 } ni6528d1p3do5 = { DataSource = DDB1 Type = uint32 } ni6528d1p3do6 = { DataSource = DDB1 Type = uint32 } ni6528d1p3do7 = { DataSource = DDB1 Type = uint32 } } OutputSignals = { NI6528D1P3Value = { DataSource = Display Type = uint8 } } } +NI6528D1P4GAM = { Class = JABitSumGAM InputSignals = { ni6528d1p4do0 = { DataSource = DDB1 Type = uint32 } ni6528d1p4do1 = { DataSource = DDB1 Type = uint32 } ni6528d1p4do2 = { DataSource = DDB1 Type = uint32 } ni6528d1p4do3 = { DataSource = DDB1 Type = uint32 } ni6528d1p4do4 = { DataSource = DDB1 Type = uint32 } ni6528d1p4do5 = { DataSource = DDB1 Type = uint32 } ni6528d1p4do6 = { DataSource = DDB1 Type = uint32 } ni6528d1p4do7 = { DataSource = DDB1 Type = uint32 } } OutputSignals = { NI6528D1P4Value = { DataSource = Display 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 } } } /**** +NI6259D1P0 = { Class = NI6259::NI6259DIO DeviceName = "/dev/pxi6259" BoardId = 1 Signals = { NI6269D1P0Value = { Type = uint32 Mask = 0xFF PortId = 0 } } } +NI6528D1P3 = { Class = NI6528 DeviceName = "/dev/pxi6528.1" Port = 3 Value = { NI6528D1P3Value = { Type = uint32 } } } +NI6528D1P4 = { Class = NI6528 DeviceName = "/dev/pxi6528.1" Port = 4 Value = { NI6528D1P4Value = { Type = uint32 } } } +NI6259D0P0 = { Class = NI6259::NI6259DIO DeviceName = "/dev/pxi6259" BoardId = 0 Signals = { NI6259D0P0Value = { Type = uint32 Mask = 0xFF PortId = 0 } } } +NI6528D0P3 = { Class = NI6528 DeviceName = "/dev/pxi6528.0" Port = 3 Value = { NI6528D0P3Value = { Type = uint32 } } } +NI6528D0P4 = { Class = NI6528 DeviceName = "/dev/pxi6528.0" Port = 4 Value = { NI6528D0P4Value = { Type = uint32 } } } ***/ +EPICSCAInput = { Class = "EPICSCA::EPICSCAInput" CPUMask = "1" StackSize = "10000000" Signals = { // NI6259 DO PVs ni6259d0p0do0 = { PVName = "ni6259:d0:p0:do0" Type = uint32 } ni6259d0p0do1 = { PVName = "ni6259:d0:p0:do1" Type = uint32 } ni6259d0p0do2 = { PVName = "ni6259:d0:p0:do2" Type = uint32 } ni6259d0p0do3 = { PVName = "ni6259:d0:p0:do3" Type = uint32 } ni6259d0p0do4 = { PVName = "ni6259:d0:p0:do4" Type = uint32 } ni6259d0p0do5 = { PVName = "ni6259:d0:p0:do5" Type = uint32 } ni6259d0p0do6 = { PVName = "ni6259:d0:p0:do6" Type = uint32 } ni6259d0p0do7 = { PVName = "ni6259:d0:p0:do7" Type = uint32 } // NI6528P3 PVs ni6528d0p3do0 = { PVName = "ni6528:d0:p3:do0" Type = uint32 } ni6528d0p3do1 = { PVName = "ni6528:d0:p3:do1" Type = uint32 } ni6528d0p3do2 = { PVName = "ni6528:d0:p3:do2" Type = uint32 } ni6528d0p3do3 = { PVName = "ni6528:d0:p3:do3" Type = uint32 } ni6528d0p3do4 = { PVName = "ni6528:d0:p3:do4" Type = uint32 } ni6528d0p3do5 = { PVName = "ni6528:d0:p3:do5" Type = uint32 } ni6528d0p3do6 = { PVName = "ni6528:d0:p3:do6" Type = uint32 } ni6528d0p3do7 = { PVName = "ni6528:d0:p3:do7" Type = uint32 } //NI6528P4 PVs ni6528d0p4do0 = { PVName = "ni6528:d0:p4:do0" Type = uint32 } ni6528d0p4do1 = { PVName = "ni6528:d0:p4:do1" Type = uint32 } ni6528d0p4do2 = { PVName = "ni6528:d0:p4:do2" Type = uint32 } ni6528d0p4do3 = { PVName = "ni6528:d0:p4:do3" Type = uint32 } ni6528d0p4do4 = { PVName = "ni6528:d0:p4:do4" Type = uint32 } ni6528d0p4do5 = { PVName = "ni6528:d0:p4:do5" Type = uint32 } ni6528d0p4do6 = { PVName = "ni6528:d0:p4:do6" Type = uint32 } ni6528d0p4do7 = { PVName = "ni6528:d0:p4:do7" Type = uint32 } // NI6259 DO PVs ni6259d1p0do0 = { PVName = "ni6259:d1:p0:do0" Type = uint32 } ni6259d1p0do1 = { PVName = "ni6259:d1:p0:do1" Type = uint32 } ni6259d1p0do2 = { PVName = "ni6259:d1:p0:do2" Type = uint32 } ni6259d1p0do3 = { PVName = "ni6259:d1:p0:do3" Type = uint32 } ni6259d1p0do4 = { PVName = "ni6259:d1:p0:do4" Type = uint32 } ni6259d1p0do5 = { PVName = "ni6259:d1:p0:do5" Type = uint32 } ni6259d1p0do6 = { PVName = "ni6259:d1:p0:do6" Type = uint32 } ni6259d1p0do7 = { PVName = "ni6259:d1:p0:do7" Type = uint32 } // NI6528P3 PVs ni6528d1p3do0 = { PVName = "ni6528:d1:p3:do0" Type = uint32 } ni6528d1p3do1 = { PVName = "ni6528:d1:p3:do1" Type = uint32 } ni6528d1p3do2 = { PVName = "ni6528:d1:p3:do2" Type = uint32 } ni6528d1p3do3 = { PVName = "ni6528:d1:p3:do3" Type = uint32 } ni6528d1p3do4 = { PVName = "ni6528:d1:p3:do4" Type = uint32 } ni6528d1p3do5 = { PVName = "ni6528:d1:p3:do5" Type = uint32 } ni6528d1p3do6 = { PVName = "ni6528:d1:p3:do6" Type = uint32 } ni6528d1p3do7 = { PVName = "ni6528:d1:p3:do7" Type = uint32 } //NI6528P4 PVs ni6528d1p4do0 = { PVName = "ni6528:d1:p4:do0" Type = uint32 } ni6528d1p4do1 = { PVName = "ni6528:d1:p4:do1" Type = uint32 } ni6528d1p4do2 = { PVName = "ni6528:d1:p4:do2" Type = uint32 } ni6528d1p4do3 = { PVName = "ni6528:d1:p4:do3" Type = uint32 } ni6528d1p4do4 = { PVName = "ni6528:d1:p4:do4" Type = uint32 } ni6528d1p4do5 = { PVName = "ni6528:d1:p4:do5" Type = uint32 } ni6528d1p4do6 = { PVName = "ni6528:d1:p4:do6" Type = uint32 } ni6528d1p4do7 = { PVName = "ni6528:d1:p4:do7" Type = uint32 } } } +Display = { Class = LoggerDataSource } +Timings = { Class = TimingDataSource } } +States = { Class = ReferenceContainer +State1 = { Class = RealTimeState +Threads = { Class = ReferenceContainer +Thread1 = { Class = RealTimeThread Functions = {GAMTimer PV2DDB1GAM NI6259D0P0GAM NI6528D0P3GAM NI6528D0P4GAM NI6259D1P0GAM NI6528D1P3GAM NI6528D1P4GAM } CPUMask = 0x1 } } } } +Scheduler = { Class = GAMScheduler TimingDataSource = Timings } }