public void Execute(I2CSlaveAddress address, Action<II2CDevice> action, bool useCache = true) { if (action == null) throw new ArgumentNullException(nameof(action)); lock (_syncRoot) { I2cDevice device = null; try { device = GetI2CDevice(address.Value, useCache); action(new I2CDeviceWrapper(device)); } catch (Exception exception) { // Ensure that the application will not crash if some devices are currently not available etc. Log.Warning(exception, $"Error while accessing I2C device with address {address}."); } finally { if (device != null && !useCache) { device.Dispose(); } } } }
public HSPE8InputOnly RegisterHSPE8InputOnly(Enum id, I2CSlaveAddress i2CAddress) { var device = new HSPE8InputOnly(DeviceIdFactory.CreateIdFrom(id), i2CAddress, _i2CBusService); _deviceService.AddDevice(device); return device; }
public HSREL5(DeviceId id, I2CSlaveAddress i2CAddress, II2CBusService bus) : base(id, new PCF8574Driver(i2CAddress, bus)) { // Ensure that all relays are off by default. The first 5 ports are hardware inverted! The other ports are not inverted but the // connected relays are inverted. SetState(new byte[] { 0xFF }); CommitChanges(true); }
public HSPE16InputOnly(DeviceId id, I2CSlaveAddress address, II2CBusService i2cBus) : base(id, new MAX7311Driver(address, i2cBus)) { byte[] setupAsInputs = { 0x06, 0xFF, 0xFF }; i2cBus.Execute(address, b => b.Write(setupAsInputs)); FetchState(); }
public I2CHardwareBridge(I2CSlaveAddress address, II2CBusService i2CBus, ISchedulerService schedulerService) { if (i2CBus == null) throw new ArgumentNullException(nameof(i2CBus)); if (schedulerService == null) throw new ArgumentNullException(nameof(schedulerService)); _address = address; _i2CBus = i2CBus; DHT22Accessor = new DHT22Accessor(this, schedulerService); }
public HSPE16InputOnly RegisterHSPE16InputOnly(Enum id, I2CSlaveAddress address) { var device = new HSPE16InputOnly(DeviceIdFactory.CreateIdFrom(id), address, _i2CBusService) { AutomaticallyFetchState = true }; _deviceService.AddDevice(device); return device; }
public bool Equals(I2CSlaveAddress other) { if (other == null) { return(false); } if (ReferenceEquals(other, this)) { return(true); } return(Value.Equals(other.Value)); }
public bool Equals(I2CSlaveAddress other) { if (other == null) { return false; } if (ReferenceEquals(other, this)) { return true; } return Value.Equals(other.Value); }
public HSPE8InputOnly(DeviceId id, I2CSlaveAddress address, II2CBusService bus) : base(id, new PCF8574Driver(address, bus)) { FetchState(); }
public HSPE16OutputOnly(DeviceId id, I2CSlaveAddress address, II2CBusService i2cBus) : base(id, new MAX7311Driver(address, i2cBus)) { CommitChanges(true); }
public HSRT16(DeviceId id, I2CSlaveAddress address, II2CBusService i2CBus) : base(id, new MAX7311Driver(address, i2CBus)) { SetState(new byte[] { 0x00, 0x00 }); CommitChanges(true); }
public PCF8574ADriver(I2CSlaveAddress address, II2CBusService i2CBus) : base(address, i2CBus) { }
public void Execute(I2CSlaveAddress address, Action<II2CDevice> action, bool useCache = true) { LastUsedI2CSlaveAddress = address; action(I2CDevice); }
public HSRT16 RegisterHSRT16(Enum id, I2CSlaveAddress address) { var device = new HSRT16(DeviceIdFactory.CreateIdFrom(id), address, _i2CBusService); _deviceService.AddDevice(device); return device; }
public PCA9555Driver(I2CSlaveAddress address, II2CBusService i2CBus) : base(address, i2CBus) { }