public void TestReadHardwareVersionResponseParse() { _binMsg = new FlBinMessageResponse() { MessageId = FlMessageId.ReadHardwareVersion, Arguments = new List <object>() { "a.1.2.3" // Hardware version } }; _binMsg.Header.device_id = 1; _binMsg.Header.flag1.sequence_num = 1; _message = _binMsg; FlBinPacketBuilder.BuildMessagePacket(ref _message); _parser.Role = FlParserRole.Host; for (_i = 0; _i < _message.Buffer.Length; _i++) { _parseResult = _parser.Parse(_message.Buffer[_i], out _parsedMessage); } _parsedBinMsg = (IFlBinMessage)_parsedMessage; Assert.AreEqual(FlParseState.ParseOk, _parseResult); Assert.AreEqual(FlMessageType.Binary, _parsedBinMsg.MessageType); Assert.AreEqual(FlMessageCategory.Response, _parsedBinMsg.MessageCategory); Assert.AreEqual((uint)1, _parsedBinMsg.Header.device_id); Assert.AreEqual((byte)1, _parsedBinMsg.Header.flag1.sequence_num); Assert.AreEqual(FlMessageId.ReadHardwareVersion, _parsedBinMsg.MessageId); Assert.AreEqual(1, _parsedBinMsg.Arguments.Count); Assert.AreEqual("a.1.2.3", (string)_parsedBinMsg.Arguments[0]); }
private void AppBinWriteGpio() { if (CheckStartStatus() != true) { return; } IFlBinMessage binMsg = new FlBinMessageCommand() { MessageId = FlMessageId.WriteGpio, Arguments = new List <object>() { (byte)1, (byte)1 } }; binMsg.Header.device_id = 1; binMsg.Header.flag1.sequence_num = _hostSimul.GetNextSeqNum(); IFlMessage message = binMsg; FlBinPacketBuilder.BuildMessagePacket(ref message); _hostSimul.ResponseReceived = false; _hostSimul.SendPacket(message.Buffer); WaitForResponse(); }
public void TestReadFirmwareVersionCommandParse() { _binMsg = new FlBinMessageCommand() { MessageId = FlMessageId.ReadFirmwareVersion }; _binMsg.Header.device_id = 1; _binMsg.Header.flag1.sequence_num = 2; _message = _binMsg; FlBinPacketBuilder.BuildMessagePacket(ref _message); _parser.Role = FlParserRole.Device; for (_i = 0; _i < _message.Buffer.Length; _i++) { _parseResult = _parser.Parse(_message.Buffer[_i], out _parsedMessage); } _parsedBinMsg = (IFlBinMessage)_parsedMessage; Assert.AreEqual(FlParseState.ParseOk, _parseResult); Assert.AreEqual(FlMessageType.Binary, _parsedBinMsg.MessageType); Assert.AreEqual(FlMessageCategory.Command, _parsedBinMsg.MessageCategory); Assert.AreEqual((uint)1, _parsedBinMsg.Header.device_id); Assert.AreEqual((byte)2, _parsedBinMsg.Header.flag1.sequence_num); Assert.AreEqual(FlMessageId.ReadFirmwareVersion, _parsedBinMsg.MessageId); }
public void TestBootModeCommandMessageBuild() { _binMsg = new FlBinMessageCommand() { MessageId = FlMessageId.BootMode, Arguments = new List <object>() { (byte)1 // Boot mode(Bootloader) } }; _binMsg.Header.device_id = 1; _binMsg.Header.flag1.sequence_num = 1; _message = _binMsg; FlBinPacketBuilder.BuildMessagePacket(ref _message); _parser.Role = FlParserRole.Device; for (_i = 0; _i < _message.Buffer.Length; _i++) { _parseResult = _parser.Parse(_message.Buffer[_i], out _parsedMessage); } _parsedBinMsg = (IFlBinMessage)_parsedMessage; Assert.AreEqual(FlParseState.ParseOk, _parseResult); Assert.AreEqual(FlMessageType.Binary, _parsedBinMsg.MessageType); Assert.AreEqual(FlMessageCategory.Command, _parsedBinMsg.MessageCategory); Assert.AreEqual((uint)1, _parsedBinMsg.Header.device_id); Assert.AreEqual((byte)1, _parsedBinMsg.Header.flag1.sequence_num); Assert.AreEqual(FlMessageId.BootMode, _parsedBinMsg.MessageId); Assert.AreEqual(1, _parsedBinMsg.Arguments.Count); Assert.AreEqual(1, (byte)_parsedBinMsg.Arguments[0]); }
public unsafe void TestResetOkResponseMessageBuild() { _binMsg = new FlBinMessageResponse() { MessageId = FlMessageId.Reset, }; _binMsg.Header.device_id = 1; _binMsg.Header.flag1.sequence_num = 2; _message = _binMsg; FlBinPacketBuilder.BuildMessagePacket(ref _message); _parser.Role = FlParserRole.Host; for (_i = 0; _i < _message.Buffer.Length; _i++) { _parseResult = _parser.Parse(_message.Buffer[_i], out _parsedMessage); } _parsedBinMsg = (IFlBinMessage)_parsedMessage; Assert.AreEqual(FlParseState.ParseOk, _parseResult); Assert.AreEqual(FlMessageType.Binary, _parsedBinMsg.MessageType); Assert.AreEqual(FlMessageCategory.Response, _parsedBinMsg.MessageCategory); Assert.AreEqual((uint)1, _parsedBinMsg.Header.device_id); Assert.AreEqual((byte)2, _parsedBinMsg.Header.flag1.sequence_num); Assert.AreEqual(FlMessageId.Reset, _parsedBinMsg.MessageId); Assert.AreEqual((byte)0, _parsedBinMsg.Header.flag2.error); }
public void TestReadTemperatureHumidityCommandMessageBuild() { _binMsg = new FlBinMessageCommand() { MessageId = FlMessageId.ReadTempAndHum, Arguments = new List <object>() { (byte)3 // Sensor number } }; _binMsg.Header.device_id = 1; _binMsg.Header.flag1.sequence_num = 7; _message = _binMsg; FlBinPacketBuilder.BuildMessagePacket(ref _message); _parser.Role = FlParserRole.Device; for (_i = 0; _i < _message.Buffer.Length; _i++) { _parseResult = _parser.Parse(_message.Buffer[_i], out _parsedMessage); } _parsedBinMsg = (IFlBinMessage)_parsedMessage; Assert.AreEqual(FlParseState.ParseOk, _parseResult); Assert.AreEqual(FlMessageType.Binary, _parsedBinMsg.MessageType); Assert.AreEqual(FlMessageCategory.Command, _parsedBinMsg.MessageCategory); Assert.AreEqual((uint)1, _parsedBinMsg.Header.device_id); Assert.AreEqual((byte)7, _parsedBinMsg.Header.flag1.sequence_num); Assert.AreEqual(FlMessageId.ReadTempAndHum, _parsedBinMsg.MessageId); Assert.AreEqual(1, _parsedBinMsg.Arguments.Count); Assert.AreEqual(3, (byte)_parsedBinMsg.Arguments[0]); }
public void TestReadHumidityOkResponseMessageBuild() { _binMsg = new FlBinMessageResponse() { MessageId = FlMessageId.ReadHumidity, Arguments = new List <object>() { (byte)2, // Sensor number (double)23.4 // Humidity } }; _binMsg.Header.device_id = 1; _binMsg.Header.flag1.sequence_num = 6; _message = _binMsg; FlBinPacketBuilder.BuildMessagePacket(ref _message); _parser.Role = FlParserRole.Host; for (_i = 0; _i < _message.Buffer.Length; _i++) { _parseResult = _parser.Parse(_message.Buffer[_i], out _parsedMessage); } _parsedBinMsg = (IFlBinMessage)_parsedMessage; Assert.AreEqual(FlParseState.ParseOk, _parseResult); Assert.AreEqual(FlMessageType.Binary, _parsedBinMsg.MessageType); Assert.AreEqual(FlMessageCategory.Response, _parsedBinMsg.MessageCategory); Assert.AreEqual((uint)1, _parsedBinMsg.Header.device_id); Assert.AreEqual((byte)6, _parsedBinMsg.Header.flag1.sequence_num); Assert.AreEqual(FlMessageId.ReadHumidity, _parsedBinMsg.MessageId); Assert.AreEqual(2, _parsedBinMsg.Arguments.Count); Assert.AreEqual(2, (byte)_parsedBinMsg.Arguments[0]); Assert.AreEqual(23.4, (double)_parsedBinMsg.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); }
private IFlMessage ProcessCommand(FlBinMessageCommand command) { TimeSpan timeSpan; bool waitTimeExpired; IFlMessage response = null; IFlMessage message = (IFlMessage)command; FlBinPacketBuilder.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); }
private void AppBinFwVer() { IFlBinMessage binMsg = new FlBinMessageCommand() { MessageId = FlMessageId.ReadFirmwareVersion }; binMsg.Header.device_id = 1; binMsg.Header.flag1.sequence_num = _hostSimul.GetNextSeqNum(); IFlMessage message = binMsg; FlBinPacketBuilder.BuildMessagePacket(ref message); _hostSimul.ResponseReceived = false; _hostSimul.SendPacket(message.Buffer); WaitForResponse(); }
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 AppBinHwVer() { if (CheckStartStatus() != true) { return; } IFlBinMessage binMsg = new FlBinMessageCommand() { MessageId = FlMessageId.ReadHardwareVersion }; binMsg.Header.device_id = 1; binMsg.Header.flag1.sequence_num = _hostSimul.GetNextSeqNum(); IFlMessage message = binMsg; FlBinPacketBuilder.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); }