void send() { if (MyUsbDevice != null && MyUsbDevice.IsOpen) { Console.WriteLine("Device Already in Use"); return; } try { MyUsbDevice = UsbDevice.OpenUsbDevice(x360usb); if (MyUsbDevice == null) { Console.WriteLine("Device Not Found"); return; } //ErrorCode ec = ErrorCode.None; IUsbDevice wholeUsbDevice = MyUsbDevice as IUsbDevice; if (!ReferenceEquals(wholeUsbDevice, null)) { wholeUsbDevice.SetConfiguration(1); if (variables.debugme) { Console.WriteLine("Claiming Interface..."); } wholeUsbDevice.ClaimInterface(0); if (variables.debugme) { Console.WriteLine("The Interface is ours!"); } } UsbEndpointReader reader = MyUsbDevice.OpenEndpointReader(ReadEndpointID.Ep01); UsbEndpointWriter writer = MyUsbDevice.OpenEndpointWriter(WriteEndpointID.Ep01); ErrorCode ec = ErrorCode.None; int bytesRead = 1; int timeout = 500; byte[] writeBuffer = Oper.StringToByteArray_v2(txtBuffer.Text); byte[] readBuffer = new byte[64]; ec = writer.Write(writeBuffer, 500, out bytesRead); Console.WriteLine("Write {0} - Status: {1} - Length: {2}", Oper.ByteArrayToString(writeBuffer), ec, bytesRead); ec = reader.Read(readBuffer, timeout, out bytesRead); Console.WriteLine("Read - Status: {0} - Length: {1}", ec, bytesRead); Console.WriteLine(Oper.ByteArrayToString(readBuffer, 0, bytesRead)); Console.WriteLine("Sent"); //ec = reader.Read(readBuffer, timeout, out bytesRead); } catch (Exception ex) { Console.WriteLine(); Console.WriteLine(ex.Message); } finally { if (MyUsbDevice != null) { if (MyUsbDevice.IsOpen) { IUsbDevice wholeUsbDevice = MyUsbDevice as IUsbDevice; if (!ReferenceEquals(wholeUsbDevice, null)) { wholeUsbDevice.ReleaseInterface(0); } MyUsbDevice.Close(); } } MyUsbDevice = null; UsbDevice.Exit(); } }
private void config_edit() { try { string newfile = Path.Combine(Path.GetDirectoryName(variables.filename1), Path.GetFileNameWithoutExtension(variables.filename1) + "_edited" + Path.GetExtension(variables.filename1)); Console.WriteLine("Saving to {0}", newfile); File.Copy(variables.filename1, newfile, true); Nand.SMCConfig val = new Nand.SMCConfig(false); val.structure = Oper.StringToByteArray_v2(txtstructure.Text); val.config = Oper.StringToByteArray_v2(txtconfig.Text); val.bit = Oper.StringToByteArray_v2(txtbit.Text); val.mac = Oper.StringToByteArray_v2(txtmac.Text.Replace("-", "").Replace(" ", "")); val.cpugain = Oper.StringToByteArray_v2(txtcpugain.Text); val.cpuoff = Oper.StringToByteArray_v2(txtcpuoff.Text); val.gpugain = Oper.StringToByteArray_v2(txtgpugain.Text); val.gpuoff = Oper.StringToByteArray_v2(txtgpuoff.Text); val.dramgain = Oper.StringToByteArray_v2(txtedramgain.Text); val.dramoff = Oper.StringToByteArray_v2(txtedramoff.Text); val.boardgain = Oper.StringToByteArray_v2(txtboardgain.Text); val.boardoff = Oper.StringToByteArray_v2(txtboardoff.Text); val.ana = Oper.StringToByteArray_v2(txtana.Text); val.anabackup = Oper.StringToByteArray_v2(txtanabackup.Text); val.clock = Oper.StringToByteArray_v2(txtclock.Text); val.flags = Oper.StringToByteArray_v2(txtflags.Text); val.version = Oper.StringToByteArray_v2(txtversion.Text); val.net = Oper.StringToByteArray_v2(txtnet.Text); val.reset = ascii.GetBytes(txtreset.Text); string thr = Oper.ByteArrayToString(smc_config.thermal); val.thermal = new byte[6]; try { var th = txtthermal.Text.Split('C'); int len = th.Length < 6 ? th.Length : 6; for (int i = 0; i < len; i++) { byte.TryParse(Regex.Replace(th[i], @"[^\d]", ""), out val.thermal[i]); } } catch (Exception ex) { Console.WriteLine(ex.ToString()); } val.gainoff = Oper.StringToByteArray_v2(txtgainoff.Text.Replace(";", "")); val.dvdregion = new byte[1]; val.dvdregion[0] = comboDVD.SelectedIndex != 8 ? (byte)(comboDVD.SelectedIndex + 1) : (byte)0xFF; val.gameregion = new byte[1]; val.videoregion = new byte[1]; if (comboVideo.SelectedIndex == (int)VideoRegion.PAL) { val.gameregion[0] = 0x02; } switch (comboGame.SelectedIndex) { case (int)GameRegion.USA: val.videoregion[0] = 0xFF; break; case (int)GameRegion.HK: val.videoregion[0] = 0x01; val.gameregion[0] = 0x01; break; case (int)GameRegion.KOR: val.videoregion[0] = 0xFC; val.gameregion[0] = 0x01; break; case (int)GameRegion.JAP: val.videoregion[0] = 0xFF; val.gameregion[0] = 0x01; break; case (int)GameRegion.AUS: val.videoregion[0] = 0x01; break; case (int)GameRegion.EU: val.videoregion[0] = 0xFE; break; } val.pwrmode = Oper.StringToByteArray_v2(txtpwrmode.Text); val.powervcs = Oper.StringToByteArray_v2(txtpowervcs.Text); val.cpufanspeed = new byte[1]; if (chkcpufanspeed.Checked) { val.cpufanspeed[0] = 0x7F; } else { val.cpufanspeed[0] = (byte)(trackCPU.Value + 0x80); } val.gpufanspeed = new byte[1]; if (chkgpufanspeed.Checked) { val.gpufanspeed[0] = 0x7F; } else { val.gpufanspeed[0] = (byte)(trackGPU.Value + 0x80); } val.reserve0 = Oper.StringToByteArray_v2(txtreserve0.Text); val.reserve1 = Oper.StringToByteArray_v2(txtreserve1.Text); val.reserve2 = Oper.StringToByteArray_v2(txtreserve2.Text); val.reserve3 = Oper.StringToByteArray_v2(txtreserve3.Text); val.reserve4 = Oper.StringToByteArray_v2(txtreserve4.Text); val.reserve5 = Oper.StringToByteArray_v2(txtreserve5.Text); if (variables.debugme) { Console.WriteLine("editing"); } byte[] smc_conf = Nand.Nand.editConfigValues(newfile, val); if (variables.debugme) { Console.WriteLine("injecting"); } Nand.Nand.injectSMCConf(newfile, smc_conf); } catch (Exception ex) { Console.WriteLine(ex.Message); if (variables.debugme) { Console.WriteLine(ex.ToString()); } } Console.WriteLine("Done"); }