public async Task CloseGate(uint Offset, CancellationToken token) { // Navigate through dialog with Dodo to close the gate, then inject empty dodo bytes await Task.Delay(0_500, token).ConfigureAwait(false); var Hold = SwitchCommand.Hold(SwitchButton.L); await Connection.SendAsync(Hold, token).ConfigureAwait(false); await Task.Delay(0_700, token).ConfigureAwait(false); await BotRunner.Click(SwitchButton.A, 3_000, token).ConfigureAwait(false); await BotRunner.Click(SwitchButton.A, 1_000, token).ConfigureAwait(false); await BotRunner.Click(SwitchButton.A, 2_000, token).ConfigureAwait(false); await BotRunner.Click(SwitchButton.A, 3_000, token).ConfigureAwait(false); for (int i = 0; i < 5; ++i) { await BotRunner.Click(SwitchButton.B, 1_000, token).ConfigureAwait(false); } await Task.Delay(0_500, token).ConfigureAwait(false); var Release = SwitchCommand.Release(SwitchButton.L); await Connection.SendAsync(Release, token).ConfigureAwait(false); await Connection.WriteBytesAsync(new byte[5], Offset, token).ConfigureAwait(false); DodoCode = string.Empty; }
public static async Task WriteBytesLargeAsync(this SwitchConnectionAsync connection, byte[] data, uint offset, int chunkSize, CancellationToken token) { int byteCount = data.Length; for (int i = 0; i < byteCount; i += chunkSize) { await connection.WriteBytesAsync(SubArray(data, i, chunkSize), offset + (uint)i, token).ConfigureAwait(false); } }