Esempio n. 1
0
        public void TestWriteGpioCommandParse()
        {
            _message = new FlTxtMessageCommand()
            {
                MessageId = FlMessageId.WriteGpio,
                Arguments = new List <object>()
                {
                    "1", // DeviceID
                    "3", // GPIO number
                    "1"  // GPIO value
                }
            };

            FlTxtPacketBuilder.BuildMessagePacket(ref _message);

            for (_i = 0; _i < _message.Buffer.Length; _i++)
            {
                _parseResult = _parser.ParseCommand(_message.Buffer[_i], out _parsedMessage);
            }

            Assert.AreEqual(FlParseState.ParseOk, _parseResult);
            Assert.AreEqual(FlMessageType.Text, _parsedMessage.MessageType);
            Assert.AreEqual(FlMessageCategory.Command, _parsedMessage.MessageCategory);
            Assert.AreEqual(FlMessageId.WriteGpio, _parsedMessage.MessageId);
            Assert.IsNotNull(_parsedMessage.Arguments);
            Assert.AreEqual(3, _parsedMessage.Arguments.Count);
            Assert.AreEqual("1", (string)_parsedMessage.Arguments[0]);
            Assert.AreEqual("3", (string)_parsedMessage.Arguments[1]);
            Assert.AreEqual("1", (string)_parsedMessage.Arguments[2]);
        }
Esempio n. 2
0
        public void TestReadTempemperatureAndHumidityResponseParse()
        {
            _message = new FlTxtMessageResponse()
            {
                MessageId = FlMessageId.ReadTempAndHum,
                Arguments = new List <object>()
                {
                    1,              // DeviceID,
                    0,              // Error
                    3,              // Sensor number
                    $"{23.4:0.00}", // Temperature value
                    $"{56.7:0.00}"  // Humidity value
                }
            };

            FlTxtPacketBuilder.BuildMessagePacket(ref _message);

            for (_i = 0; _i < _message.Buffer.Length; _i++)
            {
                _parseResult = _parser.ParseResponseEvent(_message.Buffer[_i], out _parsedMessage);
            }

            Assert.AreEqual(FlParseState.ParseOk, _parseResult);
            Assert.AreEqual(FlMessageType.Text, _parsedMessage.MessageType);
            Assert.AreEqual(FlMessageCategory.Response, _parsedMessage.MessageCategory);
            Assert.AreEqual(FlMessageId.ReadTempAndHum, _parsedMessage.MessageId);
            Assert.IsNotNull(_parsedMessage.Arguments);
            Assert.AreEqual(5, _parsedMessage.Arguments.Count);
            Assert.AreEqual("1", (string)_parsedMessage.Arguments[0]);
            Assert.AreEqual("0", (string)_parsedMessage.Arguments[1]);
            Assert.AreEqual("3", (string)_parsedMessage.Arguments[2]);
            Assert.AreEqual("23.40", (string)_parsedMessage.Arguments[3]);
            Assert.AreEqual("56.70", (string)_parsedMessage.Arguments[4]);
        }
Esempio n. 3
0
        public void TestReadTempemperatureAndHumidityCommandParse()
        {
            _message = new FlTxtMessageCommand()
            {
                MessageId = FlMessageId.ReadTempAndHum,
                Arguments = new List <object>()
                {
                    "1", // DeviceID
                    "3"  // Sensor number
                }
            };

            FlTxtPacketBuilder.BuildMessagePacket(ref _message);

            for (_i = 0; _i < _message.Buffer.Length; _i++)
            {
                _parseResult = _parser.ParseCommand(_message.Buffer[_i], out _parsedMessage);
            }

            Assert.AreEqual(FlParseState.ParseOk, _parseResult);
            Assert.AreEqual(FlMessageType.Text, _parsedMessage.MessageType);
            Assert.AreEqual(FlMessageCategory.Command, _parsedMessage.MessageCategory);
            Assert.AreEqual(FlMessageId.ReadTempAndHum, _parsedMessage.MessageId);
            Assert.IsNotNull(_parsedMessage.Arguments);
            Assert.AreEqual(2, _parsedMessage.Arguments.Count);
            Assert.AreEqual("1", (string)_parsedMessage.Arguments[0]);
            Assert.AreEqual("3", (string)_parsedMessage.Arguments[1]);
        }
        private void AppHwVer()
        {
            IFlMessage message = null;

            if (_flMsgMgr.MessageType == FwMessageType.Text)
            {
                message = new FlTxtMessageCommand()
                {
                    MessageId = FlMessageId.ReadHardwareVersion,
                    Arguments = new List <object>()
                    {
                        _deviceId.ToString() // DeviceID
                    }
                };
                FlTxtPacketBuilder.BuildMessagePacket(ref message);
            }
            else if (_flMsgMgr.MessageType == FwMessageType.Binary)
            {
                IFlBinMessage binMsg = new FlBinMessageCommand()
                {
                    MessageId = FlMessageId.ReadHardwareVersion
                };
                binMsg.Header.device_id          = _deviceId;
                binMsg.Header.flag1.sequence_num = GetNextSeqNum();

                message = binMsg;
                FlBinPacketBuilder.BuildMessagePacket(ref message);
            }

            _flMsgMgr.EnqueueCommand(message);
        }
Esempio n. 5
0
        public void TestReadHardwareVersionResponseParse()
        {
            _message = new FlTxtMessageResponse()
            {
                MessageId = FlMessageId.ReadHardwareVersion,
                Arguments = new List <object>()
                {
                    1,        // DeviceID(string or uint32),
                    0,        // Error(string or uint8)
                    "a.1.2.3" // Hardware version
                }
            };

            FlTxtPacketBuilder.BuildMessagePacket(ref _message);

            for (_i = 0; _i < _message.Buffer.Length; _i++)
            {
                _parseResult = _parser.ParseResponseEvent(_message.Buffer[_i], out _parsedMessage);
            }

            Assert.AreEqual(FlParseState.ParseOk, _parseResult);
            Assert.AreEqual(FlMessageType.Text, _parsedMessage.MessageType);
            Assert.AreEqual(FlMessageCategory.Response, _parsedMessage.MessageCategory);
            Assert.AreEqual(FlMessageId.ReadHardwareVersion, _parsedMessage.MessageId);
            Assert.IsNotNull(_parsedMessage.Arguments);
            Assert.AreEqual(3, _parsedMessage.Arguments.Count);
            Assert.AreEqual("1", (string)_parsedMessage.Arguments[0]);
            Assert.AreEqual("0", (string)_parsedMessage.Arguments[1]);
            Assert.AreEqual("a.1.2.3", (string)_parsedMessage.Arguments[2]);
        }
Esempio n. 6
0
        public void TestResetResponseParse()
        {
            _message = new FlTxtMessageResponse()
            {
                MessageId = FlMessageId.Reset,
                Arguments = new List <object>()
                {
                    1, // DeviceID,
                    0  // Error
                }
            };

            FlTxtPacketBuilder.BuildMessagePacket(ref _message);

            for (_i = 0; _i < _message.Buffer.Length; _i++)
            {
                _parseResult = _parser.ParseResponseEvent(_message.Buffer[_i], out _parsedMessage);
            }

            Assert.AreEqual(FlParseState.ParseOk, _parseResult);
            Assert.AreEqual(FlMessageType.Text, _parsedMessage.MessageType);
            Assert.AreEqual(FlMessageCategory.Response, _parsedMessage.MessageCategory);
            Assert.AreEqual(FlMessageId.Reset, _parsedMessage.MessageId);
            Assert.IsNotNull(_parsedMessage.Arguments);
            Assert.AreEqual(2, _parsedMessage.Arguments.Count);
            Assert.AreEqual("1", (string)_parsedMessage.Arguments[0]);
            Assert.AreEqual("0", (string)_parsedMessage.Arguments[1]);
        }
        private void AppTxtWriteGpio()
        {
            if (CheckStartStatus() != true)
            {
                return;
            }

            IFlMessage message = new FlTxtMessageCommand()
            {
                MessageId = FlMessageId.WriteGpio,
                Arguments = new List <object>()
                {
                    "1", // DeviceID
                    "1", // GPIO number
                    "1"  // GPIO value
                }
            };

            FlTxtPacketBuilder.BuildMessagePacket(ref message);

            _hostSimul.ResponseReceived = false;
            _hostSimul.SendPacket(message.Buffer);

            WaitForResponse();
        }
Esempio n. 8
0
        public void TestReadFirmwareVersionCommandParse()
        {
            _message = new FlTxtMessageCommand()
            {
                MessageId = FlMessageId.ReadFirmwareVersion,
                Arguments = new List <object>()
                {
                    "1" // DeviceID
                }
            };

            FlTxtPacketBuilder.BuildMessagePacket(ref _message);

            for (_i = 0; _i < _message.Buffer.Length; _i++)
            {
                _parseResult = _parser.ParseCommand(_message.Buffer[_i], out _parsedMessage);
            }

            Assert.AreEqual(FlParseState.ParseOk, _parseResult);
            Assert.AreEqual(FlMessageType.Text, _parsedMessage.MessageType);
            Assert.AreEqual(FlMessageCategory.Command, _parsedMessage.MessageCategory);
            Assert.AreEqual(FlMessageId.ReadFirmwareVersion, _parsedMessage.MessageId);
            Assert.IsNotNull(_parsedMessage.Arguments);
            Assert.AreEqual(1, _parsedMessage.Arguments.Count);
            Assert.AreEqual("1", (string)_parsedMessage.Arguments[0]);
        }
Esempio n. 9
0
        private IFlMessage ProcessCommand(FlTxtMessageCommand command)
        {
            TimeSpan   timeSpan;
            bool       waitTimeExpired;
            IFlMessage response = null;
            IFlMessage message  = (IFlMessage)command;

            FlTxtPacketBuilder.BuildMessagePacket(ref message);
            lock (_generalLock)
            {
                _commandQ.Add(command);
            }

            for (int i = 0; i < command.MaxTryCount; i++)
            {
                _serialPort.Write(command.Buffer, 0, command.Buffer.Length);
                if (command.SendTimeHistory == null)
                {
                    command.SendTimeHistory = new List <DateTime>();
                }
                command.SendTimeHistory.Add(DateTime.UtcNow);

                waitTimeExpired = false;
                while (true)
                {
                    response = GetResponse(command);
                    if (response != null)
                    {
                        break;
                    }

                    timeSpan = DateTime.UtcNow - command.SendTimeHistory[i];
                    if (timeSpan.TotalMilliseconds > command.ResponseWaitTimeout)
                    {
                        waitTimeExpired = true;
                        Console.WriteLine($"Response wait time expired");
                        break;
                    }
                }

                if (response != null)
                {
                    break;
                }

                if ((waitTimeExpired == true) &&
                    (command.TryInterval > 0))
                {
                    Thread.Sleep(command.TryInterval);
                }
            }

            lock (_generalLock)
            {
                _commandQ.RemoveAt(0);
            }

            return(response);
        }
Esempio n. 10
0
        public void TestFirmwareVersionCommandMessageBuild()
        {
            _message = new FlTxtMessageCommand()
            {
                MessageId = FlMessageId.ReadFirmwareVersion,
                Arguments = new List <object>()
                {
                    "1" // DeviceID
                }
            };

            FlTxtPacketBuilder.BuildMessagePacket(ref _message);

            commandString  = "RFVER 1\n";
            expectedPacket = Encoding.ASCII.GetBytes(commandString);

            CollectionAssert.AreEqual(expectedPacket, _message.Buffer, "Result packet should be matched.");
        }
Esempio n. 11
0
        public void TestResetResponseMessageBuild()
        {
            _message = new FlTxtMessageResponse()
            {
                MessageId = FlMessageId.Reset,
                Arguments = new List <object>()
                {
                    1, // DeviceID,
                    0  // Error
                }
            };

            FlTxtPacketBuilder.BuildMessagePacket(ref _message);

            commandString  = "RESET 1,0\n";
            expectedPacket = Encoding.ASCII.GetBytes(commandString);

            CollectionAssert.AreEqual(expectedPacket, _message.Buffer, "Result packet should be matched.");
        }
Esempio n. 12
0
        public void TestBootModeCommandMessageBuild()
        {
            _message = new FlTxtMessageCommand()
            {
                MessageId = FlMessageId.BootMode,
                Arguments = new List <object>()
                {
                    "1", // DeviceID
                    "1"  // Bootloader
                }
            };

            FlTxtPacketBuilder.BuildMessagePacket(ref _message);

            commandString  = "BMODE 1,1\n";
            expectedPacket = Encoding.ASCII.GetBytes(commandString);

            CollectionAssert.AreEqual(expectedPacket, _message.Buffer, "Result packet should be matched.");
        }
Esempio n. 13
0
        public void TestReadTempemperatureAndHumidityCommandMessageBuild()
        {
            _message = new FlTxtMessageCommand()
            {
                MessageId = FlMessageId.ReadTempAndHum,
                Arguments = new List <object>()
                {
                    "1", // DeviceID
                    "3"  // Sensor number
                }
            };

            FlTxtPacketBuilder.BuildMessagePacket(ref _message);

            commandString  = "RTAH 1,3\n";
            expectedPacket = Encoding.ASCII.GetBytes(commandString);

            CollectionAssert.AreEqual(expectedPacket, _message.Buffer, "Result packet should be matched.");
        }
Esempio n. 14
0
        public void TestReadGpioCommandMessageBuild()
        {
            _message = new FlTxtMessageCommand()
            {
                MessageId = FlMessageId.ReadGpio,
                Arguments = new List <object>()
                {
                    "1", // DeviceID
                    "2"  // GPIO number
                }
            };

            FlTxtPacketBuilder.BuildMessagePacket(ref _message);

            commandString  = "RGPIO 1,2\n";
            expectedPacket = Encoding.ASCII.GetBytes(commandString);

            CollectionAssert.AreEqual(expectedPacket, _message.Buffer, "Result packet should be matched.");
        }
Esempio n. 15
0
        public void TestFirmwareVersionResponseMessageBuild()
        {
            _message = new FlTxtMessageResponse()
            {
                MessageId = FlMessageId.ReadFirmwareVersion,
                Arguments = new List <object>()
                {
                    "1",      // DeviceID,
                    "0",      // Error
                    "a.2.3.4" // Hardware version
                }
            };

            FlTxtPacketBuilder.BuildMessagePacket(ref _message);

            commandString  = "RFVER 1,0,a.2.3.4\n";
            expectedPacket = Encoding.ASCII.GetBytes(commandString);

            CollectionAssert.AreEqual(expectedPacket, _message.Buffer, "Result packet should be matched.");
        }
Esempio n. 16
0
        public void TestReadTemperatureResponseMessageBuild()
        {
            _message = new FlTxtMessageResponse()
            {
                MessageId = FlMessageId.ReadTemperature,
                Arguments = new List <object>()
                {
                    1,             // DeviceID,
                    0,             // Error
                    1,             // Sensor number
                    $"{12.3:0.00}" // Temperature value
                }
            };

            FlTxtPacketBuilder.BuildMessagePacket(ref _message);

            commandString  = "RTEMP 1,0,1,12.30\n";
            expectedPacket = Encoding.ASCII.GetBytes(commandString);

            CollectionAssert.AreEqual(expectedPacket, _message.Buffer, "Result packet should be matched.");
        }
Esempio n. 17
0
        public void TestReadHumidityResponseMessageBuild()
        {
            _message = new FlTxtMessageResponse()
            {
                MessageId = FlMessageId.ReadHumidity,
                Arguments = new List <object>()
                {
                    1,             // DeviceID,
                    0,             // Error
                    2,             // Sensor number
                    $"{23.4:0.00}" // Humidity value
                }
            };

            FlTxtPacketBuilder.BuildMessagePacket(ref _message);

            commandString  = "RHUM 1,0,2,23.40\n";
            expectedPacket = Encoding.ASCII.GetBytes(commandString);

            CollectionAssert.AreEqual(expectedPacket, _message.Buffer, "Result packet should be matched.");
        }
        private void AppWriteGpio()
        {
            IFlMessage message = null;

            if (_flMsgMgr.MessageType == FwMessageType.Text)
            {
                message = new FlTxtMessageCommand()
                {
                    MessageId = FlMessageId.WriteGpio,
                    Arguments = new List <object>()
                    {
                        _deviceId.ToString(), // DeviceID
                        "3",                  // GPIO number
                        "1"                   // GPIO value
                    }
                };
                FlTxtPacketBuilder.BuildMessagePacket(ref message);
            }
            else if (_flMsgMgr.MessageType == FwMessageType.Binary)
            {
                IFlBinMessage binMsg = new FlBinMessageCommand()
                {
                    MessageId = FlMessageId.WriteGpio,
                    Arguments = new List <object>()
                    {
                        (byte)3,
                        (byte)1
                    }
                };
                binMsg.Header.device_id          = _deviceId;
                binMsg.Header.flag1.sequence_num = GetNextSeqNum();

                message = binMsg;
                FlBinPacketBuilder.BuildMessagePacket(ref message);
            }

            _flMsgMgr.EnqueueCommand(message);
        }
        private void AppTxtFwVer()
        {
            if (CheckStartStatus() != true)
            {
                return;
            }

            IFlMessage message = new FlTxtMessageCommand()
            {
                MessageId = FlMessageId.ReadFirmwareVersion,
                Arguments = new List <object>()
                {
                    "1" // DeviceID
                }
            };

            FlTxtPacketBuilder.BuildMessagePacket(ref message);

            _hostSimul.ResponseReceived = false;
            _hostSimul.SendPacket(message.Buffer);

            WaitForResponse();
        }
        private void AppBootBmode()
        {
            IFlMessage message = null;

            if (_flMsgMgr.MessageType == FwMessageType.Text)
            {
                message = new FlTxtMessageCommand()
                {
                    MessageId = FlMessageId.BootMode,
                    Arguments = new List <object>()
                    {
                        _deviceId.ToString(),                         // DeviceID
                            FlConstant.FL_BMODE_BOOTLOADER.ToString() // Bootloader
                    }
                };
                FlTxtPacketBuilder.BuildMessagePacket(ref message);
            }
            else if (_flMsgMgr.MessageType == FwMessageType.Binary)
            {
                IFlBinMessage binMsg = new FlBinMessageCommand()
                {
                    MessageId = FlMessageId.BootMode,
                    Arguments = new List <object>()
                    {
                        (byte)FlConstant.FL_BMODE_BOOTLOADER
                    }
                };
                binMsg.Header.device_id          = _deviceId;
                binMsg.Header.flag1.sequence_num = GetNextSeqNum();

                message = binMsg;
                FlBinPacketBuilder.BuildMessagePacket(ref message);
            }

            _flMsgMgr.EnqueueCommand(message);
        }
        private void AppTxtBootBmode()
        {
            if (CheckStartStatus() != true)
            {
                return;
            }

            IFlMessage message = new FlTxtMessageCommand()
            {
                MessageId = FlMessageId.BootMode,
                Arguments = new List <object>()
                {
                    "1", // DeviceID
                    "1"  // Bootloader
                }
            };

            FlTxtPacketBuilder.BuildMessagePacket(ref message);

            _hostSimul.ResponseReceived = false;
            _hostSimul.SendPacket(message.Buffer);

            WaitForResponse();
        }