Example #1
0
        public override void RunDeploy(DeployConfiState configState)
        {
            ZCProduct zc = base.BelongProduct as ZCProduct;

            zc.DeployConfigCheck = configState;

            if (zc.InProcess == false)
            {
                LogManager.InfoLog.LogProcInfo("VOBCDevice", "RunDeploy", "开始ZC产品:" + zc.ProductID + "部署过程");
                BelongProduct.Report.ReportWindow("开始ZC产品:" + zc.ProductID + "部署过程");
                //重置类型文件添加状态
                zc.AddState.Reset();
                zc.Bfis.Clear();
                zc.Uis.Clear();
                CDeviceDataFactory.Instance.ZcContainer.dataModify.Color();
                zc.InProcess = true;
            }
            DeployExec();
            if (zc.IsReadyUpdate())
            {
                zc.FileUpdate();
            }
        }
Example #2
0
        /// <summary>
        /// 重写函数“获取待发送文件列表并校验文件是否存在”
        /// </summary>
        /// <param name="vobc">VOBC产品对象类</param>
        /// <returns>执行结果  成功or失败</returns>
        public override bool GetFileListAndCheckExist(VOBCProduct vobc)
        {
            //处理结果
            bool dealResult = true;

            //文件路径键值信息
            Dictionary <string, string> filePathList = new Dictionary <string, string>();

            //待烧录文件类型列表
            List <vobcFileType> fileTypeList = new List <vobcFileType>();

            //获取烧录文件配置
            DeployConfiState configState = vobc.DeployConfigCheck;

            //检查引导文件勾选状态
            if (configState.IsBootLoaderCheck)
            {
                filePathList.Add(m_mmiBootRomPath.Key, m_mmiBootRomPath.Value);
                fileTypeList.Add(vobcFileType.BootLoader);
            }
            //检查内核文件勾选状态
            if (configState.IsCoreCheck)
            {
                filePathList.Add(m_mmiCorePath.Key, m_mmiCorePath.Value);
                fileTypeList.Add(vobcFileType.CORE);
            }
            //检查配置文件勾选状态
            if (configState.IsNvRamCheck)
            {
                filePathList.Add(m_mmiConfigPath.Key, m_mmiConfigPath.Value);
                fileTypeList.Add(vobcFileType.NVRAM);
            }



            //有文件需要发送
            if (filePathList.Count > 0)
            {
                //文件是否全部真实存在 若有任何一个不存在 该子子系统将不进行烧录
                bool isFileAllExist = true;

                foreach (string filePath in filePathList.Keys)
                {
                    //文件存在
                    if (System.IO.File.Exists(filePath))
                    {
                        //文件存在 不执行操作
                    }
                    //文件不存在
                    else
                    {
                        //不是所有文件都存在
                        isFileAllExist = false;

                        //处理失败
                        dealResult = false;

                        //启用跳过标志 将不执行该子子系统的部署
                        vobc.SkipFlag = true;

                        //不在执行过程中
                        //vobc.InProcess = false; Modified @ 10.16

                        //日志信息
                        string logMsg = "VOBC" + vobc.ProductID + " 子子系统设备:" + DeviceType + "的待发送文件不存在,文件地址应为:" + filePath;

                        //记录日志
                        LogManager.InfoLog.LogCommunicationInfo("VOBCMMIDevice", "GetFileListAndCheckExist", logMsg);

                        //界面信息打印
                        vobc.Report.ReportWindow(logMsg);
                    }
                }

                //如果文件都存在 数据添加到集合队列中
                if (isFileAllExist)
                {
                    ///构造VOBC产品MMI设备的checkfile
                    m_vobcCheckFile.vobcSystemType   = vobcSystemType.MMI;
                    m_vobcCheckFile.vobcFilePathList = filePathList;
                    m_vobcCheckFile.vobcFileTypeList = fileTypeList;
                    vobc.CheckFileList.Add(m_vobcCheckFile);
                }
                else
                {
                    //无操作
                }
            }
            //没有文件需要发送
            else
            {
                //处理失败
                dealResult = false;

                //启用跳过标志 将不执行该子子系统的部署
                vobc.SkipFlag = true;

                //日志信息
                string logMsg = "VOBC" + vobc.ProductID + " 子子系统设备:" + DeviceType + "没有文件需要发送,部署停止,请检查选择并重新开始部署!";

                //记录日志
                LogManager.InfoLog.LogCommunicationInfo("VOBCMMIDevice", "GetFileListAndCheckExist", logMsg);

                //界面信息打印
                vobc.Report.ReportWindow(logMsg);
            }

            return(dealResult);
        }
        /// <summary>
        /// VOBC产品子子系统设备执行部署实现方法
        /// </summary>
        /// <param name="configState">预检状态信息</param>
        public override void RunDeploy(DeployConfiState configState)
        {
            //获取当前正在处理的vobc产品类对象
            VOBCProduct vobc = base.BelongProduct as VOBCProduct;

            //当前为VOBC产品第一个烧录设备  执行产品烧录前的准备过程
            if (vobc.InProcess == false && vobc.SkipFlag == false)
            {
                ///清空烧录过程状态
                vobc.ResetDeviceProcState();

                //通知界面刷新
                CDeviceDataFactory.Instance.VobcContainer.dataModify.Modify();

                //预检状态信息赋值
                vobc.DeployConfigCheck = configState;
                vobc.recvCheckCount    = 0;

                //开始部署前清空更新成功文件计数
                UpdateSuccessFileCount = 0;

                #region 给予更新状态实例赋初始值--依据用户在界面中勾选的烧录文件类型
                vobc._updateFileState = new VOBCUpdateFileState();

                vobc._updateFileState.AtoBootCompleteFlag  = configState.IsBootLoaderCheck;
                vobc._updateFileState.AtpBootCompleteFlag  = configState.IsBootLoaderCheck;
                vobc._updateFileState.ComBootCompleteFlag  = configState.IsBootLoaderCheck;
                vobc._updateFileState.MmiBootCompleteFlag  = configState.IsBootLoaderCheck;
                vobc._updateFileState.CcovBootCompleteFlag = configState.IsBootLoaderCheck;

                vobc._updateFileState.AtoCoreCompleteFlag  = configState.IsCoreCheck;
                vobc._updateFileState.AtpCoreCompleteFlag  = configState.IsCoreCheck;
                vobc._updateFileState.ComCoreCompleteFlag  = configState.IsCoreCheck;
                vobc._updateFileState.MmiCoreCompleteFlag  = configState.IsCoreCheck;
                vobc._updateFileState.CcovCoreCompleteFlag = configState.IsCoreCheck;

                vobc._updateFileState.AtoDataCompleteFlag  = configState.IsDataCheck;
                vobc._updateFileState.AtpDataCompleteFlag  = configState.IsDataCheck;
                vobc._updateFileState.CcovDataCompleteFlag = configState.IsDataCheck;

                vobc._updateFileState.AtoNvramCompleteFlag = configState.IsNvRamCheck;
                vobc._updateFileState.AtpNvramCompleteFlag = configState.IsNvRamCheck;
                vobc._updateFileState.MmiNvramCompleteFlag = configState.IsNvRamCheck;

                vobc._updateFileState.CcovConfigCompleteFlag = configState.IsIniCheck;

                #endregion
                //获取对端状态
                VOBCProduct oppovobc = CDeviceDataFactory.Instance.GetOppositeProductByIDEnd(vobc.ProductID);
                //设备预检
                string preCheckResult = PreCheck(vobc.VobcStateInfo, oppovobc.VobcStateInfo);

                //预检结论等于空即预检成功  不等于空 预检失败
                if (preCheckResult != String.Empty)
                {
                    //设置VOBC产品下的子子系统预检状态
                    foreach (IDevice device in vobc.CBelongsDevice)
                    {
                        device.PreCheckResult     = false;
                        device.PreCheckFailReason = preCheckResult;
                    }

                    //刷新界面
                    CDeviceDataFactory.Instance.VobcContainer.dataModify.Modify();

                    //记录警告日志
                    LogManager.InfoLog.LogProcWarning("VOBCDevice", "RunDeploy", "VOBC产品:" + base.BelongProduct.ProductID + "预检失败,原因" + preCheckResult);
                    LogManager.InfoLog.LogProcWarning("VOBCDevice", "RunDeploy", "VOBC产品:" + base.BelongProduct.ProductID + "部署未执行,部署进程结束");

                    vobc.SkipFlag  = true;
                    vobc.InProcess = false;
                    vobc.Report.ReportWindow("VOBC" + vobc.ProductID + "更新失败!请检查是否满足预检通过条件并重新开始部署");
                    ///通知刷新背景色
                    CDeviceDataFactory.Instance.VobcContainer.dataModify.Color();
                }
                else
                {
                    //设置VOBC产品下的子子系统预检状态
                    foreach (IDevice device in vobc.CBelongsDevice)
                    {
                        device.PreCheckResult     = true;
                        device.PreCheckFailReason = preCheckResult;
                    }

                    //记录日志
                    LogManager.InfoLog.LogProcInfo("VOBCDevice", "RunDeploy", "开始VOBC产品:" + base.BelongProduct.ProductID + "部署过程");

                    //设置跳过标志为false  后续代码根据此标志 执行具体部署
                    vobc.SkipFlag = false;

                    //生成配置文件
                    BelongProduct.GenConfig();

                    //当前处于部署阶段
                    vobc.InProcess = true;
                }

                ////用完清空VobcStateInfo(有误)
                //vobc.VobcStateInfo = null;
                //oppovobc.VobcStateInfo = null;
            }

            //如果跳过标志为假且当前处在部署第一阶段,执行部署
            if ((!vobc.SkipFlag) && (vobc.StepOne))
            {
                vobc.InProcess = true;
                CDeviceDataFactory.Instance.VobcContainer.dataModify.Color();

                //执行部署
                DeployExec();

                //若执行部署过程中 跳出标志被置为true
                if (vobc.SkipFlag == true)
                {
                    ///当前处于部署之中
                    if (vobc.InProcess == true)
                    {
                        //刷新界面日志信息
                        vobc.Report.ReportWindow("VOBC" + vobc.ProductID + "更新失败:执行过程中出现失败环节,请重新开始部署");
                        vobc.InProcess = false;
                    }

                    ///通知刷新背景色
                    CDeviceDataFactory.Instance.VobcContainer.dataModify.Color();
                }
            }
            //当前处于第一阶段但是跳过标志为true,则更新失败
            else if (vobc.StepOne)
            {
                LogManager.InfoLog.LogProcInfo("VOBCDevice", "RunDeploy", base.BelongProduct.ProductID + "部署过程失败:生成配置文件前的相关环节失败或未收到允许上传的回复");
                //vobc.Report.ReportWindow("更新失败!(生成配置文件前的相关环节失败或未收到允许上传的回复)");
                //刷新界面
                CDeviceDataFactory.Instance.VobcContainer.dataModify.Modify();
                CDeviceDataFactory.Instance.VobcContainer.dataModify.Color();
            }
            //当前处于第二阶段,任何在第二阶段运行至此处的设备不予理会,第一阶段结束后则证明更新标志为已下发
            else
            {
            }
        }
Example #4
0
        /// <summary>
        /// 重写函数“获取待发送文件列表并校验文件是否存在”
        /// </summary>
        /// <param name="vobc">VOBC产品对象类</param>
        /// <returns>执行结果  成功or失败</returns>
        public override bool GetFileListAndCheckExist(VOBCProduct vobc)
        {
            //处理结果
            bool dealResult = true;

            //if (base.BelongProduct.ProductID.Contains("TC1"))
            //{
            //    try
            //    {
            //        //CCOV统一使用一个配置文件config.ini,将红/蓝网关IP信息和WGB设备厂商信息写在一起
            //        File.Copy(System.Windows.Forms.Application.StartupPath + CShareLib.VOBC_GEN_FILEPATH + "\\Red\\config.ini", m_ccovIniPath.Key, true);
            //    }
            //    catch
            //    {
            //        MessageBox.Show("请检查CCOV配置文件路径");
            //    }
            //}
            //else if (base.BelongProduct.ProductID.Contains("TC2"))
            //{
            //    try
            //    {
            //        //CCOV统一使用一个配置文件config.ini,将红/蓝网关IP信息和WGB设备厂商信息写在一起
            //        File.Copy(System.Windows.Forms.Application.StartupPath + CShareLib.VOBC_GEN_FILEPATH + "\\Blue\\config.ini", m_ccovIniPath.Key, true);
            //    }
            //    catch
            //    {
            //        MessageBox.Show("请检查CCOV配置文件路径");
            //    }
            //}
            //else
            //{
            //    LogManager.InfoLog.LogCommunicationError("MainWindow", "ProductReport", "非法列车!");
            //}

            //文件路径键值信息
            Dictionary <string, string> filePathList = new Dictionary <string, string>();

            //待烧录文件类型列表
            List <vobcFileType> fileTypeList = new List <vobcFileType>();

            //获取烧录文件配置
            DeployConfiState configState = vobc.DeployConfigCheck;

            //检查引导文件勾选状态
            if (configState.IsBootLoaderCheck)
            {
                filePathList.Add(m_ccovBootRomPath.Key, m_ccovBootRomPath.Value);
                fileTypeList.Add(vobcFileType.BootLoader);
            }
            //检查内核文件勾选状态
            if (configState.IsCoreCheck)
            {
                filePathList.Add(m_ccovCorePath.Key, m_ccovCorePath.Value);
                fileTypeList.Add(vobcFileType.CORE);
            }
            //检查数据文件勾选状态
            if (configState.IsDataCheck)
            {
                filePathList.Add(m_ccovDataPath.Key, m_ccovDataPath.Value);
                fileTypeList.Add(vobcFileType.DATA);
            }
            //检查ini配置文件勾选状态
            if (configState.IsIniCheck)
            {
                filePathList.Add(m_ccovIniPath.Key, m_ccovIniPath.Value);
                fileTypeList.Add(vobcFileType.CCOVConfig);
            }



            //有文件需要发送
            if (filePathList.Count > 0)
            {
                //文件是否全部真实存在 若有任何一个不存在 该子子系统将不进行烧录
                bool isFileAllExist = true;

                foreach (string filePath in filePathList.Keys)
                {
                    //文件存在
                    if (System.IO.File.Exists(filePath))
                    {
                        //文件存在 不执行操作
                    }
                    //文件不存在
                    else
                    {
                        //不是所有文件都存在
                        isFileAllExist = false;

                        //处理失败
                        dealResult = false;

                        //启用跳过标志 将不执行该子子系统的部署
                        vobc.SkipFlag = true;

                        //不在执行过程中
                        //vobc.InProcess = false; Modified @ 10.16

                        //日志信息
                        string logMsg = "VOBC" + vobc.ProductID + " 子子系统设备:" + DeviceType + "的待发送文件不存在,文件地址应为:" + filePath;

                        //记录日志
                        LogManager.InfoLog.LogCommunicationInfo("VOBCCCOVDevice", "GetFileListAndCheckExist", logMsg);

                        //界面信息打印
                        vobc.Report.ReportWindow(logMsg);

                        ///通知刷新背景色
                        CDeviceDataFactory.Instance.VobcContainer.dataModify.Color();
                    }
                }

                //如果文件都存在 数据添加到集合队列中
                if (isFileAllExist)
                {
                    ///构造VOBC产品CCOV设备的checkfile
                    m_vobcCheckFile.vobcSystemType   = vobcSystemType.CCOV;
                    m_vobcCheckFile.vobcFilePathList = filePathList;
                    m_vobcCheckFile.vobcFileTypeList = fileTypeList;
                    vobc.CheckFileList.Add(m_vobcCheckFile);
                }
                else
                {
                    //无操作
                }
            }
            //没有文件需要发送
            else
            {
                //处理失败
                dealResult = false;

                //启用跳过标志 将不执行该子子系统的部署
                vobc.SkipFlag = true;

                //日志信息
                string logMsg = "VOBC" + vobc.ProductID + " 子子系统设备:" + DeviceType + "没有文件需要发送,部署停止,请检查选择并重新开始部署!";

                //记录日志
                LogManager.InfoLog.LogCommunicationInfo("VOBCCCOVDevice", "GetFileListAndCheckExist", logMsg);

                //界面信息打印
                vobc.Report.ReportWindow(logMsg);
            }

            return(dealResult);
        }
Example #5
0
 /// <summary>
 /// 设备类型执行烧录操作抽象接口
 /// </summary>
 /// <param name="configState">部署文件配置状态参数</param>
 public abstract void RunDeploy(DeployConfiState configState);