mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-01-31 13:25:00 +00:00
Started working on property feedback mechansism to trigger codec feedbacks automatically when feedback values are deserialized
This commit is contained in:
@@ -33,6 +33,14 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco
|
||||
|
||||
private CiscoCodecStatus.RootObject CodecStatus;
|
||||
|
||||
protected override Func<int> VolumeLevelFeedbackFunc
|
||||
{
|
||||
get
|
||||
{
|
||||
return () => CodecStatus.Status.Audio.Volume.IntValue;
|
||||
}
|
||||
}
|
||||
|
||||
//private HttpsClient Client;
|
||||
|
||||
//private HttpApiServer Server;
|
||||
@@ -83,6 +91,8 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco
|
||||
|
||||
CodecStatus = new CiscoCodecStatus.RootObject();
|
||||
|
||||
CodecStatus.Status.Audio.Volume.ValueChangedAction = VolumeLevelFeedback.FireUpdate;
|
||||
|
||||
//Client = new HttpsClient();
|
||||
|
||||
//Server = new HttpApiServer();
|
||||
@@ -162,7 +172,12 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco
|
||||
SyncState.CodecDisconnected();
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Gathers responses from the codec (including the delimiter. Responses are checked to see if they contain JSON data and if so, the data is collected until a complete JSON
|
||||
/// message is received before forwarding the message to be deserialized.
|
||||
/// </summary>
|
||||
/// <param name="dev"></param>
|
||||
/// <param name="args"></param>
|
||||
void Port_LineReceived(object dev, GenericCommMethodReceiveTextArgs args)
|
||||
{
|
||||
if (Debug.Level == 1)
|
||||
@@ -215,7 +230,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco
|
||||
SendText("xStatus");
|
||||
break;
|
||||
}
|
||||
case "xFeedback Register":
|
||||
case "xFeedback register":
|
||||
{
|
||||
SyncState.FeedbackRegistered();
|
||||
break;
|
||||
@@ -473,12 +488,13 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco
|
||||
|
||||
public override void Dial(string s)
|
||||
{
|
||||
|
||||
SendText(string.Format("xCommand Dial Number: {0}", s));
|
||||
}
|
||||
|
||||
public override void EndCall()
|
||||
{
|
||||
|
||||
//SendText(string.Format("xCommand Accept CallId: {0}", CodecStatus.Status.));
|
||||
|
||||
}
|
||||
|
||||
public override void AcceptCall()
|
||||
|
||||
@@ -9,6 +9,22 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco
|
||||
{
|
||||
public class CiscoCodecStatus
|
||||
{
|
||||
// Helper Classes for Proerties
|
||||
public abstract class ValueProperty
|
||||
{
|
||||
/// <summary>
|
||||
/// Triggered when Value is set
|
||||
/// </summary>
|
||||
public Action ValueChangedAction { get; set; }
|
||||
|
||||
protected void OnValueChanged()
|
||||
{
|
||||
var a = ValueChangedAction;
|
||||
if (a != null)
|
||||
a();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public class ConnectionStatus
|
||||
{
|
||||
@@ -31,9 +47,19 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco
|
||||
public Connectors Connectors { get; set; }
|
||||
}
|
||||
|
||||
public class Mute
|
||||
public class Mute : ValueProperty
|
||||
{
|
||||
public string Value { get; set; }
|
||||
public bool BoolValue { get; private set; }
|
||||
|
||||
public string Value
|
||||
{
|
||||
set
|
||||
{
|
||||
// If the incoming value is "On" it sets the BoolValue true, otherwise sets it false
|
||||
BoolValue = value == "On";
|
||||
OnValueChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class Microphones
|
||||
@@ -68,23 +94,68 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco
|
||||
public Connectors2 Connectors { get; set; }
|
||||
}
|
||||
|
||||
public class Volume
|
||||
public class Volume : ValueProperty
|
||||
{
|
||||
public string Value { get; set; }
|
||||
string _Value;
|
||||
|
||||
/// <summary>
|
||||
/// Sets Value and triggers the action when set
|
||||
/// </summary>
|
||||
public string Value
|
||||
{
|
||||
get
|
||||
{
|
||||
return _Value;
|
||||
}
|
||||
set
|
||||
{
|
||||
_Value = value;
|
||||
OnValueChanged();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Converted value of _Value for use as feedback
|
||||
/// </summary>
|
||||
public int IntValue
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!string.IsNullOrEmpty(_Value))
|
||||
return Convert.ToInt32(_Value);
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class VolumeMute
|
||||
public class VolumeMute : ValueProperty
|
||||
{
|
||||
public string Value { get; set; }
|
||||
public bool BoolValue { get; private set; }
|
||||
|
||||
public string Value
|
||||
{
|
||||
set
|
||||
{
|
||||
// If the incoming value is "On" it sets the BoolValue true, otherwise sets it false
|
||||
BoolValue = value == "On";
|
||||
OnValueChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class Audio
|
||||
{
|
||||
public Input Input { get; set; }
|
||||
public Microphones Microphones { get; set; }
|
||||
public Microphones Microphones { get; set; } // Can we have this setter fire the update on the CiscoCodec feedback?
|
||||
public Output Output { get; set; }
|
||||
public Volume Volume { get; set; }
|
||||
public VolumeMute VolumeMute { get; set; }
|
||||
public Volume Volume { get; set; }
|
||||
public VolumeMute VolumeMute { get; set; }
|
||||
|
||||
public Audio()
|
||||
{
|
||||
Volume = new Volume();
|
||||
}
|
||||
}
|
||||
|
||||
public class Id
|
||||
@@ -1438,11 +1509,21 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco
|
||||
public Time Time { get; set; }
|
||||
public UserInterface UserInterface { get; set; }
|
||||
public Video Video { get; set; }
|
||||
|
||||
public Status()
|
||||
{
|
||||
Audio = new Audio();
|
||||
}
|
||||
}
|
||||
|
||||
public class RootObject
|
||||
{
|
||||
public Status Status { get; set; }
|
||||
|
||||
public RootObject()
|
||||
{
|
||||
Status = new Status();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,6 +47,11 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
}
|
||||
bool _PrivacyModeIsOn;
|
||||
|
||||
protected override Func<int> VolumeLevelFeedbackFunc
|
||||
{
|
||||
get { throw new NotImplementedException(); }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Dials, yo!
|
||||
/// </summary>
|
||||
|
||||
@@ -9,7 +9,7 @@ using PepperDash.Essentials.Core;
|
||||
|
||||
namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
{
|
||||
public abstract class VideoCodecBase : Device, IRoutingSinkWithSwitching, IUsageTracking, IHasDialer, IHasSharing //, ICodecAudio
|
||||
public abstract class VideoCodecBase : Device, IRoutingSinkWithSwitching, IUsageTracking, IHasDialer, IHasSharing, IBasicVolumeWithFeedback //, ICodecAudio
|
||||
{
|
||||
#region IUsageTracking Members
|
||||
|
||||
@@ -32,6 +32,8 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
abstract protected Func<bool> ReceiveMuteFeedbackFunc { get; }
|
||||
abstract protected Func<bool> PrivacyModeFeedbackFunc { get; }
|
||||
|
||||
abstract protected Func<int> VolumeLevelFeedbackFunc { get; }
|
||||
|
||||
public VideoCodecBase(string key, string name)
|
||||
: base(key, name)
|
||||
{
|
||||
@@ -41,6 +43,8 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
TransmitMuteIsOnFeedback = new BoolFeedback(TransmitMuteFeedbackFunc);
|
||||
PrivacyModeIsOnFeedback = new BoolFeedback(PrivacyModeFeedbackFunc);
|
||||
|
||||
VolumeLevelFeedback = new IntFeedback(VolumeLevelFeedbackFunc);
|
||||
|
||||
InputPorts = new RoutingPortCollection<RoutingInputPort>();
|
||||
|
||||
InCallFeedback.OutputChange += new EventHandler<EventArgs>(InCallFeedback_OutputChange);
|
||||
@@ -114,5 +118,47 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
public StringFeedback SharingSourceFeedback { get; private set; }
|
||||
|
||||
#endregion
|
||||
|
||||
#region IBasicVolumeWithFeedback Members
|
||||
|
||||
public BoolFeedback MuteFeedback { get; private set; }
|
||||
|
||||
public void MuteOff()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void MuteOn()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void SetVolume(ushort level)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public IntFeedback VolumeLevelFeedback { get; private set; }
|
||||
|
||||
#endregion
|
||||
|
||||
#region IBasicVolumeControls Members
|
||||
|
||||
public void MuteToggle()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void VolumeDown(bool pressRelease)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void VolumeUp(bool pressRelease)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user