Esempio n. 1
0
        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 });
        }
Esempio n. 2
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);
        }
Esempio n. 3
0
        //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);
        }
Esempio n. 4
0
 public static extern Result RFID_MacGetBootLoaderVersion
 (
     [In]      Int32 handle,
     [In, Out] MacBootLoaderVersion pVersion
 );
Esempio n. 5
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);
        }
Esempio n. 6
0
//===========================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));
            }
        }
Esempio n. 7
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;
        }
Esempio n. 8
0
        //===========================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));
            }
        }
Esempio n. 9
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;
        }
Esempio n. 10
0
        //===========================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();
        }
Esempio n. 11
0
        //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;
        }
Esempio n. 12
0
//===========================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();
        }