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;
        }
Exemplo n.º 3
0
 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);
 }
Exemplo n.º 4
0
        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;
        }
Exemplo n.º 7
0
        public bool Equals(I2CSlaveAddress other)
        {
            if (other == null)
            {
                return(false);
            }

            if (ReferenceEquals(other, this))
            {
                return(true);
            }

            return(Value.Equals(other.Value));
        }
Exemplo n.º 8
0
        public bool Equals(I2CSlaveAddress other)
        {
            if (other == null)
            {
                return false;
            }

            if (ReferenceEquals(other, this))
            {
                return true;
            }

            return Value.Equals(other.Value);
        }
Exemplo n.º 9
0
 public HSPE8InputOnly(DeviceId id, I2CSlaveAddress address, II2CBusService bus)
     : base(id, new PCF8574Driver(address, bus))
 {
     FetchState();
 }
Exemplo n.º 10
0
 public HSPE16OutputOnly(DeviceId id, I2CSlaveAddress address, II2CBusService i2cBus)
     : base(id, new MAX7311Driver(address, i2cBus))
 {
     CommitChanges(true);
 }
Exemplo n.º 11
0
 public HSRT16(DeviceId id, I2CSlaveAddress address, II2CBusService i2CBus)
     : base(id, new MAX7311Driver(address, i2CBus))
 {
     SetState(new byte[] { 0x00, 0x00 });
     CommitChanges(true);
 }
Exemplo n.º 12
0
 public PCF8574ADriver(I2CSlaveAddress address, II2CBusService i2CBus)
     : base(address, i2CBus)
 {
 }
Exemplo n.º 13
0
 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;
        }
Exemplo n.º 15
0
 public PCA9555Driver(I2CSlaveAddress address, II2CBusService i2CBus)
     : base(address, i2CBus)
 {
 }