static string GetErrorMessage(HarpMessage message) { if (message == null) { throw new ArgumentNullException(nameof(message)); } var payloadType = message.PayloadType & ~PayloadType.Timestamp; if (message.MessageType == MessageType.Write) { string payload; switch (payloadType) { case PayloadType.U8: payload = GetPayloadString <byte>(message); break; case PayloadType.S8: payload = GetPayloadString <sbyte>(message); break; case PayloadType.U16: payload = GetPayloadString <ushort>(message); break; case PayloadType.S16: payload = GetPayloadString <short>(message); break; case PayloadType.U32: payload = GetPayloadString <uint>(message); break; case PayloadType.S32: payload = GetPayloadString <int>(message); break; case PayloadType.U64: payload = GetPayloadString <ulong>(message); break; case PayloadType.S64: payload = GetPayloadString <long>(message); break; case PayloadType.Float: payload = GetPayloadString <float>(message); break; default: payload = string.Empty; break; } return($"The device reported an erroneous write command.\nPayload: {payload}, Address: {message.Address}, Type: {payloadType}."); } else { var payload = message.GetPayload(); if (payload.Count == 0) { return($"The device reported an erroneous read command.\nType not correct for address {message.Address}."); } return($"The device reported an erroneous read command.\nAddress: {message.Address}, Type: {payloadType}."); } }
static void CheckErrors(HarpMessage input, PayloadType typeExpected) { if (input.Error) { throw new InvalidOperationException("The Harp message is an error report."); } var payloadLength = input.GetPayload().Count; if (payloadLength == 0) { throw new InvalidOperationException("The Harp message doesn't have a payload."); } if ((input.PayloadType & ~PayloadType.Timestamp) != typeExpected) { throw new InvalidOperationException("Payload type mismatch."); } }