private bool SendInternal(ApplicationMessages messageType, byte[] messageData) { var header = new EnttecMessageHeader(); header.SetMessageType(messageType); header.SetDataLength(messageData.Length); if (!header.IsValid()) { throw new ArgumentException("Invalid message data!"); } if (!_ftdiDriver.Write(header.Data)) { return(false); } var body = new EnttecMessageBody(messageData); if (!_ftdiDriver.Write(body.Data)) { return(false); } var footer = new EnttecMessageFooter(); if (!_ftdiDriver.Write(footer.Data)) { return(false); } return(true); }
public void ExceedingMaxDataLengthThrowsException() { // Arrange, Act, Assert Assert.Throws <ArgumentException>(() => { var test = new EnttecMessageBody(new byte[601]); }); }
public byte[] CreateMessageFromParts(EnttecMessageHeader header, EnttecMessageBody body, EnttecMessageFooter footer) { var message = new List <byte>(); message.AddRange(header.Data); message.AddRange(body.Data); message.AddRange(footer.Data); return(message.ToArray()); }
public void CanSetAndReadData() { // Arrange var body = new EnttecMessageBody(new byte[512]); // Act (Set the first led to the color orange) body.Data[1] = 255; body.Data[2] = 125; body.Data[3] = 0; // Assert Assert.Equal(255, body.Data[1]); Assert.Equal(125, body.Data[2]); Assert.Equal(0, body.Data[3]); }
public void IsValid() { // Arrange, Act, Assert Assert.Throws <ArgumentException>(() => { var body1 = new EnttecMessageBody(new byte[601]); }); Assert.Throws <ArgumentException>(() => { var body2 = new EnttecMessageBody(new byte[0]); }); var body3 = new EnttecMessageBody(new byte[1]); }
public byte[] CreateMessage(ApplicationMessages messageType, byte[] messageData) { var header = new EnttecMessageHeader(); header.SetMessageType(messageType); header.SetDataLength(messageData.Length); var body = new EnttecMessageBody(messageData); var footer = new EnttecMessageFooter(); if (!header.IsValid() || !footer.IsValid()) { throw new ArgumentException("Invalid message data!"); } return(CreateMessageFromParts(header, body, footer)); }
private byte[] ReceiveInternal(ApplicationMessages messageType) { var startCode = new byte[1]; if (!_ftdiDriver.Read(startCode)) { return(null); } if (EnttecMessageHeader.StartCodeByte != startCode[0]) { return(null); } var byte1 = new byte[1]; var byte2 = new byte[1]; var byte3 = new byte[1]; if (!_ftdiDriver.Read(byte1)) { return(null); } if (!_ftdiDriver.Read(byte2)) { return(null); } if (!_ftdiDriver.Read(byte3)) { return(null); } if (byte1[0] != (byte)messageType) { return(null); } var header = new EnttecMessageHeader(new byte[] { startCode[0], byte1[0], byte2[0], byte3[0] }); if (!header.IsValid()) { return(null); } var body = new EnttecMessageBody(new byte[header.GetDataLength()]); if (!_ftdiDriver.Read(body.Data)) { return(null); } var footer = new EnttecMessageFooter(); if (!(_ftdiDriver.Read(footer.Data) & footer.IsValid())) { return(null); } return(body.Data); }