LoggerAddress = "localhost"
LoggerPort = 32767
DefaultCPUs = 1
Version = "$Id: MARTe-WaterTank.cfg,v 1.5 2010/04/20 15:42:02 ppcc_dev Exp $"
+WEB = {
    Class = HttpGroupResource
    +BROWSE = {
        Title = "Http Object Browser"
        Class = HttpGCRCBrowser
        AddReference = {MARTe StateMachine OBJBROWSE THRBROWSE CFGUpload HTTPSignalServer MatlabSignalServer FlotPlot}
    }
	+RGRAPH_LIB_DIR = {
		Class   = HttpDirectoryResource
		BaseDir = "../3rdPartyLibs/RGraph/libraries"
	}
	+PLOTTING_GAM_DIR = {
		Class   = HttpDirectoryResource
		BaseDir = "../GAMs/PlottingGAM"
	}
        +FLOT_DIR = {
		Class   = HttpDirectoryResource
		BaseDir = "../3rdPartyLibs/flot"
	}
}
+HTTPSERVER = {
	Class = HttpService
	VerboseLevel = 10
	Port = 8085
	HttpRelayURL = "ignore.me:1234"
	Root = WEB
}
+OBJBROWSE = {
	Class = HttpClassListResource
}
+THRBROWSE = {
	Class = HttpThreadListResource
}
+MatlabSignalServer = {
	Class = MATLABHandler
}
+FlotPlot = {
	Class = FlotPlot
}
+HTTPSignalServer = {
	Class = SignalServer
}
+CFGUpload = {
	Class = CFGUploader
}
+TCPMessageHandler = {
    Class      = TCPMessageHandler
    ServerPort = 9090
    //CPUMask    = 8
}
+TCPConfigurationHandler = {
    Class      = TCPConfigurationHandler
    ServerPort = 10010
    //CPUMask    = 8
    MARTeLocation = MARTe
}
+StateMachine = {
	Class = StateMachine
	VerboseLevel = 10
	+OFF = {
		Class = StateMachineState
		StateCode = 0x0
		+START = {
			Class = StateMachineEvent
			Value = START
			NextState = READY
			+SWITCH_ON = {
				Class = MessageDeliveryRequest
				MsecTimeOut = 1000
				Sender = StateMachine
				Destinations = "HTTPSERVER MARTe"
				Flags = NoReply
				Message = {
					Class = Message
					Content = START
				}
			}
		}
	}
	+READY = {
		Class = StateMachineState
		StateCode = 0x500
		+START_PULSE_SEQUENCE = {
			Class = StateMachineEvent
			NextState = INITIALISING
			Code = 0x701
			+NOTIFY = {
				Class = MessageEnvelope
				Sender = StateMachine
				Destination = MARTe
				+MESSAGE = {
					Class = Message
					Content = PREPULSECHECK
				}
			}
			+UPDATE_MSS = {
				Class = MessageEnvelope
				Destination = MatlabSignalServer
				+MESSAGE = {
					Class = Message
					Content = AUTODETECT
				}
			}
			+UPDATE_SS = {
				Class = MessageEnvelope
				Destination = HTTPSignalServer
				+MESSAGE = {
					Class = Message
					Content = AUTODETECT
				}
			}
			+UPDATE_FLOT = {
				Class = MessageEnvelope
				Destination = FlotPlot
				+MESSAGE = {
					Class = Message
					Content = AUTODETECT
				}
			}
		}
		+UNRECOVERABLE = {
			Class = StateMachineEvent
			NextState = UNRECOVERABLE
			Code = 0x776
		}
		+CONFIG_ERROR = {
			Class = StateMachineEvent
			NextState = CONFIG_ERROR
			Code = 0x777
		}
		+CONFIG_OK = {
			Class = StateMachineEvent
			NextState = SAMESTATE
			Code = 0x778
			+NOTIFY = {
				Class = MessageEnvelope
				Sender = StateMachine
				Destination = COULD.BE.A.MIMIC
				+SENDSTATE = {
					Class = Message
					Code = 0x500
				}
			}
		}
		+SWITCH_OFF = {
			Class = StateMachineEvent
			Value = STOP
			NextState = READY
			Code = 0x005
			+STOPALL = {
				Class = MessageDeliveryRequest
				MsecTimeOut = 1000
				Sender = StateMachine
				Destinations = "HTTPSERVER MARTe"
				Flags = NoReply
				Message = {
					Class = Message
					Content = STOP
				}
			}
		}
	}
	+INITIALISING = {
		Class = StateMachineState
		StateCode = 0x508
		+PRE_PULSE_CHECKS_FINISHED = {
			Class = StateMachineEvent
			NextState = INITIALISED
			Code = 0x705
		}
		+ABORT = {
			Class = StateMachineEvent
			NextState = READY
			Code = 0x702
			+NOTIFY = {
				Class = MessageEnvelope
				Sender = StateMachine
				Destination = MARTe
				+MESSAGE = {
					Class = Message
					Content = PULSESTOP
				}
			}
		}
	}
	+INITIALISED = {
		Class = StateMachineState
		StateCode = 0x504
		+START_PULSE = {
			Class = StateMachineEvent
			NextState = EXECUTING
			Code = 0x708
			+NOTIFY = {
				Class = MessageEnvelope
				Sender = StateMachine
				Destination = MARTe
				+MESSAGE = {
					Class = Message
					Content = PULSESTART
				}
			}
		}
		+ABORT = {
			Class = StateMachineEvent
			NextState = READY
			Code = 0x702
			+NOTIFY = {
				Class = MessageEnvelope
				Sender = StateMachine
				Destination = MARTe
				+MESSAGE = {
					Class = Message
					Content = PULSESTOP
				}
			}
		}
	}
	+EXECUTING = {
		Class = StateMachineState
		StateCode = 0x505
		+ENTER = {
			Class = MessageEnvelope
			Destination = COULD.BE.A.MIMIC
			+SENDSTATE = {
				Class = Message
			}
		}
		+ABORT = {
			Class = StateMachineEvent
			NextState = READY
			Code = 0x702
			+NOTIFY = {
				Class = MessageEnvelope
				Sender = StateMachine
				Destination = MARTe
				+MESSAGE = {
					Class = Message
					Content = PULSESTOP
				}
			}
		}
		+END_PULSE = {
			Class = StateMachineEvent
			NextState = POST_PULSE
			Code = 0x709
			+NOTIFY = {
				Class = MessageEnvelope
				Sender = StateMachine
				Destination = MARTe
				+MESSAGE = {
					Class = Message
					Content = PULSESTOP
				}
			}
		}
	}
	+POST_PULSE = {
		Class = StateMachineState
		StateCode = 0x507
		+ENTER = {
			Class = MessageEnvelope
			Destination = COULD.BE.A.MIMIC
			+SENDSTATE = {
				Class = Message
			}
		}
		+PULSE_CHECKS_FINISHED = {
			Class = StateMachineEvent
			NextState = READY
			Code = 0x703
			+NOTIFY = {
				Class = MessageEnvelope
				Sender = StateMachine
				Destination = MARTe
				+MESSAGE = {
					Class = Message
					Content = COLLECTIONCOMPLETED
				}
			}
		}
	}
	+NOT_READY = {
		Class = StateMachineState
		StateCode = 0x601
		+ACTIVATE = {
			Class = StateMachineEvent
			NextState = READY
			Code = 0x705
		}
	}
	+CONFIG_ERROR = {
		Class = StateMachineState
		StateCode = 0x601
		+ENTER = {
			Class = MessageEnvelope
			Destination = COULD.BE.A.MIMIC
			+SENDSTATE = {
				Class = Message
			}
		}
		+CONFIG_OK = {
			Class = StateMachineEvent
			NextState = READY
			Code = 0x778
			+NOTIFY = {
				Class = MessageEnvelope
				Sender = StateMachine
				Destination = COULD.BE.A.MIMIC
				+SENDSTATE = {
					Class = Message
					Code = 0x500
				}
			}
		}
	}
	+UNRECOVERABLE = {
		Class = StateMachineState
		StateCode = 0x601
		+DEFAULT = {
			Class = StateMachineEvent
			UserCode = 0
			NextState = UNRECOVERABLE
		}
	}
	+COMM_ERROR = {
		Class = StateMachineState
		StateCode = 0x601
		+ABORT = {
			Class = StateMachineEvent
			NextState = SAMESTATE
			Code = 0x702
		}
	}
	+DEFAULT = {
		Class = StateMachineState
		StateCode = 0x601
		+ABORT = {
			Class = StateMachineEvent
			NextState = READY
			Code = 0x702
		}
	}
}
+MARTeMenu = {
	Class = MarteSupLib::MARTeMenu
	AddReference = MARTe.MARTe
	Title = "MARTe Menu"
	+MenuA = {
		Class = MenuContainer
		Title = "State Machine"
		+ABORT = {
			Class = SendMessageMenuEntry
			Title = Abort
			Envelope = {
				Class = MessageEnvelope
				Sender = MARTeMenu
				Destination = StateMachine
				+Message = {
					Class = Message
					Content = ABORT
					Code = 0x702
				}
			}
		}
		+START_PULSE_SEQUENCE = {
			Class = SendMessageMenuEntry
			Title = "Start Pulse Sequence"
			Envelope = {
				Class = MessageEnvelope
				Sender = MARTeMenu
				Destination = StateMachine
				+Message = {
					Class = Message
					Content = START_PULSE_SEQUENCE
					Code = 0x701
				}
			}
		}
		+PRE_PULSE_CHECKS_FINISHED = {
			Class = SendMessageMenuEntry
			Title = "Pre Pulse Checks Finished"
			Envelope = {
				Class = MessageEnvelope
				Sender = MARTeMenu
				Destination = StateMachine
				+Message = {
					Class = Message
					Content = PRE_PULSE_CHECKS_FINISHED
					Code = 0x705
				}
			}
		}
		+START_PULSE = {
			Class = SendMessageMenuEntry
			Title = "Start Pulse"
			Envelope = {
				Class = MessageEnvelope
				Sender = MARTeMenu
				Destination = StateMachine
				+Message = {
					Class = Message
					Content = START_PULSE
					Code = 0x708
				}
			}
		}
		+END_PULSE = {
			Class = SendMessageMenuEntry
			Title = "End Pulse"
			Envelope = {
				Class = MessageEnvelope
				Sender = MARTeMenu
				Destination = StateMachine
				+Message = {
					Class = Message
					Content = END_PULSE
					Code = 0x709
				}
			}
		}
		+PULSE_CHECKS_FINISHED = {
			Class = SendMessageMenuEntry
			Title = "Pulse Checks Finished"
			Envelope = {
				Class = MessageEnvelope
				Sender = MARTeMenu
				Destination = StateMachine
				+Message = {
					Class = Message
					Content = PULSE_CHECKS_FINISHED
					Code = 0x703
				}
			}
		}
	}
}
+EPICSLib = {
	Class = EPICSHandler
	RunOnCPU_event = 16
	RunOnCPU = 2
	PREFIX = TEST-MNGR-PCF1:
	asyncScan = true
	debugLevel = 0
	asyncDelay = 0.1
	maxSimultAsyncIO = 100
	scanOn = true
	ProcessVariable = {
		pv_1 = {
			INP = "CycleUsecTime"
			VAL = 0
			NAME = STMA-CYCL-TIME-G
			PINI = "No"
			DTYP = "MARTe-translator"
			DESC = "MARTe Cycle Time"
			SYNC = excasIoSync
			LOPR = 0
			EGU = "us"
			SCAN = "Passive"
			TYPE = aitEnumFloat64
		}
		pv_98 = {
			INP = "usecTime"
			VAL = 0
			NAME = STMA-USEC-TIME-G
			PINI = "NO"
			DTYP = "MARTe-translator"
			DESC = "MARTe Absolute Time"
			SYNC = excasIoSync
			LOPR = 0
			EGU = "us"
			SCAN = "Passive"
			TYPE = aitEnumUint32
		}
		pv_99 = {
			HSV = "MINOR"
			LOLO = 0
			SYNC = excasIoSync
			HHSV = "MAJOR"
			LSV = "MINOR"
			EGU = "Volts"
			LOPR = 0
			MDEL = 0
			PREC = 2
			HIHI = 9
			INP = "pumpVoltage"
			ADEL = 0
			LOW = 0
			TYPE = aitEnumFloat64
			HYST = 0
			NAME = STMA-PUMP-VOLT-G
			LLSV = "MAJOR"
			SMOO = 0
			PINI = "NO"
			DTYP = "MARTe-translator"
			HIGH = 8
			SCAN = "Passive"
			VAL = 0
			DESC = "MARTe Pump Voltage"
			HOPR = 10
		}
		pv_100 = {
			LOLO = 0
			HSV = "MINOR"
			HYST = 0
			NAME = STMA-WTER-HGHT-G
			SMOO = 0
			LLSV = "MAJOR"
			PINI = "NO"
			DTYP = "MARTe-translator"
			SYNC = excasIoSync
			LSV = "MINOR"
			HHSV = "MAJOR"
			HIGH = 8
			LOPR = 0
			MDEL = 0
			PREC = 2
			SCAN = "Passive"
			HIHI = 9
			INP = "waterHeight"
			VAL = 0
			DESC = "MARTe Water Height"
			ADEL = 0
			LOW = 0
			TYPE = aitEnumFloat64
			HOPR = 10
		}
	}
}
+MARTe = {
	Class = MARTeContainer
	Level1Name = LEVEL1
	StateMachineName = StateMachine
	MenuContainerName = MARTe
	+MARTe = {
		Class = MenuContainer
	}
	+DriverPool = {
		Class = GCReferenceContainer
		+TimerBoard = {
			Class = GenericTimerDrv
			CPUMask = 1
			NumberOfOutputs = 0
			TimerUsecPeriod = 1000
			NumberOfInputs = 2
			SynchronizationMethod = Synchronizing
		}
	}
	+Messages = {
		Class = GCReferenceContainer
		+FatalErrorMessage = {
			Class = MessageDeliveryRequest
			MsecTimeOut = 1000
			Destinations = StateMachine
			Flags = NoReply
			Message = {
				Class = Message
				Content = UNRECOVERABLE
				Code = 0x776
			}
		}
		+ConfigLoadErrorMessage = {
			Class = MessageDeliveryRequest
			MsecTimeOut = 1000
			Destinations = StateMachine
			Flags = NoReply
			Message = {
				Class = Message
				Content = CONFIG_ERROR
				Code = 0x777
			}
		}
		+ConfigLoadOKMessage = {
			Class = MessageDeliveryRequest
			MsecTimeOut = 1000
			Destinations = StateMachine
			Flags = NoReply
			Message = {
				Class = Message
				Content = CONFIG_OK
				Code = 0x778
			}
		}
		+SafetyErrorMessage = {
			Class = MessageDeliveryRequest
			MsecTimeOut = 1000
			Destinations = MARTe
			Flags = NoReply
			Message = {
				Class = Message
				Content = ERROR
			}
		}
	}
	+ExternalTimeTriggeringService = {
		Class = InterruptDrivenTTS
		TsOfflineUsecPhase = 0
		TsOnlineUsecPhase = 0
		TsOfflineUsecPeriod = 1000
		TsOnlineUsecPeriod = 1000
		TimeModule = {
			BoardName = TimerBoard
		}
	}
	+Thread_1 = {
		Class = RealTimeThread
		SafetyMsecSleep = 1
		RunOnCPU = 2
		TriggeringServiceName = MARTe.ExternalTimeTriggeringService
		OfflineSemaphoreTimeout = 50
		ThreadPriority = 28
		SMStatusChangeMsecTimeout = 1000
		RTStatusChangeMsecTimeout = 1000
		+DDB = {
			Class = DDB
		}
		+Timer = {
			Class = IOGAMs::TimeInputGAM
			TriggeringServiceName = ExternalTimeTriggeringService
			BoardName = TimerBoard
			Signals = {
				time = {
					SignalName = usecTime
					SignalType = uint32
				}
				counter = {
					SignalName = counter
					SignalType = int32
				}
			}
		}
		+WaveformGen = {
			Class = WaveformGenerator
			UsecTimeType = uint32
			UsecTime = usecTime
			+waterHeightReference = {
				Class = WaveformClassSine
				Gain = 1
				Offset = 2.5
				Frequency = 0.1
				Tend = 2000
			}
			+zeroSignal = {
				Class = WaveformClassPoints
				TimeVector =  {0 1}
				ValueVector =  {0 0}
				Frequency = 1
				Tend = 2000
			}
		}
		+PIDGAM = {
			Class = PIDGAM
			TEnd = 2000.0
			SamplingTime = 0.001
			Ki = 2.00
			Kd = 0.20
			TStart = 0.0
			ControllerOn = On
			Kp = 3.00
			InputSignals = {
				PIDInput = {
					SignalName = PIDIn
					SignalType = PIDGAMInputStructure
					FlatNamed = True
				}
			}
			OutputSignals = {
				PIDOutput = {
					SignalName = PIDOut
					SignalType = PIDGAMOutputStructure
					FlatNamed = True
				}
			}
			Remappings = {
				InputInterface = {
					feedforward = zeroSignal
					usecTime = usecTime
					reference = waterHeightReference
					measurement = waterHeight
				}
				OutputInterface = {
					feedback = pumpVoltageRequest
					integratorState = pidIntState
					controlSignal = pumpVoltageRequest
					error = pidHeightError
				}
			}
		}
		+WaterTank = {
			Class = WaterTank
			MinVoltage = 0
			MaxVoltage = 5
			TankArea = 20.0
			aFlowRate = 20.0
			AnimationEnabled = 1
			SVGFileLocation = "../../GAMs/WaterTank/WaterTank.svg"
			bFlowRate = 50.0
			InputSignals = {
				usecTime = {
					SignalName = usecTime
					SignalType = uint32
				}
				voltage = {
					SignalName = pumpVoltageRequest
					SignalType = float
				}
			}
			OutputSignals = {
				height = {
					SignalName = waterHeight
					SignalType = float
				}
				pumpVoltage = {
					SignalName = pumpVoltage
					SignalType = float
				}
			}
		}
		+Statistic = {
			Class = WebStatisticGAM
			Verbose = True
			FrequencyOfVerbose = 2000000
			Signals = {
				SignalU = {
					SignalName = usecTime
					SignalType = uint32
				}
				Signal0 = {
					SignalName = CycleUsecTime
					SignalType = float
				}
				Signal1 = {
					SignalName = waterHeightReference
					SignalType = float
				}
				Signal2 = {
					SignalName = waterHeight
					SignalType = float
				}
				Signal3 = {
					SignalName = pumpVoltageRequest
					SignalType = float
				}
				Signal4 = {
					SignalName = pumpVoltage
					SignalType = float
				}
				Signal5 = {
					SignalName = TimerAbsoluteUsecTime
					SignalType = float
				}
				Signal6 = {
					SignalName = WaveformGenAbsoluteUsecTime
					SignalType = float
				}
				Signal7 = {
					SignalName = PIDGAMAbsoluteUsecTime
					SignalType = float
				}
				Signal8 = {
					SignalName = WaterTankAbsoluteUsecTime
					SignalType = float
				}
				Signal9 = {
					SignalName = StatisticAbsoluteUsecTime
					SignalType = float
				}
				Signal10 = {
					SignalName = CollectionAbsoluteUsecTime
					SignalType = float
				}
				Signal11 = {
					SignalName = TimerRelativeUsecTime
					SignalType = float
				}
				Signal12 = {
					SignalName = WaveformGenRelativeUsecTime
					SignalType = float
				}
				Signal13 = {
					SignalName = PIDGAMRelativeUsecTime
					SignalType = float
				}
				Signal14 = {
					SignalName = WaterTankRelativeUsecTime
					SignalType = float
				}
				Signal15 = {
					SignalName = StatisticRelativeUsecTime
					SignalType = float
				}
				Signal16 = {
					SignalName = CollectionRelativeUsecTime
					SignalType = float
				}
			}
		}
		+PlottingGAM = {
			Class = PlottingGAM::PlottingGAM
			HttpRefreshMsecTime = 500
			+Window1 = {
				Class = PlotWindow::PlotWindow
				YAxisScale = "Linear"
				OnlyPositiveY = Yes
				PlotPixelHeight = 350
				PlotPixelWidth = 1250
				XAxisScaleFactor = 0.001
				XAxisSignalName = usecTime
				XLabel = "Time (ms)"
				YLabel = "cm"
				XAxisSignalType = uint32
				PlotLastNBuffers = 3
				InputSignals = {
					Signal1 = {
						SignalName = waterHeightReference
						SignalType = float
					}
					Signal2 = {
						SignalName = waterHeight
						SignalType = float
					}
				}
			}
			+Window3 = {
				Class = PlotWindow::PlotWindow
				YAxisScale = "linear"
				OnlyPositiveY = Yes
				PlotPixelHeight = 350
				PlotPixelWidth = 1250
				XAxisScaleFactor = 0.001
				XAxisSignalName = usecTime
				XLabel = "Time (ms)"
				YLabel = "Cycle time (s)"
				XAxisSignalType = uint32
				PlotLastNBuffers = 500
				InputSignals = {
					Signal1 = {
						SignalName = CycleUsecTime
						SignalType = float
					}
				}
			}
		}
		+Collection = {
			Class = CollectionGAMs::DataCollectionGAM
			TimeSignalType = uint32
			UsecTimeSignalName = usecTime
			PreTrigger = 200
			NOfAcquisitionSamples = 400000
			EventTrigger = {
				MaxFastAcquisitionPoints = 800
				PointsForSingleFastAcquisition = 400
				TimeWindow0 = {
					UsecPeriod = 1000
					NOfSamples = 40000
				}
			}
			Signals = {
				CLOCK = {
					SignalName = usecTime
					Cal1 = 1.000000e-06
					SignalType = uint32
					Cal0 = 0.0
					JPFName = "TIME"
				}
				CycleTime = {
					SignalName = CycleUsecTime
					SignalType = float
					JPFName = "CycleTime"
				}
				WaterReference = {
					SignalName = waterHeightReference
					SignalType = float
					JPFName = "WaterHeightReference"
				}
				WaterHeight = {
					SignalName = waterHeight
					SignalType = float
					JPFName = "WaterHeight"
				}
				PumpVoltageReq = {
					SignalName = pumpVoltageRequest
					SignalType = float
					JPFName = "PumpVoltageRequest"
				}
				PumpVoltage = {
					SignalName = pumpVoltage
					SignalType = float
					JPFName = "PumpVoltage"
				}
				PIDError = {
					SignalName = pidHeightError
					SignalType = float
					JPFName = "PIDError"
				}
				PIDIntState = {
					SignalName = pidIntState
					SignalType = float
					JPFName = "PIDIntState"
				}
				Signal5 = {
					SignalName = TimerAbsoluteUsecTime
					SignalType = float
					JPFName = "TimerAbsoluteUsecTime"
				}
				Signal6 = {
					SignalName = WaveformGenAbsoluteUsecTime
					SignalType = float
					JPFName = "WaveformGenAbsoluteUsecTime"
				}
				Signal7 = {
					SignalName = PIDGAMAbsoluteUsecTime
					SignalType = float
					JPFName = "PIDGAMAbsoluteUsecTime"
				}
				Signal8 = {
					SignalName = WaterTankAbsoluteUsecTime
					SignalType = float
					JPFName = "WaterTankAbsoluteUsecTime"
				}
				Signal9 = {
					SignalName = StatisticAbsoluteUsecTime
					SignalType = float
					JPFName = "StatisticAbsoluteUsecTime"
				}
				Signal10 = {
					SignalName = CollectionAbsoluteUsecTime
					SignalType = float
					JPFName = "CollectionAbsoluteUsecTime"
				}
				Signal11 = {
					SignalName = TimerRelativeUsecTime
					SignalType = float
					JPFName = "TimerRelativeUsecTime"
				}
				Signal12 = {
					SignalName = WaveformGenRelativeUsecTime
					SignalType = float
					JPFName = "WaveformGenRelativeUsecTime"
				}
				Signal13 = {
					SignalName = PIDGAMRelativeUsecTime
					SignalType = float
					JPFName = "PIDGAMRelativeUsecTime"
				}
				Signal14 = {
					SignalName = WaterTankRelativeUsecTime
					SignalType = float
					JPFName = "WaterTankRelativeUsecTime"
				}
				Signal15 = {
					SignalName = StatisticRelativeUsecTime
					SignalType = float
					JPFName = "StatisticRelativeUsecTime"
				}
				Signal16 = {
					SignalName = CollectionRelativeUsecTime
					SignalType = float
					JPFName = "CollectionRelativeUsecTime"
				}
			}
		}
		+EPICSStream = {
			Class = EPICSGAM
			UsecTimeSignalName = usecTime
			TimeSignalType = uint32
			SignalsServer = EPICSLib
			NOfAcquisitionSamples = 2000
			Signals = {
				sign1 = {
					SignalName = CycleUsecTime
					ServerSubSampling = 100
					SignalType = float
					ServerName = TEST-MNGR-PCF1:STMA-CYCL-TIME-G
				}
				sign98 = {
					SignalName = usecTime
					ServerSubSampling = 100
					SignalType = uint32
					ServerName = TEST-MNGR-PCF1:STMA-USEC-TIME-G
				}
				sign99 = {
					SignalName = pumpVoltage
					ServerSubSampling = 100
					SignalType = float
					ServerName = TEST-MNGR-PCF1:STMA-PUMP-VOLT-G
				}
				sign100 = {
					SignalName = waterHeight
					ServerSubSampling = 100
					SignalType = float
					ServerName = TEST-MNGR-PCF1:STMA-WTER-HGHT-G
				}
			}
		}
		Online = "Timer WaveformGen PIDGAM WaterTank PlottingGAM Statistic Collection EPICSStream"
		Offline = "Timer PlottingGAM Statistic EPICSStream"
	}
}
