Esempio n. 1
0
        public static void UpdateConfigFile(Controller controller)
        {
            try
            {
                // System.IO.File.Create(@"SD\Configuration\controller.txt");

                using (var filestream = new FileStream(@"SD\Configuration\config.txt", FileMode.Create))
                {
                    StreamWriter sw = new StreamWriter(filestream);

                    sw.WriteLine("macAddress:" + Network.GetMacAddress());
                    sw.WriteLine("modelNumber:" + controller.ModelNumber);
                    sw.WriteLine("revision:" + controller.Revision);
                    sw.WriteLine("firmware:" + controller.Firmware);
                  //  sw.WriteLine("ipAddress:" + controller.IpAddressFromConfiguration);
                    sw.WriteLine("assetNumber:" + controller.AssetNumber);
                    sw.WriteLine("cycleLengthMs:" + controller.CycleLengthMs.ToString());
                    sw.WriteLine("heartbeatsRequiredToChangeState:" + controller.HeartbeatsRequiredToChangeState.ToString());
                    sw.WriteLine("softwareHash:" + controller.SoftwareHash);
                    sw.WriteLine("ntpServer:" + controller.NTPServer);
                    sw.Close();
                    sw.Dispose();
                }

            }
            catch (System.IO.IOException ex)
            {
                Debug.Print(ex.Message);
            }
        }
 internal void GetSettings(Controller controller)
 {
     throw new NotImplementedException();
 }
        private void GetSettingsFromSDCard(Controller controller)
        {
            string strConfiguration = "";
            string[] pairs;

              //  FileHelpers.WriteConfigFile();

            if(!File.Exists(@"SD\Configuration\config.txt")) // If the config file does not exist we will create one
            {
                FileHelpers.WriteConfigFile();
            }

            using (var streamReader = new StreamReader(@"SD\Configuration\config.txt"))
            {
                int x = 0;
                while (streamReader.Peek() > 0)
                {
                    x += 1;
                    string strConfigLine = streamReader.ReadLine();
                    string[] KeyValuePair = strConfigLine.Split(':');

                     KeyValuePair[0] = StringHelper.RemoveExtras(KeyValuePair[0]);
                     KeyValuePair[1] = StringHelper.RemoveExtras(KeyValuePair[1]);

                     try
                     {
                         switch (KeyValuePair[0])
                         {
                             case "modelNumber":
                                 Debug.Print("Model#: " + KeyValuePair[1].ToString());
                                 controller.ModelNumber = KeyValuePair[1].ToString();
                                 break;

                             case "assetNumber":
                                 Debug.Print("Asset#: " + KeyValuePair[1].ToString());
                                 controller.AssetNumber = KeyValuePair[1].ToString();
                                 break;

                             case "cycleLengthMs":
                                 Debug.Print("CycleLengthMS: " + KeyValuePair[1].ToString());
                                 controller.CycleLengthMs = int.Parse(KeyValuePair[1].ToString());
                                 break;

                             case "heartbeatsRequiredToChangeState":
                                 Debug.Print("Heart Beats Reqd To Change State: " + KeyValuePair[1].ToString());
                                 controller.HeartbeatsRequiredToChangeState = int.Parse(KeyValuePair[1].ToString());
                                 break;

                             case "softwareHash":
                                 Debug.Print("Hash: " + KeyValuePair[1].ToString());
                                 controller.SoftwareHash = KeyValuePair[1].ToString();
                                 break;

                             case "ntpServer":
                                 Debug.Print("NTP Server: " + KeyValuePair[1].ToString());
                                 controller.NTPServer = KeyValuePair[1];
                                 break;

                             case "enabled":
                                 Debug.Print("Enabled: " + KeyValuePair[1].ToString());
                                 controller.Enabled = KeyValuePair[1].ToString();
                                 break;

                             //case "ipAddress":
                             //    Debug.Print("ipAddress: " + KeyValuePair[1].ToString());
                             //    controller.IpAddressFromConfiguration = KeyValuePair[1].ToString();
                             //    break;

                             default:
                                 break;
                         }
                     }
                    catch(Exception ex)
                     {
                         Debug.Print(ex.Message);
                    }
                    //pairs. = streamReader.ReadLine();
                }

                //pairs = new string[x];

                //for (var y = 0; y < x; y++)
                //{
                //    string[] KeyValuePair = pairs[x].Split(':');

                    ////************************* Remove Quotes and Slashes *************************
                    //char[] arr = KeyValuePair[0].ToCharArray();

                    //foreach (char c in arr)
                    //{
                    //    Debug.Print(c.ToString());
                    //}

                    //KeyValuePair[0] = StringHelper.RemoveExtras(KeyValuePair[0]);
                    //KeyValuePair[1] = StringHelper.RemoveExtras(KeyValuePair[1]);

                    //switch (KeyValuePair[0])
                    //{
                    //    case "modelNumber":
                    //        Debug.Print("Model#: " + KeyValuePair[1].ToString());
                    //        controller.ModelNumber = KeyValuePair[1].ToString();
                    //        break;

                    //    case "assetNumber":
                    //        Debug.Print("Asset#: " + KeyValuePair[1].ToString());
                    //        controller.AssetNumber = KeyValuePair[1].ToString();
                    //        break;

                    //    case "cycleLengthMs":
                    //        Debug.Print("CycleLengthMS: " + KeyValuePair[1].ToString());
                    //        controller.CycleLengthMs = int.Parse(KeyValuePair[1].ToString());
                    //        break;

                    //    case "heartbeatsRequiredToChangeState":
                    //        Debug.Print("Heart Beats Reqd To Change State: " + KeyValuePair[1].ToString());
                    //        controller.HeartbeatsRequiredToChangeState = int.Parse(KeyValuePair[1].ToString());
                    //        break;

                    //    case "softwareHash":
                    //        Debug.Print("Hash: " + KeyValuePair[1].ToString());
                    //        controller.SoftwareHash = KeyValuePair[1].ToString();
                    //        break;

                    //    case "ntpServer":
                    //        Debug.Print("NTP Server: " + KeyValuePair[1].ToString());
                    //        controller.NTPServer = KeyValuePair[1];
                    //        break;

                    //    case "enabled":
                    //        Debug.Print("Enabled: " + KeyValuePair[1].ToString());
                    //        controller.Enabled = KeyValuePair[1].ToString();
                    //        break;

                    //    default:
                    //        break;
                    //}

                //}

            }
        }
        // TODO Test GetSettingsFromServer
        // TODO Assign to Controller
        // TODO Add get from SD Card and Save To SD Card
        private void GetSettingsFromServer(Controller controller, Network network)
        {
            bool blnSDCardNeedsUpdate = false;

            string strText = "";
            string[] pairs = null;

            //Try the server.  If it fails, then go to the SD Card.
            if (ApolloSpark.Program.network.NetworkUp == true) // && controller.UpdatedFromNetwork == false)
            {
                var responsevalue = String.Empty;

                string url = @"http://sparkhub.metal-matic.com/api/devices/";
               // string url = @"http://*****:*****@"/configuration";

                var request = (HttpWebRequest)WebRequest.Create(url);
                request.Method = "GET";

                request.ContentType = "application/json; charset=utf-8";

                using(var response = (HttpWebResponse)request.GetResponse())
                {
                    using(var responsestream = response.GetResponseStream())
                    {
                        if(responsestream != null)
                        {
                            using(var reader = new StreamReader(responsestream))
                            {

                                strText = reader.ReadToEnd();

                            }
                            pairs = strText.Split(',');
                        }
                    }

                }

                //catch (System.Net.Sockets.SocketException ex)
                //{
                //    Debug.Print(ex.Message + " SC Line 77");
                //   // throw;
                //}
                //catch (System.Net.WebException exc)
                //{
                //    Debug.Print(exc.Message + " SC Line 82");
                //    Debug.Print(exc.Message);
                //    Debug.Print(exc.StackTrace);
                //   // Debug.Print(exc.Status);

                //  //  throw;

                //}

                //for (int x = 0; x < pairs.Length; x++)
                //{
                //    pairs[x].Split(':');

                //}

                if (pairs.Length > 0)
                {
                    for (int x = 0; x < pairs.Length; x++)
                    {
                        string[] KeyValuePair = pairs[x].Split(':');

                        //************************* Remove Quotes and Slashes *************************
                        char[] arr = KeyValuePair[0].ToCharArray();

                        //foreach (char c in arr)
                        //{
                        //    Debug.Print(c.ToString());
                        //}

                        KeyValuePair[0] = StringHelper.RemoveExtras(KeyValuePair[0]);
                        KeyValuePair[1] = StringHelper.RemoveExtras(KeyValuePair[1]);

                        switch (KeyValuePair[0])
                        {
                            case "modelNumber":
                                Debug.Print("Model#: " + KeyValuePair[1].ToString());
                                if (controller.ModelNumber != KeyValuePair[1].ToString())
                                {
                                    blnSDCardNeedsUpdate = true;
                                    controller.ModelNumber = KeyValuePair[1].ToString();
                                }
                                break;

                            case "assetNumber":
                                Debug.Print("Asset#: " + KeyValuePair[1].ToString());
                                if (controller.AssetNumber != KeyValuePair[1].ToString())
                                {
                                    blnSDCardNeedsUpdate = true;
                                    controller.AssetNumber = KeyValuePair[1].ToString();
                                }
                                break;

                            case "cycleLengthMs":
                                Debug.Print("CycleLengthMS: " + KeyValuePair[1].ToString());
                                if (controller.CycleLengthMs != int.Parse(KeyValuePair[1]))
                                {
                                    blnSDCardNeedsUpdate = true;
                                    controller.CycleLengthMs = int.Parse(KeyValuePair[1]);
                                }
                                break;

                            case "heartbeatsRequiredToChangeState":
                                Debug.Print("Heart Beats Reqd To Change State: " + KeyValuePair[1].ToString());
                                if (controller.HeartbeatsRequiredToChangeState != int.Parse(KeyValuePair[1]))
                                {
                                    blnSDCardNeedsUpdate = true;
                                    controller.HeartbeatsRequiredToChangeState = int.Parse(KeyValuePair[1]);
                                }
                                break;

                            case "softwareHash":
                                Debug.Print("Hash: " + KeyValuePair[1].ToString());
                                if (controller.SoftwareHash != (KeyValuePair[1]).ToString())
                                {
                                    blnSDCardNeedsUpdate = true;
                                    controller.SoftwareHash = (KeyValuePair[1]).ToString();
                                }
                                break;

                            case "ntpServer":
                                Debug.Print("NTP Server: " + KeyValuePair[1].ToString());
                                if (controller.NTPServer != (KeyValuePair[1]).ToString())
                                {
                                    blnSDCardNeedsUpdate = true;
                                    controller.NTPServer = (KeyValuePair[1]).ToString();
                                }
                                break;

                            case "enabled":
                                Debug.Print("Enabled: " + KeyValuePair[1].ToString());
                                if (controller.Enabled != (KeyValuePair[1]).ToString())
                                {
                                    blnSDCardNeedsUpdate = true;
                                    controller.Enabled = (KeyValuePair[1]).ToString();
                                }
                                break;

                            //case "ipAddress":
                            //    Debug.Print("Enabled: " + KeyValuePair[1].ToString());
                            //    if (controller.IpAddressFromConfiguration != (KeyValuePair[1]).ToString())
                            //    {
                            //        blnSDCardNeedsUpdate = true;
                            //        controller.IpAddressFromConfiguration = (KeyValuePair[1]).ToString();
                            //    }
                            //    break;

                            default:
                                break;
                        }

                    }
                    if(blnSDCardNeedsUpdate)
                    {

                        FileHelpers.UpdateConfigFile(controller);
                    }
                }

                // TODO Parse this response and assign it to the appropriate properties
            }
        }