示例#1
0
        public MachineCreateForm()
        {
            InitializeComponent();
            foreach (var devType in DeviceTypeRegistry.GetRegisteredDeviceTypes(out string[] types))
            {
                var attr = devType.GetCustomAttribute <DeviceComponentAttribute>();
                var icon = DeviceTypeRegistry.GetDeviceTypeIcon(devType.Name.ToLower());
                icons.Images.Add(devType.Name.ToLower(), icon);
            }

            machineComp = Machine.CreateDevice <MachineComponent>();
            eeprom      = Machine.CreateDevice <EEPROM>();
            scr         = Machine.CreateDevice <Screen>();
            gpu         = Machine.CreateDevice <GPU>();


            devices.Items.Add(new ListViewItem()
            {
                Text = machineComp.GetComponentAttribute().UserFriendlyName, Tag = machineComp, ImageKey = machineComp.GetType().Name.ToLower()
            });
            devices.Items.Add(new ListViewItem()
            {
                Text = eeprom.GetComponentAttribute().UserFriendlyName, Tag = eeprom, ImageKey = eeprom.GetType().Name.ToLower()
            });
            devices.Items.Add(new ListViewItem()
            {
                Text = scr.GetComponentAttribute().UserFriendlyName, Tag = scr, ImageKey = scr.GetType().Name.ToLower()
            });
            devices.Items.Add(new ListViewItem()
            {
                Text = gpu.GetComponentAttribute().UserFriendlyName, Tag = gpu, ImageKey = gpu.GetType().Name.ToLower()
            });
        }
示例#2
0
 /// <summary>
 /// Writes data to the EEPROM
 /// </summary>
 /// <param name="address">The EEPROM address</param>
 /// <param name="data">The data to write</param>
 /// <returns>Total amount of data transferred</returns>
 private int writeEEPROM(EEPROM address, byte[] data)
 {
     byte[] wrtieBuffer = new byte[data.Length + 1];
     wrtieBuffer[0] = (byte)(0x40 | (int)address);
     Array.Copy(data, 0, wrtieBuffer, 1, data.Length);
     return(write(wrtieBuffer));
 }
示例#3
0
 public override double ReadDmiVcc()
 {
     lock (syncRoot)
     {
         return(EEPROM.readdmivcc(TestPlanParaByPN.DUT_USB_Port, 0xA0, 26));
     }
 }
示例#4
0
        public byte[] WriteDriverSFP(int deviceIndex, int deviceAddress, int StartAddress, int regAddress, byte Length, byte chipset, int dataToWrite, bool LittleEndian)
        {
            lock (syncRoot)
            {
                byte[] ReturnArray = new byte[1];

                try
                {
                    byte[] WriteDacByteArray;

                    if (chipset == 4)
                    {
                        WriteDacByteArray = Algorithm.ObjectTOByteArray(dataToWrite, 2, LittleEndian);
                        EEPROM.ReadWriteDriverSFP(DUT.deviceIndex, deviceAddress, StartAddress, regAddress, 0x02, chipset, WriteDacByteArray);
                    }
                    else
                    {
                        WriteDacByteArray = Algorithm.ObjectTOByteArray(dataToWrite, Length, LittleEndian);

                        for (int i = Length - 1; i > -1; i--)
                        {
                            byte[] WriteData = Algorithm.ObjectTOByteArray(WriteDacByteArray[i], 2, LittleEndian);
                            EEPROM.ReadWriteDriverSFP(DUT.deviceIndex, deviceAddress, StartAddress, regAddress + i, 0x02, chipset, WriteData);
                        }
                    }
                    ReturnArray[0] = 0xAA;

                    return(ReturnArray);
                }
                catch
                {
                    return(ReturnArray);
                }
            }
        }
示例#5
0
 public override double ReadDmiTemp()
 {
     lock (syncRoot)
     {
         return(EEPROM.readdmitemp(TestPlanParaByPN.DUT_USB_Port, 0xA0, 22));
     }
 }
 private void EEPROMClassRead(EEPROM e)
 {
     pixelHoriNum = e.activePixelsHoriz;
     pixelVertNum = e.activePixelsVert;
     for (int i = 0; i < e.badPixels.Length; i++)
     {
         if (e.badPixels[i] >= 0)
         {
             dataGridViewBadPixel.Rows[i].Cells[0].Value = i;
             dataGridViewBadPixel.Rows[i].Cells[1].Value = e.badPixels[i];
         }                   
     }
     wavelength = wavenum=ramanShift=new double[pixelHoriNum];
     wavelength = s.wavelengths;
     String[] elements = (s.model).Split('-');
     foreach (string item in elements)
     {
         if (float.TryParse(item, out centralWavelength))
             break;
     }
     wavenum = Util.wavelengthsToWavenumbers(centralWavelength,wavelength);
     for (int i = 0; i < wavelength.Length; i++)
     {
         ramanShift[i] = (1 / centralWavelength - 1 / wavelength[i]) * 10000000;
     }
     serialNumber = e.serialNumber;
     maxIntegrationTimeMS = e.maxIntegrationTimeMS;
     numericUpDownIntegrationTime.Maximum = maxIntegrationTimeMS;
     minIntegrationTimeMS = e.minIntegrationTimeMS;
     numericUpDownIntegrationTime.Minimum = minIntegrationTimeMS;
     numericUpDownIntegrationTime.Value = minIntegrationTimeMS;
     IfHasLaser(s.hasLaser);
 }
示例#7
0
        public byte[] StoreDriverSFP_old(int deviceIndex, int deviceAddress, int StartAddress, int regAddress, int Length, byte chipset, byte[] dataToWrite)
        {
            lock (syncRoot)
            {
                byte[] ReturnArray = new byte[1];

                try
                {
                    for (int i = 0; i < Length; i++)
                    {
                        byte[] WriteDacByteArray = Algorithm.ObjectTOByteArray(dataToWrite[i], DriverStruct[i].Length, DriverStruct[i].Endianness);

                        EEPROM.ReadWriteDriverSFP(DUT.deviceIndex, deviceAddress, StartAddress, regAddress, 0x06, chipset, dataToWrite);
                    }
                    ReturnArray[0] = 0xAA;

                    return(ReturnArray);
                }
                catch
                {
                    return(ReturnArray);
                }
            }
            //  return EEPROM.ReadWriteDriverSFP(DUT.deviceIndex, deviceAddress, StartAddress, regAddress, 0x06, chipset, dataToWrite);
        }
示例#8
0
        private void SyncState(Serializer ser)
        {
            byte[] core = null;
            if (ser.IsWriter)
            {
                var ms = new MemoryStream();
                ms.Close();
                core = ms.ToArray();
            }
            Cpu.SyncState(ser);

            ser.BeginSection("SMS");
            Vdp.SyncState(ser);
            PSG.SyncState(ser);
            ser.Sync("RAM", ref SystemRam, false);
            ser.Sync("RomBank0", ref RomBank0);
            ser.Sync("RomBank1", ref RomBank1);
            ser.Sync("RomBank2", ref RomBank2);
            ser.Sync("RomBank3", ref RomBank3);
            ser.Sync("Port01", ref Port01);
            ser.Sync("Port02", ref Port02);
            ser.Sync("Port3E", ref Port3E);
            ser.Sync("Port3F", ref Port3F);
            ser.Sync("Paddle1High", ref Paddle1High);
            ser.Sync("Paddle2High", ref Paddle2High);
            ser.Sync("LatchLightPhaser", ref LatchLightPhaser);

            if (SaveRAM != null)
            {
                ser.Sync("SaveRAM", ref SaveRAM, false);
                ser.Sync("SaveRamBank", ref SaveRamBank);
            }

            if (ExtRam != null)
            {
                ser.Sync("ExtRAM", ref ExtRam, true);
            }

            if (HasYM2413)
            {
                YM2413.SyncState(ser);
            }

            if (EEPROM != null)
            {
                EEPROM.SyncState(ser);
            }

            ser.Sync("Frame", ref _frame);
            ser.Sync("LagCount", ref _lagCount);
            ser.Sync("IsLag", ref _isLag);

            ser.EndSection();

            if (ser.IsReader)
            {
                SyncAllByteArrayDomains();
            }
        }
示例#9
0
 /// <summary>
 /// Reads a segment of the EEPROM
 /// </summary>
 /// <param name="address">The EEPROM address</param>
 /// <param name="readBuffer">The buffer to read the data into (almost always 3 bytes in length)</param>
 /// <returns>The data read from the EEPROM</returns>
 public byte[] readEEPROM(EEPROM address, byte[] readBuffer)
 {
     write(new byte[] { (byte)address, 0x00, 0x00 });
     Thread.Sleep(5);
     read(readBuffer);
     _status            = readBuffer[0] >> 6;
     _EEPROM_Response   = readBuffer[0] & 0x3;
     _EEPROM_daignostic = (readBuffer[0] >> 2) & 0x15;
     return(readBuffer);
 }
示例#10
0
 public override string ReadFW()
 {
     lock (syncRoot)
     {
         string fwrev = "";
         EnterEngMode(4);
         fwrev = EEPROM.ReadFWRev(TestPlanParaByPN.DUT_USB_Port, 0xA0, 128);
         return(fwrev.ToUpper());
     }
 }
示例#11
0
 public override string ReadSN()
 {
     lock (syncRoot)
     {
         string SN = "";
         EnterEngMode(0);
         SN = EEPROM.ReadSn(TestPlanParaByPN.DUT_USB_Port, 0xA0, 196);
         return(SN.Trim());
     }
 }
示例#12
0
        public EEPROM_UC()
        {
            InitializeComponent();
            eepromFields = new Dictionary <string, object>();

            version = EEPROM_Version.GetInstance();
            version.ReadEEPROMVersion();
            MessageBox.Show(Encoding.UTF8.GetString(version.EEPROM_Version_Number.value));
            _eeprom = EEPROM.GetInstance();
            //DisplayEEPROM();
        }
示例#13
0
 public static EEPROM Create()
 {
     EEPROM result = new EEPROM();
     result.Metadata = Metadata.Create();
     result.Settings = Settings.Create();
     result.Profiles = new Profile[PROFILES_COUNT];
     for (int i = 0; i < PROFILES_COUNT; i++) result.Profiles[i] = Profile.Create();
     result.Months = new Month[MONTHS_COUNT];
     for (int i = 0; i < MONTHS_COUNT; i++) result.Months[i] = Month.Create();
     return result;
 }
 private void SpectrometerClassRead(Spectrometer s)
 {
     tecStatus = s.detectorTECEnabled;
     double detectorTECSetpointDegC = s.detectorTECSetpointDegC;
     if (!s.hasLaser)
     {
         laserStatus = false;
     }     
     else
         excitationWavelengthNM = s.excitationWavelengthNM;
     integrationTimeMS = s.integrationTimeMS;
     eEPROM = s.eeprom;
 }
示例#15
0
        public SpectrometerSettingsView()
        {
            InitializeComponent();

            viewableSettingsEEPROM = new ObservableCollection <ViewableSetting>();

            EEPROM eeprom = EEPROM.getInstance();

            if (eeprom != null)
            {
                eeprom.viewableSettings = viewableSettingsEEPROM;
            }

            listViewEEPROM.ItemsSource = viewableSettingsEEPROM;

            ssvm = (SpectrometerSettingsViewModel)BindingContext;
        }
示例#16
0
        public override ushort ReadADC(NameOfADC enumName, int channel)
        {
            lock (syncRoot)
            {
                try
                {
                    string name = enumName.ToString();
                    DUTCoeffControlByPN.CoeffInfo coeffInfo = dataTable_DUTCoeffControlByPN.GetOneInfoFromTable(name, channel);

                    EnterEngMode(coeffInfo.Page);
                    UInt16 valueADC = EEPROM.readadc(TestPlanParaByPN.DUT_USB_Port, 0xA0, coeffInfo.StartAddress);
                    Log.SaveLogToTxt("Current TXPOWERADC is " + valueADC);
                    return(valueADC);
                }
                catch (Exception ex)
                {
                    Log.SaveLogToTxt(ex.ToString());
                    return(Algorithm.MyNaN);
                }
            }
        }
示例#17
0
        public XboxEEPROM(byte[] pbEEPROM)
        {
            if (Equals(null, pbEEPROM) || pbEEPROM.Length != EEPROM_SIZE)
            {
                IsValid = false;
                return;
            }

            //bring data into struct
            e = (EEPROM)ToStruct(pbEEPROM, typeof(EEPROM));

            //validate factory settings
            byte[] buffer = new byte[0x2C];
            Array.Copy(e.SerialNumber, 0, buffer, 0, 0xC);
            Array.Copy(e.MAC_Address, 0, buffer, 0xC, 0x6);
            Array.Copy(e.Unk_1, 0, buffer, 0x12, 0x2);
            Array.Copy(e.OnlineKey, 0, buffer, 0x14, 0x10);
            Array.Copy(e.VideoStandard, 0, buffer, 0x24, 0x4);
            Array.Copy(e.Unk_2, 0, buffer, 0x28, 0x2);

            byte[] result;
            CRC(out result, buffer, 0x2C);
            if (!CompareTo(e.CRC_MFR_Data, result)) //invalid factory settings CRC - should never happen unless bad eeprom image
            {
                IsValid = false;
                return;
            }

            //validate user settings
            CRC(out result, e.User_Data, 0x9C);

            //invalid user settings CRC - could happen if suddenly lost power during writing settings, in this case the crc would be set to 0xFFFFFFFF and user data zeroed to reset settings
            if (!CompareTo(e.CRC_User_Data, result))
            {
                IsValid = false;
                return;
            }

            IsValid = true;
        }
示例#18
0
        public override string GetCoeff(Coeff coeff, int channel)
        {
            lock (syncRoot)
            {
                string coeffName = coeff.ToString();
                try
                {
                    DUTCoeffControlByPN.CoeffInfo coeffInfo = dataTable_DUTCoeffControlByPN.GetOneInfoFromTable(coeffName, channel);

                    EnterEngMode(coeffInfo.Page);
                    string value = EEPROM.ReadCoef(TestPlanParaByPN.DUT_USB_Port, 0xA0, coeffInfo.StartAddress, coeffInfo.Format);

                    Log.SaveLogToTxt("Get " + coeffName + " is " + value);
                    return(value);
                }
                catch
                {
                    Log.SaveLogToTxt("Failed to get value of " + coeffName);
                    return(Algorithm.MyNaN.ToString());
                }
            }
        }
示例#19
0
        public int ReadDriverSFP(int deviceIndex, int deviceAddress, int StartAddress, int regAddress, byte Length, byte chipset)// 有问题,但是需要确认,默认写长度为2符合FW接口协议 Leo 2016-10-25
        {
            lock (syncRoot)
            {
                int[] ReturnArray = new int[Length];
                int   ReadData    = 0;
                try
                {
                    if (chipset == 4)
                    {
                        byte[] ReadArray = EEPROM.ReadWriteDriverSFP(DUT.deviceIndex, deviceAddress, StartAddress, regAddress, 0x01, chipset, new byte[2]);

                        ReadData = ReadArray[0] * 256 + ReadArray[1];
                    }
                    else
                    {
                        for (int i = 0; i < Length; i++)
                        {
                            byte[] ReadArray = EEPROM.ReadWriteDriverSFP(DUT.deviceIndex, deviceAddress, StartAddress, regAddress + i, 0x01, chipset, new byte[2]);

                            ReturnArray[i] = ReadArray[0] * 256 + ReadArray[1];
                        }

                        for (int i = Length - 1; i > -1; i--)
                        {
                            ReadData += Convert.ToInt16(ReturnArray[i] * Math.Pow(256, Length - 1 - i));
                        }
                    }


                    return(ReadData);
                }
                catch
                {
                    return(ReadData);
                }
            }
            //  return EEPROM.ReadWriteDriverSFP(DUT.deviceIndex, deviceAddress, StartAddress, regAddress, 0x01, chipset, new byte[2]);
        }
示例#20
0
        public override bool SetCoeff(Coeff coeff, int channel, string value)
        {
            lock (syncRoot)
            {
                try
                {
                    string coeffName = coeff.ToString();
                    DUTCoeffControlByPN.CoeffInfo coeffInfo = dataTable_DUTCoeffControlByPN.GetOneInfoFromTable(coeffName, channel);

                    EnterEngMode(coeffInfo.Page);
                    bool result = EEPROM.SetCoef(TestPlanParaByPN.DUT_USB_Port, 0xA0, coeffInfo.StartAddress, value, coeffInfo.Format);

                    Log.SaveLogToTxt("Set " + coeffName + " to " + value);
                    return(result);
                }
                catch (Exception ex)
                {
                    Log.SaveLogToTxt(ex.ToString());
                    return(false);
                }
            }
        }
示例#21
0
        public void writeToEEPROMTest()
        {
            int AN_ADRESS  = 10;
            int AN_INTEGER = 123;

            //ARRANGE
            var memoryMock = new Mock <IMemory>();

            memoryMock.Setup(p => p.getFile(0x09)).Returns(AN_ADRESS);
            memoryMock.Setup(p => p.getFile(0x08)).Returns(AN_INTEGER);
            var classUnderTest = new EEPROM();

            classUnderTest.init(memoryMock.Object);
            classUnderTest.setStateMachineTriggered();


            //ACT
            classUnderTest.writeToEEPROM();

            //ASSERT
            Assert.AreEqual(AN_INTEGER, classUnderTest.getEeprom()[AN_ADRESS]);
        }
示例#22
0
        public override double ReadDmiRxP(int channel)
        {
            lock (syncRoot)
            {
                try
                {
                    double dmirxp = 0.0;
                    switch (channel)
                    {
                    case 1:
                        dmirxp = EEPROM.readdmirxp(TestPlanParaByPN.DUT_USB_Port, 0xA0, 34);
                        break;

                    case 2:
                        dmirxp = EEPROM.readdmirxp(TestPlanParaByPN.DUT_USB_Port, 0xA0, 36);
                        break;

                    case 3:
                        dmirxp = EEPROM.readdmirxp(TestPlanParaByPN.DUT_USB_Port, 0xA0, 38);
                        break;

                    case 4:
                        dmirxp = EEPROM.readdmirxp(TestPlanParaByPN.DUT_USB_Port, 0xA0, 40);
                        break;

                    default:
                        break;
                    }
                    return(dmirxp);
                }
                catch (Exception ex)
                {
                    Log.SaveLogToTxt(ex.ToString());
                    return(Algorithm.MyNaN);
                }
            }
        }
示例#23
0
        private void BtnWriteRom_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(tbUidH.Text) || string.IsNullOrEmpty(tbUidL.Text))
            {
                MessageBox.Show("UIDの設定が適切ではありません。", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            var role  = (byte)(Enum.Parse(typeof(FlocRole), comboRole.SelectedItem.ToString()));
            var mode  = (byte)(Enum.Parse(typeof(FlocMode), comboMode.SelectedItem.ToString()));
            var uid_h = Convert.ToByte(tbUidH.Text, 16);
            var uid_l = Convert.ToByte(tbUidL.Text, 16);

            var msg = "この情報を登録します。よろしいですか?\n";

            msg += "Role: " + comboRole.SelectedItem.ToString() + "\n";
            msg += $"UID: {uid_h:X2}.{uid_l:X2}\n";
            msg += "Mode: " + comboMode.SelectedItem.ToString();

            var ret = MessageBox.Show(msg, this.Text, MessageBoxButtons.YesNo, MessageBoxIcon.Question);

            if (ret == DialogResult.Yes)
            {
                var rom = new EEPROM();
                rom.Set(0x01, role, uid_h, uid_l, mode);
                try
                {
                    m_cmdBlock.WriteRom(m_avrdude, rom);
                    MessageBox.Show("EEPROMへの書き込みに成功しました。", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString(), this.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }
示例#24
0
        private void SyncState(Serializer ser)
        {
            byte[] core = null;
            if (ser.IsWriter)
            {
                using var ms = new MemoryStream();
                ms.Close();
                core = ms.ToArray();
            }

            ser.BeginSection(nameof(SMS));
            Cpu.SyncState(ser);
            Vdp.SyncState(ser);
            PSG.SyncState(ser);
            ser.Sync("RAM", ref SystemRam, false);
            ser.Sync(nameof(RomBank0), ref RomBank0);
            ser.Sync(nameof(RomBank1), ref RomBank1);
            ser.Sync(nameof(RomBank2), ref RomBank2);
            ser.Sync(nameof(RomBank3), ref RomBank3);
            ser.Sync(nameof(Bios_bank), ref Bios_bank);
            ser.Sync(nameof(Port01), ref Port01);
            ser.Sync(nameof(Port02), ref Port02);
            ser.Sync(nameof(Port03), ref Port03);
            ser.Sync(nameof(Port04), ref Port04);
            ser.Sync(nameof(Port05), ref Port05);
            ser.Sync(nameof(Port3E), ref Port3E);
            ser.Sync(nameof(Port3F), ref Port3F);
            ser.Sync(nameof(Controller1SelectHigh), ref Controller1SelectHigh);
            ser.Sync(nameof(Controller2SelectHigh), ref Controller2SelectHigh);
            ser.Sync(nameof(LatchLightPhaser), ref LatchLightPhaser);
            ser.Sync(nameof(start_pressed), ref start_pressed);
            ser.Sync(nameof(cntr_rd_0), ref cntr_rd_0);
            ser.Sync(nameof(cntr_rd_1), ref cntr_rd_1);
            ser.Sync(nameof(cntr_rd_2), ref cntr_rd_2);
            ser.Sync(nameof(p3_write), ref p3_write);
            ser.Sync(nameof(p4_read), ref p4_read);
            ser.Sync(nameof(stand_alone), ref stand_alone);
            ser.Sync(nameof(disablePSG), ref disablePSG);
            ser.Sync(nameof(sampleclock), ref sampleclock);
            ser.Sync(nameof(old_s_L), ref old_s_L);
            ser.Sync(nameof(old_s_R), ref old_s_R);

            if (SaveRAM != null)
            {
                ser.Sync(nameof(SaveRAM), ref SaveRAM, false);
            }

            ser.Sync(nameof(SaveRamBank), ref SaveRamBank);

            if (ExtRam != null)
            {
                ser.Sync("ExtRAM", ref ExtRam, true);
            }

            if (HasYM2413)
            {
                YM2413.SyncState(ser);
            }

            EEPROM?.SyncState(ser);

            ser.Sync("Frame", ref _frame);
            ser.Sync("LagCount", ref _lagCount);
            ser.Sync("IsLag", ref _isLag);

            ser.EndSection();

            if (ser.IsReader)
            {
                SyncAllByteArrayDomains();
            }
        }
示例#25
0
 private static byte[] StoreDriver40g(int deviceIndex, int deviceAddress, int StartAddress, int regAddress, byte channel, byte chipset, byte[] dataToWrite, bool Switch)
 {
     return(EEPROM.ReadWriteDriverQSFP(deviceIndex, deviceAddress, StartAddress, regAddress, channel, 0x06, chipset, dataToWrite, Switch));
 }
示例#26
0
 private static byte[] ReadDriver40g(int deviceIndex, int deviceAddress, int StartAddress, int regAddress, byte channel, byte chipset, int readLength, bool Switch)
 {
     return(EEPROM.ReadWriteDriverQSFP(deviceIndex, deviceAddress, StartAddress, regAddress, channel, 0x01, chipset, new byte[readLength], Switch));
 }
    public static EEPROM Parse(byte[] EEPROMData, byte[] XboxEEPROMKey)
    {
        if (EEPROMData == null || EEPROMData.Length != 256)
        {
            throw new Exception("Invalid EEPROM data");
        }

        byte[] EncryptedData = new byte[256];
        byte[] DecryptedData = new byte[256];

        Array.Copy(EEPROMData, 0, EncryptedData, 0, 256); //make a copy of the encrypted (original) EEPROM data

        //create RC4 key from current XboxEEPROMKey and EncryptedSettings checksum
        byte[] RC4Key;
        XcHMAC(XboxEEPROMKey, EEPROMData, 0, 0x14, null, 0, 0, out RC4Key);

        //decrypt EncryptedSection
        RC4(EEPROMData, 0x14, 0x1C, RC4Key);

        //create hash of the EncryptedSettings section that was decrypted
        byte[] EncryptedSectionChecksum;
        XcHMAC(XboxEEPROMKey, EEPROMData, 0x14, 0x1C, null, 0, 0, out EncryptedSectionChecksum);

        //compare hash to the EncryptedSettings checksum
        if (!Compare(EEPROMData, 0, EncryptedSectionChecksum, 0, 0x14))
        {
            throw new Exception("Failed to decrypt EEPROM");
        }

        Array.Copy(EEPROMData, 0, DecryptedData, 0, 256); //make a copy of the decrypted EEPROM data

        try
        {
            //start pulling data out
            EEPROM EEPROM = new EEPROM();

            using (BinaryReader stream = new BinaryReader(new MemoryStream(EEPROMData)))
            {
                //EncryptedSettings
                EEPROM.EncryptedSettings = new EncryptedSection
                {
                    Checksum   = stream.ReadBytes(0x14),
                    Confounder = stream.ReadBytes(8),
                    XboxHDKey  = stream.ReadBytes(0x10),
                    GameRegion = stream.ReadUInt32()
                };

                //FactorySettings
                EEPROM.FactorySettings = new FactorySection
                {
                    Checksum     = stream.ReadUInt32(),
                    SerialNumber = stream.ReadChars(0xC),
                    MACAddress   = stream.ReadBytes(6),
                    Reserved1    = stream.ReadBytes(2),
                    OnlineKey    = stream.ReadBytes(0x10),
                    VideoRegion  = stream.ReadUInt32(),
                    Reserved2    = stream.ReadBytes(4)
                };

                //UserSettings
                EEPROM.UserSettings = new UserConfigSection
                {
                    Checksum        = stream.ReadUInt32(),
                    TimeZoneBias    = stream.ReadInt32(),
                    TimeZoneStdName = stream.ReadChars(4),
                    TimeZoneDltName = stream.ReadChars(4),
                    Reserved1       = stream.ReadBytes(8),
                    TimeZoneStdDate = new TimeZoneDate()
                    {
                        Month     = stream.ReadByte(),
                        Day       = stream.ReadByte(),
                        DayOfWeek = stream.ReadByte(),
                        Hour      = stream.ReadByte()
                    },
                    TimeZoneDltDate = new TimeZoneDate()
                    {
                        Month     = stream.ReadByte(),
                        Day       = stream.ReadByte(),
                        DayOfWeek = stream.ReadByte(),
                        Hour      = stream.ReadByte()
                    },
                    Reserved2                   = stream.ReadBytes(8),
                    TimeZoneStdBias             = stream.ReadInt32(),
                    TimeZoneDltBias             = stream.ReadInt32(),
                    Language                    = stream.ReadUInt32(),
                    VideoFlags                  = stream.ReadUInt32(),
                    AudioFlags                  = stream.ReadUInt32(),
                    ParentalControlGames        = stream.ReadUInt32(),
                    ParentalControlPassword     = stream.ReadUInt32(),
                    ParentalControlMovies       = stream.ReadUInt32(),
                    OnlineIpAddress             = stream.ReadBytes(4),
                    OnlineDnsAddress            = stream.ReadBytes(4),
                    OnlineDefaultGatewayAddress = stream.ReadBytes(4),
                    OnlineSubnetMask            = stream.ReadBytes(4),
                    MiscFlags                   = stream.ReadUInt32(),
                    DvdRegion                   = stream.ReadUInt32()
                };

                //HardwareConfiguration
                EEPROM.HardwareConfiguration = new HardwareConfigSection
                {
                    FbioDelay = stream.ReadByte(),
                    AddrDrv   = stream.ReadByte(),
                    CTrim2    = stream.ReadByte(),
                    EMRS      = stream.ReadByte(),
                    ExtSlow   = stream.ReadBytes(10),
                    Slow      = stream.ReadBytes(10),
                    Typical   = stream.ReadBytes(10),
                    Fast      = stream.ReadBytes(10),
                    ExtFast   = stream.ReadBytes(10)
                };

                //unsectioned/extended data
                EEPROM.ThermalSensorCalibration = stream.ReadUInt16();
                EEPROM.Unused  = stream.ReadBytes(2);
                EEPROM.UEMInfo = new UEMInformation()
                {
                    LastCode  = stream.ReadByte(),
                    Reserved1 = stream.ReadByte(),
                    History   = stream.ReadUInt16()
                };
                EEPROM.Reserved1 = stream.ReadBytes(2);
            }

            //store encryption key
            EEPROM.XboxEEPROMKey = XboxEEPROMKey;

            //store copies of encrypted/decrypted EEPROM data
            EEPROM.EncryptedEEPROM = EncryptedData;
            EEPROM.DecryptedEEPROM = DecryptedData;

            return(EEPROM);
        }
        catch
        {
            throw new Exception("Failed to parse EEPROM data");
        }
    }
示例#28
0
        public LCDChip(XmlNode settings)
        {
            XmlNode chip = settings["Chip"];
            this.link = Link.CreateLink(chip["Link"].InnerText);
            this.link.ByteRecieved += this.ProccessByte;
            this.eeprom = new EEPROM(chip["EEPROM"].InnerText);
            this.lcd = new LCDDisplay(settings["Display"], this);
            this.lcd.FormClosed += FormClosed;
            this.t = new Timer(this.TurnOffDisplay);

            this.lcd.Clear();
            this.DCB_state = (DCB)this.eeprom.ReadByte(EEP_DISPLAY);
            this.lcd.Display    = this.DCB_state.Has(DCB.Display);
            this.lcd.Blink      = this.DCB_state.Has(DCB.Blink);
            this.lcd.ShowCursor = this.DCB_state.Has(DCB.Cursor);
            SetTimeout(this.onFor = this.eeprom.ReadByte(EEP_DISPLAY_MIN));
            this.lcd.Backlight = this.eeprom.ReadByte(EEP_BACKLIGHT);
            this.lcd.Contrast = this.eeprom.ReadByte(EEP_CONTRAST);
            for (int i = 0; i < EEP_GPO.Length; ++i)
            {
                this.gpo[i] = this.eeprom.ReadByte(EEP_GPO[i]) > 0;
                this.gpo_val[i] = this.eeprom.ReadByte(EEP_GPO_PWM[i]);
                this.RefreshGPO(i);
            }
            for (int i = 0; i < EEP_CHAR.Length; ++i) { this.lcd.SetCustomChar(i, this.eeprom.ReadBytes(EEP_CHAR[i], 8)); }
            for (int i = 0; i < EEP_LINE.Length; ++i) { this.lcd.Goto(1, (byte)(i + 1)); this.lcd.Write(this.eeprom.ReadBytes(EEP_LINE[i], LINE_LEN)); }
            System.Windows.Forms.Application.Run(this.lcd);
        }
示例#29
0
 public WriteEEPROMForm(EEPROM mc)
 {
     InitializeComponent();
     config = mc;
     load();
 }