public void RequestFirmware() { const int majorVersion = 5; const int minorVersion = 1; const string Name = "Arduïno Firmata"; var connection = new MockSerialConnection(); var session = CreateFirmataSession(connection); connection.EnqueueRequestAndResponse(new byte[] { 0xF0, 0x79, 0xF7 }, new byte[] { 0xF0, 0x79, majorVersion, minorVersion }); connection.EnqueueResponse(Name.To14BitIso()); connection.EnqueueResponse(0xF7); session.RequestFirmware(); Assert.AreEqual(1, _messagesReceived.Count, "Message event error"); IFirmataMessage message = _messagesReceived.Dequeue(); //Assert.AreEqual(MessageType.FirmwareResponse, message.Type); Assert.IsInstanceOfType(message, typeof(FirmataMessage <Firmware>)); var firmware = (Firmware)message.Value; Assert.AreEqual(firmware.MajorVersion, majorVersion); Assert.AreEqual(firmware.MinorVersion, minorVersion); Assert.AreEqual(firmware.Name, Name); }
private void DeliverMessage(IFirmataMessage message) { _messageHeader._processMessage = null; lock (_messageHeader._receivedMessageList) { if (_messageHeader._receivedMessageList.Count >= MessageHeader.MaxQueuelength) { throw new OverflowException(global::Arduino.Firmata.Messages.OverflowEx_MsgBufferFull); } // Remove all unprocessed and timed-out messages. while (_messageHeader._receivedMessageList.Count > 0 && ((DateTime.UtcNow - _messageHeader._receivedMessageList.First.Value.Time).TotalMilliseconds > _messageHeader.TimeOut)) { _messageHeader._receivedMessageList.RemoveFirst(); } _messageHeader._receivedMessageList.AddLast(message); Monitor.PulseAll(_messageHeader._receivedMessageList); } _messageHeader._arduinoSession.OnMessageReceivedHandler(new FirmataMessageEventArgs(message)); //if (MessageReceived != null && message.Type != MessageType.I2CReply) // MessageReceived(this, new FirmataMessageEventArgs(message)); }
public void ResetBoard() { var connection = new MockSerialConnection(); var session = CreateFirmataSession(connection); connection.EnqueueRequestAndResponse(new byte[] { 0xFF }, new byte[] { 0xF9, 2, 3 }); session.ResetBoard(); Assert.AreEqual(1, _messagesReceived.Count); IFirmataMessage message = _messagesReceived.Dequeue(); //Assert.AreEqual(MessageType.ProtocolVersion, message.Type); Assert.IsInstanceOfType(message, typeof(FirmataMessage <ProtocolVersion>)); var version = (ProtocolVersion)message.Value; Assert.AreEqual(2, version.Major); Assert.AreEqual(3, version.Minor); }
public void RequestBoardAnalogMapping() { var connection = new MockSerialConnection(); var session = CreateFirmataSession(connection); connection.EnqueueRequestAndResponse(new byte[] { 0xF0, 0x69, 0xF7 }, 0xF0, 0x6A); connection.EnqueueResponse(0x0F); connection.EnqueueResponse(0xF7); session.RequestBoardAnalogMapping(); IFirmataMessage message = _messagesReceived.Dequeue(); //Assert.AreEqual(MessageType.AnalogMappingResponse, message.Type); Assert.IsInstanceOfType(message, typeof(FirmataMessage <BoardAnalogMapping>)); BoardAnalogMapping mapping = (BoardAnalogMapping)message.Value; Assert.AreEqual(1, mapping.PinMappings.Length); Assert.AreEqual(0, mapping.PinMappings[0].PinNumber); Assert.AreEqual(15, mapping.PinMappings[0].Channel); }
public void RequestPinState() { var connection = new MockSerialConnection(); var session = CreateFirmataSession(connection); connection.EnqueueRequestAndResponse(new byte[] { 0xF0, 0x6D, 0x01, 0xF7 }, 0xF0, 0x6E); // Pin 1 Digital Output mode, value = 0 connection.EnqueueResponse(0x01, 0x01, 0x00); connection.EnqueueResponse(0xF7); session.RequestPinState(1); IFirmataMessage message = _messagesReceived.Dequeue(); //Assert.AreEqual(MessageType.PinStateResponse, message.Type); Assert.IsInstanceOfType(message, typeof(FirmataMessage <PinState>)); PinState state = (PinState)message.Value; Assert.AreEqual(1, state.PinNumber); Assert.AreEqual(PinMode.DigitalOutput, state.Mode); Assert.AreEqual(0, state.Value); }
public void RequestBoardCapability() { var connection = new MockSerialConnection(); var session = CreateFirmataSession(connection); // DIGITAL INPUT/DIGITAL OUTPUT/ANALOG/PWM/SERVO, 0/1/2/3/4 connection.EnqueueRequestAndResponse(new byte[] { 0xF0, 0x6B, 0xF7 }, 0xF0, 0x6C); connection.EnqueueResponse(2, 8, 0x7F); connection.EnqueueResponse(0, 127, 1, 127, 0x7F); connection.EnqueueResponse(0xF7); session.RequestBoardCapability(); IFirmataMessage message = _messagesReceived.Dequeue(); //Assert.AreEqual(MessageType.CapabilityResponse, message.Type); Assert.IsInstanceOfType(message, typeof(FirmataMessage <BoardCapability>)); BoardCapability capability = (BoardCapability)message.Value; Assert.AreEqual(2, capability.Pins.Length); Assert.AreEqual(0, capability.Pins[0].PinNumber); Assert.AreEqual(false, capability.Pins[0].DigitalInput); Assert.AreEqual(false, capability.Pins[0].DigitalOutput); Assert.AreEqual(true, capability.Pins[0].Analog); Assert.AreEqual(8, capability.Pins[0].AnalogResolution); Assert.AreEqual(false, capability.Pins[0].Pwm); Assert.AreEqual(0, capability.Pins[0].PwmResolution); Assert.AreEqual(false, capability.Pins[0].Servo); Assert.AreEqual(0, capability.Pins[0].ServoResolution); Assert.AreEqual(1, capability.Pins[1].PinNumber); Assert.AreEqual(true, capability.Pins[1].DigitalInput); Assert.AreEqual(true, capability.Pins[1].DigitalOutput); Assert.AreEqual(false, capability.Pins[1].Analog); Assert.AreEqual(0, capability.Pins[1].AnalogResolution); Assert.AreEqual(false, capability.Pins[1].Pwm); Assert.AreEqual(0, capability.Pins[1].PwmResolution); Assert.AreEqual(false, capability.Pins[1].Servo); Assert.AreEqual(0, capability.Pins[1].ServoResolution); }
internal FirmataMessageEventArgs(IFirmataMessage value) { Value = value; }