private void MacGetBootLoaderVersion(int radioHandle) { MacBootLoaderVersion blVersion = new MacBootLoaderVersion(); var result = link.MacGetBootLoaderVersion(radioHandle, blVersion); logger.Information("link.MacGetBootLoaderVersion => {Result}", result); logger.Information("MacVersion {@Version}", new { blVersion.major, blVersion.minor, blVersion.maintenance, blVersion.release }); }
//==========================Command=================================== public Result API_UpdataGetVersion ( ref MacBootLoaderVersion r_Version ) { #if _TRACE_OUT_PUT PrintMagToTxt("API_UpdataGetVersion"); #endif Result result = Result.OK; ENUM_CMD TxCmd = ENUM_CMD.NOTHING; byte[] buf = new byte[57]; Array.Clear(buf, 0, buf.Length); TxCmd = ENUM_CMD.UPDAUE_GET_VERSION; buf[0] = 0x0D; //Magic buf[1] = 0xF0; //Magic buf[2] = (byte)((int)TxCmd & 0xF); //command buf[3] = 0; //command buf[4] = 0; //Length buf[5] = 0; //Length buf[6] = 0; //Reserved buf[7] = 0; //Reserved if (false == this.SendData(buf)) { return(Result.FAILURE); } Array.Clear(buf, 0, buf.Length); //Check receive data if (false == this.ReceiveData(TxCmd, ref buf)) { return(Result.FAILURE); } //Check result result = ConvertResult(buf[4]); if (Result.OK != result) { return(result); } r_Version.major = buf[11]; r_Version.minor = buf[10]; r_Version.release = buf[09]; return(Result.OK); }
//private Result GetVersion( DEV_MODE r_mode ) private Result GetVersion() { MacBootLoaderVersion Version = new MacBootLoaderVersion(); Result result = Result.FAILURE; m_Mode = DEV_MODE.NO; FirmwareVersion ver = new FirmwareVersion(); result = m_clsInterface.API_MacGetFirmwareVersion(ref ver); ControlItem(ENUM_ITEM_TYPE.TEXT_VER, String.Format("[FW] {0}.{1}.{2}", ver.major, ver.minor, ver.release)); //ControlItem(ENUM_ITEM_TYPE.TEXT_STATUS, String.Format("[FW] {0}.{1}.{2}",ver.major,ver.minor,ver.release) ); //Show device type ControlItem(ENUM_ITEM_TYPE.TEXT_DEVICE, rfid.clsPacket.TRANS_API_AskDevType().ToString()); return(Result.OK); }
public static extern Result RFID_MacGetBootLoaderVersion ( [In] Int32 handle, [In, Out] MacBootLoaderVersion pVersion );
private Result GetVersion(DEV_MODE r_mode) { MacBootLoaderVersion Version = new MacBootLoaderVersion(); Result result = Result.FAILURE; m_Mode = DEV_MODE.NO; switch (r_mode) { case DEV_MODE.AP: #if _TRACE_OUT_PUT m_clsInterface.PrintMagToTxt("====== Get FW AP Version======"); #endif FirmwareVersion ver = new FirmwareVersion(); result = m_clsInterface.API_MacGetFirmwareVersion(ref ver); if (Result.OK != result) { //ControlItem(ENUM_ITEM_TYPE.STATUS, "Can't get AP version"); return(result); } ControlItem(ENUM_ITEM_TYPE.TEXT_VER, String.Format("[AP] {0}.{1}.{2}", ver.major, ver.minor, ver.release)); ControlItem(ENUM_ITEM_TYPE.TEXT_STATUS, String.Format("[AP] {0}.{1}.{2}", ver.major, ver.minor, ver.release)); m_Mode = DEV_MODE.AP; break; case DEV_MODE.BL: #if _TRACE_OUT_PUT m_clsInterface.PrintMagToTxt("====== Get BL AP Version======"); #endif result = m_clsInterface.API_UpdataGetVersion(ref Version); if (Result.OK != result) { //ControlItem(ENUM_ITEM_TYPE.STATUS, "Can't get bootloader version"); return(result); } ControlItem(ENUM_ITEM_TYPE.TEXT_VER, String.Format("[BL] {0}.{1}.{2}", Version.major, Version.minor, Version.release)); ControlItem(ENUM_ITEM_TYPE.TEXT_STATUS, String.Format("[BL] {0}.{1}.{2}", Version.major, Version.minor, Version.release)); m_Mode = DEV_MODE.BL; break; case DEV_MODE.BL_ENTER_UPDATE: #if _TRACE_OUT_PUT m_clsInterface.PrintMagToTxt("====== Get BL_ENTER_UPDATE Version======"); #endif //result = m_clsInterface.API_UpdataGetVersion(ref Version); //if (result != Result.OK && result != Result.FWUPD_CMD_IGN) //{ // //ControlItem(ENUM_ITEM_TYPE.STATUS, "Can't get bootloader version"); // return result; //} ControlItem(ENUM_ITEM_TYPE.TEXT_VER, "[BL] Update Mode."); ControlItem(ENUM_ITEM_TYPE.TEXT_STATUS, "Enter update Mode."); m_Mode = DEV_MODE.BL_ENTER_UPDATE; break; default: m_Mode = DEV_MODE.NO; return(Result.FAILURE); break; } //Show device type ControlItem(ENUM_ITEM_TYPE.TEXT_DEVICE, rfid.clsPacket.TRANS_API_AskDevType().ToString()); return(Result.OK); }
//===========================Back Ground========================================== private void MonitorUpdate(object sender, DoWorkEventArgs e) { MacBootLoaderVersion Version = new MacBootLoaderVersion(); string strFilePath = textFilePath.Text; int iRealReadCount = 0; Result result = Result.FAILURE; Updatedata strcData; #if _TRACE_OUT_PUT m_clsInterface.PrintMagToTxt("--MonitorUpdate---"); #endif ControlItem(ENUM_ITEM_TYPE.TEXT_VER, ""); //Clear buffer rfid.clsPacket.TRANS_API_ClearBuffer(); //Get Version while (true) { if (m_clsBackThread.CancellationPending == true) { e.Cancel = true; return; } ControlItem(ENUM_ITEM_TYPE.MENU_SET_COM_PORT, false); //Check whether connected or not. if (Result.OK == GetVersion(AskMode())) { break; } System.Threading.Thread.Sleep(10); } //start to enter update mode switch (m_Mode) { case DEV_MODE.AP: ControlItem(ENUM_ITEM_TYPE.TEXT_STATUS, "In the AP mode now, please press \"Update\" button again."); MessageBox.Show("In the AP mode now, please press \"Update\" button again.", "Update firmware unsuccessfully.", MessageBoxButtons.OK, MessageBoxIcon.Error); return; break; case DEV_MODE.BL: ControlItem(ENUM_ITEM_TYPE.TEXT_STATUS, "Enter to update mode."); result = m_clsInterface.API_UpdataEnterUpdateMode(); if (Result.OK != result) { ControlItem(ENUM_ITEM_TYPE.TEXT_STATUS, string.Format("Error:{0}. Can't enter update mode.", result.ToString())); m_clsInterface.API_UpdataComplete(); MessageBox.Show(string.Format("Error:{0}. Can't enter update mode.", result.ToString()), "Update firmware unsuccessfully.", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } ControlItem(ENUM_ITEM_TYPE.TEXT_STATUS, "In update mode, start to update."); break; case DEV_MODE.BL_ENTER_UPDATE: ControlItem(ENUM_ITEM_TYPE.TEXT_STATUS, "In update mode, start to update."); break; case DEV_MODE.NO: ControlItem(ENUM_ITEM_TYPE.TEXT_STATUS, "ERROR: Can't connect the device."); return; break; } //Write FW File to the device strcData.bRealRunFlag = (bool)e.Argument; strcData.btData = new Byte[DEFINE_UPDATE_DATA_SIZE]; Array.Clear(strcData.btData, 0, strcData.btData.Length); //initial Progress Bar ControlItem(ENUM_ITEM_TYPE.PROG_SET_MAX, (int)m_lFileSize); ControlItem(ENUM_ITEM_TYPE.PROG_CLEAR, null); ControlItem(ENUM_ITEM_TYPE.LABEL_PERCENT_TEXT, string.Format("{0}%", 0)); //Start to update while (m_lFileSize > 0) { if (m_clsBackThread.CancellationPending == true) { e.Cancel = true; return; } strcData.uiOffset = (uint)m_fileStream.Position + DEFINE_UPDATE_DATA_ADDRESS; strcData.uiCRC = 0; Array.Clear(strcData.btData, 0, strcData.btData.Length); //Read data from file iRealReadCount = m_fileStream.Read(strcData.btData, 0, DEFINE_UPDATE_DATA_SIZE); //check file whether is end or not. if (0 >= iRealReadCount) { break; } strcData.usSize = (ushort)((iRealReadCount / 4) + (iRealReadCount % 4 > 0 ? 1 : 0) + 3); result = m_clsInterface.API_UpdataSendUpdateData(strcData); if (Result.OK != result) { ControlItem(ENUM_ITEM_TYPE.TEXT_STATUS, string.Format("Error:{0}. Write firmware file unsuccessfully.", result.ToString())); MessageBox.Show(string.Format("Error:{0}. Write firmware file unsuccessfully.", result.ToString()), "Update firmware unsuccessfully.", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } m_lFileSize -= (uint)iRealReadCount; //Increase progress bar m_clsBackThread.ReportProgress(iRealReadCount); } #if _TRACE_OUT_PUT m_clsInterface.PrintMagToTxt("--Write Data Complete---"); #endif //exit update mode and turn to AP mode. result = m_clsInterface.API_UpdataComplete(); do { if (Result.OK == result) { break; } //In the test mode, update the file and send complete command, then no error occur. //It will return Result.FWUPD_EXIT_NOWRITES. Means doesn't actually write update data to //the device if (m_bTestMode == true && Result.FWUPD_EXIT_NOWRITES == result) { break; } //Show error message ControlItem(ENUM_ITEM_TYPE.TEXT_STATUS, string.Format("Error:{0}. Exit BL mode unsuccessfully. Please check file.", result.ToString())); m_clsInterface.API_UpdataReset(); MessageBox.Show(string.Format("Error:{0}. Exit BL mode unsuccessfully. Please check file.", result.ToString()), "Update firmware unsuccessfully.", MessageBoxButtons.OK, MessageBoxIcon.Error); return; }while(false); ControlItem(ENUM_ITEM_TYPE.TEXT_STATUS, "Update progress finished. Try to return to AP Mode."); //Get Version while (true) { if (m_clsBackThread.CancellationPending == true) { e.Cancel = true; return; } //Check whether connected or not. if (Result.OK == GetVersion(AskMode())) { break; } System.Threading.Thread.Sleep(10); } //If return to AP mode, means update progress successfully if (m_Mode == DEV_MODE.AP) { MessageBox.Show("Update firmware successfully."); ControlItem(ENUM_ITEM_TYPE.PROG_CLEAR, null); ControlItem(ENUM_ITEM_TYPE.LABEL_PERCENT_TEXT, string.Format("{0}%", 0)); } }
//==========================Command=================================== public Result API_UpdataGetVersion( ref MacBootLoaderVersion r_Version ) { #if _TRACE_OUT_PUT PrintMagToTxt("API_UpdataGetVersion"); #endif Result result = Result.OK; ENUM_CMD TxCmd = ENUM_CMD.NOTHING; byte[] buf = new byte[57]; Array.Clear(buf, 0, buf.Length); TxCmd = ENUM_CMD.UPDAUE_GET_VERSION; buf[0] = 0x0D; //Magic buf[1] = 0xF0; //Magic buf[2] = (byte)( (int)TxCmd & 0xF );//command buf[3] = 0; //command buf[4] = 0; //Length buf[5] = 0; //Length buf[6] = 0; //Reserved buf[7] = 0; //Reserved if ( false == this.SendData(buf) ) return Result.FAILURE; Array.Clear(buf, 0, buf.Length); //Check receive data if ( false == this.ReceiveData( TxCmd, ref buf ) ) return Result.FAILURE; //Check result result = ConvertResult(buf[4]); if (Result.OK != result) return result; r_Version.major = buf[11]; r_Version.minor = buf[10]; r_Version.release = buf[09]; return Result.OK; }
//===========================Back Ground========================================== private void MonitorUpdate(object sender, DoWorkEventArgs e) { MacBootLoaderVersion Version = new MacBootLoaderVersion(); string strFilePath = textFilePath.Text; int iRealReadCount = 0; Result result = Result.FAILURE; Updatedata strcData; #if _TRACE_OUT_PUT m_clsInterface.PrintMagToTxt("--MonitorUpdate---"); #endif ControlItem(ENUM_ITEM_TYPE.TEXT_VER, ""); //Clear buffer rfid.clsPacket.TRANS_API_ClearBuffer(); //Get Version while (true) { if (m_clsBackThread.CancellationPending == true) { e.Cancel = true; return; } ControlItem(ENUM_ITEM_TYPE.MENU_SET_COM_PORT, false); //Check whether connected or not. if( Result.OK == GetVersion( AskMode() ) ) break; System.Threading.Thread.Sleep(10); } //start to enter update mode switch ( m_Mode ) { case DEV_MODE.AP: ControlItem(ENUM_ITEM_TYPE.TEXT_STATUS, "In the AP mode now, please press \"Update\" button again."); MessageBox.Show( "In the AP mode now, please press \"Update\" button again.", "Update firmware unsuccessfully.", MessageBoxButtons.OK, MessageBoxIcon.Error ); return; break; case DEV_MODE.BL: ControlItem(ENUM_ITEM_TYPE.TEXT_STATUS, "Enter to update mode."); result = m_clsInterface.API_UpdataEnterUpdateMode(); if ( Result.OK != result) { ControlItem(ENUM_ITEM_TYPE.TEXT_STATUS, string.Format("Error:{0}. Can't enter update mode.", result.ToString()) ); m_clsInterface.API_UpdataComplete(); MessageBox.Show( string.Format("Error:{0}. Can't enter update mode.", result.ToString()), "Update firmware unsuccessfully.", MessageBoxButtons.OK, MessageBoxIcon.Error ); return; } ControlItem(ENUM_ITEM_TYPE.TEXT_STATUS, "In update mode, start to update."); break; case DEV_MODE.BL_ENTER_UPDATE: ControlItem(ENUM_ITEM_TYPE.TEXT_STATUS, "In update mode, start to update."); break; case DEV_MODE.NO: ControlItem(ENUM_ITEM_TYPE.TEXT_STATUS, "ERROR: Can't connect the device."); return; break; } //Write FW File to the device strcData.bRealRunFlag = (bool)e.Argument; strcData.btData = new Byte[DEFINE_UPDATE_DATA_SIZE]; Array.Clear(strcData.btData, 0, strcData.btData.Length); //initial Progress Bar ControlItem(ENUM_ITEM_TYPE.PROG_SET_MAX, (int)m_lFileSize); ControlItem(ENUM_ITEM_TYPE.PROG_CLEAR, null); ControlItem(ENUM_ITEM_TYPE.LABEL_PERCENT_TEXT, string.Format("{0}%",0) ); //Start to update while (m_lFileSize >0) { if (m_clsBackThread.CancellationPending == true) { e.Cancel = true; return; } strcData.uiOffset = (uint)m_fileStream.Position + DEFINE_UPDATE_DATA_ADDRESS; strcData.uiCRC = 0; Array.Clear( strcData.btData, 0, strcData.btData.Length); //Read data from file iRealReadCount = m_fileStream.Read(strcData.btData, 0, DEFINE_UPDATE_DATA_SIZE); //check file whether is end or not. if( 0 >= iRealReadCount) break; strcData.usSize = (ushort)( (iRealReadCount/4) + (iRealReadCount%4 >0 ? 1 : 0) + 3 ); result = m_clsInterface.API_UpdataSendUpdateData( strcData); if (Result.OK != result ) { ControlItem(ENUM_ITEM_TYPE.TEXT_STATUS, string.Format("Error:{0}. Write firmware file unsuccessfully.", result.ToString()) ); MessageBox.Show( string.Format("Error:{0}. Write firmware file unsuccessfully.", result.ToString()), "Update firmware unsuccessfully.", MessageBoxButtons.OK, MessageBoxIcon.Error ); return; } m_lFileSize -= (uint)iRealReadCount; //Increase progress bar m_clsBackThread.ReportProgress(iRealReadCount); } #if _TRACE_OUT_PUT m_clsInterface.PrintMagToTxt("--Write Data Complete---"); #endif //exit update mode and turn to AP mode. result = m_clsInterface.API_UpdataComplete(); do { if ( Result.OK == result ) break; //In the test mode, update the file and send complete command, then no error occur. //It will return Result.FWUPD_EXIT_NOWRITES. Means doesn't actually write update data to //the device if ( m_bTestMode == true && Result.FWUPD_EXIT_NOWRITES == result ) { break; } //Show error message ControlItem(ENUM_ITEM_TYPE.TEXT_STATUS, string.Format("Error:{0}. Exit BL mode unsuccessfully. Please check file.", result.ToString()) ); m_clsInterface.API_UpdataReset(); MessageBox.Show( string.Format("Error:{0}. Exit BL mode unsuccessfully. Please check file.", result.ToString()), "Update firmware unsuccessfully.", MessageBoxButtons.OK, MessageBoxIcon.Error ); return; }while(false); ControlItem(ENUM_ITEM_TYPE.TEXT_STATUS, "Update progress finished. Try to return to AP Mode."); //Get Version while (true) { if (m_clsBackThread.CancellationPending == true) { e.Cancel = true; return; } //Check whether connected or not. if( Result.OK == GetVersion( AskMode() ) ) break; System.Threading.Thread.Sleep(10); } //If return to AP mode, means update progress successfully if (m_Mode == DEV_MODE.AP) { MessageBox.Show("Update firmware successfully."); ControlItem(ENUM_ITEM_TYPE.PROG_CLEAR, null); ControlItem(ENUM_ITEM_TYPE.LABEL_PERCENT_TEXT, string.Format("{0}%", 0)); } }
private Result GetVersion( DEV_MODE r_mode ) { MacBootLoaderVersion Version = new MacBootLoaderVersion(); Result result = Result.FAILURE; m_Mode = DEV_MODE.NO; switch (r_mode) { case DEV_MODE.AP: #if _TRACE_OUT_PUT m_clsInterface.PrintMagToTxt("====== Get FW AP Version======"); #endif FirmwareVersion ver = new FirmwareVersion(); result = m_clsInterface.API_MacGetFirmwareVersion(ref ver); if (Result.OK != result) { //ControlItem(ENUM_ITEM_TYPE.STATUS, "Can't get AP version"); return result; } ControlItem(ENUM_ITEM_TYPE.TEXT_VER, String.Format("[AP] {0}.{1}.{2}",ver.major,ver.minor,ver.release) ); ControlItem(ENUM_ITEM_TYPE.TEXT_STATUS, String.Format("[AP] {0}.{1}.{2}",ver.major,ver.minor,ver.release) ); m_Mode = DEV_MODE.AP; break; case DEV_MODE.BL: #if _TRACE_OUT_PUT m_clsInterface.PrintMagToTxt("====== Get BL AP Version======"); #endif result = m_clsInterface.API_UpdataGetVersion(ref Version); if (Result.OK != result) { //ControlItem(ENUM_ITEM_TYPE.STATUS, "Can't get bootloader version"); return result; } ControlItem(ENUM_ITEM_TYPE.TEXT_VER, String.Format("[BL] {0}.{1}.{2}",Version.major,Version.minor,Version.release) ); ControlItem(ENUM_ITEM_TYPE.TEXT_STATUS, String.Format("[BL] {0}.{1}.{2}",Version.major,Version.minor,Version.release) ); m_Mode = DEV_MODE.BL; break; case DEV_MODE.BL_ENTER_UPDATE: #if _TRACE_OUT_PUT m_clsInterface.PrintMagToTxt("====== Get BL_ENTER_UPDATE Version======"); #endif //result = m_clsInterface.API_UpdataGetVersion(ref Version); //if (result != Result.OK && result != Result.FWUPD_CMD_IGN) //{ // //ControlItem(ENUM_ITEM_TYPE.STATUS, "Can't get bootloader version"); // return result; //} ControlItem(ENUM_ITEM_TYPE.TEXT_VER, "[BL] Update Mode." ); ControlItem(ENUM_ITEM_TYPE.TEXT_STATUS, "Enter update Mode." ); m_Mode = DEV_MODE.BL_ENTER_UPDATE; break; default: m_Mode = DEV_MODE.NO; return Result.FAILURE; break; } //Show device type ControlItem( ENUM_ITEM_TYPE.TEXT_DEVICE, rfid.clsPacket.TRANS_API_AskDevType().ToString() ); return Result.OK; }
//===========================Back Ground========================================== private void MonitorUpdate(object sender, DoWorkEventArgs e) { MacBootLoaderVersion Version = new MacBootLoaderVersion(); string strFilePath = textFilePath.Text; Result result = Result.FAILURE; Updatedata strcData; int iLast = 0; int i; #if _TRACE_OUT_PUT m_clsInterface.PrintMagToTxt("--MonitorUpdate---"); #endif //ControlItem(ENUM_ITEM_TYPE.TEXT_VER, ""); //Clear buffer rfid.clsPacket.TRANS_API_ClearBuffer(); //Compare OEMFile VersionNumber with Reader OEMVersionNumber if (sLine != ReaderOEMNumber) { ControlItem(ENUM_ITEM_TYPE.TEXT_STATUS, string.Format(" Write OEMCfg file failure.")); //m_clsBackThread.ReportProgress(0); ControlItem(ENUM_ITEM_TYPE.PROG_SET_MAX, (int)m_lFileSize); ControlItem(ENUM_ITEM_TYPE.PROG_CLEAR, null); ControlItem(ENUM_ITEM_TYPE.LABEL_PERCENT_TEXT, string.Format("{0}%", 0)); MessageBox.Show(string.Format("The browser file is invalid for this product.", result.ToString()), " ", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } else//Write OEM File to the device { //ControlItem(ENUM_ITEM_TYPE.PROG_SET_MAX, (int)m_lFileSize); ControlItem(ENUM_ITEM_TYPE.PROG_SET_MAX, 100); ControlItem(ENUM_ITEM_TYPE.PROG_CLEAR, null); ControlItem(ENUM_ITEM_TYPE.LABEL_PERCENT_TEXT, string.Format("{0}%", 0)); rfid.Constants.Result status; OEMPercentageFlag = false; StreamReader OEMReader = new StreamReader(m_fileStream); iRealReadCountOEM=(int)m_lFileSize; while ((addLine = OEMReader.ReadLine()) != null) { iRealReadCountOEM = iRealReadCountOEM - (addLine.Length+2); if(addLine.Contains("0x")) { if(OEMPercentageFlag==false) { iRealReadCountOEMBtnHalf = iRealReadCountOEM+23;//BtnHalf=Total-TopHalf iRealReadCountOEMBtnHalf = iRealReadCountOEMBtnHalf / 23; OEMPercentage = Convert.ToInt16(Math.Ceiling((100.0 / iRealReadCountOEMBtnHalf))); OEMPercentageFlag = true; } iLast = iLast + (int)OEMPercentage; if (iLast > 100) { i = 100 - (iLast - (int)OEMPercentage); if(i > 0) OEMPercentage = i; } OEMLine = addLine.Split(','); addLine = OEMLine[0].Trim(); dataLine = OEMLine[1].Trim(); string[] SusaddLine = addLine.Split('x'); addLine = SusaddLine[1].Trim(); OEMAddress = UInt16.Parse(addLine, System.Globalization.NumberStyles.HexNumber); string[] SusdataLine = dataLine.Split('x'); dataLine = SusdataLine[1].Trim(); OEMData = UInt32.Parse(dataLine, System.Globalization.NumberStyles.HexNumber); switch (m_clsInterface.API_MacWriteOemData(OEMAddress, OEMData)) { case rfid.Constants.Result.OK: switch (m_clsInterface.API_MacReadOemData(OEMAddress, ref checkOEMData)) { case rfid.Constants.Result.OK: if (OEMData != checkOEMData)//Compare Error { MessageBox.Show("Write OEMData Failure.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); ControlItem(ENUM_ITEM_TYPE.PROG_CLEAR, null); ControlItem(ENUM_ITEM_TYPE.LABEL_PERCENT_TEXT, string.Format("{0}%", 0)); return; } m_clsBackThread.ReportProgress((int)OEMPercentage); UpdateOEMCfgCompleteFlag = true; break; case rfid.Constants.Result.INVALID_PARAMETER: UpdateOEMCfgCompleteFlag = false; MessageBox.Show("Invalid Parameter.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); ControlItem(ENUM_ITEM_TYPE.PROG_CLEAR, null); ControlItem(ENUM_ITEM_TYPE.LABEL_PERCENT_TEXT, string.Format("{0}%", 0)); return; case rfid.Constants.Result.FAILURE: //Get error result = m_clsInterface.API_MacGetError(ref uiCurError, ref uiLastError); if (result == rfid.Constants.Result.OK) { MessageBox.Show(string.Format("Error Code: 0x{0:X3}", uiCurError), " ", MessageBoxButtons.OK, MessageBoxIcon.Error); UpdateOEMCfgCompleteFlag = false; ControlItem(ENUM_ITEM_TYPE.PROG_CLEAR, null); ControlItem(ENUM_ITEM_TYPE.LABEL_PERCENT_TEXT, string.Format("{0}%", 0)); return; } UpdateOEMCfgCompleteFlag = false; ControlItem(ENUM_ITEM_TYPE.PROG_CLEAR, null); ControlItem(ENUM_ITEM_TYPE.LABEL_PERCENT_TEXT, string.Format("{0}%", 0)); break; } break; case rfid.Constants.Result.INVALID_PARAMETER: MessageBox.Show(string.Format("Write OEM Address(h): 0x{0} Fail [INVALID_PARAMETER]", addLine), " ", MessageBoxButtons.OK, MessageBoxIcon.Error); UpdateOEMCfgCompleteFlag = false; ControlItem(ENUM_ITEM_TYPE.PROG_CLEAR, null); ControlItem(ENUM_ITEM_TYPE.LABEL_PERCENT_TEXT, string.Format("{0}%", 0)); return; case rfid.Constants.Result.FAILURE: //Get error result = m_clsInterface.API_MacGetError(ref uiCurError, ref uiLastError); if (result == rfid.Constants.Result.OK) { MessageBox.Show(string.Format("Error Code: 0x{0:X3}", uiCurError), " ", MessageBoxButtons.OK, MessageBoxIcon.Error); UpdateOEMCfgCompleteFlag = false; ControlItem(ENUM_ITEM_TYPE.PROG_CLEAR, null); ControlItem(ENUM_ITEM_TYPE.LABEL_PERCENT_TEXT, string.Format("{0}%", 0)); return; } UpdateOEMCfgCompleteFlag = false; ControlItem(ENUM_ITEM_TYPE.PROG_CLEAR, null); ControlItem(ENUM_ITEM_TYPE.LABEL_PERCENT_TEXT, string.Format("{0}%", 0)); break; } } } //m_lFileSize = m_lFileSize - 40; //m_clsBackThread.ReportProgress(40); //for (int filesize = 0; filesize<(int)m_lFileSize; filesize = filesize + 40) //{ //Increase progress bar //m_clsBackThread.ReportProgress((int)m_lFileSize); //m_clsBackThread.ReportProgress(filesize); //} //System.Threading.Thread.Sleep(10); } //m_clsBackThread.ReportProgress(100); ControlItem(ENUM_ITEM_TYPE.TEXT_STATUS, "Update progress finished."); MessageBox.Show("Update OEMCfg successfully."); //initial Progress Bar ControlItem(ENUM_ITEM_TYPE.PROG_SET_MAX, 100); ControlItem(ENUM_ITEM_TYPE.PROG_CLEAR, null); ControlItem(ENUM_ITEM_TYPE.LABEL_PERCENT_TEXT, string.Format("{0}%", 0)); m_clsInterface.API_ControlSoftReset(); // OpenDevice(); // Connect(); // GetOEMVersion(); }
//private Result GetVersion( DEV_MODE r_mode ) private Result GetVersion() { MacBootLoaderVersion Version = new MacBootLoaderVersion(); Result result = Result.FAILURE; m_Mode = DEV_MODE.NO; FirmwareVersion ver = new FirmwareVersion(); result = m_clsInterface.API_MacGetFirmwareVersion(ref ver); ControlItem(ENUM_ITEM_TYPE.TEXT_VER, String.Format("[FW] {0}.{1}.{2}",ver.major,ver.minor,ver.release) ); //ControlItem(ENUM_ITEM_TYPE.TEXT_STATUS, String.Format("[FW] {0}.{1}.{2}",ver.major,ver.minor,ver.release) ); //Show device type ControlItem( ENUM_ITEM_TYPE.TEXT_DEVICE, rfid.clsPacket.TRANS_API_AskDevType().ToString() ); return Result.OK; }
//===========================Back Ground========================================== private void MonitorUpdate(object sender, DoWorkEventArgs e) { MacBootLoaderVersion Version = new MacBootLoaderVersion(); string strFilePath = textFilePath.Text; Result result = Result.FAILURE; Updatedata strcData; int iLast = 0; int i; #if _TRACE_OUT_PUT m_clsInterface.PrintMagToTxt("--MonitorUpdate---"); #endif //ControlItem(ENUM_ITEM_TYPE.TEXT_VER, ""); //Clear buffer rfid.clsPacket.TRANS_API_ClearBuffer(); //Compare OEMFile VersionNumber with Reader OEMVersionNumber if (sLine != ReaderOEMNumber) { ControlItem(ENUM_ITEM_TYPE.TEXT_STATUS, string.Format(" Write OEMCfg file failure.")); //m_clsBackThread.ReportProgress(0); ControlItem(ENUM_ITEM_TYPE.PROG_SET_MAX, (int)m_lFileSize); ControlItem(ENUM_ITEM_TYPE.PROG_CLEAR, null); ControlItem(ENUM_ITEM_TYPE.LABEL_PERCENT_TEXT, string.Format("{0}%", 0)); MessageBox.Show(string.Format("The browser file is invalid for this product.", result.ToString()), " ", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } else//Write OEM File to the device { //ControlItem(ENUM_ITEM_TYPE.PROG_SET_MAX, (int)m_lFileSize); ControlItem(ENUM_ITEM_TYPE.PROG_SET_MAX, 100); ControlItem(ENUM_ITEM_TYPE.PROG_CLEAR, null); ControlItem(ENUM_ITEM_TYPE.LABEL_PERCENT_TEXT, string.Format("{0}%", 0)); rfid.Constants.Result status; OEMPercentageFlag = false; StreamReader OEMReader = new StreamReader(m_fileStream); iRealReadCountOEM = (int)m_lFileSize; while ((addLine = OEMReader.ReadLine()) != null) { iRealReadCountOEM = iRealReadCountOEM - (addLine.Length + 2); if (addLine.Contains("0x")) { if (OEMPercentageFlag == false) { iRealReadCountOEMBtnHalf = iRealReadCountOEM + 23;//BtnHalf=Total-TopHalf iRealReadCountOEMBtnHalf = iRealReadCountOEMBtnHalf / 23; OEMPercentage = Convert.ToInt16(Math.Ceiling((100.0 / iRealReadCountOEMBtnHalf))); OEMPercentageFlag = true; } iLast = iLast + (int)OEMPercentage; if (iLast > 100) { i = 100 - (iLast - (int)OEMPercentage); if (i > 0) { OEMPercentage = i; } } OEMLine = addLine.Split(','); addLine = OEMLine[0].Trim(); dataLine = OEMLine[1].Trim(); string[] SusaddLine = addLine.Split('x'); addLine = SusaddLine[1].Trim(); OEMAddress = UInt16.Parse(addLine, System.Globalization.NumberStyles.HexNumber); string[] SusdataLine = dataLine.Split('x'); dataLine = SusdataLine[1].Trim(); OEMData = UInt32.Parse(dataLine, System.Globalization.NumberStyles.HexNumber); switch (m_clsInterface.API_MacWriteOemData(OEMAddress, OEMData)) { case rfid.Constants.Result.OK: switch (m_clsInterface.API_MacReadOemData(OEMAddress, ref checkOEMData)) { case rfid.Constants.Result.OK: if (OEMData != checkOEMData) //Compare Error { MessageBox.Show("Write OEMData Failure.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); ControlItem(ENUM_ITEM_TYPE.PROG_CLEAR, null); ControlItem(ENUM_ITEM_TYPE.LABEL_PERCENT_TEXT, string.Format("{0}%", 0)); return; } m_clsBackThread.ReportProgress((int)OEMPercentage); UpdateOEMCfgCompleteFlag = true; break; case rfid.Constants.Result.INVALID_PARAMETER: UpdateOEMCfgCompleteFlag = false; MessageBox.Show("Invalid Parameter.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); ControlItem(ENUM_ITEM_TYPE.PROG_CLEAR, null); ControlItem(ENUM_ITEM_TYPE.LABEL_PERCENT_TEXT, string.Format("{0}%", 0)); return; case rfid.Constants.Result.FAILURE: //Get error result = m_clsInterface.API_MacGetError(ref uiCurError, ref uiLastError); if (result == rfid.Constants.Result.OK) { MessageBox.Show(string.Format("Error Code: 0x{0:X3}", uiCurError), " ", MessageBoxButtons.OK, MessageBoxIcon.Error); UpdateOEMCfgCompleteFlag = false; ControlItem(ENUM_ITEM_TYPE.PROG_CLEAR, null); ControlItem(ENUM_ITEM_TYPE.LABEL_PERCENT_TEXT, string.Format("{0}%", 0)); return; } UpdateOEMCfgCompleteFlag = false; ControlItem(ENUM_ITEM_TYPE.PROG_CLEAR, null); ControlItem(ENUM_ITEM_TYPE.LABEL_PERCENT_TEXT, string.Format("{0}%", 0)); break; } break; case rfid.Constants.Result.INVALID_PARAMETER: MessageBox.Show(string.Format("Write OEM Address(h): 0x{0} Fail [INVALID_PARAMETER]", addLine), " ", MessageBoxButtons.OK, MessageBoxIcon.Error); UpdateOEMCfgCompleteFlag = false; ControlItem(ENUM_ITEM_TYPE.PROG_CLEAR, null); ControlItem(ENUM_ITEM_TYPE.LABEL_PERCENT_TEXT, string.Format("{0}%", 0)); return; case rfid.Constants.Result.FAILURE: //Get error result = m_clsInterface.API_MacGetError(ref uiCurError, ref uiLastError); if (result == rfid.Constants.Result.OK) { MessageBox.Show(string.Format("Error Code: 0x{0:X3}", uiCurError), " ", MessageBoxButtons.OK, MessageBoxIcon.Error); UpdateOEMCfgCompleteFlag = false; ControlItem(ENUM_ITEM_TYPE.PROG_CLEAR, null); ControlItem(ENUM_ITEM_TYPE.LABEL_PERCENT_TEXT, string.Format("{0}%", 0)); return; } UpdateOEMCfgCompleteFlag = false; ControlItem(ENUM_ITEM_TYPE.PROG_CLEAR, null); ControlItem(ENUM_ITEM_TYPE.LABEL_PERCENT_TEXT, string.Format("{0}%", 0)); break; } } } //m_lFileSize = m_lFileSize - 40; //m_clsBackThread.ReportProgress(40); //for (int filesize = 0; filesize<(int)m_lFileSize; filesize = filesize + 40) //{ //Increase progress bar //m_clsBackThread.ReportProgress((int)m_lFileSize); //m_clsBackThread.ReportProgress(filesize); //} //System.Threading.Thread.Sleep(10); } //m_clsBackThread.ReportProgress(100); ControlItem(ENUM_ITEM_TYPE.TEXT_STATUS, "Update progress finished."); MessageBox.Show("Update OEMCfg successfully."); //initial Progress Bar ControlItem(ENUM_ITEM_TYPE.PROG_SET_MAX, 100); ControlItem(ENUM_ITEM_TYPE.PROG_CLEAR, null); ControlItem(ENUM_ITEM_TYPE.LABEL_PERCENT_TEXT, string.Format("{0}%", 0)); m_clsInterface.API_ControlSoftReset(); // OpenDevice(); // Connect(); // GetOEMVersion(); }