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); }
private void DisplayWorkerList() { cmbWorkerVersion.Items.Clear(); if (LoadVersionInfo("WORKER")) { KeyValuePair <string, List <cls_Version_Info> > kv = this.ver_mgr.version_list.Where(p => p.Key == "WORKER").FirstOrDefault(); foreach (cls_Version_Info ver in kv.Value) { cmbWorkerVersion.Items.Add(ver.ap_version); } } if (this.gw_manager.gateway_list.Count > 0) { lvWorkerList.BeginUpdate(); lvWorkerList.Items.Clear(); List <cls_OTA_Gateway_Info> tmp_list = new List <cls_OTA_Gateway_Info>(); foreach (cls_Gateway_Info gw in this.gw_manager.gateway_list) { if (gw.virtual_flag) { continue; } cls_OTA_Gateway_Info ota_gw = this.ota_manager.ota_worker_list.Where(p => p.gateway_id == gw.gateway_id).FirstOrDefault(); if (ota_gw == null) { ListViewItem lvItem = new ListViewItem(gw.gateway_id); lvItem.SubItems.Add(gw.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 lvWorkerList.Items.Add(lvItem); cls_OTA_Gateway_Info tmp = new cls_OTA_Gateway_Info(); tmp.gateway_id = gw.gateway_id; tmp.ap_type = "WORKER"; tmp_list.Add(tmp); } else { ListViewItem lvItem = new ListViewItem(gw.gateway_id); lvItem.SubItems.Add(gw.location); lvItem.SubItems.Add(ota_gw.ap_version); //Version if (gw.virtual_flag) { lvItem.SubItems.Add("Y"); } else { lvItem.SubItems.Add("N"); } lvItem.SubItems.Add(ota_gw.update_status); lvItem.SubItems.Add(ota_gw.last_update_time.ToString()); lvItem.SubItems.Add(ota_gw.status_message); //Return Message lvWorkerList.Items.Add(lvItem); } } lvWorkerList.EndUpdate(); if (tmp_list.Count > 0) { foreach (cls_OTA_Gateway_Info ogi in tmp_list) { this.ota_manager.ota_worker_list.Add(ogi); } } } }