示例#1
0
        private static void CreateStellaClientInstance(int id)
        {
            // Light
            int      ledCount = 300;
            Settings settings = Settings.CreateDefaultSettings();

            settings.Channels[0] = new Channel(ledCount, 18, 255, false, StripType.WS2812_STRIP);
            WS281x        ledstrip      = new WS281x(settings);
            LedController ledController = new LedController(ledstrip);

            // Server
            IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Parse(Program.SERVER_IP), 20055);

            StellaClientLib.Network.StellaServer stellaServer = new StellaClientLib.Network.StellaServer();
            stellaServer.RenderFrameReceived += (sender, frame) => ledController.RenderFrame(frame);
            stellaServer.Start(localEndPoint, 20056, id);

            string input;

            Console.Out.WriteLine($"Running StellaClient instance with id {id}");
            while ((input = Console.ReadLine()) != "q")
            {
                Console.Out.WriteLine("q - quit");

                switch (input)
                {
                default:
                    Console.Out.WriteLine("Unknown command.");
                    break;
                }
            }
            stellaServer.Dispose();
        }
示例#2
0
        static void Main(string[] args)
        {
            var word = new Word(24);

            // 0xA1 B2
            // 1010 0001 1011 0010
            word.Set(new bool[] { true, false, true, false, false, false, false, true, true, false, true, true, false, false, true, false });
            Console.WriteLine($"Byte size = {word.ReadAsBytes().Length}");
            Console.WriteLine("Expecting 0xA1B2...");
            foreach (var item in word.ReadAsBytes())
            {
                Console.WriteLine(((int)item).ToString("X"));
            }

            Console.WriteLine("Reporting bit value");
            Console.Write(" ");
            foreach (var item in word.Read())
            {
                Console.Write($"{(item ? 1 : 0)} ");
            }

            Console.WriteLine("Simulating Controllers ");

            IController led = new LedController("Simple", LedColor.Green);

            Console.WriteLine($"- Controller [{led.Label}] : State is [{led.State}]");
        }
示例#3
0
 public LanCommunicationService(ILogger logger)
 {
     this.logger = logger;
     mc          = new ModuleController(logger);
     mod         = mc.GetCurrentModule();
     canceller   = new CancellationTokenSource();
     networker   = new MasterNetworker(mod?.Module?.Name, logger);
     lc          = new LedController(logger);
 }
示例#4
0
 public Tracker(float confThreshold)
 {
     this.sittingTime   = new TimeSpan();
     this.standingTime  = new TimeSpan();
     this.avg           = 0F;
     this.avgLen        = 0;
     this.confThreshold = confThreshold;
     this.sw            = new Stopwatch();
     this.sw.Start();
     ledStrip = new LedController(LEDQUANTITY, LEDMAXDURATION);
     Dictionary <ulong, Tuple <float, int> > people = new Dictionary <ulong, Tuple <float, int> >();
     //ledStrip.refresh(0);
 }
示例#5
0
        public void Render__LedStripRenderGetsCalled()
        {
            FrameWithoutDelta frame = new FrameWithoutDelta(0, 100, 1);

            frame[0] = new PixelInstruction(10, 20, 30);
            var mock = new Mock <ILEDStrip>();

            mock.Setup(x => x.Render());

            LedController controller = new LedController(mock.Object);

            controller.RenderFrame(frame);

            mock.Verify(x => x.Render(), Times.Once);
        }
示例#6
0
        public void PrepareFrame_Frame_FrameGetsDrawnToStrip()
        {
            FrameWithoutDelta frame = new FrameWithoutDelta(0, 100, 1);

            frame[0] = new PixelInstruction(10, 20, 30);

            var mock = new Mock <ILEDStrip>();

            int   index = -1;
            Color color = new Color();

            mock.Setup(x => x.SetLEDColor(It.IsAny <int>(), It.IsAny <int>(), It.IsAny <Color>())).Callback <int, int, Color>((i, j, c) =>
            {
                index = j;
                color = c;
            });

            LedController controller = new LedController(mock.Object);

            controller.RenderFrame(frame);
            Assert.AreEqual(0, index);
            Assert.AreEqual(Color.FromArgb(10, 20, 30), color);
        }
示例#7
0
        // The main entry point for glow smarts.
        public void Run()
        {
            // Create the LED controller
            m_ledController = new LedController();

            // Create all of the programs and add them to the cache.
            IProgram program = new GlowControl();
            program.InitProgram(this);
            m_programCache.Add(GlowPrograms.GlowControl, program);

            program = new DiscoveryControl();
            program.InitProgram(this);
            m_programCache.Add(GlowPrograms.DiscoveryControl, program);

            program = new ManualColor();
            program.InitProgram(this);
            m_programCache.Add(GlowPrograms.ManualColors, program);

            program = new Clock();
            program.InitProgram(this);
            m_programCache.Add(GlowPrograms.Clock, program);

            program = new Weather();
            program.InitProgram(this);
            m_programCache.Add(GlowPrograms.Weather, program);

            program = new WeatherCam();
            program.InitProgram(this);
            m_programCache.Add(GlowPrograms.WeatherCam, program);

            program = new RandomColor();
            program.InitProgram(this);
            m_programCache.Add(GlowPrograms.RandomColor, program);

            // Create a command listener
            m_commandServer = new CommandServer(this, CommandServer.CommmandServerMode.Server);

            // Setup the main worker thread.
            m_continueWorking = true;
            m_lastWorkTime = DateTime.Now;
            m_workerThread = new Task(WorkLoop);
            m_workerThread.Start();
        }
示例#8
0
 public PresetController(ILogger logger)
 {
     this.logger   = logger;
     ledController = new LedController(logger);
 }
示例#9
0
 public TimingController(ILogger logger)
 {
     this.logger   = logger;
     ledController = new LedController(logger);
 }
示例#10
0
        public static void Main(string[] args)
        {
            //load settings
            Settings settings = Settings.Load();

            if (settings == null)
            {
                Console.WriteLine("Invalid settings - check the Settings.json file");
                Console.ReadKey();
                return;
            }
            settings.Save();

            //prepare storage
            FileBasedControllerStorage controllerStorage = new FileBasedControllerStorage();
            FileBasedFirmwareStorage   firmwareStorage   = new FileBasedFirmwareStorage();
            MemoryBasedLedStorage      ledStorage        = new MemoryBasedLedStorage();
            FileBasedGroupStorage      groupStorage      = new FileBasedGroupStorage();

            //initialize storage
            controllerStorage.Initialize(settings.ControllerPath);
            firmwareStorage.Initialize(settings.FirmwarePath);
            ledStorage.Initialize();
            groupStorage.Initialize(settings.GroupPath);

            //initialize business logic (handlers)
            ControllerHandler controllerHandler = new ControllerHandler(controllerStorage, groupStorage, ledStorage);
            FirmwareHandler   firmwareHandler   = new FirmwareHandler(firmwareStorage, settings);
            LedHandler        ledHandler        = new LedHandler(ledStorage, controllerStorage);
            GroupHandler      groupHandler      = new GroupHandler(groupStorage, ledStorage);
            TrunkEndpoint     trunkEndpoint     = new TrunkEndpoint(controllerStorage, ledStorage);

            //initialize API endpoints (controllers)
            BaseController       baseController       = new BaseController(settings.Oauth);
            ControllerController controllerController = new ControllerController(controllerHandler);
            ControllerTrunk      controllerTrunk      = new ControllerTrunk(trunkEndpoint);
            FirmwareController   firmwareController   = new FirmwareController(firmwareHandler);
            LedController        ledController        = new LedController(ledHandler);
            GroupController      groupController      = new GroupController(groupHandler);

            //initialize web server
            HttpService service = new DefaultHttpSysService(false, "+", settings.ServerPort);

            service.AddController(baseController, settings.Multithreaded);
            service.AddController(controllerController, settings.Multithreaded);
            service.AddController(controllerTrunk, "Trunk", true);
            service.AddController(firmwareController, settings.Multithreaded);
            service.AddController(ledController, settings.Multithreaded);
            service.AddController(groupController, settings.Multithreaded);
            //service.GetProcessorPostManipulation(DefaultHttpSysService.INTERNAL_PROCESSING_GROUP).Add(new OptionsPayloadInjector("OptionsInjector"));

            //if OAuth is enabled...
            if (settings.Oauth)
            {
                //prepare OAuth storage
                ClientAccountFileStorage clientStorage       = new ClientAccountFileStorage();
                UserAccountFileStorage   userStorage         = new UserAccountFileStorage();
                RefreshTokenFileStorage  refreshTokenStorage = new RefreshTokenFileStorage();

                //initialize oauth storage
                clientStorage.Initialize(settings.ClientPath);
                refreshTokenStorage.Initialize(settings.RefreshTokenPath);
                userStorage.Initialize(settings.UserPath);

                //prepare OAuth core
                OAuth2 oauth = new OAuth2("fwehnvd3432nfre7r834nfsfiu43kmvrew!");
                oauth.ClientCredentialsAuthorization = new ClientCredentialsAuthorization(oauth, clientStorage);
                oauth.PasswordAuthorization          = new PasswordAuthorization(oauth, clientStorage, userStorage);
                oauth.RefreshTokenAuthorization      = new RefreshTokenAuthorization(oauth, clientStorage, userStorage, refreshTokenStorage);
                service.GetProcessorPreManipulation(false).Add(new CustomizedAccessTokenValidator(oauth.AccessTokenValidator));

                //prepare OAuth Webkit
                IScopeHandler  scopeHandler  = new ScopeHandler(service, oauth);
                IClientHandler clientHandler = new ClientHandler(clientStorage);
                IUserHandler   userHandler   = new UserHandler(clientStorage, userStorage);

                //initialize API endpoints (controllers) for OAuth + Webkit
                service.AddController(new AuthController(oauth));
                service.AddController(new ClientController(clientHandler));
                service.AddController(new ScopeController(scopeHandler));
                service.AddController(new UserController(userHandler));

                //assign scopes to OAuth Webkit API endpoints
                ClientController.AssignScopesToEndpoints(skotstein.app.ledserver.tools.Scopes.AUTH_CLIENT_READ, skotstein.app.ledserver.tools.Scopes.AUTH_CLIENT_WRITE, oauth);
                ScopeController.AssignScopeToEndpoint(skotstein.app.ledserver.tools.Scopes.AUTH_SCOPE_READ, oauth);
                UserController.AssignScopesToEndpoints(skotstein.app.ledserver.tools.Scopes.AUTH_USER_READ, skotstein.app.ledserver.tools.Scopes.AUTH_USER_WRITE, oauth);
            }



            //generate YAML file
            OpenApiDocumentBuilder documentBuilder = new OpenApiDocumentBuilder();
            OpenApiDocument        document        = documentBuilder.Build("V1");

            if (settings.Oauth)
            {
                document = documentBuilder.AddSecuritySchema(document, new List <HttpController> {
                    baseController, controllerController, groupController, ledController, firmwareController
                }, /*@"http://*****:*****@"http://localhost:4000/api/v1/auth/token");
            }
            string json = documentBuilder.AsJson(document);

            json = documentBuilder.Replace(json, new ExampleValues());


            json = documentBuilder.Replace(json, new HostValue("http://*****:*****@".\OpenApi.json", json);

            //start server
            Console.WriteLine(service.Routes);
            service.Start();
            Console.WriteLine("Service is listening on port:" + settings.ServerPort);
            if (settings.Oauth)
            {
                Console.WriteLine("OAuth 2.0 is enabled");
                Console.WriteLine("Access Token URL: POST " + restlayer.ApiBase.API_V1 + "/auth/token");
            }
            else
            {
                Console.WriteLine("OAuth 2.0 is disabled");
            }
            Console.WriteLine("Press key to terminate");
            Console.ReadKey();
        }