diff --git a/Essentials Core/PepperDashEssentialsBase/Comm and IR/CommFactory.cs b/Essentials Core/PepperDashEssentialsBase/Comm and IR/CommFactory.cs index 7b3ecd03..7439662b 100644 --- a/Essentials Core/PepperDashEssentialsBase/Comm and IR/CommFactory.cs +++ b/Essentials Core/PepperDashEssentialsBase/Comm and IR/CommFactory.cs @@ -1,149 +1,149 @@ -using System; -using Crestron.SimplSharp; -using Crestron.SimplSharpPro; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; -using PepperDash.Core; -using PepperDash.Essentials.Core.Config; - -namespace PepperDash.Essentials.Core -{ - /// - /// - /// - public class CommFactory - { - public static EssentialsControlPropertiesConfig GetControlPropertiesConfig(DeviceConfig deviceConfig) - { - try - { - return JsonConvert.DeserializeObject - (deviceConfig.Properties["control"].ToString()); - //Debug.Console(2, "Control TEST: {0}", JsonConvert.SerializeObject(controlConfig)); - } - catch (Exception e) - { - - Debug.Console(0, "ERROR: [{0}] Control properties deserialize failed:\r{1}", deviceConfig.Key, e); - return null; - } - } - - - /// - /// Returns a comm method of either com port, TCP, SSH - /// - /// The Device config object - public static IBasicCommunication CreateCommForDevice(DeviceConfig deviceConfig) - { - EssentialsControlPropertiesConfig controlConfig = GetControlPropertiesConfig(deviceConfig); - if (controlConfig == null) - return null; - - IBasicCommunication comm = null; - try - { - var c = controlConfig.TcpSshProperties; - switch (controlConfig.Method) - { - case eControlMethod.Com: - comm = new ComPortController(deviceConfig.Key + "-com", GetComPort(controlConfig), controlConfig.ComParams); - break; - case eControlMethod.IR: - break; - case eControlMethod.Ssh: - { - var ssh = new GenericSshClient(deviceConfig.Key + "-ssh", c.Address, c.Port, c.Username, c.Password); - ssh.AutoReconnect = c.AutoReconnect; - if(ssh.AutoReconnect) - ssh.AutoReconnectIntervalMs = c.AutoReconnectIntervalMs; - comm = ssh; - break; - } - case eControlMethod.Tcpip: - { - var tcp = new GenericTcpIpClient(deviceConfig.Key + "-tcp", c.Address, c.Port, c.BufferSize); - tcp.AutoReconnect = c.AutoReconnect; - if (tcp.AutoReconnect) - tcp.AutoReconnectIntervalMs = c.AutoReconnectIntervalMs; - comm = tcp; - break; - } - case eControlMethod.Telnet: - break; - default: - break; - } - } - catch (Exception e) - { - Debug.Console(0, "Cannot create communication from JSON:\r{0}\r\rException:\r{1}", - deviceConfig.Properties.ToString(), e); - } - - // put it in the device manager if it's the right flavor - var comDev = comm as Device; - if (comDev != null) - DeviceManager.AddDevice(comDev); - return comm; - } - - public static ComPort GetComPort(EssentialsControlPropertiesConfig config) - { - var comPar = config.ComParams; - var dev = GetIComPortsDeviceFromManagedDevice(config.ControlPortDevKey); - if (dev != null && config.ControlPortNumber <= dev.NumberOfComPorts) - return dev.ComPorts[config.ControlPortNumber]; - Debug.Console(0, "GetComPort: Device '{0}' does not have com port {1}", config.ControlPortDevKey, config.ControlPortNumber); - return null; - } - - /// - /// Helper to grab the IComPorts device for this PortDeviceKey. Key "controlSystem" will - /// return the ControlSystem object from the Global class. - /// - /// IComPorts device or null if the device is not found or does not implement IComPorts - public static IComPorts GetIComPortsDeviceFromManagedDevice(string ComPortDevKey) - { - if ((ComPortDevKey.Equals("controlSystem", System.StringComparison.OrdinalIgnoreCase) - || ComPortDevKey.Equals("processor", System.StringComparison.OrdinalIgnoreCase)) - && Global.ControlSystem is IComPorts) - return Global.ControlSystem; - else - { - var dev = DeviceManager.GetDeviceForKey(ComPortDevKey) as IComPorts; - if (dev == null) - Debug.Console(0, "ComPortConfig: Cannot find com port device '{0}'", ComPortDevKey); - return dev; - } - } - } - - /// - /// - /// - public class EssentialsControlPropertiesConfig : - PepperDash.Core.ControlPropertiesConfig - { - // ****** All of these things, except for #Pro-specific com stuff, were - // moved into PepperDash.Core to help non-pro PortalSync. - - //public eControlMethod Method { get; set; } - - //public string ControlPortDevKey { get; set; } - - //[JsonProperty(NullValueHandling = NullValueHandling.Ignore)] // In case "null" is present in config on this value - //public uint ControlPortNumber { get; set; } - - //public TcpSshPropertiesConfig TcpSshProperties { get; set; } - - //public string IrFile { get; set; } - - //public ComPortConfig ComParams { get; set; } - - [JsonConverter(typeof(ComSpecJsonConverter))] - public ComPort.ComPortSpec ComParams { get; set; } - +using System; +using Crestron.SimplSharp; +using Crestron.SimplSharpPro; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using PepperDash.Core; +using PepperDash.Essentials.Core.Config; + +namespace PepperDash.Essentials.Core +{ + /// + /// + /// + public class CommFactory + { + public static EssentialsControlPropertiesConfig GetControlPropertiesConfig(DeviceConfig deviceConfig) + { + try + { + return JsonConvert.DeserializeObject + (deviceConfig.Properties["control"].ToString()); + //Debug.Console(2, "Control TEST: {0}", JsonConvert.SerializeObject(controlConfig)); + } + catch (Exception e) + { + + Debug.Console(0, "ERROR: [{0}] Control properties deserialize failed:\r{1}", deviceConfig.Key, e); + return null; + } + } + + + /// + /// Returns a comm method of either com port, TCP, SSH + /// + /// The Device config object + public static IBasicCommunication CreateCommForDevice(DeviceConfig deviceConfig) + { + EssentialsControlPropertiesConfig controlConfig = GetControlPropertiesConfig(deviceConfig); + if (controlConfig == null) + return null; + + IBasicCommunication comm = null; + try + { + var c = controlConfig.TcpSshProperties; + switch (controlConfig.Method) + { + case eControlMethod.Com: + comm = new ComPortController(deviceConfig.Key + "-com", GetComPort(controlConfig), controlConfig.ComParams); + break; + case eControlMethod.IR: + break; + case eControlMethod.Ssh: + { + var ssh = new GenericSshClient(deviceConfig.Key + "-ssh", c.Address, c.Port, c.Username, c.Password); + ssh.AutoReconnect = c.AutoReconnect; + if(ssh.AutoReconnect) + ssh.AutoReconnectIntervalMs = c.AutoReconnectIntervalMs; + comm = ssh; + break; + } + case eControlMethod.Tcpip: + { + var tcp = new GenericTcpIpClient(deviceConfig.Key + "-tcp", c.Address, c.Port, c.BufferSize); + tcp.AutoReconnect = c.AutoReconnect; + if (tcp.AutoReconnect) + tcp.AutoReconnectIntervalMs = c.AutoReconnectIntervalMs; + comm = tcp; + break; + } + case eControlMethod.Telnet: + break; + default: + break; + } + } + catch (Exception e) + { + Debug.Console(0, "Cannot create communication from JSON:\r{0}\r\rException:\r{1}", + deviceConfig.Properties.ToString(), e); + } + + // put it in the device manager if it's the right flavor + var comDev = comm as Device; + if (comDev != null) + DeviceManager.AddDevice(comDev); + return comm; + } + + public static ComPort GetComPort(EssentialsControlPropertiesConfig config) + { + var comPar = config.ComParams; + var dev = GetIComPortsDeviceFromManagedDevice(config.ControlPortDevKey); + if (dev != null && config.ControlPortNumber <= dev.NumberOfComPorts) + return dev.ComPorts[config.ControlPortNumber]; + Debug.Console(0, "GetComPort: Device '{0}' does not have com port {1}", config.ControlPortDevKey, config.ControlPortNumber); + return null; + } + + /// + /// Helper to grab the IComPorts device for this PortDeviceKey. Key "controlSystem" will + /// return the ControlSystem object from the Global class. + /// + /// IComPorts device or null if the device is not found or does not implement IComPorts + public static IComPorts GetIComPortsDeviceFromManagedDevice(string ComPortDevKey) + { + if ((ComPortDevKey.Equals("controlSystem", System.StringComparison.OrdinalIgnoreCase) + || ComPortDevKey.Equals("processor", System.StringComparison.OrdinalIgnoreCase)) + && Global.ControlSystem is IComPorts) + return Global.ControlSystem; + else + { + var dev = DeviceManager.GetDeviceForKey(ComPortDevKey) as IComPorts; + if (dev == null) + Debug.Console(0, "ComPortConfig: Cannot find com port device '{0}'", ComPortDevKey); + return dev; + } + } + } + + /// + /// + /// + public class EssentialsControlPropertiesConfig : + PepperDash.Core.ControlPropertiesConfig + { + // ****** All of these things, except for #Pro-specific com stuff, were + // moved into PepperDash.Core to help non-pro PortalSync. + + //public eControlMethod Method { get; set; } + + //public string ControlPortDevKey { get; set; } + + //[JsonProperty(NullValueHandling = NullValueHandling.Ignore)] // In case "null" is present in config on this value + //public uint ControlPortNumber { get; set; } + + //public TcpSshPropertiesConfig TcpSshProperties { get; set; } + + //public string IrFile { get; set; } + + //public ComPortConfig ComParams { get; set; } + + [JsonConverter(typeof(ComSpecJsonConverter))] + public ComPort.ComPortSpec ComParams { get; set; } + public string CresnetId { get; set; } /// @@ -162,37 +162,37 @@ namespace PepperDash.Essentials.Core throw new FormatException(string.Format("ERROR:Unable to convert Cresnet ID: {0} to hex. Error:\n{1}", CresnetId)); } } - } - - //public string IpId { get; set; } - - //[JsonIgnore] - //public uint IpIdInt { get { return Convert.ToUInt32(IpId, 16); } } - - //public char EndOfLineChar { get; set; } - - ///// - ///// Defaults to Environment.NewLine; - ///// - //public string EndOfLineString { get; set; } - - //public string DeviceReadyResponsePattern { get; set; } - - //public EssentialsControlPropertiesConfig() - //{ - // EndOfLineString = CrestronEnvironment.NewLine; - //} - } - - public class IrControlSpec - { - public string PortDeviceKey { get; set; } - public uint PortNumber { get; set; } - public string File { get; set; } - } - - //public enum eControlMethod - //{ - // None = 0, Com, IpId, IR, Ssh, Tcpip, Telnet - //} + } + + //public string IpId { get; set; } + + //[JsonIgnore] + //public uint IpIdInt { get { return Convert.ToUInt32(IpId, 16); } } + + //public char EndOfLineChar { get; set; } + + ///// + ///// Defaults to Environment.NewLine; + ///// + //public string EndOfLineString { get; set; } + + //public string DeviceReadyResponsePattern { get; set; } + + //public EssentialsControlPropertiesConfig() + //{ + // EndOfLineString = CrestronEnvironment.NewLine; + //} + } + + public class IrControlSpec + { + public string PortDeviceKey { get; set; } + public uint PortNumber { get; set; } + public string File { get; set; } + } + + //public enum eControlMethod + //{ + // None = 0, Com, IpId, IR, Ssh, Tcpip, Telnet + //} } \ No newline at end of file diff --git a/Essentials Devices Common/Essentials Devices Common/Factory/DeviceFactory.cs b/Essentials Devices Common/Essentials Devices Common/Factory/DeviceFactory.cs index 98a8d702..d88f6dd0 100644 --- a/Essentials Devices Common/Essentials Devices Common/Factory/DeviceFactory.cs +++ b/Essentials Devices Common/Essentials Devices Common/Factory/DeviceFactory.cs @@ -299,7 +299,6 @@ namespace PepperDash.Essentials.Devices.Common { var comm = CommFactory.GetControlPropertiesConfig(dc); - uint id = 0x00; GlsOccupancySensorBase occSensor = null; occSensor = new GlsOirCCn(comm.CresnetIdInt, Global.ControlSystem); @@ -314,7 +313,6 @@ namespace PepperDash.Essentials.Devices.Common { var comm = CommFactory.GetControlPropertiesConfig(dc); - uint id = 0x00; GlsOccupancySensorBase occSensor = null; occSensor = new GlsOdtCCn(comm.CresnetIdInt, Global.ControlSystem); diff --git a/Essentials/PepperDashEssentials/Room/Cotija/CotijaSystemController.cs b/Essentials/PepperDashEssentials/Room/Cotija/CotijaSystemController.cs index 973cac38..58ef4223 100644 --- a/Essentials/PepperDashEssentials/Room/Cotija/CotijaSystemController.cs +++ b/Essentials/PepperDashEssentials/Room/Cotija/CotijaSystemController.cs @@ -200,7 +200,7 @@ namespace PepperDash.Essentials request.Header.SetHeaderValue("Content-Type", "application/json"); request.ContentString = postBody; - Client.DispatchAsync(request, PostConnectionCallback); + var err = Client.DispatchAsync(request, PostConnectionCallback); } } @@ -316,6 +316,7 @@ namespace PepperDash.Essentials /// void PostConnectionCallback(HttpClientResponse resp, HTTP_CALLBACK_ERROR err) { + Debug.Console(1, this, "PostConnectionCallback err: {0}", err); try { if (resp != null && resp.Code == 200) @@ -326,11 +327,7 @@ namespace PepperDash.Essentials ServerReconnectTimer = null; } -#warning The SSE Client from a previous session might need to be killed... - //if (SseClient == null) - //{ - ConnectSseClient(null); - //} + ConnectSseClient(null); } else { diff --git a/Essentials/PepperDashEssentials/UIDrivers/VC/EssentialsVideoCodecUiDriver.cs b/Essentials/PepperDashEssentials/UIDrivers/VC/EssentialsVideoCodecUiDriver.cs index 115d4ab9..8a2f014f 100644 --- a/Essentials/PepperDashEssentials/UIDrivers/VC/EssentialsVideoCodecUiDriver.cs +++ b/Essentials/PepperDashEssentials/UIDrivers/VC/EssentialsVideoCodecUiDriver.cs @@ -79,9 +79,6 @@ namespace PepperDash.Essentials.UIDrivers.VC StringBuilder SearchStringBuilder = new StringBuilder(); BoolFeedback SearchStringBackspaceVisibleFeedback; -#warning WHAT THE HELL happened to this????? - BoolFeedback LayoutButtonEnableFeedback; - ModalDialog IncomingCallModal; eKeypadMode KeypadMode;