Example #1
0
        /// <inheritdoc />
        public DeviceStatus CurrentStatus()
        {
            if (_controller == null)
            {
                return(DeviceStatus.Disconnected("GPIO controller not connected"));
            }

            if (!_controller.IsPinOpen(_pin))
            {
                return(DeviceStatus.Disconnected($"Pin {_pin} not open"));
            }

            var value = _controller.Read(_pin);

            if (value != PinValue.High && value != PinValue.Low)
            {
                return(DeviceStatus.Error($"Unkown value {value} on pin"));
            }
            else if (value == _readPinValue)
            {
                return(DeviceStatus.Closed($"{value} value on pin"));
            }
            else
            {
                return(DeviceStatus.Open($"{value} value on pin"));
            }
        }
Example #2
0
        /// <inheritdoc />
        public async Task OpenGateAsync()
        {
            if (_i2c == null)
            {
                throw new InvalidOperationException("Unable to open gate while disconnected");
            }

            if (Duration > 1000)
            {
                Duration = 1000;
            }
            ;

            _i2c.Write(_turnOnCommand);
            _currentStatus = DeviceStatus.Transitioning("Opening gate");

            await Task.Delay(1000);

            _i2c.Write(_turnOffCommand);
            _currentStatus = DeviceStatus.Open("Opening gate");
        }