From 686299ce8bbcd2b44f5d2d8da3414e9bf1ca6225 Mon Sep 17 00:00:00 2001 From: Sean Cross Date: Tue, 6 Feb 2024 10:25:34 +0800 Subject: [PATCH] emulation: WF200: suppress warning on odd-sized xfer The WF200 is connected via an 8-bit bus, but data is transferred in chunks of 16-bits. That means that sometimes an extra byte is transferred. Suppress the warning that would occur when this happens to avoid confusion. Signed-off-by: Sean Cross --- emulation/peripherals/WF200.cs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/emulation/peripherals/WF200.cs b/emulation/peripherals/WF200.cs index 0857b4b51..6b6c62e40 100644 --- a/emulation/peripherals/WF200.cs +++ b/emulation/peripherals/WF200.cs @@ -623,7 +623,7 @@ namespace Antmicro.Renode.Peripherals.Network.Betrusted return; } - var req = (WfxMessage.Requests)(request.Id); + var req = (WfxMessage.Requests)request.Id; if (req == WfxMessage.Requests.Configuration) { var message = new WfxMessage(WfxMessage.Confirmations.Configuration, okayResponse, configurationOffset); @@ -748,8 +748,8 @@ namespace Antmicro.Renode.Peripherals.Network.Betrusted sendFrameResponse[3] = 0; // uint16_t packet_id (from request) - sendFrameResponse[4] = (byte)(payload[2]); - sendFrameResponse[5] = (byte)(payload[3]); + sendFrameResponse[4] = payload[2]; + sendFrameResponse[5] = payload[3]; sendFrameResponse[6] = 0; // uint16_t reserved @@ -759,11 +759,14 @@ namespace Antmicro.Renode.Peripherals.Network.Betrusted sendFrameResponse[8] = 0; sendFrameResponse[9] = 0x30; - var frame_data = payload.GetRange(8, payload.Count - 8).ToArray(); + // Our bus is 16-bits, but sometimes we want to transmit an odd number of bytes. + // Support omitting the last byte if necessary. + var roundingError = payload[4] & 1; + var frame_data = payload.GetRange(8, payload.Count - 8 - roundingError).ToArray(); var packet_data_length = (payload[4] << 0) | (payload[5] << 8) | (payload[6] << 16) | (payload[7] << 24); if (frame_data.Length != packet_data_length) { - this.Log(LogLevel.Error, "Warning: host reported payload length of {0}, but transmitted a payload length of {1}", packet_data_length, frame_data.Length); + this.Log(LogLevel.Warning, "host reported payload length of {0}, but transmitted a payload length of {1}", packet_data_length, frame_data.Length); } if (!Misc.TryCreateFrameOrLogWarning(this, frame_data, out var frame, addCrc: true)) {