diff --git a/Essentials Core/PepperDashEssentialsBase/Constants/CommonCues.cs b/Essentials Core/PepperDashEssentialsBase/Constants/CommonCues.cs
index 2df7e390..0948816c 100644
--- a/Essentials Core/PepperDashEssentialsBase/Constants/CommonCues.cs
+++ b/Essentials Core/PepperDashEssentialsBase/Constants/CommonCues.cs
@@ -54,7 +54,6 @@ namespace PepperDash.Essentials.Core
public static readonly Cue SmartApps = new Cue("SmartApps", 143, eCueType.Bool);
public static readonly Cue Dvr = new Cue("Dvr", 144, eCueType.Bool);
-
public static readonly Cue Play = new Cue("Play", 145, eCueType.Bool);
public static readonly Cue Pause = new Cue("Pause", 146, eCueType.Bool);
public static readonly Cue Stop = new Cue("Stop", 147, eCueType.Bool);
@@ -78,13 +77,13 @@ namespace PepperDash.Essentials.Core
public static readonly Cue RStep = new Cue("RStep", 165, eCueType.Bool);
public static readonly Cue FStep = new Cue("FStep", 166, eCueType.Bool);
- public static readonly Cue IsConnected = new Cue("IsConnected", 281, eCueType.Bool);
+ public static readonly Cue IsConnected = new Cue("IsConnected", 281, eCueType.Bool);
public static readonly Cue IsOk = new Cue("IsOk", 282, eCueType.Bool);
public static readonly Cue InWarning = new Cue("InWarning", 283, eCueType.Bool);
public static readonly Cue InError = new Cue("InError", 284, eCueType.Bool);
- public static readonly Cue StatusUnknown = new Cue("StatusUnknown", 285, eCueType.Bool);
-
- public static readonly Cue VolumeUp = new Cue("VolumeUp", 401, eCueType.Bool);
+ public static readonly Cue StatusUnknown = new Cue("StatusUnknown", 285, eCueType.Bool);
+
+ public static readonly Cue VolumeUp = new Cue("VolumeUp", 401, eCueType.Bool);
public static readonly Cue VolumeDown = new Cue("VolumeDown", 402, eCueType.Bool);
public static readonly Cue MuteOn = new Cue("MuteOn", 403, eCueType.Bool);
public static readonly Cue MuteOff = new Cue("MuteOff", 404, eCueType.Bool);
@@ -110,9 +109,9 @@ namespace PepperDash.Essentials.Core
public static readonly Cue Vga2 = new Cue("Vga2", 466, eCueType.Bool);
public static readonly Cue Rgb1 = new Cue("Rgb1", 467, eCueType.Bool);
public static readonly Cue Rgb2 = new Cue("Rgb2", 468, eCueType.Bool);
- public static readonly Cue Antenna = new Cue("Antenna", 469, eCueType.Bool);
-
-
+ public static readonly Cue Antenna = new Cue("Antenna", 469, eCueType.Bool);
+
+ public static readonly Cue InCall = new Cue("InCall", 501, eCueType.Bool);
}
public static class CommonIntCue
diff --git a/Essentials Core/PepperDashEssentialsBase/DeviceTypeInterfaces/IPower.cs b/Essentials Core/PepperDashEssentialsBase/DeviceTypeInterfaces/IPower.cs
index 863e138d..23b67bc1 100644
--- a/Essentials Core/PepperDashEssentialsBase/DeviceTypeInterfaces/IPower.cs
+++ b/Essentials Core/PepperDashEssentialsBase/DeviceTypeInterfaces/IPower.cs
@@ -45,24 +45,4 @@ namespace PepperDash.Essentials.Core
dev.PowerIsOnFeedback.UnlinkInputSig(triList.BooleanInput[101]);
}
}
-/*
- public static class IFusionPowerExtensions
- {
- public static void LinkAttributes(this IPower dev, FusionRoom room)
- {
- dev.PowerIsOnFeedback.LinkInputSig(room.DisplayPowerOn.InputSig);
-
- room.DisplayPowerOn.OutputSig.SetSigFalseAction(dev.PowerOn);
- room.DisplayPowerOff.OutputSig.SetSigFalseAction(dev.PowerOff);
- }
-
- public static void UnlinkAttributes(this IPower dev, FusionRoom room)
- {
- dev.PowerIsOnFeedback.UnlinkInputSig(room.DisplayPowerOn.InputSig);
-
- room.DisplayPowerOn.OutputSig.SetSigFalseAction(null);
- room.DisplayPowerOff.OutputSig.SetSigFalseAction(null);
- }
- }
-*/
}
\ No newline at end of file
diff --git a/Essentials Core/PepperDashEssentialsBase/Devices/IHasDialer.cs b/Essentials Core/PepperDashEssentialsBase/Devices/IHasDialer.cs
new file mode 100644
index 00000000..ecb0863c
--- /dev/null
+++ b/Essentials Core/PepperDashEssentialsBase/Devices/IHasDialer.cs
@@ -0,0 +1,22 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Crestron.SimplSharp;
+
+namespace PepperDash.Essentials.Core
+{
+ ///
+ /// Requirements for a device that has dialing capabilities
+ ///
+ public interface IHasDialer
+ {
+ // Add requirements for Dialer functionality
+
+ void Dial();
+ void EndCall();
+
+ BoolFeedback InCallFeedback { get; }
+
+ }
+}
\ No newline at end of file
diff --git a/Essentials Core/PepperDashEssentialsBase/Devices/IVolumeAndAudioInterfaces.cs b/Essentials Core/PepperDashEssentialsBase/Devices/IVolumeAndAudioInterfaces.cs
index 02786ba7..6eab587d 100644
--- a/Essentials Core/PepperDashEssentialsBase/Devices/IVolumeAndAudioInterfaces.cs
+++ b/Essentials Core/PepperDashEssentialsBase/Devices/IVolumeAndAudioInterfaces.cs
@@ -66,7 +66,32 @@ namespace PepperDash.Essentials.Core
IntFeedback TrebleFeedback { get; }
IntFeedback MaxVolumeFeedback { get; }
IntFeedback DefaultVolumeFeedback { get; }
- }
+ }
+
+ ///
+ /// Defines minimum volume controls for a codec device with dialing capabilities
+ ///
+ public interface ICodecAudio
+ {
+ void SetReceiveVolume(ushort level);
+ void ReceiveMuteOn();
+ void ReceiveMuteOff();
+ void ReceiveMuteToggle();
+ IntFeedback ReceiveLevelFeedback { get; }
+ BoolFeedback ReceiveMuteIsOnFeedback { get; }
+
+ void SetTransmitVolume(ushort level);
+ void TransmitMuteOn();
+ void TransmitMuteOff();
+ void TransmitMuteToggle();
+ IntFeedback TransmitLevelFeedback { get; }
+ BoolFeedback TransmitMuteIsOnFeedback { get; }
+
+ void PrivacyModeOn();
+ void PrivacyModeOff();
+ void PrivacyModeToggle();
+ BoolFeedback PrivacyModeIsOnFeedback { get; }
+ }
diff --git a/Essentials Core/PepperDashEssentialsBase/PepperDash_Essentials_Core.csproj b/Essentials Core/PepperDashEssentialsBase/PepperDash_Essentials_Core.csproj
index f963a171..b7649ac6 100644
--- a/Essentials Core/PepperDashEssentialsBase/PepperDash_Essentials_Core.csproj
+++ b/Essentials Core/PepperDashEssentialsBase/PepperDash_Essentials_Core.csproj
@@ -103,6 +103,7 @@
+
diff --git a/Essentials Devices Common/Essentials Devices Common/Essentials Devices Common.csproj b/Essentials Devices Common/Essentials Devices Common/Essentials Devices Common.csproj
index ec400ffb..751e3656 100644
--- a/Essentials Devices Common/Essentials Devices Common/Essentials Devices Common.csproj
+++ b/Essentials Devices Common/Essentials Devices Common/Essentials Devices Common.csproj
@@ -46,6 +46,14 @@
off
+
+ False
+ ..\..\..\CodeBlue\libraries\Cisco CODEC\Cisco One Button To Push\Cisco One Button To Push\bin\Cisco One Button To Push.dll
+
+
+ False
+ ..\..\..\CodeBlue\libraries\Cisco CODEC\Cisco SX80 Corporate Phone Book\Cisco SX80 Corporate Phone Book\bin\Cisco SX80 Corporate Phone Book.dll
+
False
..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SSPDevices\Crestron.SimplSharpPro.DeviceSupport.dll
@@ -119,6 +127,8 @@
+
+
diff --git a/Essentials Devices Common/Essentials Devices Common/VC/CiscoCodec.cs b/Essentials Devices Common/Essentials Devices Common/VC/CiscoCodec.cs
new file mode 100644
index 00000000..74ec8dfd
--- /dev/null
+++ b/Essentials Devices Common/Essentials Devices Common/VC/CiscoCodec.cs
@@ -0,0 +1,123 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Crestron.SimplSharp;
+using Cisco_One_Button_To_Push;
+using Cisco_SX80_Corporate_Phone_Book;
+
+namespace PepperDash.Essentials.Devices.VC
+{
+ public class CiscoCodec : VcCodecBase
+ {
+ private CiscoOneButtonToPush Codec;
+
+ private Corporate_Phone_Book PhoneBook;
+
+ public CiscoCodec(string key, string name)
+ : base(key, name)
+ {
+ Codec = new CiscoOneButtonToPush();
+
+ PhoneBook = new Corporate_Phone_Book();
+
+ Codec.Initialize();
+
+ Codec.GetMeetings();
+
+
+ }
+
+
+
+ public override void ExecuteSwitch(object selector)
+ {
+ throw new NotImplementedException();
+ }
+
+ protected override Func InCallFeedbackFunc
+ {
+ get { throw new NotImplementedException(); }
+ }
+
+ protected override Func TransmitMuteFeedbackFunc
+ {
+ get { throw new NotImplementedException(); }
+ }
+
+ protected override Func ReceiveMuteFeedbackFunc
+ {
+ get { throw new NotImplementedException(); }
+ }
+
+ protected override Func PrivacyModeFeedbackFunc
+ {
+ get { throw new NotImplementedException(); }
+ }
+
+ public override void Dial()
+ {
+ throw new NotImplementedException();
+ }
+
+ public override void EndCall()
+ {
+ throw new NotImplementedException();
+ }
+
+ public override void ReceiveMuteOff()
+ {
+ throw new NotImplementedException();
+ }
+
+ public override void ReceiveMuteOn()
+ {
+ throw new NotImplementedException();
+ }
+
+ public override void ReceiveMuteToggle()
+ {
+ throw new NotImplementedException();
+ }
+
+ public override void SetReceiveVolume(ushort level)
+ {
+ throw new NotImplementedException();
+ }
+
+ public override void TransmitMuteOff()
+ {
+ throw new NotImplementedException();
+ }
+
+ public override void TransmitMuteOn()
+ {
+ throw new NotImplementedException();
+ }
+
+ public override void TransmitMuteToggle()
+ {
+ throw new NotImplementedException();
+ }
+
+ public override void SetTransmitVolume(ushort level)
+ {
+ throw new NotImplementedException();
+ }
+
+ public override void PrivacyModeOn()
+ {
+ throw new NotImplementedException();
+ }
+
+ public override void PrivacyModeOff()
+ {
+ throw new NotImplementedException();
+ }
+
+ public override void PrivacyModeToggle()
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
\ No newline at end of file
diff --git a/Essentials Devices Common/Essentials Devices Common/VC/VcCodecBase.cs b/Essentials Devices Common/Essentials Devices Common/VC/VcCodecBase.cs
new file mode 100644
index 00000000..bf61aa00
--- /dev/null
+++ b/Essentials Devices Common/Essentials Devices Common/VC/VcCodecBase.cs
@@ -0,0 +1,99 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Crestron.SimplSharp;
+
+using PepperDash.Core;
+using PepperDash.Essentials.Core;
+
+namespace PepperDash.Essentials.Devices.VC
+{
+ public abstract class VcCodecBase : Device, IHasFeedback, IRoutingSinkWithSwitching, IUsageTracking, IHasDialer//, ICodecAudio
+ {
+ #region IUsageTracking Members
+
+ public UsageTracking UsageTracker { get; set; }
+
+ #endregion
+
+ #region IRoutingInputs Members
+
+ public RoutingPortCollection InputPorts { get; private set; }
+
+ #endregion
+
+ public BoolFeedback InCallFeedback { get; protected set; }
+
+ abstract protected Func InCallFeedbackFunc { get; }
+ abstract protected Func TransmitMuteFeedbackFunc { get; }
+ abstract protected Func ReceiveMuteFeedbackFunc { get; }
+ abstract protected Func PrivacyModeFeedbackFunc { get; }
+
+ public VcCodecBase(string key, string name)
+ : base(key, name)
+ {
+ InCallFeedback = new BoolFeedback(InCallFeedbackFunc);
+ ReceiveMuteIsOnFeedback = new BoolFeedback(ReceiveMuteFeedbackFunc);
+ TransmitMuteIsOnFeedback = new BoolFeedback(TransmitMuteFeedbackFunc);
+ PrivacyModeIsOnFeedback = new BoolFeedback(PrivacyModeFeedbackFunc);
+
+ InputPorts = new RoutingPortCollection();
+
+ InCallFeedback.OutputChange += new EventHandler(InCallFeedback_OutputChange);
+ }
+
+ void InCallFeedback_OutputChange(object sender, EventArgs e)
+ {
+ if (UsageTracker != null)
+ {
+ if (InCallFeedback.BoolValue)
+ UsageTracker.StartDeviceUsage();
+ else
+ UsageTracker.EndDeviceUsage();
+ }
+ }
+
+ public abstract void Dial();
+ public abstract void EndCall();
+
+ public virtual List Feedbacks
+ {
+ get
+ {
+ return new List
+ {
+ InCallFeedback,
+ ReceiveMuteIsOnFeedback,
+ TransmitMuteIsOnFeedback,
+ PrivacyModeIsOnFeedback
+ };
+ }
+ }
+
+ public abstract void ExecuteSwitch(object selector);
+
+ #region ICodecAudio Members
+
+ public IntFeedback ReceiveLevelFeedback { get; private set; }
+ public BoolFeedback ReceiveMuteIsOnFeedback { get; private set; }
+ public abstract void ReceiveMuteOff();
+ public abstract void ReceiveMuteOn();
+ public abstract void ReceiveMuteToggle();
+ public abstract void SetReceiveVolume(ushort level);
+
+ public IntFeedback TransmitLevelFeedback { get; private set; }
+ public BoolFeedback TransmitMuteIsOnFeedback { get; private set; }
+ public abstract void TransmitMuteOff();
+ public abstract void TransmitMuteOn();
+ public abstract void TransmitMuteToggle();
+ public abstract void SetTransmitVolume(ushort level);
+
+ public abstract void PrivacyModeOn();
+ public abstract void PrivacyModeOff();
+ public abstract void PrivacyModeToggle();
+ public BoolFeedback PrivacyModeIsOnFeedback { get; private set; }
+
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Essentials/PepperDashEssentials/Fusion/FusionEventHandlers.cs b/Essentials/PepperDashEssentials/Fusion/FusionEventHandlers.cs
index 9825b603..7c7b5168 100644
--- a/Essentials/PepperDashEssentials/Fusion/FusionEventHandlers.cs
+++ b/Essentials/PepperDashEssentials/Fusion/FusionEventHandlers.cs
@@ -8,7 +8,7 @@ namespace PepperDash.Essentials.Fusion
{
public class ScheduleChangeEventArgs : EventArgs
{
- public RoomSchedule MyProperty { get; set; }
+ public RoomSchedule Schedule { get; set; }
}
public class MeetingChangeEventArgs : EventArgs
diff --git a/Essentials/PepperDashEssentials/Fusion/FusionSystemController.cs b/Essentials/PepperDashEssentials/Fusion/FusionSystemController.cs
index 23d0eace..31cdc74a 100644
--- a/Essentials/PepperDashEssentials/Fusion/FusionSystemController.cs
+++ b/Essentials/PepperDashEssentials/Fusion/FusionSystemController.cs
@@ -25,9 +25,9 @@ namespace PepperDash.Essentials.Fusion
{
public class EssentialsHuddleSpaceFusionSystemController : Device
{
- //public event EventHandler ScheduleChange;
- //public event EventHandler MeetingEndWarning;
- //public event EventHandler NextMeetingBeginWarning;
+ public event EventHandler ScheduleChange;
+ public event EventHandler MeetingEndWarning;
+ public event EventHandler NextMeetingBeginWarning;
FusionRoom FusionRoom;
EssentialsHuddleSpaceRoom Room;
@@ -788,6 +788,15 @@ namespace PepperDash.Essentials.Fusion
if (!IsRegisteredForSchedulePushNotifications)
PollTimer.Reset(SchedulePollInterval, SchedulePollInterval);
+
+ // Fire Schedule Change Event
+ var handler = ScheduleChange;
+
+ if (handler != null)
+ {
+ handler(this, new ScheduleChangeEventArgs() { Schedule = CurrentSchedule });
+ }
+
}
}
@@ -806,20 +815,26 @@ namespace PepperDash.Essentials.Fusion
}
+ ///
+ /// Prints today's schedule to console for debugging
+ ///
void PrintTodaysSchedule()
{
- if (CurrentSchedule.Meetings.Count > 0)
+ if (Debug.Level > 1)
{
- Debug.Console(1, this, "Today's Schedule for '{0}'\n", Room.Name);
-
- foreach (Event e in CurrentSchedule.Meetings)
+ if (CurrentSchedule.Meetings.Count > 0)
{
- Debug.Console(1, this, "Subject: {0}", e.Subject);
- Debug.Console(1, this, "Organizer: {0}", e.Organizer);
- Debug.Console(1, this, "MeetingID: {0}", e.MeetingID);
- Debug.Console(1, this, "Start Time: {0}", e.dtStart);
- Debug.Console(1, this, "End Time: {0}", e.dtEnd);
- Debug.Console(1, this, "Duration: {0}\n", e.DurationInMinutes);
+ Debug.Console(1, this, "Today's Schedule for '{0}'\n", Room.Name);
+
+ foreach (Event e in CurrentSchedule.Meetings)
+ {
+ Debug.Console(1, this, "Subject: {0}", e.Subject);
+ Debug.Console(1, this, "Organizer: {0}", e.Organizer);
+ Debug.Console(1, this, "MeetingID: {0}", e.MeetingID);
+ Debug.Console(1, this, "Start Time: {0}", e.dtStart);
+ Debug.Console(1, this, "End Time: {0}", e.dtEnd);
+ Debug.Console(1, this, "Duration: {0}\n", e.DurationInMinutes);
+ }
}
}
}
@@ -964,7 +979,7 @@ namespace PepperDash.Essentials.Fusion
attrName = "Online - Touch Panel " + attrNum;
attrNum += 150;
}
- else if (dev is Crestron.SimplSharpPro.UI.XpanelForSmartGraphics)
+ else if ((dev as EssentialsTouchpanelController).Panel is Crestron.SimplSharpPro.UI.XpanelForSmartGraphics)
{
if (attrNum > 10)
continue;