/// <summary> /// Public method to read a zone state. /// </summary> /// <param name="zoneAddress">Zone Adress, containing device and zone id.</param> public void ReadZoneState(Address zoneAddress) { checkZoneDeviceId(zoneAddress.DeviceId); INuvoEssentiaCommand command = new NuvoEssentiaCommand( ENuvoEssentiaCommands.GetZoneStatus, convertAddressZone2EssentiaZone(zoneAddress)); sendCommandToDevice(zoneAddress, command); }
/// <summary> /// Public method to set the volume of a zone. /// </summary> /// <param name="zoneAddress">Zone Adress, containing device and zone id.</param> /// <param name="volumeLevel">Volume level.</param> public void CommandSetVolume(Address zoneAddress, int volumeLevel) { checkZoneDeviceId(zoneAddress.DeviceId); INuvoEssentiaSingleCommand command = new NuvoEssentiaSingleCommand( ENuvoEssentiaCommands.SetVolume, convertAddressZone2EssentiaZone(zoneAddress), NuvoEssentiaCommand.calcVolume2NuvoEssentia(volumeLevel)); sendCommandToDevice(zoneAddress, command); }
/// <summary> /// Private method to send notification 'onZoneStatusUpdate' /// </summary> /// <param name="e">Parameters received from underlying layer.</param> private void notifyZoneStatusUpdate(ConreteProtocolEventArgs e) { if (onZoneStatusUpdate != null) { try { ZoneState zoneState = new ZoneState(new Address(e.DeviceId, (int)e.Command.SourceId), (e.Command.PowerStatus == EZonePowerStatus.ZoneStatusON ? true : false), NuvoEssentiaCommand.calcVolume2NuvoControl(e.Command.VolumeLevel), ZoneQuality.Online); onZoneStatusUpdate(this, new ProtocolZoneUpdatedEventArgs(new Address(e.DeviceId, (int)e.Command.ZoneId), zoneState, e)); } catch (Exception ex) { _log.Fatal(m => m("Exception occured at forwarding event 'onZoneStatusUpdate' to Device {0} and Zone {1} (Command='{2}')! Exception={3}", e.DeviceId, e.Command.ZoneId, e.Command.ToString(), ex.ToString())); } } }
/// <summary> /// Public method to set a zone state, according to a zone state object passed in. /// </summary> /// <param name="zoneAddress">Zone Adress, containing device and zone id.</param> /// <param name="zoneState">Zone state, which shall be applied.</param> public void SetZoneState(Address zoneAddress, ZoneState zoneState) { if (zoneState.PowerStatus) { INuvoEssentiaCommand command = new NuvoEssentiaCommand( ENuvoEssentiaCommands.SetZoneStatus, convertAddressZone2EssentiaZone(zoneAddress), convertAddressSource2EssentiaSource(zoneState.Source), NuvoEssentiaCommand.calcVolume2NuvoEssentia(zoneState.Volume)); sendCommandToDevice(zoneAddress, command); } else { INuvoEssentiaSingleCommand command = new NuvoEssentiaSingleCommand( ENuvoEssentiaCommands.TurnZoneOFF, convertAddressZone2EssentiaZone(zoneAddress)); sendCommandToDevice(zoneAddress, command); } }