|
@@ -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;
|
|
|
+ }
|
|
|
}
|
|
|
}
|