Переглянути джерело

合并edid相关Code,以及FVP的处理

JeffWang 3 роки тому
батько
коміт
dc6dcbcbd8
1 змінених файлів з 91 додано та 37 видалено
  1. 91 37
      FactoryTool_CShare/Views/OperationPanel.cs

+ 91 - 37
FactoryTool_CShare/Views/OperationPanel.cs

@@ -866,6 +866,7 @@ namespace MOKA_Factory_Tools
                         keyInfo.ACASKey_Data.data = jObject["acaskey_data"].Value<string>();
                         //keyInfo.ACASKey_Tool.data = jObject["acaskey_tool"].Value<string>();
                         keyInfo.DAK.data = jObject["dak"].Value<string>();
+                        keyInfo.FVP.data = jObject["FVP"].Value<string>();
 
                         WriteDID.Checked = (keyInfo.DID.Length > 0 && m_writedid.Text != LResource.Skip);
                         if (WriteDID.Checked)
@@ -930,6 +931,7 @@ namespace MOKA_Factory_Tools
                         WriteDAK.Checked = (keyInfo.DAK.Length > 0 && m_writeDAK.Text != LResource.Skip);
                         if (WriteDAK.Checked)
                             Log.WriteGetKeyLog("\r\nLocal DB DAK=" + keyInfo.DAK.data);
+                        WriteFVP.Checked = midListNow.keytype == null ? false : midListNow.keytype.ContainsKey("FVP") && m_writeDSN.Text != LResource.Skip;
                         WriteDSN.Checked = midListNow.keytype == null ? false : midListNow.keytype.ContainsKey("DSN") && m_writeDSN.Text != LResource.Skip;
                         WritePSN.Checked = FunctionSettingNow.BarcodeWrite;
 
@@ -2122,6 +2124,14 @@ namespace MOKA_Factory_Tools
                         goto end;
                     }
                 }
+                if (WriteEDIDPID.Checked)
+                {
+                    keyInfo.EDIDPid.data = midListNow.keytype["edid_pid"];
+                }
+                if (WriteEDIDName.Checked)
+                {
+                    keyInfo.EDIDModelName.data = midListNow.keytype["edid_model_name"];
+                }
                 if (localmidList.host != null)
                 {
                     if (ClientTypeText.Text.Length == 0)
@@ -3538,6 +3548,41 @@ namespace MOKA_Factory_Tools
                 keyInfo.Playready.result = true;
             }
 
+
+            #region FVP激活-放在Hash key抄写之后,应用于所有FireTV项目-已通过郁沛确认;
+            if (WriteFVP.Checked)
+            {
+                Log.WriteInfoLog("Activate FVP...");
+                byte[] FVPData = new byte[] { };
+                if (SerialCMD.ActiveMiFireTVFVP(TVPort, FVPData, out result, out data, out error, SerailDelay))
+                {
+                    SetsuccessStatus(m_writeFVP);
+                    Log.WriteInfoLog("Check FVP...");
+                    if (cfg_writecheck.FVPCheckcheck ? SerialCMD.CheckMiFireTVFVP(TVPort, out result, out data, out error, SerailDelay) : true)
+                    {
+                        SetsuccessStatus(m_checkFVP);
+                    }
+                    else
+                    {
+                        SetfailStatus(m_checkFVP);
+                        ErrMsg = string.Format("{0} check FVP fail!", SN);
+                        Log.WriteErrorLog(ErrMsg);
+                        goto end;
+                    }
+                }
+                else
+                {
+                    SetfailStatus(m_writeFVP);
+                    ErrMsg = string.Format("Activate FVP Failed {0}", error);
+                    Log.WriteErrorLog(ErrMsg);
+                    goto end;
+                }
+
+                // fvp没key内容;
+                //keyInfo.Hashkey.result = true;
+            }
+            #endregion
+
             //Hash抄写
             if (WriteHash.Checked)
             {
@@ -3721,7 +3766,7 @@ namespace MOKA_Factory_Tools
             if (WriteEDIDPID.Checked)
             {
                 // 4字节转成整数:0~65535,0x0000~0xffff;
-                if (Regex.IsMatch(keyInfo.EDIDPid.data, "^[A-Za-z0-9]{4}$"))
+                if (Regex.IsMatch(keyInfo.EDIDPid.data, "^[A-Fa-f0-9]{4}$"))
                 {
                     byte[] EDIDPidData = SerialInit.strToToHexByte(keyInfo.EDIDPid.data);
                     Log.WriteInfoLog("Write EDID Pid...");
@@ -3776,7 +3821,8 @@ namespace MOKA_Factory_Tools
             // EDID Mode Name抄写;
             if (WriteEDIDName.Checked)
             {
-                if (Regex.IsMatch(keyInfo.EDIDModelName.data, @"^[A-Za-z0-9][A-Za-z0-9_ -]{0,12}$"))
+                // 首字符:只能数字和字母;
+                if (Regex.IsMatch(keyInfo.EDIDModelName.data, "^[A-Za-z0-9]{1}[A-Za-z0-9_ \\.\\-]{2,12}[A-Za-z0-9]{1}$"))
                 {
                     // 长度为13字节;
                     byte[] EDIDNameData = Encoding.ASCII.GetBytes(keyInfo.EDIDModelName.data);
@@ -4493,8 +4539,8 @@ namespace MOKA_Factory_Tools
                             {
                                 if (SerialInit.BytesCompare_Base64(data, DSNData))
                                 {
+                                    SetsuccessStatus(m_readDSN);
                                     //DSN读取别对成功
-                                    SetsuccessStatus(m_readDSN);                                    
                                 }
                                 else
                                 {
@@ -4526,7 +4572,7 @@ namespace MOKA_Factory_Tools
                         ErrMsg = string.Format("{0}  Write DSN fail!", SN);
                         Log.WriteErrorLog(ErrMsg);
                         goto end;
-                    }                  
+                    }
                 }
 
                 keyInfo.DSN.result = true;
@@ -4535,10 +4581,13 @@ namespace MOKA_Factory_Tools
             #region 小米FireTV功能;
             if (FunctionSettingNow.MITVEnable)
             {
+#if true
                 // 读取PSN;
-                if (SerialCMD.ReadFireTVPSN(TVPort, out result, out data, out error, SerailDelay))
+                byte[] result_psn;
+                byte[] data_psn;
+                if (SerialCMD.ReadFireTVPSN(TVPort, out result_psn, out data_psn, out error, SerailDelay))
                 {
-                    _MiKey._PSN = Encoding.ASCII.GetString(data);
+                    _MiKey._PSN = Encoding.ASCII.GetString(data_psn);
                 }
                 else
                 {
@@ -4546,26 +4595,12 @@ namespace MOKA_Factory_Tools
                     Log.WriteErrorLog(ErrMsg);
                     goto end;
                 }
+#else
+                //小米 2717版不可读 PSN的24K需要生产,更新一版不读取PSN功能的抄写软件
+                _MiKey._PSN = DateTime.Now.ToString("yyyy-MM-dd-HH-mm:ss");
+#endif
 
                 // CVT抄写: Hashkey、HDCP_KEY1.4、HDCP2.2_KEY、CI_PLUS_KEY、ECP_KEY、FVP
-                // 激活FVP;
-                byte[] FVPData = new byte[] { };
-                if (!SerialCMD.ActiveMiFireTVFVP(TVPort, FVPData, out result, out data, out error, SerailDelay))
-                {
-                    ErrMsg = string.Format("激活FVP失败 {0}", error);
-                    Log.WriteErrorLog(ErrMsg);
-                    goto end;
-                }
-                SetsuccessStatus(m_writeFVP);
-
-                if (!SerialCMD.CheckMiFireTVFVP(TVPort, out result, out data, out error, SerailDelay))
-                {
-                    ErrMsg = string.Format("Check FVP失败 {0}", error);
-                    Log.WriteErrorLog(ErrMsg);
-                    goto end;
-                }
-                SetsuccessStatus(m_checkFVP);
-
                 if (cfg_writecheck.HashCheckcheck ? !SerialCMD.CheckFireTVHashkey(TVPort, out result, out data, out error, SerailDelay) : false)
                 {
                     ErrMsg = string.Format("Check Hashkey失败 {0}", error);
@@ -4602,24 +4637,36 @@ namespace MOKA_Factory_Tools
                 }
 
                 // 读取HDCP;
-                if (cfg_readcheck.HDCPReadcheck ? !SerialCMD.GetHDCPKey(TVPort, out result, out data, out error, SerailDelay) : false)
+                if (cfg_readcheck.HDCPReadcheck)
                 {
-                    ErrMsg = string.Format("读取HDCP失败 {0}", error);
-                    Log.WriteErrorLog(ErrMsg);
-                    goto end;
+                    if (!SerialCMD.GetHDCPKey(TVPort, out result, out data, out error, SerailDelay))
+                    {
+                        ErrMsg = string.Format("读取HDCP失败 {0}", error);
+                        Log.WriteErrorLog(ErrMsg);
+                        _MiKey._HDCP14 = 0;
+                        goto end;
+                    }
+                    else
+                    {
+                        _MiKey._HDCP14 = data.Length;
+                    }
                 }
 
-                _MiKey._HDCP14 = cfg_readcheck.HDCPReadcheck ? data.Length : 0;
-
                 // 读取HDCP;
-                if (cfg_readcheck.HDCP22Readcheck ? !SerialCMD.GetHDCPKey22(TVPort, out result, out data, out error, SerailDelay) : false)
+                if (cfg_readcheck.HDCP22Readcheck)
                 {
-                    ErrMsg = string.Format("读取HDCP22失败 {0}", error);
-                    Log.WriteErrorLog(ErrMsg);
-                    goto end;
-                }
-
-                _MiKey._HDCP22 = cfg_readcheck.HDCP22Readcheck ? data.Length : 0;
+                    if (!SerialCMD.GetHDCPKey22(TVPort, out result, out data, out error, SerailDelay))
+                    { 
+                        ErrMsg = string.Format("读取HDCP22失败 {0}", error);
+                        Log.WriteErrorLog(ErrMsg);
+                        _MiKey._HDCP22 = 0;
+                        goto end;
+                    }
+                    else
+                    {
+                        _MiKey._HDCP22 = data.Length;
+                    }
+                }                
             }
             #endregion
 
@@ -5063,6 +5110,12 @@ namespace MOKA_Factory_Tools
                     SetCheckboxStatus(WriteDAK, true);
                 UpdateKeyCountOnline("DAK", keys["DAK"], false);
             }
+            if (keys.ContainsKey("FVP"))
+            {
+                if (cfg_writedone.FVPWrite_YesNo)
+                    SetCheckboxStatus(WriteFVP, true);
+                UpdateKeyCountOnline("FVP", keys["FVP"], false);
+            }
             return true;
         }
 
@@ -5126,6 +5179,7 @@ namespace MOKA_Factory_Tools
             keyInfo.EDIDModelName.enable = WriteEDIDName.Checked = (WriteEDIDName.Checked && m_writeEDIDName.Text != LResource.Skip);
             keyInfo.ACASKey_Data.enable = WriteACASKey.Checked = (WriteACASKey.Checked && m_writeACASKey.Text != LResource.Skip);
             keyInfo.DAK.enable = WriteDAK.Checked = (WriteDAK.Checked && WriteDAK.Text != LResource.Skip);
+            keyInfo.FVP.enable = WriteFVP.Checked = (WriteFVP.Checked && WriteFVP.Text != LResource.Skip);
             bool preloadresult = false;
 
             preloadresult = true;