Example #1
0
        private void btnUpdate_Click(object sender, EventArgs e)
        {
            cls_Cmd_OTA cmd_ota = new cls_Cmd_OTA();
            int         ver_index;
            ListView    lvList = null;
            string      gw_id;
            string      dv_id;

            if (VerifyFTPData())
            {
                this.ota_manager.ftp_info.server_ip   = txtServerIP.Text.Trim();
                this.ota_manager.ftp_info.server_port = txtServerPort.Text.Trim();
                this.ota_manager.ftp_info.user_id     = txtUserID.Text.Trim();
                this.ota_manager.ftp_info.password    = txtPassword.Text.Trim();

                SaveFTPConfig();
            }
            else
            {
                return;
            }

            if (VerifyInputData(AP_TYPE[tabOTA.SelectedIndex]))
            {
                SaveOTAConfig();
            }
            else
            {
                return;
            }

            ver_index = 0;
            if (tabOTA.SelectedIndex == 0) //IOT Tab Page
            {
                lvList    = lvIOTList;
                ver_index = 2;
            }
            else if (tabOTA.SelectedIndex == 1) //Worker Tab Page
            {
                lvList    = lvWorkerList;
                ver_index = 2;
            }
            else if (tabOTA.SelectedIndex == 2) //Firmware Tab Page
            {
                lvList    = lvFirmwareList;
                ver_index = 3;
            }

            if (lvList != null)
            {
                foreach (ListViewItem lvItem in lvList.CheckedItems)
                {
                    //MessageBox.Show(lvItem.SubItems[2].Text, "Information");
                    cmd_ota.Trace_ID        = DateTime.Now.ToString("yyyyMMddHHmmssfff");
                    cmd_ota.FTP_Server      = txtServerIP.Text.Trim();
                    cmd_ota.FTP_Port        = txtServerPort.Text.Trim();
                    cmd_ota.User_name       = txtUserID.Text.Trim();
                    cmd_ota.Password        = txtPassword.Text.Trim();
                    cmd_ota.App_Name        = AP_TYPE[tabOTA.SelectedIndex];
                    cmd_ota.Current_Version = lvItem.SubItems[ver_index].Text;
                    cmd_ota.New_Version     = this.ver_info.ap_version;
                    //cmd_ota.Process_ID =
                    cmd_ota.Image_Name = this.ver_info.ap_store_path_name;
                    cmd_ota.MD5_String = this.ver_info.md5_string;

                    string json_string = JsonConvert.SerializeObject(cmd_ota, Newtonsoft.Json.Formatting.Indented);
                    gw_id = lvItem.Text.Trim();
                    if (tabOTA.SelectedIndex == 0 || tabOTA.SelectedIndex == 1)
                    {
                        cls_Gateway_Info gw = this.gw_manager.gateway_list.Where(p => p.gateway_id == gw_id).FirstOrDefault();
                        dv_id = gw.device_info[0].device_name;

                        cls_OTA_Gateway_Info ogi = null;
                        if (tabOTA.SelectedIndex == 0)
                        {
                            ogi = this.ota_manager.ota_iot_list.Where(o => o.gateway_id == gw_id).FirstOrDefault();
                        }
                        else
                        {
                            ogi = this.ota_manager.ota_worker_list.Where(o => o.gateway_id == gw_id).FirstOrDefault();
                        }

                        if (ogi != null)
                        {
                            ogi.ap_new_version         = this.ver_info.ap_version;
                            ogi.ap_new_store_path_name = this.ver_info.ap_store_path_name;
                            ogi.md5_new_string         = this.ver_info.md5_string;
                            ogi.ap_description         = this.ver_info.ap_description;
                        }
                    }
                    else
                    {
                        dv_id = lvItem.SubItems[1].Text.Trim();
                        cls_OTA_Device_Info odi = this.ota_manager.ota_firmware_list.Where(o => (o.gateway_id == gw_id) && (o.device_id == dv_id)).FirstOrDefault();
                        if (odi != null)
                        {
                            odi.ap_new_version         = this.ver_info.ap_version;
                            odi.ap_new_store_path_name = this.ver_info.ap_store_path_name;
                            odi.md5_new_string         = this.ver_info.md5_string;
                            odi.ap_description         = this.ver_info.ap_description;
                        }
                    }

                    SaveOTAConfig();
                    IEW.Platform.Kernel.Platform.Instance.Invoke("GatewayService", "SendOTA", new object[] { gw_id, dv_id, json_string });
                    Thread.Sleep(500);
                }
            }
        }
        public void OTAAck(xmlMessage InputData)
        {
            // Parse Mqtt Topic
            string[] Topic     = InputData.MQTTTopic.Split('/'); // /IEW/GateWay/Device/Cmd/OTA/Ack
            string   GateWayID = Topic[2].ToString();
            string   DeviceID  = Topic[3].ToString();

            cls_Cmd_OTA_Ack ota_ack = new cls_Cmd_OTA_Ack();

            ota_ack = JsonConvert.DeserializeObject <cls_Cmd_OTA_Ack>(InputData.MQTTPayload.ToString());
            if (ota_ack.Cmd_Result == "OK")
            {
                if (ota_ack.App_Name == "IOT")
                {
                    cls_OTA_Gateway_Info ogi = ObjectManager.OTAManager.ota_iot_list.Where(p => p.gateway_id == GateWayID).FirstOrDefault();
                    if (ogi != null)
                    {
                        if (ota_ack.New_Version == ogi.ap_new_version)
                        {
                            ogi.ap_version = ogi.ap_new_version;
                            ogi.ap_last_store_path_name = ogi.ap_new_store_path_name;
                            ogi.md5_last_string         = ogi.md5_new_string;
                            ogi.ap_new_version          = "";
                            ogi.ap_new_store_path_name  = "";
                            ogi.md5_new_string          = "";
                            ogi.update_status           = "OK";
                            ogi.last_update_time        = DateTime.Now;
                            ogi.status_message          = ota_ack.Return_Message;
                        }
                    }
                }
                else if (ota_ack.App_Name == "WORKER")
                {
                    cls_OTA_Gateway_Info ogi = ObjectManager.OTAManager.ota_worker_list.Where(p => p.gateway_id == GateWayID).FirstOrDefault();
                    if (ogi != null)
                    {
                        if (ota_ack.New_Version == ogi.ap_new_version)
                        {
                            ogi.ap_version = ogi.ap_new_version;
                            ogi.ap_last_store_path_name = ogi.ap_new_store_path_name;
                            ogi.md5_last_string         = ogi.md5_new_string;
                            ogi.ap_new_version          = "";
                            ogi.ap_new_store_path_name  = "";
                            ogi.md5_new_string          = "";
                            ogi.update_status           = "OK";
                            ogi.last_update_time        = DateTime.Now;
                            ogi.status_message          = ota_ack.Return_Message;
                        }
                    }
                }
                else if (ota_ack.App_Name == "FIRMWARE")
                {
                    cls_OTA_Device_Info odi = ObjectManager.OTAManager.ota_firmware_list.Where(p => (p.gateway_id == GateWayID) && (p.device_id == DeviceID)).FirstOrDefault();
                    if (odi != null)
                    {
                        if (ota_ack.New_Version == odi.ap_new_version)
                        {
                            odi.ap_version = odi.ap_new_version;
                            odi.ap_last_store_path_name = odi.ap_new_store_path_name;
                            odi.md5_last_string         = odi.md5_new_string;
                            odi.ap_new_version          = "";
                            odi.ap_new_store_path_name  = "";
                            odi.md5_new_string          = "";
                            odi.update_status           = "OK";
                            odi.last_update_time        = DateTime.Now;
                            odi.status_message          = ota_ack.Return_Message;
                        }
                    }
                }
            }
            else //OTA Result is NG
            {
                if (ota_ack.App_Name == "IOT")
                {
                    cls_OTA_Gateway_Info ogi = ObjectManager.OTAManager.ota_iot_list.Where(p => p.gateway_id == GateWayID).FirstOrDefault();
                    if (ogi != null)
                    {
                        ogi.update_status    = ota_ack.Cmd_Result;
                        ogi.status_message   = ota_ack.Return_Message;
                        ogi.last_update_time = DateTime.Now;
                    }
                }
                else if (ota_ack.App_Name == "WORKER")
                {
                    cls_OTA_Gateway_Info ogi = ObjectManager.OTAManager.ota_worker_list.Where(p => p.gateway_id == GateWayID).FirstOrDefault();
                    if (ogi != null)
                    {
                        ogi.update_status    = ota_ack.Cmd_Result;
                        ogi.status_message   = ota_ack.Return_Message;
                        ogi.last_update_time = DateTime.Now;
                    }
                }
                else if (ota_ack.App_Name == "FIRMWARE")
                {
                    cls_OTA_Device_Info odi = ObjectManager.OTAManager.ota_firmware_list.Where(p => (p.gateway_id == GateWayID) && (p.device_id == DeviceID)).FirstOrDefault();
                    if (odi != null)
                    {
                        odi.update_status    = ota_ack.Cmd_Result;
                        odi.status_message   = ota_ack.Return_Message;
                        odi.last_update_time = DateTime.Now;
                    }
                }
            }

            //Update new version information for gateway/device
            this.ObjectManager.OnOTAAckEventCall(null);
        }
Example #3
0
        private void DisplayFirmwareList()
        {
            cmbFirmwareVersion.Items.Clear();
            if (LoadVersionInfo("FIRMWARE"))
            {
                KeyValuePair <string, List <cls_Version_Info> > kv = this.ver_mgr.version_list.Where(p => p.Key == "FIRMWARE").FirstOrDefault();
                foreach (cls_Version_Info ver in kv.Value)
                {
                    cmbFirmwareVersion.Items.Add(ver.ap_version);
                }
            }

            if (this.gw_manager.gateway_list.Count > 0)
            {
                lvFirmwareList.BeginUpdate();
                lvFirmwareList.Items.Clear();
                List <cls_OTA_Device_Info> tmp_list = new List <cls_OTA_Device_Info>();

                foreach (cls_Gateway_Info gw in this.gw_manager.gateway_list)
                {
                    if (gw.virtual_flag)
                    {
                        continue;
                    }

                    foreach (cls_Device_Info dv in gw.device_info)
                    {
                        cls_OTA_Device_Info ota_dv = this.ota_manager.ota_firmware_list.Where(p => (p.gateway_id == gw.gateway_id) && (p.device_id == dv.device_name)).FirstOrDefault();
                        if (ota_dv == null)
                        {
                            ListViewItem lvItem = new ListViewItem(gw.gateway_id);
                            lvItem.SubItems.Add(dv.device_name);
                            lvItem.SubItems.Add(dv.device_location);
                            lvItem.SubItems.Add(""); //Version
                            if (gw.virtual_flag)
                            {
                                lvItem.SubItems.Add("Y");
                            }
                            else
                            {
                                lvItem.SubItems.Add("N");
                            }

                            lvItem.SubItems.Add(""); //Status
                            lvItem.SubItems.Add(""); //Update Time
                            lvItem.SubItems.Add(""); //Return Message
                            lvFirmwareList.Items.Add(lvItem);

                            cls_OTA_Device_Info tmp = new cls_OTA_Device_Info();
                            tmp.gateway_id = gw.gateway_id;
                            tmp.device_id  = dv.device_name;
                            tmp.ap_type    = "FIRMWARE";
                            tmp_list.Add(tmp);
                        }
                        else
                        {
                            ListViewItem lvItem = new ListViewItem(gw.gateway_id);
                            lvItem.SubItems.Add(dv.device_name);
                            lvItem.SubItems.Add(dv.device_location);
                            lvItem.SubItems.Add(ota_dv.ap_version); //Version
                            if (gw.virtual_flag)
                            {
                                lvItem.SubItems.Add("Y");
                            }
                            else
                            {
                                lvItem.SubItems.Add("N");
                            }
                            lvItem.SubItems.Add(ota_dv.update_status);
                            lvItem.SubItems.Add(ota_dv.last_update_time.ToString());
                            lvItem.SubItems.Add(ota_dv.status_message); //Return Message
                            lvFirmwareList.Items.Add(lvItem);
                        }
                    }
                }
                lvFirmwareList.EndUpdate();
                if (tmp_list.Count > 0)
                {
                    foreach (cls_OTA_Device_Info odi in tmp_list)
                    {
                        this.ota_manager.ota_firmware_list.Add(odi);
                    }
                }
            }
        }