public void WritingTest() { const int programSize = 1234 * 16; const int majorVersion = 137; const int serialNumber = 40012; const int modification = 0x3f; var assemblyDate = new DateTime(1993, 12, 12); var fuses = new AvrFuses(0xab, 0xcd, 0xef); var header = new LegacyHeader(programSize, majorVersion, assemblyDate, modification, serialNumber, fuses); var sectionContent = new LegacyHeaderDataSectionContent(header); var mw = new MemoryWriter(); sectionContent.WriteTo(mw); byte[] data = mw.Data; Assert.That(BitConverter.ToUInt16(data, 0x00), Is.EqualTo(programSize / 16), "Не правильно записался размер программы"); Assert.That(BitConverter.ToUInt16(data, 0x02), Is.EqualTo(0x0000), "Контрольная сумма -- не 0000"); Assert.That(data[0x04], Is.EqualTo(0x01), "Не правильно записался размер заголовка"); Assert.That(data[0x05], Is.EqualTo(majorVersion), "Не правильно записался номер версии"); Assert.That(data[0x06], Is.EqualTo(assemblyDate.Year - 1980), "Не правильно записался год сборки"); Assert.That(data[0x07], Is.EqualTo(modification), "Не правильно код модификации ячейки"); Assert.That(data[0x08], Is.EqualTo(assemblyDate.Month), "Не правильно записался месяц сборки"); Assert.That(InverseUint16(data, 0x09), Is.EqualTo(serialNumber), "Не правильно записался серийный номер"); Assert.That(data[0x0d], Is.EqualTo(fuses.FuseL), "Не правильно записался Low Fuse"); Assert.That(data[0x0e], Is.EqualTo(fuses.FuseH), "Не правильно записался High Fuse"); Assert.That(data[0x0f], Is.EqualTo(fuses.FuseX), "Не правильно записался Ext Fuse"); Assert.That(InverseUint16(data, 0x0b), Is.EqualTo((UInt16)data.Skip(5).Take(6).Sum(i => i)), "Не правильно записалась сумма байт заголовка"); }
public LegacyHeader(int ProgramSize, int MajorVersion, DateTime AssemblyDate, int Modification, int SerialNumber, AvrFuses Fuses) { this.Modification = Modification; this.ProgramSize = ProgramSize; this.MajorVersion = MajorVersion; this.AssemblyDate = AssemblyDate; this.SerialNumber = SerialNumber; this.Fuses = Fuses; }
/// <summary>Инициализирует новый экземпляр класса <see cref="T:System.Object" />.</summary> public AvrImage(AvrFuses Fuses, IBuffer FlashBuffer, IBuffer EepromBuffer) { this.Fuses = Fuses; this.FlashBuffer = FlashBuffer; this.EepromBuffer = EepromBuffer; }