Merge remote-tracking branch 'origin/bugfix/weil20190610' into feature/ecs-1123

# Conflicts:
#	PepperDashEssentials/ControlSystem.cs
#	PepperDashEssentials/Properties/AssemblyInfo.cs
This commit is contained in:
Neil Dorin
2019-07-09 16:52:23 -06:00
4 changed files with 155 additions and 57 deletions

View File

@@ -19,7 +19,8 @@ namespace PepperDash.Essentials.AppServer.Messengers
/// <summary> /// <summary>
/// 221 /// 221
/// </summary> /// </summary>
const uint BDialHangup = 221; const uint BDialHangupOnHook = 221;
/// <summary> /// <summary>
/// 251 /// 251
/// </summary> /// </summary>
@@ -134,7 +135,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
{ {
CurrentCallItem.Status = (eCodecCallStatus)Enum.Parse(typeof(eCodecCallStatus), s, true); CurrentCallItem.Status = (eCodecCallStatus)Enum.Parse(typeof(eCodecCallStatus), s, true);
//GetCurrentCallList(); //GetCurrentCallList();
SendCallsList(); SendFullStatus();
}); });
EISC.SetStringSigAction(SCurrentCallNumber, s => EISC.SetStringSigAction(SCurrentCallNumber, s =>
@@ -162,7 +163,8 @@ namespace PepperDash.Essentials.AppServer.Messengers
// Add straight pulse calls // Add straight pulse calls
Action<string, uint> addAction = (s, u) => Action<string, uint> addAction = (s, u) =>
AppServerController.AddAction(MessagePath + s, new Action(() => EISC.PulseBool(u, 100))); AppServerController.AddAction(MessagePath + s, new Action(() => EISC.PulseBool(u, 100)));
addAction("/endCallById", BDialHangup); addAction("/endCallById", BDialHangupOnHook);
addAction("/endAllCalls", BDialHangupOnHook);
addAction("/acceptById", BIncomingAnswer); addAction("/acceptById", BIncomingAnswer);
addAction("/rejectById", BIncomingReject); addAction("/rejectById", BIncomingReject);
addAction("/speedDial1", BSpeedDial1); addAction("/speedDial1", BSpeedDial1);

View File

@@ -123,6 +123,15 @@ namespace PepperDash.Essentials.AppServer.Messengers
/// </summary> /// </summary>
const uint BCameraModeOff = 833; const uint BCameraModeOff = 833;
/// <summary>
/// 841
/// </summary>
const uint BCameraSelfView = 841;
/// <summary>
/// 842
/// </summary>
const uint BCameraLayout = 842;
/********* Ushorts *********/ /********* Ushorts *********/
@@ -330,6 +339,11 @@ namespace PepperDash.Essentials.AppServer.Messengers
EISC.SetSigTrueAction(BCameraModeManual, () => PostCameraMode()); EISC.SetSigTrueAction(BCameraModeManual, () => PostCameraMode());
EISC.SetSigTrueAction(BCameraModeOff, () => PostCameraMode()); EISC.SetSigTrueAction(BCameraModeOff, () => PostCameraMode());
EISC.SetBoolSigAction(BCameraSelfView, b => PostStatusMessage(new
{
cameraSelfView = b
}));
EISC.SetUShortSigAction(UCameraNumberSelect, (u) => PostSelectedCamera()); EISC.SetUShortSigAction(UCameraNumberSelect, (u) => PostSelectedCamera());
@@ -347,6 +361,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
Action<string, uint> addAction = (s, u) => Action<string, uint> addAction = (s, u) =>
AppServerController.AddAction(MessagePath + s, new Action(() => EISC.PulseBool(u, 100))); AppServerController.AddAction(MessagePath + s, new Action(() => EISC.PulseBool(u, 100)));
addAction("/endCallById", BDialHangup); addAction("/endCallById", BDialHangup);
addAction("/endAllCalls", BDialHangup);
addAction("/acceptById", BIncomingAnswer); addAction("/acceptById", BIncomingAnswer);
addAction("/rejectById", BIncomingReject); addAction("/rejectById", BIncomingReject);
addAction("/speedDial1", BSpeedDial1); addAction("/speedDial1", BSpeedDial1);
@@ -356,6 +371,8 @@ namespace PepperDash.Essentials.AppServer.Messengers
addAction("/cameraModeAuto", BCameraModeAuto); addAction("/cameraModeAuto", BCameraModeAuto);
addAction("/cameraModeManual", BCameraModeManual); addAction("/cameraModeManual", BCameraModeManual);
addAction("/cameraModeOff", BCameraModeOff); addAction("/cameraModeOff", BCameraModeOff);
addAction("/cameraSelfView", BCameraSelfView);
addAction("/cameraLayout", BCameraLayout);
asc.AddAction("/cameraSelect", new Action<string>(SelectCamera)); asc.AddAction("/cameraSelect", new Action<string>(SelectCamera));
@@ -437,6 +454,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
{ {
calls = GetCurrentCallList(), calls = GetCurrentCallList(),
cameraMode = GetCameraMode(), cameraMode = GetCameraMode(),
cameraSelfView = EISC.GetBool(BCameraSelfView),
currentCallString = EISC.GetString(SCurrentCallNumber), currentCallString = EISC.GetString(SCurrentCallNumber),
currentDialString = EISC.GetString(SCurrentDialString), currentDialString = EISC.GetString(SCurrentDialString),
directoryContactSelected = new directoryContactSelected = new
@@ -448,8 +466,9 @@ namespace PepperDash.Essentials.AppServer.Messengers
isInCall = EISC.GetString(SHookState) == "Connected", isInCall = EISC.GetString(SHookState) == "Connected",
hasDirectory = true, hasDirectory = true,
hasDirectorySearch = false, hasDirectorySearch = false,
hasRecents = true, hasRecents = !EISC.BooleanOutput[502].BoolValue,
hasCameras = true, hasCameras = true,
showCamerasWhenNotInCall = EISC.BooleanOutput[503].BoolValue,
selectedCamera = GetSelectedCamera(), selectedCamera = GetSelectedCamera(),
}); });
} }

View File

@@ -27,6 +27,11 @@ namespace PepperDash.Essentials.Room.Cotija
/// </summary> /// </summary>
public const uint RoomIsOn = 301; public const uint RoomIsOn = 301;
/// <summary>
/// 12
/// </summary>
public const uint PrivacyMute = 12;
/// <summary> /// <summary>
/// 41 /// 41
/// </summary> /// </summary>
@@ -38,15 +43,15 @@ namespace PepperDash.Essentials.Room.Cotija
/// <summary> /// <summary>
/// 51 /// 51
/// </summary> /// </summary>
public const uint ActivitySharePress = 51; public const uint ActivityShare = 51;
/// <summary> /// <summary>
/// 52 /// 52
/// </summary> /// </summary>
public const uint ActivityPhoneCallPress = 52; public const uint ActivityPhoneCall = 52;
/// <summary> /// <summary>
/// 53 /// 53
/// </summary> /// </summary>
public const uint ActivityVideoCallPress = 53; public const uint ActivityVideoCall = 53;
/// <summary> /// <summary>
/// 1 /// 1
@@ -85,6 +90,14 @@ namespace PepperDash.Essentials.Room.Cotija
/// </summary> /// </summary>
public const uint ConfigIsReady = 501; public const uint ConfigIsReady = 501;
/// <summary> /// <summary>
/// 502
/// </summary>
public const uint HideVideoConfRecents = 502;
/// <summary>
/// 503
/// </summary>
public const uint ShowCameraWhenNotInCall = 503;
/// <summary>
/// 601 /// 601
/// </summary> /// </summary>
public const uint SourceShareDisableStartJoin = 601; public const uint SourceShareDisableStartJoin = 601;
@@ -319,16 +332,26 @@ namespace PepperDash.Essentials.Room.Cotija
})); }));
Parent.AddAction(@"/room/room1/defaultsource", new Action(() => Parent.AddAction(@"/room/room1/defaultsource", new Action(() =>
EISC.PulseBool(BoolJoin.ActivitySharePress))); EISC.PulseBool(BoolJoin.ActivityShare)));
Parent.AddAction(@"/room/room1/activityVideo", new Action(() =>
EISC.PulseBool(BoolJoin.ActivityVideoCallPress)));
Parent.AddAction(@"/room/room1/activityPhone", new Action(() => Parent.AddAction(@"/room/room1/activityPhone", new Action(() =>
EISC.PulseBool(BoolJoin.ActivityPhoneCallPress))); EISC.PulseBool(BoolJoin.ActivityPhoneCall)));
Parent.AddAction(@"/room/room1/activityVideo", new Action(() =>
EISC.PulseBool(BoolJoin.ActivityVideoCall)));
Parent.AddAction(@"/room/room1/volumes/master/level", new Action<ushort>(u => Parent.AddAction(@"/room/room1/volumes/master/level", new Action<ushort>(u =>
EISC.SetUshort(UshortJoin.MasterVolumeLevel, u))); EISC.SetUshort(UshortJoin.MasterVolumeLevel, u)));
Parent.AddAction(@"/room/room1/volumes/master/muteToggle", new Action(() => Parent.AddAction(@"/room/room1/volumes/master/muteToggle", new Action(() =>
EISC.PulseBool(BoolJoin.MasterVolumeIsMuted))); EISC.PulseBool(BoolJoin.MasterVolumeIsMuted)));
Parent.AddAction(@"/room/room1/volumes/master/privacyMuteToggle", new Action(() =>
EISC.PulseBool(BoolJoin.PrivacyMute)));
for (uint i = 2; i <= 7; i++)
{
var index = i;
Parent.AddAction(string.Format(@"/room/room1/volumes/level-{0}/level", index), new Action<ushort>(u =>
EISC.SetUshort(index, u)));
Parent.AddAction(string.Format(@"/room/room1/volumes/level-{0}/muteToggle", index), new Action(() =>
EISC.PulseBool(index)));
}
Parent.AddAction(@"/room/room1/shutdownStart", new Action(() => Parent.AddAction(@"/room/room1/shutdownStart", new Action(() =>
EISC.PulseBool(BoolJoin.ShutdownStart))); EISC.PulseBool(BoolJoin.ShutdownStart)));
@@ -387,7 +410,6 @@ namespace PepperDash.Essentials.Room.Cotija
} }
} }
})); }));
EISC.SetBoolSigAction(BoolJoin.MasterVolumeIsMuted, b => EISC.SetBoolSigAction(BoolJoin.MasterVolumeIsMuted, b =>
PostStatusMessage(new PostStatusMessage(new
{ {
@@ -399,6 +421,48 @@ namespace PepperDash.Essentials.Room.Cotija
} }
} }
})); }));
EISC.SetBoolSigAction(BoolJoin.PrivacyMute, b =>
PostStatusMessage(new
{
volumes = new
{
master = new
{
privacyMuted = b
}
}
}));
for (uint i = 2; i <= 7; i++)
{
var index = i; // local scope for lambdas
EISC.SetUShortSigAction(index, u => // start at join 2
{
// need a dict in order to create the level-n property on auxFaders
var dict = new Dictionary<string, object>();
dict.Add("level-" + index, new { level = u });
PostStatusMessage(new
{
volumes = new
{
auxFaders = dict,
}
});
});
EISC.SetBoolSigAction(index, b =>
{
// need a dict in order to create the level-n property on auxFaders
var dict = new Dictionary<string, object>();
dict.Add("level-" + index, new { muted = b });
PostStatusMessage(new
{
volumes = new
{
auxFaders = dict,
}
});
});
}
// shutdown things // shutdown things
@@ -421,6 +485,23 @@ namespace PepperDash.Essentials.Room.Cotija
// Config things // Config things
EISC.SetSigTrueAction(BoolJoin.ConfigIsReady, LoadConfigValues); EISC.SetSigTrueAction(BoolJoin.ConfigIsReady, LoadConfigValues);
// Activity modes
EISC.SetSigTrueAction(BoolJoin.ActivityShare, () => UpdateActivity(1));
EISC.SetSigTrueAction(BoolJoin.ActivityPhoneCall, () => UpdateActivity(2));
EISC.SetSigTrueAction(BoolJoin.ActivityVideoCall, () => UpdateActivity(3));
}
/// <summary>
/// Updates activity states
/// </summary>
void UpdateActivity(int mode)
{
PostStatusMessage(new
{
activityMode = mode,
});
} }
/// <summary> /// <summary>
@@ -471,17 +552,6 @@ namespace PepperDash.Essentials.Room.Cotija
rmProps.RoomPhoneNumber = EISC.StringOutput[StringJoin.ConfigRoomPhoneNumber].StringValue; rmProps.RoomPhoneNumber = EISC.StringOutput[StringJoin.ConfigRoomPhoneNumber].StringValue;
rmProps.RoomURI = EISC.StringOutput[StringJoin.ConfigRoomURI].StringValue; rmProps.RoomURI = EISC.StringOutput[StringJoin.ConfigRoomURI].StringValue;
rmProps.SpeedDials = new List<DDVC01SpeedDial>(); rmProps.SpeedDials = new List<DDVC01SpeedDial>();
// add speed dials as long as there are more - up to 4
#warning fix speed dials - 512-515 names, 516-519 numbers
for (uint i = 512; i <= 519; i = i + 2)
{
var num = EISC.StringOutput[i].StringValue;
if (string.IsNullOrEmpty(num))
break;
var name = EISC.StringOutput[i + 1].StringValue;
rmProps.SpeedDials.Add(new DDVC01SpeedDial { Number = num, Name = name});
}
// This MAY need a check // This MAY need a check
rmProps.AudioCodecKey = "audioCodec"; rmProps.AudioCodecKey = "audioCodec";
@@ -575,7 +645,7 @@ namespace PepperDash.Essentials.Room.Cotija
co.SourceLists.Add("default", newSl); co.SourceLists.Add("default", newSl);
// build "audioCodec" config if we need // Build "audioCodec" config if we need
if (!string.IsNullOrEmpty(rmProps.AudioCodecKey)) if (!string.IsNullOrEmpty(rmProps.AudioCodecKey))
{ {
var acFavs = new List<PepperDash.Essentials.Devices.Common.Codec.CodecActiveCallItem>(); var acFavs = new List<PepperDash.Essentials.Devices.Common.Codec.CodecActiveCallItem>();
@@ -610,25 +680,11 @@ namespace PepperDash.Essentials.Room.Cotija
co.Devices.Add(acConf); co.Devices.Add(acConf);
} }
// Build Video codec config
if (!string.IsNullOrEmpty(rmProps.VideoCodecKey)) if (!string.IsNullOrEmpty(rmProps.VideoCodecKey))
{ {
#warning Break out these video codec favs // No favorites, for now?
var favs = new List<PepperDash.Essentials.Devices.Common.Codec.CodecActiveCallItem>(); var favs = new List<PepperDash.Essentials.Devices.Common.Codec.CodecActiveCallItem>();
for (uint i = 0; i < 4; i++)
{
if (!EISC.GetBool(BoolJoin.SpeedDialVisibleStartJoin + i))
{
break;
}
favs.Add(new PepperDash.Essentials.Devices.Common.Codec.CodecActiveCallItem()
{
Name = EISC.GetString(StringJoin.SpeedDialNameStartJoin + i),
Number = EISC.GetString(StringJoin.SpeedDialNumberStartJoin + i),
Type = PepperDash.Essentials.Devices.Common.Codec.eCodecCallType.Audio
});
}
// cameras // cameras
var camsProps = new List<object>(); var camsProps = new List<object>();
@@ -689,39 +745,41 @@ namespace PepperDash.Essentials.Room.Cotija
{ {
if (ConfigIsLoaded) if (ConfigIsLoaded)
{ {
var count = EISC.UShortOutput[801].UShortValue; var count = EISC.UShortOutput[101].UShortValue;
Debug.Console(1, this, "The Fader Count is : {0}", count); Debug.Console(1, this, "The Fader Count is : {0}", count);
// build volumes object, serialize and put in content of method below // build volumes object, serialize and put in content of method below
var auxFaders = new List<Volume>();
// Create auxFaders // Create auxFaders
for (uint i = 2; i <= count; i++) var auxFaderDict = new Dictionary<string, Volume>();
{ for (uint i = 2; i <= count; i++)
auxFaders.Add( {
new Volume(string.Format("level-{0}", i), auxFaderDict.Add("level-" + i,
EISC.UShortOutput[i].UShortValue, new Volume("level-" + i,
EISC.BooleanOutput[i].BoolValue, EISC.UShortOutput[i].UShortValue,
EISC.StringOutput[800 + i].StringValue, EISC.BooleanOutput[i].BoolValue,
true, EISC.StringOutput[i].StringValue,
"someting.png")); true,
} "someting.png"));
}
var volumes = new Volumes(); var volumes = new Volumes();
volumes.Master = new Volume("master", volumes.Master = new Volume("master",
EISC.UShortOutput[UshortJoin.MasterVolumeLevel].UShortValue, EISC.UShortOutput[UshortJoin.MasterVolumeLevel].UShortValue,
EISC.BooleanOutput[BoolJoin.MasterVolumeIsMuted].BoolValue, EISC.BooleanOutput[BoolJoin.MasterVolumeIsMuted].BoolValue,
EISC.StringOutput[801].StringValue, EISC.StringOutput[1].StringValue,
true, true,
"something.png"); "something.png");
volumes.Master.HasPrivacyMute = true;
volumes.Master.PrivacyMuted = EISC.BooleanOutput[BoolJoin.PrivacyMute].BoolValue;
volumes.AuxFaders = auxFaders; volumes.AuxFaders = auxFaderDict;
PostStatusMessage(new PostStatusMessage(new
{ {
activityMode = GetActivityMode(),
isOn = EISC.BooleanOutput[BoolJoin.RoomIsOn].BoolValue, isOn = EISC.BooleanOutput[BoolJoin.RoomIsOn].BoolValue,
selectedSourceKey = EISC.StringOutput[StringJoin.SelectedSourceKey].StringValue, selectedSourceKey = EISC.StringOutput[StringJoin.SelectedSourceKey].StringValue,
volumes = volumes volumes = volumes
@@ -736,6 +794,18 @@ namespace PepperDash.Essentials.Room.Cotija
} }
} }
/// <summary>
/// Returns the activity mode int
/// </summary>
/// <returns></returns>
int GetActivityMode()
{
if (EISC.BooleanOutput[BoolJoin.ActivityPhoneCall].BoolValue) return 2;
else if (EISC.BooleanOutput[BoolJoin.ActivityShare].BoolValue) return 1;
else if (EISC.BooleanOutput[BoolJoin.ActivityVideoCall].BoolValue) return 3;
return 0;
}
/// <summary> /// <summary>
/// Helper for posting status message /// Helper for posting status message
/// </summary> /// </summary>

View File

@@ -14,11 +14,11 @@ namespace PepperDash.Essentials.Room.Cotija
public Volume Master { get; set; } public Volume Master { get; set; }
[JsonProperty("auxFaders")] [JsonProperty("auxFaders")]
public List<Volume> AuxFaders { get; set; } public Dictionary<string, Volume> AuxFaders { get; set; }
public Volumes() public Volumes()
{ {
AuxFaders = new List<Volume>(); AuxFaders = new Dictionary<string, Volume>();
} }
} }
@@ -39,6 +39,13 @@ namespace PepperDash.Essentials.Room.Cotija
[JsonProperty("hasMute")] [JsonProperty("hasMute")]
public bool HasMute { get; set; } public bool HasMute { get; set; }
[JsonProperty("hasPrivacyMute")]
public bool HasPrivacyMute { get; set; }
[JsonProperty("privacyMuted")]
public bool PrivacyMuted { get; set; }
[JsonProperty("muteIcon")] [JsonProperty("muteIcon")]
public string MuteIcon { get; set; } public string MuteIcon { get; set; }