示例#1
0
 public string changeDifferences(Difference[] differences)
 {
     foreach (Difference difference in differences)
     {
         if (difference.toTheFirstAvailableAddress)
         {
             difference.address = this._firstAvailableAddress;
         }
         this.changeDifference(difference);
     }
     this.FindFirstAvailableAddress();
     File.WriteAllLines(this._hexFileName, this._hexFileLines.ToArray());
     return this._hexFileName;
 }
示例#2
0
 private Difference[] BreakUpDiff(Difference diff)
 {
     int num = ((diff.length % 0x10) == 0) ? (diff.length / 0x10) : ((diff.length / 0x10) + 1);
     Difference[] differenceArray = new Difference[num];
     int length = diff.length;
     for (int i = 0; i < num; i++)
     {
         differenceArray[i] = new Difference();
         differenceArray[i].address = (ushort) (diff.address + (i * 0x10));
         differenceArray[i].length = ((length / 0x10) > 0) ? 0x10 : (length % 0x10);
         differenceArray[i].data = new byte[differenceArray[i].length];
         Array.Copy(diff.data, i * 0x10, differenceArray[i].data, 0, differenceArray[i].length);
         length -= differenceArray[i].length;
     }
     return differenceArray;
 }
示例#3
0
        public FirmwareDownloadResult DownloadFirmware(string firmwarePath, UpdateFirmwareCallback callback, Difference[] fwChanges)
        {
            if (callback(0, true, "Please put the LoadBoard into download mode by holding the SW1 button and then clicking SW2.  \r\nAfter clicking OK do not disconnect board until the firmware download is complete.", MessageBoxButtons.OKCancel) != DialogResult.OK)
            {
                return FirmwareDownloadResult.StoppedNoError;
            }
            StreamReader reader = new StreamReader(firmwarePath);
            ArrayList firmware = new ArrayList();
            try
            {
                while (reader.Peek() >= 0)
                {
                    string str = reader.ReadLine().Trim();
                    if ((str.Length > 0) && (str[0] != ';'))
                    {
                        firmware.Add(str);
                    }
                }
            }
            catch
            {
                callback(0, true, "There was an error while reading in the firmware file.", MessageBoxButtons.OK);
                return FirmwareDownloadResult.StoppedWithError;
            }
            finally
            {
                reader.Close();
            }
            if (firmware.Count < 2)
            {
                callback(0, true, "The firmware file is too small.", MessageBoxButtons.OK);
                return FirmwareDownloadResult.StoppedWithError;
            }
            switch (this.WriteFirmwareToDevice(firmware, callback))
            {
                case FDResult.OK:
                    return FirmwareDownloadResult.OK;

                case FDResult.Error:
                    return FirmwareDownloadResult.StoppedWithError;

                case FDResult.FatalError:
                    return FirmwareDownloadResult.StoppedWithFatalError;
            }
            return FirmwareDownloadResult.StoppedWithError;
        }
示例#4
0
文件: IO_FD_SUB8051.cs 项目: x893/WDS
        public FirmwareDownloadResult DownloadFirmware(string firmwarePath, UpdateFirmwareCallback callback, Difference[] fwChanges)
        {
            StreamReader reader = new StreamReader(firmwarePath);
            ArrayList firmware = new ArrayList();
            try
            {
                while (reader.Peek() >= 0)
                {
                    string str = reader.ReadLine().Trim();
                    if ((str.Length > 0) && (str[0] != ';'))
                    {
                        firmware.Add(str);
                    }
                }
            }
            catch
            {
                callback(0, true, "There was an error while reading in the firmware file.", MessageBoxButtons.OK);
                return FirmwareDownloadResult.StoppedWithError;
            }
            finally
            {
                reader.Close();
            }
            if (firmware.Count < 2)
            {
                callback(0, true, "There was an error while reading in the firmware file.", MessageBoxButtons.OK);
                return FirmwareDownloadResult.StoppedWithError;
            }
            switch (WriteFirmwareToDevice(firmware, callback))
            {
                case FDResult.OK:
                    return FirmwareDownloadResult.OK;

                case FDResult.Error:
                    return FirmwareDownloadResult.StoppedWithError;

                case FDResult.FatalError:
                    return FirmwareDownloadResult.StoppedWithFatalError;
            }
            return FirmwareDownloadResult.StoppedWithError;
        }
示例#5
0
 private bool loadFirmwareCode(FirmwareItem firmware, Difference[] fwChanges)
 {
     Application.DoEvents();
     try
     {
         bool flag = true;
         ((IOPH_DATA) this._ioph).AllowDeviceHandover(this._adtRec);
         Thread.Sleep(100);
         IO_FD_Main main = new IO_FD_Main(this._adtRec);
         if (main.DownloadFirmware(firmware, null, fwChanges) == FirmwareDownloadResult.OK)
         {
             ADTManager.instance().addADTRecord(this._adtRec);
         }
         else
         {
             flag = false;
             MessageBox.Show("Failed to load the appropreate firmware!\nPlease try again!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);
         }
         ((IOPH_DATA) this._ioph).ReconnectDevice(this._adtRec);
         return flag;
     }
     catch (Exception exception)
     {
         _log.Error("Failed loading firmware code: " + exception.Message);
         this._ioph.terminate();
         base.Close();
         return false;
     }
 }
示例#6
0
 private Difference[] createFirmwareChanges()
 {
     byte num3;
     byte num4;
     byte num5;
     byte num6;
     byte num7;
     byte num8;
     Difference difference = new Difference {
         address = this._selectedProject.FirmwareLoad.DataStartAddress,
         data = this._selectedConfig.CommandSet,
         length = this._selectedConfig.CommandSet.Length
     };
     Difference difference2 = new Difference {
         address = (ushort) (this._selectedProject.FirmwareLoad.DataStartAddress + difference.length),
         data = BitConverter.GetBytes(this._ezr2Config.Crc)
     };
     Array.Reverse(difference2.data);
     difference2.length = 2;
     if (this._selectedProject.Name == "Range test demo")
     {
         Difference difference3 = new Difference();
         Difference difference4 = new Difference();
         Difference difference5 = new Difference();
         Difference difference6 = new Difference();
         Difference difference7 = new Difference();
         Difference difference8 = new Difference();
         Difference difference9 = new Difference();
         Difference difference10 = new Difference();
         Difference difference11 = new Difference();
         difference3.address = 0x9ff3;
         difference3.data = new byte[1];
         difference3.length = 1;
         difference4.address = 0x9ff4;
         difference4.data = new byte[1];
         difference4.length = 1;
         difference5.address = 0xa07e;
         difference5.data = new byte[1];
         difference5.length = 1;
         difference6.address = 0xa07f;
         byte num = 0;
         if (this._selectedConfig.FreqBandLow >= 0x1a9)
         {
             if (this._selectedConfig.FreqBandHigh <= 0x20d)
             {
                 num = 1;
             }
             else
             {
                 num = 2;
             }
         }
         difference6.data = new byte[] { num };
         difference6.length = 1;
         difference7.address = 0xa080;
         byte num2 = 0xe1;
         if (this._selectedConfig.ModulationMode == Modulation.FSK)
         {
             num2 = 0xe0;
         }
         else if (this._selectedConfig.ModulationMode == Modulation.OOK)
         {
             num2 = 0xe2;
         }
         difference7.data = new byte[] { num2 };
         difference7.length = 1;
         string s = "";
         difference8.address = 0xa081;
         difference8.length = 5;
         s = this._selectedConfig.DataRate.ToString("0.#");
         if (s.Length < difference8.length)
         {
             s = new string(' ', difference8.length - s.Length) + s;
         }
         else
         {
             s = s.Substring(0, difference8.length);
         }
         difference8.data = new UTF8Encoding().GetBytes(s);
         difference9.address = 0xa086;
         difference9.length = 5;
         s = this._selectedConfig.Deviation.ToString("0.#");
         if (s.Length < difference9.length)
         {
             s = new string(' ', difference9.length - s.Length) + s;
         }
         else
         {
             s = s.Substring(0, difference9.length);
         }
         difference9.data = new UTF8Encoding().GetBytes(s);
         difference10.address = 0xa08b;
         difference10.length = 5;
         s = this._selectedConfig.ChannelBandwith.ToString("0.#");
         if (s.Length < difference10.length)
         {
             s = new string(' ', difference10.length - s.Length) + s;
         }
         else
         {
             s = s.Substring(0, difference10.length);
         }
         difference10.data = new UTF8Encoding().GetBytes(s);
         difference11.address = 0xa014;
         difference11.address = (ushort) (difference11.address + ((ushort) (num * 6)));
         difference11.length = 6;
         s = this.nudCenterFrequency.Value.ToString("000.##");
         if (s.Length < difference11.length)
         {
             s = new string(' ', difference11.length - s.Length) + s;
         }
         else
         {
             s = s.Substring(0, difference11.length);
         }
         difference11.data = new UTF8Encoding().GetBytes(s);
         return new Difference[] { difference, difference2, difference3, difference4, difference5, difference6, difference7, difference8, difference9, difference10, difference11 };
     }
     Difference difference12 = new Difference();
     Difference difference13 = new Difference();
     Difference difference14 = new Difference();
     Difference difference15 = new Difference();
     Difference difference16 = new Difference();
     Difference difference17 = new Difference();
     if (byte.TryParse(this.cbbGpio0.SelectedItem.ToString().Split(new char[] { '(' })[1].Split(new char[] { ')' })[0], NumberStyles.Integer, (IFormatProvider) null, out num3))
     {
         if (this.chbGpio0Pullup.Checked)
         {
             num3 = (byte) (num3 | 0x40);
         }
         difference12.address = (ushort) ((this._selectedProject.FirmwareLoad.DataStartAddress + 0xe5) + 9);
         difference12.data = new byte[] { num3 };
         difference12.length = 1;
     }
     if (byte.TryParse(this.cbbGpio1.SelectedItem.ToString().Split(new char[] { '(' })[1].Split(new char[] { ')' })[0], NumberStyles.Integer, (IFormatProvider) null, out num4))
     {
         difference13.address = (ushort) ((this._selectedProject.FirmwareLoad.DataStartAddress + 230) + 9);
         difference13.data = new byte[] { num4 };
         difference13.length = 1;
     }
     if (byte.TryParse(this.cbbGpio2.SelectedItem.ToString().Split(new char[] { '(' })[1].Split(new char[] { ')' })[0], NumberStyles.Integer, (IFormatProvider) null, out num5))
     {
         if (this.chbGpio2Pullup.Checked)
         {
             num5 = (byte) (num5 | 0x40);
         }
         difference14.address = (ushort) ((this._selectedProject.FirmwareLoad.DataStartAddress + 0xe7) + 9);
         difference14.data = new byte[] { num5 };
         difference14.length = 1;
     }
     if (byte.TryParse(this.cbbGpio3.SelectedItem.ToString().Split(new char[] { '(' })[1].Split(new char[] { ')' })[0], NumberStyles.Integer, (IFormatProvider) null, out num6))
     {
         if (this.chbGpio3Pullup.Checked)
         {
             num6 = (byte) (num6 | 0x40);
         }
         difference15.address = (ushort) ((this._selectedProject.FirmwareLoad.DataStartAddress + 0xe8) + 9);
         difference15.data = new byte[] { num6 };
         difference15.length = 1;
     }
     if (byte.TryParse(this.cbbNirq.SelectedItem.ToString().Split(new char[] { '(' })[1].Split(new char[] { ')' })[0], NumberStyles.Integer, (IFormatProvider) null, out num7))
     {
         if (this.chbNirqPullup.Checked)
         {
             num7 = (byte) (num7 | 0x40);
         }
         difference16.address = (ushort) ((this._selectedProject.FirmwareLoad.DataStartAddress + 0xe9) + 9);
         difference16.data = new byte[] { num7 };
         difference16.length = 1;
     }
     if (byte.TryParse(this.cbbSdo.SelectedItem.ToString().Split(new char[] { '(' })[1].Split(new char[] { ')' })[0], NumberStyles.Integer, (IFormatProvider) null, out num8))
     {
         if (this.chbSdoPullup.Checked)
         {
             num8 = (byte) (num8 | 0x40);
         }
         difference17.address = (ushort) ((this._selectedProject.FirmwareLoad.DataStartAddress + 0xea) + 9);
         difference17.data = new byte[] { num8 };
         difference17.length = 1;
     }
     Difference difference18 = new Difference();
     Difference difference19 = new Difference();
     Difference difference20 = new Difference();
     Difference difference21 = new Difference();
     difference18.address = (ushort) ((this._selectedProject.FirmwareLoad.DataStartAddress + 210) + 9);
     difference18.length = 1;
     difference18.data = new byte[1];
     if (this.chbEnablePHInt.Checked)
     {
         difference18.data[0] = (byte) (difference18.data[0] | 1);
     }
     if (this.chbEnableModemInt.Checked)
     {
         difference18.data[0] = (byte) (difference18.data[0] | 2);
     }
     if (this.chbEnableChipInt.Checked)
     {
         difference18.data[0] = (byte) (difference18.data[0] | 4);
     }
     difference19.address = (ushort) ((this._selectedProject.FirmwareLoad.DataStartAddress + 0xd3) + 9);
     difference19.length = 1;
     difference19.data = new byte[] { this.bstPHStatus.StatusValue };
     difference20.address = (ushort) ((this._selectedProject.FirmwareLoad.DataStartAddress + 0xd4) + 9);
     difference20.length = 1;
     difference20.data = new byte[] { this.bstModemStatus.StatusValue };
     difference21.address = (ushort) ((this._selectedProject.FirmwareLoad.DataStartAddress + 0xd5) + 9);
     difference21.length = 1;
     difference21.data = new byte[] { this.bstChipStatus.StatusValue };
     Difference difference22 = new Difference {
         length = 1,
         address = (ushort) ((this._selectedProject.FirmwareLoad.DataStartAddress + 0xec) + 9),
         data = new byte[] { (byte) this.nudChannelNumber.Value }
     };
     Difference difference23 = new Difference {
         length = 1,
         address = (ushort) ((this._selectedProject.FirmwareLoad.DataStartAddress + 0xed) + 9),
         data = new byte[] { (byte) this.nudFixedPacketLen.Value }
     };
     Difference difference24 = new Difference {
         length = 4,
         address = (ushort) ((this._selectedProject.FirmwareLoad.DataStartAddress + 0xce) + 9),
         data = BitConverter.GetBytes((uint) (this.nudXtalFrequency.Value * 1000000M))
     };
     Array.Reverse(difference24.data);
     return new Difference[] { difference, difference2, difference12, difference13, difference14, difference15, difference16, difference17, difference18, difference19, difference20, difference21, difference22, difference23, difference24 };
 }
示例#7
0
        public FirmwareDownloadResult DownloadFirmware(string firmwarePath, UpdateFirmwareCallback callback, Difference[] fwChanges)
        {
            StreamReader reader = new StreamReader(firmwarePath);
            ArrayList firmware = new ArrayList();
            try
            {
                while (reader.Peek() >= 0)
                {
                    string str = reader.ReadLine().Trim();
                    if ((str.Length > 0) && (str[0] != ';'))
                        firmware.Add(str);
                }
            }
            catch
            {
                callback(0, true, "There was an error while reading in the firmware file.", MessageBoxButtons.OK);
                return FirmwareDownloadResult.StoppedWithError;
            }
            finally
            {
                reader.Close();
            }
            if (firmware.Count < 2)
            {
                callback(0, true, "There was an error while reading in the firmware file.", MessageBoxButtons.OK);
                return FirmwareDownloadResult.StoppedWithError;
            }
            ushort vID = _adtRecord.PortAddress.hidAddr.VID;
            ushort pID = _adtRecord.PortAddress.hidAddr.PID;
            string serial = _adtRecord.PortAddress.hidAddr.Serial;
            FDResult result = WriteFirmwareToDevice(firmware, callback, vID, pID, serial, firmwarePath);
            _adtRecord.DeviceInfo = _adtRecord.PortAddress.handle.HIDhnd.hnd.ADT.DeviceInfo = ((DDI_HID) _ddi).queryDeviceInfo(_adtRecord.PortAddress.handle);
            switch (result)
            {
                case FDResult.OK:
                    return FirmwareDownloadResult.OK;

                case FDResult.Error:
                    return FirmwareDownloadResult.StoppedWithError;

                case FDResult.FatalError:
                    return FirmwareDownloadResult.StoppedWithFatalError;
            }
            return FirmwareDownloadResult.StoppedWithError;
        }
示例#8
0
        private void changeDifference(Difference diff)
        {
            bool flag = false;
            for (int i = 0; i < this._hexFileLines.Count; i++)
            {
                if ((this._hexFileLines[i].Length > 0) && this._hexFileLines[i].StartsWith(":"))
                {
                    byte num2 = Convert.ToByte(this._hexFileLines[i].Substring(1, 2), 0x10);
                    ushort num3 = Convert.ToUInt16(this._hexFileLines[i].Substring(3, 4), 0x10);
                    byte[] bytes = this.GetBytes(this._hexFileLines[i].Substring(9, num2 * 2));
                    Convert.ToByte(this._hexFileLines[i].Substring(9 + (num2 * 2), 2), 0x10);
                    byte[] hexLine = this.GetBytes(this._hexFileLines[i].Substring(1, this._hexFileLines[i].Length - 3));
                    if ((num3 <= diff.address) && (diff.address < (num3 + num2)))
                    {
                        int address = diff.address;
                        for (int j = 0; address < Math.Min((int) (diff.address + diff.length), (int) (num3 + num2)); j++)
                        {
                            bytes[(j + diff.address) - num3] = hexLine[((4 + j) + diff.address) - num3] = diff.data[j];
                            int length = (9 + (2 * (diff.address - num3))) + (2 * (address - diff.address));
                            string str = this._hexFileLines[i].Substring(0, length);
                            string str2 = this._hexFileLines[i].Substring(length + 2, (this._hexFileLines[i].Length - length) - 4);
                            str2 = str2 + CalculateCrc(hexLine).ToString("X2");
                            this._hexFileLines[i] = str + bytes[(j + diff.address) - num3].ToString("X2") + str2;
                            address++;
                        }
                        if ((diff.address + diff.length) > (num3 + num2))
                        {
                            Difference difference;
                            difference = new Difference {
                                address = (ushort) (num3 + num2)
                            };
                            difference.length = (diff.length - difference.address) + diff.address;
                            difference.data = new byte[difference.length];

                            Array.ConstrainedCopy(diff.data, difference.address - diff.address, difference.data, 0, difference.length);
                            this.changeDifference(difference);
                        }
                        flag = true;
                        break;
                    }
                }
            }
            if (!flag)
            {
                foreach (Difference difference2 in this.BreakUpDiff(diff))
                {
                    this.CreateAndAddHexLine(difference2);
                }
                flag = true;
            }
        }
示例#9
0
 private void CreateAndAddHexLine(Difference diff)
 {
     StringBuilder builder = new StringBuilder(":", 50);
     builder.Append(diff.length.ToString("X2")).Append(diff.address.ToString("X4")).Append("00");
     foreach (byte num in diff.data)
     {
         builder.Append(num.ToString("X2"));
     }
     builder.Append(CalculateCrc(this.GetBytes(builder.ToString(1, builder.Length - 1))).ToString("X2"));
     this._hexFileLines.Insert(this._hexFileLines.Count - 1, builder.ToString());
 }
示例#10
0
 private Difference[] createFirmwareChanges()
 {
     Difference difference14;
     Difference difference15;
     Difference difference16;
     Difference difference17;
     Difference difference18;
     Difference difference19;
     Difference difference20;
     Difference difference21;
     Difference difference22;
     Difference difference23;
     Difference difference24;
     Difference difference25;
     Difference difference26;
     if (this._selectedProject.Name == "Range test demo")
     {
         Difference difference = new Difference();
         Difference difference2 = new Difference();
         Difference difference3 = new Difference();
         Difference difference4 = new Difference();
         Difference difference5 = new Difference();
         Difference difference6 = new Difference();
         Difference difference7 = new Difference();
         Difference difference8 = new Difference();
         Difference difference9 = new Difference();
         Difference difference10 = new Difference();
         Difference difference11 = new Difference();
         Difference difference12 = new Difference();
         Difference difference13 = new Difference();
         difference.address = 0x9ff3;
         difference.data = new byte[1];
         difference.length = 1;
         difference2.address = 0x9ff4;
         difference2.data = new byte[1];
         difference2.length = 1;
         difference3.address = 0xa07e;
         difference3.data = new byte[1];
         difference3.length = 1;
         difference4.address = 0xa07f;
         byte num = 0;
         if (this.nudCenterFrequency.Value >= 425M)
         {
             if (this.nudCenterFrequency.Value <= 525M)
             {
                 num = 1;
             }
             else
             {
                 num = 2;
             }
         }
         difference4.data = new byte[] { num };
         difference4.length = 1;
         difference5.address = 0xa080;
         byte num2 = 0xe1;
         if (this._selectedConfig.ModulationMode == Modulation.FSK)
         {
             num2 = 0xe0;
         }
         else if (this._selectedConfig.ModulationMode == Modulation.OOK)
         {
             num2 = 0xe2;
         }
         difference5.data = new byte[] { num2 };
         difference5.length = 1;
         string s = "";
         difference6.address = 0xa081;
         difference6.length = 5;
         s = this._selectedConfig.DataRate.ToString("0.#");
         if (s.Length < difference6.length)
         {
             s = new string(' ', difference6.length - s.Length) + s;
         }
         else
         {
             s = s.Substring(0, difference6.length);
         }
         difference6.data = new UTF8Encoding().GetBytes(s);
         difference7.address = 0xa086;
         difference7.length = 5;
         s = this._selectedConfig.Deviation.ToString("0.#");
         if (s.Length < difference7.length)
         {
             s = new string(' ', difference7.length - s.Length) + s;
         }
         else
         {
             s = s.Substring(0, difference7.length);
         }
         difference7.data = new UTF8Encoding().GetBytes(s);
         difference8.address = 0xa08b;
         difference8.length = 5;
         s = this._selectedConfig.ChannelBandwith.ToString("0.#");
         if (s.Length < difference8.length)
         {
             s = new string(' ', difference8.length - s.Length) + s;
         }
         else
         {
             s = s.Substring(0, difference8.length);
         }
         difference8.data = new UTF8Encoding().GetBytes(s);
         difference9.address = 0xa014;
         difference9.address = (ushort) (difference9.address + ((ushort) (num * 6)));
         difference9.length = 6;
         s = this.nudCenterFrequency.Value.ToString("000.##");
         if (s.Length < difference9.length)
         {
             s = new string(' ', difference9.length - s.Length) + s;
         }
         else
         {
             s = s.Substring(0, difference9.length);
         }
         difference9.data = new UTF8Encoding().GetBytes(s);
         difference10.address = 0xb8c6;
         difference10.length = 4;
         difference10.data = new byte[difference10.length];
         Array.ConstrainedCopy(this.CarrierFrequencyACC, 2, difference10.data, 0, difference10.length);
         difference11.address = 0xb8d6;
         difference11.length = 2;
         difference11.data = new byte[difference11.length];
         Array.ConstrainedCopy(this.DataRateACC, 2, difference11.data, 0, difference11.length);
         if (this._selectedConfig.ModulationMode == Modulation.OOK)
         {
             difference12.address = 0xb8d8;
             difference12.length = 1;
             difference12.data = new byte[] { BitConverter.GetBytes((short) Math.Pow(2.0, (double) this._selectedConfig.RampRate))[0] };
         }
         difference13.address = 0xb8d9;
         difference13.length = 1;
         difference13.data = new byte[] { this.ModulationTypeAndDeviationACC[3] };
         return new Difference[] { difference, difference2, difference3, difference4, difference5, difference6, difference7, difference8, difference9, difference10, difference11, difference12, difference13 };
     }
     ushort num3 = 0;
     difference14 = new Difference {
         address = (ushort) (this._selectedProject.FirmwareLoad.DataStartAddress + num3),
         data = this.ModeSelectionACC
     };
     difference14.length = difference14.data.Length;
     num3 = (ushort) (num3 + ((ushort) difference14.length));
     difference15 = new Difference {
         address = (ushort) (this._selectedProject.FirmwareLoad.DataStartAddress + num3),
         data = this.TuneIntervalACC,
     };
     difference15.length = difference15.data.Length;
     num3 = (ushort) (num3 + ((ushort) difference15.length));
     difference16 = new Difference {
         address = (ushort) (this._selectedProject.FirmwareLoad.DataStartAddress + num3),
         data = this.ModulationTypeAndDeviationACC
     };
     difference16.length = difference16.data.Length;
     num3 = (ushort) (num3 + ((ushort) difference16.length));
     difference17 = new Difference {
         address = (ushort) (this._selectedProject.FirmwareLoad.DataStartAddress + num3),
         data = this.ChipConfigACC
     };
     difference17.length = difference17.data.Length;
     num3 = (ushort) (num3 + ((ushort) difference17.length));
     difference18 = new Difference {
         address = (ushort) (this._selectedProject.FirmwareLoad.DataStartAddress + num3),
         data = this.CarrierFrequencyACC
     };
     difference18.length = difference18.data.Length;
     num3 = (ushort) (num3 + ((ushort) difference18.length));
     difference19 = new Difference {
         address = (ushort) (this._selectedProject.FirmwareLoad.DataStartAddress + num3),
         data = this.DataRateACC
     };
     difference19.length = difference19.data.Length;
     num3 = (ushort) (num3 + ((ushort) difference19.length));
     difference20 = new Difference {
         address = (ushort) (this._selectedProject.FirmwareLoad.DataStartAddress + num3),
         data = this.ExternalCrystalACC
     };
     difference20.length = difference20.data.Length;
     num3 = (ushort) (num3 + ((ushort) difference20.length));
     difference21 = new Difference {
         address = (ushort) (this._selectedProject.FirmwareLoad.DataStartAddress + num3),
         data = this.PowerAmplifierACC
     };
     difference21.length = difference21.data.Length;
     num3 = (ushort) (num3 + ((ushort) difference21.length));
     difference22 = new Difference {
         address = (ushort) (this._selectedProject.FirmwareLoad.DataStartAddress + num3),
         data = this.FIFOTresholdACC
     };
     difference22.length = difference22.data.Length;
     num3 = (ushort) (num3 + ((ushort) difference22.length));
     difference23 = new Difference {
         address = (ushort) (this._selectedProject.FirmwareLoad.DataStartAddress + num3),
         data = this.LEDIntensityACC
     };
     difference23.length = difference23.data.Length;
     num3 = (ushort) (num3 + ((ushort) difference23.length));
     difference24 = new Difference {
         address = (ushort) (this._selectedProject.FirmwareLoad.DataStartAddress + num3),
         data = this.LEDControlACC
     };
     difference24.length = difference24.data.Length;
     num3 = (ushort) (num3 + ((ushort) difference24.length));
     difference25 = new Difference {
         address = (ushort) (this._selectedProject.FirmwareLoad.DataStartAddress + num3),
         data = this.FIFOInterruptsACC
     };
     difference25.length = difference25.data.Length;
     num3 = (ushort) (num3 + ((ushort) difference25.length));
     difference26 = new Difference {
         address = (ushort) (this._selectedProject.FirmwareLoad.DataStartAddress + num3),
         data = this.BatteryTresholdACC
     };
     difference26.length = difference26.data.Length;
     num3 = (ushort) (num3 + ((ushort) difference26.length));
     return new Difference[] { difference14, difference15, difference16, difference17, difference18, difference19, difference20, difference21, difference22, difference23, difference24, difference25, difference26 };
 }
示例#11
0
 private void downloadProject()
 {
     if (_selectedProject.Name != "Range test")
     {
         Difference difference;
         Difference difference2;
         difference = new Difference {
             data = _apiManager.createDynamicArrayCommandSet(true),
             address = 0xf000
         };
         difference.length = difference.data.Length;
         List<byte> list = new List<byte>();
         byte[] collection = new byte[3];
         collection[0] = 0xff;
         collection[1] = 240;
         list.AddRange(collection);
         list.Add((byte) nudChannelNumber.Value);
         list.Add(getPacketLengthForProject());
         list.Add(3);
         byte[] buffer2 = new byte[2];
         buffer2[0] = 240;
         list.AddRange(buffer2);
         if (_selectedProject.PacketHandlerConfig.RequiresPacketContent)
         {
             list.AddRange(pccPacketHandlerConfigurator.getPacketContent());
         }
         difference2 = new Difference {
             data = list.ToArray(),
             address = _selectedProject.DownloadProject.DataStartAddress
         };
         difference2.length = difference2.data.Length;
         loadFirmwareCode(_selectedProject.DownloadProject.Firmware, new Difference[] { difference2, difference });
     }
     else
     {
         Difference difference3 = new Difference();
         Difference difference4 = new Difference();
         Difference difference5 = new Difference();
         Difference difference6 = new Difference();
         Difference difference7 = new Difference();
         Difference difference8 = new Difference();
         Difference difference9 = new Difference();
         Difference difference10 = new Difference();
         Difference difference11 = new Difference();
         Difference difference12 = new Difference();
         difference3.data = _apiManager.createRangeTestDemoPropertySet(true);
         difference3.length = difference3.data.Length;
         difference3.address = _selectedProject.DownloadProject.DataStartAddress;
         difference4.address = 0x9ff3;
         difference4.data = new byte[1];
         difference4.length = 1;
         difference5.address = 0x9ff4;
         difference5.data = new byte[1];
         difference5.length = 1;
         difference6.address = 0xa092;
         difference6.data = new byte[1];
         difference6.length = 1;
         difference7.address = 0xa093;
         byte num = 0;
         if (nudCenterFrequency.Value >= 425M)
         {
             if (nudCenterFrequency.Value <= 525M)
             {
                 num = 1;
             }
             else
             {
                 num = 2;
             }
         }
         difference7.data = new byte[] { num };
         difference7.length = 1;
         difference8.address = 0xa094;
         byte num2 = 0xe1;
         if (cbbModulationType.SelectedItem.ToString() == "2FSK")
         {
             num2 = 0xe0;
         }
         else if (cbbModulationType.SelectedItem.ToString() == "OOK")
         {
             num2 = 0xe2;
         }
         difference8.data = new byte[] { num2 };
         difference8.length = 1;
         string s = "";
         difference9.address = 0xa095;
         difference9.length = 5;
         s = nudDataRate.Value.ToString("0.#");
         if (s.Length < difference9.length)
         {
             s = new string(' ', difference9.length - s.Length) + s;
         }
         else
         {
             s = s.Substring(0, difference9.length);
         }
         difference9.data = new UTF8Encoding().GetBytes(s);
         difference10.address = 0xa09a;
         difference10.length = 5;
         s = nudDeviation.Value.ToString("0.#");
         if (s.Length < difference10.length)
         {
             s = new string(' ', difference10.length - s.Length) + s;
         }
         else
         {
             s = s.Substring(0, difference10.length);
         }
         difference10.data = new UTF8Encoding().GetBytes(s);
         difference11.address = 0xa09f;
         difference11.length = 5;
         s = _calculatedBandwidth.ToString("0.#");
         if (s.Length < difference11.length)
         {
             s = new string(' ', difference11.length - s.Length) + s;
         }
         else
         {
             s = s.Substring(0, difference11.length);
         }
         difference11.data = new UTF8Encoding().GetBytes(s);
         difference12.address = 0xa018;
         difference12.address = (ushort) (difference12.address + ((ushort) (num * 6)));
         difference12.length = 6;
         s = nudCenterFrequency.Value.ToString("000.##");
         if (s.Length < difference12.length)
         {
             s = new string(' ', difference12.length - s.Length) + s;
         }
         else
         {
             s = s.Substring(0, difference12.length);
         }
         difference12.data = new UTF8Encoding().GetBytes(s);
         loadFirmwareCode(_selectedProject.DownloadProject.Firmware, new Difference[] { difference3, difference4, difference5, difference6, difference7, difference8, difference9, difference10, difference11, difference12 });
     }
     base.Enabled = true;
 }
示例#12
0
        public FirmwareDownloadResult DownloadFirmware(string firmwarePath, UpdateFirmwareCallback callback, Difference[] fwChanges)
        {
            StreamReader reader = new StreamReader(firmwarePath);
            List<string> list = new List<string>();
            string str = "tmp";
            string path = Path.Combine(Path.Combine(Application.CommonAppDataPath, str), Path.ChangeExtension(Path.GetRandomFileName(), "hex"));
            try
            {
                while (reader.Peek() >= 0)
                {
                    string item = reader.ReadLine().Trim();
                    if ((item.Length > 0) && (item[0] != ';'))
                    {
                        list.Add(item);
                    }
                }
                if (!Directory.Exists(Path.GetDirectoryName(path)))
                {
                    Directory.CreateDirectory(Path.GetDirectoryName(path));
                }
                File.WriteAllLines(path, list.ToArray());
                if (fwChanges != null)
                {
                    new HexFileManipulation(path).changeDifferences(fwChanges);
                }
            }
            catch (Exception exception)
            {
                callback(0, true, "There was an error while reading in the firmware file.\n" + exception.Message, MessageBoxButtons.OK);
                return FirmwareDownloadResult.StoppedWithError;
            }
            finally
            {
                reader.Close();
            }
            if (list.Count < 2)
            {
                callback(0, true, "There was an error while reading in the firmware file.", MessageBoxButtons.OK);
                return FirmwareDownloadResult.StoppedWithError;
            }
            ushort vID = this._adtRecord.PortAddress.toolstickAddr.VID;
            ushort pID = this._adtRecord.PortAddress.toolstickAddr.PID;
            string serial = this._adtRecord.PortAddress.toolstickAddr.Serial;
            WDS_MainProg.frameWin().DisablePlugAndPlay();
            ADTManager.instance().removeADTRecord(this._adtRecord);
            FDResult result = this.WriteFirmwareToDevice(path, callback, vID, pID, serial, firmwarePath);
            this._adtRecord.PortAddress.handle = DDI_TOOLSTICK.instance().open(this._adtRecord);
            if (this._adtRecord.PortAddress.handle != null)
            {
                this._adtRecord.PortAddress.handle.TOOLSTICKhnd.hnd.ADT.DeviceInfo = this._adtRecord.DeviceInfo;
                WDS_MainProg.frameWin().RestorePlugAndPlay();
                switch (result)
                {
                    case FDResult.OK:
                        return FirmwareDownloadResult.OK;

                    case FDResult.Error:
                        return FirmwareDownloadResult.StoppedWithError;

                    case FDResult.FatalError:
                        return FirmwareDownloadResult.StoppedWithFatalError;
                }
            }
            return FirmwareDownloadResult.StoppedWithError;
        }
示例#13
0
文件: IO_FD_Main.cs 项目: x893/WDS
 public FirmwareDownloadResult DownloadFirmware(FirmwareItem item, UpdateFirmwareCallback callback, Difference[] fwChanges)
 {
     _driver = GetIOFD(_adtRecord, item);
     return _driver.DownloadFirmware(item.firmwareLocation, callback, fwChanges);
 }
示例#14
0
文件: IO_FD_HID.cs 项目: x893/WDS
        public FirmwareDownloadResult DownloadFirmware(string firmwarePath, UpdateFirmwareCallback callback, Difference[] fwChanges)
        {
            FormWait wait;
            StreamReader reader = new StreamReader(firmwarePath);
            ArrayList firmware = new ArrayList();
            try
            {
                while (reader.Peek() >= 0)
                {
                    string str = reader.ReadLine().Trim();
                    if ((str.Length > 0) && (str[0] != ';'))
                    {
                        firmware.Add(str);
                    }
                }
            }
            catch
            {
                callback(0, true, "There was an error while reading in the firmware file.", MessageBoxButtons.OK);
                return FirmwareDownloadResult.StoppedWithError;
            }
            finally
            {
                reader.Close();
            }
            if (firmware.Count < 2)
            {
                callback(0, true, "There was an error while reading in the firmware file.", MessageBoxButtons.OK);
                return FirmwareDownloadResult.StoppedWithError;
            }
            ushort vID = this._adtRecord.PortAddress.hidAddr.VID;
            ushort pID = this._adtRecord.PortAddress.hidAddr.PID;
            string serial = this._adtRecord.PortAddress.hidAddr.Serial;
            WDS_MainProg.frameWin().DisablePlugAndPlay();
            if (!this._adtRecord.DeviceInfo.BootloaderMode)
            {
                if (!this.EnterBootloadMode())
                {
                    callback(0, true, "There was an error trying to enter booload mode.", MessageBoxButtons.OK);
                    WDS_MainProg.frameWin().RestorePlugAndPlay();
                    return FirmwareDownloadResult.StoppedWithError;
                }
                ADTManager.instance().removeADTRecord(this._adtRecord);
                this._ddi.close(this._adtRecord.PortAddress.handle);
                Thread.Sleep(100);
                wait = new FormWait(vID, pID, serial, true, 0x1388, 100) {
                    Text = "Enumerating Bootloader..."
                };
                if (wait.ShowDialog() != DialogResult.OK)
                {
                    callback(0, true, "There was an error trying to reenumerate in bootload mode.", MessageBoxButtons.OK);
                    WDS_MainProg.frameWin().RestorePlugAndPlay();
                    return FirmwareDownloadResult.StoppedWithError;
                }
            }
            else
            {
                this._ddi.close(this._adtRecord.PortAddress.handle);
                ADTManager.instance().removeADTRecord(this._adtRecord);
            }
            FDResult result2 = this.WriteFirmwareToDevice(firmware, callback, vID, pID, serial, firmwarePath);
            wait = new FormWait(vID, pID, serial, false, 0x1388, 100) {
                Text = "Enumerating Device..."
            };
            if (wait.ShowDialog() == DialogResult.OK)
            {
                this._adtRecord.PortAddress.handle = DDI_HID.instance().open(this._adtRecord, ' ');
                this._adtRecord.DeviceInfo = this._adtRecord.PortAddress.handle.HIDhnd.hnd.ADT.DeviceInfo;
            }
            WDS_MainProg.frameWin().RestorePlugAndPlay();
            switch (result2)
            {
                case FDResult.OK:
                    return FirmwareDownloadResult.OK;

                case FDResult.Error:
                    return FirmwareDownloadResult.StoppedWithError;

                case FDResult.FatalError:
                    return FirmwareDownloadResult.StoppedWithFatalError;
            }
            return FirmwareDownloadResult.StoppedWithError;
        }