Modified volumes format; added config for VC cameras and recents

This commit is contained in:
Heath Volmer
2019-06-10 11:59:09 -06:00
parent 8585977f71
commit 3ceecd3fbe
6 changed files with 150 additions and 60 deletions

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());
@@ -356,6 +370,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 +453,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

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(() => Parent.AddAction(@"/room/room1/activityVideo", new Action(() =>
EISC.PulseBool(BoolJoin.ActivityVideoCallPress))); EISC.PulseBool(BoolJoin.ActivityVideoCall)));
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/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.ActivityPhoneCall, () => UpdateActivity(3));
EISC.SetSigTrueAction(BoolJoin.ActivityShare, () => UpdateActivity(1));
EISC.SetSigTrueAction(BoolJoin.ActivityVideoCall, () => UpdateActivity(2));
}
/// <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>();
@@ -658,6 +714,8 @@ namespace PepperDash.Essentials.Room.Cotija
{ {
favorites = favs, favorites = favs,
cameras = camsProps, cameras = camsProps,
hideRecents = EISC.BooleanOutput[BoolJoin.HideVideoConfRecents].BoolValue,
showCamerasWhenNotInCall = EISC.BooleanOutput[BoolJoin.ShowCameraWhenNotInCall].BoolValue,
}; };
var str = "videoCodec"; var str = "videoCodec";
var conf = new DeviceConfig() var conf = new DeviceConfig()
@@ -689,22 +747,21 @@ 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
var auxFaderDict = new Dictionary<string, Volume>();
for (uint i = 2; i <= count; i++) for (uint i = 2; i <= count; i++)
{ {
auxFaders.Add( auxFaderDict.Add("level-" + i,
new Volume(string.Format("level-{0}", i), new Volume("level-" + i,
EISC.UShortOutput[i].UShortValue, EISC.UShortOutput[i].UShortValue,
EISC.BooleanOutput[i].BoolValue, EISC.BooleanOutput[i].BoolValue,
EISC.StringOutput[800 + i].StringValue, EISC.StringOutput[i].StringValue,
true, true,
"someting.png")); "someting.png"));
} }
@@ -714,14 +771,17 @@ namespace PepperDash.Essentials.Room.Cotija
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 +796,18 @@ namespace PepperDash.Essentials.Room.Cotija
} }
} }
/// <summary>
/// Returns the activity mode int
/// </summary>
/// <returns></returns>
int GetActivityMode()
{
if (EISC.BooleanOutput[BoolJoin.ActivityPhoneCall].BoolValue) return 3;
else if (EISC.BooleanOutput[BoolJoin.ActivityShare].BoolValue) return 1;
else if (EISC.BooleanOutput[BoolJoin.ActivityVideoCall].BoolValue) return 2;
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; }

View File

@@ -193,17 +193,11 @@ namespace PepperDash.Essentials
var dir = Global.FilePathPrefix + "plugins"; var dir = Global.FilePathPrefix + "plugins";
if (Directory.Exists(dir)) if (Directory.Exists(dir))
{ {
// TODO Clear out or create localPlugins folder (maybe in program slot folder)
Debug.Console(0, Debug.ErrorLogLevel.Notice, "Plugins directory found, checking for factory plugins"); Debug.Console(0, Debug.ErrorLogLevel.Notice, "Plugins directory found, checking for factory plugins");
var di = new DirectoryInfo(dir); var di = new DirectoryInfo(dir);
var files = di.GetFiles("*.dll"); var files = di.GetFiles("*.dll");
foreach (FileInfo fi in files) foreach (FileInfo fi in files)
{ {
// TODO COPY plugin to loadedPlugins folder
// TODO LOAD that loadedPlugins dll file
var assy = Assembly.LoadFrom(fi.FullName); var assy = Assembly.LoadFrom(fi.FullName);
var ver = assy.GetName().Version; var ver = assy.GetName().Version;
var verStr = string.Format("{0}.{1}.{2}.{3}", ver.Major, ver.Minor, ver.Build, ver.Revision); var verStr = string.Format("{0}.{1}.{2}.{3}", ver.Major, ver.Minor, ver.Build, ver.Revision);

View File

@@ -4,5 +4,5 @@
[assembly: AssemblyCompany("PepperDash Technology Corp")] [assembly: AssemblyCompany("PepperDash Technology Corp")]
[assembly: AssemblyProduct("PepperDashEssentials")] [assembly: AssemblyProduct("PepperDashEssentials")]
[assembly: AssemblyCopyright("Copyright © PepperDash Technology Corp 2018")] [assembly: AssemblyCopyright("Copyright © PepperDash Technology Corp 2018")]
[assembly: AssemblyVersion("1.4.5.*")] [assembly: AssemblyVersion("1.4.6.*")]