private void FireAlarmListenerOnStatusChanged(FireAlarmListener listener, FireAlarmStatus status) { var mute = status == FireAlarmStatus.Alert; CloudLog.Warn("Fire Alarm Interface changed status to: {0}", status.ToString()); try { PromptUsers(prompt => { }, "FIRE ALARM", "Please listen for announcements", 300, null, new PromptAction { ActionName = "OK", ActionType = PromptActionType.Acknowledge }); } catch (Exception e) { CloudLog.Exception(e); } if (Dsp != null && Dsp.ContainsComponentWithName("fire.mute")) { var muteGainBlock = Dsp["fire.mute"] as IAudioLevelControl; if (muteGainBlock != null && muteGainBlock.SupportsMute) { CloudLog.Notice("Dsp mute {0} set to {1}", muteGainBlock.Name, mute ? "muted" : "unmuted"); muteGainBlock.Muted = mute; return; } } foreach (var room in Rooms.Cast <ARoom>().Where(room => room.ProgramVolume != null)) { CloudLog.Warn("Fire Alarm {0} program volume in Room {1}", mute ? "muted" : "unmuted", room.Name); room.ProgramVolume.Muted = mute; } }