Pārlūkot izejas kodu

增加RMCA KEY配置选项,增加RMCA 存放key的信息,暂未与服务器联调验证

chenjiangqun 2 gadi atpakaļ
vecāks
revīzija
2191c6df89

+ 14 - 0
FactoryTool_CShare/Business/V2Method.cs

@@ -528,6 +528,19 @@ namespace MOKA_Factory_Tools
                                 }
                             }
 
+                            //
+                            if (data.ContainsKey("rmca") && data.ContainsKey("rmca_md5"))
+                            {
+                                keys.RMCA.data = data["rmca"];
+                                keys.RMCA.md5 = data["rmca_md5"];
+
+                                if (!CheckMD5(keys.RMCA.data, keys.RMCA.md5))
+                                {
+                                    msg = string.Format("RMCA Key Value md5 Is Incorrect: data={0}, md5={1}", keys.RMCA.data, keys.RMCA.md5);
+                                    goto end;
+                                }
+                            }
+
                             result = true;
                         }
                     }
@@ -636,6 +649,7 @@ namespace MOKA_Factory_Tools
                     AddKeyJson2(keyinfo.ACASKey_Data, postJson, "acas_data");
                     AddKeyJson2(keyinfo.DAK, postJson, "dak");
                     AddKeyJson2(keyinfo.KFP, postJson, "kfp");
+                    AddKeyJson2(keyinfo.RMCA, postJson, "rmca");
                 }
 
                 string postData = postJson.ToString();

+ 4 - 0
FactoryTool_CShare/Models/StructList.cs

@@ -377,6 +377,7 @@ namespace MOKA_Factory_Tools
         public KeyData DAK = new KeyData("dak");
         public KeyData FVP = new KeyData();
         public KeyData KFP = new KeyData("kfp");
+        public KeyData RMCA = new KeyData("rmca");
         #region Kayla所需数据;
         public KeyData _PSN = new KeyData();
         #endregion
@@ -431,6 +432,7 @@ namespace MOKA_Factory_Tools
         public bool DAKReadcheck { get; set; }
         public bool DolbyReadcheck { get; set; }
         public bool KFPReadcheck { get; set; }
+        public bool RMCAReadcheck { get; set; }
     }
 
     public class Config_WriteCheck
@@ -459,6 +461,7 @@ namespace MOKA_Factory_Tools
         public bool DAKCheckcheck { get; set; }
         public bool DolbyCheckcheck { get; set; }
         public bool KFPCheckcheck { get; set; }
+        public bool RMCACheckcheck { get; set; }
     }
 
     public class Config_WriteDone
@@ -498,6 +501,7 @@ namespace MOKA_Factory_Tools
         public bool ACASKeyWrite_YesNo { get; set; }
         public bool DAKWrite_YesNo { get; set; }
         public bool KFPWrite_YesNo { get; set; }
+        public bool RMCAWrite_YesNo { get; set; }
         #endregion
     }
 

+ 30 - 0
FactoryTool_CShare/Views/Main.cs

@@ -1255,6 +1255,16 @@ namespace MOKA_Factory_Tools
                     cfg_readcheck.KFPReadcheck = jObject["ReadCheck"]["KFP"].Value<bool>();
                 }
 
+                if (jObject["ReadCheck"]["RMCA"] == null)
+                {
+                    CommonMethod.InsertJsonConfig("ReadCheck", "RMCA");
+                    cfg_readcheck.RMCAReadcheck = false;
+                }
+                else
+                {
+                    cfg_readcheck.RMCAReadcheck = jObject["ReadCheck"]["RMCA"].Value<bool>();
+                }
+
                 #endregion
 
                 #region WriteCheck配置读取
@@ -1417,6 +1427,16 @@ namespace MOKA_Factory_Tools
                     cfg_writecheck.KFPCheckcheck = jObject["WriteCheck"]["KFP"].Value<bool>();
                 }
 
+                if (jObject["WriteCheck"]["RMCA"] == null)
+                {
+                    CommonMethod.InsertJsonConfig("WriteCheck", "RMCA");
+                    cfg_writecheck.RMCACheckcheck = false;
+                }
+                else
+                {
+                    cfg_writecheck.RMCACheckcheck = jObject["WriteCheck"]["RMCA"].Value<bool>();
+                }
+
                 #endregion
 
                 #region WriteDone配置读取
@@ -1614,6 +1634,16 @@ namespace MOKA_Factory_Tools
                     cfg_writedone.KFPWrite_YesNo = jObject["WriteDone"]["KFP"].Value<bool>();
                 }
 
+                if (jObject["WriteDone"]["RMCA"] == null)
+                {
+                    CommonMethod.InsertJsonConfig("WriteDone", "RMCA");
+                    cfg_writedone.RMCAWrite_YesNo = false;
+                }
+                else
+                {
+                    cfg_writedone.RMCAWrite_YesNo = jObject["WriteDone"]["RMCA"].Value<bool>();
+                }
+
                 #endregion
 
                 file.Close();

+ 138 - 10
FactoryTool_CShare/Views/OperationPanel.cs

@@ -20,6 +20,7 @@ using System.Diagnostics;
 using MOKA_Factory_Tools.BLL;
 using Newtonsoft.Json;
 using System.Runtime.InteropServices.WindowsRuntime;
+using CCWin.Win32;
 
 namespace MOKA_Factory_Tools
 {
@@ -123,6 +124,7 @@ namespace MOKA_Factory_Tools
             SetCheckboxStatus(WriteDAK, cfg_writedone.DAKWrite_YesNo);
             SetCheckboxStatus(WriteFVP, cfg_writedone.FVPWrite_YesNo);
             SetCheckboxStatus(WriteKFP, cfg_writedone.KFPWrite_YesNo);
+            SetCheckboxStatus(WriteRMCA, cfg_writedone.RMCAWrite_YesNo);
             #endregion
 #else
             return;
@@ -316,8 +318,11 @@ namespace MOKA_Factory_Tools
                 SetspecificText(m_checkDAK, LResource.Skip, Color.Yellow);
             if (!cfg_writecheck.KFPCheckcheck)
                 SetspecificText(m_checkKFP, LResource.Skip, Color.Yellow);
-#endregion
-#region 设置ReadCheck复选框默认状态
+            if (!cfg_writecheck.RMCACheckcheck)
+                SetspecificText(m_checkRMCA, LResource.Skip, Color.Yellow);
+
+            #endregion
+            #region 设置ReadCheck复选框默认状态
             /////////////////////////////////////////////////////////////////
             if (!cfg_readcheck.PIDReadcheck)
                 SetspecificText(ProjectIDNote, LResource.SkipReadCheck, Color.Yellow);
@@ -377,8 +382,11 @@ namespace MOKA_Factory_Tools
                 SetspecificText(m_readDAK, LResource.SkipChecking, Color.Yellow);
             if (!cfg_readcheck.KFPReadcheck)
                 SetspecificText(m_readKFP, LResource.SkipChecking, Color.Yellow);
-#endregion
-#region 设置WriteDone复选框默认状态
+            if (!cfg_readcheck.RMCAReadcheck)
+                SetspecificText(m_readRMCA, LResource.SkipChecking, Color.Yellow);
+
+            #endregion
+            #region 设置WriteDone复选框默认状态
             /////////////////////////////////////////////////////////////////
             if (!cfg_writedone.PIDWrite_YesNo)
                 SetspecificText(ProjectIDNote, LResource.SkipCovering, Color.Yellow);
@@ -436,6 +444,8 @@ namespace MOKA_Factory_Tools
                 SetspecificText(m_writeDAK, LResource.Skip, Color.Yellow);
             if (!cfg_writedone.KFPWrite_YesNo)
                 SetspecificText(m_writeKFP, LResource.Skip, Color.Yellow);
+            if (!cfg_writedone.RMCAWrite_YesNo)
+                SetspecificText(m_writeRMCA, LResource.Skip, Color.Yellow);
             if (FunctionSettingNow.WriteChannel)
                 ChannelText.Text = FunctionSettingNow.ChannelList;
             else
@@ -1038,6 +1048,7 @@ namespace MOKA_Factory_Tools
                         keyInfo.DAK.data = GetJsonValue(jObject["dak"]);
                         keyInfo.FVP.data = GetJsonValue(jObject["FVP"]);
                         keyInfo.KFP.data = GetJsonValue(jObject["kfp"]);
+                        keyInfo.RMCA.data = GetJsonValue(jObject["rmca"]);
 
                         WriteDID.Checked = (keyInfo.DID.Length > 0 && m_writedid.Text != LResource.Skip);
                         if (WriteDID.Checked)
@@ -1102,6 +1113,10 @@ namespace MOKA_Factory_Tools
                         WriteKFP.Checked = (keyInfo.KFP.Length > 0 && m_writeKFP.Text != LResource.Skip);
                         if ( WriteKFP.Checked)
                             Log.WriteGetKeyLog("\r\nLocal DB KFP=" + keyInfo.KFP.data);
+                        WriteRMCA.Checked = (keyInfo.RMCA.Length > 0 && m_writeRMCA.Text != LResource.Skip);
+                        if (WriteRMCA.Checked)
+                            Log.WriteGetKeyLog("\r\nLocal DB RMCA=" + keyInfo.RMCA.data);
+
                         WriteFVP.Checked = m_writeFVP.Text != LResource.Skip;
                         WriteDSN.Checked = (keyInfo.DSN.Length > 0 && m_writeDSN.Text != LResource.Skip);
                         WritePSN.Checked = FunctionSettingNow.BarcodeWrite;
@@ -1448,9 +1463,15 @@ namespace MOKA_Factory_Tools
                 m_writeKFP.Text = "Null";
                 m_writeKFP.BackColor = Color.Transparent;
             }
-#endregion
+            if (m_writeRMCA.Text != LResource.Skip)
+            {
+                m_writeRMCA.Text = "Null";
+                m_writeRMCA.BackColor = Color.Transparent;
+            }
+
+            #endregion
             /////////////////////////////////////////////////////////////
-#region Write Check;
+            #region Write Check;
             if (m_checkci.Text != LResource.Skip)
             {
                 m_checkci.Text = "Null";
@@ -1561,9 +1582,15 @@ namespace MOKA_Factory_Tools
                 m_checkKFP.Text = "Null";
                 m_checkKFP.BackColor = Color.Transparent;
             }
-#endregion
+            if (m_checkRMCA.Text != LResource.Skip)
+            {
+                m_checkRMCA.Text = "Null";
+                m_checkRMCA.BackColor = Color.Transparent;
+            }
+
+            #endregion
             /////////////////////////////////////////////////////////////
-#region  Read Check;
+            #region  Read Check;
             if (m_readci.Text != LResource.Skip)
             {
                 m_readci.Text = "Null";
@@ -1694,7 +1721,12 @@ namespace MOKA_Factory_Tools
                 m_readKFP.Text = "Null";
                 m_readKFP.BackColor = Color.Transparent;
             }
-#endregion
+            if (m_readRMCA.Text != LResource.Skip)
+            {
+                m_readRMCA.Text = "Null";
+                m_readRMCA.BackColor = Color.Transparent;
+            }
+            #endregion
 
             ResultStatus.Text = "Wait";
             ResultStatus.BackColor = Color.Transparent;
@@ -1784,6 +1816,9 @@ namespace MOKA_Factory_Tools
 
             if (WritePlayready.Checked)
                 reportdata += "playready=" + keyInfo.Playready.data + "&";
+            //RMCA
+            if(WriteRMCA.Checked)
+                reportdata += "rmca=" + keyInfo.RMCA.data + "&";
 
             if (WriteHash.Checked)
                 reportdata += "hash=" + keyInfo.Hashkey.data + "&";
@@ -3837,6 +3872,16 @@ namespace MOKA_Factory_Tools
                     keyInfo.Playready.result = true;
                 }
 
+                //RMCA Key抄写
+                if(WriteRMCA.Checked)
+                {
+                    if(!WriteRMCAKey(SerailDelay,out ErrMsg))
+                    {
+                        Log.WriteErrorLog(ErrMsg);
+                        goto end;
+                    }
+                }
+
                 // KFP抄写;
                 if (WriteKFP.Checked)
                 {
@@ -5248,7 +5293,7 @@ namespace MOKA_Factory_Tools
                     {
                         TestResult = 0;
                         ErrMsg = string.Format("{0}  ProductMoveNext fail! {1}", SN, error);
-                        Log.WriteErrorLog(ErrMsg);
+                        Log.WriteErrorLog(ErrMsg); 
                         goto end;
                     }
                 }
@@ -5527,6 +5572,13 @@ namespace MOKA_Factory_Tools
                     SetCheckboxStatus(WritePlayready, true);
                 UpdateKeyCountOnline("PlayReady_key", keys["PlayReady_key"], false);
             }
+            //RMCA
+            if (keys.ContainsKey("RMCA_key"))
+            {
+                if (cfg_writedone.RMCAWrite_YesNo)
+                    SetCheckboxStatus(WriteRMCA, true);
+                UpdateKeyCountOnline("RMCA_key", keys["RMCA_key"], false);
+            }
             if (keys.ContainsKey("Hashkey"))
             {
                 if (cfg_writedone.HashWrite_YesNo)
@@ -5650,6 +5702,7 @@ namespace MOKA_Factory_Tools
             keyInfo.DSN.enable = WriteDSN.Checked = (WriteDSN.Checked && m_writeDSN.Text != LResource.Skip);
             keyInfo.Fairplay.enable = WriteFairplay.Checked = (WriteFairplay.Checked && m_writeFairplay.Text != LResource.Skip);
             keyInfo.KFP.enable = WriteKFP.Checked = (WriteKFP.Checked && m_writeKFP.Text != LResource.Skip);
+            keyInfo.RMCA.enable = WriteRMCA.Checked = (WriteRMCA.Checked && m_writeRMCA.Text != LResource.Skip);
             bool preloadresult = false;
 
             preloadresult = true;
@@ -5873,5 +5926,80 @@ namespace MOKA_Factory_Tools
         {
             toolTip1.SetToolTip(OrderText, LResource.AvailableKey + availableCount);
         }
+
+        public bool WriteRMCAKey(int delaytime,out string err)
+        {
+            byte[] result;
+            byte[] data;
+            string error = "";
+            if (!CommonMethod.IsNumberAndWord(keyInfo.RMCA.data))
+            {
+                err = string.Format("RMCA format error!\r\n{0}", keyInfo.RMCA.data);
+                Log.WriteErrorLog(err);
+                return false;
+            }
+            byte[] RMCAData = SerialInit.HexToByte(keyInfo.RMCA.data);
+            Log.WriteInfoLog("Write RMCA...");
+            if (SerialCMD.SetRMCA(TVPort, RMCAData, out result, out data, out error, delaytime))
+            {
+                SetsuccessStatus(m_writeRMCA);
+                Log.WriteInfoLog("Check RMCA...");
+                if (cfg_writecheck.RMCACheckcheck ? SerialCMD.CheckRMCA(TVPort, out result, out data, out error, delaytime) : true)
+                {
+                    SetsuccessStatus(m_checkRMCA);
+                    Log.WriteInfoLog("Read RMCA...");
+                    if (cfg_readcheck.RMCAReadcheck ? SerialCMD.ReadRMCA(TVPort, out result, out data, out error, delaytime) : true)
+                    {
+                        if (cfg_readcheck.RMCAReadcheck)
+                        {
+                            if (CommonMethod.CompareMD5(RMCAData, data))
+                            {
+                                SetsuccessStatus(m_readRMCA);
+                            }
+                            else
+                            {
+                                if (SerialInit.BytesCompare_Base64(data, RMCAData))
+                                {
+                                    SetsuccessStatus(m_readRMCA);
+                                }
+                                else
+                                {
+                                    SetfailStatus(m_readRMCA);
+                                    err = string.Format("{0}  contrast RMCA fail!", SN);
+                                    Log.WriteErrorLog(err);
+                                    return false;
+                                }
+                            }
+                        }
+
+                    }
+                    else
+                    {
+                        SetfailStatus(m_readRMCA);
+                        err = string.Format("{0}  read RMCA fail!", SN);
+                        Log.WriteErrorLog(err);
+                        return false;
+                    }
+                }
+                else
+                {
+                    SetfailStatus(m_checkRMCA);
+                    err = string.Format("{0}  check RMCA fail!", SN);
+                    Log.WriteErrorLog(err);
+                    return false;
+                }
+            }
+            else
+            {
+                SetfailStatus(m_writeRMCA);
+                err = string.Format("{0}  write RMCA fail!", SN);
+                Log.WriteErrorLog(err);
+                return false;
+            }
+             
+            keyInfo.Playready.result = true;
+            err = "";
+            return true;
+        }
     }
 }