public static void Main()
        {
            var bufferMeasPeriod         = new Buffer {
            };
            var bufferLowTriggerLevel    = new Buffer {
            };
            var bufferLowTriggerDuration = new Buffer {
            };
            var bufferHoldOffTime        = new Buffer {
            };
            var bufferCurrentValue       = new Buffer {
            };

            Parameters.Setup(); //Call Gsiot Configuration.Parameters.Setup to set Parameters.StreamProvider to null (i.e. we don't want to use a YALER relay)

            currentPeriod       = 2000;
            currentLowTrigLevel = 500L;
            currentLowTrigDur   = 6000;
            currentHoldOffTime  = 6000;
            belowThreshold      = false;

            var rangeFinder = new RangeFinder(currentPeriod, currentLowTrigLevel, currentLowTrigDur, currentHoldOffTime)
            {
                sourceBufferMeasPeriod   = bufferMeasPeriod,
                sourceBufferLowTrigLevel = bufferLowTriggerLevel,
                sourceBufferLowTrigDur   = bufferLowTriggerDuration,
                sourceBufferHoldOffTime  = bufferHoldOffTime,
                sourceBufferCurrentValue = bufferCurrentValue
            };

            var webServer = new HttpServer()
            {
                StreamProvider = Parameters.StreamProvider,
                RequestRouting =
                {
                    {
                        "GET /hello",
                        HandleGetHello
                    },
                    {
                        "GET /about*",
                        HandleGetAbout
                    },

                    {
                        "PUT /measurementPeriod",
                        new ManipulatedVariable
                        {
                            FromHttpRequest =
                                CSharpRepresentation.TryDeserializeInt,
                            ToActuator = bufferMeasPeriod.HandlePut
                        }.HandleRequest
                    },
                    {
                        "GET /measurementPeriod.html",
                        HandleGetMeasPeriod
                    },
                    {
                        "PUT /lowTrigLevel",
                        new ManipulatedVariable
                        {
                            FromHttpRequest =
                                CSharpRepresentation.TryDeserializeInt,
                            ToActuator = bufferLowTriggerLevel.HandlePut
                        }.HandleRequest
                    },
                    {
                        "GET /lowTrigLevel.html",
                        HandleGetLowTrigLevel
                    },
                    {
                        "PUT /lowTrigDuration",
                        new ManipulatedVariable
                        {
                            FromHttpRequest =
                                CSharpRepresentation.TryDeserializeInt,
                            ToActuator = bufferLowTriggerDuration.HandlePut
                        }.HandleRequest
                    },
                    {
                        "PUT /holdOffTime",
                        new ManipulatedVariable
                        {
                            FromHttpRequest =
                                CSharpRepresentation.TryDeserializeInt,
                            ToActuator = bufferHoldOffTime.HandlePut
                        }.HandleRequest
                    },
                    {
                        "GET /lowTrigDuration.html",
                        HandleGetLowTrigDuration
                    },
                    {
                        "GET /holdOffTime.html",
                        HandleGetHoldOffTime
                    },
                    {
                        "GET /measurement/current",
                        HandleGetCurrentValue
                    },
                    {
                        "GET /settings.html",
                        HandleGetSettings
                    }
                }
            };

            //Create and start threads
            var rangeFinderThread = new Thread(rangeFinder.Run);

            rangeFinderThread.Start();
            webServer.Run();
        }
Example #2
0
        public static void Main()
        {
            var bufferMeasPeriod         = new Buffer {
            };
            var bufferLowTriggerLevel    = new Buffer {
            };
            var bufferLowTriggerDuration = new Buffer {
            };
            var bufferCurrentValue       = new Buffer {
            };

            //long currentValue;

            var rangeFinder = new RangeFinder {
                SourceBuffer1 = bufferMeasPeriod,
                SourceBuffer2 = bufferLowTriggerLevel,
                SourceBuffer3 = bufferLowTriggerDuration,
                SourceBuffer4 = bufferCurrentValue
            };

            var webServer = new HttpServer
            {
                StreamProvider = Parameters.StreamProvider,
                RequestRouting =
                {
                    {
                        "GET /hello",
                        HandleGetHelloHtml
                    },
                    {
                        "PUT /measurementPeriod/target",
                        new ManipulatedVariable
                        {
                            FromHttpRequest =
                                CSharpRepresentation.TryDeserializeInt,
                            ToActuator = bufferMeasPeriod.HandlePut
                        }.HandleRequest
                    },
                    {
                        "GET /measurementPeriod/target.html",
                        HandleMeasPeriodTargetHtml
                    },
                    {
                        "PUT /lowTrigLevel/target",
                        new ManipulatedVariable
                        {
                            FromHttpRequest =
                                CSharpRepresentation.TryDeserializeInt,
                            ToActuator = bufferLowTriggerLevel.HandlePut
                        }.HandleRequest
                    },
                    {
                        "GET /lowTrigLevel/target.html",
                        HandleLowTrigLevelTargetHtml
                    },
                    {
                        "PUT /lowTrigDuration/target",
                        new ManipulatedVariable
                        {
                            FromHttpRequest =
                                CSharpRepresentation.TryDeserializeInt,
                            ToActuator = bufferLowTriggerDuration.HandlePut
                        }.HandleRequest
                    },
                    {
                        "GET /lowTrigDuration/target.html",
                        HandleLowTrigDurationTargetHtml
                    },
                    {
                        "GET /measurement/current",
                        HandleCurrentValueQuery
                    }
                }
            };

            var rangeFinderThread = new Thread(rangeFinder.Run);

            rangeFinderThread.Start();
            webServer.Run();
        }