// Token: 0x060000BF RID: 191 RVA: 0x0000B384 File Offset: 0x00009584
		public static FlashResult SetFlashResultD(string deivce, bool reuslt)
		{
			Log.w(deivce, "start SetFlashResultD");
			FlashResult flashResult = new FlashResult();
			flashResult.Result = false;
			flashResult.Msg = "upload result failed";
			try
			{
				string text = "";
				if (string.IsNullOrEmpty(deivce))
				{
					flashResult.Result = false;
					flashResult.Msg = "device is null";
					return flashResult;
				}
				Log.w(deivce, "upload flash result");
				TPUB_TEST_FUNC_DLL factoryObject = FactoryCtrl.GetFactoryObject(deivce, out text);
				if (factoryObject == null)
				{
					flashResult.Result = false;
					flashResult.Msg = "error:couldn't get TPUB_TEST_FUNC_DLL";
				}
				else
				{
					bool flag = factoryObject.SaveDataByCPUID(deivce, reuslt, out text);
					text = string.Format("SaveDataByCPUID result {0} status {1}", flag.ToString(), text);
					flashResult.Result = flag;
					flashResult.Msg = text;
					Log.w(deivce, text);
					if (flag)
					{
						Log.w(deivce, "upload result success");
					}
					else
					{
						Log.w(deivce, "upload result failed");
					}
				}
			}
			catch (Exception ex)
			{
				Log.w(string.Concat(new string[]
				{
					deivce,
					" ",
					ex.Message,
					"  ",
					ex.StackTrace
				}));
				FlashResult flashResult2 = flashResult;
				flashResult2.Msg = flashResult2.Msg + " " + ex.Message;
			}
			Log.w(deivce, flashResult.Msg);
			return flashResult;
		}
        //update flashing status using timer
        private void Flashtimer_Tick(object sender, EventArgs e)
        {
            FlashResult.Text = flash.Result;
            FlashResult.Invalidate();
            status(flash.Status);
            ProgressText.Text = (flash.Progress * 100.0).ToString() + "%";
            if (progress.Value == (int)(flash.Progress * 100.0))
            {
                if ((int)(flash.Progress * 100.0) < 100)
                {
                    flash.Progress += 3f / 1000f;
                }
                progress.Value = (int)(flash.Progress * 100.0);
            }
            else
            {
                progress.Value = (int)(flash.Progress * 100.0);
            }

            ProgressText.Text = progress.Value.ToString();

            if (flash.StartTime > DateTime.MinValue)
            {
                TimeSpan timeSpan = DateTime.Now.Subtract(flash.StartTime);
                string   time     = timeSpan.TotalSeconds.ToString();
                time           = time.Substring(0, time.Length - 6);
                FlashTime.Text = string.Format("{0}s", time);
            }
            if (flash.Error)
            {
                Flashtimer.Enabled = false;
                flash.IsUpdate     = false;
                button24.Enabled   = true;
                FlashBtn.Enabled   = true;
                kenzo.SpeakAsync("Sir, Error Detected, " + flash.Status.Replace("_", " ") + " Please try again");
                FlashPort.Visible    = false;
                FlashSpiner.Visible  = false;
                button24.Enabled     = true;
                FlashBtn.Enabled     = true;
                progress.Visible     = false;
                ProgressText.Visible = false;
                FlashTime.Visible    = false;
                FlashResult.Visible  = false;
                status(null);
                Stt.Visible = false;
                check();
                return;
            }
            if (flash.Result == "success")
            {
                flash.IsUpdate        = false;
                FlashResult.BackColor = Color.LightGreen;
                Flashtimer.Enabled    = false;
                kenzo.SpeakAsync("Flashing Device Succesfuly");
                FlashPort.Visible    = false;
                FlashSpiner.Visible  = false;
                button24.Enabled     = true;
                FlashBtn.Enabled     = true;
                progress.Visible     = false;
                ProgressText.Visible = false;
                FlashTime.Visible    = false;
                FlashResult.Visible  = false;
                Stt.Visible          = false;
                check();
            }
        }
Exemple #3
0
        private bool TryOpen(string port)
        {
            SerialPort p = null;

            try
            {
                p             = new SerialPort(port, 115200);
                p.ReadTimeout = 500;

                p.Open();
                Flush(p);

                /* read version */
                Pm3UsbCommand cmdDevInfo = new Pm3UsbCommand(0);
                cmdDevInfo.Write(p);
                Pm3UsbResponse resDevInfo = new Pm3UsbResponse(p);
                if (resDevInfo.Cmd != Pm3UsbResponse.eResponseType.DeviceInfo)
                {
                    LogWindow.Log(LogWindow.eLogLevel.Debug, "[PM3] TryOpen: " + port + " did not reply to a device info");
                    p.Close();
                    return(false);
                }

                DeviceInfo = (eDeviceInfo)resDevInfo.data.arg[0];

                LogWindow.Log(LogWindow.eLogLevel.Debug, "[PM3] Device info: ");
                LogWindow.Log(LogWindow.eLogLevel.Debug, "[PM3]   BOOTROM_PRESENT         " + ((DeviceInfo & eDeviceInfo.BootromPresent) != 0 ? "Y" : "N"));
                LogWindow.Log(LogWindow.eLogLevel.Debug, "[PM3]   OSIMAGE_PRESENT         " + ((DeviceInfo & eDeviceInfo.OsImagePresent) != 0 ? "Y" : "N"));
                LogWindow.Log(LogWindow.eLogLevel.Debug, "[PM3]   MODE_BOOTROM            " + ((DeviceInfo & eDeviceInfo.ModeBootrom) != 0 ? "Y" : "N"));
                LogWindow.Log(LogWindow.eLogLevel.Debug, "[PM3]   MODE_OS                 " + ((DeviceInfo & eDeviceInfo.ModeOs) != 0 ? "Y" : "N"));
                LogWindow.Log(LogWindow.eLogLevel.Debug, "[PM3]   UNDERSTANDS_START_FLASH " + ((DeviceInfo & eDeviceInfo.UnderstandStartFlash) != 0 ? "Y" : "N"));

                if ((DeviceInfo & eDeviceInfo.ModeBootrom) != 0 && (DeviceInfo & eDeviceInfo.ModeBootrom) != 0)
                {
                    Pm3UsbCommand cmdReset = new Pm3UsbCommand((ulong)Pm3UsbCommand.eCommandType.HardwareReset);
                    CurrentPort = port;
                    Port        = p;

                    if (!File.Exists(Flashfile))
                    {
                        LogWindow.Log(LogWindow.eLogLevel.Error, "[PM3] Device started in bootloader mode, but I cannot find flash file " + Flashfile + ". Reset device.");
                    }
                    else
                    {
                        bool bootloader = false;
                        var  segs       = ReadFlash(Flashfile, out bootloader);

                        FlashRequestContext ctx = new FlashRequestContext();

                        ctx.Bootloader = bootloader;
                        ctx.FlashFile  = Flashfile;
                        ctx.Proceed    = false;

                        FlashRequest?.Invoke(this, ctx);

                        if (ctx.Proceed)
                        {
                            bool success = Flash(segs, bootloader);
                            FlashResult?.Invoke(this, success);
                        }
                    }

                    cmdReset.Write(p);
                    p.Close();

                    return(false);
                }

                Pm3UsbCommand cmdPing = new Pm3UsbCommand(0x109);
                cmdPing.Write(p);
                Pm3UsbResponse resPing = new Pm3UsbResponse(p);

                if (resPing.Cmd != Pm3UsbResponse.eResponseType.ACK)
                {
                    LogWindow.Log(LogWindow.eLogLevel.Debug, "[PM3] TryOpen: " + port + " did not reply to a ping");
                    p.Close();
                    return(false);
                }

                /* read version */
                Pm3UsbCommand cmdVers = new Pm3UsbCommand(0x107);
                cmdVers.Write(p);
                Pm3UsbResponse resVers = new Pm3UsbResponse(p);
                if (resVers.Cmd != Pm3UsbResponse.eResponseType.ACK)
                {
                    LogWindow.Log(LogWindow.eLogLevel.Debug, "[PM3] TryOpen: " + port + " did not reply to a version info");
                    p.Close();
                    return(false);
                }
                Thread.Sleep(500);
                Flush(p);

                LogWindow.Log(LogWindow.eLogLevel.Debug, "[PM3] Chip ID: 0x" + resVers.data.arg[0].ToString("X8"));
                LogWindow.Log(LogWindow.eLogLevel.Debug, "[PM3] Flash:   0x" + resVers.data.arg[1].ToString("X8"));
                LogWindow.Log(LogWindow.eLogLevel.Debug, "[PM3] Caps:    0x" + resVers.data.arg[2].ToString("X8"));
                string versionString = Encoding.UTF8.GetString(resVers.data.d, 0, resVers.data.dataLen - 1);
                LogWindow.Log(LogWindow.eLogLevel.Debug, "[PM3] Version:");
                foreach (string line in versionString.Split('\n'))
                {
                    LogWindow.Log(LogWindow.eLogLevel.Debug, "[PM3]     " + line);
                }

                CurrentPort = port;
                Port        = p;

                /* does it support the unlock command? */
                int reason = 0;
                UnlockSupported = true;
                UnlockTag(0xDEADBEEF, ref reason);

                /* if not supported, the command will simply time out */
                UnlockSupported = reason > 0;
                LogWindow.Log(LogWindow.eLogLevel.Debug, "[PM3] Device does " + (UnlockSupported ? "" : "*NOT*") + " support SLIX-L unlock command");

                DeviceFound?.Invoke(this, CurrentPort);
                LogWindow.Log(LogWindow.eLogLevel.Debug, "[PM3] TryOpen: " + port + " successfully opened");


                Connected = true;
                return(true);
            }
            catch (Exception ex)
            {
                try
                {
                    if (p != null && p.IsOpen)
                    {
                        p.Close();
                    }
                }
                catch (Exception e)
                {
                }
            }

            return(false);
        }
Exemple #4
0
        private ActionResult RenderResultListFlash(ListHeaderModel header)
        {
            var results   = ResultsController.GetFlashResult(header);
            var dataTable = SortingClass.CreateStructure();

            dataTable.Columns.Add("pos0", typeof(int));
            //dt.Rows.Add(res.Climber.Vk, 0, String.Empty, res.Climber.SecretaryId.Value, String.Empty,
            //                0.0, String.Empty, sp, curPos);
            //climbersWithResult.Add(res.Climber.SecretaryId.Value);
            foreach (var r in results.Values.OfType <ResultsController.FlashRoundResult>().Where(r => r.RouteNum == 1))
            {
                var climber = header.Competition.Climbers.FirstOrDefault(c => c.SecretaryId == r.ClimberId);
                if (climber == null)
                {
                    continue;
                }
                int  sp;
                bool allDSQ = true, allDNS = true;
                foreach (var route in r.Routes)
                {
                    if (allDNS && !route.ResText.ToLowerInvariant().Contains("н/я"))
                    {
                        allDNS = false;
                    }
                    if (allDSQ && !route.ResText.ToLowerInvariant().Contains("дискв"))
                    {
                        allDSQ = false;
                    }
                    if (!allDNS || allDSQ)
                    {
                        break;
                    }
                }
                if (allDNS && allDSQ)
                {
                    continue;
                }
                if (allDNS)
                {
                    sp = 2;
                }
                else if (allDSQ)
                {
                    sp = 1;
                }
                else
                {
                    sp = 0;
                }
                dataTable.Rows.Add(climber.Vk, 0, String.Empty, r.ClimberId, String.Empty, 0.0, String.Empty, sp, r.Pos);
            }
            if (dataTable.Rows.Count > 0)
            {
                SortingClass.SortResults(dataTable, header.Quota, true, false, header.CompetitionRules, false);
            }
            List <FlashResult> model = new List <FlashResult>();

            foreach (DataRow row in dataTable.Rows)
            {
                FlashResult flshRes = new FlashResult();
                flshRes.Climber    = header.Competition.Climbers.First(r => r.SecretaryId == (int)row[3]);
                flshRes.PointsText = (string)row["ptsText"];
                flshRes.PosText    = (string)row["posText"];
                flshRes.PreQf      = false;
                flshRes.Qf         = (string)row["qf"];
                flshRes.ResText    = results[flshRes.Climber.SecretaryId.Value].Pts.ToString("0.00");
                foreach (var list in header.Children.OrderBy(r => r.LocalIid))
                {
                    var listRes = list.ResultsLead.FirstOrDefault(r => r.ClimberId == flshRes.Climber.Iid);
                    if (listRes == null)
                    {
                        flshRes.Routes.Add(new LeadResultLine
                        {
                            ResText    = String.Empty,
                            PointsText = String.Empty,
                            PosText    = String.Empty
                        });
                    }
                    else
                    {
                        flshRes.Routes.Add(listRes);
                    }
                }
                model.Add(flshRes);
            }

            return(PartialView("RenderResultListFlash", model));
        }