Пример #1
0
        public void DataQueue_TestGetStreamable()
        {
            byte[] stream = new byte[2048];
            Motus_1_RawDataPacket packet = new Motus_1_RawDataPacket(sampleMotusPayload);
            DataQueue             queue  = new DataQueue();
            int expectedNumBytesToQueue  = ((18 + DataPacket.NumOverHeadBytes) * queue.MaxSize);

            FillQueue(queue, packet);
            int numBytesQueued = queue.GetStreamable(stream);

            Assert.AreEqual(expectedNumBytesToQueue, numBytesQueued);
            Assert.IsTrue(queue.IsEmpty());

            for (int i = 0; i < numBytesQueued;)
            {
                DataPacket rebuilt = new DataPacket();
                i += rebuilt.SerializeFromStream(stream, i);
                Assert.AreEqual(packet.Type, rebuilt.Type);
                Assert.AreEqual(packet.ExpectedLen, rebuilt.ExpectedLen);
                for (int j = 0; j < rebuilt.ExpectedLen; j++)
                {
                    Assert.AreEqual(packet.Payload[j], rebuilt.Payload[j]);
                }
            }
        }
Пример #2
0
        public void DataQueue_TestGetUnderFlowProtection()
        {
            Motus_1_RawDataPacket packet = new Motus_1_RawDataPacket(sampleMotusPayload);
            DataQueue             queue  = new DataQueue();

            FillQueue(queue, packet);

            int count;

            for (count = 0; !queue.IsEmpty(); count++)
            {
                DataPacket getPacket = queue.Get();
                Assert.AreEqual(packet.Type, getPacket.Type);
                Assert.AreEqual(packet.ExpectedLen, getPacket.ExpectedLen);
                for (int j = 0; j < packet.ExpectedLen; j++)
                {
                    Assert.AreEqual(packet.Payload[j], getPacket.Payload[j]);
                }
            }

            Assert.AreEqual(count, queue.MaxSize);
            Assert.IsTrue(queue.IsEmpty());
            DataPacket badPacket = queue.Get();

            Assert.AreEqual(ValidPacketTypes.end_valid_packet_types, badPacket.Type);
            Assert.AreEqual(-1, badPacket.ExpectedLen);
        }
Пример #3
0
        private void GetHidReport(HidInputReportReceivedEventArgs args)
        {
            // For now there is only one data type
            HidInputReport rpt  = args.Report;
            IBuffer        buff = rpt.Data;
            DataReader     dr   = DataReader.FromBuffer(buff);

            byte[] bytes = new byte[rpt.Data.Length];
            dr.ReadBytes(bytes);
            Motus_1_RawDataPacket packet = new Motus_1_RawDataPacket();

            try
            {
                // Have to remove a bonus byte on the payload
                byte[] parsed = new byte[bytes.Length - 1];
                for (int i = 0; i < parsed.Length; i++)
                {
                    parsed[i] = bytes[i + 1];
                }
                packet.Serialize(parsed);
                byte[] stream = new byte[packet.ExpectedLen + DataPacket.NumOverHeadBytes];
                packet.SerializeToStream(stream, 0);
                SetData(stream);
            }
            catch (ArgumentException e0)
            {
                LogMessage(e0.Message + e0.StackTrace);
            }
            catch (IndexOutOfRangeException e1)
            {
                LogMessage(e1.Message + e1.StackTrace);
            }
        }
        public void Motus_1_PacketTestSerializeInvalidPayload()
        {
            Motus_1_RawDataPacket packet = new Motus_1_RawDataPacket();

            byte[] invalidBytePayload = new byte[12];
            packet.Serialize(invalidBytePayload);
        }
Пример #5
0
        public static void Service()
        {
            client.ClientStartRead();
            byte[] dataBytes             = client.ClientGetRxData();
            byte   type                  = client.ClientGetRxType();
            Motus_1_RawDataPacket packet = new Motus_1_RawDataPacket();

            if (type == (byte)ValidPacketTypes.motus_1_raw_data_packet)
            {
                packet.Serialize(dataBytes);
                short[] sData = packet.DeSerialize();
                int[]   data  = new int[sData.Length];

                for (int i = 0; i < data.Length; i++)
                {
                    data[i] = (int)sData[i];
                }
                DataStorageTable.SetMotus_1_Data(data);

                if (logRawData)
                {
                    string msg = data[0].ToString();
                    for (int i = 1; i < data.Length; i++)
                    {
                        msg += "," + data[i].ToString();
                    }
                    Logger.LogMessage(msg);
                }
            }
        }
Пример #6
0
        public void DataQueue_TestAddPacket()
        {
            Motus_1_RawDataPacket packet = new Motus_1_RawDataPacket(sampleMotusPayload);
            DataQueue             queue  = new DataQueue();

            Assert.IsTrue(queue.Add(packet));
            Assert.IsFalse(queue.IsEmpty());
        }
Пример #7
0
        public void DataQueue_TestAddOverFlowProtection()
        {
            Motus_1_RawDataPacket packet = new Motus_1_RawDataPacket(sampleMotusPayload);
            DataQueue             queue  = new DataQueue();

            for (int i = 0; i < queue.MaxSize; i++)
            {
                Assert.IsTrue(queue.Add(packet));
            }

            Assert.IsFalse(queue.Add(packet));
        }
Пример #8
0
        public void DataQueue_TestFlush()
        {
            DataQueue             queue  = new DataQueue();
            Motus_1_RawDataPacket packet = new Motus_1_RawDataPacket();

            FillQueue(queue, packet);
            Assert.IsFalse(queue.IsEmpty());
            Assert.AreEqual(queue.Count, queue.MaxSize);

            queue.Flush();
            Assert.IsTrue(queue.IsEmpty());
            Assert.AreEqual(queue.Count, 0);
        }
Пример #9
0
        public void DataQueue_TestTransferAllUnderFlow()
        {
            DataQueue             queue1 = new DataQueue();
            Motus_1_RawDataPacket packet = new Motus_1_RawDataPacket();

            FillQueue(queue1, packet);

            DataQueue queue2 = new DataQueue(128);

            queue2.TransferAll(queue1);
            Assert.IsTrue(queue1.IsEmpty());
            Assert.IsFalse(queue2.IsEmpty());
            Assert.AreEqual(queue2.Count, queue1.MaxSize);
        }
Пример #10
0
        public void DataQueue_TestGetStreamableBufferOverflow()
        {
            byte[] stream = new byte[1028];
            Motus_1_RawDataPacket packet  = new Motus_1_RawDataPacket(sampleMotusPayload);
            DataQueue             queue   = new DataQueue();
            int expectedNumPacketsToQueue = (stream.Length / (18 + DataPacket.NumOverHeadBytes));
            int expectedNumBytesToQueue   = (18 + DataPacket.NumOverHeadBytes) * expectedNumPacketsToQueue;

            FillQueue(queue, packet);
            int numBytesQueued   = queue.GetStreamable(stream);
            int numPacketsQueued = queue.MaxSize - queue.Count;

            Assert.AreEqual(expectedNumBytesToQueue, numBytesQueued);
            Assert.AreEqual(expectedNumPacketsToQueue, numPacketsQueued);
        }
        public void Motus_1_PacketTestInvalidConstructor2()
        {
            byte[]     invalidBytePayload = new byte[12];
            DataPacket dPacket            = new DataPacket(ValidPacketTypes.motus_1_raw_data_packet,
                                                           (short)invalidBytePayload.Length, invalidBytePayload);

            Motus_1_RawDataPacket packet = new Motus_1_RawDataPacket(dPacket);

            Assert.AreEqual(ValidPacketTypes.motus_1_raw_data_packet, packet.Type);
            Assert.AreEqual(18, packet.ExpectedLen);

            DataPacket dPacket1 = new DataPacket(ValidPacketTypes.motus_1_raw_data_packet,
                                                 18, invalidBytePayload);
            Motus_1_RawDataPacket packet1 = new Motus_1_RawDataPacket(dPacket1);
        }
Пример #12
0
        public void DataQueue_TestGet()
        {
            Motus_1_RawDataPacket packet = new Motus_1_RawDataPacket(sampleMotusPayload);
            DataQueue             queue  = new DataQueue();

            queue.Add(packet);

            DataPacket getPacket = queue.Get();

            Assert.AreEqual(packet.Type, getPacket.Type);
            Assert.AreEqual(packet.ExpectedLen, getPacket.ExpectedLen);
            for (int i = 0; i < packet.ExpectedLen; i++)
            {
                Assert.AreEqual(packet.Payload[i], getPacket.Payload[i]);
            }
        }
        public void Motus_1_TestPacketToString()
        {
            Motus_1_RawDataPacket packet = new Motus_1_RawDataPacket();

            packet.Serialize(testBytePayload);
            Int16[] intPayload = packet.DeSerialize();
            string  known      = intPayload[0].ToString();

            for (int i = 1; i < intPayload.Length; i++)
            {
                known += ",";
                known += intPayload[i].ToString();
            }

            Assert.AreEqual(known, packet.ToString());
        }
Пример #14
0
        public void SocketWrapper_TestEndToEnd()
        {
            SocketWrapper server = new SocketWrapper(Configuration.server);
            SocketWrapper client = new SocketWrapper(Configuration.client);

            DataQueue knownData = new DataQueue();
            DataQueue toSend    = new DataQueue();
            DataQueue toRecieve = new DataQueue();

            short[] known   = new short[] { 0, 1, 2, 3, 4, 5, 6, 7, 8 };
            byte[]  payload = new byte[known.Length * 2];
            Buffer.BlockCopy(known, 0, payload, 0, payload.Length);
            Motus_1_RawDataPacket dummyPacket = new Motus_1_RawDataPacket(payload);

            for (int i = 0; i < knownData.MaxSize; i++)
            {
                knownData.Add(dummyPacket);
                toSend.Add(dummyPacket);
            }

            server.StartServer();
            server.ServerSetTxData(toSend);
            Assert.IsTrue(toSend.IsEmpty());

            client.ClientStartRead();
            Thread.Sleep(1000);
            Assert.IsTrue(client.ClientHasData());
            client.ClientGetRxData(toRecieve);
            Assert.AreEqual(toRecieve.Count, toRecieve.MaxSize);
            while (!toRecieve.IsEmpty())
            {
                Motus_1_RawDataPacket packetKnown = new Motus_1_RawDataPacket(knownData.Get());
                Motus_1_RawDataPacket packetTest  = new Motus_1_RawDataPacket(toRecieve.Get());
                short[] payloadKnown = packetKnown.DeSerialize();
                short[] payloadTest  = packetTest.DeSerialize();
                for (int i = 0; i < payloadKnown.Length; i++)
                {
                    Assert.AreEqual(known[i], payloadKnown[i]);
                    Assert.AreEqual(payloadKnown[i], payloadTest[i]);
                }
            }
        }
        public void Motus_1_PacketTestSerializeBytes()
        {
            Motus_1_RawDataPacket packet = new Motus_1_RawDataPacket();

            packet.Serialize(testBytePayload);
            byte[]  rtnPayload    = packet.Payload;
            Int16[] rtnIntPayload = packet.DeSerialize();

            Assert.AreEqual(packet.ExpectedLen, rtnPayload.Length);
            Assert.AreEqual(packet.ExpectedLen / 2, rtnIntPayload.Length);

            for (int i = 0; i < rtnPayload.Length; i++)
            {
                Assert.AreEqual(testBytePayload[i], rtnPayload[i]);
            }

            Int16[] known = new Int16[packet.ExpectedLen / 2];
            Buffer.BlockCopy(packet.Payload, 0, known, 0, packet.ExpectedLen);
            for (int i = 0; i < rtnIntPayload.Length; i++)
            {
                Assert.AreEqual(known[i], rtnIntPayload[i]);
            }
        }
Пример #16
0
        public void DataQueue_TestParseStreamable()
        {
            byte[] stream = new byte[2048];
            Motus_1_RawDataPacket packet = new Motus_1_RawDataPacket(sampleMotusPayload);
            DataQueue             queue  = new DataQueue();

            FillQueue(queue, packet);
            int numBytesQueued = queue.GetStreamable(stream);

            FillQueue(queue, packet);

            DataQueue queue2 = new DataQueue();

            queue2.ParseStreamable(stream, stream.Length);

            while (!queue2.IsEmpty() && !queue.IsEmpty())
            {
                DataPacket packet1 = queue.Get();
                DataPacket packet2 = queue2.Get();

                // Ensure packet1 is the same as packet
                Assert.AreEqual(packet.Type, packet1.Type);
                Assert.AreEqual(packet.ExpectedLen, packet1.ExpectedLen);
                for (int j = 0; j < packet1.ExpectedLen; j++)
                {
                    Assert.AreEqual(packet.Payload[j], packet1.Payload[j]);
                }

                // Ensure packet2 is the same as packet1
                Assert.AreEqual(packet1.Type, packet2.Type);
                Assert.AreEqual(packet1.ExpectedLen, packet2.ExpectedLen);
                for (int j = 0; j < packet2.ExpectedLen; j++)
                {
                    Assert.AreEqual(packet1.Payload[j], packet2.Payload[j]);
                }
            }
        }
        public void Motus_1_PacketTestConstructor()
        {
            Motus_1_RawDataPacket packet  = new Motus_1_RawDataPacket();
            Motus_1_RawDataPacket packet1 = new Motus_1_RawDataPacket(testBytePayload);
            DataPacket            dPacket = new DataPacket(ValidPacketTypes.motus_1_raw_data_packet,
                                                           (short)testBytePayload.Length, testBytePayload);
            Motus_1_RawDataPacket packet2 = new Motus_1_RawDataPacket(dPacket);

            Assert.AreEqual(ValidPacketTypes.motus_1_raw_data_packet,
                            packet.Type);
            Assert.AreEqual(18, packet.ExpectedLen);
            Assert.AreEqual(ValidPacketTypes.motus_1_raw_data_packet,
                            packet1.Type);
            Assert.AreEqual(18, packet1.ExpectedLen);
            Assert.AreEqual(ValidPacketTypes.motus_1_raw_data_packet,
                            packet2.Type);
            Assert.AreEqual(18, packet2.ExpectedLen);

            for (int i = 0; i < testBytePayload.Length; i++)
            {
                Assert.AreEqual(testBytePayload[i], packet1.Payload[i]);
                Assert.AreEqual(testBytePayload[i], packet2.Payload[i]);
            }
        }
 public void Motus_1_PacketTestInvalidConstructor()
 {
     byte[] invalidBytePayload    = new byte[12];
     Motus_1_RawDataPacket packet = new Motus_1_RawDataPacket(invalidBytePayload);
 }