private void SetChannelState(int deviceId, int channel, bool state) { if (!(channel >= 1 && channel <= 8)) { throw new ArgumentOutOfRangeException(nameof(channel)); } var bitToFlip = 1 << channel - 1; lock (_lock) { var currentState = 0; _deviceToOutputState.TryGetValue(deviceId, out currentState); if (state) { currentState |= bitToFlip; } else { currentState &= ~bitToFlip; } _deviceToOutputState[deviceId] = currentState; _i2c.WriteToDevice(deviceId, (byte)~currentState); } }
public void SetPcf(byte device, byte value) { _i2C.WriteToDevice(device, value); }