mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-01-27 03:14:57 +00:00
Compare commits
28 Commits
1.11.1
...
1.12.2-hot
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
db19da124c | ||
|
|
c07f52b06f | ||
|
|
fc3840173e | ||
|
|
ce51a62d97 | ||
|
|
2be42f88bc | ||
|
|
95627df1a6 | ||
|
|
bef07fe41b | ||
|
|
83d2497264 | ||
|
|
50f5145a89 | ||
|
|
a734a869c1 | ||
|
|
c6495577e7 | ||
|
|
5359604098 | ||
|
|
70d2633eb0 | ||
|
|
6715a680cc | ||
|
|
f3fc0f2b26 | ||
|
|
26b968463b | ||
|
|
d33b89f232 | ||
|
|
c19ab76a4c | ||
|
|
040c57b5e1 | ||
|
|
d6864bf214 | ||
|
|
62275890cb | ||
|
|
2a6b845fde | ||
|
|
4fb2d6d755 | ||
|
|
93435b60b5 | ||
|
|
b67eb6325b | ||
|
|
38cb86218c | ||
|
|
c0c67f6c15 | ||
|
|
eb3922aa43 |
@@ -195,6 +195,8 @@ 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/
|
||||
|
||||
@@ -97,10 +97,10 @@ namespace PepperDash.Essentials
|
||||
{
|
||||
TriList.SetSigFalseAction(ButtonPressJoinBase + 1, ShadeDevice.Open);
|
||||
|
||||
TriList.SetSigFalseAction(ButtonPressJoinBase + 2, (ShadeDevice as IShadesOpenCloseStop).StopOrPreset);
|
||||
|
||||
if(ShadeDevice is RelayControlledShade)
|
||||
TriList.SetString(StringJoinBase + 2, (ShadeDevice as RelayControlledShade).StopOrPresetButtonLabel);
|
||||
TriList.SetSigFalseAction(ButtonPressJoinBase + 2, (ShadeDevice as IShadesOpenCloseStop).Stop);
|
||||
|
||||
if (ShadeDevice is IShadesOpenCloseStop)
|
||||
TriList.SetString(StringJoinBase + 2, "Stop");
|
||||
|
||||
TriList.SetSigFalseAction(ButtonPressJoinBase + 3, ShadeDevice.Close);
|
||||
}
|
||||
|
||||
@@ -394,35 +394,45 @@ namespace PepperDash.Essentials.Core.Bridges
|
||||
|
||||
var controlProperties = CommFactory.GetControlPropertiesConfig(dc);
|
||||
|
||||
BasicTriList eisc;
|
||||
|
||||
switch (dc.Type.ToLower())
|
||||
{
|
||||
case "eiscapiadv":
|
||||
case "eiscapiadvanced":
|
||||
{
|
||||
var eisc = new ThreeSeriesTcpIpEthernetIntersystemCommunications(controlProperties.IpIdInt,
|
||||
eisc = new ThreeSeriesTcpIpEthernetIntersystemCommunications(controlProperties.IpIdInt,
|
||||
controlProperties.TcpSshProperties.Address, Global.ControlSystem);
|
||||
return new EiscApiAdvanced(dc, eisc);
|
||||
break;
|
||||
}
|
||||
case "eiscapiadvancedserver":
|
||||
{
|
||||
var eisc = new EISCServer(controlProperties.IpIdInt, Global.ControlSystem);
|
||||
return new EiscApiAdvanced(dc, eisc);
|
||||
eisc = new EISCServer(controlProperties.IpIdInt, Global.ControlSystem);
|
||||
break;
|
||||
}
|
||||
case "eiscapiadvancedclient":
|
||||
{
|
||||
var eisc = new EISCClient(controlProperties.IpIdInt, controlProperties.TcpSshProperties.Address, Global.ControlSystem);
|
||||
return new EiscApiAdvanced(dc, eisc);
|
||||
eisc = new EISCClient(controlProperties.IpIdInt, controlProperties.TcpSshProperties.Address, Global.ControlSystem);
|
||||
break;
|
||||
}
|
||||
case "vceiscapiadv":
|
||||
case "vceiscapiadvanced":
|
||||
{
|
||||
var eisc = new VirtualControlEISCClient(controlProperties.IpIdInt, InitialParametersClass.RoomId,
|
||||
eisc = new VirtualControlEISCClient(controlProperties.IpIdInt, controlProperties.RoomId,
|
||||
Global.ControlSystem);
|
||||
return new EiscApiAdvanced(dc, eisc);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
return null;
|
||||
eisc = null;
|
||||
break;
|
||||
}
|
||||
|
||||
if (eisc == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
return new EiscApiAdvanced(dc, eisc);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@ namespace PepperDash.Essentials.Core.Shades
|
||||
/// <summary>
|
||||
/// Requirements for a device that implements basic Open/Close shade control
|
||||
/// </summary>
|
||||
[Obsolete("Please use IShadesOpenCloseStop instead")]
|
||||
public interface IShadesOpenClose
|
||||
{
|
||||
void Open();
|
||||
@@ -28,15 +29,26 @@ namespace PepperDash.Essentials.Core.Shades
|
||||
/// <summary>
|
||||
/// Requirements for a device that implements basic Open/Close/Stop shade control (Uses 3 relays)
|
||||
/// </summary>
|
||||
public interface IShadesOpenCloseStop : IShadesOpenClose
|
||||
{
|
||||
void StopOrPreset();
|
||||
string StopOrPresetButtonLabel { get; }
|
||||
public interface IShadesOpenCloseStop
|
||||
{
|
||||
void Open();
|
||||
void Close();
|
||||
void Stop();
|
||||
}
|
||||
|
||||
public interface IShadesOpenClosePreset : IShadesOpenCloseStop
|
||||
{
|
||||
void RecallPreset(uint presetNumber);
|
||||
void SavePreset(uint presetNumber);
|
||||
string StopOrPresetButtonLabel { get; }
|
||||
|
||||
event EventHandler PresetSaved;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Requirements for a shade that implements press/hold raise/lower functions
|
||||
/// </summary>
|
||||
/// </summary>
|
||||
[Obsolete("Please use IShadesOpenCloseStop instead")]
|
||||
public interface IShadesRaiseLower
|
||||
{
|
||||
void Raise(bool state);
|
||||
@@ -55,7 +67,7 @@ namespace PepperDash.Essentials.Core.Shades
|
||||
/// <summary>
|
||||
/// Requirements for a shade/scene that is open or closed
|
||||
/// </summary>
|
||||
public interface IShadesOpenClosedFeedback: IShadesOpenClose
|
||||
public interface IShadesOpenClosedFeedback: IShadesOpenCloseStop
|
||||
{
|
||||
BoolFeedback ShadeIsOpenFeedback { get; }
|
||||
BoolFeedback ShadeIsClosedFeedback { get; }
|
||||
@@ -63,15 +75,16 @@ namespace PepperDash.Essentials.Core.Shades
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public interface IShadesStop
|
||||
/// </summary>
|
||||
[Obsolete("Please use IShadesOpenCloseStop instead")]
|
||||
public interface IShadesStop
|
||||
{
|
||||
void Stop();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// Used to implement raise/stop/lower/stop from single button
|
||||
/// </summary>
|
||||
public interface IShadesStopOrMove
|
||||
{
|
||||
void OpenOrStop();
|
||||
@@ -82,7 +95,7 @@ namespace PepperDash.Essentials.Core.Shades
|
||||
/// <summary>
|
||||
/// Basic feedback for shades/scene stopped
|
||||
/// </summary>
|
||||
public interface IShadesStopFeedback
|
||||
public interface IShadesStopFeedback : IShadesOpenCloseStop
|
||||
{
|
||||
BoolFeedback IsStoppedFeedback { get; }
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ namespace PepperDash.Essentials.Core.Shades
|
||||
/// <summary>
|
||||
/// Base class for a shade device
|
||||
/// </summary>
|
||||
public abstract class ShadeBase : EssentialsDevice, IShadesOpenClose
|
||||
public abstract class ShadeBase : EssentialsDevice, IShadesOpenCloseStop
|
||||
{
|
||||
public ShadeBase(string key, string name)
|
||||
: base(key, name)
|
||||
@@ -23,7 +23,7 @@ namespace PepperDash.Essentials.Core.Shades
|
||||
#region iShadesOpenClose Members
|
||||
|
||||
public abstract void Open();
|
||||
public abstract void StopOrPreset();
|
||||
public abstract void Stop();
|
||||
public abstract void Close();
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -223,7 +223,7 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
|
||||
|
||||
SendCameraPresetNamesToApi(presetsCamera, joinMap, trilist);
|
||||
|
||||
for (int i = 0; i < joinMap.NumberOfPresets.JoinNumber; i++)
|
||||
for (int i = 0; i < joinMap.NumberOfPresets.JoinSpan; i++)
|
||||
{
|
||||
int tempNum = i;
|
||||
|
||||
|
||||
@@ -56,9 +56,9 @@ namespace PepperDash.Essentials.Devices.Common.Environment.Somfy
|
||||
PulseOutput(OpenRelay, RelayPulseTime);
|
||||
}
|
||||
|
||||
public override void StopOrPreset()
|
||||
public override void Stop()
|
||||
{
|
||||
Debug.Console(1, this, "Stopping or recalling preset on Shade: '{0}'", this.Name);
|
||||
Debug.Console(1, this, "Stopping Shade: '{0}'", this.Name);
|
||||
|
||||
PulseOutput(StopOrPresetRelay, RelayPulseTime);
|
||||
}
|
||||
|
||||
@@ -1393,11 +1393,11 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
tokenArray[digitalIndex + 1] = new XSigDigitalToken(digitalIndex + 2, call.IsOnHold);
|
||||
|
||||
//serials
|
||||
tokenArray[arrayIndex + 1] = new XSigSerialToken(stringIndex + 1, call.Name ?? String.Empty);
|
||||
tokenArray[arrayIndex + 2] = new XSigSerialToken(stringIndex + 2, call.Number ?? String.Empty);
|
||||
tokenArray[arrayIndex + 3] = new XSigSerialToken(stringIndex + 3, call.Direction.ToString());
|
||||
tokenArray[arrayIndex + 4] = new XSigSerialToken(stringIndex + 4, call.Type.ToString());
|
||||
tokenArray[arrayIndex + 5] = 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
|
||||
@@ -1407,9 +1407,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
|
||||
arrayIndex += offset;
|
||||
stringIndex += maxStrings;
|
||||
digitalIndex++;
|
||||
digitalIndex += maxDigitals;
|
||||
}
|
||||
while (digitalIndex < maxCalls)
|
||||
while (arrayIndex < maxCalls * offset)
|
||||
{
|
||||
//digitals
|
||||
tokenArray[digitalIndex] = new XSigDigitalToken(digitalIndex + 1, false);
|
||||
@@ -1417,16 +1417,16 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
|
||||
|
||||
//serials
|
||||
tokenArray[arrayIndex + 1] = new XSigSerialToken(stringIndex + 1, String.Empty);
|
||||
tokenArray[arrayIndex + 2] = new XSigSerialToken(stringIndex + 2, String.Empty);
|
||||
tokenArray[arrayIndex + 3] = new XSigSerialToken(stringIndex + 3, String.Empty);
|
||||
tokenArray[arrayIndex + 4] = new XSigSerialToken(stringIndex + 4, String.Empty);
|
||||
tokenArray[arrayIndex + 5] = new XSigSerialToken(stringIndex + 5, String.Empty);
|
||||
tokenArray[arrayIndex + 6] = 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;
|
||||
digitalIndex++;
|
||||
digitalIndex += maxDigitals;
|
||||
}
|
||||
|
||||
return GetXSigString(tokenArray);
|
||||
|
||||
@@ -62,6 +62,17 @@ 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)
|
||||
{
|
||||
@@ -75,13 +86,12 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
|
||||
if (_props.CommunicationMonitorProperties != null)
|
||||
{
|
||||
CommunicationMonitor = new GenericCommunicationMonitor(this, Communication,
|
||||
_props.CommunicationMonitorProperties);
|
||||
CommunicationMonitor = new GenericCommunicationMonitor(this, Communication, _props.CommunicationMonitorProperties.PollInterval, _props.CommunicationMonitorProperties.TimeToWarning, _props.CommunicationMonitorProperties.TimeToError,
|
||||
() => Poll(_props.CommunicationMonitorProperties.PollString));
|
||||
}
|
||||
else
|
||||
{
|
||||
CommunicationMonitor = new GenericCommunicationMonitor(this, Communication, 30000, 120000, 300000,
|
||||
"zStatus SystemUnit" + SendDelimiter);
|
||||
CommunicationMonitor = new GenericCommunicationMonitor(this, Communication, 30000, 120000, 300000, () => Poll("zStatus SystemUnit"));
|
||||
}
|
||||
|
||||
DeviceManager.AddDevice(CommunicationMonitor);
|
||||
@@ -960,6 +970,18 @@ 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);
|
||||
@@ -1584,6 +1606,8 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
Id = incomingCall.callerJID
|
||||
};
|
||||
|
||||
_waitingForUserToAcceptOrRejectIncomingCall = true;
|
||||
|
||||
ActiveCalls.Add(newCall);
|
||||
|
||||
OnCallStatusChange(newCall);
|
||||
@@ -1610,6 +1634,8 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
OnCallStatusChange(existingCall);
|
||||
}
|
||||
|
||||
_waitingForUserToAcceptOrRejectIncomingCall = false;
|
||||
|
||||
UpdateCallStatus();
|
||||
}
|
||||
|
||||
@@ -1992,6 +2018,8 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
/// </summary>
|
||||
private void GetBookings()
|
||||
{
|
||||
if (_meetingPasswordRequired || _waitingForUserToAcceptOrRejectIncomingCall) return;
|
||||
|
||||
SendText("zCommand Bookings List");
|
||||
}
|
||||
|
||||
@@ -2179,6 +2207,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
);
|
||||
}
|
||||
|
||||
_meetingPasswordRequired = false;
|
||||
base.OnCallStatusChange(item);
|
||||
|
||||
Debug.Console(1, this, "[OnCallStatusChange] Current Call Status: {0}",
|
||||
@@ -2626,6 +2655,8 @@ 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));
|
||||
@@ -2635,6 +2666,8 @@ 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;
|
||||
@@ -2646,6 +2679,8 @@ 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));
|
||||
@@ -2655,6 +2690,8 @@ 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;
|
||||
@@ -3440,9 +3477,9 @@ 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)
|
||||
@@ -3450,6 +3487,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
var handler = PasswordRequired;
|
||||
if (handler != null)
|
||||
{
|
||||
if(!loginFailed || !loginCancelled)
|
||||
_meetingPasswordRequired = true;
|
||||
|
||||
handler(this, new PasswordPromptEventArgs(lastAttemptIncorrect, loginFailed, loginCancelled, message));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
<packages>
|
||||
<package id="PepperDashCore" version="1.1.1" targetFramework="net35" allowedVersions="[1.0,2.0)"/>
|
||||
<package id="PepperDashCore" version="1.1.3-hotfix-278" targetFramework="net35" allowedVersions="[1.0,2.0)"/>
|
||||
</packages>
|
||||
Reference in New Issue
Block a user