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; } }
public async Task DisconnectDevice(InfraredDevice device) { using (await _asyncLock.LockAsync()) { if (_connectedDevicesCount == 0) { return; } _connectedDevicesCount--; if (_connectedDevicesCount == 0) { await StopIrThreadAsync(); } } }
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); } }