Ejemplo n.º 1
0
        /// <summary>
        /// Disposes this I2C bus instance. Also disposes all devices associated with this bus.
        /// </summary>
        protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                if (_board != null)
                {
                    _board.RemoveBus(this);
                    _board.ReleasePin(_sdaPin, PinUsage.I2c, this);
                    _board.ReleasePin(_sclPin, PinUsage.I2c, this);
                }

                foreach (var dev in _devices)
                {
                    dev.Value.Dispose();
                }

                _devices.Clear();

                _busInstance?.Dispose();
                _busInstance = null !;

                _board = null;
            }

            base.Dispose(disposing);
        }
Ejemplo n.º 2
0
        /// <inheritdoc/>
        public void Dispose()
        {
            if (_shouldDispose)
            {
                _i2cBus?.Dispose();
            }
            else
            {
                _ledMatrix?.Dispose();
                _ledMatrix = null !;

                _joystick?.Dispose();
                _joystick = null !;

                _gyro?.Dispose();
                _gyro = null !;

                _mag?.Dispose();
                _mag = null !;

                _temp?.Dispose();
                _temp = null !;

                _press?.Dispose();
                _press = null !;
            }

            _i2cBus = null !;
        }
Ejemplo n.º 3
0
        /// <inheritdoc/>
        public void Dispose()
        {
            if (_shouldDispose)
            {
                _i2cBus?.Dispose();
            }
            else
            {
                LedMatrix?.Dispose();
                LedMatrix = null !;

                Joystick?.Dispose();
                Joystick = null !;

                Gyroscope?.Dispose();
                Gyroscope = null !;

                Magnetometer?.Dispose();
                Magnetometer = null !;

                TemperatureAndHumidity?.Dispose();
                TemperatureAndHumidity = null !;

                PressureAndTemperature?.Dispose();
                PressureAndTemperature = null !;
            }

            _i2cBus = null !;
        }
Ejemplo n.º 4
0
    public void I2C_I2cBus_MultipleDispose()
    {
        // Every dispose operation we do twice to make sure it won't cause issues.
        // Devices are frequently wrapped and this can happen in real apps

        // we dispose device first, then bus
        I2cBus i2cBus = CreateI2cBusForBme280();
        Bme280 bme280 = CreateBme280(i2cBus);

        bme280.Dispose();
        bme280.Dispose();
        i2cBus.Dispose();
        i2cBus.Dispose();

        // we dispose bus first, then device
        i2cBus = CreateI2cBusForBme280();
        bme280 = CreateBme280(i2cBus);
        i2cBus.Dispose();
        i2cBus.Dispose();
        bme280.Dispose();
        bme280.Dispose();
    }