Эх сурвалжийг харах

同步release:dolby抄写、退出工厂指令、串口校验位

JeffWang 2 жил өмнө
parent
commit
101780a009

+ 4 - 1
FactoryTool_CShare/Models/StructList.cs

@@ -124,6 +124,7 @@ namespace MOKA_Factory_Tools
     {
         public string TVCOM { get; set; }
         public string TVBaud { get; set; }
+        public int TVParity { get; set; } = 0;      // 校验位默认为None
         public string ChannelList { get; set; }
         public bool WriteChannel { get; set; }
         public bool WriteOSD { get; set; }
@@ -358,6 +359,7 @@ namespace MOKA_Factory_Tools
         public bool ACASIDReadcheck { get; set; }
         public bool FVPReadcheck { get; set; }
         public bool DAKReadcheck { get; set; }
+        public bool DolbyReadcheck { get; set; }
     }
 
     public class Config_WriteCheck
@@ -384,6 +386,7 @@ namespace MOKA_Factory_Tools
         public bool ACASKeyCheckcheck { get; set; }
         public bool FVPCheckcheck { get; set; }
         public bool DAKCheckcheck { get; set; }
+        public bool DolbyCheckcheck { get; set; }
     }
 
     public class Config_WriteDone
@@ -399,7 +402,7 @@ namespace MOKA_Factory_Tools
         public bool EDIDPIDWrite_YesNo { get; set; }
         public bool EDIDModeNameWrite_YesNo { get; set; }
         public bool FVPWrite_YesNo { get; set; }
-
+		public bool DolbyWrite_YesNo { get;set; }
         #region getmessage接口对应需要在线获取的key类型;
         public bool DIDWrite_YesNo { get; set; }
         public bool MacWrite_YesNo { get; set; }

+ 0 - 3
FactoryTool_CShare/Views/Login.cs

@@ -28,8 +28,6 @@ namespace MOKA_Factory_Tools
             factorynum = ""
         };
 
-        public bool ExportSNACASID { get; set; } = false;
-
         string ErrorDBPath = AppDomain.CurrentDomain.BaseDirectory + "\\Error.db";
         SQLiteConnection ErrorDB = null;
         public login()
@@ -259,7 +257,6 @@ namespace MOKA_Factory_Tools
                 {
                     JObject jObject = (JObject)JToken.ReadFrom(reader);
                     reader.Close();
-                    ExportSNACASID = jObject["ExportSNACASID"] == null ? false : jObject["ExportSNACASID"].Value<bool>();
                     AccountText.Text = jObject["FactoryName"] == null ? (!CommonMethod.AddJsonConfig("FactoryName", null) ? "" : "") : jObject["FactoryName"].Value<string>();
                     loginOutput1.factoryname = jObject["FactoryName"] == null ? "" : jObject["FactoryName"].Value<string>();
                     loginOutput1.factorynum=jObject["FactoryNum"] == null ? "" : jObject["FactoryNum"].Value<string>();

+ 6 - 1
FactoryTool_CShare/Views/Main.cs

@@ -672,7 +672,9 @@ namespace MOKA_Factory_Tools
                 functionSetting1.EnterFactoryRetry = jObject["EnterFactoryRetry"].Value<int>();
                 functionSetting1.AllowNoScanning = jObject["AllowNoScanning"].Value<bool>();
                 functionSetting1.ReportTimeOut = jObject["ReportTimeOut"].Value<int>();
-
+                if (jObject["Parity"] == null)
+                    SaveJsonConfig("Parity", functionSetting1.TVParity);
+                functionSetting1.TVParity = jObject["Parity"] != null ? jObject["Parity"].Value<int>() : 0;
 
                 //本地离线抄写时key长度设置获取
                 functionSetting1.LocalDidSize = jObject["LocalSize"]["DID"].Value<int>();
@@ -916,6 +918,7 @@ namespace MOKA_Factory_Tools
                 cfg_readcheck.ACASKeyReadcheck = jObject["ReadCheck"]["ACASKey"] == null ? CommonMethod.InsertJsonConfig("ReadCheck", "ACASKey") : jObject["ReadCheck"]["ACASKey"].Value<bool>();
                 cfg_readcheck.FVPReadcheck = jObject["ReadCheck"]["FVP"] == null ? CommonMethod.InsertJsonConfig("ReadCheck", "FVP") : jObject["ReadCheck"]["FVP"].Value<bool>();
                 cfg_readcheck.DAKReadcheck = jObject["ReadCheck"]["DAK"] == null ? CommonMethod.InsertJsonConfig("ReadCheck", "DAK") : jObject["ReadCheck"]["DAK"].Value<bool>();
+                cfg_readcheck.DolbyReadcheck = jObject["ReadCheck"]["Dolby"] == null ? CommonMethod.InsertJsonConfig("ReadCheck", "Dolby") : jObject["ReadCheck"]["Dolby"].Value<bool>();
                 #endregion
 
                 #region WriteCheck配置读取
@@ -941,6 +944,7 @@ namespace MOKA_Factory_Tools
                 cfg_writecheck.ACASKeyCheckcheck = jObject["WriteCheck"]["ACASKey"] == null ? CommonMethod.InsertJsonConfig("WriteCheck", "ACASKey") : jObject["WriteCheck"]["ACASKey"].Value<bool>();
                 cfg_writecheck.FVPCheckcheck = jObject["WriteCheck"]["FVP"] == null ? CommonMethod.InsertJsonConfig("WriteCheck", "FVP") : jObject["WriteCheck"]["FVP"].Value<bool>();
                 cfg_writecheck.DAKCheckcheck = jObject["WriteCheck"]["DAK"] == null ? CommonMethod.InsertJsonConfig("WriteCheck", "DAK") : jObject["WriteCheck"]["DAK"].Value<bool>();
+                cfg_writecheck.DolbyCheckcheck = jObject["WriteCheck"]["Dolby"] == null ? CommonMethod.InsertJsonConfig("WriteCheck", "Dolby") : jObject["WriteCheck"]["Dolby"].Value<bool>();
                 #endregion
 
                 #region WriteDone配置读取
@@ -973,6 +977,7 @@ namespace MOKA_Factory_Tools
                 cfg_writedone.ACASKeyWrite_YesNo = jObject["WriteDone"]["ACASKey"] == null ? CommonMethod.InsertJsonConfig("WriteDone", "ACASKey") : jObject["WriteDone"]["ACASKey"].Value<bool>();
                 cfg_writedone.FVPWrite_YesNo = jObject["WriteDone"]["FVP"] == null ? CommonMethod.InsertJsonConfig("WriteDone", "FVP") : jObject["WriteDone"]["FVP"].Value<bool>();
                 cfg_writedone.DAKWrite_YesNo = jObject["WriteDone"]["DAK"] == null ? CommonMethod.InsertJsonConfig("WriteDone", "DAK") : jObject["WriteDone"]["DAK"].Value<bool>();
+                cfg_writedone.DolbyWrite_YesNo = jObject["WriteDone"]["Dolby"] == null ? CommonMethod.InsertJsonConfig("WriteDone", "Dolby") : jObject["WriteDone"]["Dolby"].Value<bool>();
                 #endregion
                 file.Close();
                 if (Custom_ProjectID != null)

+ 69 - 37
FactoryTool_CShare/Views/OperationPanel.cs

@@ -655,6 +655,7 @@ namespace MOKA_Factory_Tools
                 TVPort.BaudRate = Convert.ToInt32(FunctionSettingNow.TVBaud);
                 TVPort.WriteBufferSize = 20480;
                 TVPort.ReadBufferSize = 20480;
+                TVPort.Parity = (Parity)FunctionSettingNow.TVParity;
                 TVPort.Open();
             }
             catch (Exception ex)
@@ -856,31 +857,39 @@ namespace MOKA_Factory_Tools
                     }
                     else if (keyjson.Length > 0)
                     {
+                        #region 解决Json对象空导致的Bug.
+                        Func<JToken, string> GetJsonValue = (JsonObj) =>
+                        {
+                            if (JsonObj == null )
+                                return "";
+
+                            return JsonObj.Value<string>();
+                        };
+                        #endregion
                         JObject jObject = JObject.Parse(keyjson);
-                        keyInfo.DID.data = jObject["did"].Value<string>();
-                        keyInfo.Mac.data = jObject["mac"].Value<string>();
-                        keyInfo.HDCP.data = jObject["hdcp"].Value<string>();
-                        keyInfo.HDCP22.data = jObject["hdcp22"].Value<string>();
-                        keyInfo.WiDi.data = jObject["widi"].Value<string>();
-                        keyInfo.Widevine.data = jObject["widevine"].Value<string>();
-                        keyInfo.ESN.data = jObject["esn"].Value<string>();
-                        keyInfo.CI_plus.data = jObject["cikey"].Value<string>();
-                        keyInfo.MGK.data = jObject["mgk"].Value<string>();
-                        keyInfo.Attestation.data = jObject["attestation"].Value<string>();
-                        keyInfo.Fairplay.data = jObject["fairplay"].Value<string>();
-                        keyInfo.ECP.data = jObject["ecp"].Value<string>();
-                        keyInfo.WiFi_MAC.data = jObject["wifimac"].Value<string>();
-                        keyInfo.BT_MAC.data = jObject["btmac"].Value<string>();
-                        keyInfo.LEK.data = jObject["lek"].Value<string>();
-                        keyInfo.PEK.data = jObject["pek"].Value<string>();
-                        keyInfo.Playready.data = jObject["playready"].Value<string>();
-                        keyInfo.Hashkey.data = jObject["hash"].Value<string>();
-                        keyInfo.YouTube_KEY.data = jObject["youtubekey"].Value<string>();
-                        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>();
-                        if ( jObject.Property("FVP") != null)
-                            keyInfo.FVP.data = jObject["FVP"].Value<string>();
+                        keyInfo.DID.data = GetJsonValue(jObject["did"]);
+                        keyInfo.Mac.data = GetJsonValue(jObject["mac"]);
+                        keyInfo.HDCP.data = GetJsonValue(jObject["hdcp"]);
+                        keyInfo.HDCP22.data = GetJsonValue(jObject["hdcp22"]);
+                        keyInfo.WiDi.data = GetJsonValue(jObject["widi"]);
+                        keyInfo.Widevine.data = GetJsonValue(jObject["widevine"]);
+                        keyInfo.ESN.data = GetJsonValue(jObject["esn"]);
+                        keyInfo.CI_plus.data = GetJsonValue(jObject["cikey"]);
+                        keyInfo.MGK.data = GetJsonValue(jObject["mgk"]);
+                        keyInfo.Attestation.data = GetJsonValue(jObject["attestation"]);
+                        keyInfo.Fairplay.data = GetJsonValue(jObject["fairplay"]);
+                        keyInfo.ECP.data = GetJsonValue(jObject["ecp"]);
+                        keyInfo.WiFi_MAC.data = GetJsonValue(jObject["wifimac"]);
+                        keyInfo.BT_MAC.data = GetJsonValue(jObject["btmac"]);
+                        keyInfo.LEK.data = GetJsonValue(jObject["lek"]);
+                        keyInfo.PEK.data = GetJsonValue(jObject["pek"]);
+                        keyInfo.Playready.data = GetJsonValue(jObject["playready"]);
+                        keyInfo.Hashkey.data = GetJsonValue(jObject["hash"]);
+                        keyInfo.YouTube_KEY.data = GetJsonValue(jObject["youtubekey"]);
+                        keyInfo.ACASKey_Data.data = GetJsonValue(jObject["acaskey_data"]);
+                        keyInfo.ACASKey_Tool.data = GetJsonValue(jObject["acaskey_tool"]);
+                        keyInfo.DAK.data = GetJsonValue(jObject["dak"]);
+                        keyInfo.FVP.data = GetJsonValue(jObject["FVP"]);
 
                         WriteDID.Checked = (keyInfo.DID.Length > 0 && m_writedid.Text != LResource.Skip);
                         if (WriteDID.Checked)
@@ -942,8 +951,9 @@ 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;
+                        WriteFVP.Checked = m_writeFVP.Text != LResource.Skip;
+                        WriteDSN.Checked = (keyInfo.DSN.Length > 0 && m_writeDSN.Text != LResource.Skip);
+                        //WriteDolby.Checked = (keyInfo.Dolby.Length > 0 && m_writeDolby.Text != LResource.Skip);
                         WritePSN.Checked = FunctionSettingNow.BarcodeWrite;
 
                         timer1.Start();
@@ -1714,8 +1724,9 @@ namespace MOKA_Factory_Tools
             }
             if (!EnterFactoryResult)
             {
-                ErrMsg = string.Format("{0}   Enter factory fail", SN);
+                ErrMsg = string.Format("{0} Enter factory fail, Please check the problem", SN);
                 Log.WriteErrorLog(ErrMsg);
+                ShowVerifyDelegate(ErrMsg);
                 return;
             }
 
@@ -1786,7 +1797,6 @@ namespace MOKA_Factory_Tools
                 string Hdcp22path = "";
                 string Esnpath = "";
                 string MGKpath = "";
-                string Widipath = "";
                 string Widevinepath = "";
                 string Cipath = "";
                 string Attestationpath = "";
@@ -2218,7 +2228,7 @@ namespace MOKA_Factory_Tools
                     keyInfo.Mac.data = _MiKey.EthernetMac;
                     keyInfo.Mac.enable = true;
                 }
-                else
+                else if ( !midListNow.keytype.ContainsKey("MAC") )
                 {
                     SetCheckboxStatus(WriteMac, false);
                 }
@@ -2229,7 +2239,7 @@ namespace MOKA_Factory_Tools
                     keyInfo.BT_MAC.data = _MiKey.BTMac;
                     keyInfo.BT_MAC.enable = true;
                 }
-                else
+                else if (!midListNow.keytype.ContainsKey("BT_MAC"))
                 {
                     SetCheckboxStatus(WriteBTMac, false);
                 }
@@ -2240,7 +2250,7 @@ namespace MOKA_Factory_Tools
                     keyInfo.DSN.data = _MiKey.DSN;
                     keyInfo.DSN.enable = true;
                 }
-                else
+                else if (!midListNow.keytype.ContainsKey("DSN"))
                 {
                     SetCheckboxStatus(WriteDSN, false);
                 }
@@ -2251,7 +2261,7 @@ namespace MOKA_Factory_Tools
                     keyInfo.WiFi_MAC.data = _MiKey.WIFIMAC;
                     keyInfo.WiFi_MAC.enable = true;
                 }
-                else
+                else if (!midListNow.keytype.ContainsKey("WiFi_MAC"))
                 {
                     SetCheckboxStatus(WriteWifiMac, false);
                 }
@@ -2438,7 +2448,7 @@ namespace MOKA_Factory_Tools
             {
                 string wifimac = keyInfo.WiFi_MAC.data.Replace("-", "");
                 if (FunctionSettingNow.MITVEnable == true)
-                    wifimac = keyInfo.WiFi_MAC.data.Replace(":", "");
+                    wifimac = wifimac.Replace(":", "");
                 if (!CommonMethod.IsNumberAndWord(wifimac))
                 {
                     ErrMsg = string.Format("Wifi Mac format error!\r\n{0}", wifimac);
@@ -2504,7 +2514,7 @@ namespace MOKA_Factory_Tools
             {
                 string btmac = keyInfo.BT_MAC.data.Replace("-", "");
                 if (FunctionSettingNow.MITVEnable == true)
-                    btmac = keyInfo.BT_MAC.data.Replace(":", "");
+                    btmac = btmac.Replace(":", "");
                 if (!CommonMethod.IsNumberAndWord(btmac))
                 {
                     ErrMsg = string.Format("BTMac format error!\r\n{0}", btmac);
@@ -3500,6 +3510,18 @@ namespace MOKA_Factory_Tools
             }
             #endregion
 
+            // Dolby Key抄写;
+            if ( cfg_writecheck.DolbyCheckcheck )
+            {
+                Log.WriteInfoLog("Check Dolby Key...");
+                if ( !SerialCMD.CheckDolbyKey(TVPort, out result, out data, out error, SerailDelay) )
+                {
+                    ErrMsg = string.Format("{0} check Dolby fail!", SN);
+                    Log.WriteErrorLog(ErrMsg);
+                    goto end;
+                }
+            }
+
             //Hash抄写
             if (WriteHash.Checked)
             {
@@ -4769,7 +4791,14 @@ namespace MOKA_Factory_Tools
             Thread.Sleep(FunctionSettingNow.Wait_after_completion);
             SetsuccessStatus(ResultStatus);
         end:
-            #region 只有惠州工厂才启用G客户防呆措施;
+            // 退出工厂模式;
+            if ( !SerialCMD.LeaveFactory(TVPort, out result, out data, out error, SerailDelay) )
+            {
+                ErrMsg = string.Format("LeaveFactory Fail\r\n{1}", SN);
+                Log.WriteErrorLog(ErrMsg);
+            }
+
+#region 只有惠州工厂才启用G客户防呆措施;
             if (FunctionSettingNow.NTF)
             {
                 string strLastResult = "";
@@ -5110,8 +5139,11 @@ namespace MOKA_Factory_Tools
             keyInfo.EDIDPid.enable = WriteEDIDPID.Checked = (WriteEDIDPID.Checked && m_writeEDIDPID.Text != LResource.Skip);
             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);
+            keyInfo.DAK.enable = WriteDAK.Checked = (WriteDAK.Checked && m_writeDAK.Text != LResource.Skip);
+            keyInfo.FVP.enable = WriteFVP.Checked = (WriteFVP.Checked && m_writeFVP.Text != LResource.Skip);
+            keyInfo.DSN.enable = WriteDSN.Checked = (WriteDSN.Checked && m_writeDSN.Text != LResource.Skip);
+            //keyInfo.Dolby.enable = WriteDolby.Checked = (WriteDolby.Checked && m_writeDolby.Text != LResource.Skip);
+
             bool preloadresult = false;
 
             preloadresult = true;