Defined VcCodecBase, new Vc interfaces and started CiscoCodec class

This commit is contained in:
Neil Dorin
2017-08-31 18:12:52 -06:00
parent 88de2a2ee0
commit 617e2bdc4f
10 changed files with 318 additions and 44 deletions

View File

@@ -54,7 +54,6 @@ namespace PepperDash.Essentials.Core
public static readonly Cue SmartApps = new Cue("SmartApps", 143, eCueType.Bool); 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 Dvr = new Cue("Dvr", 144, eCueType.Bool);
public static readonly Cue Play = new Cue("Play", 145, 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 Pause = new Cue("Pause", 146, eCueType.Bool);
public static readonly Cue Stop = new Cue("Stop", 147, eCueType.Bool); public static readonly Cue Stop = new Cue("Stop", 147, eCueType.Bool);
@@ -84,7 +83,7 @@ namespace PepperDash.Essentials.Core
public static readonly Cue InError = new Cue("InError", 284, 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 StatusUnknown = new Cue("StatusUnknown", 285, eCueType.Bool);
public static readonly Cue VolumeUp = new Cue("VolumeUp", 401, 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 VolumeDown = new Cue("VolumeDown", 402, eCueType.Bool);
public static readonly Cue MuteOn = new Cue("MuteOn", 403, eCueType.Bool); public static readonly Cue MuteOn = new Cue("MuteOn", 403, eCueType.Bool);
public static readonly Cue MuteOff = new Cue("MuteOff", 404, eCueType.Bool); public static readonly Cue MuteOff = new Cue("MuteOff", 404, eCueType.Bool);
@@ -112,7 +111,7 @@ namespace PepperDash.Essentials.Core
public static readonly Cue Rgb2 = new Cue("Rgb2", 468, 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 public static class CommonIntCue

View File

@@ -45,24 +45,4 @@ namespace PepperDash.Essentials.Core
dev.PowerIsOnFeedback.UnlinkInputSig(triList.BooleanInput[101]); 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);
}
}
*/
} }

View File

@@ -0,0 +1,22 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Crestron.SimplSharp;
namespace PepperDash.Essentials.Core
{
/// <summary>
/// Requirements for a device that has dialing capabilities
/// </summary>
public interface IHasDialer
{
// Add requirements for Dialer functionality
void Dial();
void EndCall();
BoolFeedback InCallFeedback { get; }
}
}

View File

@@ -68,6 +68,31 @@ namespace PepperDash.Essentials.Core
IntFeedback DefaultVolumeFeedback { get; } IntFeedback DefaultVolumeFeedback { get; }
} }
/// <summary>
/// Defines minimum volume controls for a codec device with dialing capabilities
/// </summary>
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; }
}
/// <summary> /// <summary>

View File

@@ -103,6 +103,7 @@
<Reference Include="System.Data" /> <Reference Include="System.Data" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="Devices\IHasDialer.cs" />
<Compile Include="Ramps and Increments\ActionIncrementer.cs" /> <Compile Include="Ramps and Increments\ActionIncrementer.cs" />
<Compile Include="Comm and IR\CommFactory.cs" /> <Compile Include="Comm and IR\CommFactory.cs" />
<Compile Include="Comm and IR\CommunicationExtras.cs" /> <Compile Include="Comm and IR\CommunicationExtras.cs" />

View File

@@ -46,6 +46,14 @@
<GenerateSerializationAssemblies>off</GenerateSerializationAssemblies> <GenerateSerializationAssemblies>off</GenerateSerializationAssemblies>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="Cisco One Button To Push, Version=1.0.0.30876, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\CodeBlue\libraries\Cisco CODEC\Cisco One Button To Push\Cisco One Button To Push\bin\Cisco One Button To Push.dll</HintPath>
</Reference>
<Reference Include="Cisco SX80 Corporate Phone Book, Version=1.0.0.15355, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\CodeBlue\libraries\Cisco CODEC\Cisco SX80 Corporate Phone Book\Cisco SX80 Corporate Phone Book\bin\Cisco SX80 Corporate Phone Book.dll</HintPath>
</Reference>
<Reference Include="Crestron.SimplSharpPro.DeviceSupport, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1099c178b3b54c3b, processorArchitecture=MSIL"> <Reference Include="Crestron.SimplSharpPro.DeviceSupport, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1099c178b3b54c3b, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SSPDevices\Crestron.SimplSharpPro.DeviceSupport.dll</HintPath> <HintPath>..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SSPDevices\Crestron.SimplSharpPro.DeviceSupport.dll</HintPath>
@@ -119,6 +127,8 @@
<Compile Include="SetTopBox\IRSetTopBoxBase.cs" /> <Compile Include="SetTopBox\IRSetTopBoxBase.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Streaming\Roku.cs" /> <Compile Include="Streaming\Roku.cs" />
<Compile Include="VC\CiscoCodec.cs" />
<Compile Include="VC\VcCodecBase.cs" />
<None Include="Properties\ControlSystem.cfg" /> <None Include="Properties\ControlSystem.cfg" />
</ItemGroup> </ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CompactFramework.CSharp.targets" /> <Import Project="$(MSBuildBinPath)\Microsoft.CompactFramework.CSharp.targets" />

View File

@@ -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<bool> InCallFeedbackFunc
{
get { throw new NotImplementedException(); }
}
protected override Func<bool> TransmitMuteFeedbackFunc
{
get { throw new NotImplementedException(); }
}
protected override Func<bool> ReceiveMuteFeedbackFunc
{
get { throw new NotImplementedException(); }
}
protected override Func<bool> 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();
}
}
}

View File

@@ -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<RoutingInputPort> InputPorts { get; private set; }
#endregion
public BoolFeedback InCallFeedback { get; protected set; }
abstract protected Func<bool> InCallFeedbackFunc { get; }
abstract protected Func<bool> TransmitMuteFeedbackFunc { get; }
abstract protected Func<bool> ReceiveMuteFeedbackFunc { get; }
abstract protected Func<bool> 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<RoutingInputPort>();
InCallFeedback.OutputChange += new EventHandler<EventArgs>(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<Feedback> Feedbacks
{
get
{
return new List<Feedback>
{
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
}
}

View File

@@ -8,7 +8,7 @@ namespace PepperDash.Essentials.Fusion
{ {
public class ScheduleChangeEventArgs : EventArgs public class ScheduleChangeEventArgs : EventArgs
{ {
public RoomSchedule MyProperty { get; set; } public RoomSchedule Schedule { get; set; }
} }
public class MeetingChangeEventArgs : EventArgs public class MeetingChangeEventArgs : EventArgs

View File

@@ -25,9 +25,9 @@ namespace PepperDash.Essentials.Fusion
{ {
public class EssentialsHuddleSpaceFusionSystemController : Device public class EssentialsHuddleSpaceFusionSystemController : Device
{ {
//public event EventHandler<ScheduleChangeEventArgs> ScheduleChange; public event EventHandler<ScheduleChangeEventArgs> ScheduleChange;
//public event EventHandler<MeetingChangeEventArgs> MeetingEndWarning; public event EventHandler<MeetingChangeEventArgs> MeetingEndWarning;
//public event EventHandler<MeetingChangeEventArgs> NextMeetingBeginWarning; public event EventHandler<MeetingChangeEventArgs> NextMeetingBeginWarning;
FusionRoom FusionRoom; FusionRoom FusionRoom;
EssentialsHuddleSpaceRoom Room; EssentialsHuddleSpaceRoom Room;
@@ -788,6 +788,15 @@ namespace PepperDash.Essentials.Fusion
if (!IsRegisteredForSchedulePushNotifications) if (!IsRegisteredForSchedulePushNotifications)
PollTimer.Reset(SchedulePollInterval, SchedulePollInterval); 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
} }
/// <summary>
/// Prints today's schedule to console for debugging
/// </summary>
void PrintTodaysSchedule() void PrintTodaysSchedule()
{ {
if (CurrentSchedule.Meetings.Count > 0) if (Debug.Level > 1)
{ {
Debug.Console(1, this, "Today's Schedule for '{0}'\n", Room.Name); if (CurrentSchedule.Meetings.Count > 0)
foreach (Event e in CurrentSchedule.Meetings)
{ {
Debug.Console(1, this, "Subject: {0}", e.Subject); Debug.Console(1, this, "Today's Schedule for '{0}'\n", Room.Name);
Debug.Console(1, this, "Organizer: {0}", e.Organizer);
Debug.Console(1, this, "MeetingID: {0}", e.MeetingID); foreach (Event e in CurrentSchedule.Meetings)
Debug.Console(1, this, "Start Time: {0}", e.dtStart); {
Debug.Console(1, this, "End Time: {0}", e.dtEnd); Debug.Console(1, this, "Subject: {0}", e.Subject);
Debug.Console(1, this, "Duration: {0}\n", e.DurationInMinutes); 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; attrName = "Online - Touch Panel " + attrNum;
attrNum += 150; attrNum += 150;
} }
else if (dev is Crestron.SimplSharpPro.UI.XpanelForSmartGraphics) else if ((dev as EssentialsTouchpanelController).Panel is Crestron.SimplSharpPro.UI.XpanelForSmartGraphics)
{ {
if (attrNum > 10) if (attrNum > 10)
continue; continue;