Compare commits

..

1 Commits

Author SHA1 Message Date
Robert Sanders
084a9d0411 fix: issue with number of camera presets 2024-06-28 17:29:13 -04:00
9 changed files with 54 additions and 160 deletions

View File

@@ -195,8 +195,6 @@ namespace PepperDash.Essentials
}
else // Handles Linux OS (Virtual Control)
{
Debug.SetDebugLevel(2);
Debug.Console(0, Debug.ErrorLogLevel.Notice, "Starting Essentials v{0} on Virtual Control Server", Global.AssemblyVersion);
// Set path to User/

View File

@@ -745,28 +745,6 @@ namespace PepperDash.Essentials
{
//Implement this
}
protected override bool AllowVacancyTimerToStart()
{
bool allowVideo = true;
bool allowAudio = true;
if (VideoCodec != null)
{
Debug.Console(2,this, Debug.ErrorLogLevel.Notice, "Room {0} {1} in a video call", Key, VideoCodec.IsInCall ? "is" : "is not");
allowVideo = !VideoCodec.IsInCall;
}
if (AudioCodec != null)
{
Debug.Console(2,this, Debug.ErrorLogLevel.Notice, "Room {0} {1} in an audio call", Key, AudioCodec.IsInCall ? "is" : "is not");
allowAudio = !AudioCodec.IsInCall;
}
Debug.Console(2, this, "Room {0} allowing vacancy timer to start: {1}", Key, allowVideo && allowAudio);
return allowVideo && allowAudio;
}
/// <summary>
/// Does what it says

View File

@@ -394,51 +394,35 @@ namespace PepperDash.Essentials.Core.Bridges
var controlProperties = CommFactory.GetControlPropertiesConfig(dc);
BasicTriList eisc;
switch (dc.Type.ToLower())
{
case "eiscapiadv":
case "eiscapiadvanced":
{
eisc = new ThreeSeriesTcpIpEthernetIntersystemCommunications(controlProperties.IpIdInt,
var eisc = new ThreeSeriesTcpIpEthernetIntersystemCommunications(controlProperties.IpIdInt,
controlProperties.TcpSshProperties.Address, Global.ControlSystem);
break;
return new EiscApiAdvanced(dc, eisc);
}
case "eiscapiadvancedserver":
{
eisc = new EISCServer(controlProperties.IpIdInt, Global.ControlSystem);
break;
var eisc = new EISCServer(controlProperties.IpIdInt, Global.ControlSystem);
return new EiscApiAdvanced(dc, eisc);
}
case "eiscapiadvancedclient":
{
eisc = new EISCClient(controlProperties.IpIdInt, controlProperties.TcpSshProperties.Address, Global.ControlSystem);
break;
var eisc = new EISCClient(controlProperties.IpIdInt, controlProperties.TcpSshProperties.Address, Global.ControlSystem);
return new EiscApiAdvanced(dc, eisc);
}
case "vceiscapiadv":
case "vceiscapiadvanced":
{
if (string.IsNullOrEmpty(controlProperties.RoomId))
{
Debug.Console(0, Debug.ErrorLogLevel.Error, "Unable to build VC-4 EISC Client for device {0}. Room ID is missing or empty", dc.Key);
eisc = null;
break;
}
eisc = new VirtualControlEISCClient(controlProperties.IpIdInt, controlProperties.RoomId,
var eisc = new VirtualControlEISCClient(controlProperties.IpIdInt, InitialParametersClass.RoomId,
Global.ControlSystem);
break;
return new EiscApiAdvanced(dc, eisc);
}
default:
eisc = null;
break;
return null;
}
if (eisc == null)
{
return null;
}
return new EiscApiAdvanced(dc, eisc);
}
}

View File

@@ -343,7 +343,7 @@ namespace PepperDash.Essentials.Core
void RoomIsOccupiedFeedback_OutputChange(object sender, EventArgs e)
{
if (RoomOccupancy.RoomIsOccupiedFeedback.BoolValue == false && AllowVacancyTimerToStart())
if (RoomOccupancy.RoomIsOccupiedFeedback.BoolValue == false)
{
Debug.Console(1, this, Debug.ErrorLogLevel.Notice, "Notice: Vacancy Detected");
// Trigger the timer when the room is vacant
@@ -362,15 +362,6 @@ namespace PepperDash.Essentials.Core
/// </summary>
/// <param name="o"></param>
public abstract void RoomVacatedForTimeoutPeriod(object o);
/// <summary>
/// Allow the vacancy event from an occupancy sensor to turn the room off.
/// </summary>
/// <returns>If the timer should be allowed. Defaults to true</returns>
protected virtual bool AllowVacancyTimerToStart()
{
return true;
}
}
/// <summary>

View File

@@ -31,7 +31,7 @@ namespace PepperDash.Essentials.Core.UI
:base(key, name)
{
if (panel == null)
if (Panel == null)
{
Debug.Console(0, this, "Panel is not valid. Touchpanel class WILL NOT work correctly");
return;
@@ -71,8 +71,6 @@ namespace PepperDash.Essentials.Core.UI
return;
}
}
Panel.LoadSmartObjects(sgdName);
});
AddPostActivationAction(() =>

View File

@@ -223,7 +223,7 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
SendCameraPresetNamesToApi(presetsCamera, joinMap, trilist);
for (int i = 0; i < joinMap.NumberOfPresets.JoinSpan; i++)
for (int i = 0; i < joinMap.PresetRecallStart.JoinSpan; i++)
{
int tempNum = i;

View File

@@ -1393,11 +1393,11 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
tokenArray[digitalIndex + 1] = new XSigDigitalToken(digitalIndex + 2, call.IsOnHold);
//serials
tokenArray[stringIndex] = new XSigSerialToken(stringIndex + 1, call.Name ?? String.Empty);
tokenArray[stringIndex + 1] = new XSigSerialToken(stringIndex + 2, call.Number ?? String.Empty);
tokenArray[stringIndex + 2] = new XSigSerialToken(stringIndex + 3, call.Direction.ToString());
tokenArray[stringIndex + 3] = new XSigSerialToken(stringIndex + 4, call.Type.ToString());
tokenArray[stringIndex + 4] = new XSigSerialToken(stringIndex + 5, call.Status.ToString());
tokenArray[arrayIndex] = new XSigSerialToken(stringIndex + 1, call.Name ?? String.Empty);
tokenArray[arrayIndex + 1] = new XSigSerialToken(stringIndex + 2, call.Number ?? String.Empty);
tokenArray[arrayIndex + 2] = new XSigSerialToken(stringIndex + 3, call.Direction.ToString());
tokenArray[arrayIndex + 3] = new XSigSerialToken(stringIndex + 4, call.Type.ToString());
tokenArray[arrayIndex + 4] = new XSigSerialToken(stringIndex + 5, call.Status.ToString());
if(call.Duration != null)
{
// May need to verify correct string format here
@@ -1417,12 +1417,12 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
//serials
tokenArray[stringIndex] = new XSigSerialToken(stringIndex + 1, String.Empty);
tokenArray[stringIndex + 1] = new XSigSerialToken(stringIndex + 2, String.Empty);
tokenArray[stringIndex + 2] = new XSigSerialToken(stringIndex + 3, String.Empty);
tokenArray[stringIndex + 3] = new XSigSerialToken(stringIndex + 4, String.Empty);
tokenArray[stringIndex + 4] = new XSigSerialToken(stringIndex + 5, String.Empty);
tokenArray[stringIndex + 5] = new XSigSerialToken(stringIndex + 6, String.Empty);
tokenArray[arrayIndex] = new XSigSerialToken(stringIndex + 1, String.Empty);
tokenArray[arrayIndex + 1] = new XSigSerialToken(stringIndex + 2, String.Empty);
tokenArray[arrayIndex + 2] = new XSigSerialToken(stringIndex + 3, String.Empty);
tokenArray[arrayIndex + 3] = new XSigSerialToken(stringIndex + 4, String.Empty);
tokenArray[arrayIndex + 4] = new XSigSerialToken(stringIndex + 5, String.Empty);
tokenArray[arrayIndex + 5] = new XSigSerialToken(stringIndex + 6, String.Empty);
arrayIndex += offset;
stringIndex += maxStrings;

View File

@@ -62,17 +62,6 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
private readonly ZoomRoomPropertiesConfig _props;
private bool _meetingPasswordRequired;
private bool _waitingForUserToAcceptOrRejectIncomingCall;
public void Poll(string pollString)
{
if(_meetingPasswordRequired || _waitingForUserToAcceptOrRejectIncomingCall) return;
SendText(string.Format("{0}{1}", pollString, SendDelimiter));
}
public ZoomRoom(DeviceConfig config, IBasicCommunication comm)
: base(config)
{
@@ -86,12 +75,13 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
if (_props.CommunicationMonitorProperties != null)
{
CommunicationMonitor = new GenericCommunicationMonitor(this, Communication, _props.CommunicationMonitorProperties.PollInterval, _props.CommunicationMonitorProperties.TimeToWarning, _props.CommunicationMonitorProperties.TimeToError,
() => Poll(_props.CommunicationMonitorProperties.PollString));
CommunicationMonitor = new GenericCommunicationMonitor(this, Communication,
_props.CommunicationMonitorProperties);
}
else
{
CommunicationMonitor = new GenericCommunicationMonitor(this, Communication, 30000, 120000, 300000, () => Poll("zStatus SystemUnit"));
CommunicationMonitor = new GenericCommunicationMonitor(this, Communication, 30000, 120000, 300000,
"zStatus SystemUnit" + SendDelimiter);
}
DeviceManager.AddDevice(CommunicationMonitor);
@@ -376,12 +366,26 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
public void SelectCamera(string key)
{
if (CameraIsMutedFeedback.BoolValue)
{
CameraMuteOff();
}
if (Cameras == null)
{
return;
}
SendText(string.Format("zConfiguration Video Camera selectedId: {0}", key));
var camera = Cameras.FirstOrDefault(c => c.Key.IndexOf(key, StringComparison.OrdinalIgnoreCase) > -1);
if (camera != null)
{
Debug.Console(1, this, "Selected Camera with key: '{0}'", camera.Key);
SelectedCamera = camera;
if (CameraIsMutedFeedback.BoolValue)
{
CameraMuteOff();
}
}
else
{
Debug.Console(1, this, "Unable to select camera with key: '{0}'", key);
}
}
public CameraBase FarEndCamera { get; private set; }
@@ -644,27 +648,8 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
{
if (a.PropertyName == "SelectedId")
{
if (Cameras == null)
{
return;
}
var camera = Cameras.FirstOrDefault(c => c.Key.IndexOf(Configuration.Video.Camera.SelectedId, StringComparison.OrdinalIgnoreCase) > -1);
if (camera != null)
{
Debug.Console(1, this, "Camera selected with key: '{0}'", camera.Key);
SelectedCamera = camera;
if (CameraIsMutedFeedback.BoolValue)
{
CameraMuteOff();
}
}
else
{
Debug.Console(1, this, "No camera found with key: '{0}'", Configuration.Video.Camera.SelectedId);
}
SelectCamera(Configuration.Video.Camera.SelectedId);
// this will in turn fire the affected feedbacks
}
};
@@ -975,18 +960,6 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
public void SendText(string command)
{
if (_meetingPasswordRequired)
{
Debug.Console(2, this, "Blocking commands to ZoomRoom while waiting for user to enter meeting password");
return;
}
if (_waitingForUserToAcceptOrRejectIncomingCall)
{
Debug.Console(2, this, "Blocking commands to ZoomRoom while waiting for user to accept or reject incoming call");
return;
}
if (CommDebuggingIsOn)
{
Debug.Console(1, this, "Sending: '{0}'", command);
@@ -1611,8 +1584,6 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
Id = incomingCall.callerJID
};
_waitingForUserToAcceptOrRejectIncomingCall = true;
ActiveCalls.Add(newCall);
OnCallStatusChange(newCall);
@@ -1639,8 +1610,6 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
OnCallStatusChange(existingCall);
}
_waitingForUserToAcceptOrRejectIncomingCall = false;
UpdateCallStatus();
}
@@ -2023,8 +1992,6 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
/// </summary>
private void GetBookings()
{
if (_meetingPasswordRequired || _waitingForUserToAcceptOrRejectIncomingCall) return;
SendText("zCommand Bookings List");
}
@@ -2212,7 +2179,6 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
);
}
_meetingPasswordRequired = false;
base.OnCallStatusChange(item);
Debug.Console(1, this, "[OnCallStatusChange] Current Call Status: {0}",
@@ -2583,7 +2549,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
PasswordRequired += (devices, args) =>
{
Debug.Console(2, this, "***********************************PaswordRequired. Message: {0} Cancelled: {1} Last Incorrect: {2} Failed: {3}", args.Message, args.LoginAttemptCancelled, args.LastAttemptWasIncorrect, args.LoginAttemptFailed);
Debug.Console(0, this, "***********************************PaswordRequired. Message: {0} Cancelled: {1} Last Incorrect: {2} Failed: {3}", args.Message, args.LoginAttemptCancelled, args.LastAttemptWasIncorrect, args.LoginAttemptFailed);
if (args.LoginAttemptCancelled)
{
@@ -2660,8 +2626,6 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
public void AcceptCall()
{
_waitingForUserToAcceptOrRejectIncomingCall = false;
var incomingCall =
ActiveCalls.FirstOrDefault(
c => c.Status.Equals(eCodecCallStatus.Ringing) && c.Direction.Equals(eCodecCallDirection.Incoming));
@@ -2671,8 +2635,6 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
public override void AcceptCall(CodecActiveCallItem call)
{
_waitingForUserToAcceptOrRejectIncomingCall = false;
SendText(string.Format("zCommand Call Accept callerJID: {0}", call.Id));
call.Status = eCodecCallStatus.Connected;
@@ -2684,8 +2646,6 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
public void RejectCall()
{
_waitingForUserToAcceptOrRejectIncomingCall = false;
var incomingCall =
ActiveCalls.FirstOrDefault(
c => c.Status.Equals(eCodecCallStatus.Ringing) && c.Direction.Equals(eCodecCallDirection.Incoming));
@@ -2695,8 +2655,6 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
public override void RejectCall(CodecActiveCallItem call)
{
_waitingForUserToAcceptOrRejectIncomingCall = false;
SendText(string.Format("zCommand Call Reject callerJID: {0}", call.Id));
call.Status = eCodecCallStatus.Disconnected;
@@ -2823,25 +2781,16 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
public void LeaveMeeting()
{
_meetingPasswordRequired = false;
_waitingForUserToAcceptOrRejectIncomingCall = false;
SendText("zCommand Call Leave");
SendText("zCommand Call Leave");
}
public override void EndCall(CodecActiveCallItem call)
{
_meetingPasswordRequired = false;
_waitingForUserToAcceptOrRejectIncomingCall = false;
SendText("zCommand Call Disconnect");
}
public override void EndAllCalls()
{
_meetingPasswordRequired = false;
_waitingForUserToAcceptOrRejectIncomingCall = false;
SendText("zCommand Call Disconnect");
}
@@ -3491,21 +3440,17 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
public void SubmitPassword(string password)
{
_meetingPasswordRequired = false;
Debug.Console(2, this, "Password Submitted: {0}", password);
Dial(_lastDialedMeetingNumber, password);
//OnPasswordRequired(false, false, true, "");
}
void OnPasswordRequired(bool lastAttemptIncorrect, bool loginFailed, bool loginCancelled, string message)
{
_meetingPasswordRequired = !loginFailed || !loginCancelled;
var handler = PasswordRequired;
if (handler != null)
{
Debug.Console(2, this, "Meeting Password Required: {0}", _meetingPasswordRequired);
handler(this, new PasswordPromptEventArgs(lastAttemptIncorrect, loginFailed, loginCancelled, message));
{
handler(this, new PasswordPromptEventArgs(lastAttemptIncorrect, loginFailed, loginCancelled, message));
}
}

View File

@@ -1,3 +1,3 @@
<packages>
<package id="PepperDashCore" version="1.1.4" targetFramework="net35" allowedVersions="[1.0,2.0)"/>
<package id="PepperDashCore" version="1.1.1" targetFramework="net35" allowedVersions="[1.0,2.0)"/>
</packages>