private int GetID() { UsbSetupPacket packet = new UsbSetupPacket(); UsbSetupPacket packetread = new UsbSetupPacket(); byte[] readBuffer = new byte[8]; byte buf = 0x48; int transfer = 0x08; packet.Value = 0x00; packet.Index = 0x00; packet.Length = 0x8; packet.Request = 0x30; packet.RequestType = (byte)UsbRequestType.TypeVendor; packetread.Value = 0x00; packetread.Index = 0x00; packetread.Length = 0x8; packetread.Request = 0x31; packetread.RequestType = 0xC0; byte[] ID = { 0x03, 0xEF, 0x20, 0x01 }; Console.WriteLine("Sending Flash ID..."); MyUsbDevice.ControlTransfer(ref packet, buf, 5, out transfer); if (MainForm.debugme) { Console.WriteLine("Length Transferred: {0}", transfer); } MyUsbDevice.ControlTransfer(ref packetread, readBuffer, 8, out transfer); if (MainForm.debugme) { Console.WriteLine("Length Transferred: {0}", transfer); } if (NandX.ByteArrayCompare(ID, Oper.returnportion(readBuffer, 1, 4))) { Console.WriteLine("ISD-2100 detected"); return(1); } else { Console.WriteLine("no ISD-2100 detected"); Console.WriteLine("In {0}", Oper.ByteArrayToString(readBuffer)); return(0); } }
private void ISD_Write_Flash() { long filesize; FileInfo fl = new FileInfo(txtFile.Text); filesize = fl.Length; if (!File.Exists(txtFile.Text)) { Console.WriteLine("Image file not found"); return; } if (filesize != 0xB000) { Console.WriteLine("Image file must be 44Kb"); return; } BinaryReader rw = new BinaryReader(File.Open(txtFile.Text, FileMode.Open, FileAccess.Read)); Console.WriteLine("Writing to Flash.."); UsbSetupPacket packet = new UsbSetupPacket(); UsbSetupPacket packetread = new UsbSetupPacket(); //ErrorCode ec = ErrorCode.None; byte[] readBuffer = new byte[8]; //Thread.Sleep(variables.delay); packet.Value = 0x00; packet.Index = 0x00; packet.Length = 0x8; packet.Request = 0x30; packet.RequestType = (byte)UsbRequestType.TypeVendor; packetread.Value = 0x00; packetread.Index = 0x00; packetread.Length = 0x8; packetread.Request = 0x31; packetread.RequestType = 0xC0; int transfer = 0x08; byte[] RES = { 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60 }; byte[] CMD = new byte[8]; CMD[0] = 0xA0; for (int i = 0; i < 0xB000; i += 4) { if (variables.escapeloop) { break; } progressBar1.Value = (i * progressBar1.Maximum) / 0xB000; byte[] buffer = rw.ReadBytes(0x4); Buffer.BlockCopy(buffer, 0, CMD, 4, 4); CMD[3] = (byte)(i & 0x00ff); CMD[2] = (byte)((i & 0xff00) >> 8); MyUsbDevice.ControlTransfer(ref packet, CMD, 8, out transfer); Thread.Sleep(variables.delay); MyUsbDevice.ControlTransfer(ref packetread, readBuffer, 8, out transfer); if (NandX.ByteArrayCompare(readBuffer, RES, 5)) { } else { i -= 4; Console.Write(":"); } } progressBar1.Value = progressBar1.Maximum; rw.Close(); }
private void ISD_Verify_Flash() { long filesize; FileInfo fl = new FileInfo(txtFile.Text); filesize = fl.Length; if (!File.Exists(txtFile.Text)) { Console.WriteLine("Image file not found"); return; } if (filesize != 0xB000) { Console.WriteLine("Image file must be 44Kb"); return; } BinaryReader rw = new BinaryReader(File.Open(txtFile.Text, FileMode.Open, FileAccess.Read)); byte[] file = rw.ReadBytes(0xB000); rw.Close(); Console.WriteLine("Verifing with Flash.."); UsbSetupPacket packet = new UsbSetupPacket(); UsbSetupPacket packetread = new UsbSetupPacket(); //ErrorCode ec = ErrorCode.None; byte[] readBuffer = new byte[8]; byte[] data = new byte[0xB000]; //Thread.Sleep(variables.delay); packet.Value = 0x00; packet.Index = 0x00; packet.Length = 0x8; packet.Request = 0x30; packet.RequestType = (byte)UsbRequestType.TypeVendor; packetread.Value = 0x00; packetread.Index = 0x00; packetread.Length = 0x8; packetread.Request = 0x31; packetread.RequestType = 0xC0; int transfer = 0x08; byte[] RES = { 0x60, 0x60, 0x60, 0x60 }; byte[] CMD = new byte[8]; int fails = 0; CMD[0] = 0xA2; for (int i = 0; i < 0xB000; i += 4) { if (variables.escapeloop) { break; } progressBar1.Value = ((i) * progressBar1.Maximum) / 0xB000; CMD[3] = (byte)(i & 0x00ff); CMD[2] = (byte)((i & 0xff00) >> 8); MyUsbDevice.ControlTransfer(ref packet, CMD, 8, out transfer); Thread.Sleep(variables.delay); MyUsbDevice.ControlTransfer(ref packetread, readBuffer, 8, out transfer); if (NandX.ByteArrayCompare(readBuffer, RES, 4)) { Buffer.BlockCopy(readBuffer, 4, data, i, 4); fails = 0; } else { if (fails == 6) { Console.WriteLine("\nRead Failed..\n"); break; } i -= 4; Console.Write(":"); fails++; } } progressBar1.Value = progressBar1.Maximum; if (NandX.ByteArrayCompare(file, data)) { Console.WriteLine("VERIFIED! Flash matches File.."); } else { Console.WriteLine("Verify Failed !!.."); } }
private void ISD_Read_Flash() { UsbSetupPacket packet = new UsbSetupPacket(); UsbSetupPacket packetread = new UsbSetupPacket(); //ErrorCode ec = ErrorCode.None; byte[] readBuffer = new byte[8]; //Thread.Sleep(variables.delay); packet.Value = 0x00; packet.Index = 0x00; packet.Length = 0x8; packet.Request = 0x30; packet.RequestType = (byte)UsbRequestType.TypeVendor; packetread.Value = 0x00; packetread.Index = 0x00; packetread.Length = 0x8; packetread.Request = 0x31; packetread.RequestType = 0xC0; int transfer = 0x08; try { File.Delete(txtFile.Text); } catch (Exception ex) { if (MainForm.debugme) { Console.WriteLine(ex.ToString()); } }; BinaryWriter sw = new BinaryWriter(File.Open(txtFile.Text, FileMode.Append, FileAccess.Write)); Console.WriteLine("Reading from Flash.."); byte[] RES = { 0x60, 0x60, 0x60, 0x60 }; byte[] CMD = new byte[8]; int fails = 0; CMD[0] = 0xA2; for (int i = 0; i < 0xB000; i += 4) { if (variables.escapeloop) { break; } progressBar1.Value = (i * progressBar1.Maximum) / 0xB000; if ((i % 0x400 == 0)) { Thread.Sleep(20); } CMD[3] = (byte)(i & 0x00ff); CMD[2] = (byte)((i & 0xff00) >> 8); MyUsbDevice.ControlTransfer(ref packet, CMD, 8, out transfer); Thread.Sleep(variables.delay); MyUsbDevice.ControlTransfer(ref packetread, readBuffer, 8, out transfer); if (NandX.ByteArrayCompare(readBuffer, RES, 4)) { sw.Write(Oper.returnportion(readBuffer, 4, 4)); fails = 0; } else { if (fails == 6) { Console.WriteLine("\nRead Failed..\n"); break; } i -= 4; Console.Write(":"); fails++; } } progressBar1.Value = progressBar1.Maximum; sw.Close(); return; }