mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-02-15 04:34:56 +00:00
New JoinMap scheme working on CameraControllerJoinMap. Added MobileControlSIMPLRoomJoinMap and began implementing on MobileControlSIMPLRoomBridge
This commit is contained in:
@@ -55,6 +55,8 @@ namespace PepperDash.Essentials.Bridges
|
||||
{
|
||||
public EiscApiPropertiesConfig PropertiesConfig { get; private set; }
|
||||
|
||||
public Dictionary<string, JoinMapBase> JoinMaps { get; set; }
|
||||
|
||||
public ThreeSeriesTcpIpEthernetIntersystemCommunications Eisc { get; private set; }
|
||||
|
||||
public EiscApi(DeviceConfig dc) :
|
||||
|
||||
@@ -15,7 +15,6 @@ namespace PepperDash.Essentials.Bridges
|
||||
{
|
||||
public static class CameraControllerApiExtensions
|
||||
{
|
||||
|
||||
public static void LinkToApi(this PepperDash.Essentials.Devices.Common.Cameras.CameraBase cameraDevice, BasicTriList trilist, uint joinStart, string joinMapKey)
|
||||
{
|
||||
CameraControllerJoinMap joinMap = new CameraControllerJoinMap();
|
||||
@@ -31,13 +30,13 @@ namespace PepperDash.Essentials.Bridges
|
||||
Debug.Console(0, "Linking to Bridge Type {0}", cameraDevice.GetType().Name.ToString());
|
||||
|
||||
var commMonitor = cameraDevice as ICommunicationMonitor;
|
||||
commMonitor.CommunicationMonitor.IsOnlineFeedback.LinkInputSig(trilist.BooleanInput[joinMap.IsOnline]);
|
||||
commMonitor.CommunicationMonitor.IsOnlineFeedback.LinkInputSig(trilist.BooleanInput[joinMap.GetJoinForKey(CameraControllerJoinMap.IsOnline)]);
|
||||
|
||||
var ptzCamera = cameraDevice as IHasCameraPtzControl;
|
||||
|
||||
if (ptzCamera != null)
|
||||
{
|
||||
trilist.SetBoolSigAction(joinMap.Left, (b) =>
|
||||
trilist.SetBoolSigAction(joinMap.GetJoinForKey(CameraControllerJoinMap.PanLeft), (b) =>
|
||||
{
|
||||
if (b)
|
||||
{
|
||||
@@ -48,7 +47,7 @@ namespace PepperDash.Essentials.Bridges
|
||||
ptzCamera.PanStop();
|
||||
}
|
||||
});
|
||||
trilist.SetBoolSigAction(joinMap.Right, (b) =>
|
||||
trilist.SetBoolSigAction(joinMap.GetJoinForKey(CameraControllerJoinMap.PanRight), (b) =>
|
||||
{
|
||||
if (b)
|
||||
{
|
||||
@@ -60,7 +59,7 @@ namespace PepperDash.Essentials.Bridges
|
||||
}
|
||||
});
|
||||
|
||||
trilist.SetBoolSigAction(joinMap.Up, (b) =>
|
||||
trilist.SetBoolSigAction(joinMap.GetJoinForKey(CameraControllerJoinMap.TiltUp), (b) =>
|
||||
{
|
||||
if (b)
|
||||
{
|
||||
@@ -71,7 +70,7 @@ namespace PepperDash.Essentials.Bridges
|
||||
ptzCamera.TiltStop();
|
||||
}
|
||||
});
|
||||
trilist.SetBoolSigAction(joinMap.Down, (b) =>
|
||||
trilist.SetBoolSigAction(joinMap.GetJoinForKey(CameraControllerJoinMap.TiltDown), (b) =>
|
||||
{
|
||||
if (b)
|
||||
{
|
||||
@@ -83,7 +82,7 @@ namespace PepperDash.Essentials.Bridges
|
||||
}
|
||||
});
|
||||
|
||||
trilist.SetBoolSigAction(joinMap.ZoomIn, (b) =>
|
||||
trilist.SetBoolSigAction(joinMap.GetJoinForKey(CameraControllerJoinMap.ZoomIn), (b) =>
|
||||
{
|
||||
if (b)
|
||||
{
|
||||
@@ -95,7 +94,7 @@ namespace PepperDash.Essentials.Bridges
|
||||
}
|
||||
});
|
||||
|
||||
trilist.SetBoolSigAction(joinMap.ZoomOut, (b) =>
|
||||
trilist.SetBoolSigAction(joinMap.GetJoinForKey(CameraControllerJoinMap.ZoomOut), (b) =>
|
||||
{
|
||||
if (b)
|
||||
{
|
||||
@@ -108,27 +107,57 @@ namespace PepperDash.Essentials.Bridges
|
||||
});
|
||||
}
|
||||
|
||||
if (cameraDevice.GetType().Name.ToString().ToLower() == "cameravisca")
|
||||
if (cameraDevice is IPower)
|
||||
{
|
||||
var viscaCamera = cameraDevice as PepperDash.Essentials.Devices.Common.Cameras.CameraVisca;
|
||||
trilist.SetSigTrueAction(joinMap.PowerOn, () => viscaCamera.PowerOn());
|
||||
trilist.SetSigTrueAction(joinMap.PowerOff, () => viscaCamera.PowerOff());
|
||||
var powerCamera = cameraDevice as IPower;
|
||||
trilist.SetSigTrueAction(joinMap.GetJoinForKey(CameraControllerJoinMap.PowerOn), () => powerCamera.PowerOn());
|
||||
trilist.SetSigTrueAction(joinMap.GetJoinForKey(CameraControllerJoinMap.PowerOff), () => powerCamera.PowerOff());
|
||||
|
||||
powerCamera.PowerIsOnFeedback.LinkInputSig(trilist.BooleanInput[joinMap.GetJoinForKey(CameraControllerJoinMap.PowerOn)]);
|
||||
powerCamera.PowerIsOnFeedback.LinkComplementInputSig(trilist.BooleanInput[joinMap.GetJoinForKey(CameraControllerJoinMap.PowerOff)]);
|
||||
}
|
||||
|
||||
viscaCamera.PowerIsOnFeedback.LinkInputSig(trilist.BooleanInput[joinMap.PowerOn]);
|
||||
viscaCamera.PowerIsOnFeedback.LinkComplementInputSig(trilist.BooleanInput[joinMap.PowerOff]);
|
||||
if (cameraDevice is ICommunicationMonitor)
|
||||
{
|
||||
var monitoredCamera = cameraDevice as ICommunicationMonitor;
|
||||
monitoredCamera.CommunicationMonitor.IsOnlineFeedback.LinkInputSig(trilist.BooleanInput[joinMap.GetJoinForKey(CameraControllerJoinMap.IsOnline)]);
|
||||
}
|
||||
|
||||
viscaCamera.CommunicationMonitor.IsOnlineFeedback.LinkInputSig(trilist.BooleanInput[joinMap.IsOnline]);
|
||||
for (int i = 0; i < joinMap.NumberOfPresets; i++)
|
||||
if (cameraDevice is IHasCameraPresets)
|
||||
{
|
||||
// Set the preset lables when they change
|
||||
var presetsCamera = cameraDevice as IHasCameraPresets;
|
||||
presetsCamera.PresetsListHasChanged += new EventHandler<EventArgs>((o, a) =>
|
||||
{
|
||||
for (int i = 1; i <= joinMap.GetJoinForKey(CameraControllerJoinMap.NumberOfPresets); i++)
|
||||
{
|
||||
int tempNum = i - 1;
|
||||
|
||||
string label = "" ;
|
||||
|
||||
var preset = presetsCamera.Presets.FirstOrDefault(p => p.ID.Equals(i));
|
||||
|
||||
if (preset != null)
|
||||
label = preset.Description;
|
||||
|
||||
trilist.SetString((ushort)(joinMap.GetJoinForKey(CameraControllerJoinMap.PresetLabelStart) + tempNum), label);
|
||||
}
|
||||
});
|
||||
|
||||
for (int i = 0; i < joinMap.GetJoinForKey(CameraControllerJoinMap.NumberOfPresets); i++)
|
||||
{
|
||||
int tempNum = i;
|
||||
trilist.SetSigTrueAction((ushort)(joinMap.PresetRecallOffset + tempNum), () =>
|
||||
|
||||
trilist.SetSigTrueAction((ushort)(joinMap.GetJoinForKey(CameraControllerJoinMap.PresetRecallStart) + tempNum), () =>
|
||||
{
|
||||
viscaCamera.RecallPreset(tempNum);
|
||||
presetsCamera.PresetSelect(tempNum);
|
||||
});
|
||||
trilist.SetSigTrueAction((ushort)(joinMap.GetJoinForKey(CameraControllerJoinMap.PresetSaveStart) + tempNum), () =>
|
||||
{
|
||||
var label = trilist.GetString(joinMap.GetJoinForKey(CameraControllerJoinMap.PresetLabelStart + tempNum));
|
||||
|
||||
presetsCamera.PresetStore(tempNum, label);
|
||||
});
|
||||
trilist.SetSigTrueAction((ushort)(joinMap.PresetSaveOffset + tempNum), () =>
|
||||
{
|
||||
viscaCamera.SavePreset(tempNum);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,112 +8,70 @@ using PepperDash.Essentials.Core;
|
||||
|
||||
namespace PepperDash.Essentials.Bridges
|
||||
{
|
||||
/// <summary>
|
||||
/// Join map for CameraBase devices
|
||||
/// </summary>
|
||||
public class CameraControllerJoinMap : JoinMapBase
|
||||
{
|
||||
public uint IsOnline { get; set; }
|
||||
public uint PowerOff { get; set; }
|
||||
public uint PowerOn { get; set; }
|
||||
public uint Up { get; set; }
|
||||
public uint Down { get; set; }
|
||||
public uint Left { get; set; }
|
||||
public uint Right { get; set; }
|
||||
public uint ZoomIn { get; set; }
|
||||
public uint ZoomOut { get; set; }
|
||||
public uint PresetRecallOffset { get; set; }
|
||||
public uint PresetSaveOffset { get; set; }
|
||||
public uint NumberOfPresets { get; set; }
|
||||
|
||||
public enum eCameraControllerJoinMapKey
|
||||
{
|
||||
IsOnline,
|
||||
PowerOn,
|
||||
PowerOff,
|
||||
TiltUp,
|
||||
TiltDown,
|
||||
PanLeft,
|
||||
PanRight,
|
||||
ZoomIn,
|
||||
ZoomOut,
|
||||
PresetRecallStart,
|
||||
PresetSaveStart,
|
||||
PresetLabelStart,
|
||||
NumberOfPresets
|
||||
}
|
||||
public const string IsOnline = "IsOnline";
|
||||
public const string PowerOff = "PowerOff";
|
||||
public const string PowerOn = "PowerOn";
|
||||
public const string TiltUp = "TiltUp";
|
||||
public const string TiltDown = "TiltDown";
|
||||
public const string PanLeft = "PanLeft";
|
||||
public const string PanRight = "PanRight";
|
||||
public const string ZoomIn = "ZoomIn";
|
||||
public const string ZoomOut = "ZoomOut";
|
||||
public const string PresetRecallStart = "PresetRecallStart";
|
||||
public const string PresetSaveStart = "PresetSaveStart";
|
||||
public const string PresetLabelStart = "PresetReacllStgart";
|
||||
public const string NumberOfPresets = "NumberOfPresets";
|
||||
|
||||
public CameraControllerJoinMap()
|
||||
{
|
||||
Joins = new Dictionary<string, JoinMetadata>();
|
||||
Joins.Add(TiltUp, new JoinMetadata()
|
||||
{ JoinNumber = 1, Label = "Tilt Up", JoinCapabilities = eJoinCapabilities.FromSIMPL, JoinSpan = 1, JoinType = eJoinType.Digital });
|
||||
Joins.Add(TiltDown, new JoinMetadata()
|
||||
{ JoinNumber = 2, Label = "TiltDown", JoinCapabilities = eJoinCapabilities.FromSIMPL, JoinSpan = 1, JoinType = eJoinType.Digital });
|
||||
Joins.Add(PanLeft, new JoinMetadata()
|
||||
{ JoinNumber = 3, Label = "Pan Left", JoinCapabilities = eJoinCapabilities.FromSIMPL, JoinSpan = 1, JoinType = eJoinType.Digital });
|
||||
Joins.Add(PanRight, new JoinMetadata()
|
||||
{ JoinNumber = 4, Label = "Pan Right", JoinCapabilities = eJoinCapabilities.FromSIMPL, JoinSpan = 1, JoinType = eJoinType.Digital });
|
||||
Joins.Add(ZoomIn, new JoinMetadata()
|
||||
{ JoinNumber = 5, Label = "Zoom In", JoinCapabilities = eJoinCapabilities.FromSIMPL, JoinSpan = 1, JoinType = eJoinType.Digital });
|
||||
Joins.Add(ZoomOut, new JoinMetadata()
|
||||
{ JoinNumber = 6, Label = "Zoom Out", JoinCapabilities = eJoinCapabilities.FromSIMPL, JoinSpan = 1, JoinType = eJoinType.Digital });
|
||||
|
||||
Joins.Add(eCameraControllerJoinMapKey.IsOnline.ToString(), new JoinMetadata()
|
||||
{ JoinNumber = 9, Label = "Is Online", JoinCapabilities = eJoinCapabilities.Read, JoinSpan = 1, JoinType = eJoinType.Digital });
|
||||
Joins.Add(eCameraControllerJoinMapKey.PowerOn.ToString(), new JoinMetadata()
|
||||
{ JoinNumber = 7, Label = "Power On", JoinCapabilities = eJoinCapabilities.Read | eJoinCapabilities.Write, JoinSpan = 1, JoinType = eJoinType.Digital });
|
||||
Joins.Add(eCameraControllerJoinMapKey.PowerOff.ToString(), new JoinMetadata()
|
||||
{ JoinNumber = 8, Label = "Power Off", JoinCapabilities = eJoinCapabilities.Read | eJoinCapabilities.Write, JoinSpan = 1, JoinType = eJoinType.Digital });
|
||||
Joins.Add(eCameraControllerJoinMapKey.TiltUp.ToString(), new JoinMetadata()
|
||||
{ JoinNumber = 1, Label = "Tilt Up", JoinCapabilities = eJoinCapabilities.Write, JoinSpan = 1, JoinType = eJoinType.Digital });
|
||||
Joins.Add(eCameraControllerJoinMapKey.TiltDown.ToString(), new JoinMetadata()
|
||||
{ JoinNumber = 2, Label = "TiltDown", JoinCapabilities = eJoinCapabilities.Write, JoinSpan = 1, JoinType = eJoinType.Digital });
|
||||
Joins.Add(eCameraControllerJoinMapKey.PanLeft.ToString(), new JoinMetadata()
|
||||
{ JoinNumber = 3, Label = "Pan Left", JoinCapabilities = eJoinCapabilities.Write, JoinSpan = 1, JoinType = eJoinType.Digital });
|
||||
Joins.Add(eCameraControllerJoinMapKey.PanRight.ToString(), new JoinMetadata()
|
||||
{ JoinNumber = 4, Label = "Pan Right", JoinCapabilities = eJoinCapabilities.Write, JoinSpan = 1, JoinType = eJoinType.Digital });
|
||||
Joins.Add(eCameraControllerJoinMapKey.ZoomIn.ToString(), new JoinMetadata()
|
||||
{ JoinNumber = 5, Label = "Zoom In", JoinCapabilities = eJoinCapabilities.Write, JoinSpan = 1, JoinType = eJoinType.Digital });
|
||||
Joins.Add(eCameraControllerJoinMapKey.ZoomOut.ToString(), new JoinMetadata()
|
||||
{ JoinNumber = 6, Label = "Zoom Out", JoinCapabilities = eJoinCapabilities.Write, JoinSpan = 1, JoinType = eJoinType.Digital });
|
||||
Joins.Add(PowerOn, new JoinMetadata()
|
||||
{ JoinNumber = 7, Label = "Power On", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinSpan = 1, JoinType = eJoinType.Digital });
|
||||
Joins.Add(PowerOff, new JoinMetadata()
|
||||
{ JoinNumber = 8, Label = "Power Off", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinSpan = 1, JoinType = eJoinType.Digital });
|
||||
Joins.Add(IsOnline, new JoinMetadata()
|
||||
{ JoinNumber = 9, Label = "Is Online", JoinCapabilities = eJoinCapabilities.ToSIMPL, JoinSpan = 1, JoinType = eJoinType.Digital });
|
||||
|
||||
Joins.Add(eCameraControllerJoinMapKey.PresetRecallStart.ToString(), new JoinMetadata()
|
||||
{ JoinNumber = 11, Label = "Preset Recall Start", JoinCapabilities = eJoinCapabilities.Write, JoinSpan = 20, JoinType = eJoinType.Digital });
|
||||
Joins.Add(eCameraControllerJoinMapKey.PresetLabelStart.ToString(), new JoinMetadata()
|
||||
{ JoinNumber = 11, Label = "Preset Label Start", JoinCapabilities = eJoinCapabilities.Write, JoinSpan = 20, JoinType = eJoinType.Serial });
|
||||
Joins.Add(PresetRecallStart, new JoinMetadata()
|
||||
{ JoinNumber = 11, Label = "Preset Recall Start", JoinCapabilities = eJoinCapabilities.FromSIMPL, JoinSpan = 20, JoinType = eJoinType.Digital });
|
||||
Joins.Add(PresetLabelStart, new JoinMetadata()
|
||||
{ JoinNumber = 11, Label = "Preset Label Start", JoinCapabilities = eJoinCapabilities.FromSIMPL, JoinSpan = 20, JoinType = eJoinType.Serial });
|
||||
|
||||
Joins.Add(eCameraControllerJoinMapKey.PresetSaveStart.ToString(), new JoinMetadata()
|
||||
{ JoinNumber = 31, Label = "Preset Save Start", JoinCapabilities = eJoinCapabilities.Write, JoinSpan = 20, JoinType = eJoinType.Digital });
|
||||
Joins.Add(PresetSaveStart, new JoinMetadata()
|
||||
{ JoinNumber = 31, Label = "Preset Save Start", JoinCapabilities = eJoinCapabilities.FromSIMPL, JoinSpan = 20, JoinType = eJoinType.Digital });
|
||||
|
||||
Joins.Add(eCameraControllerJoinMapKey.NumberOfPresets.ToString(), new JoinMetadata()
|
||||
{ JoinNumber = 5, Label = "Number of Presets", JoinCapabilities = eJoinCapabilities.Write, JoinSpan = 1, JoinType = eJoinType.Analog });
|
||||
Joins.Add(NumberOfPresets, new JoinMetadata()
|
||||
{ JoinNumber = 11, Label = "Number of Presets", JoinCapabilities = eJoinCapabilities.FromSIMPL, JoinSpan = 1, JoinType = eJoinType.Analog });
|
||||
|
||||
// Digital
|
||||
IsOnline = 9;
|
||||
PowerOff = 8;
|
||||
PowerOn = 7;
|
||||
Up = 1;
|
||||
Down = 2;
|
||||
Left = 3;
|
||||
Right = 4;
|
||||
ZoomIn = 5;
|
||||
ZoomOut = 6;
|
||||
PresetRecallOffset = 10;
|
||||
PresetSaveOffset = 30;
|
||||
|
||||
// Analog
|
||||
NumberOfPresets = 5;
|
||||
}
|
||||
|
||||
public override void OffsetJoinNumbers(uint joinStart)
|
||||
{
|
||||
var joinOffset = joinStart - 1;
|
||||
|
||||
|
||||
|
||||
foreach (var join in Joins)
|
||||
{
|
||||
join.Value.JoinNumber = join.Value.JoinNumber + joinOffset;
|
||||
}
|
||||
|
||||
|
||||
|
||||
IsOnline = IsOnline + joinOffset;
|
||||
PowerOff = PowerOff + joinOffset;
|
||||
PowerOn = PowerOn + joinOffset;
|
||||
Up = Up + joinOffset;
|
||||
Down = Down + joinOffset;
|
||||
Left = Left + joinOffset;
|
||||
Right = Right + joinOffset;
|
||||
ZoomIn = ZoomIn + joinOffset;
|
||||
ZoomOut = ZoomOut + joinOffset;
|
||||
PresetRecallOffset = PresetRecallOffset + joinOffset;
|
||||
PresetSaveOffset = PresetSaveOffset + joinOffset;
|
||||
PrintJoinMapInfo();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user