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]); }
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]); }
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); }
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]); }
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(); }
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]); }
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); }
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."); }
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."); }
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."); }
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."); }
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."); }
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."); }
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."); }
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(); }