Ejemplo n.º 1
0
        public void IsValidDataLength()
        {
            // Arrange
            var header1 = new EnttecMessageHeader();
            var header2 = new EnttecMessageHeader();
            var header3 = new EnttecMessageHeader();
            var header4 = new EnttecMessageHeader();

            header1.SetMessageType(ApplicationMessages.OutputOnlySendDmxPacketRequest);
            header2.SetMessageType(ApplicationMessages.OutputOnlySendDmxPacketRequest);
            header3.SetMessageType(ApplicationMessages.OutputOnlySendDmxPacketRequest);
            header4.SetMessageType(ApplicationMessages.OutputOnlySendDmxPacketRequest);

            // Act
            header1.SetDataLength(601);
            header2.SetDataLength(0);
            header3.SetDataLength(1);
            header4.SetDataLength(600);

            // Assert
            Assert.False(header1.IsValid());
            Assert.False(header2.IsValid());
            Assert.True(header3.IsValid());
            Assert.True(header4.IsValid());
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
 public void DataBiggerThanFourByteThrowsException()
 {
     // Arrange, Act, Assert
     Assert.Throws <ArgumentException>(() =>
     {
         var test = new EnttecMessageHeader(new byte[5]);
     });
 }
Ejemplo n.º 4
0
        public void DataLength()
        {
            // Arrange
            var header = new EnttecMessageHeader();

            // Act
            header.SetDataLength(10);

            // Assert
            Assert.Equal(10, header.GetDataLength());
        }
Ejemplo n.º 5
0
        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());
        }
Ejemplo n.º 6
0
        public void MessageType()
        {
            // Arrange
            var header = new EnttecMessageHeader();

            // Act
            header.SetMessageType(ApplicationMessages.GetWidgetSerialNumberRequest);

            // Assert
            Assert.Equal(10,
                         header.Data[1]);
        }
Ejemplo n.º 7
0
        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));
        }
Ejemplo n.º 8
0
        public void StartCodeByte()
        {
            // Arrange
            var header1 = new EnttecMessageHeader();
            var header2 = new EnttecMessageHeader(new byte[]
            {
                0x02,
                0x03,
                0x04,
                0x05
            });

            // Act
            header1.SetStartCodeByte(0x01);

            // Assert
            Assert.Equal(0x01, header1.GetStartCodeByte());
            Assert.Equal(0x02, header2.GetStartCodeByte());
            Assert.Equal(0x02, header2.Data[0]);
            Assert.Equal(0x03, header2.Data[1]);
            Assert.Equal(0x04, header2.Data[2]);
            Assert.Equal(0x05, header2.Data[3]);
        }
Ejemplo n.º 9
0
        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);
        }