/// <summary> /// Turns the cell off. /// </summary> /// <exception cref="System.NullReferenceException">Not connected to a device</exception> /// <exception cref="System.Exception">Device must be in idle mode for manual control</exception> public async Task TurnCellOffAsync() { if (_comm == null) { throw new NullReferenceException("Not connected to a device"); } if (await _comm.GetStateAsync() != CommManager.DeviceState.Idle) { throw new Exception("Device must be in idle mode for manual control"); } if (!_comm.CellOn) { return; } await RunAsync(async() => { //Need to check again as the task can be scheduled to run at a later point after which this could have changed if (_comm == null) { throw new NullReferenceException("Not connected to a device"); } if (_comm.State != CommManager.DeviceState.Idle) { throw new Exception("Device must be in idle mode for manual control"); } if (!_comm.CellOn) { return; } await _comm.SetCellOnAsync(false); }); }