public void WriteBytes(byte[] data, ulong offset, RWMethod method = RWMethod.Heap) { if (data.Length > MaximumTransferSize) { WriteBytesLarge(data, offset, method); } lock (_sync) { SendInternal(SwitchCommandMethodHelper.GetPokeCommand(offset, data, method, true)); // give it time to push data back Thread.Sleep((data.Length / 256) + UI_Settings.GetThreadSleepTime()); } }
public void WriteBytes(byte[] data, ulong offset, RWMethod method = RWMethod.Heap) { if (data.Length > MaximumTransferSize) { WriteBytesLarge(data, offset, method); } else { lock (_sync) { AndroidUSBUtils.CurrentInstance.WriteToEndpoint(SwitchCommandMethodHelper.GetPokeCommand(offset, data, method, true)); // give it time to push data back Thread.Sleep((data.Length / 256) + UI_Settings.GetThreadSleepTime()); } } }
public byte[] ReadBytes(ulong offset, int length, RWMethod method = RWMethod.Heap) { if (length > MaximumTransferSize) { return(ReadBytesLarge(offset, length, method)); } lock (_sync) { byte[] cmd = SwitchCommandMethodHelper.GetPeekCommand(offset, length, method, true); AndroidUSBUtils.CurrentInstance.WriteToEndpoint(cmd); // give it time to push data back Thread.Sleep((length / 256) + UI_Settings.GetThreadSleepTime()); byte[] buffer = AndroidUSBUtils.CurrentInstance.ReadEndpoint(length); return(buffer); } }
public byte[] ReadBytes(ulong offset, int length, RWMethod method = RWMethod.Heap) { if (length > MaximumTransferSize) { return(ReadBytesLarge(offset, length, method)); } lock (_sync) { var cmd = SwitchCommandMethodHelper.GetPeekCommand(offset, length, method, false); SendInternal(cmd); // give it time to push data back Thread.Sleep((length / 256) + UI_Settings.GetThreadSleepTime()); var buffer = new byte[(length * 2) + 1]; var _ = ReadInternal(buffer); return(Decoder.ConvertHexByteStringToBytes(buffer)); } }