//using System; //using System.Collections.Generic; //using System.Linq; //using System.Text; //using Crestron.SimplSharp; //using Crestron.SimplSharpPro.DeviceSupport; //using PepperDash.Core; //using PepperDash.Essentials.Core; //using PepperDash.Essentials.Devices.Common; //namespace PepperDash.Essentials.Bridges //{ // public static class CameraControllerApiExtensions // { // public static BasicTriList _TriList; // public static CameraControllerJoinMap JoinMap; // public static void LinkToApi(this PepperDash.Essentials.Devices.Common.Cameras.CameraBase cameraDevice, BasicTriList trilist, uint joinStart, string joinMapKey) // { // JoinMap = JoinMapHelper.GetJoinMapForDevice(joinMapKey) as CameraControllerJoinMap; // _TriList = trilist; // if (JoinMap == null) // { // JoinMap = new CameraControllerJoinMap(); // } // JoinMap.OffsetJoinNumbers(joinStart); // Debug.Console(1, "Linking to Trilist '{0}'", trilist.ID.ToString("X")); // 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]); // trilist.SetBoolSigAction(JoinMap.Left, (b) => // { // if (b) // { // cameraDevice.PanLeft(); // } // else // { // cameraDevice.Stop(); // } // }); // trilist.SetBoolSigAction(JoinMap.Right, (b) => // { // if (b) // { // cameraDevice.PanRight(); // } // else // { // cameraDevice.Stop(); // } // }); // trilist.SetBoolSigAction(JoinMap.Up, (b) => // { // if (b) // { // cameraDevice.TiltUp(); // } // else // { // cameraDevice.Stop(); // } // }); // trilist.SetBoolSigAction(JoinMap.Down, (b) => // { // if (b) // { // cameraDevice.TiltDown(); // } // else // { // cameraDevice.Stop(); // } // }); // trilist.SetBoolSigAction(JoinMap.ZoomIn, (b) => // { // if (b) // { // cameraDevice.ZoomIn(); // } // else // { // cameraDevice.Stop(); // } // }); // trilist.SetBoolSigAction(JoinMap.ZoomOut, (b) => // { // if (b) // { // cameraDevice.ZoomOut(); // } // else // { // cameraDevice.Stop(); // } // }); // if (cameraDevice.GetType().Name.ToString().ToLower() == "cameravisca") // { // var viscaCamera = cameraDevice as PepperDash.Essentials.Devices.Common.Cameras.CameraVisca; // trilist.SetSigTrueAction(JoinMap.PowerOn, () => viscaCamera.PowerOn()); // trilist.SetSigTrueAction(JoinMap.PowerOff, () => viscaCamera.PowerOff()); // viscaCamera.PowerIsOnFeedback.LinkInputSig(trilist.BooleanInput[JoinMap.PowerOn]); // viscaCamera.PowerIsOnFeedback.LinkComplementInputSig(trilist.BooleanInput[JoinMap.PowerOff]); // viscaCamera.CommunicationMonitor.IsOnlineFeedback.LinkInputSig(trilist.BooleanInput[JoinMap.IsOnline]); // for (int i = 0; i < JoinMap.NumberOfPresets; i++) // { // int tempNum = i; // trilist.SetSigTrueAction((ushort)(JoinMap.PresetRecallOffset + tempNum), () => // { // viscaCamera.RecallPreset(tempNum); // }); // trilist.SetSigTrueAction((ushort)(JoinMap.PresetSaveOffset + tempNum), () => // { // viscaCamera.SavePreset(tempNum); // }); // } // } // } // } // 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 CameraControllerJoinMap() // { // // Digital // IsOnline = 9; // PowerOff = 8; // PowerOn = 7; // Up = 1; // Down = 2; // Left = 3; // Right = 4; // ZoomIn = 5; // ZoomOut = 6; // PresetRecallOffset = 10; // PresetSaveOffset = 30; // NumberOfPresets = 5; // // Analog // } // public override void OffsetJoinNumbers(uint joinStart) // { // var joinOffset = joinStart - 1; // 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; // } // } //}