internal void Read(UnipiI2CDevice i2CDevice, byte[] statusBuffer) { lock (_busLock) { _logger.LogDebug(this, "Read " + string.Join("-", statusBuffer) + " to device " + i2CDevice); var device = GetDevice(i2CDevice); device?.Read(statusBuffer); } }
internal void Write(UnipiI2CDevice i2CDevice, byte[] buffer) { lock (_busLock) { _logger.LogDebug(this, "Write " + string.Join("-", buffer) + " to device " + i2CDevice); var device = GetDevice(i2CDevice); device?.Write(buffer); } }
internal I2cDevice GetDevice(UnipiI2CDevice device) { lock (_busLock) { I2cDevice i2CDevice; if (_devices.TryGetValue(device, out i2CDevice)) { return(i2CDevice); } _logger.LogError(this, "Device " + device + " not found! "); return(null); } }
internal void WriteRegister(UnipiI2CDevice device, byte registerAddress, byte registerValue) { lock (_busLock) { _logger.LogDebug(this, "Write RegisterNumber " + registerAddress + " value " + registerValue); var dependingDevice = GetDevice(device); if (dependingDevice == null) { return; } var i2CWriteBuffer = new[] { registerAddress, registerValue }; dependingDevice.Write(i2CWriteBuffer); } }
internal byte?ReadRegister(UnipiI2CDevice device, byte registerAddress) { lock (_busLock) { _logger.LogDebug(this, "Read RegisterNumber " + registerAddress); var dependingDevice = GetDevice(device); if (dependingDevice == null) { return(null); } var i2CWriteBuffer = new[] { registerAddress }; var i2CReadBuffer = new[] { registerAddress }; dependingDevice.WriteRead(i2CWriteBuffer, i2CReadBuffer); return(i2CReadBuffer[0]); } }