/// <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")); } }
/// <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"); }