コード例 #1
0
        public void SetOutput(InfraredDevice device, int channel, int value)
        {
            if (int.TryParse(device.Address, out int address))
            {
                if (_outputValues[address, channel] == value)
                {
                    return;
                }

                _outputValues[address, channel] = value;
                _sendAttemptsLeft[address]      = MAX_SEND_ATTEMPTS;
            }
        }
コード例 #2
0
        public async Task DisconnectDevice(InfraredDevice device)
        {
            using (await _asyncLock.LockAsync())
            {
                if (_connectedDevicesCount == 0)
                {
                    return;
                }

                _connectedDevicesCount--;
                if (_connectedDevicesCount == 0)
                {
                    await StopIrThreadAsync();
                }
            }
        }
コード例 #3
0
        public async Task <DeviceConnectionResult> ConnectDevice(InfraredDevice device)
        {
            using (await _asyncLock.LockAsync())
            {
                if (_connectedDevicesCount >= 4)
                {
                    return(DeviceConnectionResult.Error);
                }

                _connectedDevicesCount++;
                if (_connectedDevicesCount == 1)
                {
                    await StartIrThread();
                }

                return(DeviceConnectionResult.Ok);
            }
        }