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);
            }
        }
Пример #2
0
 public void SetPcf(byte device, byte value)
 {
     _i2C.WriteToDevice(device, value);
 }