예제 #1
0
 private void OnAutoCheckChanged(bool newValue)
 {
     new Thread(delegate()
     {
         lock (writeLock){
             FirmwareSettings.GeneralSettings.CheckForSwUpdatesAtStartUp = newValue;
             FirmwareSettings.Save();
         }
     }).Start();
 }
예제 #2
0
파일: Main.cs 프로젝트: thaiEv3/monoev3
        static bool ShowWebServerMenu(Lcd lcd, Buttons btns)
        {
            List <IMenuItem> items = new List <IMenuItem> ();
            var portItem           = new MenuItemWithNumericInput(lcd, "Port", settings.WebServerSettings.Port, 1, ushort.MaxValue);

            portItem.OnValueChanged += delegate(int value)
            {
                new Thread(delegate() {
                    settings.WebServerSettings.Port = value;
                    settings.Save();
                }).Start();
            };
            var startItem = new MenuItemWithCheckBox(lcd, "Start server", WebServer.IsRunning(),
                                                     delegate(bool running)
            {
                webServer      = new WebServer(settings.WebServerSettings.Port);
                bool isRunning = running;
                if (running)
                {
                    var dialog = new InfoDialog(font, lcd, btns, "Shutting down Web-Server", false);
                    dialog.Show();
                    webServer.Stop();
                    dialog = new InfoDialog(font, lcd, btns, "Web-server Stopped!", true);
                    dialog.Show();
                    isRunning = false;
                }
                else
                {
                    var dialog = new InfoDialog(font, lcd, btns, "Starting Web-Server Please Wait", false, "Web-Server");
                    dialog.Show();
                    webServer.CompilingServer += delegate() { dialog.UpdateMessage("Compiling..."); };
                    webServer.LoadingPage     += delegate() { dialog.UpdateMessage("Loading page"); };
                    webServer.StartingServer  += delegate() { dialog.UpdateMessage("Starting server"); };
                    if (webServer.Restart())
                    {
                        dialog = new InfoDialog(font, lcd, btns, "Started successfully at port" + settings.WebServerSettings.Port, true);
                        dialog.Show();
                        isRunning = true;
                    }
                    else
                    {
                        dialog = new InfoDialog(font, lcd, btns, "Failed to start Web-Servers", true);
                        dialog.Show();
                        isRunning = false;
                    }
                }
                return(isRunning);
            }
                                                     );

            items.Add(portItem);
            items.Add(startItem);
            //Show the menu
            Menu m = new Menu(font, lcd, btns, "Web Server", items);

            m.Show();
            return(false);
        }
예제 #3
0
 private void OnAutoConnectChanged(bool newValue)
 {
     if (!newValue && autoCheck.Checked)
     {
         autoCheck.OnEnterPressed();
     }
     new Thread(delegate()
     {
         lock (writeLock){
             FirmwareSettings.GeneralSettings.ConnectToWiFiAtStartUp = newValue;
             FirmwareSettings.Save();
         }
     }).Start();
 }
예제 #4
0
        static bool ShowWebServerMenu(Buttons btns)
        {
            List <IMenuItem> items = new List <IMenuItem> ();
            var portItem           = new MenuItemWithNumericInput("Port", settings.WebServerSettings.Port, 1, ushort.MaxValue);

            portItem.OnValueChanged += delegate(int value)
            {
                new Thread(delegate() {
                    settings.WebServerSettings.Port = value;
                    settings.Save();
                }).Start();
            };
            var startItem = new MenuItemWithCheckBox("Start server", WebServer.IsRunning(),
                                                     delegate(bool running)
            {
                bool isRunning = running;
                if (running)
                {
                    var step = new StepContainer(
                        delegate()
                    {
                        WebServer.StopAll();
                        System.Threading.Thread.Sleep(2000);
                        return(true);
                    },
                        "Stopping", "Failed to stop");
                    var dialog = new ProgressDialog(btns, "Web Server", step);
                    dialog.Show();
                    isRunning = WebServer.IsRunning();
                }
                else
                {
                    var step1      = new StepContainer(() => { return(WebServer.StartFastCGI()); }, "Init CGI Server", "Failed to start CGI Server");
                    var step2      = new StepContainer(() => { return(WebServer.StartLighttpd()); }, "Initializing", "Failed to start server");
                    var step3      = new StepContainer(() => { return(WebServer.LoadPage()); }, "Loading page", "Failed to load page");
                    var stepDialog = new StepDialog(btns, "Web Server", new List <IStep> {
                        step1, step2, step3
                    }, "Webserver started");
                    isRunning = stepDialog.Show();
                }
                return(isRunning);
            }
                                                     );

            //items.Add(portItem);
            items.Add(startItem);
            //Show the menu
            Menu m = new Menu(font, btns, "Web Server", items);

            m.Show();
            return(false);
        }
예제 #5
0
 public override void RemoveFocus(IChildItem item)
 {
     base.RemoveFocus(item);
     if (item is ItemWithDialog <QuestionDialog> )
     {
         if (questionDialog.Dialog.IsPositiveSelected)
         {
             FirmwareSettings.GeneralSettings.ConnectToWiFiAtStartUp     = true;
             FirmwareSettings.GeneralSettings.CheckForSwUpdatesAtStartUp = true;
             FirmwareSettings.Save();
         }
     }
     else
     {
         if (this.Checked)
         {
             questionDialog.SetFocus(this);
         }
     }
 }
예제 #6
0
        static bool ShowWiFiMenu()
        {
            List <IMenuItem> items = new List <IMenuItem> ();
            var ssidItem           = new MenuItemWithCharacterInput("SSID", "Enter SSID", settings.WiFiSettings.SSID);

            ssidItem.OnDialogExit += delegate(string text) {
                new Thread(delegate() {
                    settings.WiFiSettings.SSID = text;
                    settings.Save();
                }).Start();
            };
            var passwordItem = new MenuItemWithCharacterInput("Password", "Password", settings.WiFiSettings.Password, true);

            passwordItem.OnDialogExit += delegate(string text) {
                new Thread(delegate() {
                    settings.WiFiSettings.Password = text;
                    settings.Save();
                }).Start();
            };
            var encryptionItem = new MenuItemWithOptions <string>("Encryption", new string[] { "None", "WPA/2" }, settings.WiFiSettings.Encryption ? 1 : 0);

            encryptionItem.OnOptionChanged += delegate(string newOpstion) {
                new Thread(delegate() {
                    if (newOpstion == "None")
                    {
                        settings.WiFiSettings.Encryption = false;
                    }
                    else
                    {
                        settings.WiFiSettings.Encryption = true;
                    }
                    settings.Save();
                }).Start();
            };
            var connectItem = new MenuItemWithCheckBox("Connect", WiFiDevice.IsLinkUp(),
                                                       delegate(bool WiFiOn)
            {
                bool isOn          = WiFiOn;
                var createFileStep = new StepContainer
                                     (
                    delegate()
                {
                    WriteWpaSupplicantConfiguration(settings.WiFiSettings.SSID, settings.WiFiSettings.Password, settings.WiFiSettings.Encryption);
                    return(true);
                },
                    "Creating file", "Error creating WPA file"
                                     );
                var progressDialog = new ProgressDialog("WiFi", createFileStep);
                progressDialog.Show();
                if (WiFiOn)
                {
                    var turnOffStep = new StepContainer(
                        delegate()
                    {
                        WiFiDevice.TurnOff();
                        return(true);
                    },
                        "Turning Off", "Error turning off WiFi", "WiFi Disabled");
                    var dialog = new ProgressDialog("WiFi", turnOffStep);
                    dialog.Show();
                    isOn = false;
                }
                else
                {
                    var turnOnStep = new StepContainer(
                        delegate()
                    {
                        return(WiFiDevice.TurnOn(60000));
                    },
                        "Connecting", "Failed to connect");
                    Dialog dialog = new ProgressDialog("WiFi", turnOnStep);
                    if (dialog.Show())
                    {
                        if (settings.WiFiSettings.ConnectAtStartUp == false)
                        {
                            var question = new QuestionDialog("Do you want to connect at start-up?", "Settings");
                            if (question.Show())
                            {
                                new Thread(delegate() {
                                    settings.WiFiSettings.ConnectAtStartUp = true;
                                    settings.Save();
                                }).Start();
                            }
                        }
                        dialog = new InfoDialog("Connected Successfully " + WiFiDevice.GetIpAddress(), true, "WiFi");
                        dialog.Show();
                        isOn = true;
                    }
                    else
                    {
                        isOn = false;
                    }
                }
                return(isOn);
            }
                                                       );

            items.Add(ssidItem);
            items.Add(passwordItem);
            items.Add(encryptionItem);
            items.Add(connectItem);
            //Show the menu
            Menu m = new Menu("WiFi Connection", items);

            m.Show();
            return(false);
        }
예제 #7
0
파일: Main.cs 프로젝트: cyberphox/monoev3
        public static void Main(string[] args)
        {
            Lcd.Instance.DrawBitmap(monoLogo, new Point((int)(Lcd.Width - monoLogo.Width) / 2, 5));
            Rectangle textRect = new Rectangle(new Point(0, Lcd.Height - (int)Font.SmallFont.maxHeight - 2), new Point(Lcd.Width, Lcd.Height - 2));

            Lcd.Instance.WriteTextBox(Font.SmallFont, textRect, "Initializing...", true, Lcd.Alignment.Center);
            Lcd.Instance.Update();
            WiFiDevice.TurnOff();
            if (!Directory.Exists(ProgramPathSdCard))
            {
                Directory.CreateDirectory(ProgramPathSdCard);
            }

            // JIT work-around remove when JIT problem is fixed
            System.Threading.Thread.Sleep(10);
            Console.WriteLine("JIT workaround - please remove!!!");
            Lcd.Instance.WriteTextBox(Font.SmallFont, textRect, "Checking WiFi...", true, Lcd.Alignment.Center);
            Lcd.Instance.Update();
            //WiFiDevice.IsLinkUp ();
            Lcd.Instance.WriteTextBox(Font.SmallFont, textRect, "Starting Mono Runtime...", true, Lcd.Alignment.Center);
            Lcd.Instance.Update();
            string monoVersion = "Unknown";
            Type   type        = Type.GetType("Mono.Runtime");

            if (type != null)
            {
                MethodInfo displayName = type.GetMethod("GetDisplayName", BindingFlags.NonPublic | BindingFlags.Static);
                if (displayName != null)
                {
                    monoVersion = (string)displayName.Invoke(null, null);
                }
                Console.WriteLine("Mono Version" + monoVersion);
            }
            string monoCLR = System.Reflection.Assembly.GetExecutingAssembly().ImageRuntimeVersion;

            // JIT work-around end but look for more below

            //Load settings
            Lcd.Instance.WriteTextBox(Font.SmallFont, textRect, "Loading settings...", true, Lcd.Alignment.Center);
            Lcd.Instance.Update();
            settings = settings.Load();
            if (settings != null)
            {
                Lcd.Instance.WriteTextBox(Font.SmallFont, textRect, "Applying settings...", true, Lcd.Alignment.Center);
                Lcd.Instance.Update();
                settings.Save();                // JIT work-around
                WriteWpaSupplicantConfiguration(settings.WiFiSettings.SSID, settings.WiFiSettings.Password, settings.WiFiSettings.Encryption);
                if (settings.WiFiSettings.ConnectAtStartUp)
                {
                    Lcd.Instance.WriteTextBox(Font.SmallFont, textRect, "Connecting to WiFi...", true, Lcd.Alignment.Center);
                    Lcd.Instance.Update();
                    if (WiFiDevice.TurnOn(60000))
                    {
                        WiFiDevice.GetIpAddress();                         // JIT work-around
                        if (settings.GeneralSettings.CheckForSwUpdatesAtStartUp)
                        {
                            ShowUpdatesDialogs();
                        }
                        else
                        {
                            var dialog = new InfoDialog("Connected Successfully " + WiFiDevice.GetIpAddress(), true);
                            dialog.Show();
                        }
                    }
                    else
                    {
                        var dialog = new InfoDialog("Failed to connect to WiFI Network", true);
                        dialog.Show();
                    }
                }
            }
            else
            {
                var dialog = new InfoDialog("Failed to load settings", true);
                dialog.Show();
                settings = new FirmwareSettings();
            }

            //Keep showing the menu even if user press esc
            while (true)
            {
                ShowMainMenu();
            }
        }
예제 #8
0
 private void OnEncryptionOptionChanged(string option)
 {
     FirmwareSettings.WiFiSettings.Encryption = option != "None";
     FirmwareSettings.Save();
 }
예제 #9
0
 private void OnPasswordChanged(string password)
 {
     FirmwareSettings.WiFiSettings.Password = password;
     FirmwareSettings.Save();
 }
예제 #10
0
 private void OnSsidChanged(string ssidName)
 {
     FirmwareSettings.WiFiSettings.SSID = ssidName;
     FirmwareSettings.Save();
 }