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; }
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; }
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; }
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; }
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; } }
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 }; }
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; }
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; } }
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()); }
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 }; }
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; }
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; }
public FirmwareDownloadResult DownloadFirmware(FirmwareItem item, UpdateFirmwareCallback callback, Difference[] fwChanges) { _driver = GetIOFD(_adtRecord, item); return _driver.DownloadFirmware(item.firmwareLocation, callback, fwChanges); }
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; }