Пример #1
0
        public void GetBoardCapability()
        {
            var connection = new MockSerialConnection();
            var session    = CreateFirmataSession(connection);

            // DIGITAL INPUT/DIGITAL OUTPUT/ANALOG/PWM/SERVO/I2C, 0/1/2/3/4/6
            connection.EnqueueRequestAndResponse(new byte[] { 0xF0, 0x6B, 0xF7 }, 0xF0, 0x6C);
            connection.EnqueueResponse(0, 1, 1, 1, 3, 10, 6, 1, 0x7F);
            connection.EnqueueResponse(0xF7);

            BoardCapability capability = session.GetBoardCapability();

            Assert.AreEqual(1, capability.Pins.Length);

            Assert.AreEqual(0, capability.Pins[0].PinNumber);
            Assert.AreEqual(true, capability.Pins[0].DigitalInput);
            Assert.AreEqual(true, capability.Pins[0].DigitalOutput);
            Assert.AreEqual(true, capability.Pins[0].Pwm);
            Assert.AreEqual(10, capability.Pins[0].PwmResolution);
            Assert.AreEqual(true, capability.Pins[0].I2C);

            Assert.AreEqual(false, capability.Pins[0].Analog);
            Assert.AreEqual(0, capability.Pins[0].AnalogResolution);
            Assert.AreEqual(false, capability.Pins[0].Servo);
            Assert.AreEqual(0, capability.Pins[0].ServoResolution);
        }
Пример #2
0
        public void GetBoardAnalogMappingAsync()
        {
            var connection = new MockSerialConnection();
            var session    = CreateFirmataSession(connection);

            connection.EnqueueRequestAndResponse(new byte[] { 0xF0, 0x69, 0xF7 }, 0xF0, 0x6A);
            connection.EnqueueResponse(0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x7F, 0x7F);
            connection.EnqueueResponse(0xF7);

            BoardAnalogMapping mapping = session.GetBoardAnalogMappingAsync().Result;

            Assert.AreEqual(6, mapping.PinMappings.Length);
            Assert.AreEqual(0, mapping.PinMappings[0].PinNumber);
            Assert.AreEqual(0, mapping.PinMappings[0].Channel);
            Assert.AreEqual(1, mapping.PinMappings[1].PinNumber);
            Assert.AreEqual(1, mapping.PinMappings[1].Channel);
            Assert.AreEqual(2, mapping.PinMappings[2].PinNumber);
            Assert.AreEqual(2, mapping.PinMappings[2].Channel);
            Assert.AreEqual(3, mapping.PinMappings[3].PinNumber);
            Assert.AreEqual(3, mapping.PinMappings[3].Channel);
            Assert.AreEqual(4, mapping.PinMappings[4].PinNumber);
            Assert.AreEqual(4, mapping.PinMappings[4].Channel);
            Assert.AreEqual(5, mapping.PinMappings[5].PinNumber);
            Assert.AreEqual(5, mapping.PinMappings[5].Channel);
        }
        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);
        }
Пример #4
0
        public void ConfigureServo_PinNumber_Is128()
        {
            var connection = new MockSerialConnection();
            var session    = CreateServoSession(connection);

            connection.EnqueueRequestAndResponse(new byte[] { 0xF0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00 });
            session.ConfigureServo(128, 0, 0);
        }
Пример #5
0
        public void SetDigitalPin_Level_PinNumber_Argument_Is15()
        {
            var connection = new MockSerialConnection();
            var session    = CreateFirmataSession(connection);

            connection.EnqueueRequestAndResponse(new byte[] { 0xEF, 0x00, 0x00 });
            session.SetDigitalPin(15, 0);
        }
Пример #6
0
        public void SetDigitalPin_Level_PinNumber_Argument_Is0_Level_Argument_Is0xFFFF()
        {
            var connection = new MockSerialConnection();
            var session    = CreateFirmataSession(connection);

            connection.EnqueueRequestAndResponse(new byte[] { 0xF0, 0x6F, 0x00, 0x7F, 0x7F, 0x03, 0xF7 });
            session.SetDigitalPin(0, 0xFFFF);
        }
Пример #7
0
        public void SetDigitalPort_Pins_Argument_IsNegative()
        {
            var connection = new MockSerialConnection();
            var session    = CreateFirmataSession(connection);

            connection.EnqueueRequestAndResponse(new byte[] { 0x90, 0x00, 0x00 });
            session.SetDigitalPort(0, -1);
        }
Пример #8
0
        public void SetDigitalPort_PortNumber_Is15_Pins_Is255()
        {
            var connection = new MockSerialConnection();
            var session    = CreateFirmataSession(connection);

            connection.EnqueueRequestAndResponse(new byte[] { 0x9F, 0x7F, 0x01 });
            session.SetDigitalPort(15, 255);
        }
Пример #9
0
        public void SetDigitalReportMode_PortNumber_Is0_Disable()
        {
            var connection = new MockSerialConnection();
            var session    = CreateFirmataSession(connection);

            connection.EnqueueRequestAndResponse(new byte[] { 0xD0, 0x00 });
            session.SetDigitalReportMode(0, false);
        }
Пример #10
0
        public void SetDigitalReportMode_PortNumber_Is1_Enable()
        {
            var connection = new MockSerialConnection();
            var session    = CreateFirmataSession(connection);

            connection.EnqueueRequestAndResponse(new byte[] { 0xD1, 0x01 });
            session.SetDigitalReportMode(1, true);
        }
Пример #11
0
        public void SetAnalogReportMode_Channel_Is0_Enable()
        {
            var connection = new MockSerialConnection();
            var session    = CreateFirmataSession(connection);

            connection.EnqueueRequestAndResponse(new byte[] { 0xC0, 0x01 });
            session.SetAnalogReportMode(0, true);
        }
Пример #12
0
        public void SetAnalogReportMode_Channel_Is15_Disable()
        {
            var connection = new MockSerialConnection();
            var session    = CreateFirmataSession(connection);

            connection.EnqueueRequestAndResponse(new byte[] { 0xCF, 0x00 });
            session.SetAnalogReportMode(15, false);
        }
Пример #13
0
        public void SetSamplingInterval_Interval_Is0x3FFF()
        {
            var connection = new MockSerialConnection();
            var session    = CreateFirmataSession(connection);

            connection.EnqueueRequestAndResponse(new byte[] { 0xF0, 0x7A, 0x7F, 0x7F, 0xF7 });
            session.SetSamplingInterval(0x3FFF);
        }
Пример #14
0
        public void SetDigitalPinMode_SetPin0ToDigitalOutput()
        {
            var connection = new MockSerialConnection();
            var session    = CreateFirmataSession(connection);

            connection.EnqueueRequestAndResponse(new byte[] { 0xF4, 0x00, (byte)PinMode.DigitalOutput });
            session.SetDigitalPinMode(0, PinMode.DigitalOutput);
        }
Пример #15
0
        public void SetDigitalPort_PortNumber_Is0_Pins_Is0()
        {
            var connection = new MockSerialConnection();
            var session    = CreateFirmataSession(connection);

            connection.EnqueueRequestAndResponse(new byte[] { 0x90, 0x00, 0x00 });
            session.SetDigitalPort(0, 0);
        }
Пример #16
0
        public void SetDigitalPinMode_PinNumber_Is128()
        {
            var connection = new MockSerialConnection();
            var session    = CreateFirmataSession(connection);

            connection.EnqueueRequestAndResponse(new byte[] { 0xF4, 0x00, (byte)PinMode.DigitalInput });
            session.SetDigitalPinMode(128, PinMode.DigitalInput);
        }
Пример #17
0
        public void SetDigitalPinMode_SetPin127ToAnalog()
        {
            var connection = new MockSerialConnection();
            var session    = CreateFirmataSession(connection);

            connection.EnqueueRequestAndResponse(new byte[] { 0xF4, 0x7F, (byte)PinMode.AnalogInput });
            session.SetDigitalPinMode(127, PinMode.AnalogInput);
        }
Пример #18
0
        public void ConfigureServo_MaxPulse_IsNegative()
        {
            var connection = new MockSerialConnection();
            var session = CreateServoSession(connection);

            connection.EnqueueRequestAndResponse(new byte[] { 0xF0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7 });
            session.ConfigureServo(15, 0, -1);
        }
Пример #19
0
        public void SetI2CReadInterval_Interval_Is0x3FFF()
        {
            var connection = new MockSerialConnection();
            var session = CreateFirmataSession(connection);

            connection.EnqueueRequestAndResponse(new byte[] { 0xF0, 0x78, 0x7F, 0x7F, 0xF7 });
            session.SetI2CReadInterval(0x3FFF);
        }
Пример #20
0
        public void ConfigureServo_PinNumber_Is128()
        {
            var connection = new MockSerialConnection();
            var session = CreateServoSession(connection);

            connection.EnqueueRequestAndResponse(new byte[] { 0xF0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00 });
            session.ConfigureServo(128, 0, 0);
        }
Пример #21
0
        public void ConfigureServo_MinPulse_Is0x4000()
        {
            var connection = new MockSerialConnection();
            var session = CreateServoSession(connection);

            connection.EnqueueRequestAndResponse(new byte[] { 0xF0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00 });
            session.ConfigureServo(0, 0x4000, 0);
        }
Пример #22
0
        public void ConfigureServo_MaxPulse_IsNegative()
        {
            var connection = new MockSerialConnection();
            var session    = CreateServoSession(connection);

            connection.EnqueueRequestAndResponse(new byte[] { 0xF0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7 });
            session.ConfigureServo(15, 0, -1);
        }
Пример #23
0
        public void ConfigureServo_MinPulse_Is0x4000()
        {
            var connection = new MockSerialConnection();
            var session    = CreateServoSession(connection);

            connection.EnqueueRequestAndResponse(new byte[] { 0xF0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00 });
            session.ConfigureServo(0, 0x4000, 0);
        }
Пример #24
0
        public void ConfigureServo_MinPulse_EQ_MaxPulse()
        {
            var connection = new MockSerialConnection();
            var session    = CreateServoSession(connection);

            connection.EnqueueRequestAndResponse(new byte[] { 0xF0, 0x70, 0x01, 0x01, 0x02, 0x01, 0x02, 0xF7 });
            session.ConfigureServo(1, 257, 257);
        }
Пример #25
0
        public void SetI2CReadInterval_Interval_Is0()
        {
            var connection = new MockSerialConnection();
            var session    = CreateFirmataSession(connection);

            connection.EnqueueRequestAndResponse(new byte[] { 0xF0, 0x78, 0x00, 0x00, 0xF7 });
            session.SetI2CReadInterval(0);
        }
Пример #26
0
        public void GetProtocolVersionAsync()
        {
            var connection = new MockSerialConnection();
            var session = CreateFirmataSession(connection);

            connection.EnqueueRequestAndResponse(new byte[] { 0xF9 }, new byte[] { 0xF9, 2, 3 });
            ProtocolVersion version = session.GetProtocolVersionAsync().Result;
            Assert.AreEqual(2, version.Major);
            Assert.AreEqual(3, version.Minor);
            Assert.AreEqual(1, _messagesReceived.Count);
        }
Пример #27
0
        public void GetProtocolVersionAsync()
        {
            var connection = new MockSerialConnection();
            var session    = CreateFirmataSession(connection);

            connection.EnqueueRequestAndResponse(new byte[] { 0xF9 }, new byte[] { 0xF9, 2, 3 });
            ProtocolVersion version = session.GetProtocolVersionAsync().Result;

            Assert.AreEqual(2, version.Major);
            Assert.AreEqual(3, version.Minor);
            Assert.AreEqual(1, _messagesReceived.Count);
        }
Пример #28
0
        public void GetPinState_PinNumber_Argument_Is128()
        {
            var connection = new MockSerialConnection();
            var session    = CreateFirmataSession(connection);

            connection.EnqueueRequestAndResponse(new byte[] { 0xF0, 0x6D, 0x00, 0xF7 }, 0xF0, 0x6E);
            // Pin 0 analog mode, value = 1023
            connection.EnqueueResponse(0x00, 0x02, 0x7F, 0x07);
            connection.EnqueueResponse(0xF7);

            PinState state = session.GetPinState(128);
        }
Пример #29
0
        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);
            FirmataMessage message = _messagesReceived.Dequeue();
            Assert.AreEqual(MessageType.ProtocolVersion, message.Type);
            var version = (ProtocolVersion)message.Value;
            Assert.AreEqual(2, version.Major);
            Assert.AreEqual(3, version.Minor);
        }
Пример #30
0
        public void GetPinState_PinNumber_Argument_Is127_Returned_Pin0()
        {
            var connection = new MockSerialConnection();
            var session    = CreateFirmataSession(connection);

            connection.EnqueueRequestAndResponse(new byte[] { 0xF0, 0x6D, 0x7F, 0xF7 }, 0xF0, 0x6E);
            // Pin 0 analog mode, value = 1023
            connection.EnqueueResponse(0x00, 0x02, 0x7F, 0x07);
            connection.EnqueueResponse(0xF7);

            PinState state = session.GetPinState(127);

            Assert.AreEqual(0, state.PinNumber);
            Assert.AreEqual(PinMode.AnalogInput, state.Mode);
            Assert.AreEqual(1023U, state.Value);
        }
Пример #31
0
        public void GetPinState_PinNumber_Argument_Is127()
        {
            var connection = new MockSerialConnection();
            var session    = CreateFirmataSession(connection);

            connection.EnqueueRequestAndResponse(new byte[] { 0xF0, 0x6D, 0x7F, 0xF7 }, 0xF0, 0x6E);
            // Pin 127 PWM mode, value = 256
            connection.EnqueueResponse(0x7F, 0x03, 0x00, 0x02);
            connection.EnqueueResponse(0xF7);

            PinState state = session.GetPinState(127);

            Assert.AreEqual(127, state.PinNumber);
            Assert.AreEqual(PinMode.PwmOutput, state.Mode);
            Assert.AreEqual(256U, state.Value);
        }
Пример #32
0
        public void GetPinStateAsync()
        {
            var connection = new MockSerialConnection();
            var session    = CreateFirmataSession(connection);

            connection.EnqueueRequestAndResponse(new byte[] { 0xF0, 0x6D, 0x05, 0xF7 }, 0xF0, 0x6E);
            // Pin 5 Digital Input mode, value = 1
            connection.EnqueueResponse(0x05, 0x00, 0x01);
            connection.EnqueueResponse(0xF7);

            PinState state = session.GetPinStateAsync(5).Result;

            Assert.AreEqual(5, state.PinNumber);
            Assert.AreEqual(PinMode.DigitalInput, state.Mode);
            Assert.AreEqual(1U, state.Value);
        }
Пример #33
0
        public void GetBoardCapabilityAsync()
        {
            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, 1, 1, 1, 0x7F);
            connection.EnqueueResponse(1, 1, 3, 7, 4, 7, 0x7F);
            connection.EnqueueResponse(0xF7);

            BoardCapability capability = session.GetBoardCapabilityAsync().Result;

            Assert.AreEqual(3, capability.PinCapabilities.Length);

            Assert.AreEqual(0, capability.PinCapabilities[0].PinNumber);
            Assert.AreEqual(false, capability.PinCapabilities[0].DigitalInput);
            Assert.AreEqual(false, capability.PinCapabilities[0].DigitalOutput);
            Assert.AreEqual(true, capability.PinCapabilities[0].Analog);
            Assert.AreEqual(8, capability.PinCapabilities[0].AnalogResolution);
            Assert.AreEqual(false, capability.PinCapabilities[0].Pwm);
            Assert.AreEqual(0, capability.PinCapabilities[0].PwmResolution);
            Assert.AreEqual(false, capability.PinCapabilities[0].Servo);
            Assert.AreEqual(0, capability.PinCapabilities[0].ServoResolution);

            Assert.AreEqual(1, capability.PinCapabilities[1].PinNumber);
            Assert.AreEqual(true, capability.PinCapabilities[1].DigitalInput);
            Assert.AreEqual(true, capability.PinCapabilities[1].DigitalOutput);
            Assert.AreEqual(false, capability.PinCapabilities[1].Analog);
            Assert.AreEqual(0, capability.PinCapabilities[1].AnalogResolution);
            Assert.AreEqual(false, capability.PinCapabilities[1].Pwm);
            Assert.AreEqual(0, capability.PinCapabilities[1].PwmResolution);
            Assert.AreEqual(false, capability.PinCapabilities[1].Servo);
            Assert.AreEqual(0, capability.PinCapabilities[1].ServoResolution);

            Assert.AreEqual(2, capability.PinCapabilities[2].PinNumber);
            Assert.AreEqual(false, capability.PinCapabilities[2].DigitalInput);
            Assert.AreEqual(true, capability.PinCapabilities[2].DigitalOutput);
            Assert.AreEqual(false, capability.PinCapabilities[2].Analog);
            Assert.AreEqual(0, capability.PinCapabilities[2].AnalogResolution);
            Assert.AreEqual(true, capability.PinCapabilities[2].Pwm);
            Assert.AreEqual(7, capability.PinCapabilities[2].PwmResolution);
            Assert.AreEqual(true, capability.PinCapabilities[2].Servo);
            Assert.AreEqual(7, capability.PinCapabilities[2].ServoResolution);
        }
Пример #34
0
        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);
            FirmataMessage message = _messagesReceived.Dequeue();

            Assert.AreEqual(MessageType.ProtocolVersion, message.Type);
            var version = (ProtocolVersion)message.Value;

            Assert.AreEqual(2, version.Major);
            Assert.AreEqual(3, version.Minor);
        }
Пример #35
0
        public void RequestProtocolVersion()
        {
            var connection = new MockSerialConnection();
            var session    = CreateFirmataSession(connection);

            connection.EnqueueRequestAndResponse(new byte[] { 0xF9 }, new byte[] { 0xF9, 2, 3 });

            session.RequestProtocolVersion();

            Assert.AreEqual(1, _messagesReceived.Count, "Message event error");
            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);
        }
Пример #36
0
        public void GetFirmware()
        {
            const int    majorVersion = 3;
            const int    minorVersion = 7;
            const string Name         = "Arduino Firmata";

            var connection = new MockSerialConnection();
            var session    = new ArduinoSession(connection);

            connection.EnqueueRequestAndResponse(new byte[] { 0xF0, 0x79, 0xF7 }, new byte[] { 0xF0, 0x79, majorVersion, minorVersion });
            connection.EnqueueResponse(Name.To14BitIso());
            connection.EnqueueResponse(0xF7);

            Firmware firmware = session.GetFirmware();

            Assert.AreEqual(firmware.MajorVersion, majorVersion);
            Assert.AreEqual(firmware.MinorVersion, minorVersion);
            Assert.AreEqual(firmware.Name, Name);
        }
Пример #37
0
        public void SetDigitalPort_PortNumber_Is0_Pins_Is0()
        {
            var connection = new MockSerialConnection();
            var session = CreateFirmataSession(connection);

            connection.EnqueueRequestAndResponse(new byte[] { 0x90, 0x00, 0x00 });
            session.SetDigitalPort(0, 0);
        }
Пример #38
0
        public void AnalogStateReceived_Channel_LsbMsbOrder()
        {
            var connection = new MockSerialConnection();
            var session = CreateFirmataSession(connection);
            int eventHits = 0;

            session.AnalogStateReceived += (o, e) =>
            {
                Assert.AreEqual(1, e.Value.Channel);
                Assert.AreEqual(0x1345, e.Value.Level);
                eventHits++;
            };

            session.DigitalStateReceived += (o, e) =>
            {
                Assert.Fail("Analog Message Digital processed.");
            };

            connection.EnqueueRequestAndResponse(new byte[] { 0xC0, 0x01 }, 0xE1, 0x45, 0x26);
            session.SetAnalogReportMode(0, true);
            Assert.AreEqual(1, eventHits, "DigitalStateReceived event not hit once.");
        }
Пример #39
0
        public void GetPinState_PinNumber_Argument_Is128()
        {
            var connection = new MockSerialConnection();
            var session = CreateFirmataSession(connection);

            connection.EnqueueRequestAndResponse(new byte[] { 0xF0, 0x6D, 0x00, 0xF7 }, 0xF0, 0x6E);
            // Pin 0 analog mode, value = 1023
            connection.EnqueueResponse(0x00, 0x02, 0x7F, 0x07);
            connection.EnqueueResponse(0xF7);

            PinState state = session.GetPinState(128);
        }
Пример #40
0
        public void GetPinState_PinNumber_Argument_Is127()
        {
            var connection = new MockSerialConnection();
            var session = CreateFirmataSession(connection);

            connection.EnqueueRequestAndResponse(new byte[] { 0xF0, 0x6D, 0x7F, 0xF7 }, 0xF0, 0x6E);
            // Pin 127 PWM mode, value = 256
            connection.EnqueueResponse(0x7F, 0x03, 0x00, 0x02);
            connection.EnqueueResponse(0xF7);

            PinState state = session.GetPinState(127);

            Assert.AreEqual(127, state.PinNumber);
            Assert.AreEqual(PinMode.PwmOutput, state.Mode);
            Assert.AreEqual(256U, state.Value);
        }
Пример #41
0
        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);
            FirmataMessage message = _messagesReceived.Dequeue();

            Assert.AreEqual(MessageType.PinStateResponse, message.Type);
            PinState state = (PinState)message.Value;

            Assert.AreEqual(1, state.PinNumber);
            Assert.AreEqual(PinMode.DigitalOutput, state.Mode);
            Assert.AreEqual(0, state.Value);
        }
Пример #42
0
        public void SetDigitalPinMode_SetPin0ToDigitalOutput()
        {
            var connection = new MockSerialConnection();
            var session = CreateFirmataSession(connection);

            connection.EnqueueRequestAndResponse(new byte[] { 0xF4, 0x00, (byte)PinMode.DigitalOutput });
            session.SetDigitalPinMode(0, PinMode.DigitalOutput);
        }
Пример #43
0
        public void SetDigitalPin_Level_PinNumber_Argument_Is15()
        {
            var connection = new MockSerialConnection();
            var session = CreateFirmataSession(connection);

            connection.EnqueueRequestAndResponse(new byte[] { 0xEF, 0x00, 0x00 });
            session.SetDigitalPin(15, 0);
        }
Пример #44
0
        public void SetAnalogReportMode_Channel_Is0_Enable()
        {
            var connection = new MockSerialConnection();
            var session = CreateFirmataSession(connection);

            connection.EnqueueRequestAndResponse(new byte[] { 0xC0, 0x01 });
            session.SetAnalogReportMode(0, true);
        }
Пример #45
0
        public void SetAnalogReportMode_Channel_Is15_Disable()
        {
            var connection = new MockSerialConnection();
            var session = CreateFirmataSession(connection);

            connection.EnqueueRequestAndResponse(new byte[] { 0xCF, 0x00 });
            session.SetAnalogReportMode(15, false);
        }
Пример #46
0
        public void SetSamplingInterval_Interval_Is0()
        {
            var connection = new MockSerialConnection();
            var session = CreateFirmataSession(connection);

            connection.EnqueueRequestAndResponse(new byte[] { 0xF0, 0x7A, 0x00, 0x00, 0xF7 });
            session.SetSamplingInterval(0);
        }
Пример #47
0
        public void GetFirmware()
        {
            const int majorVersion = 3;
            const int minorVersion = 7;
            const string Name = "Arduino Firmata";

            var connection = new MockSerialConnection();
            var session = new ArduinoSession(connection);

            connection.EnqueueRequestAndResponse(new byte[] { 0xF0, 0x79, 0xF7 }, new byte[] { 0xF0, 0x79, majorVersion, minorVersion });
            connection.EnqueueResponse(Name.To14BitIso());
            connection.EnqueueResponse(0xF7);

            Firmware firmware = session.GetFirmware();
            Assert.AreEqual(firmware.MajorVersion, majorVersion);
            Assert.AreEqual(firmware.MinorVersion, minorVersion);
            Assert.AreEqual(firmware.Name, Name);
        }
Пример #48
0
        public void SetDigitalPort_Pins_Argument_IsNegative()
        {
            var connection = new MockSerialConnection();
            var session = CreateFirmataSession(connection);

            connection.EnqueueRequestAndResponse(new byte[] { 0x90, 0x00, 0x00 });
            session.SetDigitalPort(0, -1);
        }
Пример #49
0
        public void SetDigitalPin_Level_PinNumber_Argument_Is0_Level_Argument_Is0xFFFF()
        {
            var connection = new MockSerialConnection();
            var session = CreateFirmataSession(connection);

            connection.EnqueueRequestAndResponse(new byte[] { 0xF0, 0x6F, 0x00, 0x7F, 0x7F, 0x03, 0xF7 });
            session.SetDigitalPin(0, 0xFFFF);
        }
Пример #50
0
        public void SetDigitalReportMode_PortNumber_Is0_Disable()
        {
            var connection = new MockSerialConnection();
            var session = CreateFirmataSession(connection);

            connection.EnqueueRequestAndResponse(new byte[] { 0xD0, 0x00 });
            session.SetDigitalReportMode(0, false);
        }
Пример #51
0
        public void SetDigitalPinMode_SetPin127ToAnalog()
        {
            var connection = new MockSerialConnection();
            var session = CreateFirmataSession(connection);

            connection.EnqueueRequestAndResponse(new byte[] { 0xF4, 0x7F, (byte)PinMode.AnalogInput });
            session.SetDigitalPinMode(127, PinMode.AnalogInput);
        }
Пример #52
0
        public void MixedOrderResponses()
         {
             var connection = new MockSerialConnection();
             var session = CreateFirmataSession(connection, 3);

            // We get first ProtocolVersion response and then FirmwareResponse
            connection.EnqueueRequestAndResponse(new byte[] { 0xF0, 0x79, 0xF7 },
                new byte[]
                {
                    0xF9, 0x02, 0x04, 0xF0, 
                    0x79, 
                    0x01, 0x03,                    
                    0x74, 0x00, 0x65, 0x00, 0x73, 0x00, 0x74, 0x00,
                    0xF7
                });
             var f = session.GetFirmware();
             Assert.AreEqual(1, f.MajorVersion);
             Assert.AreEqual(3, f.MinorVersion);
             Assert.AreEqual("test", f.Name);
         }
Пример #53
0
        public void SetDigitalPinMode_PinNumber_Is128()
        {
            var connection = new MockSerialConnection();
            var session = CreateFirmataSession(connection);

            connection.EnqueueRequestAndResponse(new byte[] { 0xF4, 0x00, (byte)PinMode.DigitalInput });
            session.SetDigitalPinMode(128, PinMode.DigitalInput);
        }
Пример #54
0
        public void ConfigureServo_MinPulse_EQ_MaxPulse()
        {
            var connection = new MockSerialConnection();
            var session = CreateServoSession(connection);

            connection.EnqueueRequestAndResponse(new byte[] { 0xF0, 0x70, 0x01, 0x01, 0x02, 0x01, 0x02, 0xF7 });
            session.ConfigureServo(1, 257, 257);
        }
Пример #55
0
        public void GetPinStateAsync()
        {
            var connection = new MockSerialConnection();
            var session = CreateFirmataSession(connection);

            connection.EnqueueRequestAndResponse(new byte[] { 0xF0, 0x6D, 0x05, 0xF7 }, 0xF0, 0x6E);
            // Pin 5 Digital Input mode, value = 1
            connection.EnqueueResponse(0x05, 0x00, 0x01);
            connection.EnqueueResponse(0xF7);

            PinState state = session.GetPinStateAsync(5).Result;

            Assert.AreEqual(5, state.PinNumber);
            Assert.AreEqual(PinMode.DigitalInput, state.Mode);
            Assert.AreEqual(1U, state.Value);
        }
Пример #56
0
        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();
            FirmataMessage message = _messagesReceived.Dequeue();
            Assert.AreEqual(MessageType.AnalogMappingResponse, message.Type);

            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);
        }
Пример #57
0
        public void GetPinState_PinNumber_Argument_Is127_Returned_Pin0()
        {
            var connection = new MockSerialConnection();
            var session = CreateFirmataSession(connection);

            connection.EnqueueRequestAndResponse(new byte[] { 0xF0, 0x6D, 0x7F, 0xF7 }, 0xF0, 0x6E);
            // Pin 0 analog mode, value = 1023
            connection.EnqueueResponse(0x00, 0x02, 0x7F, 0x07);
            connection.EnqueueResponse(0xF7);

            PinState state = session.GetPinState(127);

            Assert.AreEqual(0, state.PinNumber);
            Assert.AreEqual(PinMode.AnalogInput, state.Mode);
            Assert.AreEqual(1023U, state.Value);
        }
Пример #58
0
        public void SetDigitalReportMode_PortNumber_Is1_Enable()
        {
            var connection = new MockSerialConnection();
            var session = CreateFirmataSession(connection);

            connection.EnqueueRequestAndResponse(new byte[] { 0xD1, 0x01 });
            session.SetDigitalReportMode(1, true);
        }
Пример #59
0
        public void SetDigitalPort_PortNumber_Is15_Pins_Is255()
        {
            var connection = new MockSerialConnection();
            var session = CreateFirmataSession(connection);

            connection.EnqueueRequestAndResponse(new byte[] { 0x9F, 0x7F, 0x01 });
            session.SetDigitalPort(15, 255);
        }
Пример #60
0
        public void DigitalStateReceived_MaxValues()
        {
            var connection = new MockSerialConnection();
            var session = CreateFirmataSession(connection);
            int eventHits = 0;

            session.AnalogStateReceived += (o, e) =>
            {
                Assert.Fail("Digital Message Analog processed.");
            };

            session.DigitalStateReceived += (o, e) =>
            {
                Assert.AreEqual(15, e.Value.Port);
                Assert.AreEqual(255, e.Value.Pins);
                eventHits++;
            };

            connection.EnqueueRequestAndResponse(new byte[] { 0xDF, 0x01 }, 0x9F, 0x7F, 0x01);
            session.SetDigitalReportMode(15, true);
            Assert.AreEqual(1, eventHits, "DigitalStateReceived event not hit once.");
        }