diff --git a/DeviceSQL/DeviceSQL-Key.snk b/DeviceSQL-Key.snk similarity index 100% rename from DeviceSQL/DeviceSQL-Key.snk rename to DeviceSQL-Key.snk diff --git a/DeviceSQL.ChannelManager/DeviceSQL.ChannelManager.sqlproj b/DeviceSQL.ChannelManager/DeviceSQL.ChannelManager.sqlproj new file mode 100644 index 0000000..2ccf90e --- /dev/null +++ b/DeviceSQL.ChannelManager/DeviceSQL.ChannelManager.sqlproj @@ -0,0 +1,71 @@ + + + + + Debug + AnyCPU + DeviceSQL.ChannelManager + 2.0 + 4.1 + {6393a621-3002-48ab-8de0-74a03ffc4afb} + Microsoft.Data.Tools.Schema.Sql.Sql140DatabaseSchemaProvider + Database + + + DeviceSQL.ChannelManager + DeviceSQL.ChannelManager + 1033, CI + BySchemaAndSchemaType + True + v4.8 + CS + Properties + False + True + True + ChannelManager + UNSAFE + False + ..\DeviceSQL-Key.snk + + + bin\Release\ + $(MSBuildProjectName).sql + False + pdbonly + true + false + true + prompt + 4 + + + bin\Debug\ + $(MSBuildProjectName).sql + false + true + full + false + true + true + prompt + 4 + + + 11.0 + + True + 11.0 + + + + + + + + + + + + + \ No newline at end of file diff --git a/DeviceSQL.ChannelManager/Properties/AssemblyInfo.cs b/DeviceSQL.ChannelManager/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..fe87538 --- /dev/null +++ b/DeviceSQL.ChannelManager/Properties/AssemblyInfo.cs @@ -0,0 +1,24 @@ +using System.Reflection; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with the SQLCLR assembly. +[assembly: AssemblyTitle("DeviceSQL.ChannelManager")] +[assembly: AssemblyDescription("DeviceSQL.ChannelManager")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("CloudSonix")] +[assembly: AssemblyProduct("DeviceSQL")] +[assembly: AssemblyCopyright("© CloudSonix. All rights reserved.")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] +[assembly: AssemblyKeyFileAttribute("../DeviceSQL-Key.snk")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/DeviceSQL.DeviceManager/DeviceSQL.DeviceManager.sqlproj b/DeviceSQL.DeviceManager/DeviceSQL.DeviceManager.sqlproj new file mode 100644 index 0000000..85732f8 --- /dev/null +++ b/DeviceSQL.DeviceManager/DeviceSQL.DeviceManager.sqlproj @@ -0,0 +1,72 @@ + + + + + Debug + AnyCPU + DeviceSQL.DeviceManager + 2.0 + 4.1 + {0186afd4-f3e0-42c0-a6ba-58f704804c31} + Microsoft.Data.Tools.Schema.Sql.Sql140DatabaseSchemaProvider + Database + + + DeviceSQL.DeviceManager + DeviceSQL.DeviceManager + 1033, CI + BySchemaAndSchemaType + True + v4.8 + CS + Properties + False + True + True + DeviceManager + + UNSAFE + False + ..\DeviceSQL-Key.snk + + + bin\Release\ + $(MSBuildProjectName).sql + False + pdbonly + true + false + true + prompt + 4 + + + bin\Debug\ + $(MSBuildProjectName).sql + false + true + full + false + true + true + prompt + 4 + + + 11.0 + + True + 11.0 + + + + + + + + + + + + + \ No newline at end of file diff --git a/DeviceSQL.DeviceManager/Properties/AssemblyInfo.cs b/DeviceSQL.DeviceManager/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..358f75f --- /dev/null +++ b/DeviceSQL.DeviceManager/Properties/AssemblyInfo.cs @@ -0,0 +1,24 @@ +using System.Reflection; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with the SQLCLR assembly. +[assembly: AssemblyTitle("DeviceSQL.DeviceManager")] +[assembly: AssemblyDescription("DeviceSQL.DeviceManager")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("CloudSonix")] +[assembly: AssemblyProduct("DeviceSQL")] +[assembly: AssemblyCopyright("© CloudSonix. All rights reserved.")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] +[assembly: AssemblyKeyFileAttribute("../DeviceSQL-Key.snk")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/DeviceSQL/Device/IMaster.cs b/DeviceSQL.Devices.Common/Device/IMaster.cs similarity index 100% rename from DeviceSQL/Device/IMaster.cs rename to DeviceSQL.Devices.Common/Device/IMaster.cs diff --git a/DeviceSQL/Device/IMessage.cs b/DeviceSQL.Devices.Common/Device/IMessage.cs similarity index 100% rename from DeviceSQL/Device/IMessage.cs rename to DeviceSQL.Devices.Common/Device/IMessage.cs diff --git a/DeviceSQL.Utilities.DeploymentScriptFormatter/DeviceSQL.Utilities.DeploymentScriptFormatter.csproj b/DeviceSQL.Devices.Common/DeviceSQL.Devices.Common.csproj similarity index 53% rename from DeviceSQL.Utilities.DeploymentScriptFormatter/DeviceSQL.Utilities.DeploymentScriptFormatter.csproj rename to DeviceSQL.Devices.Common/DeviceSQL.Devices.Common.csproj index fba2682..c0455b4 100644 --- a/DeviceSQL.Utilities.DeploymentScriptFormatter/DeviceSQL.Utilities.DeploymentScriptFormatter.csproj +++ b/DeviceSQL.Devices.Common/DeviceSQL.Devices.Common.csproj @@ -4,16 +4,16 @@ Debug AnyCPU - {0EA05DA7-635F-4018-9F33-0D3419374C9F} - Exe - DeviceSQL.Utilities.DeploymentScriptFormatter - DeviceSQL.Utilities.DeploymentScriptFormatter - v4.6.1 + {5DEADADF-BE60-4774-80C6-97B3A83FA289} + Library + Properties + DeviceSQL.Devices.Common + DeviceSQL.Devices.Common + v4.8 512 - true + true - AnyCPU true full false @@ -23,7 +23,6 @@ 4 - AnyCPU pdbonly true bin\Release\ @@ -31,7 +30,17 @@ prompt 4 + + false + + + + + + + ..\packages\Newtonsoft.Json.12.0.2\lib\net45\Newtonsoft.Json.dll + @@ -42,11 +51,23 @@ - + + + + + + + + + + + + + - + \ No newline at end of file diff --git a/DeviceSQL.Devices.Common/IO/Channels/ChannelTraceEventArgs.cs b/DeviceSQL.Devices.Common/IO/Channels/ChannelTraceEventArgs.cs new file mode 100644 index 0000000..9ac8cd6 --- /dev/null +++ b/DeviceSQL.Devices.Common/IO/Channels/ChannelTraceEventArgs.cs @@ -0,0 +1,23 @@ +#region Imported Types + +using System; +using System.Collections.Generic; +using System.Text; + +#endregion + +namespace DeviceSQL.IO.Channels +{ + public class ChannelTraceEventArgs : EventArgs + { + public DateTime MessageDateTimeStamp { get; set; } + public string Name { get; set; } + public DateTime StartTime { get; set; } + public string Operation { get; set; } + public double Duration { get; set; } + public int Sequence { get; set; } + public int Count { get; set; } + public string Data { get; set; } + public string ChannelType { get; set; } + } +} diff --git a/DeviceSQL/IO/Channels/ChannelTraceListener.cs b/DeviceSQL.Devices.Common/IO/Channels/ChannelTraceListener.cs similarity index 93% rename from DeviceSQL/IO/Channels/ChannelTraceListener.cs rename to DeviceSQL.Devices.Common/IO/Channels/ChannelTraceListener.cs index 5622e9c..29ef775 100644 --- a/DeviceSQL/IO/Channels/ChannelTraceListener.cs +++ b/DeviceSQL.Devices.Common/IO/Channels/ChannelTraceListener.cs @@ -8,12 +8,12 @@ namespace DeviceSQL.IO.Channels { - internal class ChannelTraceListener : TraceListener + public class ChannelTraceListener : TraceListener { #region Events - internal event EventHandler ChannelTraceMessageReceived; + public event EventHandler ChannelTraceMessageReceived; #endregion @@ -29,7 +29,7 @@ internal class ChannelTraceListener : TraceListener #endregion - internal ChannelTraceListener() + public ChannelTraceListener() { try { diff --git a/DeviceSQL/IO/Channels/HexConverter.cs b/DeviceSQL.Devices.Common/IO/Channels/HexConverter.cs similarity index 86% rename from DeviceSQL/IO/Channels/HexConverter.cs rename to DeviceSQL.Devices.Common/IO/Channels/HexConverter.cs index 80acd20..0771a47 100644 --- a/DeviceSQL/IO/Channels/HexConverter.cs +++ b/DeviceSQL.Devices.Common/IO/Channels/HexConverter.cs @@ -4,7 +4,12 @@ #endregion + +#if SQLTYPES +namespace DeviceSQL.SQLTypes.ROC.IO.Channels +#else namespace DeviceSQL.IO.Channels +#endif { public static class HexConverter { diff --git a/DeviceSQL/IO/Channels/IChannel.cs b/DeviceSQL.Devices.Common/IO/Channels/IChannel.cs similarity index 92% rename from DeviceSQL/IO/Channels/IChannel.cs rename to DeviceSQL.Devices.Common/IO/Channels/IChannel.cs index fd55b10..14ecab2 100644 --- a/DeviceSQL/IO/Channels/IChannel.cs +++ b/DeviceSQL.Devices.Common/IO/Channels/IChannel.cs @@ -1,5 +1,6 @@ #region Imported Types +using Newtonsoft.Json; using System; #endregion @@ -8,6 +9,7 @@ namespace DeviceSQL.IO.Channels { public interface IChannel : IDisposable { + [JsonIgnore] object LockObject { get; } string Name { get; set; } bool TracingEnabled { get; set; } diff --git a/DeviceSQL/IO/Channels/IMuxChannel.cs b/DeviceSQL.Devices.Common/IO/Channels/IMuxChannel.cs similarity index 71% rename from DeviceSQL/IO/Channels/IMuxChannel.cs rename to DeviceSQL.Devices.Common/IO/Channels/IMuxChannel.cs index c68b9b8..ff567ea 100644 --- a/DeviceSQL/IO/Channels/IMuxChannel.cs +++ b/DeviceSQL.Devices.Common/IO/Channels/IMuxChannel.cs @@ -2,8 +2,7 @@ namespace DeviceSQL.IO.Channels { public interface IMuxChannel : IChannel { - string SourceChannelName { get; set; } - IChannel SourceChannel { get; } + IChannel SourceChannel { get; set; } int RequestDelay { get; set; } int ResponseDelay { get; set; } int ResponseTimeout { get; set; } diff --git a/DeviceSQL/IO/Channels/SerialPortChannel.cs b/DeviceSQL.Devices.Common/IO/Channels/SerialPortChannel.cs similarity index 99% rename from DeviceSQL/IO/Channels/SerialPortChannel.cs rename to DeviceSQL.Devices.Common/IO/Channels/SerialPortChannel.cs index 2a35c6b..d36279d 100644 --- a/DeviceSQL/IO/Channels/SerialPortChannel.cs +++ b/DeviceSQL.Devices.Common/IO/Channels/SerialPortChannel.cs @@ -57,6 +57,7 @@ public bool TracingEnabled public SerialPort SerialPort { get { return serialPort; } + set { serialPort = value; } } public int ReadTimeout diff --git a/DeviceSQL.Devices.Common/IO/Channels/SerialPortMuxChannel.cs b/DeviceSQL.Devices.Common/IO/Channels/SerialPortMuxChannel.cs new file mode 100644 index 0000000..de31d78 --- /dev/null +++ b/DeviceSQL.Devices.Common/IO/Channels/SerialPortMuxChannel.cs @@ -0,0 +1,142 @@ +#region Imported Types + +using System; +using System.Diagnostics; +using System.IO.Ports; +using System.Linq; + +#endregion + +namespace DeviceSQL.IO.Channels +{ + namespace EnerWorx.ChannelService.IO.Channels + { + public class SerialPortMuxChannel : SerialPortChannel, IMuxChannel + { + + #region Fields + + private IChannel sourceChannel = null; + private int requestDelay = 0; + private int responseDelay = 0; + private int responseTimeout = 3000; + + #endregion + + #region Properties + + public IChannel SourceChannel + { + get + { + return sourceChannel; + } + set + { + if (!(value is IMuxChannel)) + { + sourceChannel = value; + } + else + { + throw new Exception("Source channel must not be a MUX channel"); + } + } + } + + public int RequestDelay + { + get + { + return requestDelay; + } + set + { + requestDelay = value; + } + } + + public int ResponseDelay + { + get + { + return responseDelay; + } + set + { + responseDelay = value; + } + } + + public int ResponseTimeout + { + get + { + return responseTimeout; + } + set + { + responseTimeout = value; + } + } + + #endregion + + #region Mux Methods + + public void Run() + { + SerialPort.DataReceived -= SerialPort_DataReceived; + SerialPort.DataReceived += SerialPort_DataReceived; + } + + public void Stop() + { + SerialPort.DataReceived -= SerialPort_DataReceived; + } + + #endregion + + #region Serial Port Events + + private void SerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e) + { + var startTime = DateTime.Now; + var lockObject = SourceChannel.LockObject; + lock (lockObject) + { + var masterStopWatch = new Stopwatch(); + var requestBytes = new byte[] { }; + + TimedThreadBlocker.Wait(requestDelay); + + requestBytes = new byte[SerialPort.BytesToRead]; + + if (requestBytes.Length > 0) + { + Read(ref requestBytes, 0, requestBytes.Length, 0); + SourceChannel.Write(ref requestBytes, 0, requestBytes.Length); + TimedThreadBlocker.Wait(responseDelay); + masterStopWatch.Start(); + + var sequence = 0; + while (SourceChannel.NumberOfBytesAvailable > 0 && responseTimeout > masterStopWatch.ElapsedMilliseconds) + { + var responseBytes = new byte[SourceChannel.NumberOfBytesAvailable]; + + SourceChannel.Read(ref responseBytes, 0, responseBytes.Length, sequence++); + Write(ref responseBytes, 0, responseBytes.Length); + } + + masterStopWatch.Stop(); + + } + } + } + + #endregion + + } + } +} + diff --git a/DeviceSQL/IO/Channels/TcpChannel.cs b/DeviceSQL.Devices.Common/IO/Channels/TcpChannel.cs similarity index 97% rename from DeviceSQL/IO/Channels/TcpChannel.cs rename to DeviceSQL.Devices.Common/IO/Channels/TcpChannel.cs index 9b450db..5bf70fa 100644 --- a/DeviceSQL/IO/Channels/TcpChannel.cs +++ b/DeviceSQL.Devices.Common/IO/Channels/TcpChannel.cs @@ -1,5 +1,6 @@ #region Imported Types +using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Diagnostics; @@ -63,13 +64,13 @@ public int ConnectionRetryDelay set; } - internal int TcpClientReadTimeout + public int TcpClientReadTimeout { get; set; } - internal int TcpClientWriteTimeout + public int TcpClientWriteTimeout { get; set; @@ -87,16 +88,17 @@ public bool TracingEnabled } } - + [JsonIgnore] public TcpClient TcpClient { get { return tcpClient; } - internal set + set { tcpClient = value; } } + [JsonIgnore] public int ReadTimeout { get { return TcpClient.GetStream().ReadTimeout; } @@ -107,6 +109,7 @@ public int ReadTimeout } } + [JsonIgnore] public int WriteTimeout { get { return TcpClient.GetStream().WriteTimeout; } @@ -142,6 +145,7 @@ public string ConnectionString } } + [JsonIgnore] public int NumberOfBytesAvailable { get @@ -186,7 +190,7 @@ public void Write(ref byte[] buffer, int offset, int count) { throw exception; } - Connect: + Connect: currentConnectAttempts++; try { @@ -265,7 +269,7 @@ public int Read(ref byte[] buffer, int offset, int count, int sequence) Thread.Sleep(0); } - Finish: + Finish: timeoutStopWatch.Stop(); masterStopWatch.Stop(); @@ -302,7 +306,7 @@ public int Read(ref byte[] buffer, int offset, int count, int sequence) { throw exception; } - Connect: + Connect: currentConnectAttempts++; try { diff --git a/DeviceSQL/IO/Channels/TcpMuxChannel.cs b/DeviceSQL.Devices.Common/IO/Channels/TcpMuxChannel.cs similarity index 89% rename from DeviceSQL/IO/Channels/TcpMuxChannel.cs rename to DeviceSQL.Devices.Common/IO/Channels/TcpMuxChannel.cs index 43026f8..0923bc6 100644 --- a/DeviceSQL/IO/Channels/TcpMuxChannel.cs +++ b/DeviceSQL.Devices.Common/IO/Channels/TcpMuxChannel.cs @@ -4,6 +4,7 @@ using System.Collections.Generic; using System.Diagnostics; using System.Linq; +using System.Net; using System.Net.Sockets; using System.Threading; using System.Threading.Tasks; @@ -18,14 +19,15 @@ public class TcpMuxChannel : TcpChannel, IMuxChannel #region Fields private object lockObject = new object(); - private volatile int numberOfTcpClients = 0; + private volatile bool stopRequested; private volatile bool hasStopped; - private string sourceChannelName = ""; + private IChannel sourceChannel = null; private int requestDelay = 0; private int responseDelay = 0; private int responseTimeout = 3000; private int maximumNumberOfTcpClients = 5; + private int port = 1000; private TcpListener tcpListener; private List tcpClients = new List(); @@ -37,21 +39,21 @@ public IChannel SourceChannel { get { - return DeviceSQL.Watchdog.Worker.Channels.FirstOrDefault(); - } - } - - public string SourceChannelName - { - get - { - return sourceChannelName; + return sourceChannel; } set { - sourceChannelName = value; + if (!(value is IMuxChannel)) + { + sourceChannel = value; + } + else + { + throw new Exception("Source channel must not be a MUX channel"); + } } } + public int RequestDelay { get @@ -100,6 +102,18 @@ public int MaximumNumberOfTcpClients } } + public int Port + { + get + { + return port; + } + set + { + port = value; + } + } + public IEnumerable TcpClients { get @@ -118,7 +132,10 @@ await Task.Factory.StartNew(() => { try { - + if (tcpListener == null) + { + tcpListener = new TcpListener(IPAddress.Any, 1001); + } tcpListener.Start(MaximumNumberOfTcpClients); stopRequested = false; hasStopped = false; @@ -126,13 +143,12 @@ await Task.Factory.StartNew(() => { try { - if (MaximumNumberOfTcpClients > numberOfTcpClients) + if (MaximumNumberOfTcpClients > tcpClients.Count) { var tcpClient = tcpListener.AcceptTcpClient(); var networkStream = tcpClient.GetStream(); var readBuffer = new byte[1500]; - Interlocked.Increment(ref numberOfTcpClients); tcpClient.Client.SetSocketOption(SocketOptionLevel.Tcp, SocketOptionName.KeepAlive, true); tcpClients.Add(tcpClient); networkStream.BeginRead(readBuffer, 0, 0, new AsyncCallback(TcpClientBeginReadCallback), tcpClient); @@ -168,6 +184,7 @@ await Task.Factory.StartNew(() => private void TcpClientBeginReadCallback(IAsyncResult asyncResult) { + var clientRemoved = false; var tcpClient = asyncResult.AsyncState as TcpClient; try @@ -242,16 +259,19 @@ private void TcpClientBeginReadCallback(IAsyncResult asyncResult) try { tcpClients.Remove(tcpClient); + clientRemoved = true; } catch (Exception ex) { Trace.TraceError($"Error removing TCP Client from list: {ex.Message}"); } - - Interlocked.Decrement(ref numberOfTcpClients); } catch (Exception ex) { + if (!clientRemoved) + { + tcpClients.Remove(tcpClient); + } Trace.TraceError($"Error disposing TCP Client: {ex.Message}"); } } diff --git a/DeviceSQL/IO/Channels/TimedThreadBlocker.cs b/DeviceSQL.Devices.Common/IO/Channels/TimedThreadBlocker.cs similarity index 100% rename from DeviceSQL/IO/Channels/TimedThreadBlocker.cs rename to DeviceSQL.Devices.Common/IO/Channels/TimedThreadBlocker.cs diff --git a/DeviceSQL/IO/Channels/Transport/ITransport.cs b/DeviceSQL.Devices.Common/IO/Channels/Transport/ITransport.cs similarity index 100% rename from DeviceSQL/IO/Channels/Transport/ITransport.cs rename to DeviceSQL.Devices.Common/IO/Channels/Transport/ITransport.cs diff --git a/DeviceSQL.Devices.Common/Properties/AssemblyInfo.cs b/DeviceSQL.Devices.Common/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..38c7b19 --- /dev/null +++ b/DeviceSQL.Devices.Common/Properties/AssemblyInfo.cs @@ -0,0 +1,37 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("DeviceSQL.Devices.Common")] +[assembly: AssemblyDescription("DeviceSQL.Devices.Common")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("CloudSonix")] +[assembly: AssemblyProduct("DeviceSQL")] +[assembly: AssemblyCopyright("© CloudSonix. All rights reserved.")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] +[assembly: AssemblyKeyFileAttribute("../DeviceSQL-Key.snk")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("5deadadf-be60-4774-80c6-97b3a83fa289")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/DeviceSQL.Devices.Common/packages.config b/DeviceSQL.Devices.Common/packages.config new file mode 100644 index 0000000..d5b882e --- /dev/null +++ b/DeviceSQL.Devices.Common/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/DeviceSQL/Device/Modbus/Crc16.cs b/DeviceSQL.Devices.Modbus/Crc16.cs similarity index 100% rename from DeviceSQL/Device/Modbus/Crc16.cs rename to DeviceSQL.Devices.Modbus/Crc16.cs diff --git a/DeviceSQL/Device/Modbus/Data/BooleanRegister.cs b/DeviceSQL.Devices.Modbus/Data/BooleanRegister.cs similarity index 100% rename from DeviceSQL/Device/Modbus/Data/BooleanRegister.cs rename to DeviceSQL.Devices.Modbus/Data/BooleanRegister.cs diff --git a/DeviceSQL/Device/Modbus/Data/CoilRegister.cs b/DeviceSQL.Devices.Modbus/Data/CoilRegister.cs similarity index 100% rename from DeviceSQL/Device/Modbus/Data/CoilRegister.cs rename to DeviceSQL.Devices.Modbus/Data/CoilRegister.cs diff --git a/DeviceSQL/Device/Modbus/Data/DiscreteInputRegister.cs b/DeviceSQL.Devices.Modbus/Data/DiscreteInputRegister.cs similarity index 100% rename from DeviceSQL/Device/Modbus/Data/DiscreteInputRegister.cs rename to DeviceSQL.Devices.Modbus/Data/DiscreteInputRegister.cs diff --git a/DeviceSQL/Device/Modbus/Data/EventArchiveRecord.cs b/DeviceSQL.Devices.Modbus/Data/EventArchiveRecord.cs similarity index 98% rename from DeviceSQL/Device/Modbus/Data/EventArchiveRecord.cs rename to DeviceSQL.Devices.Modbus/Data/EventArchiveRecord.cs index 5c8ba15..e06aeac 100644 --- a/DeviceSQL/Device/Modbus/Data/EventArchiveRecord.cs +++ b/DeviceSQL.Devices.Modbus/Data/EventArchiveRecord.cs @@ -28,7 +28,7 @@ public byte[] Data #region Constructor(s) - internal EventArchiveRecord(ushort index, byte[] data) + public EventArchiveRecord(ushort index, byte[] data) { this.Index = Index; this.Data = data; diff --git a/DeviceSQL/Device/Modbus/Data/FloatRegister.cs b/DeviceSQL.Devices.Modbus/Data/FloatRegister.cs similarity index 98% rename from DeviceSQL/Device/Modbus/Data/FloatRegister.cs rename to DeviceSQL.Devices.Modbus/Data/FloatRegister.cs index a2c4484..0d586fa 100644 --- a/DeviceSQL/Device/Modbus/Data/FloatRegister.cs +++ b/DeviceSQL.Devices.Modbus/Data/FloatRegister.cs @@ -38,13 +38,13 @@ public FloatRegister(MODBUSAddress address, bool byteSwap, bool wordSwap) public bool WordSwap { get; - internal set; + set; } public bool ByteSwap { get; - internal set; + set; } public override System.Single Value diff --git a/DeviceSQL/Device/Modbus/Data/HistoryArchiveRecord.cs b/DeviceSQL.Devices.Modbus/Data/HistoryArchiveRecord.cs similarity index 97% rename from DeviceSQL/Device/Modbus/Data/HistoryArchiveRecord.cs rename to DeviceSQL.Devices.Modbus/Data/HistoryArchiveRecord.cs index 73df2e3..9fd5ba2 100644 --- a/DeviceSQL/Device/Modbus/Data/HistoryArchiveRecord.cs +++ b/DeviceSQL.Devices.Modbus/Data/HistoryArchiveRecord.cs @@ -28,7 +28,7 @@ public byte[] Data #region Constructor(s) - internal HistoryArchiveRecord(ushort index, byte[] data) + public HistoryArchiveRecord(ushort index, byte[] data) { this.Index = index; this.Data = data; diff --git a/DeviceSQL/Device/Modbus/Data/HoldingRegister.cs b/DeviceSQL.Devices.Modbus/Data/HoldingRegister.cs similarity index 100% rename from DeviceSQL/Device/Modbus/Data/HoldingRegister.cs rename to DeviceSQL.Devices.Modbus/Data/HoldingRegister.cs diff --git a/DeviceSQL/Device/Modbus/Data/IModbusRegisterData.cs b/DeviceSQL.Devices.Modbus/Data/IModbusRegisterData.cs similarity index 100% rename from DeviceSQL/Device/Modbus/Data/IModbusRegisterData.cs rename to DeviceSQL.Devices.Modbus/Data/IModbusRegisterData.cs diff --git a/DeviceSQL/Device/Modbus/Data/InputRegister.cs b/DeviceSQL.Devices.Modbus/Data/InputRegister.cs similarity index 100% rename from DeviceSQL/Device/Modbus/Data/InputRegister.cs rename to DeviceSQL.Devices.Modbus/Data/InputRegister.cs diff --git a/DeviceSQL/Device/Modbus/Data/LongRegister.cs b/DeviceSQL.Devices.Modbus/Data/LongRegister.cs similarity index 98% rename from DeviceSQL/Device/Modbus/Data/LongRegister.cs rename to DeviceSQL.Devices.Modbus/Data/LongRegister.cs index 7408fc4..ed76dc5 100644 --- a/DeviceSQL/Device/Modbus/Data/LongRegister.cs +++ b/DeviceSQL.Devices.Modbus/Data/LongRegister.cs @@ -38,13 +38,13 @@ public LongRegister(MODBUSAddress address, bool byteSwap, bool wordSwap) public bool WordSwap { get; - internal set; + set; } public bool ByteSwap { get; - internal set; + set; } public override System.Int32 Value diff --git a/DeviceSQL/Device/Modbus/Data/ModbusAddress.cs b/DeviceSQL.Devices.Modbus/Data/ModbusAddress.cs similarity index 100% rename from DeviceSQL/Device/Modbus/Data/ModbusAddress.cs rename to DeviceSQL.Devices.Modbus/Data/ModbusAddress.cs diff --git a/DeviceSQL/Device/Modbus/Data/ModbusRegister.cs b/DeviceSQL.Devices.Modbus/Data/ModbusRegister.cs similarity index 98% rename from DeviceSQL/Device/Modbus/Data/ModbusRegister.cs rename to DeviceSQL.Devices.Modbus/Data/ModbusRegister.cs index 2a1af99..c7d512c 100644 --- a/DeviceSQL/Device/Modbus/Data/ModbusRegister.cs +++ b/DeviceSQL.Devices.Modbus/Data/ModbusRegister.cs @@ -24,7 +24,7 @@ public MODBUSAddress Address set { this.address = value; } } - protected internal byte[] Data + public byte[] Data { get { diff --git a/DeviceSQL/Device/Modbus/Data/ShortRegister.cs b/DeviceSQL.Devices.Modbus/Data/ShortRegister.cs similarity index 98% rename from DeviceSQL/Device/Modbus/Data/ShortRegister.cs rename to DeviceSQL.Devices.Modbus/Data/ShortRegister.cs index 8f41300..b6a3d46 100644 --- a/DeviceSQL/Device/Modbus/Data/ShortRegister.cs +++ b/DeviceSQL.Devices.Modbus/Data/ShortRegister.cs @@ -37,7 +37,7 @@ public ShortRegister(MODBUSAddress address, bool byteSwap) public bool ByteSwap { get; - internal set; + set; } public override System.Int16 Value diff --git a/DeviceSQL/Device/Modbus/Data/StringRegister.cs b/DeviceSQL.Devices.Modbus/Data/StringRegister.cs similarity index 96% rename from DeviceSQL/Device/Modbus/Data/StringRegister.cs rename to DeviceSQL.Devices.Modbus/Data/StringRegister.cs index 092a748..8885470 100644 --- a/DeviceSQL/Device/Modbus/Data/StringRegister.cs +++ b/DeviceSQL.Devices.Modbus/Data/StringRegister.cs @@ -46,13 +46,13 @@ public byte Length public bool WordSwap { get; - internal set; + set; } public bool ByteSwap { get; - internal set; + set; } public override string Value diff --git a/DeviceSQL/Device/Modbus/Device.cs b/DeviceSQL.Devices.Modbus/Device.cs similarity index 100% rename from DeviceSQL/Device/Modbus/Device.cs rename to DeviceSQL.Devices.Modbus/Device.cs diff --git a/DeviceSQL.Devices.Modbus/DeviceSQL.Devices.Modbus.csproj b/DeviceSQL.Devices.Modbus/DeviceSQL.Devices.Modbus.csproj new file mode 100644 index 0000000..e0df1f4 --- /dev/null +++ b/DeviceSQL.Devices.Modbus/DeviceSQL.Devices.Modbus.csproj @@ -0,0 +1,110 @@ + + + + + Debug + AnyCPU + {0869E7FE-4FAC-4FC5-A2A8-313F410CF8CD} + Library + Properties + DeviceSQL.Devices.Modbus + DeviceSQL.Devices.Modbus + v4.8 + 512 + true + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {5deadadf-be60-4774-80c6-97b3a83fa289} + DeviceSQL.Devices.Common + + + + \ No newline at end of file diff --git a/DeviceSQL/Device/Modbus/IO/Transport/Transport.cs b/DeviceSQL.Devices.Modbus/IO/Transport/Transport.cs similarity index 100% rename from DeviceSQL/Device/Modbus/IO/Transport/Transport.cs rename to DeviceSQL.Devices.Modbus/IO/Transport/Transport.cs diff --git a/DeviceSQL/Device/Modbus/Message/IModbusMessage.cs b/DeviceSQL.Devices.Modbus/Message/IModbusMessage.cs similarity index 100% rename from DeviceSQL/Device/Modbus/Message/IModbusMessage.cs rename to DeviceSQL.Devices.Modbus/Message/IModbusMessage.cs diff --git a/DeviceSQL/Device/Modbus/Message/IModbusRequestMessage.cs b/DeviceSQL.Devices.Modbus/Message/IModbusRequestMessage.cs similarity index 100% rename from DeviceSQL/Device/Modbus/Message/IModbusRequestMessage.cs rename to DeviceSQL.Devices.Modbus/Message/IModbusRequestMessage.cs diff --git a/DeviceSQL/Device/Modbus/Message/IModbusResponseMessage.cs b/DeviceSQL.Devices.Modbus/Message/IModbusResponseMessage.cs similarity index 100% rename from DeviceSQL/Device/Modbus/Message/IModbusResponseMessage.cs rename to DeviceSQL.Devices.Modbus/Message/IModbusResponseMessage.cs diff --git a/DeviceSQL/Device/Modbus/Message/ModbusErrorResponse.cs b/DeviceSQL.Devices.Modbus/Message/ModbusErrorResponse.cs similarity index 100% rename from DeviceSQL/Device/Modbus/Message/ModbusErrorResponse.cs rename to DeviceSQL.Devices.Modbus/Message/ModbusErrorResponse.cs diff --git a/DeviceSQL/Device/Modbus/Message/ModbusMessage.cs b/DeviceSQL.Devices.Modbus/Message/ModbusMessage.cs similarity index 100% rename from DeviceSQL/Device/Modbus/Message/ModbusMessage.cs rename to DeviceSQL.Devices.Modbus/Message/ModbusMessage.cs diff --git a/DeviceSQL/Device/Modbus/Message/ModbusMessageFactory.cs b/DeviceSQL.Devices.Modbus/Message/ModbusMessageFactory.cs similarity index 100% rename from DeviceSQL/Device/Modbus/Message/ModbusMessageFactory.cs rename to DeviceSQL.Devices.Modbus/Message/ModbusMessageFactory.cs diff --git a/DeviceSQL/Device/Modbus/Message/ReadCoilRegistersRequest.cs b/DeviceSQL.Devices.Modbus/Message/ReadCoilRegistersRequest.cs similarity index 100% rename from DeviceSQL/Device/Modbus/Message/ReadCoilRegistersRequest.cs rename to DeviceSQL.Devices.Modbus/Message/ReadCoilRegistersRequest.cs diff --git a/DeviceSQL/Device/Modbus/Message/ReadCoilRegistersResponse.cs b/DeviceSQL.Devices.Modbus/Message/ReadCoilRegistersResponse.cs similarity index 100% rename from DeviceSQL/Device/Modbus/Message/ReadCoilRegistersResponse.cs rename to DeviceSQL.Devices.Modbus/Message/ReadCoilRegistersResponse.cs diff --git a/DeviceSQL/Device/Modbus/Message/ReadDiscreteInputRegistersRequest.cs b/DeviceSQL.Devices.Modbus/Message/ReadDiscreteInputRegistersRequest.cs similarity index 100% rename from DeviceSQL/Device/Modbus/Message/ReadDiscreteInputRegistersRequest.cs rename to DeviceSQL.Devices.Modbus/Message/ReadDiscreteInputRegistersRequest.cs diff --git a/DeviceSQL/Device/Modbus/Message/ReadDiscreteInputRegistersResponse.cs b/DeviceSQL.Devices.Modbus/Message/ReadDiscreteInputRegistersResponse.cs similarity index 100% rename from DeviceSQL/Device/Modbus/Message/ReadDiscreteInputRegistersResponse.cs rename to DeviceSQL.Devices.Modbus/Message/ReadDiscreteInputRegistersResponse.cs diff --git a/DeviceSQL/Device/Modbus/Message/ReadEventArchiveRequest.cs b/DeviceSQL.Devices.Modbus/Message/ReadEventArchiveRequest.cs similarity index 100% rename from DeviceSQL/Device/Modbus/Message/ReadEventArchiveRequest.cs rename to DeviceSQL.Devices.Modbus/Message/ReadEventArchiveRequest.cs diff --git a/DeviceSQL/Device/Modbus/Message/ReadEventArchiveResponse.cs b/DeviceSQL.Devices.Modbus/Message/ReadEventArchiveResponse.cs similarity index 100% rename from DeviceSQL/Device/Modbus/Message/ReadEventArchiveResponse.cs rename to DeviceSQL.Devices.Modbus/Message/ReadEventArchiveResponse.cs diff --git a/DeviceSQL/Device/Modbus/Message/ReadFloatsRequest.cs b/DeviceSQL.Devices.Modbus/Message/ReadFloatsRequest.cs similarity index 100% rename from DeviceSQL/Device/Modbus/Message/ReadFloatsRequest.cs rename to DeviceSQL.Devices.Modbus/Message/ReadFloatsRequest.cs diff --git a/DeviceSQL/Device/Modbus/Message/ReadFloatsResponse.cs b/DeviceSQL.Devices.Modbus/Message/ReadFloatsResponse.cs similarity index 100% rename from DeviceSQL/Device/Modbus/Message/ReadFloatsResponse.cs rename to DeviceSQL.Devices.Modbus/Message/ReadFloatsResponse.cs diff --git a/DeviceSQL/Device/Modbus/Message/ReadHistoryArchiveRequest.cs b/DeviceSQL.Devices.Modbus/Message/ReadHistoryArchiveRequest.cs similarity index 100% rename from DeviceSQL/Device/Modbus/Message/ReadHistoryArchiveRequest.cs rename to DeviceSQL.Devices.Modbus/Message/ReadHistoryArchiveRequest.cs diff --git a/DeviceSQL/Device/Modbus/Message/ReadHistoryArchiveResponse.cs b/DeviceSQL.Devices.Modbus/Message/ReadHistoryArchiveResponse.cs similarity index 100% rename from DeviceSQL/Device/Modbus/Message/ReadHistoryArchiveResponse.cs rename to DeviceSQL.Devices.Modbus/Message/ReadHistoryArchiveResponse.cs diff --git a/DeviceSQL/Device/Modbus/Message/ReadHoldingRegistersRequest.cs b/DeviceSQL.Devices.Modbus/Message/ReadHoldingRegistersRequest.cs similarity index 100% rename from DeviceSQL/Device/Modbus/Message/ReadHoldingRegistersRequest.cs rename to DeviceSQL.Devices.Modbus/Message/ReadHoldingRegistersRequest.cs diff --git a/DeviceSQL/Device/Modbus/Message/ReadHoldingRegistersResponse.cs b/DeviceSQL.Devices.Modbus/Message/ReadHoldingRegistersResponse.cs similarity index 100% rename from DeviceSQL/Device/Modbus/Message/ReadHoldingRegistersResponse.cs rename to DeviceSQL.Devices.Modbus/Message/ReadHoldingRegistersResponse.cs diff --git a/DeviceSQL/Device/Modbus/Message/ReadInputRegistersRequest.cs b/DeviceSQL.Devices.Modbus/Message/ReadInputRegistersRequest.cs similarity index 100% rename from DeviceSQL/Device/Modbus/Message/ReadInputRegistersRequest.cs rename to DeviceSQL.Devices.Modbus/Message/ReadInputRegistersRequest.cs diff --git a/DeviceSQL/Device/Modbus/Message/ReadInputRegistersResponse.cs b/DeviceSQL.Devices.Modbus/Message/ReadInputRegistersResponse.cs similarity index 100% rename from DeviceSQL/Device/Modbus/Message/ReadInputRegistersResponse.cs rename to DeviceSQL.Devices.Modbus/Message/ReadInputRegistersResponse.cs diff --git a/DeviceSQL/Device/Modbus/Message/ReadLongsRequest.cs b/DeviceSQL.Devices.Modbus/Message/ReadLongsRequest.cs similarity index 100% rename from DeviceSQL/Device/Modbus/Message/ReadLongsRequest.cs rename to DeviceSQL.Devices.Modbus/Message/ReadLongsRequest.cs diff --git a/DeviceSQL/Device/Modbus/Message/ReadLongsResponse.cs b/DeviceSQL.Devices.Modbus/Message/ReadLongsResponse.cs similarity index 100% rename from DeviceSQL/Device/Modbus/Message/ReadLongsResponse.cs rename to DeviceSQL.Devices.Modbus/Message/ReadLongsResponse.cs diff --git a/DeviceSQL/Device/Modbus/Message/ReadShortsRequest.cs b/DeviceSQL.Devices.Modbus/Message/ReadShortsRequest.cs similarity index 100% rename from DeviceSQL/Device/Modbus/Message/ReadShortsRequest.cs rename to DeviceSQL.Devices.Modbus/Message/ReadShortsRequest.cs diff --git a/DeviceSQL/Device/Modbus/Message/ReadShortsResponse.cs b/DeviceSQL.Devices.Modbus/Message/ReadShortsResponse.cs similarity index 100% rename from DeviceSQL/Device/Modbus/Message/ReadShortsResponse.cs rename to DeviceSQL.Devices.Modbus/Message/ReadShortsResponse.cs diff --git a/DeviceSQL/Device/Modbus/Message/ReadStringRequest.cs b/DeviceSQL.Devices.Modbus/Message/ReadStringRequest.cs similarity index 100% rename from DeviceSQL/Device/Modbus/Message/ReadStringRequest.cs rename to DeviceSQL.Devices.Modbus/Message/ReadStringRequest.cs diff --git a/DeviceSQL/Device/Modbus/Message/ReadStringResponse.cs b/DeviceSQL.Devices.Modbus/Message/ReadStringResponse.cs similarity index 100% rename from DeviceSQL/Device/Modbus/Message/ReadStringResponse.cs rename to DeviceSQL.Devices.Modbus/Message/ReadStringResponse.cs diff --git a/DeviceSQL/Device/Modbus/Message/WriteBooleanRequest.cs b/DeviceSQL.Devices.Modbus/Message/WriteBooleanRequest.cs similarity index 100% rename from DeviceSQL/Device/Modbus/Message/WriteBooleanRequest.cs rename to DeviceSQL.Devices.Modbus/Message/WriteBooleanRequest.cs diff --git a/DeviceSQL/Device/Modbus/Message/WriteBooleanResponse.cs b/DeviceSQL.Devices.Modbus/Message/WriteBooleanResponse.cs similarity index 100% rename from DeviceSQL/Device/Modbus/Message/WriteBooleanResponse.cs rename to DeviceSQL.Devices.Modbus/Message/WriteBooleanResponse.cs diff --git a/DeviceSQL/Device/Modbus/Message/WriteFloatsRequest.cs b/DeviceSQL.Devices.Modbus/Message/WriteFloatsRequest.cs similarity index 100% rename from DeviceSQL/Device/Modbus/Message/WriteFloatsRequest.cs rename to DeviceSQL.Devices.Modbus/Message/WriteFloatsRequest.cs diff --git a/DeviceSQL/Device/Modbus/Message/WriteFloatsResponse.cs b/DeviceSQL.Devices.Modbus/Message/WriteFloatsResponse.cs similarity index 100% rename from DeviceSQL/Device/Modbus/Message/WriteFloatsResponse.cs rename to DeviceSQL.Devices.Modbus/Message/WriteFloatsResponse.cs diff --git a/DeviceSQL/Device/Modbus/ModbusConverter.cs b/DeviceSQL.Devices.Modbus/ModbusConverter.cs similarity index 100% rename from DeviceSQL/Device/Modbus/ModbusConverter.cs rename to DeviceSQL.Devices.Modbus/ModbusConverter.cs diff --git a/DeviceSQL/Device/Modbus/ModbusMaster.cs b/DeviceSQL.Devices.Modbus/ModbusMaster.cs similarity index 100% rename from DeviceSQL/Device/Modbus/ModbusMaster.cs rename to DeviceSQL.Devices.Modbus/ModbusMaster.cs diff --git a/DeviceSQL/Device/Modbus/ModbusSlaveException.cs b/DeviceSQL.Devices.Modbus/ModbusSlaveException.cs similarity index 100% rename from DeviceSQL/Device/Modbus/ModbusSlaveException.cs rename to DeviceSQL.Devices.Modbus/ModbusSlaveException.cs diff --git a/DeviceSQL.Devices.Modbus/Properties/AssemblyInfo.cs b/DeviceSQL.Devices.Modbus/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..bc9b2fb --- /dev/null +++ b/DeviceSQL.Devices.Modbus/Properties/AssemblyInfo.cs @@ -0,0 +1,37 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("DeviceSQL.Devices.Modbus")] +[assembly: AssemblyDescription("DeviceSQL.Devices.Modbus")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("CloudSonix")] +[assembly: AssemblyProduct("DeviceSQL.Devices.Modbus")] +[assembly: AssemblyCopyright("© CloudSonix. All rights reserved.")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] +[assembly: AssemblyKeyFileAttribute("../DeviceSQL-Key.snk")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("0869e7fe-4fac-4fc5-a2a8-313f410cf8cd")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/DeviceSQL/Device/ROC/Data/Ac10Parameter.cs b/DeviceSQL.Devices.ROC/Data/Ac10Parameter.cs similarity index 86% rename from DeviceSQL/Device/ROC/Data/Ac10Parameter.cs rename to DeviceSQL.Devices.ROC/Data/Ac10Parameter.cs index 364a7c2..6a37fa4 100644 --- a/DeviceSQL/Device/ROC/Data/Ac10Parameter.cs +++ b/DeviceSQL.Devices.ROC/Data/Ac10Parameter.cs @@ -7,12 +7,16 @@ #endregion +#if SQLTYPES +namespace DeviceSQL.SQLTypes.ROC.Data +#else namespace DeviceSQL.Device.ROC.Data +#endif { public class Ac10Parameter : Parameter { - #region Constructor(s) +#region Constructor(s) public Ac10Parameter() : base() @@ -26,9 +30,9 @@ public Ac10Parameter(Tlp tlp) Value = ""; } - #endregion +#endregion - #region Properties +#region Properties public override string Value { @@ -42,7 +46,7 @@ public override string Value } } - #endregion +#endregion } } diff --git a/DeviceSQL/Device/ROC/Data/Ac12Parameter.cs b/DeviceSQL.Devices.ROC/Data/Ac12Parameter.cs similarity index 93% rename from DeviceSQL/Device/ROC/Data/Ac12Parameter.cs rename to DeviceSQL.Devices.ROC/Data/Ac12Parameter.cs index d399890..1d3e8cb 100644 --- a/DeviceSQL/Device/ROC/Data/Ac12Parameter.cs +++ b/DeviceSQL.Devices.ROC/Data/Ac12Parameter.cs @@ -7,7 +7,11 @@ #endregion +#if SQLTYPES +namespace DeviceSQL.SQLTypes.ROC.Data +#else namespace DeviceSQL.Device.ROC.Data +#endif { public class Ac12Parameter : Parameter { diff --git a/DeviceSQL/Device/ROC/Data/Ac20Parameter.cs b/DeviceSQL.Devices.ROC/Data/Ac20Parameter.cs similarity index 93% rename from DeviceSQL/Device/ROC/Data/Ac20Parameter.cs rename to DeviceSQL.Devices.ROC/Data/Ac20Parameter.cs index 260b733..dc76911 100644 --- a/DeviceSQL/Device/ROC/Data/Ac20Parameter.cs +++ b/DeviceSQL.Devices.ROC/Data/Ac20Parameter.cs @@ -7,7 +7,11 @@ #endregion +#if SQLTYPES +namespace DeviceSQL.SQLTypes.ROC.Data +#else namespace DeviceSQL.Device.ROC.Data +#endif { public class Ac20Parameter : Parameter { diff --git a/DeviceSQL/Device/ROC/Data/Ac30Parameter.cs b/DeviceSQL.Devices.ROC/Data/Ac30Parameter.cs similarity index 93% rename from DeviceSQL/Device/ROC/Data/Ac30Parameter.cs rename to DeviceSQL.Devices.ROC/Data/Ac30Parameter.cs index 1cc4962..3d78747 100644 --- a/DeviceSQL/Device/ROC/Data/Ac30Parameter.cs +++ b/DeviceSQL.Devices.ROC/Data/Ac30Parameter.cs @@ -7,7 +7,11 @@ #endregion +#if SQLTYPES +namespace DeviceSQL.SQLTypes.ROC.Data +#else namespace DeviceSQL.Device.ROC.Data +#endif { public class Ac30Parameter : Parameter { diff --git a/DeviceSQL/Device/ROC/Data/Ac3Parameter.cs b/DeviceSQL.Devices.ROC/Data/Ac3Parameter.cs similarity index 93% rename from DeviceSQL/Device/ROC/Data/Ac3Parameter.cs rename to DeviceSQL.Devices.ROC/Data/Ac3Parameter.cs index 19083c7..fb7eeb6 100644 --- a/DeviceSQL/Device/ROC/Data/Ac3Parameter.cs +++ b/DeviceSQL.Devices.ROC/Data/Ac3Parameter.cs @@ -7,7 +7,11 @@ #endregion +#if SQLTYPES +namespace DeviceSQL.SQLTypes.ROC.Data +#else namespace DeviceSQL.Device.ROC.Data +#endif { public class Ac3Parameter : Parameter { diff --git a/DeviceSQL/Device/ROC/Data/Ac40Parameter.cs b/DeviceSQL.Devices.ROC/Data/Ac40Parameter.cs similarity index 93% rename from DeviceSQL/Device/ROC/Data/Ac40Parameter.cs rename to DeviceSQL.Devices.ROC/Data/Ac40Parameter.cs index 0b8d047..93969af 100644 --- a/DeviceSQL/Device/ROC/Data/Ac40Parameter.cs +++ b/DeviceSQL.Devices.ROC/Data/Ac40Parameter.cs @@ -7,7 +7,11 @@ #endregion +#if SQLTYPES +namespace DeviceSQL.SQLTypes.ROC.Data +#else namespace DeviceSQL.Device.ROC.Data +#endif { public class Ac40Parameter : Parameter { diff --git a/DeviceSQL/Device/ROC/Data/Ac7Parameter.cs b/DeviceSQL.Devices.ROC/Data/Ac7Parameter.cs similarity index 93% rename from DeviceSQL/Device/ROC/Data/Ac7Parameter.cs rename to DeviceSQL.Devices.ROC/Data/Ac7Parameter.cs index 2d5384b..85ba59d 100644 --- a/DeviceSQL/Device/ROC/Data/Ac7Parameter.cs +++ b/DeviceSQL.Devices.ROC/Data/Ac7Parameter.cs @@ -7,7 +7,11 @@ #endregion +#if SQLTYPES +namespace DeviceSQL.SQLTypes.ROC.Data +#else namespace DeviceSQL.Device.ROC.Data +#endif { public class Ac7Parameter : Parameter { diff --git a/DeviceSQL/Device/ROC/Data/AlarmRecord.cs b/DeviceSQL.Devices.ROC/Data/AlarmRecord.cs similarity index 99% rename from DeviceSQL/Device/ROC/Data/AlarmRecord.cs rename to DeviceSQL.Devices.ROC/Data/AlarmRecord.cs index 1fdabf7..c97d0f9 100644 --- a/DeviceSQL/Device/ROC/Data/AlarmRecord.cs +++ b/DeviceSQL.Devices.ROC/Data/AlarmRecord.cs @@ -8,7 +8,11 @@ #endregion +#if SQLTYPES +namespace DeviceSQL.SQLTypes.ROC.Data +#else namespace DeviceSQL.Device.ROC.Data +#endif { #region Enums @@ -73,8 +77,8 @@ public class AlarmRecord #region Fields - internal byte[] data; - internal ushort index; + public byte[] data; + public ushort index; #endregion diff --git a/DeviceSQL/Device/ROC/Data/ArchiveInfo.cs b/DeviceSQL.Devices.ROC/Data/ArchiveInfo.cs similarity index 96% rename from DeviceSQL/Device/ROC/Data/ArchiveInfo.cs rename to DeviceSQL.Devices.ROC/Data/ArchiveInfo.cs index 2651fd3..ed748fd 100644 --- a/DeviceSQL/Device/ROC/Data/ArchiveInfo.cs +++ b/DeviceSQL.Devices.ROC/Data/ArchiveInfo.cs @@ -8,14 +8,18 @@ #endregion +#if SQLTYPES +namespace DeviceSQL.SQLTypes.ROC.Data +#else namespace DeviceSQL.Device.ROC.Data +#endif { public class ArchiveInfo { #region Fields - internal byte[] data; + public byte[] data; #endregion diff --git a/DeviceSQL/Device/ROC/Data/AuditLogRecord.cs b/DeviceSQL.Devices.ROC/Data/AuditLogRecord.cs similarity index 91% rename from DeviceSQL/Device/ROC/Data/AuditLogRecord.cs rename to DeviceSQL.Devices.ROC/Data/AuditLogRecord.cs index 8b8570e..1335f3a 100644 --- a/DeviceSQL/Device/ROC/Data/AuditLogRecord.cs +++ b/DeviceSQL.Devices.ROC/Data/AuditLogRecord.cs @@ -4,7 +4,11 @@ #endregion +#if SQLTYPES +namespace DeviceSQL.SQLTypes.ROC.Data +#else namespace DeviceSQL.Device.ROC.Data +#endif { public class AuditLogRecord : EventRecord { diff --git a/DeviceSQL/Device/ROC/Data/BinParameter.cs b/DeviceSQL.Devices.ROC/Data/BinParameter.cs similarity index 92% rename from DeviceSQL/Device/ROC/Data/BinParameter.cs rename to DeviceSQL.Devices.ROC/Data/BinParameter.cs index 4f13b0c..3fb5b36 100644 --- a/DeviceSQL/Device/ROC/Data/BinParameter.cs +++ b/DeviceSQL.Devices.ROC/Data/BinParameter.cs @@ -7,7 +7,11 @@ #endregion +#if SQLTYPES +namespace DeviceSQL.SQLTypes.ROC.Data +#else namespace DeviceSQL.Device.ROC.Data +#endif { public class BinParameter : Parameter { diff --git a/DeviceSQL/Device/ROC/Data/DoubleParameter.cs b/DeviceSQL.Devices.ROC/Data/DoubleParameter.cs similarity index 96% rename from DeviceSQL/Device/ROC/Data/DoubleParameter.cs rename to DeviceSQL.Devices.ROC/Data/DoubleParameter.cs index 5376602..28bb7ed 100644 --- a/DeviceSQL/Device/ROC/Data/DoubleParameter.cs +++ b/DeviceSQL.Devices.ROC/Data/DoubleParameter.cs @@ -7,7 +7,11 @@ #endregion +#if SQLTYPES +namespace DeviceSQL.SQLTypes.ROC.Data +#else namespace DeviceSQL.Device.ROC.Data +#endif { public class DoubleParameter : Parameter { diff --git a/DeviceSQL/Device/ROC/Data/EventRecord.cs b/DeviceSQL.Devices.ROC/Data/EventRecord.cs similarity index 99% rename from DeviceSQL/Device/ROC/Data/EventRecord.cs rename to DeviceSQL.Devices.ROC/Data/EventRecord.cs index cf13ac5..48cc03f 100644 --- a/DeviceSQL/Device/ROC/Data/EventRecord.cs +++ b/DeviceSQL.Devices.ROC/Data/EventRecord.cs @@ -8,7 +8,11 @@ #endregion +#if SQLTYPES +namespace DeviceSQL.SQLTypes.ROC.Data +#else namespace DeviceSQL.Device.ROC.Data +#endif { #region Enums @@ -70,8 +74,8 @@ public class EventRecord #region Fields - internal byte[] data; - internal ushort index; + public byte[] data; + public ushort index; #endregion diff --git a/DeviceSQL/Device/ROC/Data/FlpParameter.cs b/DeviceSQL.Devices.ROC/Data/FlpParameter.cs similarity index 96% rename from DeviceSQL/Device/ROC/Data/FlpParameter.cs rename to DeviceSQL.Devices.ROC/Data/FlpParameter.cs index 1a09076..7ae32fc 100644 --- a/DeviceSQL/Device/ROC/Data/FlpParameter.cs +++ b/DeviceSQL.Devices.ROC/Data/FlpParameter.cs @@ -7,7 +7,11 @@ #endregion +#if SQLTYPES +namespace DeviceSQL.SQLTypes.ROC.Data +#else namespace DeviceSQL.Device.ROC.Data +#endif { public class FlpParameter : Parameter { diff --git a/DeviceSQL/Device/ROC/Data/FstCodeChunk.cs b/DeviceSQL.Devices.ROC/Data/FstCodeChunk.cs similarity index 91% rename from DeviceSQL/Device/ROC/Data/FstCodeChunk.cs rename to DeviceSQL.Devices.ROC/Data/FstCodeChunk.cs index 651c5e6..d75c5cb 100644 --- a/DeviceSQL/Device/ROC/Data/FstCodeChunk.cs +++ b/DeviceSQL.Devices.ROC/Data/FstCodeChunk.cs @@ -4,7 +4,11 @@ #endregion +#if SQLTYPES +namespace DeviceSQL.SQLTypes.ROC.Data +#else namespace DeviceSQL.Device.ROC.Data +#endif { public class FstCodeChunk { diff --git a/DeviceSQL/Device/ROC/Data/FstHeaderInfo.cs b/DeviceSQL.Devices.ROC/Data/FstHeaderInfo.cs similarity index 86% rename from DeviceSQL/Device/ROC/Data/FstHeaderInfo.cs rename to DeviceSQL.Devices.ROC/Data/FstHeaderInfo.cs index eb9dba6..af5f252 100644 --- a/DeviceSQL/Device/ROC/Data/FstHeaderInfo.cs +++ b/DeviceSQL.Devices.ROC/Data/FstHeaderInfo.cs @@ -1,4 +1,8 @@ -namespace DeviceSQL.Device.ROC.Data +#if SQLTYPES +namespace DeviceSQL.SQLTypes.ROC.Data +#else +namespace DeviceSQL.Device.ROC.Data +#endif { public class FstHeaderInfo { diff --git a/DeviceSQL/Device/ROC/Data/HistoryPointConfiguration.cs b/DeviceSQL.Devices.ROC/Data/HistoryPointConfiguration.cs similarity index 88% rename from DeviceSQL/Device/ROC/Data/HistoryPointConfiguration.cs rename to DeviceSQL.Devices.ROC/Data/HistoryPointConfiguration.cs index 6ff95f4..18248ce 100644 --- a/DeviceSQL/Device/ROC/Data/HistoryPointConfiguration.cs +++ b/DeviceSQL.Devices.ROC/Data/HistoryPointConfiguration.cs @@ -1,4 +1,8 @@ -namespace DeviceSQL.Device.ROC.Data +#if SQLTYPES +namespace DeviceSQL.SQLTypes.ROC.Data +#else +namespace DeviceSQL.Device.ROC.Data +#endif { public class HistoryPointConfiguration { diff --git a/DeviceSQL/Device/ROC/Data/HistoryRecord.cs b/DeviceSQL.Devices.ROC/Data/HistoryRecord.cs similarity index 96% rename from DeviceSQL/Device/ROC/Data/HistoryRecord.cs rename to DeviceSQL.Devices.ROC/Data/HistoryRecord.cs index 10e9655..07dabca 100644 --- a/DeviceSQL/Device/ROC/Data/HistoryRecord.cs +++ b/DeviceSQL.Devices.ROC/Data/HistoryRecord.cs @@ -7,7 +7,11 @@ #endregion +#if SQLTYPES +namespace DeviceSQL.SQLTypes.ROC.Data +#else namespace DeviceSQL.Device.ROC.Data +#endif { public struct HistoryRecord { diff --git a/DeviceSQL/Device/ROC/Data/IRocParameterData.cs b/DeviceSQL.Devices.ROC/Data/IRocParameterData.cs similarity index 80% rename from DeviceSQL/Device/ROC/Data/IRocParameterData.cs rename to DeviceSQL.Devices.ROC/Data/IRocParameterData.cs index 9e2491f..76c9dcd 100644 --- a/DeviceSQL/Device/ROC/Data/IRocParameterData.cs +++ b/DeviceSQL.Devices.ROC/Data/IRocParameterData.cs @@ -7,7 +7,11 @@ #endregion +#if SQLTYPES +namespace DeviceSQL.SQLTypes.ROC.Data +#else namespace DeviceSQL.Device.ROC.Data +#endif { public interface IROCParameterData { diff --git a/DeviceSQL/Device/ROC/Data/Int16Parameter.cs b/DeviceSQL.Devices.ROC/Data/Int16Parameter.cs similarity index 92% rename from DeviceSQL/Device/ROC/Data/Int16Parameter.cs rename to DeviceSQL.Devices.ROC/Data/Int16Parameter.cs index bd62f93..d016264 100644 --- a/DeviceSQL/Device/ROC/Data/Int16Parameter.cs +++ b/DeviceSQL.Devices.ROC/Data/Int16Parameter.cs @@ -7,7 +7,11 @@ #endregion +#if SQLTYPES +namespace DeviceSQL.SQLTypes.ROC.Data +#else namespace DeviceSQL.Device.ROC.Data +#endif { public class Int16Parameter : Parameter { diff --git a/DeviceSQL/Device/ROC/Data/Int32Parameter.cs b/DeviceSQL.Devices.ROC/Data/Int32Parameter.cs similarity index 92% rename from DeviceSQL/Device/ROC/Data/Int32Parameter.cs rename to DeviceSQL.Devices.ROC/Data/Int32Parameter.cs index 4464417..a0b80b6 100644 --- a/DeviceSQL/Device/ROC/Data/Int32Parameter.cs +++ b/DeviceSQL.Devices.ROC/Data/Int32Parameter.cs @@ -7,7 +7,11 @@ #endregion +#if SQLTYPES +namespace DeviceSQL.SQLTypes.ROC.Data +#else namespace DeviceSQL.Device.ROC.Data +#endif { public class Int32Parameter : Parameter { diff --git a/DeviceSQL/Device/ROC/Data/Int8Parameter.cs b/DeviceSQL.Devices.ROC/Data/Int8Parameter.cs similarity index 93% rename from DeviceSQL/Device/ROC/Data/Int8Parameter.cs rename to DeviceSQL.Devices.ROC/Data/Int8Parameter.cs index 70e95d0..d48fd9e 100644 --- a/DeviceSQL/Device/ROC/Data/Int8Parameter.cs +++ b/DeviceSQL.Devices.ROC/Data/Int8Parameter.cs @@ -7,7 +7,11 @@ #endregion +#if SQLTYPES +namespace DeviceSQL.SQLTypes.ROC.Data +#else namespace DeviceSQL.Device.ROC.Data +#endif { public class Int8Parameter : Parameter { diff --git a/DeviceSQL/Device/ROC/Data/Parameter.cs b/DeviceSQL.Devices.ROC/Data/Parameter.cs similarity index 83% rename from DeviceSQL/Device/ROC/Data/Parameter.cs rename to DeviceSQL.Devices.ROC/Data/Parameter.cs index 9834418..4c8a1a2 100644 --- a/DeviceSQL/Device/ROC/Data/Parameter.cs +++ b/DeviceSQL.Devices.ROC/Data/Parameter.cs @@ -7,35 +7,13 @@ #endregion +#if SQLTYPES +namespace DeviceSQL.SQLTypes.ROC.Data +#else namespace DeviceSQL.Device.ROC.Data +#endif { - #region Enumerations - - public enum ParameterType : byte - { - BIN = 0, - INT8 = 1, - INT16 = 2, - INT32 = 3, - UINT8 = 4, - UINT16 = 5, - UINT32 = 6, - FL = 7, - TLP = 8, - AC3 = 9, - AC7 = 10, - AC10 = 11, - AC12 = 12, - AC20 = 13, - AC30 = 14, - AC40 = 15, - DOUBLE = 16, - TIME = 17 - } - - #endregion - public abstract class Parameter : IROCParameterData { diff --git a/DeviceSQL.Devices.ROC/Data/ParameterType.cs b/DeviceSQL.Devices.ROC/Data/ParameterType.cs new file mode 100644 index 0000000..d6aa0d6 --- /dev/null +++ b/DeviceSQL.Devices.ROC/Data/ParameterType.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +#if SQLTYPES +namespace DeviceSQL.SQLTypes.ROC.Data +#else +namespace DeviceSQL.Device.ROC.Data +#endif +{ + public enum ParameterType : byte + { + BIN = 0, + INT8 = 1, + INT16 = 2, + INT32 = 3, + UINT8 = 4, + UINT16 = 5, + UINT32 = 6, + FL = 7, + TLP = 8, + AC3 = 9, + AC7 = 10, + AC10 = 11, + AC12 = 12, + AC20 = 13, + AC30 = 14, + AC40 = 15, + DOUBLE = 16, + TIME = 17 + } +} diff --git a/DeviceSQL/Device/ROC/Data/RocPlusAlarmRecord.cs b/DeviceSQL.Devices.ROC/Data/RocPlusAlarmRecord.cs similarity index 98% rename from DeviceSQL/Device/ROC/Data/RocPlusAlarmRecord.cs rename to DeviceSQL.Devices.ROC/Data/RocPlusAlarmRecord.cs index bd0c820..cbed84a 100644 --- a/DeviceSQL/Device/ROC/Data/RocPlusAlarmRecord.cs +++ b/DeviceSQL.Devices.ROC/Data/RocPlusAlarmRecord.cs @@ -7,7 +7,11 @@ #endregion +#if SQLTYPES +namespace DeviceSQL.SQLTypes.ROC.Data +#else namespace DeviceSQL.Device.ROC.Data +#endif { #region Enums diff --git a/DeviceSQL/Device/ROC/Data/RocPlusEventRecord.cs b/DeviceSQL.Devices.ROC/Data/RocPlusEventRecord.cs similarity index 99% rename from DeviceSQL/Device/ROC/Data/RocPlusEventRecord.cs rename to DeviceSQL.Devices.ROC/Data/RocPlusEventRecord.cs index 2cf3b34..5c7258a 100644 --- a/DeviceSQL/Device/ROC/Data/RocPlusEventRecord.cs +++ b/DeviceSQL.Devices.ROC/Data/RocPlusEventRecord.cs @@ -1,5 +1,6 @@ #region Imported Types + using System; using System.Collections.Generic; using System.Linq; @@ -7,7 +8,11 @@ #endregion +#if SQLTYPES +namespace DeviceSQL.SQLTypes.ROC.Data +#else namespace DeviceSQL.Device.ROC.Data +#endif { #region Enums diff --git a/DeviceSQL/Device/ROC/Data/RocPlusHistoryRecord.cs b/DeviceSQL.Devices.ROC/Data/RocPlusHistoryRecord.cs similarity index 95% rename from DeviceSQL/Device/ROC/Data/RocPlusHistoryRecord.cs rename to DeviceSQL.Devices.ROC/Data/RocPlusHistoryRecord.cs index 1d1848c..11b1a36 100644 --- a/DeviceSQL/Device/ROC/Data/RocPlusHistoryRecord.cs +++ b/DeviceSQL.Devices.ROC/Data/RocPlusHistoryRecord.cs @@ -4,7 +4,11 @@ #endregion +#if SQLTYPES +namespace DeviceSQL.SQLTypes.ROC.Data +#else namespace DeviceSQL.Device.ROC.Data +#endif { public struct ROCPlusHistoryRecord { diff --git a/DeviceSQL/Device/ROC/Data/TimeParameter.cs b/DeviceSQL.Devices.ROC/Data/TimeParameter.cs similarity index 93% rename from DeviceSQL/Device/ROC/Data/TimeParameter.cs rename to DeviceSQL.Devices.ROC/Data/TimeParameter.cs index 76d6bb2..945364e 100644 --- a/DeviceSQL/Device/ROC/Data/TimeParameter.cs +++ b/DeviceSQL.Devices.ROC/Data/TimeParameter.cs @@ -4,7 +4,11 @@ #endregion +#if SQLTYPES +namespace DeviceSQL.SQLTypes.ROC.Data +#else namespace DeviceSQL.Device.ROC.Data +#endif { public class TimeParameter : Parameter { diff --git a/DeviceSQL/Device/ROC/Data/Tlp.cs b/DeviceSQL.Devices.ROC/Data/Tlp.cs similarity index 95% rename from DeviceSQL/Device/ROC/Data/Tlp.cs rename to DeviceSQL.Devices.ROC/Data/Tlp.cs index 69535f7..c5592f0 100644 --- a/DeviceSQL/Device/ROC/Data/Tlp.cs +++ b/DeviceSQL.Devices.ROC/Data/Tlp.cs @@ -1,4 +1,8 @@ -namespace DeviceSQL.Device.ROC.Data +#if SQLTYPES +namespace DeviceSQL.SQLTypes.ROC.Data +#else +namespace DeviceSQL.Device.ROC.Data +#endif { public class Tlp { diff --git a/DeviceSQL/Device/ROC/Data/TlpParameter.cs b/DeviceSQL.Devices.ROC/Data/TlpParameter.cs similarity index 87% rename from DeviceSQL/Device/ROC/Data/TlpParameter.cs rename to DeviceSQL.Devices.ROC/Data/TlpParameter.cs index 570e879..28458db 100644 --- a/DeviceSQL/Device/ROC/Data/TlpParameter.cs +++ b/DeviceSQL.Devices.ROC/Data/TlpParameter.cs @@ -1,4 +1,8 @@ -namespace DeviceSQL.Device.ROC.Data +#if SQLTYPES +namespace DeviceSQL.SQLTypes.ROC.Data +#else +namespace DeviceSQL.Device.ROC.Data +#endif { public class TlpParameter : Parameter { diff --git a/DeviceSQL/Device/ROC/Data/UInt16Parameter.cs b/DeviceSQL.Devices.ROC/Data/UInt16Parameter.cs similarity index 92% rename from DeviceSQL/Device/ROC/Data/UInt16Parameter.cs rename to DeviceSQL.Devices.ROC/Data/UInt16Parameter.cs index 3aa46dd..af55c2c 100644 --- a/DeviceSQL/Device/ROC/Data/UInt16Parameter.cs +++ b/DeviceSQL.Devices.ROC/Data/UInt16Parameter.cs @@ -4,7 +4,11 @@ #endregion +#if SQLTYPES +namespace DeviceSQL.SQLTypes.ROC.Data +#else namespace DeviceSQL.Device.ROC.Data +#endif { public class UInt16Parameter : Parameter { diff --git a/DeviceSQL/Device/ROC/Data/UInt32Parameter.cs b/DeviceSQL.Devices.ROC/Data/UInt32Parameter.cs similarity index 93% rename from DeviceSQL/Device/ROC/Data/UInt32Parameter.cs rename to DeviceSQL.Devices.ROC/Data/UInt32Parameter.cs index 545b104..c296937 100644 --- a/DeviceSQL/Device/ROC/Data/UInt32Parameter.cs +++ b/DeviceSQL.Devices.ROC/Data/UInt32Parameter.cs @@ -4,7 +4,11 @@ #endregion +#if SQLTYPES +namespace DeviceSQL.SQLTypes.ROC.Data +#else namespace DeviceSQL.Device.ROC.Data +#endif { public class UInt32Parameter : Parameter { diff --git a/DeviceSQL/Device/ROC/Data/UInt8Parameter.cs b/DeviceSQL.Devices.ROC/Data/UInt8Parameter.cs similarity index 85% rename from DeviceSQL/Device/ROC/Data/UInt8Parameter.cs rename to DeviceSQL.Devices.ROC/Data/UInt8Parameter.cs index a3d43c1..73f5d91 100644 --- a/DeviceSQL/Device/ROC/Data/UInt8Parameter.cs +++ b/DeviceSQL.Devices.ROC/Data/UInt8Parameter.cs @@ -1,4 +1,8 @@ -namespace DeviceSQL.Device.ROC.Data +#if SQLTYPES +namespace DeviceSQL.SQLTypes.ROC.Data +#else +namespace DeviceSQL.Device.ROC.Data +#endif { public class UInt8Parameter : Parameter { diff --git a/DeviceSQL/Device/ROC/Device.cs b/DeviceSQL.Devices.ROC/Device.cs similarity index 100% rename from DeviceSQL/Device/ROC/Device.cs rename to DeviceSQL.Devices.ROC/Device.cs diff --git a/DeviceSQL.Devices.ROC/DeviceSQL.Devices.ROC.csproj b/DeviceSQL.Devices.ROC/DeviceSQL.Devices.ROC.csproj new file mode 100644 index 0000000..9a7c817 --- /dev/null +++ b/DeviceSQL.Devices.ROC/DeviceSQL.Devices.ROC.csproj @@ -0,0 +1,156 @@ + + + + + Debug + AnyCPU + {AF0E4B64-F2C2-4459-A518-9AA905FF6F0F} + Library + Properties + DeviceSQL.Devices.ROC + DeviceSQL.Devices.ROC + v4.8 + 512 + true + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {5deadadf-be60-4774-80c6-97b3a83fa289} + DeviceSQL.Devices.Common + + + + \ No newline at end of file diff --git a/DeviceSQL/Device/ROC/FST/Arguments/ArgumentBase.cs b/DeviceSQL.Devices.ROC/FST/Arguments/ArgumentBase.cs similarity index 100% rename from DeviceSQL/Device/ROC/FST/Arguments/ArgumentBase.cs rename to DeviceSQL.Devices.ROC/FST/Arguments/ArgumentBase.cs diff --git a/DeviceSQL/Device/ROC/FST/Arguments/ArgumentDataType.cs b/DeviceSQL.Devices.ROC/FST/Arguments/ArgumentDataType.cs similarity index 100% rename from DeviceSQL/Device/ROC/FST/Arguments/ArgumentDataType.cs rename to DeviceSQL.Devices.ROC/FST/Arguments/ArgumentDataType.cs diff --git a/DeviceSQL/Device/ROC/FST/Arguments/ArgumentType.cs b/DeviceSQL.Devices.ROC/FST/Arguments/ArgumentType.cs similarity index 100% rename from DeviceSQL/Device/ROC/FST/Arguments/ArgumentType.cs rename to DeviceSQL.Devices.ROC/FST/Arguments/ArgumentType.cs diff --git a/DeviceSQL/Device/ROC/FST/Arguments/DatabasePoint.cs b/DeviceSQL.Devices.ROC/FST/Arguments/DatabasePoint.cs similarity index 91% rename from DeviceSQL/Device/ROC/FST/Arguments/DatabasePoint.cs rename to DeviceSQL.Devices.ROC/FST/Arguments/DatabasePoint.cs index 9354610..196c287 100644 --- a/DeviceSQL/Device/ROC/FST/Arguments/DatabasePoint.cs +++ b/DeviceSQL.Devices.ROC/FST/Arguments/DatabasePoint.cs @@ -1,4 +1,5 @@ -namespace DeviceSQL.Device.ROC.Data.FST.Arguments + +namespace DeviceSQL.Device.ROC.Data.FST.Arguments { public class DatabasePoint { diff --git a/DeviceSQL/Device/ROC/FST/Arguments/DatabasePointOrConstantValueArgument.cs b/DeviceSQL.Devices.ROC/FST/Arguments/DatabasePointOrConstantValueArgument.cs similarity index 100% rename from DeviceSQL/Device/ROC/FST/Arguments/DatabasePointOrConstantValueArgument.cs rename to DeviceSQL.Devices.ROC/FST/Arguments/DatabasePointOrConstantValueArgument.cs diff --git a/DeviceSQL/Device/ROC/FST/Arguments/NullArgument.cs b/DeviceSQL.Devices.ROC/FST/Arguments/NullArgument.cs similarity index 100% rename from DeviceSQL/Device/ROC/FST/Arguments/NullArgument.cs rename to DeviceSQL.Devices.ROC/FST/Arguments/NullArgument.cs diff --git a/DeviceSQL/Device/ROC/FST/Instructions/AddInstruction.cs b/DeviceSQL.Devices.ROC/FST/Instructions/AddInstruction.cs similarity index 100% rename from DeviceSQL/Device/ROC/FST/Instructions/AddInstruction.cs rename to DeviceSQL.Devices.ROC/FST/Instructions/AddInstruction.cs diff --git a/DeviceSQL/Device/ROC/FST/Instructions/InstructionBase.cs b/DeviceSQL.Devices.ROC/FST/Instructions/InstructionBase.cs similarity index 100% rename from DeviceSQL/Device/ROC/FST/Instructions/InstructionBase.cs rename to DeviceSQL.Devices.ROC/FST/Instructions/InstructionBase.cs diff --git a/DeviceSQL/Device/ROC/FST/Instructions/InstructionCategory.cs b/DeviceSQL.Devices.ROC/FST/Instructions/InstructionCategory.cs similarity index 100% rename from DeviceSQL/Device/ROC/FST/Instructions/InstructionCategory.cs rename to DeviceSQL.Devices.ROC/FST/Instructions/InstructionCategory.cs diff --git a/DeviceSQL/Device/ROC/FST/Instructions/InstructionType.cs b/DeviceSQL.Devices.ROC/FST/Instructions/InstructionType.cs similarity index 100% rename from DeviceSQL/Device/ROC/FST/Instructions/InstructionType.cs rename to DeviceSQL.Devices.ROC/FST/Instructions/InstructionType.cs diff --git a/DeviceSQL/Device/ROC/IO/Transport/Transport.cs b/DeviceSQL.Devices.ROC/IO/Transport/Transport.cs similarity index 100% rename from DeviceSQL/Device/ROC/IO/Transport/Transport.cs rename to DeviceSQL.Devices.ROC/IO/Transport/Transport.cs diff --git a/DeviceSQL/Device/ROC/Message/IRocMessage.cs b/DeviceSQL.Devices.ROC/Message/IRocMessage.cs similarity index 100% rename from DeviceSQL/Device/ROC/Message/IRocMessage.cs rename to DeviceSQL.Devices.ROC/Message/IRocMessage.cs diff --git a/DeviceSQL/Device/ROC/Message/IRocRequestMessage.cs b/DeviceSQL.Devices.ROC/Message/IRocRequestMessage.cs similarity index 100% rename from DeviceSQL/Device/ROC/Message/IRocRequestMessage.cs rename to DeviceSQL.Devices.ROC/Message/IRocRequestMessage.cs diff --git a/DeviceSQL/Device/ROC/Message/IRocResponseMessage.cs b/DeviceSQL.Devices.ROC/Message/IRocResponseMessage.cs similarity index 100% rename from DeviceSQL/Device/ROC/Message/IRocResponseMessage.cs rename to DeviceSQL.Devices.ROC/Message/IRocResponseMessage.cs diff --git a/DeviceSQL/Device/ROC/Message/OpCode007Request.cs b/DeviceSQL.Devices.ROC/Message/OpCode007Request.cs similarity index 100% rename from DeviceSQL/Device/ROC/Message/OpCode007Request.cs rename to DeviceSQL.Devices.ROC/Message/OpCode007Request.cs diff --git a/DeviceSQL/Device/ROC/Message/OpCode007Response.cs b/DeviceSQL.Devices.ROC/Message/OpCode007Response.cs similarity index 100% rename from DeviceSQL/Device/ROC/Message/OpCode007Response.cs rename to DeviceSQL.Devices.ROC/Message/OpCode007Response.cs diff --git a/DeviceSQL/Device/ROC/Message/OpCode008Request.cs b/DeviceSQL.Devices.ROC/Message/OpCode008Request.cs similarity index 100% rename from DeviceSQL/Device/ROC/Message/OpCode008Request.cs rename to DeviceSQL.Devices.ROC/Message/OpCode008Request.cs diff --git a/DeviceSQL/Device/ROC/Message/OpCode008Response.cs b/DeviceSQL.Devices.ROC/Message/OpCode008Response.cs similarity index 100% rename from DeviceSQL/Device/ROC/Message/OpCode008Response.cs rename to DeviceSQL.Devices.ROC/Message/OpCode008Response.cs diff --git a/DeviceSQL/Device/ROC/Message/OpCode017Request.cs b/DeviceSQL.Devices.ROC/Message/OpCode017Request.cs similarity index 100% rename from DeviceSQL/Device/ROC/Message/OpCode017Request.cs rename to DeviceSQL.Devices.ROC/Message/OpCode017Request.cs diff --git a/DeviceSQL/Device/ROC/Message/OpCode017Response.cs b/DeviceSQL.Devices.ROC/Message/OpCode017Response.cs similarity index 100% rename from DeviceSQL/Device/ROC/Message/OpCode017Response.cs rename to DeviceSQL.Devices.ROC/Message/OpCode017Response.cs diff --git a/DeviceSQL/Device/ROC/Message/OpCode080Function.cs b/DeviceSQL.Devices.ROC/Message/OpCode080Function.cs similarity index 100% rename from DeviceSQL/Device/ROC/Message/OpCode080Function.cs rename to DeviceSQL.Devices.ROC/Message/OpCode080Function.cs diff --git a/DeviceSQL/Device/ROC/Message/OpCode080Request.cs b/DeviceSQL.Devices.ROC/Message/OpCode080Request.cs similarity index 100% rename from DeviceSQL/Device/ROC/Message/OpCode080Request.cs rename to DeviceSQL.Devices.ROC/Message/OpCode080Request.cs diff --git a/DeviceSQL/Device/ROC/Message/OpCode080Response.cs b/DeviceSQL.Devices.ROC/Message/OpCode080Response.cs similarity index 100% rename from DeviceSQL/Device/ROC/Message/OpCode080Response.cs rename to DeviceSQL.Devices.ROC/Message/OpCode080Response.cs diff --git a/DeviceSQL/Device/ROC/Message/OpCode118Request.cs b/DeviceSQL.Devices.ROC/Message/OpCode118Request.cs similarity index 100% rename from DeviceSQL/Device/ROC/Message/OpCode118Request.cs rename to DeviceSQL.Devices.ROC/Message/OpCode118Request.cs diff --git a/DeviceSQL/Device/ROC/Message/OpCode118Response.cs b/DeviceSQL.Devices.ROC/Message/OpCode118Response.cs similarity index 100% rename from DeviceSQL/Device/ROC/Message/OpCode118Response.cs rename to DeviceSQL.Devices.ROC/Message/OpCode118Response.cs diff --git a/DeviceSQL/Device/ROC/Message/OpCode119Request.cs b/DeviceSQL.Devices.ROC/Message/OpCode119Request.cs similarity index 100% rename from DeviceSQL/Device/ROC/Message/OpCode119Request.cs rename to DeviceSQL.Devices.ROC/Message/OpCode119Request.cs diff --git a/DeviceSQL/Device/ROC/Message/OpCode119Response.cs b/DeviceSQL.Devices.ROC/Message/OpCode119Response.cs similarity index 100% rename from DeviceSQL/Device/ROC/Message/OpCode119Response.cs rename to DeviceSQL.Devices.ROC/Message/OpCode119Response.cs diff --git a/DeviceSQL/Device/ROC/Message/OpCode120Request.cs b/DeviceSQL.Devices.ROC/Message/OpCode120Request.cs similarity index 100% rename from DeviceSQL/Device/ROC/Message/OpCode120Request.cs rename to DeviceSQL.Devices.ROC/Message/OpCode120Request.cs diff --git a/DeviceSQL/Device/ROC/Message/OpCode120Response.cs b/DeviceSQL.Devices.ROC/Message/OpCode120Response.cs similarity index 100% rename from DeviceSQL/Device/ROC/Message/OpCode120Response.cs rename to DeviceSQL.Devices.ROC/Message/OpCode120Response.cs diff --git a/DeviceSQL/Device/ROC/Message/OpCode121Request.cs b/DeviceSQL.Devices.ROC/Message/OpCode121Request.cs similarity index 100% rename from DeviceSQL/Device/ROC/Message/OpCode121Request.cs rename to DeviceSQL.Devices.ROC/Message/OpCode121Request.cs diff --git a/DeviceSQL/Device/ROC/Message/OpCode121Response.cs b/DeviceSQL.Devices.ROC/Message/OpCode121Response.cs similarity index 100% rename from DeviceSQL/Device/ROC/Message/OpCode121Response.cs rename to DeviceSQL.Devices.ROC/Message/OpCode121Response.cs diff --git a/DeviceSQL/Device/ROC/Message/OpCode122Request.cs b/DeviceSQL.Devices.ROC/Message/OpCode122Request.cs similarity index 100% rename from DeviceSQL/Device/ROC/Message/OpCode122Request.cs rename to DeviceSQL.Devices.ROC/Message/OpCode122Request.cs diff --git a/DeviceSQL/Device/ROC/Message/OpCode122Response.cs b/DeviceSQL.Devices.ROC/Message/OpCode122Response.cs similarity index 100% rename from DeviceSQL/Device/ROC/Message/OpCode122Response.cs rename to DeviceSQL.Devices.ROC/Message/OpCode122Response.cs diff --git a/DeviceSQL/Device/ROC/Message/OpCode126Request.cs b/DeviceSQL.Devices.ROC/Message/OpCode126Request.cs similarity index 100% rename from DeviceSQL/Device/ROC/Message/OpCode126Request.cs rename to DeviceSQL.Devices.ROC/Message/OpCode126Request.cs diff --git a/DeviceSQL/Device/ROC/Message/OpCode126Response.cs b/DeviceSQL.Devices.ROC/Message/OpCode126Response.cs similarity index 100% rename from DeviceSQL/Device/ROC/Message/OpCode126Response.cs rename to DeviceSQL.Devices.ROC/Message/OpCode126Response.cs diff --git a/DeviceSQL/Device/ROC/Message/OpCode130Request.cs b/DeviceSQL.Devices.ROC/Message/OpCode130Request.cs similarity index 100% rename from DeviceSQL/Device/ROC/Message/OpCode130Request.cs rename to DeviceSQL.Devices.ROC/Message/OpCode130Request.cs diff --git a/DeviceSQL/Device/ROC/Message/OpCode130Response.cs b/DeviceSQL.Devices.ROC/Message/OpCode130Response.cs similarity index 100% rename from DeviceSQL/Device/ROC/Message/OpCode130Response.cs rename to DeviceSQL.Devices.ROC/Message/OpCode130Response.cs diff --git a/DeviceSQL/Device/ROC/Message/OpCode131Request.cs b/DeviceSQL.Devices.ROC/Message/OpCode131Request.cs similarity index 100% rename from DeviceSQL/Device/ROC/Message/OpCode131Request.cs rename to DeviceSQL.Devices.ROC/Message/OpCode131Request.cs diff --git a/DeviceSQL/Device/ROC/Message/OpCode131Response.cs b/DeviceSQL.Devices.ROC/Message/OpCode131Response.cs similarity index 100% rename from DeviceSQL/Device/ROC/Message/OpCode131Response.cs rename to DeviceSQL.Devices.ROC/Message/OpCode131Response.cs diff --git a/DeviceSQL/Device/ROC/Message/OpCode132Request.cs b/DeviceSQL.Devices.ROC/Message/OpCode132Request.cs similarity index 100% rename from DeviceSQL/Device/ROC/Message/OpCode132Request.cs rename to DeviceSQL.Devices.ROC/Message/OpCode132Request.cs diff --git a/DeviceSQL/Device/ROC/Message/OpCode132Response.cs b/DeviceSQL.Devices.ROC/Message/OpCode132Response.cs similarity index 100% rename from DeviceSQL/Device/ROC/Message/OpCode132Response.cs rename to DeviceSQL.Devices.ROC/Message/OpCode132Response.cs diff --git a/DeviceSQL/Device/ROC/Message/OpCode136Request.cs b/DeviceSQL.Devices.ROC/Message/OpCode136Request.cs similarity index 100% rename from DeviceSQL/Device/ROC/Message/OpCode136Request.cs rename to DeviceSQL.Devices.ROC/Message/OpCode136Request.cs diff --git a/DeviceSQL/Device/ROC/Message/OpCode136Response.cs b/DeviceSQL.Devices.ROC/Message/OpCode136Response.cs similarity index 100% rename from DeviceSQL/Device/ROC/Message/OpCode136Response.cs rename to DeviceSQL.Devices.ROC/Message/OpCode136Response.cs diff --git a/DeviceSQL/Device/ROC/Message/OpCode139Request.cs b/DeviceSQL.Devices.ROC/Message/OpCode139Request.cs similarity index 100% rename from DeviceSQL/Device/ROC/Message/OpCode139Request.cs rename to DeviceSQL.Devices.ROC/Message/OpCode139Request.cs diff --git a/DeviceSQL/Device/ROC/Message/OpCode139Response.cs b/DeviceSQL.Devices.ROC/Message/OpCode139Response.cs similarity index 100% rename from DeviceSQL/Device/ROC/Message/OpCode139Response.cs rename to DeviceSQL.Devices.ROC/Message/OpCode139Response.cs diff --git a/DeviceSQL/Device/ROC/Message/OpCode165Request .cs b/DeviceSQL.Devices.ROC/Message/OpCode165Request .cs similarity index 100% rename from DeviceSQL/Device/ROC/Message/OpCode165Request .cs rename to DeviceSQL.Devices.ROC/Message/OpCode165Request .cs diff --git a/DeviceSQL/Device/ROC/Message/OpCode165Response.cs b/DeviceSQL.Devices.ROC/Message/OpCode165Response.cs similarity index 100% rename from DeviceSQL/Device/ROC/Message/OpCode165Response.cs rename to DeviceSQL.Devices.ROC/Message/OpCode165Response.cs diff --git a/DeviceSQL/Device/ROC/Message/OpCode166Request.cs b/DeviceSQL.Devices.ROC/Message/OpCode166Request.cs similarity index 100% rename from DeviceSQL/Device/ROC/Message/OpCode166Request.cs rename to DeviceSQL.Devices.ROC/Message/OpCode166Request.cs diff --git a/DeviceSQL/Device/ROC/Message/OpCode166Response.cs b/DeviceSQL.Devices.ROC/Message/OpCode166Response.cs similarity index 100% rename from DeviceSQL/Device/ROC/Message/OpCode166Response.cs rename to DeviceSQL.Devices.ROC/Message/OpCode166Response.cs diff --git a/DeviceSQL/Device/ROC/Message/OpCode167Request.cs b/DeviceSQL.Devices.ROC/Message/OpCode167Request.cs similarity index 100% rename from DeviceSQL/Device/ROC/Message/OpCode167Request.cs rename to DeviceSQL.Devices.ROC/Message/OpCode167Request.cs diff --git a/DeviceSQL/Device/ROC/Message/OpCode167Response.cs b/DeviceSQL.Devices.ROC/Message/OpCode167Response.cs similarity index 100% rename from DeviceSQL/Device/ROC/Message/OpCode167Response.cs rename to DeviceSQL.Devices.ROC/Message/OpCode167Response.cs diff --git a/DeviceSQL/Device/ROC/Message/OpCode180Request.cs b/DeviceSQL.Devices.ROC/Message/OpCode180Request.cs similarity index 100% rename from DeviceSQL/Device/ROC/Message/OpCode180Request.cs rename to DeviceSQL.Devices.ROC/Message/OpCode180Request.cs diff --git a/DeviceSQL/Device/ROC/Message/OpCode180Response.cs b/DeviceSQL.Devices.ROC/Message/OpCode180Response.cs similarity index 100% rename from DeviceSQL/Device/ROC/Message/OpCode180Response.cs rename to DeviceSQL.Devices.ROC/Message/OpCode180Response.cs diff --git a/DeviceSQL/Device/ROC/Message/OpCode181Request.cs b/DeviceSQL.Devices.ROC/Message/OpCode181Request.cs similarity index 100% rename from DeviceSQL/Device/ROC/Message/OpCode181Request.cs rename to DeviceSQL.Devices.ROC/Message/OpCode181Request.cs diff --git a/DeviceSQL/Device/ROC/Message/OpCode181Response.cs b/DeviceSQL.Devices.ROC/Message/OpCode181Response.cs similarity index 100% rename from DeviceSQL/Device/ROC/Message/OpCode181Response.cs rename to DeviceSQL.Devices.ROC/Message/OpCode181Response.cs diff --git a/DeviceSQL/Device/ROC/Message/OpCode255Response.cs b/DeviceSQL.Devices.ROC/Message/OpCode255Response.cs similarity index 100% rename from DeviceSQL/Device/ROC/Message/OpCode255Response.cs rename to DeviceSQL.Devices.ROC/Message/OpCode255Response.cs diff --git a/DeviceSQL/Device/ROC/Message/ParameterDatabase.cs b/DeviceSQL.Devices.ROC/Message/ParameterDatabase.cs similarity index 99% rename from DeviceSQL/Device/ROC/Message/ParameterDatabase.cs rename to DeviceSQL.Devices.ROC/Message/ParameterDatabase.cs index 8ec0236..f4e5ced 100644 --- a/DeviceSQL/Device/ROC/Message/ParameterDatabase.cs +++ b/DeviceSQL.Devices.ROC/Message/ParameterDatabase.cs @@ -4,7 +4,11 @@ #endregion -namespace DeviceSQL.Device.ROC.Message +#if SQLTYPES +namespace DeviceSQL.SQLTypes.ROC.Data +#else +namespace DeviceSQL.Device.ROC.Data +#endif { public static class ParameterDatabase { diff --git a/DeviceSQL/Device/ROC/Message/RocMessage.cs b/DeviceSQL.Devices.ROC/Message/RocMessage.cs similarity index 100% rename from DeviceSQL/Device/ROC/Message/RocMessage.cs rename to DeviceSQL.Devices.ROC/Message/RocMessage.cs diff --git a/DeviceSQL/Device/ROC/Message/RocMessageFactory.cs b/DeviceSQL.Devices.ROC/Message/RocMessageFactory.cs similarity index 100% rename from DeviceSQL/Device/ROC/Message/RocMessageFactory.cs rename to DeviceSQL.Devices.ROC/Message/RocMessageFactory.cs diff --git a/DeviceSQL/Device/ROC/OpCode255Exception.cs b/DeviceSQL.Devices.ROC/OpCode255Exception.cs similarity index 100% rename from DeviceSQL/Device/ROC/OpCode255Exception.cs rename to DeviceSQL.Devices.ROC/OpCode255Exception.cs diff --git a/DeviceSQL.Devices.ROC/Properties/AssemblyInfo.cs b/DeviceSQL.Devices.ROC/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..40f2a06 --- /dev/null +++ b/DeviceSQL.Devices.ROC/Properties/AssemblyInfo.cs @@ -0,0 +1,37 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("DeviceSQL.Devices.ROC")] +[assembly: AssemblyDescription("DeviceSQL.Devices.ROC")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("CloudSonix")] +[assembly: AssemblyProduct("DeviceSQL")] +[assembly: AssemblyCopyright("© CloudSonix. All rights reserved.")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] +[assembly: AssemblyKeyFileAttribute("../DeviceSQL-Key.snk")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("af0e4b64-f2c2-4459-a518-9aa905ff6f0f")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/DeviceSQL/Device/ROC/ROCMaster.cs b/DeviceSQL.Devices.ROC/ROCMaster.cs similarity index 100% rename from DeviceSQL/Device/ROC/ROCMaster.cs rename to DeviceSQL.Devices.ROC/ROCMaster.cs diff --git a/DeviceSQL/Device/ROC/Utility/Crc16.cs b/DeviceSQL.Devices.ROC/Utility/Crc16.cs similarity index 100% rename from DeviceSQL/Device/ROC/Utility/Crc16.cs rename to DeviceSQL.Devices.ROC/Utility/Crc16.cs diff --git a/DeviceSQL.ModbusMaster/DeviceSQL.ModbusMaster.sqlproj b/DeviceSQL.ModbusMaster/DeviceSQL.ModbusMaster.sqlproj new file mode 100644 index 0000000..3b76adc --- /dev/null +++ b/DeviceSQL.ModbusMaster/DeviceSQL.ModbusMaster.sqlproj @@ -0,0 +1,100 @@ + + + + + Debug + AnyCPU + DeviceSQL.ModbusMaster + 2.0 + 4.1 + {bf99e0a7-f591-4629-8dd2-dda18b05e5f2} + Microsoft.Data.Tools.Schema.Sql.Sql140DatabaseSchemaProvider + Database + + + DeviceSQL.ModbusMaster + DeviceSQL.ModbusMaster + 1033, CI + BySchemaAndSchemaType + True + v4.8 + CS + Properties + False + True + True + ModbusMaster + + UNSAFE + False + ..\DeviceSQL-Key.snk + + + bin\Release\ + $(MSBuildProjectName).sql + False + pdbonly + true + false + true + prompt + 4 + + + bin\Debug\ + $(MSBuildProjectName).sql + false + true + full + false + true + true + prompt + 4 + + + 11.0 + + True + 11.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DeviceSQL.SQLTypes.Modbus + {cd45d76e-d2ed-4587-9873-f35ad24e42a5} + True + True + True + + + \ No newline at end of file diff --git a/DeviceSQL.ModbusMaster/Functions/ReadCoils.cs b/DeviceSQL.ModbusMaster/Functions/ReadCoils.cs new file mode 100644 index 0000000..d9cb1a9 --- /dev/null +++ b/DeviceSQL.ModbusMaster/Functions/ReadCoils.cs @@ -0,0 +1,22 @@ +#region Imported Types + +using DeviceSQL.SQLTypes.Modbus; +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class MODBUSMaster + { + [SqlFunction] + public static CoilRegisterArray ReadCoils(SqlString deviceName, CoilRegisterArray coilRegisterArray) + { + //var deviceNameValue = deviceName.Value; + //var coilRegisters = new List(coilRegisterArray.coilRegisters.Select(coilRegister => new Device.MODBUS.Data.CoilRegister(new Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(coilRegister.Address.RelativeAddress.Value), coilRegister.Address.IsZeroBased.Value)))); + //(DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.MODBUS.MODBUSMaster).ReadCoilRegisters(null, ref coilRegisters, null); + return CoilRegisterArray.Null; // new Types.MODBUSMaster.MODBUSMaster_CoilRegisterArray() { coilRegisters = coilRegisters.Select(coilRegister => new Types.MODBUSMaster.MODBUSMaster_CoilRegister() { Address = new Types.MODBUSMaster.MODBUSMaster_MODBUSAddress { RelativeAddress = coilRegister.Address.RelativeAddress, IsZeroBased = coilRegister.Address.IsZeroBased }, Data = coilRegister.Data }).ToList() }; + } + } +} diff --git a/DeviceSQL.ModbusMaster/Functions/ReadDiscreteInputs.cs b/DeviceSQL.ModbusMaster/Functions/ReadDiscreteInputs.cs new file mode 100644 index 0000000..b62b685 --- /dev/null +++ b/DeviceSQL.ModbusMaster/Functions/ReadDiscreteInputs.cs @@ -0,0 +1,22 @@ +#region Imported Types + +using DeviceSQL.SQLTypes.Modbus; +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class MODBUSMaster + { + [SqlFunction] + public static DiscreteInputRegisterArray ReadDiscreteInputs(SqlString deviceName, DiscreteInputRegisterArray discreteInputRegisterArray) + { + //var deviceNameValue = deviceName.Value; + //var discreteInputRegisters = new List(discreteInputRegisterArray.discreteInputRegisters.Select(discreteInputRegister => new Device.MODBUS.Data.DiscreteInputRegister(new Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(discreteInputRegister.Address.RelativeAddress.Value), discreteInputRegister.Address.IsZeroBased.Value)))); + //(DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.MODBUS.MODBUSMaster).ReadDiscreteInputRegisters(null, ref discreteInputRegisters, null); + return DiscreteInputRegisterArray.Null; // new Types.MODBUSMaster.MODBUSMaster_DiscreteInputRegisterArray() { discreteInputRegisters = discreteInputRegisters.Select(discreteInputRegister => new Types.MODBUSMaster.MODBUSMaster_DiscreteInputRegister() { Address = new Types.MODBUSMaster.MODBUSMaster_MODBUSAddress { RelativeAddress = discreteInputRegister.Address.RelativeAddress, IsZeroBased = discreteInputRegister.Address.IsZeroBased }, Data = discreteInputRegister.Data }).ToList() }; + } + } +} \ No newline at end of file diff --git a/DeviceSQL.ModbusMaster/Functions/ReadEventArchiveRecords.cs b/DeviceSQL.ModbusMaster/Functions/ReadEventArchiveRecords.cs new file mode 100644 index 0000000..460bee2 --- /dev/null +++ b/DeviceSQL.ModbusMaster/Functions/ReadEventArchiveRecords.cs @@ -0,0 +1,21 @@ +#region Imported Types + +using DeviceSQL.SQLTypes.Modbus; +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class MODBUSMaster + { + [SqlFunction] + public static EventArchiveRecordArray ReadEventArchiveRecords(SqlString deviceName, ModbusAddress eventArchiveAddress, SqlInt32 index) + { + //var deviceNameValue = deviceName.Value; + //var eventArchiveRecords = (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.MODBUS.MODBUSMaster).ReadEventArchiveRecord(null, new Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(eventArchiveAddress.RelativeAddress.Value), eventArchiveAddress.IsZeroBased.Value), Convert.ToUInt16(index.Value), null); + return EventArchiveRecordArray.Null; // new Types.MODBUSMaster.MODBUSMaster_EventArchiveRecordArray() { eventArchiveRecords = eventArchiveRecords.Select(ear => new Types.MODBUSMaster.MODBUSMaster_EventArchiveRecord() { Index = ear.Index, Data = ear.Data }).ToList() }; + } + } +} diff --git a/DeviceSQL.ModbusMaster/Functions/ReadFloats.cs b/DeviceSQL.ModbusMaster/Functions/ReadFloats.cs new file mode 100644 index 0000000..451f140 --- /dev/null +++ b/DeviceSQL.ModbusMaster/Functions/ReadFloats.cs @@ -0,0 +1,22 @@ +#region Imported Types + +using DeviceSQL.SQLTypes.Modbus; +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class MODBUSMaster + { + [SqlFunction] + public static FloatRegisterArray ReadFloats(SqlString deviceName, FloatRegisterArray floatRegisterArray) + { + //var deviceNameValue = deviceName.Value; + //var floatRegisters = new List(floatRegisterArray.floatRegisters.Select(floatRegister => new Device.MODBUS.Data.FloatRegister(new Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(floatRegister.Address.RelativeAddress.Value), floatRegister.Address.IsZeroBased.Value), floatRegister.ByteSwap.Value, floatRegister.WordSwap.Value))); + //(DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.MODBUS.MODBUSMaster).ReadFloatRegisters(null, ref floatRegisters, null); + return FloatRegisterArray.Null; // new Types.MODBUSMaster.MODBUSMaster_FloatRegisterArray() { floatRegisters = floatRegisters.Select(floatRegister => new Types.MODBUSMaster.MODBUSMaster_FloatRegister() { Address = new Types.MODBUSMaster.MODBUSMaster_MODBUSAddress { RelativeAddress = floatRegister.Address.RelativeAddress, IsZeroBased = floatRegister.Address.IsZeroBased }, Data = floatRegister.Data }).ToList() }; + } + } +} diff --git a/DeviceSQL.ModbusMaster/Functions/ReadHistoryArchiveRecord.cs b/DeviceSQL.ModbusMaster/Functions/ReadHistoryArchiveRecord.cs new file mode 100644 index 0000000..7ff040b --- /dev/null +++ b/DeviceSQL.ModbusMaster/Functions/ReadHistoryArchiveRecord.cs @@ -0,0 +1,22 @@ +#region Imported Types + + +using DeviceSQL.SQLTypes.Modbus; +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class MODBUSMaster + { + [SqlFunction] + public static HistoryArchiveRecord ReadHistoryArchiveRecord(SqlString deviceName, ModbusAddress historyArchiveAddress, SqlInt32 index, SqlByte recordSize) + { + //var deviceNameValue = deviceName.Value; + //var historyArchiveRecord = (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.MODBUS.MODBUSMaster).ReadHistoryArchiveRecord(null, new Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(historyArchiveAddress.RelativeAddress.Value), historyArchiveAddress.IsZeroBased.Value), Convert.ToUInt16(index.Value), recordSize.Value, null); + return HistoryArchiveRecord.Null; // new Types.MODBUSMaster.MODBUSMaster_HistoryArchiveRecord() { Index = historyArchiveRecord.Index, Data = historyArchiveRecord.Data }; + } + } +} diff --git a/DeviceSQL.ModbusMaster/Functions/ReadHoldings.cs b/DeviceSQL.ModbusMaster/Functions/ReadHoldings.cs new file mode 100644 index 0000000..2682cba --- /dev/null +++ b/DeviceSQL.ModbusMaster/Functions/ReadHoldings.cs @@ -0,0 +1,22 @@ +#region Imported Types + +using DeviceSQL.SQLTypes.Modbus; +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class MODBUSMaster + { + [SqlFunction] + public static HoldingRegisterArray ReadHoldings(SqlString deviceName, HoldingRegisterArray holdingRegisterArray) + { + //var deviceNameValue = deviceName.Value; + //var holdingRegisters = new List(holdingRegisterArray.holdingRegisters.Select(holdingRegister => new Device.MODBUS.Data.HoldingRegister(new Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(holdingRegister.Address.RelativeAddress.Value), holdingRegister.Address.IsZeroBased.Value), holdingRegister.ByteSwap.Value))); + //(DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.MODBUS.MODBUSMaster).ReadHoldingRegisters(null, ref holdingRegisters, null); + return HoldingRegisterArray.Null; // new Types.MODBUSMaster.MODBUSMaster_HoldingRegisterArray() { holdingRegisters = holdingRegisters.Select(holdingRegister => new Types.MODBUSMaster.MODBUSMaster_HoldingRegister() { Address = new Types.MODBUSMaster.MODBUSMaster_MODBUSAddress { RelativeAddress = holdingRegister.Address.RelativeAddress, IsZeroBased = holdingRegister.Address.IsZeroBased }, ByteSwap = holdingRegister.ByteSwap, Data = holdingRegister.Data }).ToList() }; + } + } +} diff --git a/DeviceSQL.ModbusMaster/Functions/ReadInputs.cs b/DeviceSQL.ModbusMaster/Functions/ReadInputs.cs new file mode 100644 index 0000000..80441c9 --- /dev/null +++ b/DeviceSQL.ModbusMaster/Functions/ReadInputs.cs @@ -0,0 +1,22 @@ +#region Imported Types + +using DeviceSQL.SQLTypes.Modbus; +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class MODBUSMaster + { + [SqlFunction] + public static InputRegisterArray ReadInputs(SqlString deviceName, InputRegisterArray inputRegisterArray) + { + //var deviceNameValue = deviceName.Value; + // var inputRegisters = new List(inputRegisterArray.inputRegisters.Select(inputRegister => new Device.MODBUS.Data.InputRegister(new Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(inputRegister.Address.RelativeAddress.Value), inputRegister.Address.IsZeroBased.Value), inputRegister.ByteSwap.Value))); + //(DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.MODBUS.MODBUSMaster).ReadInputRegisters(null, ref inputRegisters, null); + return InputRegisterArray.Null; // new Types.MODBUSMaster.MODBUSMaster_InputRegisterArray() { inputRegisters = inputRegisters.Select(inputRegister => new Types.MODBUSMaster.MODBUSMaster_InputRegister() { Address = new Types.MODBUSMaster.MODBUSMaster_MODBUSAddress { RelativeAddress = inputRegister.Address.RelativeAddress, IsZeroBased = inputRegister.Address.IsZeroBased }, ByteSwap = inputRegister.ByteSwap, Data = inputRegister.Data }).ToList() }; + } + } +} diff --git a/DeviceSQL.ModbusMaster/Functions/ReadLongs.cs b/DeviceSQL.ModbusMaster/Functions/ReadLongs.cs new file mode 100644 index 0000000..307c8f7 --- /dev/null +++ b/DeviceSQL.ModbusMaster/Functions/ReadLongs.cs @@ -0,0 +1,22 @@ +#region Imported Types + +using DeviceSQL.SQLTypes.Modbus; +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class MODBUSMaster + { + [SqlFunction] + public static LongRegisterArray ReadLongs(SqlString deviceName, LongRegisterArray longRegisterArray) + { + // var deviceNameValue = deviceName.Value; + //var longRegisters = new List(longRegisterArray.longRegisters.Select(longRegister => new Device.MODBUS.Data.LongRegister(new Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(longRegister.Address.RelativeAddress.Value), longRegister.Address.IsZeroBased.Value), longRegister.ByteSwap.Value, longRegister.WordSwap.Value))); + // (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.MODBUS.MODBUSMaster).ReadLongRegisters(null, ref longRegisters, null); + return LongRegisterArray.Null; // new Types.MODBUSMaster.MODBUSMaster_LongRegisterArray() { longRegisters = longRegisters.Select(floatRegister => new Types.MODBUSMaster.MODBUSMaster_LongRegister() { Address = new Types.MODBUSMaster.MODBUSMaster_MODBUSAddress { RelativeAddress = floatRegister.Address.RelativeAddress, IsZeroBased = floatRegister.Address.IsZeroBased }, Data = floatRegister.Data }).ToList() }; + } + } +} diff --git a/DeviceSQL.ModbusMaster/Functions/ReadShorts.cs b/DeviceSQL.ModbusMaster/Functions/ReadShorts.cs new file mode 100644 index 0000000..15d8192 --- /dev/null +++ b/DeviceSQL.ModbusMaster/Functions/ReadShorts.cs @@ -0,0 +1,22 @@ +#region Imported Types + +using DeviceSQL.SQLTypes.Modbus; +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class MODBUSMaster + { + [SqlFunction] + public static ShortRegisterArray ReadShorts(SqlString deviceName, ShortRegisterArray shortRegisterArray) + { + //var deviceNameValue = deviceName.Value; + //var shortRegisters = new List(shortRegisterArray.shortRegisters.Select(longRegister => new Device.MODBUS.Data.ShortRegister(new Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(longRegister.Address.RelativeAddress.Value), longRegister.Address.IsZeroBased.Value), longRegister.ByteSwap.Value))); + //(DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.MODBUS.MODBUSMaster).ReadShortRegisters(null, ref shortRegisters, null); + return ShortRegisterArray.Null; // new Types.MODBUSMaster.MODBUSMaster_ShortRegisterArray() { shortRegisters = shortRegisters.Select(shortRegister => new Types.MODBUSMaster.MODBUSMaster_ShortRegister() { Address = new Types.MODBUSMaster.MODBUSMaster_MODBUSAddress { RelativeAddress = shortRegister.Address.RelativeAddress, IsZeroBased = shortRegister.Address.IsZeroBased }, Data = shortRegister.Data }).ToList() }; + } + } +} diff --git a/DeviceSQL.ModbusMaster/Functions/ReadString.cs b/DeviceSQL.ModbusMaster/Functions/ReadString.cs new file mode 100644 index 0000000..43c6ac9 --- /dev/null +++ b/DeviceSQL.ModbusMaster/Functions/ReadString.cs @@ -0,0 +1,23 @@ +#region Imported Types + +using DeviceSQL.SQLTypes.Modbus; +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class MODBUSMaster + { + [SqlFunction] + public static StringRegister ReadString(SqlString deviceName, StringRegister stringRegister) + { + //var deviceNameValue = deviceName.Value; + // var stringRegisterValue = new Device.MODBUS.Data.StringRegister(new Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(stringRegister.Address.RelativeAddress.Value), stringRegister.Address.IsZeroBased.Value), stringRegister.Length.Value); + //(DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.MODBUS.MODBUSMaster).ReadStringRegister(null, null, ref stringRegisterValue); + //stringRegister.Data = stringRegisterValue.Data; + return StringRegister.Null; // stringRegister; + } + } +} diff --git a/DeviceSQL.ModbusMaster/Functions/WriteBoolean.cs b/DeviceSQL.ModbusMaster/Functions/WriteBoolean.cs new file mode 100644 index 0000000..f61bd0e --- /dev/null +++ b/DeviceSQL.ModbusMaster/Functions/WriteBoolean.cs @@ -0,0 +1,22 @@ +#region Imported Types + +using DeviceSQL.SQLTypes.Modbus; +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class MODBUSMaster + { + [SqlFunction] + public static SqlBoolean WriteBoolean(SqlString deviceName, BooleanRegister booleanRegister) + { + ///var deviceNameValue = deviceName.Value; + //var booleanRegisterRaw = new Device.MODBUS.Data.BooleanRegister(new Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(booleanRegister.Address.RelativeAddress.Value), booleanRegister.Address.IsZeroBased.Value)); + //(DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.MODBUS.MODBUSMaster).WriteBooleanRegister(null, booleanRegisterRaw, null); + return true; + } + } +} diff --git a/DeviceSQL.ModbusMaster/Functions/WriteFloats.cs b/DeviceSQL.ModbusMaster/Functions/WriteFloats.cs new file mode 100644 index 0000000..a5537a5 --- /dev/null +++ b/DeviceSQL.ModbusMaster/Functions/WriteFloats.cs @@ -0,0 +1,22 @@ +#region Imported Types + +using DeviceSQL.SQLTypes.Modbus; +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class MODBUSMaster + { + [SqlFunction] + public static SqlBoolean WriteFloats(SqlString deviceName, FloatRegisterArray floatRegisterArray) + { + //var deviceNameValue = deviceName.Value; + // var floatRegisters = new List(floatRegisterArray.floatRegisters.Select(floatRegister => new Device.MODBUS.Data.FloatRegister(new Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(floatRegister.Address.RelativeAddress.Value), floatRegister.Address.IsZeroBased.Value), floatRegister.ByteSwap.Value, floatRegister.WordSwap.Value))); + //(DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.MODBUS.MODBUSMaster).WriteFloatRegisters(null, floatRegisters, null); + return true; + } + } +} diff --git a/DeviceSQL.ModbusMaster/Properties/AssemblyInfo.cs b/DeviceSQL.ModbusMaster/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..aa93103 --- /dev/null +++ b/DeviceSQL.ModbusMaster/Properties/AssemblyInfo.cs @@ -0,0 +1,24 @@ +using System.Reflection; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with the SQLCLR assembly. +[assembly: AssemblyTitle("DeviceSQL.ModbusMaster")] +[assembly: AssemblyDescription("DeviceSQL.ModbusMaster")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("CloudSonix")] +[assembly: AssemblyProduct("DeviceSQL")] +[assembly: AssemblyCopyright("© CloudSonix. All rights reserved.")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] +[assembly: AssemblyKeyFileAttribute("../DeviceSQL-Key.snk")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/DeviceSQL.ModbusMaster/Schemas/ModbusMaster.sql b/DeviceSQL.ModbusMaster/Schemas/ModbusMaster.sql new file mode 100644 index 0000000..8169108 --- /dev/null +++ b/DeviceSQL.ModbusMaster/Schemas/ModbusMaster.sql @@ -0,0 +1 @@ +CREATE SCHEMA [ModbusMaster] diff --git a/DeviceSQL.ROCMaster/DeviceSQL.ROCMaster.sqlproj b/DeviceSQL.ROCMaster/DeviceSQL.ROCMaster.sqlproj new file mode 100644 index 0000000..929c152 --- /dev/null +++ b/DeviceSQL.ROCMaster/DeviceSQL.ROCMaster.sqlproj @@ -0,0 +1,131 @@ + + + + + Debug + AnyCPU + DeviceSQL.ROCMaster + 2.0 + 4.1 + {c5358adc-eca3-464d-aeb9-ce99048d4be3} + Microsoft.Data.Tools.Schema.Sql.Sql140DatabaseSchemaProvider + Database + + + DeviceSQL.ROCMaster + DeviceSQL.ROCMaster + 1033, CI + BySchemaAndSchemaType + True + v4.8 + CS + Properties + False + True + True + ROCMaster + + UNSAFE + False + ..\DeviceSQL-Key.snk + + + bin\Release\ + $(MSBuildProjectName).sql + False + pdbonly + true + false + true + prompt + 4 + + + bin\Debug\ + $(MSBuildProjectName).sql + false + true + full + false + true + true + prompt + 4 + + + 11.0 + + True + 11.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DeviceSQL.SQLTypes.ROC + {256ca566-5436-4543-bc13-d2480bee70c2} + True + True + True + UNSAFE + True + + + + + + \ No newline at end of file diff --git a/DeviceSQL.ROCMaster/Functions/ClearAuditLogEventFlags.cs b/DeviceSQL.ROCMaster/Functions/ClearAuditLogEventFlags.cs new file mode 100644 index 0000000..b9c719a --- /dev/null +++ b/DeviceSQL.ROCMaster/Functions/ClearAuditLogEventFlags.cs @@ -0,0 +1,19 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class ROCMaster + { + [SqlFunction] + public static int ClearAuditLogEventFlags(SqlString deviceName, byte numberOfAuditLogRecordsToClear, int startingAuditLogPointer) + { + //var deviceNameValue = deviceName.Value; + return 0; // (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).ClearAuditLogEventFlags(null, null, null, null, numberOfAuditLogRecordsToClear, Convert.ToUInt16(startingAuditLogPointer)); + } + } +} diff --git a/DeviceSQL.ROCMaster/Functions/GetAlarms.cs b/DeviceSQL.ROCMaster/Functions/GetAlarms.cs new file mode 100644 index 0000000..8029dbe --- /dev/null +++ b/DeviceSQL.ROCMaster/Functions/GetAlarms.cs @@ -0,0 +1,21 @@ +#region Imported Types + +using DeviceSQL.SQLTypes.ROC; +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class ROCMaster + { + [SqlFunction] + public static AlarmRecordArray GetAlarms(SqlString deviceName, byte count, int startIndex) + { + //var deviceNameValue = deviceName.Value; + //var alarmsRecords = (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).GetAlarms(null, null, null, null, count, Convert.ToUInt16(startIndex)); + return AlarmRecordArray.Null; // new Types.ROCMaster.ROCMaster_AlarmRecordArray() { alarmRecords = alarmsRecords.Select(a => new Types.ROCMaster.ROCMaster_AlarmRecord() { data = a.data, Index = a.Index }).ToList() }; + } + } +} diff --git a/DeviceSQL.ROCMaster/Functions/GetArchiveInfo.cs b/DeviceSQL.ROCMaster/Functions/GetArchiveInfo.cs new file mode 100644 index 0000000..327a6c6 --- /dev/null +++ b/DeviceSQL.ROCMaster/Functions/GetArchiveInfo.cs @@ -0,0 +1,21 @@ +#region Imported Types + +using DeviceSQL.SQLTypes.ROC; +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class ROCMaster + { + [SqlFunction] + public static ArchiveInformation GetArchiveInfo(SqlString deviceName) + { + //var deviceNameValue = deviceName.Value; + //var archiveInfo = (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).GetArchiveInfo(null, null, null, null); + return ArchiveInformation.Null; // new Types.ROCMaster.ROCMaster_ArchiveInformation() { Data = archiveInfo.data }; + } + } +} diff --git a/DeviceSQL.ROCMaster/Functions/GetAuditLogRecords.cs b/DeviceSQL.ROCMaster/Functions/GetAuditLogRecords.cs new file mode 100644 index 0000000..cee093e --- /dev/null +++ b/DeviceSQL.ROCMaster/Functions/GetAuditLogRecords.cs @@ -0,0 +1,21 @@ +#region Imported Types + +using DeviceSQL.SQLTypes.ROC; +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class ROCMaster + { + [SqlFunction] + public static AuditLogRecordArray GetAuditLogRecords(SqlString deviceName, byte count, int startIndex) + { + //var deviceNameValue = deviceName.Value; + //var auditLogRecords = (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).GetAuditLogRecords(null, null, null, null, count, Convert.ToUInt16(startIndex)); + return AuditLogRecordArray.Null; // new Types.ROCMaster.ROCMaster_AuditLogRecordArray() { auditLogRecords = auditLogRecords.Select(e => new Types.ROCMaster.ROCMaster_AuditLogRecord() { Data = e.data, Index = e.Index }).ToList() }; + } + } +} diff --git a/DeviceSQL.ROCMaster/Functions/GetCurrentROCPlusAlarmIndex.cs b/DeviceSQL.ROCMaster/Functions/GetCurrentROCPlusAlarmIndex.cs new file mode 100644 index 0000000..eb90159 --- /dev/null +++ b/DeviceSQL.ROCMaster/Functions/GetCurrentROCPlusAlarmIndex.cs @@ -0,0 +1,19 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class ROCMaster + { + [SqlFunction] + public static int GetCurrentROCPlusAlarmIndex(SqlString deviceName) + { + //var deviceNameValue = deviceName.Value; + return 0; // (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).GetCurrentROCPlusAlarmIndex(null, null, null, null); + } + } +} diff --git a/DeviceSQL.ROCMaster/Functions/GetCurrentROCPlusEventIndex.cs b/DeviceSQL.ROCMaster/Functions/GetCurrentROCPlusEventIndex.cs new file mode 100644 index 0000000..be7cbed --- /dev/null +++ b/DeviceSQL.ROCMaster/Functions/GetCurrentROCPlusEventIndex.cs @@ -0,0 +1,19 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class ROCMaster + { + [SqlFunction] + public static int GetCurrentROCPlusEventIndex(SqlString deviceName) + { + //var deviceNameValue = deviceName.Value; + return 0;// (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).GetCurrentROCPlusEventIndex(null, null, null, null); + } + } +} diff --git a/DeviceSQL.ROCMaster/Functions/GetCurrentROCPlusHistorySegmentIndex.cs b/DeviceSQL.ROCMaster/Functions/GetCurrentROCPlusHistorySegmentIndex.cs new file mode 100644 index 0000000..9372170 --- /dev/null +++ b/DeviceSQL.ROCMaster/Functions/GetCurrentROCPlusHistorySegmentIndex.cs @@ -0,0 +1,19 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class ROCMaster + { + [SqlFunction] + public static int GetCurrentROCPlusHistorySegmentIndex(SqlString deviceName, byte historySegment, byte historyType) + { + //var deviceNameValue = deviceName.Value; + return 0;// (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).GetCurrentROCPlusHistorySegmentIndex(null, null, null, null, historySegment, historyType); + } + } +} diff --git a/DeviceSQL.ROCMaster/Functions/GetDoubleValue.cs b/DeviceSQL.ROCMaster/Functions/GetDoubleValue.cs new file mode 100644 index 0000000..d61d3c1 --- /dev/null +++ b/DeviceSQL.ROCMaster/Functions/GetDoubleValue.cs @@ -0,0 +1,21 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class ROCMaster + { + [SqlFunction] + public static SqlDouble GetDoubleValue(SqlString deviceName, SqlByte pointType, SqlByte logicalNumber, SqlByte parameterNumber) + { + //var deviceNameValue = deviceName.Value; + //var DoubleParameter = new DoubleParameter(new Tlp(pointType.Value, logicalNumber.Value, parameterNumber.Value)); + //(DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).ReadParameter(null, null, null, null, ref DoubleParameter); + return 0;// DoubleParameter.NullableValue.HasValue ? DoubleParameter.Value : SqlDouble.Null; + } + } +} diff --git a/DeviceSQL.ROCMaster/Functions/GetEvents.cs b/DeviceSQL.ROCMaster/Functions/GetEvents.cs new file mode 100644 index 0000000..885ff96 --- /dev/null +++ b/DeviceSQL.ROCMaster/Functions/GetEvents.cs @@ -0,0 +1,21 @@ +#region Imported Types + +using DeviceSQL.SQLTypes.ROC; +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class ROCMaster + { + [SqlFunction] + public static EventRecordArray GetEvents(SqlString deviceName, byte count, int startIndex) + { + //var deviceNameValue = deviceName.Value; + //var eventRecords = (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).GetEvents(null, null, null, null, count, Convert.ToUInt16(startIndex)); + return EventRecordArray.Null; // new Types.ROCMaster.ROCMaster_EventRecordArray() { eventRecords = eventRecords.Select(e => new Types.ROCMaster.ROCMaster_EventRecord() { Data = e.data, Index = e.Index }).ToList() }; + } + } +} diff --git a/DeviceSQL.ROCMaster/Functions/GetFloatValue.cs b/DeviceSQL.ROCMaster/Functions/GetFloatValue.cs new file mode 100644 index 0000000..5f3632c --- /dev/null +++ b/DeviceSQL.ROCMaster/Functions/GetFloatValue.cs @@ -0,0 +1,22 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class ROCMaster + { + [SqlFunction] + public static SqlSingle GetFloatValue(SqlString deviceName, SqlByte pointType, SqlByte logicalNumber, SqlByte parameterNumber) + { + //var deviceNameValue = deviceName.Value; + //var flpParameter = new FlpParameter(new Tlp(pointType.Value, logicalNumber.Value, parameterNumber.Value)); + //(DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).ReadParameter(null, null, null, null, ref flpParameter); + return 0;// flpParameter.NullableValue.HasValue ? flpParameter.Value : SqlSingle.Null; + } + + } +} diff --git a/DeviceSQL.ROCMaster/Functions/GetFstInformation.cs b/DeviceSQL.ROCMaster/Functions/GetFstInformation.cs new file mode 100644 index 0000000..b9eedbe --- /dev/null +++ b/DeviceSQL.ROCMaster/Functions/GetFstInformation.cs @@ -0,0 +1,44 @@ +#region Imported Types + +using DeviceSQL.SQLTypes.ROC; +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class ROCMaster + { + [SqlFunction] + public static FSTInformation GetFstInformation(SqlString deviceName, SqlByte fstNumber) + { + //var deviceNameValue = deviceName.Value; + //var rocMaster = (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster); + + //var fstHeaderInfo = rocMaster.GetFstHeaderInfo(null, null, null, null, fstNumber.Value); + //var fstSizeParameter = new UInt16Parameter(new Tlp(16, fstNumber.Value, 25)); + + //rocMaster.ReadParameter(null, null, null, null, ref fstSizeParameter); + + //var fstSize = fstSizeParameter.Value; + //var codeBytes = new List(); + + //while (fstSize > codeBytes.Count) + //{ + // codeBytes.AddRange(rocMaster.GetFstCodeChunk(null, null, null, null, 0, (byte)codeBytes.Count, (fstSize - codeBytes.Count) > 240 ? (byte)240 : (byte)(fstSize - codeBytes.Count)).CodeBytes); + //} + + //return new Types.ROCMaster.ROCMaster_FSTInformation() + //{ + // FSTNumber = fstNumber.Value, + // Version = fstHeaderInfo.Version, + // Description = fstHeaderInfo.Description, + // FSTCode = codeBytes.ToArray() + //}; + + return FSTInformation.Null; + } + + } +} diff --git a/DeviceSQL.ROCMaster/Functions/GetHistory.cs b/DeviceSQL.ROCMaster/Functions/GetHistory.cs new file mode 100644 index 0000000..92804dd --- /dev/null +++ b/DeviceSQL.ROCMaster/Functions/GetHistory.cs @@ -0,0 +1,21 @@ +#region Imported Types + +using DeviceSQL.SQLTypes.ROC; +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class ROCMaster + { + [SqlFunction] + public static HistoryRecordArray GetHistory(SqlString deviceName, byte historicalRamArea, byte historyPointNumber, byte count, int startIndex) + { + //var deviceNameValue = deviceName.Value; + // var historyRecords = (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).GetHistory(null, null, null, null, historicalRamArea, historyPointNumber, count, Convert.ToUInt16(startIndex)); + return HistoryRecordArray.Null; // new Types.ROCMaster.ROCMaster_HistoryRecordArray() { historyRecords = historyRecords.Select(h => new Types.ROCMaster.ROCMaster_HistoryRecord() { HistorySegment = h.HistorySegment, HistoryPointNumber = h.HistoryPointNumber, Index = h.Index, Value = h.Value }).ToList() }; + } + } +} diff --git a/DeviceSQL.ROCMaster/Functions/GetInt16Value.cs b/DeviceSQL.ROCMaster/Functions/GetInt16Value.cs new file mode 100644 index 0000000..f8bd14f --- /dev/null +++ b/DeviceSQL.ROCMaster/Functions/GetInt16Value.cs @@ -0,0 +1,21 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class ROCMaster + { + [SqlFunction] + public static SqlInt16 GetInt16Value(SqlString deviceName, SqlByte pointType, SqlByte logicalNumber, SqlByte parameterNumber) + { + //var deviceNameValue = deviceName.Value; + //var int16Parameter = new Int16Parameter(new Tlp(pointType.Value, logicalNumber.Value, parameterNumber.Value)); + //(DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).ReadParameter(null, null, null, null, ref int16Parameter); + return 0; // int16Parameter.Value; + } + } +} diff --git a/DeviceSQL.ROCMaster/Functions/GetInt32Value.cs b/DeviceSQL.ROCMaster/Functions/GetInt32Value.cs new file mode 100644 index 0000000..e10720b --- /dev/null +++ b/DeviceSQL.ROCMaster/Functions/GetInt32Value.cs @@ -0,0 +1,21 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class ROCMaster + { + [SqlFunction] + public static SqlInt32 GetInt32Value(SqlString deviceName, SqlByte pointType, SqlByte logicalNumber, SqlByte parameterNumber) + { + //var deviceNameValue = deviceName.Value; + //var int32Parameter = new Int32Parameter(new Tlp(pointType.Value, logicalNumber.Value, parameterNumber.Value)); + //(DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).ReadParameter(null, null, null, null, ref int32Parameter); + return 0;// int32Parameter.Value; + } + } +} diff --git a/DeviceSQL.ROCMaster/Functions/GetInt8Value.cs b/DeviceSQL.ROCMaster/Functions/GetInt8Value.cs new file mode 100644 index 0000000..2917e53 --- /dev/null +++ b/DeviceSQL.ROCMaster/Functions/GetInt8Value.cs @@ -0,0 +1,21 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class ROCMaster + { + [SqlFunction] + public static SqlInt16 GetInt8Value(SqlString deviceName, SqlByte pointType, SqlByte logicalNumber, SqlByte parameterNumber) + { + //var deviceNameValue = deviceName.Value; + //var int8Parameter = new Int8Parameter(new Tlp(pointType.Value, logicalNumber.Value, parameterNumber.Value)); + // (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).ReadParameter(null, null, null, null, ref int8Parameter); + return 0; // int8Parameter.Value; + } + } +} diff --git a/DeviceSQL.ROCMaster/Functions/GetMinutelyHistory.cs b/DeviceSQL.ROCMaster/Functions/GetMinutelyHistory.cs new file mode 100644 index 0000000..c8098e9 --- /dev/null +++ b/DeviceSQL.ROCMaster/Functions/GetMinutelyHistory.cs @@ -0,0 +1,22 @@ +#region Imported Types + +using DeviceSQL.SQLTypes.ROC; +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; +using System.Linq; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class ROCMaster + { + [SqlFunction] + public static HistoryRecordArray GetMinutelyHistory(SqlString deviceName, byte historyPointNumber) + { + //var deviceNameValue = deviceName.Value; + //var historyRecords = (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).GetMinutelyHistory(null, null, null, null, historyPointNumber); + return HistoryRecordArray.Null; // new Types.ROCMaster.ROCMaster_HistoryRecordArray() { historyRecords = historyRecords.Select(h => new Types.ROCMaster.ROCMaster_HistoryRecord() { HistoryPointNumber = h.HistoryPointNumber, Index = h.Index, Value = h.Value }).ToList() }; + } + } +} diff --git a/DeviceSQL.ROCMaster/Functions/GetROCPlusAlarms.cs b/DeviceSQL.ROCMaster/Functions/GetROCPlusAlarms.cs new file mode 100644 index 0000000..42c13ab --- /dev/null +++ b/DeviceSQL.ROCMaster/Functions/GetROCPlusAlarms.cs @@ -0,0 +1,21 @@ +#region Imported Types + +using DeviceSQL.SQLTypes.ROC; +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class ROCMaster + { + [SqlFunction] + public static ROCPlusAlarmRecordArray GetROCPlusAlarms(SqlString deviceName, byte count, int startIndex) + { + //var deviceNameValue = deviceName.Value; + //var rocPlusAlarmRecords = (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).GetROCPlusAlarms(null, null, null, null, count, Convert.ToUInt16(startIndex)); + return ROCPlusAlarmRecordArray.Null; // new Types.ROCMaster.ROCMaster_ROCPlusAlarmRecordArray() { rocPlusAlarmRecords = rocPlusAlarmRecords.Select(a => new Types.ROCMaster.ROCMaster_ROCPlusAlarmRecord() { Data = a.data, Index = a.Index }).ToList() }; + } + } +} diff --git a/DeviceSQL.ROCMaster/Functions/GetROCPlusConfiguredHistoryPoints.cs b/DeviceSQL.ROCMaster/Functions/GetROCPlusConfiguredHistoryPoints.cs new file mode 100644 index 0000000..62f170a --- /dev/null +++ b/DeviceSQL.ROCMaster/Functions/GetROCPlusConfiguredHistoryPoints.cs @@ -0,0 +1,21 @@ +#region Imported Types + +using DeviceSQL.SQLTypes.ROC; +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class ROCMaster + { + [SqlFunction] + public static ROCPlusHistoryPointArray GetROCPlusConfiguredHistoryPoints(SqlString deviceName, byte historySegment) + { + //var deviceNameValue = deviceName.Value; + //var configuredHistoryPoints = (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).GetROCPlusConfiguredHistoryPoints(null, null, null, null, historySegment); + return ROCPlusHistoryPointArray.Null; // new Types.ROCMaster.ROCMaster_ROCPlusHistoryPointArray() { historyPoints = configuredHistoryPoints }; + } + } +} diff --git a/DeviceSQL.ROCMaster/Functions/GetROCPlusEvents.cs b/DeviceSQL.ROCMaster/Functions/GetROCPlusEvents.cs new file mode 100644 index 0000000..fdd0cec --- /dev/null +++ b/DeviceSQL.ROCMaster/Functions/GetROCPlusEvents.cs @@ -0,0 +1,21 @@ +#region Imported Types + +using DeviceSQL.SQLTypes.ROC; +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class ROCMaster + { + [SqlFunction] + public static ROCPlusEventRecordArray GetROCPlusEvents(SqlString deviceName, byte count, int startIndex) + { + //var deviceNameValue = deviceName.Value; + //var rocPlusEventRecords = (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).GetROCPlusEvents(null, null, null, null, count, Convert.ToUInt16(startIndex)); + return ROCPlusEventRecordArray.Null; // new Types.ROCMaster.ROCMaster_ROCPlusEventRecordArray() { rocPlusEventRecords = rocPlusEventRecords.Select(e => new Types.ROCMaster.ROCMaster_ROCPlusEventRecord() { Data = e.data, Index = e.Index }).ToList() }; + } + } +} diff --git a/DeviceSQL.ROCMaster/Functions/GetROCPlusHistory.cs b/DeviceSQL.ROCMaster/Functions/GetROCPlusHistory.cs new file mode 100644 index 0000000..5b48a19 --- /dev/null +++ b/DeviceSQL.ROCMaster/Functions/GetROCPlusHistory.cs @@ -0,0 +1,21 @@ +#region Imported Types + +using DeviceSQL.SQLTypes.ROC; +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class ROCMaster + { + [SqlFunction] + public static ROCPlusHistoryRecordArray GetROCPlusHistory(SqlString deviceName, byte historySegment, int historyIndex, byte historyType, byte startingHistoryPoint, byte numberOfHistoryPoints, byte numberOfTimePeriods) + { + //var deviceNameValue = deviceName.Value; + //var rocPlusHistoryRecords = (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).GetROCPlusHistory(null, null, null, null, historySegment, Convert.ToUInt16(historyIndex), historyType, startingHistoryPoint, numberOfHistoryPoints, numberOfTimePeriods); + return ROCPlusHistoryRecordArray.Null; // new Types.ROCMaster.ROCMaster_ROCPlusHistoryRecordArray() { rocPlusHistoryRecords = rocPlusHistoryRecords.Select(h => new Types.ROCMaster.ROCMaster_ROCPlusHistoryRecord() { HistorySegment = h.HistorySegment, HistoryPointNumber = h.HistoryPointNumber, Index = h.Index, Value = h.Value }).ToList() }; + } + } +} diff --git a/DeviceSQL.ROCMaster/Functions/GetROCPlusHistoryByHistoryPointArray.cs b/DeviceSQL.ROCMaster/Functions/GetROCPlusHistoryByHistoryPointArray.cs new file mode 100644 index 0000000..985443b --- /dev/null +++ b/DeviceSQL.ROCMaster/Functions/GetROCPlusHistoryByHistoryPointArray.cs @@ -0,0 +1,21 @@ +#region Imported Types + +using DeviceSQL.SQLTypes.ROC; +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class ROCMaster + { + [SqlFunction] + public static ROCPlusHistoryRecordArray GetROCPlusHistoryByHistoryPointArray(SqlString deviceName, byte historySegment, int historyIndex, byte historyType, byte startingHistoryPoint, bool requestTimeStamps, byte numberOfHistoryPoints, ROCPlusHistoryPointArray requestedHistoryPoints, byte numberOfTimePeriods) + { + //var deviceNameValue = deviceName.Value; + //var rocPlusHistoryRecords = (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).GetROCPlusHistory(null, null, null, null, historySegment, Convert.ToUInt16(historyIndex), historyType, requestTimeStamps, requestedHistoryPoints.historyPoints, numberOfTimePeriods); + return ROCPlusHistoryRecordArray.Null; // new Types.ROCMaster.ROCMaster_ROCPlusHistoryRecordArray() { rocPlusHistoryRecords = rocPlusHistoryRecords.Select(h => new Types.ROCMaster.ROCMaster_ROCPlusHistoryRecord() { HistorySegment = h.HistorySegment, HistoryPointNumber = h.HistoryPointNumber, Index = h.Index, Value = h.Value }).ToList() }; + } + } +} diff --git a/DeviceSQL.ROCMaster/Functions/GetRealTimeClockValue.cs b/DeviceSQL.ROCMaster/Functions/GetRealTimeClockValue.cs new file mode 100644 index 0000000..b8200e5 --- /dev/null +++ b/DeviceSQL.ROCMaster/Functions/GetRealTimeClockValue.cs @@ -0,0 +1,19 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class ROCMaster + { + [SqlFunction] + public static SqlDateTime GetRealTimeClockValue(SqlString deviceName) + { + //var deviceNameValue = deviceName.Value; + return SqlDateTime.Null; // new SqlDateTime((DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).GetRealTimeClockValue(null, null, null, null)); + } + } +} diff --git a/DeviceSQL.ROCMaster/Functions/GetRealTimeClockValueWithCentury.cs b/DeviceSQL.ROCMaster/Functions/GetRealTimeClockValueWithCentury.cs new file mode 100644 index 0000000..5cef04a --- /dev/null +++ b/DeviceSQL.ROCMaster/Functions/GetRealTimeClockValueWithCentury.cs @@ -0,0 +1,19 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class ROCMaster + { + [SqlFunction] + public static SqlDateTime GetRealTimeClockValueWithCentury(SqlString deviceName, SqlInt32 century) + { + //var deviceNameValue = deviceName.Value; + return SqlDateTime.Null; // new SqlDateTime((DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).GetRealTimeClockValue(null, null, null, null, Convert.ToUInt16(century.Value))); + } + } +} diff --git a/DeviceSQL.ROCMaster/Functions/GetStringValue.cs b/DeviceSQL.ROCMaster/Functions/GetStringValue.cs new file mode 100644 index 0000000..d713c19 --- /dev/null +++ b/DeviceSQL.ROCMaster/Functions/GetStringValue.cs @@ -0,0 +1,46 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class ROCMaster + { + [SqlFunction] + public static SqlString GetStringValue(SqlString deviceName, SqlByte pointType, SqlByte logicalNumber, SqlByte parameterNumber, SqlByte stringLength) + { + //var deviceNameValue = deviceName.Value; + + //if (10 >= stringLength) + //{ + // var ac10Parameter = new Ac10Parameter(new Tlp(pointType.Value, logicalNumber.Value, parameterNumber.Value)); + // (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).ReadParameter(null, null, null, null, ref ac10Parameter); + // return ac10Parameter.Value; + //} + //else if (12 >= stringLength) + //{ + // var ac12Parameter = new Ac12Parameter(new Tlp(pointType.Value, logicalNumber.Value, parameterNumber.Value)); + // (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).ReadParameter(null, null, null, null, ref ac12Parameter); + // return ac12Parameter.Value; + //} + //else if (20 >= stringLength) + //{ + // var ac20Parameter = new Ac20Parameter(new Tlp(pointType.Value, logicalNumber.Value, parameterNumber.Value)); + // (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).ReadParameter(null, null, null, null, ref ac20Parameter); + // return ac20Parameter.Value; + //} + //else + //{ + // var ac30Parameter = new Ac30Parameter(new Tlp(pointType.Value, logicalNumber.Value, parameterNumber.Value)); + // (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).ReadParameter(null, null, null, null, ref ac30Parameter); + // return ac30Parameter.Value; + //} + + return ""; + + } + } +} diff --git a/DeviceSQL.ROCMaster/Functions/GetTimeValue.cs b/DeviceSQL.ROCMaster/Functions/GetTimeValue.cs new file mode 100644 index 0000000..3afb752 --- /dev/null +++ b/DeviceSQL.ROCMaster/Functions/GetTimeValue.cs @@ -0,0 +1,21 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class ROCMaster + { + [SqlFunction] + public static SqlDateTime GetTimeValue(SqlString deviceName, SqlByte pointType, SqlByte logicalNumber, SqlByte parameterNumber) + { + //var deviceNameValue = deviceName.Value; + //var timeParameter = new Device.ROC.Data.TimeParameter(new Device.ROC.Data.Tlp(pointType.Value, logicalNumber.Value, parameterNumber.Value)); + //(DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).ReadParameter(null, null, null, null, ref timeParameter); + return SqlDateTime.Null; // timeParameter.Value; + } + } +} diff --git a/DeviceSQL.ROCMaster/Functions/GetUInt16Value.cs b/DeviceSQL.ROCMaster/Functions/GetUInt16Value.cs new file mode 100644 index 0000000..703c78f --- /dev/null +++ b/DeviceSQL.ROCMaster/Functions/GetUInt16Value.cs @@ -0,0 +1,21 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class ROCMaster + { + [SqlFunction] + public static SqlInt32 GetUInt16Value(SqlString deviceName, SqlByte pointType, SqlByte logicalNumber, SqlByte parameterNumber) + { + //var deviceNameValue = deviceName.Value; + //var uInt16Parameter = new UInt16Parameter(new Tlp(pointType.Value, logicalNumber.Value, parameterNumber.Value)); + //(DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).ReadParameter(null, null, null, null, ref uInt16Parameter); + return 0; // uInt16Parameter.Value; + } + } +} diff --git a/DeviceSQL.ROCMaster/Functions/GetUInt32Value.cs b/DeviceSQL.ROCMaster/Functions/GetUInt32Value.cs new file mode 100644 index 0000000..e4ea24d --- /dev/null +++ b/DeviceSQL.ROCMaster/Functions/GetUInt32Value.cs @@ -0,0 +1,21 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class ROCMaster + { + [SqlFunction] + public static SqlInt64 GetUInt32Value(SqlString deviceName, SqlByte pointType, SqlByte logicalNumber, SqlByte parameterNumber) + { + //var deviceNameValue = deviceName.Value; + //var uInt32Parameter = new UInt32Parameter(new Tlp(pointType.Value, logicalNumber.Value, parameterNumber.Value)); + //(DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).ReadParameter(null, null, null, null, ref uInt32Parameter); + return 0; // uInt32Parameter.Value; + } + } +} diff --git a/DeviceSQL.ROCMaster/Functions/GetUInt8Value.cs b/DeviceSQL.ROCMaster/Functions/GetUInt8Value.cs new file mode 100644 index 0000000..3ebbff7 --- /dev/null +++ b/DeviceSQL.ROCMaster/Functions/GetUInt8Value.cs @@ -0,0 +1,21 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class ROCMaster + { + [SqlFunction] + public static SqlByte GetUInt8Value(SqlString deviceName, SqlByte pointType, SqlByte logicalNumber, SqlByte parameterNumber) + { + //var deviceNameValue = deviceName.Value; + // var uInt8Parameter = new UInt8Parameter(new Tlp(pointType.Value, logicalNumber.Value, parameterNumber.Value)); + //(DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).ReadParameter(null, null, null, null, ref uInt8Parameter); + return 0; // uInt8Parameter.Value; + } + } +} diff --git a/DeviceSQL.ROCMaster/Functions/ReadParameters.cs b/DeviceSQL.ROCMaster/Functions/ReadParameters.cs new file mode 100644 index 0000000..326aba6 --- /dev/null +++ b/DeviceSQL.ROCMaster/Functions/ReadParameters.cs @@ -0,0 +1,101 @@ +#region Imported Types + +using DeviceSQL.SQLTypes.ROC; +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class ROCMaster + { + [SqlFunction] + public static ParameterArray ReadParameters(SqlString deviceName, ParameterArray parameterArray) + { + // var deviceNameValue = deviceName.Value; + // var parameters = new List(); + // var length = parameterArray.Length; + + // for (var parameterIndex = 0; length > parameterIndex; parameterIndex++) + // { + // var parameter = parameterArray.GetParameter(parameterIndex); + + // switch (parameter.RawType) + // { + // case ParameterType.AC3: + // parameters.Add(new Ac3Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); + // break; + // case ParameterType.AC7: + // parameters.Add(new Ac7Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); + // break; + // case ParameterType.AC10: + // parameters.Add(new Ac10Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); + // break; + // case ParameterType.AC12: + // parameters.Add(new Ac12Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); + // break; + // case ParameterType.AC20: + // parameters.Add(new Ac20Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); + // break; + // case ParameterType.AC30: + // parameters.Add(new Ac30Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); + // break; + // case ParameterType.AC40: + // parameters.Add(new Ac40Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); + // break; + // case ParameterType.BIN: + // parameters.Add(new BinParameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); + // break; + // case ParameterType.FL: + // parameters.Add(new FlpParameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); + // break; + // case ParameterType.DOUBLE: + // parameters.Add(new DoubleParameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); + // break; + // case ParameterType.INT16: + // parameters.Add(new Int16Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); + // break; + // case ParameterType.INT32: + // parameters.Add(new Int32Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); + // break; + // case ParameterType.INT8: + // parameters.Add(new Int8Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); + // break; + // case ParameterType.TLP: + // parameters.Add(new TlpParameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); + // break; + // case ParameterType.UINT16: + // parameters.Add(new UInt16Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); + // break; + // case ParameterType.UINT32: + // parameters.Add(new UInt32Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); + // break; + // case ParameterType.TIME: + // parameters.Add(new TimeParameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); + // break; + // case ParameterType.UINT8: + // parameters.Add(new UInt8Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); + // break; + // } + + // } + + //(DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).ReadParameters(null, null, null, null, ref parameters); + + + // for (var parameterIndex = 0; length > parameterIndex; parameterIndex++) + // { + // var parameter = parameterArray[parameterIndex]; + // parameter.RawValue = parameters[parameterIndex].Data; + // parameterArray[parameterIndex] = parameter; + // } + + // return parameterArray; + + return ParameterArray.Null; + + } + + } +} diff --git a/DeviceSQL.ROCMaster/Functions/SetFloatValue.cs b/DeviceSQL.ROCMaster/Functions/SetFloatValue.cs new file mode 100644 index 0000000..25b3e7e --- /dev/null +++ b/DeviceSQL.ROCMaster/Functions/SetFloatValue.cs @@ -0,0 +1,21 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class ROCMaster + { + [SqlFunction] + public static SqlBoolean SetFloatValue(SqlString deviceName, SqlByte pointType, SqlByte logicalNumber, SqlByte parameterNumber, SqlSingle value) + { + //var deviceNameValue = deviceName.Value; + //var flpParameter = new FlpParameter(new Tlp(pointType.Value, logicalNumber.Value, parameterNumber.Value)) { Value = value.Value }; + //(DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).WriteParameter(null, null, null, null, flpParameter); + return true; + } + } +} diff --git a/DeviceSQL.ROCMaster/Functions/SetInt16Value.cs b/DeviceSQL.ROCMaster/Functions/SetInt16Value.cs new file mode 100644 index 0000000..fd7cbd5 --- /dev/null +++ b/DeviceSQL.ROCMaster/Functions/SetInt16Value.cs @@ -0,0 +1,21 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class ROCMaster + { + [SqlFunction] + public static SqlBoolean SetInt16Value(SqlString deviceName, SqlByte pointType, SqlByte logicalNumber, SqlByte parameterNumber, SqlInt16 value) + { + //var deviceNameValue = deviceName.Value; + //var int16Parameter = new Int16Parameter(new Tlp(pointType.Value, logicalNumber.Value, parameterNumber.Value)) { Value = value.Value }; + //(DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).WriteParameter(null, null, null, null, int16Parameter); + return true; + } + } +} diff --git a/DeviceSQL.ROCMaster/Functions/SetInt32Value.cs b/DeviceSQL.ROCMaster/Functions/SetInt32Value.cs new file mode 100644 index 0000000..430d247 --- /dev/null +++ b/DeviceSQL.ROCMaster/Functions/SetInt32Value.cs @@ -0,0 +1,21 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class ROCMaster + { + [SqlFunction] + public static SqlBoolean SetInt32Value(SqlString deviceName, SqlByte pointType, SqlByte logicalNumber, SqlByte parameterNumber, SqlInt32 value) + { + //var deviceNameValue = deviceName.Value; + //var int32Parameter = new Int32Parameter(new Tlp(pointType.Value, logicalNumber.Value, parameterNumber.Value)) { Value = value.Value }; + //(DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).WriteParameter(null, null, null, null, int32Parameter); + return true; + } + } +} diff --git a/DeviceSQL.ROCMaster/Functions/SetInt8Value.cs b/DeviceSQL.ROCMaster/Functions/SetInt8Value.cs new file mode 100644 index 0000000..8acd86b --- /dev/null +++ b/DeviceSQL.ROCMaster/Functions/SetInt8Value.cs @@ -0,0 +1,21 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class ROCMaster + { + [SqlFunction] + public static SqlBoolean SetInt8Value(SqlString deviceName, SqlByte pointType, SqlByte logicalNumber, SqlByte parameterNumber, SqlInt16 value) + { + //var deviceNameValue = deviceName.Value; + //var int8Parameter = new Int8Parameter(new Tlp(pointType.Value, logicalNumber.Value, parameterNumber.Value)) { Value = Convert.ToSByte(value.Value) }; + //(DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as DeviceSQL.Device.ROC.ROCMaster).WriteParameter(null, null, null, null, int8Parameter); + return true; + } + } +} diff --git a/DeviceSQL.ROCMaster/Functions/SetOperatorIdentification.cs b/DeviceSQL.ROCMaster/Functions/SetOperatorIdentification.cs new file mode 100644 index 0000000..4cb3286 --- /dev/null +++ b/DeviceSQL.ROCMaster/Functions/SetOperatorIdentification.cs @@ -0,0 +1,22 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System; +using System.Data.SqlTypes; +using System.Linq; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class ROCMaster + { + [SqlFunction] + public static SqlBoolean SetOperatorIdentification(SqlString deviceName, SqlString operatorId, SqlInt32 password) + { + //var deviceNameValue = deviceName.Value; + //(DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).SetOperatorIdentification(null, null, null, null, operatorId.IsNull ? "LOI" : operatorId.Value, Convert.ToUInt16(password.IsNull ? 1000 : password.Value)); + return true; + } + } +} diff --git a/DeviceSQL.ROCMaster/Functions/SetRealTimeClock.cs b/DeviceSQL.ROCMaster/Functions/SetRealTimeClock.cs new file mode 100644 index 0000000..3e9db2c --- /dev/null +++ b/DeviceSQL.ROCMaster/Functions/SetRealTimeClock.cs @@ -0,0 +1,20 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class ROCMaster + { + [SqlFunction] + public static SqlBoolean SetRealTimeClock(SqlString deviceName, SqlDateTime dateTime) + { + //var deviceNameValue = deviceName.Value; + //(DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).SetRealTimeClock(null, null, null, null, dateTime.Value); + return true; + } + } +} diff --git a/DeviceSQL.ROCMaster/Functions/SetStringValue.cs b/DeviceSQL.ROCMaster/Functions/SetStringValue.cs new file mode 100644 index 0000000..5b4f5d0 --- /dev/null +++ b/DeviceSQL.ROCMaster/Functions/SetStringValue.cs @@ -0,0 +1,48 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; +using System.Linq; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class ROCMaster + { + [SqlFunction] + public static SqlBoolean SetStringValue(SqlString deviceName, SqlByte pointType, SqlByte logicalNumber, SqlByte parameterNumber, SqlByte stringLength, SqlString value) + { + //var deviceNameValue = deviceName.Value; + + //if (10 >= stringLength) + //{ + // var ac10Parameter = new Ac10Parameter(new Tlp(pointType.Value, logicalNumber.Value, parameterNumber.Value)) { Value = value.Value }; + // (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).WriteParameter(null, null, null, null, ac10Parameter); + // return true; + //} + //else if (12 >= stringLength) + //{ + // var ac12Parameter = new Ac12Parameter(new Tlp(pointType.Value, logicalNumber.Value, parameterNumber.Value)) { Value = value.Value }; + // (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).WriteParameter(null, null, null, null, ac12Parameter); + // return true; + //} + //else if (20 >= stringLength) + //{ + // var ac20Parameter = new Ac20Parameter(new Tlp(pointType.Value, logicalNumber.Value, parameterNumber.Value)) { Value = value.Value }; + // (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).WriteParameter(null, null, null, null, ac20Parameter); + // return true; + //} + //else + //{ + // var ac30Parameter = new Ac30Parameter(new Tlp(pointType.Value, logicalNumber.Value, parameterNumber.Value)) { Value = value.Value }; + // (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).WriteParameter(null, null, null, null, ac30Parameter); + // return true; + //} + + return true; + + } + + } +} diff --git a/DeviceSQL.ROCMaster/Functions/SetTimeValue.cs b/DeviceSQL.ROCMaster/Functions/SetTimeValue.cs new file mode 100644 index 0000000..df7f04d --- /dev/null +++ b/DeviceSQL.ROCMaster/Functions/SetTimeValue.cs @@ -0,0 +1,21 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class ROCMaster + { + [SqlFunction] + public static SqlBoolean SetTimeValue(SqlString deviceName, SqlByte pointType, SqlByte logicalNumber, SqlByte parameterNumber, SqlDateTime value) + { + //var deviceNameValue = deviceName.Value; + //var timeParameter = new TimeParameter(new Tlp(pointType.Value, logicalNumber.Value, parameterNumber.Value)) { Value = value.Value }; + //(DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).WriteParameter(null, null, null, null, timeParameter); + return true; + } + } +} diff --git a/DeviceSQL.ROCMaster/Functions/SetUInt16Value.cs b/DeviceSQL.ROCMaster/Functions/SetUInt16Value.cs new file mode 100644 index 0000000..9ad2461 --- /dev/null +++ b/DeviceSQL.ROCMaster/Functions/SetUInt16Value.cs @@ -0,0 +1,21 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class ROCMaster + { + [SqlFunction] + public static SqlBoolean SetUInt16Value(SqlString deviceName, SqlByte pointType, SqlByte logicalNumber, SqlByte parameterNumber, SqlInt32 value) + { + //var deviceNameValue = deviceName.Value; + //var uInt16Parameter = new UInt16Parameter(new Tlp(pointType.Value, logicalNumber.Value, parameterNumber.Value)) { Value = Convert.ToUInt16(value.Value) }; + //(DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).ReadParameter(null, null, null, null, ref uInt16Parameter); + return true; + } + } +} \ No newline at end of file diff --git a/DeviceSQL.ROCMaster/Functions/SetUInt32Value.cs b/DeviceSQL.ROCMaster/Functions/SetUInt32Value.cs new file mode 100644 index 0000000..3925a3a --- /dev/null +++ b/DeviceSQL.ROCMaster/Functions/SetUInt32Value.cs @@ -0,0 +1,21 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class ROCMaster + { + [SqlFunction] + public static SqlBoolean SetUInt32Value(SqlString deviceName, SqlByte pointType, SqlByte logicalNumber, SqlByte parameterNumber, SqlInt64 value) + { + //var deviceNameValue = deviceName.Value; + //var uInt32Parameter = new UInt32Parameter(new Tlp(pointType.Value, logicalNumber.Value, parameterNumber.Value)) { Value = Convert.ToUInt32(value.Value) }; + //(DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).WriteParameter(null, null, null, null, uInt32Parameter); + return true; + } + } +} diff --git a/DeviceSQL.ROCMaster/Functions/SetUInt8Value.cs b/DeviceSQL.ROCMaster/Functions/SetUInt8Value.cs new file mode 100644 index 0000000..b2b796e --- /dev/null +++ b/DeviceSQL.ROCMaster/Functions/SetUInt8Value.cs @@ -0,0 +1,21 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System.Data.SqlTypes; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class ROCMaster + { + [SqlFunction] + public static SqlBoolean SetUInt8Value(SqlString deviceName, SqlByte pointType, SqlByte logicalNumber, SqlByte parameterNumber, SqlByte value) + { + //var deviceNameValue = deviceName.Value; + //var uInt8Parameter = new UInt8Parameter(new Tlp(pointType.Value, logicalNumber.Value, parameterNumber.Value)) { Value = value.Value }; + //(DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).WriteParameter(null, null, null, null, uInt8Parameter); + return true; + } + } +} diff --git a/DeviceSQL.ROCMaster/Functions/WriteParameters.cs b/DeviceSQL.ROCMaster/Functions/WriteParameters.cs new file mode 100644 index 0000000..b05a8dc --- /dev/null +++ b/DeviceSQL.ROCMaster/Functions/WriteParameters.cs @@ -0,0 +1,93 @@ +#region Imported Types + +using DeviceSQL.SQLTypes.ROC; +using Microsoft.SqlServer.Server; +using System.Collections.Generic; +using System.Data.SqlTypes; +using System.Linq; + +#endregion + +namespace DeviceSQL.Functions +{ + public partial class ROCMaster + { + [SqlFunction] + public static SqlBoolean WriteParameters(SqlString deviceName, ParameterArray parameterArray) + { + // var deviceNameValue = deviceName.Value; + // var parameters = new List(); + // var length = parameterArray.Length; + + // for (var parameterIndex = 0; length > parameterIndex; parameterIndex++) + // { + // var parameter = parameterArray.GetParameter(parameterIndex); + + // switch (parameter.RawType) + // { + // case ParameterType.AC3: + // parameters.Add(new Ac3Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); + // break; + // case ParameterType.AC7: + // parameters.Add(new Ac7Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); + // break; + // case ParameterType.AC10: + // parameters.Add(new Ac10Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); + // break; + // case ParameterType.AC12: + // parameters.Add(new Ac12Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); + // break; + // case ParameterType.AC20: + // parameters.Add(new Ac20Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); + // break; + // case ParameterType.AC30: + // parameters.Add(new Ac30Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); + // break; + // case ParameterType.AC40: + // parameters.Add(new Ac40Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); + // break; + // case ParameterType.BIN: + // parameters.Add(new BinParameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); + // break; + // case ParameterType.FL: + // parameters.Add(new FlpParameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); + // break; + // case ParameterType.DOUBLE: + // parameters.Add(new DoubleParameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); + // break; + // case ParameterType.INT16: + // parameters.Add(new Int16Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); + // break; + // case ParameterType.INT32: + // parameters.Add(new Int32Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); + // break; + // case ParameterType.INT8: + // parameters.Add(new Int8Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); + // break; + // case ParameterType.TLP: + // parameters.Add(new TlpParameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); + // break; + // case ParameterType.UINT16: + // parameters.Add(new UInt16Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); + // break; + // case ParameterType.UINT32: + // parameters.Add(new UInt32Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); + // break; + // case ParameterType.TIME: + // parameters.Add(new TimeParameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); + // break; + // case ParameterType.UINT8: + // parameters.Add(new UInt8Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); + // break; + // } + + // } + + //(DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).WriteParameters(null, null, null, null, parameters); + + return true; + + } + + } +} diff --git a/DeviceSQL.ROCMaster/Properties/AssemblyInfo.cs b/DeviceSQL.ROCMaster/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..d624602 --- /dev/null +++ b/DeviceSQL.ROCMaster/Properties/AssemblyInfo.cs @@ -0,0 +1,24 @@ +using System.Reflection; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with the SQLCLR assembly. +[assembly: AssemblyTitle("DeviceSQL.ROCMaster")] +[assembly: AssemblyDescription("DeviceSQL.ROCMaster")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("CloudSonix")] +[assembly: AssemblyProduct("DeviceSQL")] +[assembly: AssemblyCopyright("© CloudSonix. All rights reserved.")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] +[assembly: AssemblyKeyFileAttribute("../DeviceSQL-Key.snk")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/DeviceSQL/Schemas/ROCMaster.sql b/DeviceSQL.ROCMaster/Schemas/ROCMaster.sql similarity index 100% rename from DeviceSQL/Schemas/ROCMaster.sql rename to DeviceSQL.ROCMaster/Schemas/ROCMaster.sql diff --git a/DeviceSQL.SQLTypes.Modbus/BooleanRegister.cs b/DeviceSQL.SQLTypes.Modbus/BooleanRegister.cs new file mode 100644 index 0000000..e00f631 --- /dev/null +++ b/DeviceSQL.SQLTypes.Modbus/BooleanRegister.cs @@ -0,0 +1,131 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System; +using System.Data.SqlTypes; +using System.IO; + +#endregion + +namespace DeviceSQL.SQLTypes.Modbus +{ + [Serializable()] + [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = 8)] + public struct BooleanRegister : INullable, IBinarySerialize + { + + #region Fields + + internal byte[] data; + + #endregion + + #region Properties + + public SqlBinary Data + { + get + { + if (data == null) + { + data = new byte[1]; + } + return data; + } + set + { + data = value.Value; + } + } + + public ModbusAddress Address + { + get; + set; + } + + public bool IsNull + { + get; + private set; + } + + public SqlBoolean Value + { + get + { + return new DeviceSQL.Device.MODBUS.Data.BooleanRegister(new DeviceSQL.Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(Address.RelativeAddress), Address.IsZeroBased.Value)).Value; + } + set + { + Data = new DeviceSQL.Device.MODBUS.Data.BooleanRegister(new DeviceSQL.Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(Address.RelativeAddress), Address.IsZeroBased.Value)) { Value = value.Value }.Data; + } + } + + public static BooleanRegister Null + { + get + { + return (new BooleanRegister() { IsNull = true }); + } + } + + #endregion + + #region Helper Methods + + public override string ToString() + { + if (this.IsNull) + { + return "NULL"; + } + else + { + return string.Format("Address=[{0}];Value={1};", Address.ToString(), Value.Value); + } + } + + public static BooleanRegister Parse(SqlString stringToParse) + { + if (stringToParse.IsNull) + { + return Null; + } + + var parsedBooleanRegisterData = stringToParse.Value.Split(",".ToCharArray()); + var parsedBooleanRegister = new BooleanRegister() { Address = ModbusAddress.Parse(parsedBooleanRegisterData[0]), Value = bool.Parse(parsedBooleanRegisterData[1]) }; + return parsedBooleanRegister; + } + + #endregion + + #region Serialization Methods + + public void Read(BinaryReader binaryReader) + { + IsNull = binaryReader.ReadBoolean(); + + if (!IsNull) + { + Address.Read(binaryReader); + Data = binaryReader.ReadBytes(1); + } + + } + + public void Write(BinaryWriter binaryWriter) + { + binaryWriter.Write(IsNull); + + if (!IsNull) + { + Address.Write(binaryWriter); + binaryWriter.Write(Data.Value, 0, 1); + } + } + + #endregion + + } +} \ No newline at end of file diff --git a/DeviceSQL.SQLTypes.Modbus/BooleanRegisterArray.cs b/DeviceSQL.SQLTypes.Modbus/BooleanRegisterArray.cs new file mode 100644 index 0000000..5ba1379 --- /dev/null +++ b/DeviceSQL.SQLTypes.Modbus/BooleanRegisterArray.cs @@ -0,0 +1,165 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System; +using System.Collections.Generic; +using System.Data.SqlTypes; +using System.IO; +using System.Linq; + +#endregion + +namespace DeviceSQL.SQLTypes.Modbus +{ + [Serializable()] + [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = -1)] + public struct BooleanRegisterArray : INullable, IBinarySerialize + { + + #region Fields + + private List booleanRegisters; + + #endregion + + #region Properties + + internal BooleanRegister this[int index] + { + get + { + return BooleanRegisters[index]; + } + set + { + BooleanRegisters[index] = value; + } + } + + public bool IsNull + { + get; + internal set; + } + + public int Length + { + get + { + return BooleanRegisters.Count; + } + } + + #endregion + + #region Helper Methods + + private List BooleanRegisters + { + get + { + if (booleanRegisters == null) + { + booleanRegisters = new List(); + } + return booleanRegisters; + } + } + + public static BooleanRegisterArray Null + { + get + { + return (new BooleanRegisterArray() { IsNull = true }); + } + } + + public override string ToString() + { + return string.Join("|", BooleanRegisters.Select(booleanRegister => booleanRegister.ToString())); + } + + public BooleanRegisterArray AddBooleanRegister(BooleanRegister booleanRegister) + { + BooleanRegisters.Add(booleanRegister); + return this; + } + + public static BooleanRegisterArray Parse(SqlString stringToParse) + { + if (stringToParse.IsNull) + { + return Null; + } + + var parsedBooleanRegisterArray = new BooleanRegisterArray() + { + booleanRegisters = new List() + }; + + var parsedString = stringToParse.Value.Split("|".ToCharArray()); + + for (var i = 0; parsedString.Length > i; i++) + { + parsedBooleanRegisterArray.BooleanRegisters.Add(BooleanRegister.Parse(parsedString[i])); + } + + return parsedBooleanRegisterArray; + } + + public BooleanRegister GetBooleanRegister(SqlInt32 index) + { + return BooleanRegisters[index.Value]; + } + + public static BooleanRegisterArray Empty() + { + var booleanRegisterArray = new BooleanRegisterArray() { booleanRegisters = new List() }; + return booleanRegisterArray; + } + + #endregion + + #region Serialization Methods + + public void Read(BinaryReader binaryReader) + { + BooleanRegisters.Clear(); + IsNull = binaryReader.ReadBoolean(); + + if (IsNull) + { + return; + } + else + { + var length = binaryReader.ReadInt32(); + + for (var i = 0; length > i; i++) + { + var booleanRegister = new BooleanRegister(); + booleanRegister.Read(binaryReader); + BooleanRegisters.Add(booleanRegister); + } + } + + } + + public void Write(BinaryWriter binaryWriter) + { + binaryWriter.Write(IsNull); + binaryWriter.Write(Length); + + if (Length > 0) + { + for (var i = 0; BooleanRegisters.Count > i; i++) + { + BooleanRegisters[i].Write(binaryWriter); + } + } + } + + #endregion + + } +} \ No newline at end of file diff --git a/DeviceSQL.SQLTypes.Modbus/CoilRegister.cs b/DeviceSQL.SQLTypes.Modbus/CoilRegister.cs new file mode 100644 index 0000000..d7e5218 --- /dev/null +++ b/DeviceSQL.SQLTypes.Modbus/CoilRegister.cs @@ -0,0 +1,131 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System; +using System.Data.SqlTypes; +using System.IO; + +#endregion + +namespace DeviceSQL.SQLTypes.Modbus +{ + [Serializable()] + [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = 8)] + public struct CoilRegister : INullable, IBinarySerialize + { + + #region Fields + + internal byte[] data; + + #endregion + + #region Properties + + public SqlBinary Data + { + get + { + if (data == null) + { + data = new byte[1]; + } + return data; + } + set + { + data = value.Value; + } + } + + public ModbusAddress Address + { + get; + set; + } + + public bool IsNull + { + get; + private set; + } + + public SqlBoolean Value + { + get + { + return new DeviceSQL.Device.MODBUS.Data.CoilRegister(new DeviceSQL.Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(Address.RelativeAddress), Address.IsZeroBased.Value)).Value; + } + set + { + Data = new DeviceSQL.Device.MODBUS.Data.CoilRegister(new DeviceSQL.Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(Address.RelativeAddress), Address.IsZeroBased.Value)) { Value = value.Value }.Data; + } + } + + public static CoilRegister Null + { + get + { + return (new CoilRegister() { IsNull = true }); + } + } + + #endregion + + #region Helper Methods + + public override string ToString() + { + if (this.IsNull) + { + return "NULL"; + } + else + { + return string.Format("Address=[{0}];Value={1};", Address.ToString(), Value.Value); + } + } + + public static CoilRegister Parse(SqlString stringToParse) + { + if (stringToParse.IsNull) + { + return Null; + } + + var parsedCoilRegisterData = stringToParse.Value.Split(",".ToCharArray()); + var parsedCoilRegister = new CoilRegister() { Address = ModbusAddress.Parse(parsedCoilRegisterData[0]), Value = bool.Parse(parsedCoilRegisterData[1]) }; + return parsedCoilRegister; + } + + #endregion + + #region Serialization Methods + + public void Read(BinaryReader binaryReader) + { + IsNull = binaryReader.ReadBoolean(); + + if (!IsNull) + { + Address.Read(binaryReader); + Data = binaryReader.ReadBytes(1); + } + + } + + public void Write(BinaryWriter binaryWriter) + { + binaryWriter.Write(IsNull); + + if (!IsNull) + { + Address.Write(binaryWriter); + binaryWriter.Write(Data.Value, 0, 1); + } + } + + #endregion + + } +} \ No newline at end of file diff --git a/DeviceSQL.SQLTypes.Modbus/CoilRegisterArray.cs b/DeviceSQL.SQLTypes.Modbus/CoilRegisterArray.cs new file mode 100644 index 0000000..baad80a --- /dev/null +++ b/DeviceSQL.SQLTypes.Modbus/CoilRegisterArray.cs @@ -0,0 +1,164 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System; +using System.Collections.Generic; +using System.Data.SqlTypes; +using System.IO; +using System.Linq; + +#endregion + +namespace DeviceSQL.SQLTypes.Modbus +{ + [Serializable()] + [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = -1)] + public struct CoilRegisterArray : INullable, IBinarySerialize + { + + #region Fields + + internal List coilRegisters; + + #endregion + + #region Properties + + internal CoilRegister this[int index] + { + get + { + return CoilRegisters[index]; + } + set + { + CoilRegisters[index] = value; + } + } + + public bool IsNull + { + get; + internal set; + } + + public int Length + { + get + { + return CoilRegisters.Count; + } + } + + #endregion + + #region Helper Methods + + private List CoilRegisters + { + get + { + if (coilRegisters == null) + { + coilRegisters = new List(); + } + return coilRegisters; + } + } + + public static CoilRegisterArray Null + { + get + { + return (new CoilRegisterArray() { IsNull = true }); + } + } + + public override string ToString() + { + return string.Join("|", CoilRegisters.Select(coilRegister => coilRegister.ToString())); + } + + public CoilRegisterArray AddCoilRegister(CoilRegister coilRegister) + { + CoilRegisters.Add(coilRegister); + return this; + } + + public static CoilRegisterArray Parse(SqlString stringToParse) + { + if (stringToParse.IsNull) + { + return Null; + } + + var parsedCoilRegisterArray = new CoilRegisterArray() + { + coilRegisters = new List() + }; + var parsedString = stringToParse.Value.Split("|".ToCharArray()); + + for (var i = 0; parsedString.Length > i; i++) + { + parsedCoilRegisterArray.CoilRegisters.Add(CoilRegister.Parse(parsedString[i])); + } + + return parsedCoilRegisterArray; + } + + public CoilRegister GetCoilRegister(SqlInt32 index) + { + return CoilRegisters[index.Value]; + } + + public static CoilRegisterArray Empty() + { + var coilRegisterArray = new CoilRegisterArray() { coilRegisters = new List() }; + return coilRegisterArray; + } + + #endregion + + #region Serialization Methods + + public void Read(BinaryReader binaryReader) + { + CoilRegisters.Clear(); + IsNull = binaryReader.ReadBoolean(); + + if (IsNull) + { + return; + } + else + { + var length = binaryReader.ReadInt32(); + + for (var i = 0; length > i; i++) + { + var coilRegister = new CoilRegister(); + coilRegister.Read(binaryReader); + CoilRegisters.Add(coilRegister); + } + } + + } + + public void Write(BinaryWriter binaryWriter) + { + binaryWriter.Write(IsNull); + binaryWriter.Write(Length); + + if (Length > 0) + { + for (var i = 0; CoilRegisters.Count > i; i++) + { + CoilRegisters[i].Write(binaryWriter); + } + } + } + + #endregion + + } +} \ No newline at end of file diff --git a/DeviceSQL.SQLTypes.Modbus/DeviceSQL.SQLTypes.Modbus.csproj b/DeviceSQL.SQLTypes.Modbus/DeviceSQL.SQLTypes.Modbus.csproj new file mode 100644 index 0000000..e974366 --- /dev/null +++ b/DeviceSQL.SQLTypes.Modbus/DeviceSQL.SQLTypes.Modbus.csproj @@ -0,0 +1,122 @@ + + + + + Debug + AnyCPU + {CD45D76E-D2ED-4587-9873-F35AD24E42A5} + Library + Properties + DeviceSQL.SQLTypes.Modbus + DeviceSQL.SQLTypes.Modbus + v4.8 + 512 + true + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + false + + + + + + + + + + + + + + + + + + Devices\BooleanRegister.cs + + + Devices\CoilRegister.cs + + + Devices\DiscreteInputRegister.cs + + + Devices\EventArchiveRecord.cs + + + Devices\FloatRegister.cs + + + Devices\HistoryArchiveRecord.cs + + + Devices\HoldingRegister.cs + + + Devices\IModbusRegisterData.cs + + + Devices\InputRegister.cs + + + Devices\LongRegister.cs + + + Devices\ModbusAddress.cs + + + Devices\ModbusRegister.cs + + + Devices\ShortRegister.cs + + + Devices\StringRegister.cs + + + Devices\ModbusConverter.cs + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/DeviceSQL.SQLTypes.Modbus/DiscreteInputRegister.cs b/DeviceSQL.SQLTypes.Modbus/DiscreteInputRegister.cs new file mode 100644 index 0000000..d1ed073 --- /dev/null +++ b/DeviceSQL.SQLTypes.Modbus/DiscreteInputRegister.cs @@ -0,0 +1,131 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System; +using System.Data.SqlTypes; +using System.IO; + +#endregion + +namespace DeviceSQL.SQLTypes.Modbus +{ + [Serializable()] + [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = 8)] + public struct DiscreteInputRegister : INullable, IBinarySerialize + { + + #region Fields + + internal byte[] data; + + #endregion + + #region Properties + + public SqlBinary Data + { + get + { + if (data == null) + { + data = new byte[1]; + } + return data; + } + set + { + data = value.Value; + } + } + + public ModbusAddress Address + { + get; + set; + } + + public bool IsNull + { + get; + private set; + } + + public SqlBoolean Value + { + get + { + return new DeviceSQL.Device.MODBUS.Data.DiscreteInputRegister(new DeviceSQL.Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(Address.RelativeAddress), Address.IsZeroBased.Value)).Value; + } + set + { + Data = new DeviceSQL.Device.MODBUS.Data.DiscreteInputRegister(new DeviceSQL.Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(Address.RelativeAddress), Address.IsZeroBased.Value)) { Value = value.Value }.Data; + } + } + + public static DiscreteInputRegister Null + { + get + { + return (new DiscreteInputRegister() { IsNull = true }); + } + } + + #endregion + + #region Helper Methods + + public override string ToString() + { + if (this.IsNull) + { + return "NULL"; + } + else + { + return string.Format("Address=[{0}];Value={1};", Address.ToString(), Value.Value); + } + } + + public static DiscreteInputRegister Parse(SqlString stringToParse) + { + if (stringToParse.IsNull) + { + return Null; + } + + var parsedDiscreteInputRegisterData = stringToParse.Value.Split(",".ToCharArray()); + var parsedDiscreteInputRegister = new DiscreteInputRegister() { Address = ModbusAddress.Parse(parsedDiscreteInputRegisterData[0]), Value = bool.Parse(parsedDiscreteInputRegisterData[1]) }; + return parsedDiscreteInputRegister; + } + + #endregion + + #region Serialization Methods + + public void Read(BinaryReader binaryReader) + { + IsNull = binaryReader.ReadBoolean(); + + if (!IsNull) + { + Address.Read(binaryReader); + Data = binaryReader.ReadBytes(1); + } + + } + + public void Write(BinaryWriter binaryWriter) + { + binaryWriter.Write(IsNull); + + if (!IsNull) + { + Address.Write(binaryWriter); + binaryWriter.Write(Data.Value, 0, 1); + } + } + + #endregion + + } +} diff --git a/DeviceSQL.SQLTypes.Modbus/DiscreteInputRegisterArray.cs b/DeviceSQL.SQLTypes.Modbus/DiscreteInputRegisterArray.cs new file mode 100644 index 0000000..406c48b --- /dev/null +++ b/DeviceSQL.SQLTypes.Modbus/DiscreteInputRegisterArray.cs @@ -0,0 +1,165 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System; +using System.Collections.Generic; +using System.Data.SqlTypes; +using System.IO; +using System.Linq; + +#endregion + +namespace DeviceSQL.SQLTypes.Modbus +{ + [Serializable()] + [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = -1)] + public struct DiscreteInputRegisterArray : INullable, IBinarySerialize + { + + #region Fields + + internal List discreteInputRegisters; + + #endregion + + #region Properties + + internal DiscreteInputRegister this[int index] + { + get + { + return DiscreteInputRegisters[index]; + } + set + { + DiscreteInputRegisters[index] = value; + } + } + + public bool IsNull + { + get; + internal set; + } + + public int Length + { + get + { + return DiscreteInputRegisters.Count; + } + } + + #endregion + + #region Helper Methods + + private List DiscreteInputRegisters + { + get + { + if (discreteInputRegisters == null) + { + discreteInputRegisters = new List(); + } + return discreteInputRegisters; + } + } + + public static DiscreteInputRegisterArray Null + { + get + { + return (new DiscreteInputRegisterArray() { IsNull = true }); + } + } + + public override string ToString() + { + return string.Join("|", DiscreteInputRegisters.Select(discreteInputRegister => discreteInputRegister.ToString())); + } + + public DiscreteInputRegisterArray AddDiscreteInputRegister(DiscreteInputRegister discreteInputRegister) + { + DiscreteInputRegisters.Add(discreteInputRegister); + return this; + } + + public static DiscreteInputRegisterArray Parse(SqlString stringToParse) + { + if (stringToParse.IsNull) + { + return Null; + } + + var parsedDiscreteInputRegisterArray = new DiscreteInputRegisterArray() + { + discreteInputRegisters = new List() + }; + + var parsedString = stringToParse.Value.Split("|".ToCharArray()); + + for (var i = 0; parsedString.Length > i; i++) + { + parsedDiscreteInputRegisterArray.DiscreteInputRegisters.Add(DiscreteInputRegister.Parse(parsedString[i])); + } + + return parsedDiscreteInputRegisterArray; + } + + public DiscreteInputRegister GetDiscreteInputRegister(SqlInt32 index) + { + return DiscreteInputRegisters[index.Value]; + } + + public static DiscreteInputRegisterArray Empty() + { + var discreteInputRegisterArray = new DiscreteInputRegisterArray() { discreteInputRegisters = new List() }; + return discreteInputRegisterArray; + } + + #endregion + + #region Serialization Methods + + public void Read(BinaryReader binaryReader) + { + DiscreteInputRegisters.Clear(); + IsNull = binaryReader.ReadBoolean(); + + if (IsNull) + { + return; + } + else + { + var length = binaryReader.ReadInt32(); + + for (var i = 0; length > i; i++) + { + var discreteInputRegister = new DiscreteInputRegister(); + discreteInputRegister.Read(binaryReader); + DiscreteInputRegisters.Add(discreteInputRegister); + } + } + + } + + public void Write(BinaryWriter binaryWriter) + { + binaryWriter.Write(IsNull); + binaryWriter.Write(Length); + + if (Length > 0) + { + for (var i = 0; DiscreteInputRegisters.Count > i; i++) + { + DiscreteInputRegisters[i].Write(binaryWriter); + } + } + } + + #endregion + + } +} diff --git a/DeviceSQL.SQLTypes.Modbus/EventArchiveRecord.cs b/DeviceSQL.SQLTypes.Modbus/EventArchiveRecord.cs new file mode 100644 index 0000000..534ce0a --- /dev/null +++ b/DeviceSQL.SQLTypes.Modbus/EventArchiveRecord.cs @@ -0,0 +1,145 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System; +using System.Data.SqlTypes; +using System.IO; + +#endregion + +namespace DeviceSQL.SQLTypes.Modbus +{ + [Serializable()] + [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = 264)] + public struct EventArchiveRecord : INullable, IBinarySerialize + { + + #region Fields + + internal byte[] data; + + #endregion + + #region Properties + + public SqlBinary Data + { + get + { + if (data == null) + { + data = new byte[Length.Value]; + } + return data; + } + set + { + data = value.Value; + Length = data.Length; + } + } + + public SqlInt32 Index + { + get; + set; + } + + public SqlInt32 Length + { + get; + set; + } + + public bool IsNull + { + get; + private set; + } + + public SqlInt16 GetShortValue(SqlByte index, SqlBoolean byteSwap, SqlBoolean wordSwap) + { + return new DeviceSQL.Device.MODBUS.Data.EventArchiveRecord(Convert.ToUInt16(Index), Data.Value).GetShortValue(index.Value, byteSwap.Value); + } + + public static SqlDateTime GetDateTimeValue(SqlSingle dateValue, SqlSingle timeValue, SqlInt32 baseYear) + { + var dateTime = DeviceSQL.Device.MODBUS.Data.EventArchiveRecord.ParseNullableDateTimeValue(dateValue.Value, timeValue.Value, baseYear.Value); + return dateTime ?? SqlDateTime.Null; + } + + public SqlSingle GetFloatValue(SqlByte index, SqlBoolean byteSwap, SqlBoolean wordSwap) + { + var floatValue = new DeviceSQL.Device.MODBUS.Data.EventArchiveRecord(Convert.ToUInt16(Index), Data.Value).GetNullableFloatValue(index.Value, byteSwap.Value, wordSwap.Value); + return floatValue ?? SqlSingle.Null; + } + + public static EventArchiveRecord Null + { + get + { + return (new EventArchiveRecord() { IsNull = true }); + } + } + + #endregion + + #region Helper Methods + + public override string ToString() + { + if (this.IsNull) + { + return "NULL"; + } + else + { + return string.Format("Index={0};Length={1};Value={2};", Index, Length, Convert.ToBase64String(Data.Value)); + } + } + + public static EventArchiveRecord Parse(SqlString eventArchiveToParse) + { + if (eventArchiveToParse.IsNull) + { + return Null; + } + + var parsedEventArchiveRecordData = eventArchiveToParse.Value.Split(",".ToCharArray()); + var parsedEventArchiveRecord = new EventArchiveRecord() { Index = Int32.Parse(parsedEventArchiveRecordData[0]), Length = Int32.Parse(parsedEventArchiveRecordData[1]), Data = Convert.FromBase64String(parsedEventArchiveRecordData[2]) }; + return parsedEventArchiveRecord; + } + + #endregion + + #region Serialization Methods + + public void Read(BinaryReader binaryReader) + { + IsNull = binaryReader.ReadBoolean(); + + if (!IsNull) + { + Index = binaryReader.ReadInt32(); + Length = binaryReader.ReadByte(); + Data = binaryReader.ReadBytes(Length.Value); + } + + } + + public void Write(BinaryWriter binaryWriter) + { + binaryWriter.Write(IsNull); + + if (!IsNull) + { + binaryWriter.Write(Index.Value); + binaryWriter.Write(Length.Value); + binaryWriter.Write(Data.Value, 0, Length.Value); + } + } + + #endregion + + } +} diff --git a/DeviceSQL.SQLTypes.Modbus/EventArchiveRecordArray.cs b/DeviceSQL.SQLTypes.Modbus/EventArchiveRecordArray.cs new file mode 100644 index 0000000..7e7d466 --- /dev/null +++ b/DeviceSQL.SQLTypes.Modbus/EventArchiveRecordArray.cs @@ -0,0 +1,165 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System; +using System.Collections.Generic; +using System.Data.SqlTypes; +using System.IO; +using System.Linq; + +#endregion + +namespace DeviceSQL.SQLTypes.Modbus +{ + [Serializable()] + [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = -1)] + public struct EventArchiveRecordArray : INullable, IBinarySerialize + { + + #region Fields + + internal List eventArchiveRecords; + + #endregion + + #region Properties + + internal EventArchiveRecord this[int index] + { + get + { + return EventArchiveRecords[index]; + } + set + { + EventArchiveRecords[index] = value; + } + } + + public bool IsNull + { + get; + internal set; + } + + public int Length + { + get + { + return EventArchiveRecords.Count; + } + } + + #endregion + + #region Helper Methods + + private List EventArchiveRecords + { + get + { + if (eventArchiveRecords == null) + { + eventArchiveRecords = new List(); + } + return eventArchiveRecords; + } + } + + public static EventArchiveRecordArray Null + { + get + { + return (new EventArchiveRecordArray() { IsNull = true }); + } + } + + public override string ToString() + { + return string.Join("|", EventArchiveRecords.Select(eventArchiveRecord => eventArchiveRecord.ToString())); + } + + public EventArchiveRecordArray AddEventArchiveRecord(EventArchiveRecord eventArchiveRecord) + { + EventArchiveRecords.Add(eventArchiveRecord); + return this; + } + + public static EventArchiveRecordArray Parse(SqlString eventArchiveToParse) + { + if (eventArchiveToParse.IsNull) + { + return Null; + } + + var parsedEventArchiveRecordArray = new EventArchiveRecordArray() + { + eventArchiveRecords = new List() + }; + + var parsedEventArchive = eventArchiveToParse.Value.Split("|".ToCharArray()); + + for (var i = 0; parsedEventArchive.Length > i; i++) + { + parsedEventArchiveRecordArray.EventArchiveRecords.Add(EventArchiveRecord.Parse(parsedEventArchive[i])); + } + + return parsedEventArchiveRecordArray; + } + + public EventArchiveRecord GetEventArchiveRecord(SqlInt32 index) + { + return EventArchiveRecords[index.Value]; + } + + public static EventArchiveRecordArray Empty() + { + var eventArchiveRecordArray = new EventArchiveRecordArray() { eventArchiveRecords = new List() }; + return eventArchiveRecordArray; + } + + #endregion + + #region Serialization Methods + + public void Read(BinaryReader binaryReader) + { + EventArchiveRecords.Clear(); + IsNull = binaryReader.ReadBoolean(); + + if (IsNull) + { + return; + } + else + { + var length = binaryReader.ReadInt32(); + + for (var i = 0; length > i; i++) + { + var eventArchiveRecord = new EventArchiveRecord(); + eventArchiveRecord.Read(binaryReader); + EventArchiveRecords.Add(eventArchiveRecord); + } + } + + } + + public void Write(BinaryWriter binaryWriter) + { + binaryWriter.Write(IsNull); + binaryWriter.Write(Length); + + if (Length > 0) + { + for (var i = 0; EventArchiveRecords.Count > i; i++) + { + EventArchiveRecords[i].Write(binaryWriter); + } + } + } + + #endregion + + } +} \ No newline at end of file diff --git a/DeviceSQL.SQLTypes.Modbus/FloatRegister.cs b/DeviceSQL.SQLTypes.Modbus/FloatRegister.cs new file mode 100644 index 0000000..302e3e8 --- /dev/null +++ b/DeviceSQL.SQLTypes.Modbus/FloatRegister.cs @@ -0,0 +1,147 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System; +using System.Data.SqlTypes; +using System.IO; + +#endregion + +namespace DeviceSQL.SQLTypes.Modbus +{ + [Serializable()] + [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = 13)] + public struct FloatRegister : INullable, IBinarySerialize + { + + #region Fields + + internal byte[] data; + + #endregion + + #region Properties + + public SqlBinary Data + { + get + { + if (data == null) + { + data = new byte[4]; + } + return data; + } + set + { + data = value.Value; + } + } + + public ModbusAddress Address + { + get; + set; + } + + public SqlBoolean ByteSwap + { + get; + set; + } + + public SqlBoolean WordSwap + { + get; + set; + } + + public bool IsNull + { + get; + private set; + } + + public SqlSingle Value + { + get + { + return new DeviceSQL.Device.MODBUS.Data.FloatRegister(new DeviceSQL.Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(Address.RelativeAddress), Address.IsZeroBased.Value), ByteSwap.Value, WordSwap.Value).Value; + } + set + { + Data = new DeviceSQL.Device.MODBUS.Data.FloatRegister(new DeviceSQL.Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(Address.RelativeAddress), Address.IsZeroBased.Value), ByteSwap.Value, WordSwap.Value) { Value = Convert.ToUInt16(value) }.Data; + } + } + + public static FloatRegister Null + { + get + { + return (new FloatRegister() { IsNull = true }); + } + } + + #endregion + + #region Helper Methods + + public override string ToString() + { + if (this.IsNull) + { + return "NULL"; + } + else + { + return string.Format("Address=[{0}];Byte Swap={1};Word Swap={2};Value={3};", Address.ToString(), ByteSwap.Value, Value.Value); + } + } + + public static FloatRegister Parse(SqlString stringToParse) + { + if (stringToParse.IsNull) + { + return Null; + } + + var parsedFloatRegisterData = stringToParse.Value.Split(",".ToCharArray()); + var parsedFloatRegister = new FloatRegister() { Address = ModbusAddress.Parse(parsedFloatRegisterData[0]), ByteSwap = bool.Parse(parsedFloatRegisterData[1]), WordSwap = bool.Parse(parsedFloatRegisterData[2]), Value = Int32.Parse(parsedFloatRegisterData[3]) }; + return parsedFloatRegister; + } + + #endregion + + #region Serialization Methods + + public void Read(BinaryReader binaryReader) + { + IsNull = binaryReader.ReadBoolean(); + + if (!IsNull) + { + Address.Read(binaryReader); + ByteSwap = binaryReader.ReadBoolean(); + WordSwap = binaryReader.ReadBoolean(); + Data = binaryReader.ReadBytes(4); + } + + } + + public void Write(BinaryWriter binaryWriter) + { + binaryWriter.Write(IsNull); + + if (!IsNull) + { + Address.Write(binaryWriter); + binaryWriter.Write(ByteSwap.Value); + binaryWriter.Write(WordSwap.Value); + binaryWriter.Write(Data.Value, 0, 4); + } + } + + #endregion + + } +} diff --git a/DeviceSQL.SQLTypes.Modbus/FloatRegisterArray.cs b/DeviceSQL.SQLTypes.Modbus/FloatRegisterArray.cs new file mode 100644 index 0000000..d079736 --- /dev/null +++ b/DeviceSQL.SQLTypes.Modbus/FloatRegisterArray.cs @@ -0,0 +1,165 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System; +using System.Collections.Generic; +using System.Data.SqlTypes; +using System.IO; +using System.Linq; + +#endregion + +namespace DeviceSQL.SQLTypes.Modbus +{ + [Serializable()] + [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = -1)] + public struct FloatRegisterArray : INullable, IBinarySerialize + { + + #region Fields + + internal List floatRegisters; + + #endregion + + #region Properties + + internal FloatRegister this[int index] + { + get + { + return FloatRegisters[index]; + } + set + { + FloatRegisters[index] = value; + } + } + + public bool IsNull + { + get; + internal set; + } + + public int Length + { + get + { + return FloatRegisters.Count; + } + } + + #endregion + + #region Helper Methods + + private List FloatRegisters + { + get + { + if (floatRegisters == null) + { + floatRegisters = new List(); + } + return floatRegisters; + } + } + + public static FloatRegisterArray Null + { + get + { + return (new FloatRegisterArray() { IsNull = true }); + } + } + + public override string ToString() + { + return string.Join("|", FloatRegisters.Select(floatRegister => floatRegister.ToString())); + } + + public FloatRegisterArray AddFloatRegister(FloatRegister floatRegister) + { + FloatRegisters.Add(floatRegister); + return this; + } + + public static FloatRegisterArray Parse(SqlString stringToParse) + { + if (stringToParse.IsNull) + { + return Null; + } + + var parsedFloatRegisterArray = new FloatRegisterArray() + { + floatRegisters = new List() + }; + + var parsedString = stringToParse.Value.Split("|".ToCharArray()); + + for (var i = 0; parsedString.Length > i; i++) + { + parsedFloatRegisterArray.FloatRegisters.Add(FloatRegister.Parse(parsedString[i])); + } + + return parsedFloatRegisterArray; + } + + public FloatRegister GetFloatRegister(SqlInt32 index) + { + return FloatRegisters[index.Value]; + } + + public static FloatRegisterArray Empty() + { + var floatRegisterArray = new FloatRegisterArray() { floatRegisters = new List() }; + return floatRegisterArray; + } + + #endregion + + #region Serialization Methods + + public void Read(BinaryReader binaryReader) + { + FloatRegisters.Clear(); + IsNull = binaryReader.ReadBoolean(); + + if (IsNull) + { + return; + } + else + { + var length = binaryReader.ReadInt32(); + + for (var i = 0; length > i; i++) + { + var floatRegister = new FloatRegister(); + floatRegister.Read(binaryReader); + FloatRegisters.Add(floatRegister); + } + } + + } + + public void Write(BinaryWriter binaryWriter) + { + binaryWriter.Write(IsNull); + binaryWriter.Write(Length); + + if (Length > 0) + { + for (var i = 0; FloatRegisters.Count > i; i++) + { + FloatRegisters[i].Write(binaryWriter); + } + } + } + + #endregion + + } +} diff --git a/DeviceSQL.SQLTypes.Modbus/HistoryArchiveRecord.cs b/DeviceSQL.SQLTypes.Modbus/HistoryArchiveRecord.cs new file mode 100644 index 0000000..24e3710 --- /dev/null +++ b/DeviceSQL.SQLTypes.Modbus/HistoryArchiveRecord.cs @@ -0,0 +1,140 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System; +using System.Data.SqlTypes; +using System.IO; + +#endregion + +namespace DeviceSQL.SQLTypes.Modbus +{ + [Serializable()] + [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = 264)] + public struct HistoryArchiveRecord : INullable, IBinarySerialize + { + + #region Fields + + internal byte[] data; + + #endregion + + #region Properties + + public SqlBinary Data + { + get + { + if (data == null) + { + data = new byte[Length.Value]; + } + return data; + } + set + { + data = value.Value; + Length = data.Length; + } + } + + public SqlInt32 Index + { + get; + set; + } + + public SqlInt32 Length + { + get; + set; + } + + public bool IsNull + { + get; + private set; + } + + public static HistoryArchiveRecord Null + { + get + { + return (new HistoryArchiveRecord() { IsNull = true }); + } + } + + #endregion + + #region Helper Methods + + public SqlSingle GetFloatValue(SqlByte index, SqlBoolean byteSwap, SqlBoolean wordSwap) + { + var floatValue = new DeviceSQL.Device.MODBUS.Data.HistoryArchiveRecord(Convert.ToUInt16(Index), Data.Value).GetNullableFloatValue(index.Value, byteSwap.Value, wordSwap.Value); + return floatValue ?? SqlSingle.Null; + } + + public static SqlDateTime GetDateTimeValue(SqlSingle dateValue, SqlSingle timeValue, SqlInt32 baseYear) + { + var dateTime = DeviceSQL.Device.MODBUS.Data.HistoryArchiveRecord.ParseNullableDateTimeValue(dateValue.Value, timeValue.Value, baseYear.Value); + return dateTime ?? SqlDateTime.Null; + } + + public override string ToString() + { + if (this.IsNull) + { + return "NULL"; + } + else + { + return string.Format("Index={0};Length={1};Value={2};", Index, Length, Convert.ToBase64String(Data.Value)); + } + } + + public static HistoryArchiveRecord Parse(SqlString historyArchiveToParse) + { + if (historyArchiveToParse.IsNull) + { + return Null; + } + + var parsedHistoryArchiveRecordData = historyArchiveToParse.Value.Split(",".ToCharArray()); + var parsedHistoryArchiveRecord = new HistoryArchiveRecord() { Index = Int32.Parse(parsedHistoryArchiveRecordData[0]), Length = Int32.Parse(parsedHistoryArchiveRecordData[1]), Data = Convert.FromBase64String(parsedHistoryArchiveRecordData[2]) }; + return parsedHistoryArchiveRecord; + } + + #endregion + + #region Serialization Methods + + public void Read(BinaryReader binaryReader) + { + IsNull = binaryReader.ReadBoolean(); + + if (!IsNull) + { + Index = binaryReader.ReadInt32(); + Length = binaryReader.ReadByte(); + Data = binaryReader.ReadBytes(Length.Value); + } + + } + + public void Write(BinaryWriter binaryWriter) + { + binaryWriter.Write(IsNull); + + if (!IsNull) + { + binaryWriter.Write(Index.Value); + binaryWriter.Write(Length.Value); + binaryWriter.Write(Data.Value, 0, Length.Value); + } + } + + #endregion + + } +} diff --git a/DeviceSQL.SQLTypes.Modbus/HistoryArchiveRecordArray.cs b/DeviceSQL.SQLTypes.Modbus/HistoryArchiveRecordArray.cs new file mode 100644 index 0000000..e187bd4 --- /dev/null +++ b/DeviceSQL.SQLTypes.Modbus/HistoryArchiveRecordArray.cs @@ -0,0 +1,165 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System; +using System.Collections.Generic; +using System.Data.SqlTypes; +using System.IO; +using System.Linq; + +#endregion + +namespace DeviceSQL.SQLTypes.Modbus +{ + [Serializable()] + [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = -1)] + public struct HistoryArchiveRecordArray : INullable, IBinarySerialize + { + + #region Fields + + internal List historyArchiveRecords; + + #endregion + + #region Properties + + internal HistoryArchiveRecord this[int index] + { + get + { + return HistoryArchiveRecords[index]; + } + set + { + HistoryArchiveRecords[index] = value; + } + } + + public bool IsNull + { + get; + internal set; + } + + public int Length + { + get + { + return HistoryArchiveRecords.Count; + } + } + + #endregion + + #region Helper Methods + + private List HistoryArchiveRecords + { + get + { + if (historyArchiveRecords == null) + { + historyArchiveRecords = new List(); + } + return historyArchiveRecords; + } + } + + public static HistoryArchiveRecordArray Null + { + get + { + return (new HistoryArchiveRecordArray() { IsNull = true }); + } + } + + public override string ToString() + { + return string.Join("|", HistoryArchiveRecords.Select(historyArchiveRecord => historyArchiveRecord.ToString())); + } + + public HistoryArchiveRecordArray AddHistoryArchiveRecord(HistoryArchiveRecord historyArchiveRecord) + { + HistoryArchiveRecords.Add(historyArchiveRecord); + return this; + } + + public static HistoryArchiveRecordArray Parse(SqlString historyArchiveToParse) + { + if (historyArchiveToParse.IsNull) + { + return Null; + } + + var parsedHistoryArchiveRecordArray = new HistoryArchiveRecordArray() + { + historyArchiveRecords = new List() + }; + + var parsedHistoryArchive = historyArchiveToParse.Value.Split("|".ToCharArray()); + + for (var i = 0; parsedHistoryArchive.Length > i; i++) + { + parsedHistoryArchiveRecordArray.HistoryArchiveRecords.Add(HistoryArchiveRecord.Parse(parsedHistoryArchive[i])); + } + + return parsedHistoryArchiveRecordArray; + } + + public HistoryArchiveRecord GetHistoryArchiveRecord(SqlInt32 index) + { + return HistoryArchiveRecords[index.Value]; + } + + public static HistoryArchiveRecordArray Empty() + { + var historyArchiveRecordArray = new HistoryArchiveRecordArray() { historyArchiveRecords = new List() }; + return historyArchiveRecordArray; + } + + #endregion + + #region Serialization Methods + + public void Read(BinaryReader binaryReader) + { + HistoryArchiveRecords.Clear(); + IsNull = binaryReader.ReadBoolean(); + + if (IsNull) + { + return; + } + else + { + var length = binaryReader.ReadInt32(); + + for (var i = 0; length > i; i++) + { + var historyArchiveRecord = new HistoryArchiveRecord(); + historyArchiveRecord.Read(binaryReader); + HistoryArchiveRecords.Add(historyArchiveRecord); + } + } + + } + + public void Write(BinaryWriter binaryWriter) + { + binaryWriter.Write(IsNull); + binaryWriter.Write(Length); + + if (Length > 0) + { + for (var i = 0; HistoryArchiveRecords.Count > i; i++) + { + HistoryArchiveRecords[i].Write(binaryWriter); + } + } + } + + #endregion + + } +} \ No newline at end of file diff --git a/DeviceSQL.SQLTypes.Modbus/HoldingRegister.cs b/DeviceSQL.SQLTypes.Modbus/HoldingRegister.cs new file mode 100644 index 0000000..d351384 --- /dev/null +++ b/DeviceSQL.SQLTypes.Modbus/HoldingRegister.cs @@ -0,0 +1,139 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System; +using System.Data.SqlTypes; +using System.IO; + +#endregion + +namespace DeviceSQL.SQLTypes.Modbus +{ + [Serializable()] + [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = 10)] + public struct HoldingRegister : INullable, IBinarySerialize + { + + #region Fields + + internal byte[] data; + + #endregion + + #region Properties + + public SqlBinary Data + { + get + { + if (data == null) + { + data = new byte[2]; + } + return data; + } + set + { + data = value.Value; + } + } + + public ModbusAddress Address + { + get; + set; + } + + public SqlBoolean ByteSwap + { + get; + set; + } + + public bool IsNull + { + get; + private set; + } + + public SqlInt32 Value + { + get + { + return new DeviceSQL.Device.MODBUS.Data.HoldingRegister(new DeviceSQL.Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(Address.RelativeAddress), Address.IsZeroBased.Value), ByteSwap.Value).Value; + } + set + { + Data = new DeviceSQL.Device.MODBUS.Data.HoldingRegister(new DeviceSQL.Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(Address.RelativeAddress), Address.IsZeroBased.Value), ByteSwap.Value) { Value = Convert.ToUInt16((int)value) }.Data; + } + } + + public static HoldingRegister Null + { + get + { + return (new HoldingRegister() { IsNull = true }); + } + } + + #endregion + + #region Helper Methods + + public override string ToString() + { + if (this.IsNull) + { + return "NULL"; + } + else + { + return string.Format("Address=[{0}];Byte Swap={1};Value={2};", Address.ToString(), ByteSwap.Value, Value.Value); + } + } + + public static HoldingRegister Parse(SqlString stringToParse) + { + if (stringToParse.IsNull) + { + return Null; + } + + var parsedHoldingRegisterData = stringToParse.Value.Split(",".ToCharArray()); + var parsedHoldingRegister = new HoldingRegister() { Address = ModbusAddress.Parse(parsedHoldingRegisterData[0]), ByteSwap = bool.Parse(parsedHoldingRegisterData[1]), Value = UInt16.Parse(parsedHoldingRegisterData[2]) }; + return parsedHoldingRegister; + } + + #endregion + + #region Serialization Methods + + public void Read(BinaryReader binaryReader) + { + IsNull = binaryReader.ReadBoolean(); + + if (!IsNull) + { + Address.Read(binaryReader); + ByteSwap = binaryReader.ReadBoolean(); + Data = binaryReader.ReadBytes(2); + } + + } + + public void Write(BinaryWriter binaryWriter) + { + binaryWriter.Write(IsNull); + + if (!IsNull) + { + Address.Write(binaryWriter); + binaryWriter.Write(ByteSwap.Value); + binaryWriter.Write(Data.Value, 0, 2); + } + } + + #endregion + + } +} diff --git a/DeviceSQL.SQLTypes.Modbus/HoldingRegisterArray.cs b/DeviceSQL.SQLTypes.Modbus/HoldingRegisterArray.cs new file mode 100644 index 0000000..063d337 --- /dev/null +++ b/DeviceSQL.SQLTypes.Modbus/HoldingRegisterArray.cs @@ -0,0 +1,208 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System; +using System.Collections.Generic; +using System.Data.SqlTypes; +using System.IO; +using System.Linq; + +#endregion + +namespace DeviceSQL.SQLTypes.Modbus +{ + [Serializable()] + [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = -1)] + public struct HoldingRegisterArray : INullable, IBinarySerialize + { + + #region Fields + + internal List holdingRegisters; + + #endregion + + #region Properties + + internal HoldingRegister this[int index] + { + get + { + return HoldingRegisters[index]; + } + set + { + HoldingRegisters[index] = value; + } + } + + public bool IsNull + { + get; + internal set; + } + + public int Length + { + get + { + return HoldingRegisters.Count; + } + } + + #endregion + + #region Helper Methods + + public SqlByte GetByte(SqlByte registerIndex, SqlInt32 offset) + { + return HoldingRegisters[registerIndex.Value].data[offset.Value]; + } + + public SqlBinary GetBytes(SqlByte registerIndex, SqlInt32 registerCount) + { + var bytes = new List(); + + for (var i = 0; registerCount.Value > i; i++) + { + bytes.AddRange(HoldingRegisters[i].Data.Value); + } + + return bytes.ToArray(); + + } + + public SqlInt16 GetShort(SqlByte registerIndex, SqlBoolean byteSwap) + { + var address = HoldingRegisters[registerIndex.Value].Address; + return new DeviceSQL.Device.MODBUS.Data.ShortRegister(new DeviceSQL.Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(address.RelativeAddress.Value), address.IsZeroBased.Value)) { ByteSwap = byteSwap.Value, Data = holdingRegisters[Convert.ToByte(registerIndex.Value)].data }.Value; + } + + public SqlSingle GetFloat(SqlByte registerIndex, SqlBoolean byteSwap, SqlBoolean wordSwap) + { + var address = HoldingRegisters[registerIndex.Value].Address; + var floatRegisterValue = new DeviceSQL.Device.MODBUS.Data.FloatRegister(new DeviceSQL.Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(address.RelativeAddress.Value), address.IsZeroBased.Value)) { ByteSwap = byteSwap.Value, WordSwap = wordSwap.Value, Data = holdingRegisters[Convert.ToByte(registerIndex.Value)].data.Concat(holdingRegisters[Convert.ToByte(registerIndex.Value + 1)].data).ToArray(), }.NullableValue; + return floatRegisterValue ?? SqlSingle.Null; + } + + public SqlInt32 GetLong(SqlByte registerIndex, SqlBoolean byteSwap, SqlBoolean wordSwap) + { + var address = HoldingRegisters[registerIndex.Value].Address; + return new DeviceSQL.Device.MODBUS.Data.LongRegister(new DeviceSQL.Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(address.RelativeAddress.Value), address.IsZeroBased.Value)) { ByteSwap = byteSwap.Value, WordSwap = wordSwap.Value, Data = holdingRegisters[Convert.ToByte(registerIndex.Value)].data.Concat(holdingRegisters[Convert.ToByte(registerIndex.Value + 1)].data).ToArray(), }.Value; + } + + public SqlString GetString(SqlByte registerIndex, SqlBoolean byteSwap, SqlBoolean wordSwap, SqlByte length) + { + var address = HoldingRegisters[registerIndex.Value].Address; + return new DeviceSQL.Device.MODBUS.Data.StringRegister(new DeviceSQL.Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(address.RelativeAddress.Value), address.IsZeroBased.Value), length.Value) { ByteSwap = byteSwap.Value, WordSwap = wordSwap.Value, Data = holdingRegisters[Convert.ToByte(registerIndex.Value)].data.Concat(holdingRegisters[Convert.ToByte(registerIndex.Value + 1)].data).ToArray(), }.Value; + } + + private List HoldingRegisters + { + get + { + if (holdingRegisters == null) + { + holdingRegisters = new List(); + } + return holdingRegisters; + } + } + + public static HoldingRegisterArray Null + { + get + { + return (new HoldingRegisterArray() { IsNull = true }); + } + } + + public override string ToString() + { + return string.Join("|", HoldingRegisters.Select(holdingRegister => holdingRegister.ToString())); + } + + public HoldingRegisterArray AddHoldingRegister(HoldingRegister holdingRegister) + { + HoldingRegisters.Add(holdingRegister); + return this; + } + + public static HoldingRegisterArray Parse(SqlString stringToParse) + { + if (stringToParse.IsNull) + { + return Null; + } + + var parsedHoldingRegisterArray = new HoldingRegisterArray() + { + holdingRegisters = new List() + }; + + var parsedString = stringToParse.Value.Split("|".ToCharArray()); + + for (var i = 0; parsedString.Length > i; i++) + { + parsedHoldingRegisterArray.HoldingRegisters.Add(HoldingRegister.Parse(parsedString[i])); + } + + return parsedHoldingRegisterArray; + } + + public HoldingRegister GetHoldingRegister(SqlInt32 index) + { + return HoldingRegisters[index.Value]; + } + + public static HoldingRegisterArray Empty() + { + var holdingRegisterArray = new HoldingRegisterArray() { holdingRegisters = new List() }; + return holdingRegisterArray; + } + + #endregion + + #region Serialization Methods + + public void Read(BinaryReader binaryReader) + { + HoldingRegisters.Clear(); + IsNull = binaryReader.ReadBoolean(); + + if (IsNull) + { + return; + } + else + { + var length = binaryReader.ReadInt32(); + + for (var i = 0; length > i; i++) + { + var holdingRegister = new HoldingRegister(); + holdingRegister.Read(binaryReader); + HoldingRegisters.Add(holdingRegister); + } + } + + } + + public void Write(BinaryWriter binaryWriter) + { + binaryWriter.Write(IsNull); + binaryWriter.Write(Length); + + if (Length > 0) + { + for (var i = 0; HoldingRegisters.Count > i; i++) + { + HoldingRegisters[i].Write(binaryWriter); + } + } + } + + #endregion + + } +} diff --git a/DeviceSQL.SQLTypes.Modbus/InputRegister.cs b/DeviceSQL.SQLTypes.Modbus/InputRegister.cs new file mode 100644 index 0000000..b688321 --- /dev/null +++ b/DeviceSQL.SQLTypes.Modbus/InputRegister.cs @@ -0,0 +1,139 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System; +using System.Data.SqlTypes; +using System.IO; + +#endregion + +namespace DeviceSQL.SQLTypes.Modbus +{ + [Serializable()] + [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = 10)] + public struct InputRegister : INullable, IBinarySerialize + { + + #region Fields + + internal byte[] data; + + #endregion + + #region Properties + + public SqlBinary Data + { + get + { + if (data == null) + { + data = new byte[2]; + } + return data; + } + set + { + data = value.Value; + } + } + + public ModbusAddress Address + { + get; + set; + } + + public SqlBoolean ByteSwap + { + get; + set; + } + + public bool IsNull + { + get; + private set; + } + + public SqlInt32 Value + { + get + { + return new DeviceSQL.Device.MODBUS.Data.InputRegister(new DeviceSQL.Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(Address.RelativeAddress), Address.IsZeroBased.Value), ByteSwap.Value).Value; + } + set + { + Data = new DeviceSQL.Device.MODBUS.Data.InputRegister(new DeviceSQL.Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(Address.RelativeAddress), Address.IsZeroBased.Value), ByteSwap.Value) { Value = Convert.ToUInt16((int)value) }.Data; + } + } + + public static InputRegister Null + { + get + { + return (new InputRegister() { IsNull = true }); + } + } + + #endregion + + #region Helper Methods + + public override string ToString() + { + if (this.IsNull) + { + return "NULL"; + } + else + { + return string.Format("Address=[{0}];Byte Swap={1};Value={2};", Address.ToString(), ByteSwap.Value, Value.Value); + } + } + + public static InputRegister Parse(SqlString stringToParse) + { + if (stringToParse.IsNull) + { + return Null; + } + + var parsedInputRegisterData = stringToParse.Value.Split(",".ToCharArray()); + var parsedInputRegister = new InputRegister() { Address = ModbusAddress.Parse(parsedInputRegisterData[0]), ByteSwap = bool.Parse(parsedInputRegisterData[1]), Value = UInt16.Parse(parsedInputRegisterData[2]) }; + return parsedInputRegister; + } + + #endregion + + #region Serialization Methods + + public void Read(BinaryReader binaryReader) + { + IsNull = binaryReader.ReadBoolean(); + + if (!IsNull) + { + Address.Read(binaryReader); + ByteSwap = binaryReader.ReadBoolean(); + Data = binaryReader.ReadBytes(2); + } + + } + + public void Write(BinaryWriter binaryWriter) + { + binaryWriter.Write(IsNull); + + if (!IsNull) + { + Address.Write(binaryWriter); + binaryWriter.Write(ByteSwap.Value); + binaryWriter.Write(Data.Value, 0, 2); + } + } + + #endregion + + } +} diff --git a/DeviceSQL.SQLTypes.Modbus/InputRegisterArray.cs b/DeviceSQL.SQLTypes.Modbus/InputRegisterArray.cs new file mode 100644 index 0000000..0930359 --- /dev/null +++ b/DeviceSQL.SQLTypes.Modbus/InputRegisterArray.cs @@ -0,0 +1,208 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System; +using System.Collections.Generic; +using System.Data.SqlTypes; +using System.IO; +using System.Linq; + +#endregion + +namespace DeviceSQL.SQLTypes.Modbus +{ + [Serializable()] + [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = -1)] + public struct InputRegisterArray : INullable, IBinarySerialize + { + + #region Fields + + internal List inputRegisters; + + #endregion + + #region Properties + + internal InputRegister this[int index] + { + get + { + return InputRegisters[index]; + } + set + { + InputRegisters[index] = value; + } + } + + public bool IsNull + { + get; + internal set; + } + + public int Length + { + get + { + return InputRegisters.Count; + } + } + + #endregion + + #region Helper Methods + + public SqlByte GetByte(SqlByte registerIndex, SqlInt32 offset) + { + return InputRegisters[registerIndex.Value].data[offset.Value]; + } + + public SqlBinary GetBytes(SqlByte registerIndex, SqlInt32 registerCount) + { + var bytes = new List(); + + for (var i = 0; registerCount.Value > i; i++) + { + bytes.AddRange(InputRegisters[i].Data.Value); + } + + return bytes.ToArray(); + + } + + public SqlInt16 GetShort(SqlByte registerIndex, SqlBoolean byteSwap) + { + var address = InputRegisters[registerIndex.Value].Address; + return new DeviceSQL.Device.MODBUS.Data.ShortRegister(new DeviceSQL.Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(address.RelativeAddress.Value), address.IsZeroBased.Value)) { ByteSwap = byteSwap.Value, Data = inputRegisters[Convert.ToByte(registerIndex.Value)].data }.Value; + } + + public SqlSingle GetFloat(SqlByte registerIndex, SqlBoolean byteSwap, SqlBoolean wordSwap) + { + var address = InputRegisters[registerIndex.Value].Address; + var floatRegisterValue = new DeviceSQL.Device.MODBUS.Data.FloatRegister(new DeviceSQL.Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(address.RelativeAddress.Value), address.IsZeroBased.Value)) { ByteSwap = byteSwap.Value, WordSwap = wordSwap.Value, Data = inputRegisters[Convert.ToByte(registerIndex.Value)].data.Concat(inputRegisters[Convert.ToByte(registerIndex.Value + 1)].data).ToArray(), }.NullableValue; + return floatRegisterValue ?? SqlSingle.Null; + } + + public SqlInt32 GetLong(SqlByte registerIndex, SqlBoolean byteSwap, SqlBoolean wordSwap) + { + var address = InputRegisters[registerIndex.Value].Address; + return new DeviceSQL.Device.MODBUS.Data.LongRegister(new DeviceSQL.Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(address.RelativeAddress.Value), address.IsZeroBased.Value)) { ByteSwap = byteSwap.Value, WordSwap = wordSwap.Value, Data = inputRegisters[Convert.ToByte(registerIndex.Value)].data.Concat(inputRegisters[Convert.ToByte(registerIndex.Value + 1)].data).ToArray(), }.Value; + } + + public SqlString GetString(SqlByte registerIndex, SqlBoolean byteSwap, SqlBoolean wordSwap, SqlByte length) + { + var address = InputRegisters[registerIndex.Value].Address; + return new DeviceSQL.Device.MODBUS.Data.StringRegister(new DeviceSQL.Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(address.RelativeAddress.Value), address.IsZeroBased.Value), length.Value) { ByteSwap = byteSwap.Value, WordSwap = wordSwap.Value, Data = inputRegisters[Convert.ToByte(registerIndex.Value)].data.Concat(inputRegisters[Convert.ToByte(registerIndex.Value + 1)].data).ToArray(), }.Value; + } + + private List InputRegisters + { + get + { + if (inputRegisters == null) + { + inputRegisters = new List(); + } + return inputRegisters; + } + } + + public static InputRegisterArray Null + { + get + { + return (new InputRegisterArray() { IsNull = true }); + } + } + + public override string ToString() + { + return string.Join("|", InputRegisters.Select(inputRegister => inputRegister.ToString())); + } + + public InputRegisterArray AddInputRegister(InputRegister inputRegister) + { + InputRegisters.Add(inputRegister); + return this; + } + + public static InputRegisterArray Parse(SqlString stringToParse) + { + if (stringToParse.IsNull) + { + return Null; + } + + var parsedInputRegisterArray = new InputRegisterArray() + { + inputRegisters = new List() + }; + + var parsedString = stringToParse.Value.Split("|".ToCharArray()); + + for (var i = 0; parsedString.Length > i; i++) + { + parsedInputRegisterArray.InputRegisters.Add(InputRegister.Parse(parsedString[i])); + } + + return parsedInputRegisterArray; + } + + public InputRegister GetInputRegister(SqlInt32 index) + { + return InputRegisters[index.Value]; + } + + public static InputRegisterArray Empty() + { + var inputRegisterArray = new InputRegisterArray() { inputRegisters = new List() }; + return inputRegisterArray; + } + + #endregion + + #region Serialization Methods + + public void Read(BinaryReader binaryReader) + { + InputRegisters.Clear(); + IsNull = binaryReader.ReadBoolean(); + + if (IsNull) + { + return; + } + else + { + var length = binaryReader.ReadInt32(); + + for (var i = 0; length > i; i++) + { + var inputRegister = new InputRegister(); + inputRegister.Read(binaryReader); + InputRegisters.Add(inputRegister); + } + } + + } + + public void Write(BinaryWriter binaryWriter) + { + binaryWriter.Write(IsNull); + binaryWriter.Write(Length); + + if (Length > 0) + { + for (var i = 0; InputRegisters.Count > i; i++) + { + InputRegisters[i].Write(binaryWriter); + } + } + } + + #endregion + + } +} \ No newline at end of file diff --git a/DeviceSQL.SQLTypes.Modbus/LongRegister.cs b/DeviceSQL.SQLTypes.Modbus/LongRegister.cs new file mode 100644 index 0000000..e28fa93 --- /dev/null +++ b/DeviceSQL.SQLTypes.Modbus/LongRegister.cs @@ -0,0 +1,147 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System; +using System.Data.SqlTypes; +using System.IO; + +#endregion + +namespace DeviceSQL.SQLTypes.Modbus +{ + [Serializable()] + [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = 13)] + public struct LongRegister : INullable, IBinarySerialize + { + + #region Fields + + internal byte[] data; + + #endregion + + #region Properties + + public SqlBinary Data + { + get + { + if (data == null) + { + data = new byte[4]; + } + return data; + } + set + { + data = value.Value; + } + } + + public ModbusAddress Address + { + get; + set; + } + + public SqlBoolean ByteSwap + { + get; + set; + } + + public SqlBoolean WordSwap + { + get; + set; + } + + public bool IsNull + { + get; + private set; + } + + public SqlInt32 Value + { + get + { + return new DeviceSQL.Device.MODBUS.Data.LongRegister(new DeviceSQL.Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(Address.RelativeAddress), Address.IsZeroBased.Value), ByteSwap.Value, WordSwap.Value).Value; + } + set + { + Data = new DeviceSQL.Device.MODBUS.Data.LongRegister(new DeviceSQL.Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(Address.RelativeAddress), Address.IsZeroBased.Value), ByteSwap.Value, WordSwap.Value) { Value = Convert.ToUInt16(value) }.Data; + } + } + + public static LongRegister Null + { + get + { + return (new LongRegister() { IsNull = true }); + } + } + + #endregion + + #region Helper Methods + + public override string ToString() + { + if (this.IsNull) + { + return "NULL"; + } + else + { + return string.Format("Address=[{0}];Byte Swap={1};Word Swap={2};Value={3};", Address.ToString(), ByteSwap.Value, WordSwap.Value, Value.Value); + } + } + + public static LongRegister Parse(SqlString stringToParse) + { + if (stringToParse.IsNull) + { + return Null; + } + + var parsedLongRegisterData = stringToParse.Value.Split(",".ToCharArray()); + var parsedLongRegister = new LongRegister() { Address = ModbusAddress.Parse(parsedLongRegisterData[0]), ByteSwap = bool.Parse(parsedLongRegisterData[1]), WordSwap = bool.Parse(parsedLongRegisterData[2]), Value = Int32.Parse(parsedLongRegisterData[3]) }; + return parsedLongRegister; + } + + #endregion + + #region Serialization Methods + + public void Read(BinaryReader binaryReader) + { + IsNull = binaryReader.ReadBoolean(); + + if (!IsNull) + { + Address.Read(binaryReader); + ByteSwap = binaryReader.ReadBoolean(); + WordSwap = binaryReader.ReadBoolean(); + Data = binaryReader.ReadBytes(4); + } + + } + + public void Write(BinaryWriter binaryWriter) + { + binaryWriter.Write(IsNull); + + if (!IsNull) + { + Address.Write(binaryWriter); + binaryWriter.Write(ByteSwap.Value); + binaryWriter.Write(WordSwap.Value); + binaryWriter.Write(Data.Value, 0, 4); + } + } + + #endregion + + } +} diff --git a/DeviceSQL.SQLTypes.Modbus/LongRegisterArray.cs b/DeviceSQL.SQLTypes.Modbus/LongRegisterArray.cs new file mode 100644 index 0000000..83eb1fc --- /dev/null +++ b/DeviceSQL.SQLTypes.Modbus/LongRegisterArray.cs @@ -0,0 +1,166 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System; +using System.Collections.Generic; +using System.Data.SqlTypes; +using System.IO; +using System.Linq; + +#endregion + +namespace DeviceSQL.SQLTypes.Modbus +{ + [Serializable()] + [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = -1)] + public struct LongRegisterArray : INullable, IBinarySerialize + { + + #region Fields + + internal List longRegisters; + + #endregion + + #region Properties + + internal LongRegister this[int index] + { + get + { + return LongRegisters[index]; + } + set + { + LongRegisters[index] = value; + } + } + + public bool IsNull + { + get; + internal set; + } + + public int Length + { + get + { + return LongRegisters.Count; + } + } + + #endregion + + #region Helper Methods + + private List LongRegisters + { + get + { + if (longRegisters == null) + { + longRegisters = new List(); + } + return longRegisters; + } + } + + public static LongRegisterArray Null + { + get + { + return (new LongRegisterArray() { IsNull = true }); + } + } + + public override string ToString() + { + return string.Join("|", LongRegisters.Select(longRegister => longRegister.ToString())); + } + + public LongRegisterArray AddLongRegister(LongRegister longRegister) + { + LongRegisters.Add(longRegister); + return this; + } + + public static LongRegisterArray Parse(SqlString stringToParse) + { + if (stringToParse.IsNull) + { + return Null; + } + + var parsedLongRegisterArray = new LongRegisterArray() + { + longRegisters = new List() + }; + + var parsedString = stringToParse.Value.Split("|".ToCharArray()); + + for (var i = 0; parsedString.Length > i; i++) + { + parsedLongRegisterArray.LongRegisters.Add(LongRegister.Parse(parsedString[i])); + } + + return parsedLongRegisterArray; + } + + public LongRegister GetLongRegister(SqlInt32 index) + { + return LongRegisters[index.Value]; + } + + public static LongRegisterArray Empty() + { + var longRegisterArray = new LongRegisterArray() { longRegisters = new List() }; + return longRegisterArray; + } + + #endregion + + #region Serialization Methods + + public void Read(BinaryReader binaryReader) + { + LongRegisters.Clear(); + IsNull = binaryReader.ReadBoolean(); + + if (IsNull) + { + return; + } + else + { + var length = binaryReader.ReadInt32(); + + for (var i = 0; length > i; i++) + { + var longRegister = new LongRegister(); + longRegister.Read(binaryReader); + LongRegisters.Add(longRegister); + } + } + + } + + public void Write(BinaryWriter binaryWriter) + { + binaryWriter.Write(IsNull); + binaryWriter.Write(Length); + + if (Length > 0) + { + for (var i = 0; LongRegisters.Count > i; i++) + { + LongRegisters[i].Write(binaryWriter); + } + } + } + + #endregion + + } +} + diff --git a/DeviceSQL.SQLTypes.Modbus/ModbusAddress.cs b/DeviceSQL.SQLTypes.Modbus/ModbusAddress.cs new file mode 100644 index 0000000..a244eb6 --- /dev/null +++ b/DeviceSQL.SQLTypes.Modbus/ModbusAddress.cs @@ -0,0 +1,118 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System; +using System.Data.SqlTypes; +using System.IO; + +#endregion + +namespace DeviceSQL.SQLTypes.Modbus +{ + [Serializable()] + [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = 6)] + public struct ModbusAddress : INullable, IBinarySerialize + { + + #region Properties + + public SqlInt32 AbsoluteAddress + { + get + { + if (this.IsZeroBased) + { + return (ushort)(this.RelativeAddress - 1); + } + else + { + return (ushort)(this.RelativeAddress); + } + } + } + + public SqlInt32 RelativeAddress + { + get; + set; + } + + public SqlBoolean IsZeroBased + { + get; + set; + } + + public bool IsNull + { + get; + private set; + } + + public static ModbusAddress Null + { + get + { + return (new ModbusAddress() { IsNull = true }); + } + } + + #endregion + + #region Helper Methods + + public override string ToString() + { + if (this.IsNull) + { + return "NULL"; + } + else + { + return string.Format("Is Zero Based={0};Relative Address={1};Absolute Address={2}", IsZeroBased, RelativeAddress, AbsoluteAddress); + } + } + + public static ModbusAddress Parse(SqlString stringToParse) + { + if (stringToParse.IsNull) + { + return Null; + } + + var parsedMODBUSAddressData = stringToParse.Value.Split(";".ToCharArray()); + var parsedMODBUSAddress = new ModbusAddress() { IsZeroBased = bool.Parse(parsedMODBUSAddressData[0]), RelativeAddress = int.Parse(parsedMODBUSAddressData[1]) }; + return parsedMODBUSAddress; + } + + #endregion + + #region Serialization Methods + + public void Read(BinaryReader binaryReader) + { + IsNull = binaryReader.ReadBoolean(); + + if (!IsNull) + { + IsZeroBased = binaryReader.ReadBoolean(); + RelativeAddress = binaryReader.ReadInt32(); + } + + } + + public void Write(BinaryWriter binaryWriter) + { + binaryWriter.Write(IsNull); + + if (!IsNull) + { + binaryWriter.Write(IsZeroBased.Value); + binaryWriter.Write(RelativeAddress.Value); + } + } + + #endregion + + } +} \ No newline at end of file diff --git a/DeviceSQL.SQLTypes.Modbus/Properties/AssemblyInfo.cs b/DeviceSQL.SQLTypes.Modbus/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..2569f66 --- /dev/null +++ b/DeviceSQL.SQLTypes.Modbus/Properties/AssemblyInfo.cs @@ -0,0 +1,37 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("DeviceSQL.SQLTypes.Modbus")] +[assembly: AssemblyDescription("DeviceSQL.SQLTypes.Modbus")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("CloudSonix")] +[assembly: AssemblyProduct("DeviceSQL")] +[assembly: AssemblyCopyright("© CloudSonix. All rights reserved.")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] +[assembly: AssemblyKeyFileAttribute("../DeviceSQL-Key.snk")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("cd45d76e-d2ed-4587-9873-f35ad24e42a5")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/DeviceSQL.SQLTypes.Modbus/ShortRegister.cs b/DeviceSQL.SQLTypes.Modbus/ShortRegister.cs new file mode 100644 index 0000000..b940a50 --- /dev/null +++ b/DeviceSQL.SQLTypes.Modbus/ShortRegister.cs @@ -0,0 +1,139 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System; +using System.Data.SqlTypes; +using System.IO; + +#endregion + +namespace DeviceSQL.SQLTypes.Modbus +{ + [Serializable()] + [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = 10)] + public struct ShortRegister : INullable, IBinarySerialize + { + + #region Fields + + internal byte[] data; + + #endregion + + #region Properties + + public SqlBinary Data + { + get + { + if (data == null) + { + data = new byte[2]; + } + return data; + } + set + { + data = value.Value; + } + } + + public ModbusAddress Address + { + get; + set; + } + + public SqlBoolean ByteSwap + { + get; + set; + } + + public bool IsNull + { + get; + private set; + } + + public SqlInt32 Value + { + get + { + return new DeviceSQL.Device.MODBUS.Data.ShortRegister(new DeviceSQL.Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(Address.RelativeAddress), Address.IsZeroBased.Value), ByteSwap.Value).Value; + } + set + { + Data = new DeviceSQL.Device.MODBUS.Data.ShortRegister(new DeviceSQL.Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(Address.RelativeAddress), Address.IsZeroBased.Value), ByteSwap.Value) { Value = Convert.ToInt16((int)value.Value) }.Data; + } + } + + public static ShortRegister Null + { + get + { + return (new ShortRegister() { IsNull = true }); + } + } + + #endregion + + #region Helper Methods + + public override string ToString() + { + if (this.IsNull) + { + return "NULL"; + } + else + { + return string.Format("Address=[{0}];Byte Swap={1};Value={2};", Address.ToString(), ByteSwap.Value, Value.Value); + } + } + + public static ShortRegister Parse(SqlString stringToParse) + { + if (stringToParse.IsNull) + { + return Null; + } + + var parsedShortRegisterData = stringToParse.Value.Split(",".ToCharArray()); + var parsedShortRegister = new ShortRegister() { Address = ModbusAddress.Parse(parsedShortRegisterData[0]), ByteSwap = bool.Parse(parsedShortRegisterData[1]), Value = UInt16.Parse(parsedShortRegisterData[2]) }; + return parsedShortRegister; + } + + #endregion + + #region Serialization Methods + + public void Read(BinaryReader binaryReader) + { + IsNull = binaryReader.ReadBoolean(); + + if (!IsNull) + { + Address.Read(binaryReader); + ByteSwap = binaryReader.ReadBoolean(); + Data = binaryReader.ReadBytes(2); + } + + } + + public void Write(BinaryWriter binaryWriter) + { + binaryWriter.Write(IsNull); + + if (!IsNull) + { + Address.Write(binaryWriter); + binaryWriter.Write(ByteSwap.Value); + binaryWriter.Write(Data.Value, 0, 2); + } + } + + #endregion + + } +} \ No newline at end of file diff --git a/DeviceSQL.SQLTypes.Modbus/ShortRegisterArray.cs b/DeviceSQL.SQLTypes.Modbus/ShortRegisterArray.cs new file mode 100644 index 0000000..82d19ad --- /dev/null +++ b/DeviceSQL.SQLTypes.Modbus/ShortRegisterArray.cs @@ -0,0 +1,165 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System; +using System.Collections.Generic; +using System.Data.SqlTypes; +using System.IO; +using System.Linq; + +#endregion + +namespace DeviceSQL.SQLTypes.Modbus +{ + [Serializable()] + [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = -1)] + public struct ShortRegisterArray : INullable, IBinarySerialize + { + + #region Fields + + internal List shortRegisters; + + #endregion + + #region Properties + + internal ShortRegister this[int index] + { + get + { + return ShortRegisters[index]; + } + set + { + ShortRegisters[index] = value; + } + } + + public bool IsNull + { + get; + internal set; + } + + public int Length + { + get + { + return ShortRegisters.Count; + } + } + + #endregion + + #region Helper Methods + + private List ShortRegisters + { + get + { + if (shortRegisters == null) + { + shortRegisters = new List(); + } + return shortRegisters; + } + } + + public static ShortRegisterArray Null + { + get + { + return (new ShortRegisterArray() { IsNull = true }); + } + } + + public override string ToString() + { + return string.Join("|", ShortRegisters.Select(shortRegister => shortRegister.ToString())); + } + + public ShortRegisterArray AddShortRegister(ShortRegister shortRegister) + { + ShortRegisters.Add(shortRegister); + return this; + } + + public static ShortRegisterArray Parse(SqlString stringToParse) + { + if (stringToParse.IsNull) + { + return Null; + } + + var parsedShortRegisterArray = new ShortRegisterArray() + { + shortRegisters = new List() + }; + + var parsedString = stringToParse.Value.Split("|".ToCharArray()); + + for (var i = 0; parsedString.Length > i; i++) + { + parsedShortRegisterArray.ShortRegisters.Add(ShortRegister.Parse(parsedString[i])); + } + + return parsedShortRegisterArray; + } + + public ShortRegister GetShortRegister(SqlInt32 index) + { + return ShortRegisters[index.Value]; + } + + public static ShortRegisterArray Empty() + { + var shortRegisterArray = new ShortRegisterArray() { shortRegisters = new List() }; + return shortRegisterArray; + } + + #endregion + + #region Serialization Methods + + public void Read(BinaryReader binaryReader) + { + ShortRegisters.Clear(); + IsNull = binaryReader.ReadBoolean(); + + if (IsNull) + { + return; + } + else + { + var length = binaryReader.ReadInt32(); + + for (var i = 0; length > i; i++) + { + var shortRegister = new ShortRegister(); + shortRegister.Read(binaryReader); + ShortRegisters.Add(shortRegister); + } + } + + } + + public void Write(BinaryWriter binaryWriter) + { + binaryWriter.Write(IsNull); + binaryWriter.Write(Length); + + if (Length > 0) + { + for (var i = 0; ShortRegisters.Count > i; i++) + { + ShortRegisters[i].Write(binaryWriter); + } + } + } + + #endregion + + } +} \ No newline at end of file diff --git a/DeviceSQL.SQLTypes.Modbus/StringRegister.cs b/DeviceSQL.SQLTypes.Modbus/StringRegister.cs new file mode 100644 index 0000000..2294bba --- /dev/null +++ b/DeviceSQL.SQLTypes.Modbus/StringRegister.cs @@ -0,0 +1,141 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System; +using System.Data.SqlTypes; +using System.IO; + +#endregion + +namespace DeviceSQL.SQLTypes.Modbus +{ + [Serializable()] + [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = 264)] + public struct StringRegister : INullable, IBinarySerialize + { + + #region Fields + + internal byte[] data; + + #endregion + + #region Properties + + public SqlBinary Data + { + get + { + if (data == null) + { + data = new byte[Length.Value]; + } + return data; + } + set + { + data = value.Value; + Length = Convert.ToByte(data.Length); + } + } + + public SqlByte Length + { + get; + set; + } + + public ModbusAddress Address + { + get; + set; + } + + public bool IsNull + { + get; + private set; + } + + public SqlString Value + { + get + { + return new DeviceSQL.Device.MODBUS.Data.StringRegister(new DeviceSQL.Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(Address.RelativeAddress), Address.IsZeroBased.Value), Length.Value).Value; + } + set + { + Data = new DeviceSQL.Device.MODBUS.Data.StringRegister(new DeviceSQL.Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(Address.RelativeAddress), Address.IsZeroBased.Value), Length.Value) { Value = value.Value }.Data; + } + } + + public static StringRegister Null + { + get + { + return (new StringRegister() { IsNull = true }); + } + } + + #endregion + + #region Helper Methods + + public override string ToString() + { + if (this.IsNull) + { + return "NULL"; + } + else + { + return string.Format("Address=[{0}];Length={1};Value={2};", Address.ToString(), Length.Value, Value.Value); + } + } + + public static StringRegister Parse(SqlString stringToParse) + { + if (stringToParse.IsNull) + { + return Null; + } + + var parsedStringRegisterData = stringToParse.Value.Split(",".ToCharArray()); + var parsedStringRegister = new StringRegister() { Address = ModbusAddress.Parse(parsedStringRegisterData[0]), Length = byte.Parse(parsedStringRegisterData[1]), Value = parsedStringRegisterData[2] }; + return parsedStringRegister; + } + + #endregion + + #region Serialization Methods + + public void Read(BinaryReader binaryReader) + { + IsNull = binaryReader.ReadBoolean(); + + if (!IsNull) + { + Address.Read(binaryReader); + Length = binaryReader.ReadByte(); + Data = binaryReader.ReadBytes(Length.Value); + } + + } + + public void Write(BinaryWriter binaryWriter) + { + binaryWriter.Write(IsNull); + + if (!IsNull) + { + Address.Write(binaryWriter); + binaryWriter.Write(Length.Value); + binaryWriter.Write(Data.Value, 0, Length.Value); + } + } + + #endregion + + } +} + diff --git a/DeviceSQL.SQLTypes.Modbus/StringRegisterArray.cs b/DeviceSQL.SQLTypes.Modbus/StringRegisterArray.cs new file mode 100644 index 0000000..42b07db --- /dev/null +++ b/DeviceSQL.SQLTypes.Modbus/StringRegisterArray.cs @@ -0,0 +1,165 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System; +using System.Collections.Generic; +using System.Data.SqlTypes; +using System.IO; +using System.Linq; + +#endregion + +namespace DeviceSQL.SQLTypes.Modbus +{ + [Serializable()] + [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = -1)] + public struct StringRegisterArray : INullable, IBinarySerialize + { + + #region Fields + + internal List stringRegisters; + + #endregion + + #region Properties + + internal StringRegister this[int index] + { + get + { + return StringRegisters[index]; + } + set + { + StringRegisters[index] = value; + } + } + + public bool IsNull + { + get; + internal set; + } + + public int Length + { + get + { + return StringRegisters.Count; + } + } + + #endregion + + #region Helper Methods + + private List StringRegisters + { + get + { + if (stringRegisters == null) + { + stringRegisters = new List(); + } + return stringRegisters; + } + } + + public static StringRegisterArray Null + { + get + { + return (new StringRegisterArray() { IsNull = true }); + } + } + + public override string ToString() + { + return string.Join("|", StringRegisters.Select(stringRegister => stringRegister.ToString())); + } + + public StringRegisterArray AddStringRegister(StringRegister stringRegister) + { + StringRegisters.Add(stringRegister); + return this; + } + + public static StringRegisterArray Parse(SqlString stringToParse) + { + if (stringToParse.IsNull) + { + return Null; + } + + var parsedStringRegisterArray = new StringRegisterArray() + { + stringRegisters = new List() + }; + + var parsedString = stringToParse.Value.Split("|".ToCharArray()); + + for (var i = 0; parsedString.Length > i; i++) + { + parsedStringRegisterArray.StringRegisters.Add(StringRegister.Parse(parsedString[i])); + } + + return parsedStringRegisterArray; + } + + public StringRegister GetStringRegister(SqlInt32 index) + { + return StringRegisters[index.Value]; + } + + public static StringRegisterArray Empty() + { + var stringRegisterArray = new StringRegisterArray() { stringRegisters = new List() }; + return stringRegisterArray; + } + + #endregion + + #region Serialization Methods + + public void Read(BinaryReader binaryReader) + { + StringRegisters.Clear(); + IsNull = binaryReader.ReadBoolean(); + + if (IsNull) + { + return; + } + else + { + var length = binaryReader.ReadInt32(); + + for (var i = 0; length > i; i++) + { + var stringRegister = new StringRegister(); + stringRegister.Read(binaryReader); + StringRegisters.Add(stringRegister); + } + } + + } + + public void Write(BinaryWriter binaryWriter) + { + binaryWriter.Write(IsNull); + binaryWriter.Write(Length); + + if (Length > 0) + { + for (var i = 0; StringRegisters.Count > i; i++) + { + StringRegisters[i].Write(binaryWriter); + } + } + } + + #endregion + + } +} \ No newline at end of file diff --git a/DeviceSQL.SQLTypes.ROC/AlarmRecord.cs b/DeviceSQL.SQLTypes.ROC/AlarmRecord.cs new file mode 100644 index 0000000..7ee1c6a --- /dev/null +++ b/DeviceSQL.SQLTypes.ROC/AlarmRecord.cs @@ -0,0 +1,163 @@ +#region Imported Types + + +using Microsoft.SqlServer.Server; +using System; +using System.Data.SqlTypes; +using System.IO; + +#endregion + +namespace DeviceSQL.SQLTypes.ROC +{ + [Serializable()] + [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = 27)] + public struct AlarmRecord : INullable, IBinarySerialize + { + + #region Fields + + public byte[] data; + + #endregion + + #region Properties + + public bool IsNull + { + get; + internal set; + } + + public static AlarmRecord Null + { + get + { + return new AlarmRecord() { IsNull = true }; + } + } + + public SqlDateTime DateTimeStamp + { + get + { + var alarmRecord = new Data.AlarmRecord(Convert.ToUInt16(Index), Data); + return alarmRecord.DateTimeStamp.HasValue ? alarmRecord.DateTimeStamp.Value : SqlDateTime.Null; + } + } + + public int Index + { + get; + set; + } + + public string AlarmCode + { + get + { + return new Data.AlarmRecord(Convert.ToUInt16(Index), Data).AlarmCode.ToString(); + } + } + + public string AlarmClass + { + get + { + return new Data.AlarmRecord(Convert.ToUInt16(Index), Data).AlarmClass.ToString(); + } + } + + public string AlarmState + { + get + { + return new Data.AlarmRecord(Convert.ToUInt16(Index), Data).AlarmState.ToString(); + } + } + + public string Tag + { + get + { + return new Data.AlarmRecord(Convert.ToUInt16(Index), Data).Tag; + } + } + + public SqlSingle Value + { + get + { + var alarmRecord = new Data.AlarmRecord(Convert.ToUInt16(Index), Data); + return alarmRecord.NullableValue.HasValue ? alarmRecord.Value : SqlSingle.Null; + } + } + + public byte[] Data + { + get + { + if (data == null) + { + data = new byte[22]; + } + return data; + } + + internal set + { + data = value; + } + } + + #endregion + + #region Helper Methods + + public static AlarmRecord Parse(SqlString stringToParse) + { + var parsedEventRecord = stringToParse.Value.Split(",".ToCharArray()); + var base64Bytes = Convert.FromBase64String(parsedEventRecord[1]); + if (base64Bytes.Length == 22) + { + return new AlarmRecord() { Index = ushort.Parse(parsedEventRecord[0]), Data = base64Bytes }; + } + else + { + throw new ArgumentException("Input must be exactly 22 bytes"); + } + } + + public override string ToString() + { + return string.Format("{0},{1}", Index, Convert.ToBase64String(Data)); + } + + #endregion + + #region Serialization Methods + + public void Read(BinaryReader binaryReader) + { + IsNull = binaryReader.ReadBoolean(); + Index = binaryReader.ReadInt32(); + if (!IsNull) + { + Data = binaryReader.ReadBytes(22); + } + } + + public void Write(BinaryWriter binaryWriter) + { + binaryWriter.Write(IsNull); + binaryWriter.Write(Index); + if (!IsNull) + { + binaryWriter.Write(Data, 0, 22); + } + } + + #endregion + + } +} diff --git a/DeviceSQL.SQLTypes.ROC/AlarmRecordArray.cs b/DeviceSQL.SQLTypes.ROC/AlarmRecordArray.cs new file mode 100644 index 0000000..35bb11a --- /dev/null +++ b/DeviceSQL.SQLTypes.ROC/AlarmRecordArray.cs @@ -0,0 +1,162 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System; +using System.Collections.Generic; +using System.Data.SqlTypes; +using System.IO; +using System.Linq; + +#endregion + +namespace DeviceSQL.SQLTypes.ROC +{ + [Serializable()] + [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = -1)] + public struct AlarmRecordArray : INullable, IBinarySerialize + { + + #region Fields + + public List alarmRecords; + + #endregion + + #region Properties + + internal AlarmRecord this[int index] + { + get + { + return AlarmRecords[index]; + } + set + { + AlarmRecords[index] = value; + } + } + + public bool IsNull + { + get; + internal set; + } + + public int Length + { + get + { + return AlarmRecords.Count; + } + } + + #endregion + + #region Helper Methods + + private List AlarmRecords + { + get + { + if (alarmRecords == null) + { + alarmRecords = new List(); + } + return alarmRecords; + } + } + + public static AlarmRecordArray Null + { + get + { + return (new AlarmRecordArray() { IsNull = true }); + } + } + + public override string ToString() + { + return string.Join("|", AlarmRecords.Select(parameter => parameter.ToString())); + } + + public AlarmRecordArray AddAlarmRecord(AlarmRecord alarmRecord) + { + AlarmRecords.Add(alarmRecord); + return this; + } + + public static AlarmRecordArray Parse(SqlString stringToParse) + { + if (stringToParse.IsNull) + { + return Null; + } + + var parsedROCAlarmRecords = new AlarmRecordArray(); + parsedROCAlarmRecords.alarmRecords = new List(); + var parsedString = stringToParse.Value.Split("|".ToCharArray()); + + for (var i = 0; parsedString.Length > i; i++) + { + parsedROCAlarmRecords.alarmRecords.Add(AlarmRecord.Parse(parsedString[i])); + } + + return parsedROCAlarmRecords; + } + + public AlarmRecord GetAlarmRecord(SqlInt32 index) + { + return AlarmRecords[index.Value]; + } + + public static AlarmRecordArray Empty() + { + var alarmRecordArray = new AlarmRecordArray { alarmRecords = new List() }; + return alarmRecordArray; + } + + #endregion + + #region Serialization Methods + + public void Read(BinaryReader binaryReader) + { + AlarmRecords.Clear(); + IsNull = binaryReader.ReadBoolean(); + + if (IsNull) + { + return; + } + else + { + var length = binaryReader.ReadInt32(); + + for (var i = 0; length > i; i++) + { + var alarmRecord = new AlarmRecord(); + alarmRecord.Read(binaryReader); + AlarmRecords.Add(alarmRecord); + } + } + + } + + public void Write(BinaryWriter binaryWriter) + { + binaryWriter.Write(IsNull); + binaryWriter.Write(Length); + + if (Length > 0) + { + for (var i = 0; AlarmRecords.Count > i; i++) + { + AlarmRecords[i].Write(binaryWriter); + } + } + } + + #endregion + + } +} diff --git a/DeviceSQL.SQLTypes.ROC/ArchiveInformation.cs b/DeviceSQL.SQLTypes.ROC/ArchiveInformation.cs new file mode 100644 index 0000000..44d9bd9 --- /dev/null +++ b/DeviceSQL.SQLTypes.ROC/ArchiveInformation.cs @@ -0,0 +1,224 @@ +#region Imported Types + +using DeviceSQL.SQLTypes.ROC.Data; +using Microsoft.SqlServer.Server; +using System; +using System.Data.SqlTypes; +using System.IO; + +#endregion + +namespace DeviceSQL.SQLTypes.ROC +{ + [Serializable()] + [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = 27)] + public struct ArchiveInformation : INullable, IBinarySerialize + { + + #region Fields + + private byte[] data; + + #endregion + + #region Properties + + public bool IsNull + { + get; + internal set; + } + + public static ArchiveInformation Null + { + get + { + return new ArchiveInformation() { IsNull = true }; + } + } + + public byte[] Data + { + get + { + if (data == null) + { + data = new byte[26]; + } + return data; + } + set + { + data = value; + } + } + + public int AlarmLogPointer + { + get + { + return new ArchiveInfo(Data).AlarmLogPointer; + } + } + + public int EventLogPointer + { + get + { + return new ArchiveInfo(Data).EventLogPointer; + } + } + + public int BaseRamCurrentHistoricalHour + { + get + { + return new ArchiveInfo(Data).BaseRamCurrentHistoricalHour; + } + } + + public int BaseRam1CurrentHistoricalHour + { + get + { + return new ArchiveInfo(Data).BaseRam1CurrentHistoricalHour; + } + } + + public int BaseRam2CurrentHistoricalHour + { + get + { + return new ArchiveInfo(Data).BaseRam2CurrentHistoricalHour; + } + } + + public byte BaseRamCurrentHistoricalDay + { + get + { + return new ArchiveInfo(Data).BaseRamCurrentHistoricalDay; + } + } + + public byte Base1RamCurrentHistoricalDay + { + get + { + return new ArchiveInfo(Data).Base1RamCurrentHistoricalDay; + } + } + + public byte BaseRam2CurrentHistoricalDay + { + get + { + return new ArchiveInfo(Data).BaseRam2CurrentHistoricalDay; + } + } + + public int MaximumNumberOfAlarms + { + get + { + return new ArchiveInfo(Data).MaximumNumberOfAlarms; + } + } + + public int MaximumNumberOfEvents + { + get + { + return new ArchiveInfo(Data).MaximumNumberOfEvents; + } + } + + public byte BaseRamNumberOfDays + { + get + { + return new ArchiveInfo(Data).BaseRamNumberOfDays; + } + } + + public byte BaseRam1NumberOfDays + { + get + { + return new ArchiveInfo(Data).BaseRam1NumberOfDays; + } + } + + public byte BaseRam2NumberOfDays + { + get + { + return new ArchiveInfo(Data).BaseRam2NumberOfDays; + } + } + + public int CurrentAuditLogPointer + { + get + { + return new ArchiveInfo(Data).CurrentAuditLogPointer; + } + } + + public byte MinutesPerHistoricalPeriod + { + get + { + return new ArchiveInfo(Data).MinutesPerHistoricalPeriod; + } + } + + #endregion + + #region Helper Methods + + public static ArchiveInformation Parse(SqlString stringToParse) + { + var base64Bytes = Convert.FromBase64String(stringToParse.Value); + if (base64Bytes.Length == 24) + { + return new ArchiveInformation() { Data = base64Bytes }; + } + else + { + throw new ArgumentException("Input must be exactly 24 bytes"); + } + } + + public override string ToString() + { + return Convert.ToBase64String(Data); + } + + + #endregion + + #region Serialization Methods + + public void Read(BinaryReader binaryReader) + { + IsNull = binaryReader.ReadBoolean(); + if (!IsNull) + { + Data = binaryReader.ReadBytes(26); + } + } + + public void Write(BinaryWriter binaryWriter) + { + binaryWriter.Write(IsNull); + if (!IsNull) + { + binaryWriter.Write(Data, 0, 26); + } + } + + #endregion + + } +} diff --git a/DeviceSQL.SQLTypes.ROC/AuditLogRecord.cs b/DeviceSQL.SQLTypes.ROC/AuditLogRecord.cs new file mode 100644 index 0000000..72adfee --- /dev/null +++ b/DeviceSQL.SQLTypes.ROC/AuditLogRecord.cs @@ -0,0 +1,384 @@ +#region Imported Types + +using DeviceSQL.SQLTypes.ROC.Data; +using Microsoft.SqlServer.Server; +using System; +using System.Data.SqlTypes; +using System.IO; +using System.Linq; + +#endregion + +namespace DeviceSQL.SQLTypes.ROC +{ + [Serializable()] + [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = 29)] + public struct AuditLogRecord : INullable, IBinarySerialize + { + + #region Fields + + private byte[] data; + + #endregion + + #region Properties + + public bool IsNull + { + get; + internal set; + } + + public static AuditLogRecord Null + { + get + { + return new AuditLogRecord() { IsNull = true }; + } + } + + public byte[] Data + { + get + { + if (data == null) + { + data = new byte[24]; + } + return data; + } + + set + { + data = value; + } + } + + public SqlDateTime DateTimeStamp + { + get + { + var dateTimeStamp = new Data.AuditLogRecord(Convert.ToUInt16(Index), Data).DateTimeStamp; + return dateTimeStamp.HasValue ? dateTimeStamp.Value : SqlDateTime.Null; + } + } + + public int Index + { + get; + set; + } + + public SqlByte FstNumber + { + get + { + var fstNumber = new Data.AuditLogRecord(Convert.ToUInt16(Index), Data).FstNumber; + return fstNumber.HasValue ? fstNumber.Value : SqlByte.Null; + } + } + + public SqlByte PointType + { + get + { + var pointType = new Data.AuditLogRecord(Convert.ToUInt16(Index), Data).PointType; + return pointType.HasValue ? pointType.Value : SqlByte.Null; + } + } + + public SqlByte LogicalNumber + { + get + { + var logicalNumber = new Data.AuditLogRecord(Convert.ToUInt16(Index), Data).LogicalNumber; + return logicalNumber.HasValue ? logicalNumber.Value : SqlByte.Null; + } + } + + public SqlByte ParameterNumber + { + get + { + var parameterNumber = new Data.AuditLogRecord(Convert.ToUInt16(Index), Data).ParameterNumber; + return parameterNumber.HasValue ? parameterNumber.Value : SqlByte.Null; + } + } + + public SqlInt32 Tag + { + get + { + var tag = new Data.AuditLogRecord(Convert.ToUInt16(Index), Data).Tag; + return tag.HasValue ? tag.Value : SqlInt32.Null; + } + } + + public SqlDateTime PowerRemovedDateTime + { + get + { + var powerRemovedDateTime = new Data.AuditLogRecord(Convert.ToUInt16(Index), Data).PowerRemovedDateTime; + return powerRemovedDateTime.HasValue ? powerRemovedDateTime.Value : SqlDateTime.Null; + } + } + + public SqlString CalibrationPointType + { + get + { + var calibrationPointType = new Data.AuditLogRecord(Convert.ToUInt16(Index), Data).CalibrationPointType; + return calibrationPointType.HasValue ? calibrationPointType.Value.ToString() : SqlString.Null; + } + + } + + public SqlString CalibrationMultivariableSensorInput + { + get + { + var calibrationMultivariableSensorInput = new Data.AuditLogRecord(Convert.ToUInt16(Index), Data).CalibrationMultivariableSensorInput; + return calibrationMultivariableSensorInput.HasValue ? calibrationMultivariableSensorInput.Value.ToString() : SqlString.Null; + } + } + + public SqlString CalibrationType + { + get + { + var calibrationType = new Data.AuditLogRecord(Convert.ToUInt16(Index), Data).CalibrationType; + return calibrationType.HasValue ? calibrationType.Value.ToString() : SqlString.Null; + } + } + + public SqlString EventCode + { + get + { + return new Data.AuditLogRecord(Convert.ToUInt16(Index), Data).EventCode.ToString(); + } + } + + public SqlString OperatorId + { + get + { + return new Data.AuditLogRecord(Convert.ToUInt16(Index), Data).OperatorId; + } + } + + public SqlString EventText + { + get + { + return new Data.AuditLogRecord(Convert.ToUInt16(Index), Data).EventText; + } + } + + public SqlBinary OldValue + { + get + { + return new Data.AuditLogRecord(Convert.ToUInt16(Index), Data).OldValue; + } + } + + public SqlSingle FstFloatValue + { + get + { + var fstFloatValue = new Data.AuditLogRecord(Convert.ToUInt16(Index), Data).FstFloatValue; + return fstFloatValue.HasValue ? fstFloatValue.Value : SqlSingle.Null; + } + } + + public SqlBinary NewValue + { + get + { + return new Data.AuditLogRecord(Convert.ToUInt16(Index), Data).NewValue; + } + } + + public Parameter OldParameterValue + { + get + { + if (!PointType.IsNull && !ParameterNumber.IsNull) + { + var pointType = PointType.Value; + var parameterNumber = ParameterNumber.Value; + var parameterDefinition = ParameterDatabase.ParameterDefinitions.Where(pd => pd.PointType == pointType && pd.Parameter == parameterNumber).FirstOrDefault(); + switch (parameterDefinition.DataType) + { + case "AC": + switch (parameterDefinition.Length) + { + case 3: + return new Parameter() { RawType = ParameterType.AC3, RawValue = OldValue.Value.Take(3).ToArray() }; + default: + return Parameter.Null; + } + case "BIN": + return new Parameter() { RawType = ParameterType.BIN, RawValue = OldValue.Value.Take(1).ToArray() }; + case "FL": + return new Parameter() { RawType = ParameterType.FL, RawValue = OldValue.Value }; + case "INT16": + return new Parameter() { RawType = ParameterType.INT16, RawValue = OldValue.Value.Take(2).ToArray() }; + case "INT32": + return new Parameter() { RawType = ParameterType.INT32, RawValue = OldValue.Value }; + case "INT8": + return new Parameter() { RawType = ParameterType.INT8, RawValue = OldValue.Value.Take(1).ToArray() }; + case "TLP": + return new Parameter() { RawType = ParameterType.TLP, RawValue = OldValue.Value.Take(3).ToArray() }; + case "UINT16": + return new Parameter() { RawType = ParameterType.UINT16, RawValue = OldValue.Value.Take(2).ToArray() }; + case "UINT32": + return new Parameter() { RawType = ParameterType.UINT32, RawValue = OldValue.Value }; + case "TIME": + return new Parameter() { RawType = ParameterType.TIME, RawValue = OldValue.Value }; + case "UINT8": + return new Parameter() { RawType = ParameterType.UINT8, RawValue = OldValue.Value.Take(1).ToArray() }; + default: + return Parameter.Null; + } + + } + else + { + return Parameter.Null; + } + } + } + + public Parameter NewParameterValue + { + get + { + if (!PointType.IsNull && !ParameterNumber.IsNull) + { + var pointType = PointType.Value; + var parameterNumber = ParameterNumber.Value; + var parameterDefinition = ParameterDatabase.ParameterDefinitions.Where(pd => pd.PointType == pointType && pd.Parameter == parameterNumber).FirstOrDefault(); + switch (parameterDefinition.DataType) + { + case "AC": + switch (parameterDefinition.Length) + { + case 3: + return new Parameter() { RawType = ParameterType.AC3, RawValue = NewValue.Value.Take(3).ToArray() }; + case 7: + return new Parameter() { RawType = ParameterType.AC7, RawValue = NewValue.Value.Union(new byte[3]).ToArray() }; + case 10: + return new Parameter() { RawType = ParameterType.AC10, RawValue = OldValue.Value.Union(NewValue.Value).Union(BitConverter.GetBytes(Convert.ToUInt16(Tag.Value))).ToArray() }; + case 12: + return new Parameter() { RawType = ParameterType.AC12, RawValue = OldValue.Value.Union(NewValue.Value).Union(BitConverter.GetBytes(Convert.ToUInt16(Tag.Value))).Union(new byte[2]).ToArray() }; + case 20: + return new Parameter() { RawType = ParameterType.AC20, RawValue = OldValue.Value.Union(NewValue.Value).Union(BitConverter.GetBytes(Convert.ToUInt16(Tag.Value))).Union(new byte[10]).ToArray() }; + case 30: + return new Parameter() { RawType = ParameterType.AC30, RawValue = OldValue.Value.Union(NewValue.Value).Union(BitConverter.GetBytes(Convert.ToUInt16(Tag.Value))).Union(new byte[20]).ToArray() }; + case 40: + return new Parameter() { RawType = ParameterType.AC40, RawValue = OldValue.Value.Union(NewValue.Value).Union(BitConverter.GetBytes(Convert.ToUInt16(Tag.Value))).Union(new byte[30]).ToArray() }; + default: + return Parameter.Null; + } + case "BIN": + return new Parameter() { RawType = ParameterType.BIN, RawValue = NewValue.Value.Take(1).ToArray() }; + case "FL": + return new Parameter() { RawType = ParameterType.FL, RawValue = NewValue.Value }; + case "INT16": + return new Parameter() { RawType = ParameterType.INT16, RawValue = NewValue.Value.Take(2).ToArray() }; + case "INT32": + return new Parameter() { RawType = ParameterType.INT32, RawValue = NewValue.Value }; + case "INT8": + return new Parameter() { RawType = ParameterType.INT8, RawValue = NewValue.Value.Take(1).ToArray() }; + case "TLP": + return new Parameter() { RawType = ParameterType.TLP, RawValue = NewValue.Value.Take(3).ToArray() }; + case "UINT16": + return new Parameter() { RawType = ParameterType.UINT16, RawValue = NewValue.Value.Take(2).ToArray() }; + case "UINT32": + return new Parameter() { RawType = ParameterType.UINT32, RawValue = NewValue.Value }; + case "TIME": + return new Parameter() { RawType = ParameterType.TIME, RawValue = NewValue.Value }; + case "UINT8": + return new Parameter() { RawType = ParameterType.UINT8, RawValue = NewValue.Value.Take(1).ToArray() }; + default: + return Parameter.Null; + } + + } + else + { + return Parameter.Null; + } + } + } + + public SqlInt32 SequenceNumber + { + get + { + return new Data.AuditLogRecord(Convert.ToUInt16(Index), Data).SequenceNumber; + } + } + + public SqlBoolean EventNotSaved + { + get + { + return new Data.AuditLogRecord(Convert.ToUInt16(Index), Data).EventNotSaved; + } + } + + #endregion + + #region Helper Methods + + public static AuditLogRecord Parse(SqlString stringToParse) + { + var parsedAuditLogRecord = stringToParse.Value.Split(",".ToCharArray()); + var base64Bytes = Convert.FromBase64String(parsedAuditLogRecord[1]); + if (base64Bytes.Length == 24) + { + return new AuditLogRecord() { Index = ushort.Parse(parsedAuditLogRecord[0]), Data = base64Bytes }; + } + else + { + throw new ArgumentException("Input must be exactly 24 bytes"); + } + } + + public override string ToString() + { + return string.Format("{0},{1}", Index, Convert.ToBase64String(Data)); + } + + #endregion + + #region Serialization Methods + + public void Read(BinaryReader binaryReader) + { + IsNull = binaryReader.ReadBoolean(); + Index = binaryReader.ReadInt32(); + if (!IsNull) + { + Data = binaryReader.ReadBytes(24); + } + } + + public void Write(BinaryWriter binaryWriter) + { + binaryWriter.Write(IsNull); + binaryWriter.Write(Index); + if (!IsNull) + { + binaryWriter.Write(Data, 0, 24); + } + } + + #endregion + + } +} diff --git a/DeviceSQL.SQLTypes.ROC/AuditLogRecordArray.cs b/DeviceSQL.SQLTypes.ROC/AuditLogRecordArray.cs new file mode 100644 index 0000000..c927301 --- /dev/null +++ b/DeviceSQL.SQLTypes.ROC/AuditLogRecordArray.cs @@ -0,0 +1,162 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System; +using System.Collections.Generic; +using System.Data.SqlTypes; +using System.IO; +using System.Linq; + +#endregion + +namespace DeviceSQL.SQLTypes.ROC +{ + [Serializable()] + [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = -1)] + public struct AuditLogRecordArray : INullable, IBinarySerialize + { + + #region Fields + + public List auditLogRecords; + + #endregion + + #region Properties + + internal AuditLogRecord this[int index] + { + get + { + return AuditLogRecords[index]; + } + set + { + AuditLogRecords[index] = value; + } + } + + public bool IsNull + { + get; + internal set; + } + + public int Length + { + get + { + return AuditLogRecords.Count; + } + } + + #endregion + + #region Helper Methods + + private List AuditLogRecords + { + get + { + if (auditLogRecords == null) + { + auditLogRecords = new List(); + } + return auditLogRecords; + } + } + + public static AuditLogRecordArray Null + { + get + { + return (new AuditLogRecordArray() { IsNull = true }); + } + } + + public override string ToString() + { + return string.Join("|", AuditLogRecords.Select(parameter => parameter.ToString())); + } + + public AuditLogRecordArray AddAuditLogRecord(AuditLogRecord auditLogRecord) + { + AuditLogRecords.Add(auditLogRecord); + return this; + } + + public static AuditLogRecordArray Parse(SqlString stringToParse) + { + if (stringToParse.IsNull) + { + return Null; + } + + var parsedROCAuditLogRecords = new AuditLogRecordArray(); + parsedROCAuditLogRecords.auditLogRecords = new List(); + var parsedString = stringToParse.Value.Split("|".ToCharArray()); + + for (var i = 0; parsedString.Length > i; i++) + { + parsedROCAuditLogRecords.auditLogRecords.Add(AuditLogRecord.Parse(parsedString[i])); + } + + return parsedROCAuditLogRecords; + } + + public AuditLogRecord GetAuditLogRecord(SqlInt32 index) + { + return AuditLogRecords[index.Value]; + } + + public static AuditLogRecordArray Empty() + { + var auditLogRecordArray = new AuditLogRecordArray { auditLogRecords = new List() }; + return auditLogRecordArray; + } + + #endregion + + #region Serialization Methods + + public void Read(BinaryReader binaryReader) + { + AuditLogRecords.Clear(); + IsNull = binaryReader.ReadBoolean(); + + if (IsNull) + { + return; + } + else + { + var length = binaryReader.ReadInt32(); + + for (var i = 0; length > i; i++) + { + var auditLogRecord = new AuditLogRecord(); + auditLogRecord.Read(binaryReader); + AuditLogRecords.Add(auditLogRecord); + } + } + + } + + public void Write(BinaryWriter binaryWriter) + { + binaryWriter.Write(IsNull); + binaryWriter.Write(Length); + + if (Length > 0) + { + for (var i = 0; AuditLogRecords.Count > i; i++) + { + AuditLogRecords[i].Write(binaryWriter); + } + } + } + + #endregion + + } +} diff --git a/DeviceSQL.SQLTypes.ROC/DeviceSQL-Key.snk b/DeviceSQL.SQLTypes.ROC/DeviceSQL-Key.snk new file mode 100644 index 0000000..ca3f567 Binary files /dev/null and b/DeviceSQL.SQLTypes.ROC/DeviceSQL-Key.snk differ diff --git a/DeviceSQL.SQLTypes.ROC/DeviceSQL.SQLTypes.ROC.csproj b/DeviceSQL.SQLTypes.ROC/DeviceSQL.SQLTypes.ROC.csproj new file mode 100644 index 0000000..7462f17 --- /dev/null +++ b/DeviceSQL.SQLTypes.ROC/DeviceSQL.SQLTypes.ROC.csproj @@ -0,0 +1,180 @@ + + + + + Debug + AnyCPU + {256CA566-5436-4543-BC13-D2480BEE70C2} + Library + Properties + DeviceSQL.SQLTypes.ROC + DeviceSQL.SQLTypes.ROC + v4.8 + 512 + true + + + true + full + false + bin\Debug\ + TRACE;DEBUG;SQLTYPES + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + false + + + DeviceSQL-Key.snk + + + + + + + + + + + + + + Common\HexConverter.cs + + + Devices\Ac10Parameter.cs + + + Devices\Ac12Parameter.cs + + + Devices\Ac20Parameter.cs + + + Devices\Ac30Parameter.cs + + + Devices\Ac3Parameter.cs + + + Devices\Ac40Parameter.cs + + + Devices\Ac7Parameter.cs + + + Devices\AlarmRecord.cs + + + Devices\ArchiveInfo.cs + + + Devices\AuditLogRecord.cs + + + Devices\BinParameter.cs + + + Devices\DoubleParameter.cs + + + Devices\EventRecord.cs + + + Devices\FlpParameter.cs + + + Devices\FstCodeChunk.cs + + + Devices\FstHeaderInfo.cs + + + Devices\HistoryPointConfiguration.cs + + + Devices\HistoryRecord.cs + + + Devices\Int16Parameter.cs + + + Devices\Int32Parameter.cs + + + Devices\Int8Parameter.cs + + + Devices\IRocParameterData.cs + + + Devices\Parameter.cs + + + Devices\ParameterType.cs + + + Devices\RocPlusAlarmRecord.cs + + + Devices\RocPlusEventRecord.cs + + + Devices\RocPlusHistoryRecord.cs + + + Devices\TimeParameter.cs + + + Devices\Tlp.cs + + + Devices\TlpParameter.cs + + + Devices\UInt16Parameter.cs + + + Devices\UInt32Parameter.cs + + + Devices\UInt8Parameter.cs + + + Devices\ParameterDatabase.cs + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/DeviceSQL.SQLTypes.ROC/EventRecord.cs b/DeviceSQL.SQLTypes.ROC/EventRecord.cs new file mode 100644 index 0000000..3d12b6e --- /dev/null +++ b/DeviceSQL.SQLTypes.ROC/EventRecord.cs @@ -0,0 +1,370 @@ +#region Imported Types + +using DeviceSQL.SQLTypes.ROC.Data; + +using Microsoft.SqlServer.Server; +using System; +using System.Data.SqlTypes; +using System.IO; +using System.Linq; + +#endregion + +namespace DeviceSQL.SQLTypes.ROC +{ + [Serializable()] + [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = 27)] + public struct EventRecord : INullable, IBinarySerialize + { + + #region Fields + + private byte[] data; + + #endregion + + #region Properties + + public bool IsNull + { + get; + internal set; + } + + public static EventRecord Null + { + get + { + return new EventRecord() { IsNull = true }; + } + } + + public byte[] Data + { + get + { + if (data == null) + { + data = new byte[22]; + } + return data; + } + + internal set + { + data = value; + } + } + + public SqlDateTime DateTimeStamp + { + get + { + var dateTimeStamp = new Data.EventRecord(Convert.ToUInt16(Index), Data).DateTimeStamp; + return dateTimeStamp.HasValue ? dateTimeStamp.Value : SqlDateTime.Null; + } + } + + public int Index + { + get; + internal set; + } + + public SqlByte FstNumber + { + get + { + var fstNumber = new Data.EventRecord(Convert.ToUInt16(Index), Data).FstNumber; + return fstNumber.HasValue ? fstNumber.Value : SqlByte.Null; + } + } + + public SqlByte PointType + { + get + { + var pointType = new Data.EventRecord(Convert.ToUInt16(Index), Data).PointType; + return pointType.HasValue ? pointType.Value : SqlByte.Null; + } + } + + public SqlByte LogicalNumber + { + get + { + var logicalNumber = new Data.EventRecord(Convert.ToUInt16(Index), Data).LogicalNumber; + return logicalNumber.HasValue ? logicalNumber.Value : SqlByte.Null; + } + } + + public SqlByte ParameterNumber + { + get + { + var parameterNumber = new Data.EventRecord(Convert.ToUInt16(Index), Data).ParameterNumber; + return parameterNumber.HasValue ? parameterNumber.Value : SqlByte.Null; + } + } + + public SqlInt32 Tag + { + get + { + var tag = new Data.EventRecord(Convert.ToUInt16(Index), Data).Tag; + return tag.HasValue ? tag.Value : SqlInt32.Null; + } + } + + public SqlDateTime PowerRemovedDateTime + { + get + { + var powerRemovedDateTime = new Data.EventRecord(Convert.ToUInt16(Index), Data).PowerRemovedDateTime; + return powerRemovedDateTime.HasValue ? powerRemovedDateTime.Value : SqlDateTime.Null; + } + } + + public SqlString CalibrationPointType + { + get + { + var calibrationPointType = new Data.EventRecord(Convert.ToUInt16(Index), Data).CalibrationPointType; + return calibrationPointType.HasValue ? calibrationPointType.Value.ToString() : SqlString.Null; + } + + } + + public SqlString CalibrationMultivariableSensorInput + { + get + { + var calibrationMultivariableSensorInput = new Data.EventRecord(Convert.ToUInt16(Index), Data).CalibrationMultivariableSensorInput; + return calibrationMultivariableSensorInput.HasValue ? calibrationMultivariableSensorInput.Value.ToString() : SqlString.Null; + } + } + + public SqlString CalibrationType + { + get + { + var calibrationType = new Data.EventRecord(Convert.ToUInt16(Index), Data).CalibrationType; + return calibrationType.HasValue ? calibrationType.Value.ToString() : SqlString.Null; + } + } + + public SqlString EventCode + { + get + { + return new Data.EventRecord(Convert.ToUInt16(Index), Data).EventCode.ToString(); + } + } + + public SqlString OperatorId + { + get + { + return new Data.EventRecord(Convert.ToUInt16(Index), Data).OperatorId; + } + } + + public SqlString EventText + { + get + { + return new Data.EventRecord(Convert.ToUInt16(Index), Data).EventText; + } + } + + public SqlBinary OldValue + { + get + { + return new Data.EventRecord(Convert.ToUInt16(Index), Data).OldValue; + } + } + + public SqlSingle FstFloatValue + { + get + { + var fstFloatValue = new Data.EventRecord(Convert.ToUInt16(Index), Data).FstFloatValue; + return fstFloatValue.HasValue ? fstFloatValue.Value : SqlSingle.Null; + } + } + + public SqlBinary NewValue + { + get + { + return new Data.EventRecord(Convert.ToUInt16(Index), Data).NewValue; + } + } + + public Parameter OldParameterValue + { + get + { + if (!PointType.IsNull && !ParameterNumber.IsNull) + { + var pointType = PointType.Value; + var parameterNumber = ParameterNumber.Value; + var parameterDefinition = ParameterDatabase.ParameterDefinitions.Where(pd => pd.PointType == pointType && pd.Parameter == parameterNumber).FirstOrDefault(); + switch (parameterDefinition.DataType) + { + case "AC": + switch (parameterDefinition.Length) + { + case 3: + return new Parameter() { RawType = ParameterType.AC3, RawValue = OldValue.Value.Take(3).ToArray() }; + default: + return Parameter.Null; + } + case "BIN": + return new Parameter() { RawType = ParameterType.BIN, RawValue = OldValue.Value.Take(1).ToArray() }; + case "FL": + return new Parameter() { RawType = ParameterType.FL, RawValue = OldValue.Value }; + case "INT16": + return new Parameter() { RawType = ParameterType.INT16, RawValue = OldValue.Value.Take(2).ToArray() }; + case "INT32": + return new Parameter() { RawType = ParameterType.INT32, RawValue = OldValue.Value }; + case "INT8": + return new Parameter() { RawType = ParameterType.INT8, RawValue = OldValue.Value.Take(1).ToArray() }; + case "TLP": + return new Parameter() { RawType = ParameterType.TLP, RawValue = OldValue.Value.Take(3).ToArray() }; + case "UINT16": + return new Parameter() { RawType = ParameterType.UINT16, RawValue = OldValue.Value.Take(2).ToArray() }; + case "UINT32": + return new Parameter() { RawType = ParameterType.UINT32, RawValue = OldValue.Value }; + case "TIME": + return new Parameter() { RawType = ParameterType.TIME, RawValue = OldValue.Value }; + case "UINT8": + return new Parameter() { RawType = ParameterType.UINT8, RawValue = OldValue.Value.Take(1).ToArray() }; + default: + return Parameter.Null; + } + + } + else + { + return Parameter.Null; + } + } + } + + public Parameter NewParameterValue + { + get + { + if (!PointType.IsNull && !ParameterNumber.IsNull) + { + var pointType = PointType.Value; + var parameterNumber = ParameterNumber.Value; + var parameterDefinition = ParameterDatabase.ParameterDefinitions.Where(pd => pd.PointType == pointType && pd.Parameter == parameterNumber).FirstOrDefault(); + switch (parameterDefinition.DataType) + { + case "AC": + switch (parameterDefinition.Length) + { + case 3: + return new Parameter() { RawType = ParameterType.AC3, RawValue = NewValue.Value.Take(3).ToArray() }; + case 7: + return new Parameter() { RawType = ParameterType.AC7, RawValue = NewValue.Value.Union(new byte[3]).ToArray() }; + case 10: + return new Parameter() { RawType = ParameterType.AC10, RawValue = OldValue.Value.Union(NewValue.Value).Union(BitConverter.GetBytes(Convert.ToUInt16(Tag.Value))).ToArray() }; + case 12: + return new Parameter() { RawType = ParameterType.AC12, RawValue = OldValue.Value.Union(NewValue.Value).Union(BitConverter.GetBytes(Convert.ToUInt16(Tag.Value))).Union(new byte[2]).ToArray() }; + case 20: + return new Parameter() { RawType = ParameterType.AC20, RawValue = OldValue.Value.Union(NewValue.Value).Union(BitConverter.GetBytes(Convert.ToUInt16(Tag.Value))).Union(new byte[10]).ToArray() }; + case 30: + return new Parameter() { RawType = ParameterType.AC30, RawValue = OldValue.Value.Union(NewValue.Value).Union(BitConverter.GetBytes(Convert.ToUInt16(Tag.Value))).Union(new byte[20]).ToArray() }; + case 40: + return new Parameter() { RawType = ParameterType.AC40, RawValue = OldValue.Value.Union(NewValue.Value).Union(BitConverter.GetBytes(Convert.ToUInt16(Tag.Value))).Union(new byte[30]).ToArray() }; + default: + return Parameter.Null; + } + case "BIN": + return new Parameter() { RawType = ParameterType.BIN, RawValue = NewValue.Value.Take(1).ToArray() }; + case "FL": + return new Parameter() { RawType = ParameterType.FL, RawValue = NewValue.Value }; + case "INT16": + return new Parameter() { RawType = ParameterType.INT16, RawValue = NewValue.Value.Take(2).ToArray() }; + case "INT32": + return new Parameter() { RawType = ParameterType.INT32, RawValue = NewValue.Value }; + case "INT8": + return new Parameter() { RawType = ParameterType.INT8, RawValue = NewValue.Value.Take(1).ToArray() }; + case "TLP": + return new Parameter() { RawType = ParameterType.TLP, RawValue = NewValue.Value.Take(3).ToArray() }; + case "UINT16": + return new Parameter() { RawType = ParameterType.UINT16, RawValue = NewValue.Value.Take(2).ToArray() }; + case "UINT32": + return new Parameter() { RawType = ParameterType.UINT32, RawValue = NewValue.Value }; + case "TIME": + return new Parameter() { RawType = ParameterType.TIME, RawValue = NewValue.Value }; + case "UINT8": + return new Parameter() { RawType = ParameterType.UINT8, RawValue = NewValue.Value.Take(1).ToArray() }; + default: + return Parameter.Null; + } + + } + else + { + return Parameter.Null; + } + } + } + + #endregion + + #region Helper Methods + + public static EventRecord Parse(SqlString stringToParse) + { + var parsedEventRecord = stringToParse.Value.Split(",".ToCharArray()); + var base64Bytes = Convert.FromBase64String(parsedEventRecord[1]); + if (base64Bytes.Length == 22) + { + return new EventRecord() { Index = ushort.Parse(parsedEventRecord[0]), Data = base64Bytes }; + } + else + { + throw new ArgumentException("Input must be exactly 22 bytes"); + } + } + + public override string ToString() + { + return string.Format("{0},{1}", Index, Convert.ToBase64String(Data)); + } + + #endregion + + #region Serialization Methods + + public void Read(BinaryReader binaryReader) + { + IsNull = binaryReader.ReadBoolean(); + Index = binaryReader.ReadInt32(); + if (!IsNull) + { + Data = binaryReader.ReadBytes(22); + } + } + + public void Write(BinaryWriter binaryWriter) + { + binaryWriter.Write(IsNull); + binaryWriter.Write(Index); + if (!IsNull) + { + binaryWriter.Write(Data, 0, 22); + } + } + + #endregion + + } + +} diff --git a/DeviceSQL.SQLTypes.ROC/EventRecordArray.cs b/DeviceSQL.SQLTypes.ROC/EventRecordArray.cs new file mode 100644 index 0000000..fce59aa --- /dev/null +++ b/DeviceSQL.SQLTypes.ROC/EventRecordArray.cs @@ -0,0 +1,162 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System; +using System.Collections.Generic; +using System.Data.SqlTypes; +using System.IO; +using System.Linq; + +#endregion + +namespace DeviceSQL.SQLTypes.ROC +{ + [Serializable()] + [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = -1)] + public struct EventRecordArray : INullable, IBinarySerialize + { + + #region Fields + + internal List eventRecords; + + #endregion + + #region Properties + + internal EventRecord this[int index] + { + get + { + return EventRecords[index]; + } + set + { + EventRecords[index] = value; + } + } + + public bool IsNull + { + get; + internal set; + } + + public int Length + { + get + { + return EventRecords.Count; + } + } + + #endregion + + #region Helper Methods + + private List EventRecords + { + get + { + if (eventRecords == null) + { + eventRecords = new List(); + } + return eventRecords; + } + } + + public static EventRecordArray Null + { + get + { + return (new EventRecordArray() { IsNull = true }); + } + } + + public override string ToString() + { + return string.Join("|", EventRecords.Select(parameter => parameter.ToString())); + } + + public EventRecordArray AddEventRecord(EventRecord eventRecord) + { + EventRecords.Add(eventRecord); + return this; + } + + public static EventRecordArray Parse(SqlString stringToParse) + { + if (stringToParse.IsNull) + { + return Null; + } + + var parsedROCEventRecords = new EventRecordArray(); + parsedROCEventRecords.eventRecords = new List(); + var parsedString = stringToParse.Value.Split("|".ToCharArray()); + + for (var i = 0; parsedString.Length > i; i++) + { + parsedROCEventRecords.eventRecords.Add(EventRecord.Parse(parsedString[i])); + } + + return parsedROCEventRecords; + } + + public EventRecord GetEventRecord(SqlInt32 index) + { + return EventRecords[index.Value]; + } + + public static EventRecordArray Empty() + { + var eventRecordArray = new EventRecordArray { eventRecords = new List() }; + return eventRecordArray; + } + + #endregion + + #region Serialization Methods + + public void Read(BinaryReader binaryReader) + { + EventRecords.Clear(); + IsNull = binaryReader.ReadBoolean(); + + if (IsNull) + { + return; + } + else + { + var length = binaryReader.ReadInt32(); + + for (var i = 0; length > i; i++) + { + var eventRecord = new EventRecord(); + eventRecord.Read(binaryReader); + EventRecords.Add(eventRecord); + } + } + + } + + public void Write(BinaryWriter binaryWriter) + { + binaryWriter.Write(IsNull); + binaryWriter.Write(Length); + + if (Length > 0) + { + for (var i = 0; EventRecords.Count > i; i++) + { + EventRecords[i].Write(binaryWriter); + } + } + } + + #endregion + + } +} diff --git a/DeviceSQL.SQLTypes.ROC/FSTInformation.cs b/DeviceSQL.SQLTypes.ROC/FSTInformation.cs new file mode 100644 index 0000000..28ed7bf --- /dev/null +++ b/DeviceSQL.SQLTypes.ROC/FSTInformation.cs @@ -0,0 +1,163 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System; +using System.Data.SqlTypes; +using System.IO; + +#endregion + +namespace DeviceSQL.SQLTypes.ROC +{ + [Serializable()] + [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = -1)] + public struct FSTInformation : INullable, IBinarySerialize + { + + #region Fields + + private byte fstNumber; + private string version; + private string description; + private byte[] fstCode; + + #endregion + + #region Properties + + public bool IsNull + { + get; + internal set; + } + + public static FSTInformation Null + { + get + { + return new FSTInformation() { IsNull = true }; + } + } + + public byte FSTNumber + { + get + { + return fstNumber; + } + set + { + fstNumber = value; + } + } + + public string Version + { + get + { + return version; + } + set + { + version = value; + } + } + + public string Description + { + get + { + return description; + } + set + { + description = value; + } + } + + public byte[] FSTCode + { + get + { + if (fstCode == null) + { + fstCode = new byte[0]; + } + return fstCode; + } + set + { + fstCode = value; + } + } + + public int Length + { + get + { + return fstCode.Length; + } + } + + public string SHA256Hash + { + get + { + return IO.Channels.HexConverter.ToHexString(System.Security.Cryptography.SHA256.Create().ComputeHash(fstCode)); + } + } + + #endregion + + #region Helper Methods + + public static FSTInformation Parse(SqlString stringToParse) + { + var parsedString = stringToParse.Value.Split(",".ToCharArray()); + var fstNumber = byte.Parse(parsedString[0]); + var version = parsedString[1]; + var description = parsedString[2]; + var fstCode = Convert.FromBase64String(parsedString[3]); + return new FSTInformation() { fstNumber = fstNumber, version = version, description = description, fstCode = fstCode }; + } + + public override string ToString() + { + return string.Format("{0},{1},{2},{3}", FSTNumber, Version, Description, Convert.ToBase64String(FSTCode)); + } + + + #endregion + + #region Serialization Methods + + public void Read(BinaryReader binaryReader) + { + IsNull = binaryReader.ReadBoolean(); + if (!IsNull) + { + fstNumber = binaryReader.ReadByte(); + version = binaryReader.ReadString(); + description = binaryReader.ReadString(); + var fstCodeLength = binaryReader.ReadUInt16(); + fstCode = binaryReader.ReadBytes(fstCodeLength); + } + } + + public void Write(BinaryWriter binaryWriter) + { + binaryWriter.Write(IsNull); + if (!IsNull) + { + binaryWriter.Write(fstNumber); + binaryWriter.Write(version); + binaryWriter.Write(description); + binaryWriter.Write(Convert.ToUInt16(fstCode.Length)); + binaryWriter.Write(fstCode); + } + } + + #endregion + + } +} diff --git a/DeviceSQL.SQLTypes.ROC/HistoryRecord.cs b/DeviceSQL.SQLTypes.ROC/HistoryRecord.cs new file mode 100644 index 0000000..d5a70ef --- /dev/null +++ b/DeviceSQL.SQLTypes.ROC/HistoryRecord.cs @@ -0,0 +1,145 @@ +#region Imported Types + +using DeviceSQL.SQLTypes.ROC.Data; +using Microsoft.SqlServer.Server; +using System; +using System.Data.SqlTypes; +using System.IO; + +#endregion + +namespace DeviceSQL.SQLTypes.ROC +{ + [Serializable()] + [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = 11)] + public struct HistoryRecord : INullable, IBinarySerialize + { + + #region Fields + + public byte[] value; + + #endregion + + #region Properties + + public bool IsNull + { + get; + internal set; + } + + public static HistoryRecord Null + { + get + { + return new HistoryRecord() { IsNull = true }; + } + } + + public byte HistorySegment + { + get; + internal set; + } + + public byte HistoryPointNumber + { + get; + internal set; + } + + public int Index + { + get; + internal set; + } + + public byte[] Value + { + get + { + if (value == null) + { + value = new byte[4]; + } + return value; + } + internal set + { + this.value = value; + } + } + + #endregion + + #region Helper Methods + + public static HistoryRecord Parse(SqlString stringToParse) + { + var parsedHistoryRecord = stringToParse.Value.Split(",".ToCharArray()); + var base64Bytes = Convert.FromBase64String(parsedHistoryRecord[3]); + if (base64Bytes.Length == 4) + { + return new HistoryRecord() { Index = ushort.Parse(parsedHistoryRecord[0]), HistorySegment = byte.Parse(parsedHistoryRecord[1]), HistoryPointNumber = byte.Parse(parsedHistoryRecord[2]), value = base64Bytes }; + } + else + { + throw new ArgumentException("Input must be exactly 4 bytes"); + } + } + + public override string ToString() + { + return string.Format("{0},{1},{2},{3}", Index, HistorySegment, HistoryPointNumber, Convert.ToBase64String(Value)); + } + + public SqlDateTime ToDateTimeStamp(DateTime deviceDateTime) + { + var dateTimeStamp = new Data.HistoryRecord() { HistoryPointNumber = this.HistoryPointNumber, HistorySegment = this.HistorySegment, Index = this.Index, Value = this.Value }.ToDateTimeStamp(deviceDateTime); + return dateTimeStamp.HasValue ? dateTimeStamp.Value : SqlDateTime.Null; + } + + public DateTime ToExtendedTimeStamp() + { + return new HistoryRecord() { HistoryPointNumber = this.HistoryPointNumber, HistorySegment = this.HistorySegment, Index = this.Index, Value = this.Value }.ToExtendedTimeStamp(); + } + + public SqlSingle ToFloat() + { + var floatValue = new Data.HistoryRecord() { HistoryPointNumber = this.HistoryPointNumber, HistorySegment = this.HistorySegment, Index = this.Index, Value = this.Value }.ToNullableFloat(); + return floatValue.HasValue ? floatValue.Value : SqlSingle.Null; + } + + #endregion + + #region Serialization Methods + + public void Read(BinaryReader binaryReader) + { + IsNull = binaryReader.ReadBoolean(); + if (!IsNull) + { + Index = binaryReader.ReadInt32(); + HistorySegment = binaryReader.ReadByte(); + HistoryPointNumber = binaryReader.ReadByte(); + Value = binaryReader.ReadBytes(4); + } + } + + public void Write(BinaryWriter binaryWriter) + { + binaryWriter.Write(IsNull); + binaryWriter.Write(Index); + binaryWriter.Write(HistorySegment); + binaryWriter.Write(HistoryPointNumber); + if (!IsNull) + { + binaryWriter.Write(Value, 0, 4); + } + } + + #endregion + + } +} diff --git a/DeviceSQL.SQLTypes.ROC/HistoryRecordArray.cs b/DeviceSQL.SQLTypes.ROC/HistoryRecordArray.cs new file mode 100644 index 0000000..958a0fe --- /dev/null +++ b/DeviceSQL.SQLTypes.ROC/HistoryRecordArray.cs @@ -0,0 +1,162 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System; +using System.Collections.Generic; +using System.Data.SqlTypes; +using System.IO; +using System.Linq; + +#endregion + +namespace DeviceSQL.SQLTypes.ROC +{ + [Serializable()] + [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = -1)] + public struct HistoryRecordArray : INullable, IBinarySerialize + { + + #region Fields + + internal List historyRecords; + + #endregion + + #region Properties + + internal HistoryRecord this[int index] + { + get + { + return HistoryRecords[index]; + } + set + { + HistoryRecords[index] = value; + } + } + + public bool IsNull + { + get; + internal set; + } + + public int Length + { + get + { + return HistoryRecords.Count; + } + } + + #endregion + + #region Helper Methods + + private List HistoryRecords + { + get + { + if (historyRecords == null) + { + historyRecords = new List(); + } + return historyRecords; + } + } + + public static HistoryRecordArray Null + { + get + { + return (new HistoryRecordArray() { IsNull = true }); + } + } + + public override string ToString() + { + return string.Join("|", HistoryRecords.Select(parameter => parameter.ToString())); + } + + public HistoryRecordArray AddHistoryRecord(HistoryRecord historyRecord) + { + HistoryRecords.Add(historyRecord); + return this; + } + + public static HistoryRecordArray Parse(SqlString stringToParse) + { + if (stringToParse.IsNull) + { + return Null; + } + + var parsedROCHistoryRecords = new HistoryRecordArray(); + parsedROCHistoryRecords.historyRecords = new List(); + var parsedString = stringToParse.Value.Split("|".ToCharArray()); + + for (var i = 0; parsedString.Length > i; i++) + { + parsedROCHistoryRecords.historyRecords.Add(HistoryRecord.Parse(parsedString[i])); + } + + return parsedROCHistoryRecords; + } + + public HistoryRecord GetHistoryRecord(SqlInt32 index) + { + return HistoryRecords[index.Value]; + } + + public static HistoryRecordArray Empty() + { + var historyRecord = new HistoryRecordArray { historyRecords = new List() }; + return historyRecord; + } + + #endregion + + #region Serialization Methods + + public void Read(BinaryReader binaryReader) + { + HistoryRecords.Clear(); + IsNull = binaryReader.ReadBoolean(); + + if (IsNull) + { + return; + } + else + { + var length = binaryReader.ReadInt32(); + + for (var i = 0; length > i; i++) + { + var historyRecord = new HistoryRecord(); + historyRecord.Read(binaryReader); + HistoryRecords.Add(historyRecord); + } + } + + } + + public void Write(BinaryWriter binaryWriter) + { + binaryWriter.Write(IsNull); + binaryWriter.Write(Length); + + if (Length > 0) + { + for (var i = 0; HistoryRecords.Count > i; i++) + { + HistoryRecords[i].Write(binaryWriter); + } + } + } + + #endregion + + } +} diff --git a/DeviceSQL.SQLTypes.ROC/Parameter.cs b/DeviceSQL.SQLTypes.ROC/Parameter.cs new file mode 100644 index 0000000..d4c1492 --- /dev/null +++ b/DeviceSQL.SQLTypes.ROC/Parameter.cs @@ -0,0 +1,464 @@ +#region Imported Types + +using DeviceSQL.SQLTypes.ROC.Data; + +using Microsoft.SqlServer.Server; +using System; +using System.Data.SqlTypes; +using System.IO; + +#endregion + +namespace DeviceSQL.SQLTypes.ROC +{ + + [Serializable()] + [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = 61)] + public struct Parameter : INullable, IBinarySerialize + { + + #region Fields + + private byte parameterType; + private byte[] rawValue; + + #endregion + + #region Properties + + public bool IsNull + { + get; + private set; + } + + public static Parameter Null + { + get + { + return (new Parameter() { IsNull = true }); + } + } + + public byte PointType + { + get; set; + } + + public byte LogicalNumber + { + get; set; + } + + public byte ParameterNumber + { + get; set; + } + + public string Type + { + get + { + return RawType.ToString(); + } + } + + internal ParameterType RawType + { + get + { + return (ParameterType)parameterType; + } + set + { + parameterType = (byte)value; + } + } + + internal byte[] RawValue + { + get + { + if (rawValue == null) + { + switch ((ParameterType)parameterType) + { + case ParameterType.AC3: + rawValue = new byte[3]; + break; + case ParameterType.AC7: + rawValue = new byte[3]; + break; + case ParameterType.AC10: + rawValue = new byte[10]; + break; + case ParameterType.AC12: + rawValue = new byte[12]; + break; + case ParameterType.AC20: + rawValue = new byte[20]; + break; + case ParameterType.AC30: + rawValue = new byte[30]; + break; + case ParameterType.AC40: + rawValue = new byte[40]; + break; + case ParameterType.BIN: + rawValue = new byte[1]; + break; + case ParameterType.FL: + rawValue = new byte[4]; + break; + case ParameterType.DOUBLE: + rawValue = new byte[8]; + break; + case ParameterType.INT16: + rawValue = new byte[2]; + break; + case ParameterType.INT32: + rawValue = new byte[4]; + break; + case ParameterType.INT8: + rawValue = new byte[1]; + break; + case ParameterType.TLP: + rawValue = new byte[3]; + break; + case ParameterType.UINT16: + rawValue = new byte[2]; + break; + case ParameterType.UINT32: + rawValue = new byte[4]; + break; + case ParameterType.TIME: + rawValue = new byte[4]; + break; + case ParameterType.UINT8: + rawValue = new byte[10]; + break; + } + } + + return rawValue; + } + set + { + rawValue = value; + } + } + + #endregion + + #region Helper Methods + + public override string ToString() + { + if (this.IsNull) + { + return "NULL"; + } + else + { + switch ((ParameterType)parameterType) + { + case ParameterType.AC3: + return (new Ac3Parameter() { Data = RawValue }).Value; + case ParameterType.AC7: + return (new Ac7Parameter() { Data = RawValue }).Value; + case ParameterType.AC10: + return (new Ac10Parameter() { Data = RawValue }).Value; + case ParameterType.AC12: + return (new Ac12Parameter() { Data = RawValue }).Value; + case ParameterType.AC20: + return (new Ac20Parameter() { Data = RawValue }).Value; + case ParameterType.AC30: + return (new Ac30Parameter() { Data = RawValue }).Value; + case ParameterType.AC40: + return (new Ac40Parameter() { Data = RawValue }).Value; + case ParameterType.BIN: + return (new BinParameter() { Data = RawValue }).Value.ToString(); + case ParameterType.FL: + return (new FlpParameter() { Data = RawValue }).Value.ToString(); + case ParameterType.DOUBLE: + return (new DoubleParameter() { Data = RawValue }).Value.ToString(); + case ParameterType.INT16: + return (new Int16Parameter() { Data = RawValue }).Value.ToString(); + case ParameterType.INT32: + return (new Int32Parameter() { Data = RawValue }).Value.ToString(); + case ParameterType.INT8: + return (new Int8Parameter() { Data = RawValue }).Value.ToString(); + case ParameterType.TLP: + { + var tlpParameter = new TlpParameter() { Data = RawValue }; + return string.Format("{0}.{1}.{2}", tlpParameter.Value.PointType.ToString(), tlpParameter.Value.LogicalNumber.ToString(), tlpParameter.Value.Parameter.ToString()); + } + case ParameterType.UINT16: + return (new UInt16Parameter() { Data = RawValue }).Value.ToString(); + case ParameterType.UINT32: + return (new Int32Parameter() { Data = RawValue }).Value.ToString(); + case ParameterType.TIME: + return (new TimeParameter() { Data = RawValue }).Value.ToString(); + case ParameterType.UINT8: + return (new UInt8Parameter() { Data = RawValue }).Value.ToString(); + default: + return "NULL"; + } + } + } + + public SqlByte ToBin() + { + return (new BinParameter() { Data = RawValue }).Value; + } + + public SqlByte ToUInt8() + { + return (new UInt8Parameter() { Data = RawValue }).Value; + } + + public SqlInt16 ToInt8() + { + return (new Int8Parameter() { Data = RawValue }).Value; + } + + public SqlInt16 ToInt16() + { + return (new Int16Parameter() { Data = RawValue }).Value; + } + public SqlInt32 ToUInt16() + { + return (new UInt16Parameter() { Data = RawValue }).Value; + } + + public SqlInt32 ToInt32() + { + return (new Int32Parameter() { Data = RawValue }).Value; + } + + public SqlInt64 ToUInt32() + { + return (new UInt32Parameter() { Data = RawValue }).Value; + } + + public SqlDateTime ToTime() + { + return (new TimeParameter() { Data = RawValue }).Value; + } + + public SqlSingle ToFl() + { + var flpValue = new FlpParameter() { Data = RawValue }.NullableValue; + return flpValue.HasValue ? flpValue.Value : SqlSingle.Null; + } + + public SqlDouble ToDouble() + { + var doubleValue = new DoubleParameter() { Data = RawValue }.NullableValue; + return doubleValue.HasValue ? doubleValue.Value : SqlDouble.Null; + } + + public static Parameter Parse(SqlString stringToParse) + { + if (stringToParse.IsNull) + { + return Null; + } + + var parsedROCPointData = stringToParse.Value.Split(",".ToCharArray()); + var parsedROCParameter = new Parameter() { PointType = byte.Parse(parsedROCPointData[0]), LogicalNumber = byte.Parse(parsedROCPointData[1]), ParameterNumber = byte.Parse(parsedROCPointData[2]) }; + + parsedROCParameter.parameterType = (byte)((ParameterType)Enum.Parse(typeof(ParameterType), parsedROCPointData[3])); + + switch (parsedROCPointData[3]) + { + case "AC3": + parsedROCParameter.rawValue = (new Ac3Parameter() { Value = parsedROCPointData[4] }).Data; + break; + case "AC7": + parsedROCParameter.rawValue = (new Ac7Parameter() { Value = parsedROCPointData[4] }).Data; + break; + case "AC10": + parsedROCParameter.rawValue = (new Ac10Parameter() { Value = parsedROCPointData[4] }).Data; + break; + case "AC12": + parsedROCParameter.rawValue = (new Ac12Parameter() { Value = parsedROCPointData[4] }).Data; + break; + case "AC20": + parsedROCParameter.rawValue = (new Ac20Parameter() { Value = parsedROCPointData[4] }).Data; + break; + case "AC30": + parsedROCParameter.rawValue = (new Ac30Parameter() { Value = parsedROCPointData[4] }).Data; + break; + case "AC40": + parsedROCParameter.rawValue = (new Ac40Parameter() { Value = parsedROCPointData[4] }).Data; + break; + case "BIN": + parsedROCParameter.rawValue = (new BinParameter() { Value = byte.Parse(parsedROCPointData[4]) }).Data; + break; + case "FL": + parsedROCParameter.rawValue = (new FlpParameter() { Value = float.Parse(parsedROCPointData[4]) }).Data; + break; + case "DOUBLE": + parsedROCParameter.rawValue = (new DoubleParameter() { Value = double.Parse(parsedROCPointData[8]) }).Data; + break; + case "INT16": + parsedROCParameter.rawValue = (new Int16Parameter() { Value = short.Parse(parsedROCPointData[4]) }).Data; + break; + case "INT32": + parsedROCParameter.rawValue = (new Int32Parameter() { Value = int.Parse(parsedROCPointData[4]) }).Data; + break; + case "Int8": + parsedROCParameter.rawValue = (new Int8Parameter() { Value = SByte.Parse(parsedROCPointData[4]) }).Data; + break; + case "TLP": + { + var parsedTlp = parsedROCPointData[4].Split(".".ToCharArray()); + parsedROCParameter.rawValue = (new TlpParameter() { Value = new Tlp(byte.Parse(parsedTlp[0]), byte.Parse(parsedTlp[1]), byte.Parse(parsedTlp[2])) }).Data; + } + break; + case "UINT16": + parsedROCParameter.rawValue = (new UInt16Parameter() { Value = ushort.Parse(parsedROCPointData[4]) }).Data; + break; + case "UINT32": + parsedROCParameter.rawValue = (new UInt32Parameter() { Value = uint.Parse(parsedROCPointData[4]) }).Data; + break; + case "TIME": + parsedROCParameter.rawValue = (new TimeParameter() { Value = (new DateTime(1970, 01, 01).AddSeconds(uint.Parse(parsedROCPointData[4]))) }).Data; + break; + case "UINT8": + parsedROCParameter.rawValue = (new UInt8Parameter() { Value = byte.Parse(parsedROCPointData[4]) }).Data; + break; + } + return parsedROCParameter; + } + + public static Parameter ParseTlp(byte pointType, byte logicalNumber, byte parameter, byte pointTypeValue, byte logicalNumberValue, byte parameterValue) + { + return new Parameter() { PointType = pointType, LogicalNumber = logicalNumber, ParameterNumber = parameter, parameterType = (byte)ParameterType.TLP, rawValue = (new TlpParameter() { Value = new Tlp(pointTypeValue, logicalNumberValue, parameterValue) }).Data }; + } + + public static Parameter ParseAc3(byte pointType, byte logicalNumber, byte parameter, string value) + { + return new Parameter() { PointType = pointType, LogicalNumber = logicalNumber, ParameterNumber = parameter, parameterType = (byte)ParameterType.AC3, rawValue = (new Ac3Parameter() { Value = value }).Data }; + } + + public static Parameter ParseAc7(byte pointType, byte logicalNumber, byte parameter, string value) + { + return new Parameter() { PointType = pointType, LogicalNumber = logicalNumber, ParameterNumber = parameter, parameterType = (byte)ParameterType.AC7, rawValue = (new Ac3Parameter() { Value = value }).Data }; + } + + public static Parameter ParseAc10(byte pointType, byte logicalNumber, byte parameter, string value) + { + return new Parameter() { PointType = pointType, LogicalNumber = logicalNumber, ParameterNumber = parameter, parameterType = (byte)ParameterType.AC10, rawValue = (new Ac10Parameter() { Value = value }).Data }; + } + + public static Parameter ParseAc12(byte pointType, byte logicalNumber, byte parameter, string value) + { + return new Parameter() { PointType = pointType, LogicalNumber = logicalNumber, ParameterNumber = parameter, parameterType = (byte)ParameterType.AC12, rawValue = (new Ac12Parameter() { Value = value }).Data }; + } + + public static Parameter ParseAc20(byte pointType, byte logicalNumber, byte parameter, string value) + { + return new Parameter() { PointType = pointType, LogicalNumber = logicalNumber, ParameterNumber = parameter, parameterType = (byte)ParameterType.AC20, rawValue = (new Ac20Parameter() { Value = value }).Data }; + } + + public static Parameter ParseAc30(byte pointType, byte logicalNumber, byte parameter, string value) + { + return new Parameter() { PointType = pointType, LogicalNumber = logicalNumber, ParameterNumber = parameter, parameterType = (byte)ParameterType.AC30, rawValue = (new Ac30Parameter() { Value = value }).Data }; + } + + public static Parameter ParseAc40(byte pointType, byte logicalNumber, byte parameter, string value) + { + return new Parameter() { PointType = pointType, LogicalNumber = logicalNumber, ParameterNumber = parameter, parameterType = (byte)ParameterType.AC40, rawValue = (new Ac40Parameter() { Value = value }).Data }; + } + + public static Parameter ParseBin(byte pointType, byte logicalNumber, byte parameter, byte value) + { + return new Parameter() { PointType = pointType, LogicalNumber = logicalNumber, ParameterNumber = parameter, parameterType = (byte)ParameterType.BIN, rawValue = (new BinParameter() { Value = value }).Data }; + } + + public static Parameter ParseInt8(byte pointType, byte logicalNumber, byte parameter, short value) + { + return new Parameter() { PointType = pointType, LogicalNumber = logicalNumber, ParameterNumber = parameter, parameterType = (byte)ParameterType.INT8, rawValue = (new Int8Parameter() { Value = Convert.ToSByte(value) }).Data }; + } + + public static Parameter ParseUInt8(byte pointType, byte logicalNumber, byte parameter, byte value) + { + return new Parameter() { PointType = pointType, LogicalNumber = logicalNumber, ParameterNumber = parameter, parameterType = (byte)ParameterType.UINT8, rawValue = (new UInt8Parameter() { Value = value }).Data }; + } + + public static Parameter ParseInt16(byte pointType, byte logicalNumber, byte parameter, short value) + { + return new Parameter() { PointType = pointType, LogicalNumber = logicalNumber, ParameterNumber = parameter, parameterType = (byte)ParameterType.INT16, rawValue = (new Int16Parameter() { Value = value }).Data }; + } + + public static Parameter ParseUInt16(byte pointType, byte logicalNumber, byte parameter, int value) + { + return new Parameter() { PointType = pointType, LogicalNumber = logicalNumber, ParameterNumber = parameter, parameterType = (byte)ParameterType.UINT16, rawValue = (new UInt16Parameter() { Value = Convert.ToUInt16(value) }).Data }; + } + + public static Parameter ParseInt32(byte pointType, byte logicalNumber, byte parameter, int value) + { + return new Parameter() { PointType = pointType, LogicalNumber = logicalNumber, ParameterNumber = parameter, parameterType = (byte)ParameterType.INT32, rawValue = (new Int32Parameter() { Value = value }).Data }; + } + + public static Parameter ParseUInt32(byte pointType, byte logicalNumber, byte parameter, long value) + { + return new Parameter() { PointType = pointType, LogicalNumber = logicalNumber, ParameterNumber = parameter, parameterType = (byte)ParameterType.UINT32, rawValue = (new UInt32Parameter() { Value = Convert.ToUInt32(value) }).Data }; + } + + public static Parameter ParseTime(byte pointType, byte logicalNumber, byte parameter, DateTime value) + { + return new Parameter() { PointType = pointType, LogicalNumber = logicalNumber, ParameterNumber = parameter, parameterType = (byte)ParameterType.TIME, rawValue = (new TimeParameter() { Value = value }).Data }; + } + + public static Parameter ParseFl(byte pointType, byte logicalNumber, byte parameter, float value) + { + return new Parameter() { PointType = pointType, LogicalNumber = logicalNumber, ParameterNumber = parameter, parameterType = (byte)ParameterType.FL, rawValue = (new FlpParameter() { Value = value }).Data }; + } + + public static Parameter ParseDouble(byte pointType, byte logicalNumber, byte parameter, double value) + { + return new Parameter() { PointType = pointType, LogicalNumber = logicalNumber, ParameterNumber = parameter, parameterType = (byte)ParameterType.DOUBLE, rawValue = (new DoubleParameter() { Value = value }).Data }; + } + + #endregion + + #region Serialization Methods + + public void Read(BinaryReader binaryReader) + { + IsNull = binaryReader.ReadBoolean(); + + if (!IsNull) + { + PointType = binaryReader.ReadByte(); + LogicalNumber = binaryReader.ReadByte(); + ParameterNumber = binaryReader.ReadByte(); + parameterType = binaryReader.ReadByte(); + rawValue = new byte[binaryReader.ReadInt32()]; + binaryReader.Read(rawValue, 0, rawValue.Length); + } + + } + + public void Write(BinaryWriter binaryWriter) + { + binaryWriter.Write(IsNull); + + if (!IsNull) + { + binaryWriter.Write(PointType); + binaryWriter.Write(LogicalNumber); + binaryWriter.Write(ParameterNumber); + binaryWriter.Write(parameterType); + binaryWriter.Write(RawValue.Length); + binaryWriter.Write(RawValue); + } + } + + #endregion + + } +} diff --git a/DeviceSQL.SQLTypes.ROC/ParameterArray.cs b/DeviceSQL.SQLTypes.ROC/ParameterArray.cs new file mode 100644 index 0000000..104eec0 --- /dev/null +++ b/DeviceSQL.SQLTypes.ROC/ParameterArray.cs @@ -0,0 +1,166 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System; +using System.Collections.Generic; +using System.Data.SqlTypes; +using System.IO; +using System.Linq; + +#endregion + +namespace DeviceSQL.SQLTypes.ROC +{ + + [Serializable()] + [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = -1)] + public struct ParameterArray : INullable, IBinarySerialize + { + + #region Fields + + private List parameters; + + #endregion + + #region Properties + + internal Parameter this[int index] + { + get + { + return Parameters[index]; + } + set + { + Parameters[index] = value; + } + } + + public bool IsNull + { + get; + internal set; + } + + public int Length + { + get + { + return Parameters.Count; + } + } + + #endregion + + #region Helper Methods + + private List Parameters + { + get + { + if (parameters == null) + { + parameters = new List(); + } + return parameters; + } + } + + public static ParameterArray Null + { + get + { + return (new ParameterArray() { IsNull = true }); + } + } + + public override string ToString() + { + return string.Join("|", Parameters.Select(parameter => parameter.ToString())); + } + + public ParameterArray AddParameter(Parameter parameter) + { + Parameters.Add(parameter); + return this; + } + + public static ParameterArray Parse(SqlString stringToParse) + { + if (stringToParse.IsNull) + { + return Null; + } + + var parsedROCParameterArray = new ParameterArray() + { + parameters = new List() + }; + + var parsedString = stringToParse.Value.Split("|".ToCharArray()); + + for (var i = 0; parsedString.Length > i; i++) + { + parsedROCParameterArray.Parameters.Add(Parameter.Parse(parsedString[i])); + } + + return parsedROCParameterArray; + } + + public Parameter GetParameter(SqlInt32 index) + { + return Parameters[index.Value]; + } + + public static ParameterArray Empty() + { + var rocParameterArray = new ParameterArray() { parameters = new List() }; + return rocParameterArray; + } + + #endregion + + #region Serialization Methods + + public void Read(BinaryReader binaryReader) + { + Parameters.Clear(); + IsNull = binaryReader.ReadBoolean(); + + if (IsNull) + { + return; + } + else + { + var length = binaryReader.ReadInt32(); + + for (var i = 0; length > i; i++) + { + var parameter = new Parameter(); + parameter.Read(binaryReader); + Parameters.Add(parameter); + } + } + + } + + public void Write(BinaryWriter binaryWriter) + { + binaryWriter.Write(IsNull); + binaryWriter.Write(Length); + + if (Length > 0) + { + for (var i = 0; Parameters.Count > i; i++) + { + Parameters[i].Write(binaryWriter); + } + } + } + + #endregion + + } +} diff --git a/DeviceSQL.SQLTypes.ROC/Properties/AssemblyInfo.cs b/DeviceSQL.SQLTypes.ROC/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..bbfd0f7 --- /dev/null +++ b/DeviceSQL.SQLTypes.ROC/Properties/AssemblyInfo.cs @@ -0,0 +1,37 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("DeviceSQL.SQLTypes.ROC")] +[assembly: AssemblyDescription("DeviceSQL.SQLTypes.ROC")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("CloudSonix")] +[assembly: AssemblyProduct("DeviceSQL")] +[assembly: AssemblyCopyright("© CloudSonix. All rights reserved.")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] +[assembly: AssemblyKeyFileAttribute("../DeviceSQL-Key.snk")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("256ca566-5436-4543-bc13-d2480bee70c2")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/DeviceSQL.SQLTypes.ROC/ROCPlusAlarmRecord.cs b/DeviceSQL.SQLTypes.ROC/ROCPlusAlarmRecord.cs new file mode 100644 index 0000000..7d252c8 --- /dev/null +++ b/DeviceSQL.SQLTypes.ROC/ROCPlusAlarmRecord.cs @@ -0,0 +1,250 @@ +#region Imported Types + +using DeviceSQL.SQLTypes.ROC.Data; + +using Microsoft.SqlServer.Server; +using System; +using System.Data.SqlTypes; +using System.IO; +using System.Linq; + +#endregion + +namespace DeviceSQL.SQLTypes.ROC +{ + [Serializable()] + [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = 28)] + public struct ROCPlusAlarmRecord : INullable, IBinarySerialize + { + + #region Fields + + private byte[] data; + + #endregion + + #region Properties + + public bool IsNull + { + get; + internal set; + } + + public static ROCPlusAlarmRecord Null + { + get + { + return new ROCPlusAlarmRecord() { IsNull = true }; + } + } + + public byte[] Data + { + get + { + if (data == null) + { + data = new byte[23]; + } + return data; + } + + internal set + { + data = value; + } + } + + public int Index + { + get; + internal set; + } + + public SqlDateTime DateTimeStamp + { + get + { + var dateTimeStamp = new Data.ROCPlusAlarmRecord(Convert.ToUInt16(Index), Data).DateTimeStamp; + return dateTimeStamp.HasValue ? dateTimeStamp.Value : SqlDateTime.Null; + } + } + + public SqlString AlarmSrbxState + { + get + { + return new Data.ROCPlusAlarmRecord(Convert.ToUInt16(Index), Data).AlarmSrbxState.ToString(); + } + } + + public SqlString AlarmCondition + { + get + { + return new Data.ROCPlusAlarmRecord(Convert.ToUInt16(Index), Data).AlarmCondition.ToString(); + } + } + + public SqlString AlarmType + { + get + { + return new Data.ROCPlusAlarmRecord(Convert.ToUInt16(Index), Data).AlarmType.ToString(); + } + } + + public SqlString AlarmCode + { + get + { + var alarmCode = new Data.ROCPlusAlarmRecord(Convert.ToUInt16(Index), Data).AlarmCode; + return alarmCode.HasValue ? alarmCode.Value.ToString() : SqlString.Null; + } + } + + public string AlarmDescription + { + get + { + return new Data.ROCPlusAlarmRecord(Convert.ToUInt16(Index), Data).AlarmDescription; + } + } + + internal Tlp Tlp + { + get + { + return new Data.ROCPlusAlarmRecord(Convert.ToUInt16(Index), Data).Tlp; + } + } + + public SqlByte PointType + { + get + { + return Tlp.PointType; + } + } + + public SqlByte LogicalNumber + { + get + { + return Tlp.LogicalNumber; + } + } + + public SqlByte ParameterNumber + { + get + { + return Tlp.Parameter; + } + } + + public Parameter ParameterValue + { + get + { + if (!PointType.IsNull && !ParameterNumber.IsNull) + { + var pointType = PointType.Value; + var parameterNumber = ParameterNumber.Value; + var parameterDefinition = ParameterDatabase.ParameterDefinitions.Where(pd => pd.PointType == pointType && pd.Parameter == parameterNumber).FirstOrDefault(); + var data = new Data.ROCPlusAlarmRecord(Convert.ToUInt16(Index), Data).data.Skip(19).Take(4).ToArray(); + switch (parameterDefinition.DataType) + { + case "BIN": + return new Parameter() { RawType = ParameterType.BIN, RawValue = data.Take(1).ToArray() }; + case "FL": + return new Parameter() { RawType = ParameterType.FL, RawValue = data }; + case "INT16": + return new Parameter() { RawType = ParameterType.INT16, RawValue = data.Take(2).ToArray() }; + case "INT32": + return new Parameter() { RawType = ParameterType.INT32, RawValue = data }; + case "INT8": + return new Parameter() { RawType = ParameterType.INT8, RawValue = data.Take(1).ToArray() }; + case "TLP": + return new Parameter() { RawType = ParameterType.TLP, RawValue = data.Take(3).ToArray() }; + case "UINT16": + return new Parameter() { RawType = ParameterType.UINT16, RawValue = data.Take(2).ToArray() }; + case "UINT32": + return new Parameter() { RawType = ParameterType.UINT32, RawValue = data }; + case "TIME": + return new Parameter() { RawType = ParameterType.TIME, RawValue = data }; + case "UINT8": + return new Parameter() { RawType = ParameterType.UINT8, RawValue = data.Take(1).ToArray() }; + default: + return Parameter.Null; + } + + } + else + { + return Parameter.Null; + } + } + } + + public SqlSingle Value + { + get + { + var value = new Data.ROCPlusAlarmRecord(Convert.ToUInt16(Index), Data).Value; + return value.HasValue ? value.Value : SqlSingle.Null; + } + } + + #endregion + + #region Helper Methods + + public static ROCPlusAlarmRecord Parse(SqlString stringToParse) + { + var parsedROCPlusAlarmRecord = stringToParse.Value.Split(",".ToCharArray()); + var base64Bytes = Convert.FromBase64String(parsedROCPlusAlarmRecord[1]); + if (base64Bytes.Length == 23) + { + return new ROCPlusAlarmRecord() { Index = ushort.Parse(parsedROCPlusAlarmRecord[0]), Data = base64Bytes }; + } + else + { + throw new ArgumentException("Input must be exactly 23 bytes"); + } + } + + public override string ToString() + { + return string.Format("{0},{1}", Index, Convert.ToBase64String(Data)); + } + + #endregion + + #region Serialization Methods + + public void Read(BinaryReader binaryReader) + { + IsNull = binaryReader.ReadBoolean(); + Index = binaryReader.ReadInt32(); + if (!IsNull) + { + Data = binaryReader.ReadBytes(23); + } + } + + public void Write(BinaryWriter binaryWriter) + { + binaryWriter.Write(IsNull); + binaryWriter.Write(Index); + if (!IsNull) + { + binaryWriter.Write(Data, 0, 23); + } + } + + #endregion + + } +} diff --git a/DeviceSQL.SQLTypes.ROC/ROCPlusAlarmRecordArray.cs b/DeviceSQL.SQLTypes.ROC/ROCPlusAlarmRecordArray.cs new file mode 100644 index 0000000..36f629c --- /dev/null +++ b/DeviceSQL.SQLTypes.ROC/ROCPlusAlarmRecordArray.cs @@ -0,0 +1,162 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System; +using System.Collections.Generic; +using System.Data.SqlTypes; +using System.IO; +using System.Linq; + +#endregion + +namespace DeviceSQL.SQLTypes.ROC +{ + [Serializable()] + [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = -1)] + public struct ROCPlusAlarmRecordArray : INullable, IBinarySerialize + { + + #region Fields + + internal List rocPlusAlarmRecords; + + #endregion + + #region Properties + + internal ROCPlusAlarmRecord this[int index] + { + get + { + return ROCPlusAlarmRecords[index]; + } + set + { + ROCPlusAlarmRecords[index] = value; + } + } + + public bool IsNull + { + get; + internal set; + } + + public int Length + { + get + { + return ROCPlusAlarmRecords.Count; + } + } + + #endregion + + #region Helper Methods + + private List ROCPlusAlarmRecords + { + get + { + if (rocPlusAlarmRecords == null) + { + rocPlusAlarmRecords = new List(); + } + return rocPlusAlarmRecords; + } + } + + public static ROCPlusAlarmRecordArray Null + { + get + { + return (new ROCPlusAlarmRecordArray() { IsNull = true }); + } + } + + public override string ToString() + { + return string.Join("|", ROCPlusAlarmRecords.Select(parameter => parameter.ToString())); + } + + public ROCPlusAlarmRecordArray AddROCPlusAlarmRecord(ROCPlusAlarmRecord rocPlusAlarmRecord) + { + ROCPlusAlarmRecords.Add(rocPlusAlarmRecord); + return this; + } + + public static ROCPlusAlarmRecordArray Parse(SqlString stringToParse) + { + if (stringToParse.IsNull) + { + return Null; + } + + var parsedROCPlusAlarmRecords = new ROCPlusAlarmRecordArray(); + parsedROCPlusAlarmRecords.rocPlusAlarmRecords = new List(); + var parsedString = stringToParse.Value.Split("|".ToCharArray()); + + for (var i = 0; parsedString.Length > i; i++) + { + parsedROCPlusAlarmRecords.rocPlusAlarmRecords.Add(ROCPlusAlarmRecord.Parse(parsedString[i])); + } + + return parsedROCPlusAlarmRecords; + } + + public ROCPlusAlarmRecord GetROCPlusAlarmRecord(SqlInt32 index) + { + return ROCPlusAlarmRecords[index.Value]; + } + + public static ROCPlusAlarmRecordArray Empty() + { + var rocPlusAlarmRecord = new ROCPlusAlarmRecordArray { rocPlusAlarmRecords = new List() }; + return rocPlusAlarmRecord; + } + + #endregion + + #region Serialization Methods + + public void Read(BinaryReader binaryReader) + { + ROCPlusAlarmRecords.Clear(); + IsNull = binaryReader.ReadBoolean(); + + if (IsNull) + { + return; + } + else + { + var length = binaryReader.ReadInt32(); + + for (var i = 0; length > i; i++) + { + var rocPLusAlarmRecord = new ROCPlusAlarmRecord(); + rocPLusAlarmRecord.Read(binaryReader); + ROCPlusAlarmRecords.Add(rocPLusAlarmRecord); + } + } + + } + + public void Write(BinaryWriter binaryWriter) + { + binaryWriter.Write(IsNull); + binaryWriter.Write(Length); + + if (Length > 0) + { + for (var i = 0; ROCPlusAlarmRecords.Count > i; i++) + { + ROCPlusAlarmRecords[i].Write(binaryWriter); + } + } + } + + #endregion + + } +} diff --git a/DeviceSQL.SQLTypes.ROC/ROCPlusEventRecord.cs b/DeviceSQL.SQLTypes.ROC/ROCPlusEventRecord.cs new file mode 100644 index 0000000..c21ced7 --- /dev/null +++ b/DeviceSQL.SQLTypes.ROC/ROCPlusEventRecord.cs @@ -0,0 +1,363 @@ +#region Imported Types + +using DeviceSQL.SQLTypes.ROC.Data; + +using Microsoft.SqlServer.Server; +using System; +using System.Data.SqlTypes; +using System.IO; +using System.Linq; + +#endregion + +namespace DeviceSQL.SQLTypes.ROC +{ + [Serializable()] + [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = 27)] + public struct ROCPlusEventRecord : INullable, IBinarySerialize + { + + #region Fields + + private byte[] data; + + #endregion + + #region Properties + + public bool IsNull + { + get; + internal set; + } + + public static ROCPlusEventRecord Null + { + get + { + return new ROCPlusEventRecord() { IsNull = true }; + } + } + + public byte[] Data + { + get + { + if (data == null) + { + data = new byte[22]; + } + return data; + } + + internal set + { + data = value; + } + } + + public int Index + { + get; + internal set; + } + + public SqlDateTime DateTimeStamp + { + get + { + var dateTimeStamp = new Data.ROCPlusEventRecord(Convert.ToUInt16(Index), Data).DateTimeStamp; + return dateTimeStamp.HasValue ? dateTimeStamp.Value : SqlDateTime.Null; + } + } + + public SqlString EventType + { + get + { + return new Data.ROCPlusEventRecord(Convert.ToUInt16(Index), Data).EventType.ToString(); + } + } + + public SqlString EventCode + { + get + { + var eventCode = new Data.ROCPlusEventRecord(Convert.ToUInt16(Index), Data).EventCode; + return eventCode.HasValue ? eventCode.Value.ToString() : SqlString.Null; + } + } + + public string OperatorId + { + get + { + return new Data.ROCPlusEventRecord(Convert.ToUInt16(Index), Data).OperatorId; + } + } + + internal Tlp Tlp + { + get + { + return new Data.ROCPlusEventRecord(Convert.ToUInt16(Index), Data).Tlp; + } + } + + public SqlByte PointType + { + get + { + return Tlp.PointType; + } + } + + public SqlByte LogicalNumber + { + get + { + return Tlp.LogicalNumber; + } + } + + public SqlByte Parameter + { + get + { + return Tlp.Parameter; + } + } + + public SqlString DataType + { + get + { + var dataType = new Data.ROCPlusEventRecord(Convert.ToUInt16(Index), Data).DataType; + return dataType.HasValue ? dataType.Value.ToString() : SqlString.Null; + } + } + + public SqlBinary OldValue + { + get + { + return new Data.ROCPlusEventRecord(Convert.ToUInt16(Index), Data).OldValue; + } + } + + public SqlBinary NewValue + { + get + { + return new Data.ROCPlusEventRecord(Convert.ToUInt16(Index), Data).NewValue; + } + } + + public SqlInt32 Spare + { + get + { + return new Data.ROCPlusEventRecord(Convert.ToUInt16(Index), Data).Spare; + } + } + + public SqlString Description + { + get + { + return new Data.ROCPlusEventRecord(Convert.ToUInt16(Index), Data).Description; + } + } + + public SqlByte FstNumber + { + get + { + var fstNumber = new Data.ROCPlusEventRecord(Convert.ToUInt16(Index), Data).FstNumber; + return fstNumber.HasValue ? fstNumber.Value : SqlByte.Null; + } + } + + public SqlSingle FstValue + { + get + { + var fstValue = new Data.ROCPlusEventRecord(Convert.ToUInt16(Index), Data).FstValue; + return fstValue.HasValue ? fstValue.Value : SqlSingle.Null; + } + } + + public SqlDateTime DateTimeValue + { + get + { + var dateTimeValue = new Data.ROCPlusEventRecord(Convert.ToUInt16(Index), Data).DateTimeValue; + return dateTimeValue.HasValue ? dateTimeValue.Value : SqlDateTime.Null; + } + } + + public SqlSingle CalibrationRawValue + { + get + { + var calibrationRawValue = new Data.ROCPlusEventRecord(Convert.ToUInt16(Index), Data).CalibrationRawValue; + return calibrationRawValue.HasValue ? calibrationRawValue.Value : SqlSingle.Null; + } + } + + public SqlSingle CalibrationCalibratedValue + { + get + { + var calibrationCalibratedValue = new Data.ROCPlusEventRecord(Convert.ToUInt16(Index), Data).CalibrationCalibratedValue; + return calibrationCalibratedValue.HasValue ? calibrationCalibratedValue.Value : SqlSingle.Null; + } + } + + public Parameter OldParameterValue + { + get + { + if (!PointType.IsNull && !Parameter.IsNull) + { + switch (new Data.ROCPlusEventRecord(Convert.ToUInt16(Index), Data).DataType) + { + case ParameterType.AC3: + return new Parameter() { RawType = ParameterType.AC3, RawValue = OldValue.Value.Take(3).ToArray() }; + case ParameterType.BIN: + return new Parameter() { RawType = ParameterType.BIN, RawValue = OldValue.Value.Take(1).ToArray() }; + case ParameterType.FL: + return new Parameter() { RawType = ParameterType.FL, RawValue = OldValue.Value }; + case ParameterType.INT16: + return new Parameter() { RawType = ParameterType.INT16, RawValue = OldValue.Value.Take(2).ToArray() }; + case ParameterType.INT32: + return new Parameter() { RawType = ParameterType.INT32, RawValue = OldValue.Value }; + case ParameterType.INT8: + return new Parameter() { RawType = ParameterType.INT8, RawValue = OldValue.Value.Take(1).ToArray() }; + case ParameterType.TLP: + return new Parameter() { RawType = ParameterType.TLP, RawValue = OldValue.Value.Take(3).ToArray() }; + case ParameterType.UINT16: + return new Parameter() { RawType = ParameterType.UINT16, RawValue = OldValue.Value.Take(2).ToArray() }; + case ParameterType.UINT32: + return new Parameter() { RawType = ParameterType.UINT32, RawValue = OldValue.Value }; + case ParameterType.TIME: + return new Parameter() { RawType = ParameterType.TIME, RawValue = OldValue.Value }; + case ParameterType.UINT8: + return new Parameter() { RawType = ParameterType.UINT8, RawValue = OldValue.Value.Take(1).ToArray() }; + default: + return ROC.Parameter.Null; + } + } + else + { + return ROC.Parameter.Null; + } + } + } + + public Parameter NewParameterValue + { + get + { + if (!PointType.IsNull && !Parameter.IsNull) + { + switch (new Data.ROCPlusEventRecord(Convert.ToUInt16(Index), Data).DataType) + { + case ParameterType.AC3: + return new Parameter() { RawType = ParameterType.AC3, RawValue = NewValue.Value.Take(3).ToArray() }; + case ParameterType.AC7: + return new Parameter() { RawType = ParameterType.AC7, RawValue = NewValue.Value.Union(new byte[3]).ToArray() }; + case ParameterType.AC10: + return new Parameter() { RawType = ParameterType.AC10, RawValue = NewValue.Value.Union(OldValue.Value).Union(BitConverter.GetBytes(Convert.ToUInt16(Spare.Value))).ToArray() }; + case ParameterType.AC12: + return new Parameter() { RawType = ParameterType.AC12, RawValue = NewValue.Value.Union(OldValue.Value).Union(BitConverter.GetBytes(Convert.ToUInt16(Spare.Value))).Union(new byte[2]).ToArray() }; + case ParameterType.AC20: + return new Parameter() { RawType = ParameterType.AC20, RawValue = NewValue.Value.Union(OldValue.Value).Union(BitConverter.GetBytes(Convert.ToUInt16(Spare.Value))).Union(new byte[10]).ToArray() }; + case ParameterType.AC30: + return new Parameter() { RawType = ParameterType.AC30, RawValue = NewValue.Value.Union(OldValue.Value).Union(BitConverter.GetBytes(Convert.ToUInt16(Spare.Value))).Union(new byte[20]).ToArray() }; + case ParameterType.AC40: + return new Parameter() { RawType = ParameterType.AC40, RawValue = NewValue.Value.Union(OldValue.Value).Union(BitConverter.GetBytes(Convert.ToUInt16(Spare.Value))).Union(new byte[30]).ToArray() }; + case ParameterType.BIN: + return new Parameter() { RawType = ParameterType.BIN, RawValue = NewValue.Value.Take(1).ToArray() }; + case ParameterType.FL: + return new Parameter() { RawType = ParameterType.FL, RawValue = NewValue.Value }; + case ParameterType.DOUBLE: + return new Parameter() { RawType = ParameterType.DOUBLE, RawValue = NewValue.Value.Union(OldValue.Value).ToArray() }; + case ParameterType.INT16: + return new Parameter() { RawType = ParameterType.INT16, RawValue = NewValue.Value.Take(2).ToArray() }; + case ParameterType.INT32: + return new Parameter() { RawType = ParameterType.INT32, RawValue = NewValue.Value }; + case ParameterType.INT8: + return new Parameter() { RawType = ParameterType.INT8, RawValue = NewValue.Value.Take(1).ToArray() }; + case ParameterType.TLP: + return new Parameter() { RawType = ParameterType.TLP, RawValue = NewValue.Value.Take(3).ToArray() }; + case ParameterType.UINT16: + return new Parameter() { RawType = ParameterType.UINT16, RawValue = NewValue.Value.Take(2).ToArray() }; + case ParameterType.UINT32: + return new Parameter() { RawType = ParameterType.UINT32, RawValue = NewValue.Value }; + case ParameterType.TIME: + return new Parameter() { RawType = ParameterType.TIME, RawValue = NewValue.Value }; + case ParameterType.UINT8: + return new Parameter() { RawType = ParameterType.UINT8, RawValue = NewValue.Value.Take(1).ToArray() }; + default: + return ROC.Parameter.Null; + } + } + else + { + return ROC.Parameter.Null; + } + } + } + + #endregion + + #region Helper Methods + + public static ROCPlusEventRecord Parse(SqlString stringToParse) + { + var parsedEventRecord = stringToParse.Value.Split(",".ToCharArray()); + var base64Bytes = Convert.FromBase64String(parsedEventRecord[1]); + if (base64Bytes.Length == 22) + { + return new ROCPlusEventRecord() { Index = ushort.Parse(parsedEventRecord[0]), Data = base64Bytes }; + } + else + { + throw new ArgumentException("Input must be exactly 22 bytes"); + } + } + + public override string ToString() + { + return string.Format("{0},{1}", Index, Convert.ToBase64String(Data)); + } + + #endregion + + #region Serialization Methods + + public void Read(BinaryReader binaryReader) + { + IsNull = binaryReader.ReadBoolean(); + Index = binaryReader.ReadInt32(); + if (!IsNull) + { + Data = binaryReader.ReadBytes(22); + } + } + + public void Write(BinaryWriter binaryWriter) + { + binaryWriter.Write(IsNull); + binaryWriter.Write(Index); + if (!IsNull) + { + binaryWriter.Write(Data, 0, 22); + } + } + + #endregion + + } +} diff --git a/DeviceSQL.SQLTypes.ROC/ROCPlusEventRecordArray.cs b/DeviceSQL.SQLTypes.ROC/ROCPlusEventRecordArray.cs new file mode 100644 index 0000000..bb925cc --- /dev/null +++ b/DeviceSQL.SQLTypes.ROC/ROCPlusEventRecordArray.cs @@ -0,0 +1,162 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System; +using System.Collections.Generic; +using System.Data.SqlTypes; +using System.IO; +using System.Linq; + +#endregion + +namespace DeviceSQL.SQLTypes.ROC +{ + [Serializable()] + [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = -1)] + public struct ROCPlusEventRecordArray : INullable, IBinarySerialize + { + + #region Fields + + internal List rocPlusEventRecords; + + #endregion + + #region Properties + + internal ROCPlusEventRecord this[int index] + { + get + { + return ROCPlusEventRecords[index]; + } + set + { + ROCPlusEventRecords[index] = value; + } + } + + public bool IsNull + { + get; + internal set; + } + + public int Length + { + get + { + return ROCPlusEventRecords.Count; + } + } + + #endregion + + #region Helper Methods + + private List ROCPlusEventRecords + { + get + { + if (rocPlusEventRecords == null) + { + rocPlusEventRecords = new List(); + } + return rocPlusEventRecords; + } + } + + public static ROCPlusEventRecordArray Null + { + get + { + return (new ROCPlusEventRecordArray() { IsNull = true }); + } + } + + public override string ToString() + { + return string.Join("|", ROCPlusEventRecords.Select(parameter => parameter.ToString())); + } + + public ROCPlusEventRecordArray AddROCPlusEventRecord(ROCPlusEventRecord rocPlusEventRecord) + { + ROCPlusEventRecords.Add(rocPlusEventRecord); + return this; + } + + public static ROCPlusEventRecordArray Parse(SqlString stringToParse) + { + if (stringToParse.IsNull) + { + return Null; + } + + var parsedROCPlusEventRecords = new ROCPlusEventRecordArray(); + parsedROCPlusEventRecords.rocPlusEventRecords = new List(); + var parsedString = stringToParse.Value.Split("|".ToCharArray()); + + for (var i = 0; parsedString.Length > i; i++) + { + parsedROCPlusEventRecords.rocPlusEventRecords.Add(ROCPlusEventRecord.Parse(parsedString[i])); + } + + return parsedROCPlusEventRecords; + } + + public ROCPlusEventRecord GetROCPlusEventRecord(SqlInt32 index) + { + return ROCPlusEventRecords[index.Value]; + } + + public static EventRecordArray Empty() + { + var eventRecord = new EventRecordArray { eventRecords = new List() }; + return eventRecord; + } + + #endregion + + #region Serialization Methods + + public void Read(BinaryReader binaryReader) + { + ROCPlusEventRecords.Clear(); + IsNull = binaryReader.ReadBoolean(); + + if (IsNull) + { + return; + } + else + { + var length = binaryReader.ReadInt32(); + + for (var i = 0; length > i; i++) + { + var rocPlusEventRecord = new ROCPlusEventRecord(); + rocPlusEventRecord.Read(binaryReader); + ROCPlusEventRecords.Add(rocPlusEventRecord); + } + } + + } + + public void Write(BinaryWriter binaryWriter) + { + binaryWriter.Write(IsNull); + binaryWriter.Write(Length); + + if (Length > 0) + { + for (var i = 0; ROCPlusEventRecords.Count > i; i++) + { + ROCPlusEventRecords[i].Write(binaryWriter); + } + } + } + + #endregion + + } +} diff --git a/DeviceSQL.SQLTypes.ROC/ROCPlusHistoryPointArray.cs b/DeviceSQL.SQLTypes.ROC/ROCPlusHistoryPointArray.cs new file mode 100644 index 0000000..b1b5317 --- /dev/null +++ b/DeviceSQL.SQLTypes.ROC/ROCPlusHistoryPointArray.cs @@ -0,0 +1,159 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System; +using System.Collections.Generic; +using System.Data.SqlTypes; +using System.IO; +using System.Linq; + +#endregion + +namespace DeviceSQL.SQLTypes.ROC +{ + [Serializable()] + [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = -1)] + public struct ROCPlusHistoryPointArray : INullable, IBinarySerialize + { + + #region Fields + + internal List historyPoints; + + #endregion + + #region Properties + + internal byte this[int index] + { + get + { + return HistoryPoints[index]; + } + set + { + HistoryPoints[index] = value; + } + } + + public bool IsNull + { + get; + internal set; + } + + public int Length + { + get + { + return HistoryPoints.Count; + } + } + + #endregion + + #region Helper Methods + + private List HistoryPoints + { + get + { + if (historyPoints == null) + { + historyPoints = new List(); + } + return historyPoints; + } + } + + public static ROCPlusHistoryPointArray Null + { + get + { + return (new ROCPlusHistoryPointArray() { IsNull = true }); + } + } + + public override string ToString() + { + return string.Join("|", HistoryPoints.Select(parameter => parameter.ToString())); + } + + public ROCPlusHistoryPointArray AddHistoryPoint(byte historyPoint) + { + HistoryPoints.Add(historyPoint); + return this; + } + + public static ROCPlusHistoryPointArray Parse(SqlString stringToParse) + { + if (stringToParse.IsNull) + { + return Null; + } + + var parsedROCPlusHistoryPointArray = new ROCPlusHistoryPointArray(); + parsedROCPlusHistoryPointArray.historyPoints = new List(); + var parsedString = stringToParse.Value.Split("|".ToCharArray()); + + for (var i = 0; parsedString.Length > i; i++) + { + parsedROCPlusHistoryPointArray.HistoryPoints.Add(byte.Parse(parsedString[i])); + } + + return parsedROCPlusHistoryPointArray; + } + + public byte GetHistoryPoint(SqlInt32 index) + { + return HistoryPoints[index.Value]; + } + + public static ROCPlusHistoryPointArray Empty() + { + var rocPlusHistoryPointArray = new ROCPlusHistoryPointArray() { historyPoints = new List() }; + return rocPlusHistoryPointArray; + } + + #endregion + + #region Serialization Methods + + public void Read(BinaryReader binaryReader) + { + HistoryPoints.Clear(); + IsNull = binaryReader.ReadBoolean(); + + if (IsNull) + { + return; + } + else + { + var length = binaryReader.ReadInt32(); + + for (var i = 0; length > i; i++) + { + HistoryPoints.Add(binaryReader.ReadByte()); + } + } + } + + public void Write(BinaryWriter binaryWriter) + { + binaryWriter.Write(IsNull); + binaryWriter.Write(Length); + + if (Length > 0) + { + for (var i = 0; HistoryPoints.Count > i; i++) + { + binaryWriter.Write(HistoryPoints[i]); + } + } + } + + #endregion + + } +} diff --git a/DeviceSQL.SQLTypes.ROC/ROCPlusHistoryRecord.cs b/DeviceSQL.SQLTypes.ROC/ROCPlusHistoryRecord.cs new file mode 100644 index 0000000..f6af00a --- /dev/null +++ b/DeviceSQL.SQLTypes.ROC/ROCPlusHistoryRecord.cs @@ -0,0 +1,157 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System; +using System.Data.SqlTypes; +using System.IO; + +#endregion + +namespace DeviceSQL.SQLTypes.ROC +{ + [Serializable()] + [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = 15)] + public struct ROCPlusHistoryRecord : INullable, IBinarySerialize + { + + #region Fields + + public byte[] value; + + #endregion + + #region Properties + + public bool IsNull + { + get; + internal set; + } + + public bool HasTimeStamp + { + get + { + return Length == 8; + } + } + + public static ROCPlusHistoryRecord Null + { + get + { + return new ROCPlusHistoryRecord() { IsNull = true }; + } + } + + public byte HistorySegment + { + get; + internal set; + } + + public byte HistoryPointNumber + { + get; + internal set; + } + + public int Index + { + get; + internal set; + } + + public int Length + { + get + { + return Value.Length; + } + } + + public byte[] Value + { + get + { + if (value == null) + { + value = new byte[8]; + } + return value; + } + internal set + { + this.value = value; + } + } + + #endregion + + #region Helper Methods + + public SqlDateTime ToDateTimeStamp(DateTime deviceDateTime) + { + var dateTimeStamp = new Data.ROCPlusHistoryRecord() { HistoryPointNumber = this.HistoryPointNumber, HistorySegment = this.HistorySegment, Index = this.Index, Value = this.Value }.DateTimeStamp; + return dateTimeStamp.HasValue ? dateTimeStamp.Value : SqlDateTime.Null; + } + + public SqlSingle ToFloat() + { + var floatValue = new Data.ROCPlusHistoryRecord() { HistoryPointNumber = this.HistoryPointNumber, HistorySegment = this.HistorySegment, Index = this.Index, Value = this.Value }.ToNullableFloat(); + return floatValue.HasValue ? floatValue.Value : SqlSingle.Null; + } + + public static ROCPlusHistoryRecord Parse(SqlString stringToParse) + { + var parsedROCPlusHistoryRecord = stringToParse.Value.Split(",".ToCharArray()); + var base64Bytes = Convert.FromBase64String(parsedROCPlusHistoryRecord[3]); + if (base64Bytes.Length == 8 || base64Bytes.Length == 4) + { + return new ROCPlusHistoryRecord() { Index = ushort.Parse(parsedROCPlusHistoryRecord[0]), HistorySegment = byte.Parse(parsedROCPlusHistoryRecord[1]), HistoryPointNumber = byte.Parse(parsedROCPlusHistoryRecord[2]), value = base64Bytes }; + } + else + { + throw new ArgumentException("Input must be exactly 8 or 4 bytes"); + } + } + + public override string ToString() + { + return string.Format("{0},{1},{2},{3}", Index, HistorySegment, HistoryPointNumber, Convert.ToBase64String(Value)); + } + + #endregion + + #region Serialization Methods + + public void Read(BinaryReader binaryReader) + { + IsNull = binaryReader.ReadBoolean(); + if (!IsNull) + { + var length = binaryReader.ReadInt32(); + Index = binaryReader.ReadInt32(); + HistorySegment = binaryReader.ReadByte(); + HistoryPointNumber = binaryReader.ReadByte(); + Value = binaryReader.ReadBytes(length); + } + } + + public void Write(BinaryWriter binaryWriter) + { + binaryWriter.Write(IsNull); + if (!IsNull) + { + binaryWriter.Write(Length); + binaryWriter.Write(Index); + binaryWriter.Write(HistorySegment); + binaryWriter.Write(HistoryPointNumber); + binaryWriter.Write(Value, 0, Length); + } + } + + #endregion + + } +} diff --git a/DeviceSQL.SQLTypes.ROC/ROCPlusHistoryRecordArray.cs b/DeviceSQL.SQLTypes.ROC/ROCPlusHistoryRecordArray.cs new file mode 100644 index 0000000..bd3f74f --- /dev/null +++ b/DeviceSQL.SQLTypes.ROC/ROCPlusHistoryRecordArray.cs @@ -0,0 +1,162 @@ +#region Imported Types + +using Microsoft.SqlServer.Server; +using System; +using System.Collections.Generic; +using System.Data.SqlTypes; +using System.IO; +using System.Linq; + +#endregion + +namespace DeviceSQL.SQLTypes.ROC +{ + [Serializable()] + [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = -1)] + public struct ROCPlusHistoryRecordArray : INullable, IBinarySerialize + { + + #region Fields + + internal List rocPlusHistoryRecords; + + #endregion + + #region Properties + + internal ROCPlusHistoryRecord this[int index] + { + get + { + return ROCPlusHistoryRecords[index]; + } + set + { + ROCPlusHistoryRecords[index] = value; + } + } + + public bool IsNull + { + get; + internal set; + } + + public int Length + { + get + { + return ROCPlusHistoryRecords.Count; + } + } + + #endregion + + #region Helper Methods + + private List ROCPlusHistoryRecords + { + get + { + if (rocPlusHistoryRecords == null) + { + rocPlusHistoryRecords = new List(); + } + return rocPlusHistoryRecords; + } + } + + public static ROCPlusHistoryRecordArray Null + { + get + { + return (new ROCPlusHistoryRecordArray() { IsNull = true }); + } + } + + public override string ToString() + { + return string.Join("|", ROCPlusHistoryRecords.Select(parameter => parameter.ToString())); + } + + public ROCPlusHistoryRecordArray AddROCPlusHistoryRecord(ROCPlusHistoryRecord rocPlusHistoryRecord) + { + ROCPlusHistoryRecords.Add(rocPlusHistoryRecord); + return this; + } + + public static ROCPlusHistoryRecordArray Parse(SqlString stringToParse) + { + if (stringToParse.IsNull) + { + return Null; + } + + var parsedROCPlusHistoryRecords = new ROCPlusHistoryRecordArray(); + parsedROCPlusHistoryRecords.rocPlusHistoryRecords = new List(); + var parsedString = stringToParse.Value.Split("|".ToCharArray()); + + for (var i = 0; parsedString.Length > i; i++) + { + parsedROCPlusHistoryRecords.rocPlusHistoryRecords.Add(ROCPlusHistoryRecord.Parse(parsedString[i])); + } + + return parsedROCPlusHistoryRecords; + } + + public ROCPlusHistoryRecord GetROCPlusHistoryRecord(SqlInt32 index) + { + return ROCPlusHistoryRecords[index.Value]; + } + + public static ROCPlusHistoryRecordArray Empty() + { + var rocPlusHistoryRecord = new ROCPlusHistoryRecordArray { rocPlusHistoryRecords = new List() }; + return rocPlusHistoryRecord; + } + + #endregion + + #region Serialization Methods + + public void Read(BinaryReader binaryReader) + { + ROCPlusHistoryRecords.Clear(); + IsNull = binaryReader.ReadBoolean(); + + if (IsNull) + { + return; + } + else + { + var length = binaryReader.ReadInt32(); + + for (var i = 0; length > i; i++) + { + var rocPlusHistoryRecord = new ROCPlusHistoryRecord(); + rocPlusHistoryRecord.Read(binaryReader); + ROCPlusHistoryRecords.Add(rocPlusHistoryRecord); + } + } + + } + + public void Write(BinaryWriter binaryWriter) + { + binaryWriter.Write(IsNull); + binaryWriter.Write(Length); + + if (Length > 0) + { + for (var i = 0; ROCPlusHistoryRecords.Count > i; i++) + { + ROCPlusHistoryRecords[i].Write(binaryWriter); + } + } + } + + #endregion + + } +} diff --git a/DeviceSQL.SQLTypes/DeviceSQL.SQLTypes.csproj b/DeviceSQL.SQLTypes/DeviceSQL.SQLTypes.csproj new file mode 100644 index 0000000..94f23de --- /dev/null +++ b/DeviceSQL.SQLTypes/DeviceSQL.SQLTypes.csproj @@ -0,0 +1,239 @@ + + + + + Debug + AnyCPU + {91B62CD7-190B-4727-B1EB-66B51913709D} + Library + Properties + DeviceSQL.SQLTypes + DeviceSQL.SQLTypes + v4.8 + 512 + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + Devices\Device\Modbus\Data\BooleanRegister.cs + + + Devices\Device\Modbus\Data\CoilRegister.cs + + + Devices\Device\Modbus\Data\DiscreteInputRegister.cs + + + Devices\Device\Modbus\Data\EventArchiveRecord.cs + + + Devices\Device\Modbus\Data\FloatRegister.cs + + + Devices\Device\Modbus\Data\HistoryArchiveRecord.cs + + + Devices\Device\Modbus\Data\HoldingRegister.cs + + + Devices\Device\Modbus\Data\IModbusRegisterData.cs + + + Devices\Device\Modbus\Data\InputRegister.cs + + + Devices\Device\Modbus\Data\LongRegister.cs + + + Devices\Device\Modbus\Data\ModbusAddress.cs + + + Devices\Device\Modbus\Data\ModbusRegister.cs + + + Devices\Device\Modbus\Data\ShortRegister.cs + + + Devices\Device\Modbus\Data\StringRegister.cs + + + Devices\Device\Modbus\ModbusConverter.cs + + + Devices\Device\ROC\Data\Ac10Parameter.cs + + + Devices\Device\ROC\Data\Ac12Parameter.cs + + + Devices\Device\ROC\Data\Ac20Parameter.cs + + + Devices\Device\ROC\Data\Ac30Parameter.cs + + + Devices\Device\ROC\Data\Ac3Parameter.cs + + + Devices\Device\ROC\Data\Ac40Parameter.cs + + + Devices\Device\ROC\Data\Ac7Parameter.cs + + + Devices\Device\ROC\Data\AlarmRecord.cs + + + Devices\Device\ROC\Data\ArchiveInfo.cs + + + Devices\Device\ROC\Data\AuditLogRecord.cs + + + Devices\Device\ROC\Data\BinParameter.cs + + + Devices\Device\ROC\Data\DoubleParameter.cs + + + Devices\Device\ROC\Data\EventRecord.cs + + + Devices\Device\ROC\Data\FlpParameter.cs + + + Devices\Device\ROC\Data\FstCodeChunk.cs + + + Devices\Device\ROC\Data\FstHeaderInfo.cs + + + Devices\Device\ROC\Data\HistoryPointConfiguration.cs + + + Devices\Device\ROC\Data\HistoryRecord.cs + + + Devices\Device\ROC\Data\Int16Parameter.cs + + + Devices\Device\ROC\Data\Int32Parameter.cs + + + Devices\Device\ROC\Data\Int8Parameter.cs + + + Devices\Device\ROC\Data\IRocParameterData.cs + + + Devices\Device\ROC\Data\Parameter.cs + + + Devices\Device\ROC\Data\ParameterType.cs + + + Devices\Device\ROC\Data\RocPlusAlarmRecord.cs + + + Devices\Device\ROC\Data\RocPlusEventRecord.cs + + + Devices\Device\ROC\Data\RocPlusHistoryRecord.cs + + + Devices\Device\ROC\Data\TimeParameter.cs + + + Devices\Device\ROC\Data\Tlp.cs + + + Devices\Device\ROC\Data\TlpParameter.cs + + + Devices\Device\ROC\Data\UInt16Parameter.cs + + + Devices\Device\ROC\Data\UInt32Parameter.cs + + + Devices\Device\ROC\Data\UInt8Parameter.cs + + + Devices\Device\ROC\Message\ParameterDatabase.cs + + + IO\Channels\HexConverter.cs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/DeviceSQL/Types/ModbusMaster/BooleanRegister.cs b/DeviceSQL.SQLTypes/ModbusMaster/BooleanRegister.cs similarity index 98% rename from DeviceSQL/Types/ModbusMaster/BooleanRegister.cs rename to DeviceSQL.SQLTypes/ModbusMaster/BooleanRegister.cs index 7ac3bbd..3717216 100644 --- a/DeviceSQL/Types/ModbusMaster/BooleanRegister.cs +++ b/DeviceSQL.SQLTypes/ModbusMaster/BooleanRegister.cs @@ -7,7 +7,7 @@ #endregion -namespace DeviceSQL.Types.MODBUSMaster +namespace DeviceSQL.SQLTypes.MODBUSMaster { [Serializable()] [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = 8)] diff --git a/DeviceSQL/Types/ModbusMaster/BooleanRegisterArray.cs b/DeviceSQL.SQLTypes/ModbusMaster/BooleanRegisterArray.cs similarity index 99% rename from DeviceSQL/Types/ModbusMaster/BooleanRegisterArray.cs rename to DeviceSQL.SQLTypes/ModbusMaster/BooleanRegisterArray.cs index dc051cb..ccfda43 100644 --- a/DeviceSQL/Types/ModbusMaster/BooleanRegisterArray.cs +++ b/DeviceSQL.SQLTypes/ModbusMaster/BooleanRegisterArray.cs @@ -9,7 +9,7 @@ #endregion -namespace DeviceSQL.Types.MODBUSMaster +namespace DeviceSQL.SQLTypes.MODBUSMaster { [Serializable()] [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = -1)] diff --git a/DeviceSQL/Types/ModbusMaster/CoilRegister.cs b/DeviceSQL.SQLTypes/ModbusMaster/CoilRegister.cs similarity index 98% rename from DeviceSQL/Types/ModbusMaster/CoilRegister.cs rename to DeviceSQL.SQLTypes/ModbusMaster/CoilRegister.cs index a2cc44b..381d7b1 100644 --- a/DeviceSQL/Types/ModbusMaster/CoilRegister.cs +++ b/DeviceSQL.SQLTypes/ModbusMaster/CoilRegister.cs @@ -7,7 +7,7 @@ #endregion -namespace DeviceSQL.Types.MODBUSMaster +namespace DeviceSQL.SQLTypes.MODBUSMaster { [Serializable()] [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = 8)] diff --git a/DeviceSQL/Types/ModbusMaster/CoilRegisterArray.cs b/DeviceSQL.SQLTypes/ModbusMaster/CoilRegisterArray.cs similarity index 98% rename from DeviceSQL/Types/ModbusMaster/CoilRegisterArray.cs rename to DeviceSQL.SQLTypes/ModbusMaster/CoilRegisterArray.cs index 6a11f55..2e38c29 100644 --- a/DeviceSQL/Types/ModbusMaster/CoilRegisterArray.cs +++ b/DeviceSQL.SQLTypes/ModbusMaster/CoilRegisterArray.cs @@ -9,7 +9,7 @@ #endregion -namespace DeviceSQL.Types.MODBUSMaster +namespace DeviceSQL.SQLTypes.MODBUSMaster { [Serializable()] [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = -1)] diff --git a/DeviceSQL/Types/ModbusMaster/DiscreteInputRegister.cs b/DeviceSQL.SQLTypes/ModbusMaster/DiscreteInputRegister.cs similarity index 98% rename from DeviceSQL/Types/ModbusMaster/DiscreteInputRegister.cs rename to DeviceSQL.SQLTypes/ModbusMaster/DiscreteInputRegister.cs index 69bd86a..4067ca8 100644 --- a/DeviceSQL/Types/ModbusMaster/DiscreteInputRegister.cs +++ b/DeviceSQL.SQLTypes/ModbusMaster/DiscreteInputRegister.cs @@ -7,7 +7,7 @@ #endregion -namespace DeviceSQL.Types.MODBUSMaster +namespace DeviceSQL.SQLTypes.MODBUSMaster { [Serializable()] [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = 8)] diff --git a/DeviceSQL/Types/ModbusMaster/DiscreteInputRegisterArray.cs b/DeviceSQL.SQLTypes/ModbusMaster/DiscreteInputRegisterArray.cs similarity index 99% rename from DeviceSQL/Types/ModbusMaster/DiscreteInputRegisterArray.cs rename to DeviceSQL.SQLTypes/ModbusMaster/DiscreteInputRegisterArray.cs index 88ec74f..3fb046d 100644 --- a/DeviceSQL/Types/ModbusMaster/DiscreteInputRegisterArray.cs +++ b/DeviceSQL.SQLTypes/ModbusMaster/DiscreteInputRegisterArray.cs @@ -9,7 +9,7 @@ #endregion -namespace DeviceSQL.Types.MODBUSMaster +namespace DeviceSQL.SQLTypes.MODBUSMaster { [Serializable()] [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = -1)] diff --git a/DeviceSQL/Types/ModbusMaster/EventArchiveRecord.cs b/DeviceSQL.SQLTypes/ModbusMaster/EventArchiveRecord.cs similarity index 98% rename from DeviceSQL/Types/ModbusMaster/EventArchiveRecord.cs rename to DeviceSQL.SQLTypes/ModbusMaster/EventArchiveRecord.cs index 07c7774..e7bea83 100644 --- a/DeviceSQL/Types/ModbusMaster/EventArchiveRecord.cs +++ b/DeviceSQL.SQLTypes/ModbusMaster/EventArchiveRecord.cs @@ -7,7 +7,7 @@ #endregion -namespace DeviceSQL.Types.MODBUSMaster +namespace DeviceSQL.SQLTypes.MODBUSMaster { [Serializable()] [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = 264)] diff --git a/DeviceSQL/Types/ModbusMaster/EventArchiveRecordArray.cs b/DeviceSQL.SQLTypes/ModbusMaster/EventArchiveRecordArray.cs similarity index 99% rename from DeviceSQL/Types/ModbusMaster/EventArchiveRecordArray.cs rename to DeviceSQL.SQLTypes/ModbusMaster/EventArchiveRecordArray.cs index 2c5b9a3..60753b5 100644 --- a/DeviceSQL/Types/ModbusMaster/EventArchiveRecordArray.cs +++ b/DeviceSQL.SQLTypes/ModbusMaster/EventArchiveRecordArray.cs @@ -9,7 +9,7 @@ #endregion -namespace DeviceSQL.Types.MODBUSMaster +namespace DeviceSQL.SQLTypes.MODBUSMaster { [Serializable()] [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = -1)] diff --git a/DeviceSQL/Types/ModbusMaster/FloatRegister.cs b/DeviceSQL.SQLTypes/ModbusMaster/FloatRegister.cs similarity index 98% rename from DeviceSQL/Types/ModbusMaster/FloatRegister.cs rename to DeviceSQL.SQLTypes/ModbusMaster/FloatRegister.cs index 93c8a5a..2e7b523 100644 --- a/DeviceSQL/Types/ModbusMaster/FloatRegister.cs +++ b/DeviceSQL.SQLTypes/ModbusMaster/FloatRegister.cs @@ -7,7 +7,7 @@ #endregion -namespace DeviceSQL.Types.MODBUSMaster +namespace DeviceSQL.SQLTypes.MODBUSMaster { [Serializable()] [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = 13)] diff --git a/DeviceSQL/Types/ModbusMaster/FloatRegisterArray.cs b/DeviceSQL.SQLTypes/ModbusMaster/FloatRegisterArray.cs similarity index 98% rename from DeviceSQL/Types/ModbusMaster/FloatRegisterArray.cs rename to DeviceSQL.SQLTypes/ModbusMaster/FloatRegisterArray.cs index 43d0353..35a9515 100644 --- a/DeviceSQL/Types/ModbusMaster/FloatRegisterArray.cs +++ b/DeviceSQL.SQLTypes/ModbusMaster/FloatRegisterArray.cs @@ -9,7 +9,7 @@ #endregion -namespace DeviceSQL.Types.MODBUSMaster +namespace DeviceSQL.SQLTypes.MODBUSMaster { [Serializable()] [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = -1)] diff --git a/DeviceSQL/Types/ModbusMaster/HistoryArchiveRecord.cs b/DeviceSQL.SQLTypes/ModbusMaster/HistoryArchiveRecord.cs similarity index 98% rename from DeviceSQL/Types/ModbusMaster/HistoryArchiveRecord.cs rename to DeviceSQL.SQLTypes/ModbusMaster/HistoryArchiveRecord.cs index 5252536..a2ddbdc 100644 --- a/DeviceSQL/Types/ModbusMaster/HistoryArchiveRecord.cs +++ b/DeviceSQL.SQLTypes/ModbusMaster/HistoryArchiveRecord.cs @@ -7,7 +7,7 @@ #endregion -namespace DeviceSQL.Types.MODBUSMaster +namespace DeviceSQL.SQLTypes.MODBUSMaster { [Serializable()] [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = 264)] diff --git a/DeviceSQL/Types/ModbusMaster/HistoryArchiveRecordArray.cs b/DeviceSQL.SQLTypes/ModbusMaster/HistoryArchiveRecordArray.cs similarity index 99% rename from DeviceSQL/Types/ModbusMaster/HistoryArchiveRecordArray.cs rename to DeviceSQL.SQLTypes/ModbusMaster/HistoryArchiveRecordArray.cs index 542b21f..8e4178e 100644 --- a/DeviceSQL/Types/ModbusMaster/HistoryArchiveRecordArray.cs +++ b/DeviceSQL.SQLTypes/ModbusMaster/HistoryArchiveRecordArray.cs @@ -9,7 +9,7 @@ #endregion -namespace DeviceSQL.Types.MODBUSMaster +namespace DeviceSQL.SQLTypes.MODBUSMaster { [Serializable()] [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = -1)] diff --git a/DeviceSQL/Types/ModbusMaster/HoldingRegister.cs b/DeviceSQL.SQLTypes/ModbusMaster/HoldingRegister.cs similarity index 98% rename from DeviceSQL/Types/ModbusMaster/HoldingRegister.cs rename to DeviceSQL.SQLTypes/ModbusMaster/HoldingRegister.cs index 92b1cea..4eede16 100644 --- a/DeviceSQL/Types/ModbusMaster/HoldingRegister.cs +++ b/DeviceSQL.SQLTypes/ModbusMaster/HoldingRegister.cs @@ -7,7 +7,7 @@ #endregion -namespace DeviceSQL.Types.MODBUSMaster +namespace DeviceSQL.SQLTypes.MODBUSMaster { [Serializable()] [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = 10)] diff --git a/DeviceSQL/Types/ModbusMaster/HoldingRegisterArray.cs b/DeviceSQL.SQLTypes/ModbusMaster/HoldingRegisterArray.cs similarity index 99% rename from DeviceSQL/Types/ModbusMaster/HoldingRegisterArray.cs rename to DeviceSQL.SQLTypes/ModbusMaster/HoldingRegisterArray.cs index 82ff78a..31c49d6 100644 --- a/DeviceSQL/Types/ModbusMaster/HoldingRegisterArray.cs +++ b/DeviceSQL.SQLTypes/ModbusMaster/HoldingRegisterArray.cs @@ -9,7 +9,7 @@ #endregion -namespace DeviceSQL.Types.MODBUSMaster +namespace DeviceSQL.SQLTypes.MODBUSMaster { [Serializable()] [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = -1)] diff --git a/DeviceSQL/Types/ModbusMaster/InputRegister.cs b/DeviceSQL.SQLTypes/ModbusMaster/InputRegister.cs similarity index 98% rename from DeviceSQL/Types/ModbusMaster/InputRegister.cs rename to DeviceSQL.SQLTypes/ModbusMaster/InputRegister.cs index ac3be00..b234b63 100644 --- a/DeviceSQL/Types/ModbusMaster/InputRegister.cs +++ b/DeviceSQL.SQLTypes/ModbusMaster/InputRegister.cs @@ -7,7 +7,7 @@ #endregion -namespace DeviceSQL.Types.MODBUSMaster +namespace DeviceSQL.SQLTypes.MODBUSMaster { [Serializable()] [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = 10)] diff --git a/DeviceSQL/Types/ModbusMaster/InputRegisterArray.cs b/DeviceSQL.SQLTypes/ModbusMaster/InputRegisterArray.cs similarity index 99% rename from DeviceSQL/Types/ModbusMaster/InputRegisterArray.cs rename to DeviceSQL.SQLTypes/ModbusMaster/InputRegisterArray.cs index e1cee68..6ef3074 100644 --- a/DeviceSQL/Types/ModbusMaster/InputRegisterArray.cs +++ b/DeviceSQL.SQLTypes/ModbusMaster/InputRegisterArray.cs @@ -9,7 +9,7 @@ #endregion -namespace DeviceSQL.Types.MODBUSMaster +namespace DeviceSQL.SQLTypes.MODBUSMaster { [Serializable()] [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = -1)] diff --git a/DeviceSQL/Types/ModbusMaster/LongRegister.cs b/DeviceSQL.SQLTypes/ModbusMaster/LongRegister.cs similarity index 98% rename from DeviceSQL/Types/ModbusMaster/LongRegister.cs rename to DeviceSQL.SQLTypes/ModbusMaster/LongRegister.cs index b6198a5..5690095 100644 --- a/DeviceSQL/Types/ModbusMaster/LongRegister.cs +++ b/DeviceSQL.SQLTypes/ModbusMaster/LongRegister.cs @@ -7,7 +7,7 @@ #endregion -namespace DeviceSQL.Types.MODBUSMaster +namespace DeviceSQL.SQLTypes.MODBUSMaster { [Serializable()] [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = 13)] diff --git a/DeviceSQL/Types/ModbusMaster/LongRegisterArray.cs b/DeviceSQL.SQLTypes/ModbusMaster/LongRegisterArray.cs similarity index 98% rename from DeviceSQL/Types/ModbusMaster/LongRegisterArray.cs rename to DeviceSQL.SQLTypes/ModbusMaster/LongRegisterArray.cs index a0e04e5..4494d1d 100644 --- a/DeviceSQL/Types/ModbusMaster/LongRegisterArray.cs +++ b/DeviceSQL.SQLTypes/ModbusMaster/LongRegisterArray.cs @@ -9,7 +9,7 @@ #endregion -namespace DeviceSQL.Types.MODBUSMaster +namespace DeviceSQL.SQLTypes.MODBUSMaster { [Serializable()] [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = -1)] diff --git a/DeviceSQL/Types/ModbusMaster/ModbusAddress.cs b/DeviceSQL.SQLTypes/ModbusMaster/ModbusAddress.cs similarity index 98% rename from DeviceSQL/Types/ModbusMaster/ModbusAddress.cs rename to DeviceSQL.SQLTypes/ModbusMaster/ModbusAddress.cs index d52d0a6..404df43 100644 --- a/DeviceSQL/Types/ModbusMaster/ModbusAddress.cs +++ b/DeviceSQL.SQLTypes/ModbusMaster/ModbusAddress.cs @@ -7,7 +7,7 @@ #endregion -namespace DeviceSQL.Types.MODBUSMaster +namespace DeviceSQL.SQLTypes.MODBUSMaster { [Serializable()] [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = 6)] diff --git a/DeviceSQL/Types/ModbusMaster/ShortRegister.cs b/DeviceSQL.SQLTypes/ModbusMaster/ShortRegister.cs similarity index 98% rename from DeviceSQL/Types/ModbusMaster/ShortRegister.cs rename to DeviceSQL.SQLTypes/ModbusMaster/ShortRegister.cs index 8bdc1c0..7760aaf 100644 --- a/DeviceSQL/Types/ModbusMaster/ShortRegister.cs +++ b/DeviceSQL.SQLTypes/ModbusMaster/ShortRegister.cs @@ -7,7 +7,7 @@ #endregion -namespace DeviceSQL.Types.MODBUSMaster +namespace DeviceSQL.SQLTypes.MODBUSMaster { [Serializable()] [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = 10)] diff --git a/DeviceSQL/Types/ModbusMaster/ShortRegisterArray.cs b/DeviceSQL.SQLTypes/ModbusMaster/ShortRegisterArray.cs similarity index 98% rename from DeviceSQL/Types/ModbusMaster/ShortRegisterArray.cs rename to DeviceSQL.SQLTypes/ModbusMaster/ShortRegisterArray.cs index 918a620..79cc2d6 100644 --- a/DeviceSQL/Types/ModbusMaster/ShortRegisterArray.cs +++ b/DeviceSQL.SQLTypes/ModbusMaster/ShortRegisterArray.cs @@ -9,7 +9,7 @@ #endregion -namespace DeviceSQL.Types.MODBUSMaster +namespace DeviceSQL.SQLTypes.MODBUSMaster { [Serializable()] [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = -1)] diff --git a/DeviceSQL/Types/ModbusMaster/StringRegister.cs b/DeviceSQL.SQLTypes/ModbusMaster/StringRegister.cs similarity index 98% rename from DeviceSQL/Types/ModbusMaster/StringRegister.cs rename to DeviceSQL.SQLTypes/ModbusMaster/StringRegister.cs index 945c0b1..c66f5a1 100644 --- a/DeviceSQL/Types/ModbusMaster/StringRegister.cs +++ b/DeviceSQL.SQLTypes/ModbusMaster/StringRegister.cs @@ -7,7 +7,7 @@ #endregion -namespace DeviceSQL.Types.MODBUSMaster +namespace DeviceSQL.SQLTypes.MODBUSMaster { [Serializable()] [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = 264)] diff --git a/DeviceSQL/Types/ModbusMaster/StringRegisterArray.cs b/DeviceSQL.SQLTypes/ModbusMaster/StringRegisterArray.cs similarity index 99% rename from DeviceSQL/Types/ModbusMaster/StringRegisterArray.cs rename to DeviceSQL.SQLTypes/ModbusMaster/StringRegisterArray.cs index c827f91..3ffb171 100644 --- a/DeviceSQL/Types/ModbusMaster/StringRegisterArray.cs +++ b/DeviceSQL.SQLTypes/ModbusMaster/StringRegisterArray.cs @@ -9,7 +9,7 @@ #endregion -namespace DeviceSQL.Types.MODBUSMaster +namespace DeviceSQL.SQLTypes.MODBUSMaster { [Serializable()] [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = -1)] diff --git a/DeviceSQL.TestHarness/Properties/AssemblyInfo.cs b/DeviceSQL.SQLTypes/Properties/AssemblyInfo.cs similarity index 78% rename from DeviceSQL.TestHarness/Properties/AssemblyInfo.cs rename to DeviceSQL.SQLTypes/Properties/AssemblyInfo.cs index 6b01e4f..e2577ec 100644 --- a/DeviceSQL.TestHarness/Properties/AssemblyInfo.cs +++ b/DeviceSQL.SQLTypes/Properties/AssemblyInfo.cs @@ -5,12 +5,12 @@ // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with an assembly. -[assembly: AssemblyTitle("DeviceSQL.TestHarness")] -[assembly: AssemblyDescription("")] +[assembly: AssemblyTitle("DeviceSQL.SQLTypes")] +[assembly: AssemblyDescription("DeviceSQL.SQLTypes")] [assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("DeviceSQL.TestHarness")] -[assembly: AssemblyCopyright("Copyright © 2017")] +[assembly: AssemblyCompany("CloudSonix")] +[assembly: AssemblyProduct("DeviceSQL")] +[assembly: AssemblyCopyright("© CloudSonix. All rights reserved.")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -20,7 +20,7 @@ [assembly: ComVisible(false)] // The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("ff09f40d-a515-4abb-9db1-21d9d1f2793e")] +[assembly: Guid("91b62cd7-190b-4727-b1eb-66b51913709d")] // Version information for an assembly consists of the following four values: // diff --git a/DeviceSQL/Types/ROCMaster/AlarmRecord.cs b/DeviceSQL.SQLTypes/ROCMaster/AlarmRecord.cs similarity index 98% rename from DeviceSQL/Types/ROCMaster/AlarmRecord.cs rename to DeviceSQL.SQLTypes/ROCMaster/AlarmRecord.cs index 86da088..e11ceef 100644 --- a/DeviceSQL/Types/ROCMaster/AlarmRecord.cs +++ b/DeviceSQL.SQLTypes/ROCMaster/AlarmRecord.cs @@ -8,7 +8,7 @@ #endregion -namespace DeviceSQL.Types.ROCMaster +namespace DeviceSQL.SQLTypes.ROCMaster { [Serializable()] [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = 27)] diff --git a/DeviceSQL/Types/ROCMaster/AlarmRecordArray.cs b/DeviceSQL.SQLTypes/ROCMaster/AlarmRecordArray.cs similarity index 99% rename from DeviceSQL/Types/ROCMaster/AlarmRecordArray.cs rename to DeviceSQL.SQLTypes/ROCMaster/AlarmRecordArray.cs index b3217d6..098b7fa 100644 --- a/DeviceSQL/Types/ROCMaster/AlarmRecordArray.cs +++ b/DeviceSQL.SQLTypes/ROCMaster/AlarmRecordArray.cs @@ -9,7 +9,7 @@ #endregion -namespace DeviceSQL.Types.ROCMaster +namespace DeviceSQL.SQLTypes.ROCMaster { [Serializable()] [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = -1)] diff --git a/DeviceSQL/Types/ROCMaster/ArchiveInformation.cs b/DeviceSQL.SQLTypes/ROCMaster/ArchiveInformation.cs similarity index 99% rename from DeviceSQL/Types/ROCMaster/ArchiveInformation.cs rename to DeviceSQL.SQLTypes/ROCMaster/ArchiveInformation.cs index 82b3b9a..cdfb814 100644 --- a/DeviceSQL/Types/ROCMaster/ArchiveInformation.cs +++ b/DeviceSQL.SQLTypes/ROCMaster/ArchiveInformation.cs @@ -8,7 +8,7 @@ #endregion -namespace DeviceSQL.Types.ROCMaster +namespace DeviceSQL.SQLTypes.ROCMaster { [Serializable()] [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = 27)] diff --git a/DeviceSQL/Types/ROCMaster/AuditLogRecord.cs b/DeviceSQL.SQLTypes/ROCMaster/AuditLogRecord.cs similarity index 99% rename from DeviceSQL/Types/ROCMaster/AuditLogRecord.cs rename to DeviceSQL.SQLTypes/ROCMaster/AuditLogRecord.cs index 829f3a7..5e47e38 100644 --- a/DeviceSQL/Types/ROCMaster/AuditLogRecord.cs +++ b/DeviceSQL.SQLTypes/ROCMaster/AuditLogRecord.cs @@ -1,6 +1,7 @@ #region Imported Types using DeviceSQL.Device.ROC.Data; +using DeviceSQL.Devices.Device.ROC.Data; using Microsoft.SqlServer.Server; using System; using System.Data.SqlTypes; @@ -9,7 +10,7 @@ #endregion -namespace DeviceSQL.Types.ROCMaster +namespace DeviceSQL.SQLTypes.ROCMaster { [Serializable()] [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = 29)] diff --git a/DeviceSQL/Types/ROCMaster/AuditLogRecordArray.cs b/DeviceSQL.SQLTypes/ROCMaster/AuditLogRecordArray.cs similarity index 99% rename from DeviceSQL/Types/ROCMaster/AuditLogRecordArray.cs rename to DeviceSQL.SQLTypes/ROCMaster/AuditLogRecordArray.cs index e435c0d..459576b 100644 --- a/DeviceSQL/Types/ROCMaster/AuditLogRecordArray.cs +++ b/DeviceSQL.SQLTypes/ROCMaster/AuditLogRecordArray.cs @@ -9,7 +9,7 @@ #endregion -namespace DeviceSQL.Types.ROCMaster +namespace DeviceSQL.SQLTypes.ROCMaster { [Serializable()] [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = -1)] diff --git a/DeviceSQL/Types/ROCMaster/EventRecord.cs b/DeviceSQL.SQLTypes/ROCMaster/EventRecord.cs similarity index 99% rename from DeviceSQL/Types/ROCMaster/EventRecord.cs rename to DeviceSQL.SQLTypes/ROCMaster/EventRecord.cs index aa47e75..6319a7f 100644 --- a/DeviceSQL/Types/ROCMaster/EventRecord.cs +++ b/DeviceSQL.SQLTypes/ROCMaster/EventRecord.cs @@ -1,6 +1,7 @@ #region Imported Types using DeviceSQL.Device.ROC.Data; +using DeviceSQL.Devices.Device.ROC.Data; using Microsoft.SqlServer.Server; using System; using System.Data.SqlTypes; @@ -9,7 +10,7 @@ #endregion -namespace DeviceSQL.Types.ROCMaster +namespace DeviceSQL.SQLTypes.ROCMaster { [Serializable()] [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = 27)] diff --git a/DeviceSQL/Types/ROCMaster/EventRecordArray.cs b/DeviceSQL.SQLTypes/ROCMaster/EventRecordArray.cs similarity index 99% rename from DeviceSQL/Types/ROCMaster/EventRecordArray.cs rename to DeviceSQL.SQLTypes/ROCMaster/EventRecordArray.cs index 0926089..05a7a36 100644 --- a/DeviceSQL/Types/ROCMaster/EventRecordArray.cs +++ b/DeviceSQL.SQLTypes/ROCMaster/EventRecordArray.cs @@ -9,7 +9,7 @@ #endregion -namespace DeviceSQL.Types.ROCMaster +namespace DeviceSQL.SQLTypes.ROCMaster { [Serializable()] [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = -1)] diff --git a/DeviceSQL/Types/ROCMaster/FSTInformation.cs b/DeviceSQL.SQLTypes/ROCMaster/FSTInformation.cs similarity index 99% rename from DeviceSQL/Types/ROCMaster/FSTInformation.cs rename to DeviceSQL.SQLTypes/ROCMaster/FSTInformation.cs index 4c2f27c..93d216e 100644 --- a/DeviceSQL/Types/ROCMaster/FSTInformation.cs +++ b/DeviceSQL.SQLTypes/ROCMaster/FSTInformation.cs @@ -7,7 +7,7 @@ #endregion -namespace DeviceSQL.Types.ROCMaster +namespace DeviceSQL.SQLTypes.ROCMaster { [Serializable()] [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = -1)] diff --git a/DeviceSQL/Types/ROCMaster/HistoryRecord.cs b/DeviceSQL.SQLTypes/ROCMaster/HistoryRecord.cs similarity index 99% rename from DeviceSQL/Types/ROCMaster/HistoryRecord.cs rename to DeviceSQL.SQLTypes/ROCMaster/HistoryRecord.cs index 91bec24..505db2f 100644 --- a/DeviceSQL/Types/ROCMaster/HistoryRecord.cs +++ b/DeviceSQL.SQLTypes/ROCMaster/HistoryRecord.cs @@ -8,7 +8,7 @@ #endregion -namespace DeviceSQL.Types.ROCMaster +namespace DeviceSQL.SQLTypes.ROCMaster { [Serializable()] [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = 11)] diff --git a/DeviceSQL/Types/ROCMaster/HistoryRecordArray.cs b/DeviceSQL.SQLTypes/ROCMaster/HistoryRecordArray.cs similarity index 99% rename from DeviceSQL/Types/ROCMaster/HistoryRecordArray.cs rename to DeviceSQL.SQLTypes/ROCMaster/HistoryRecordArray.cs index 471c98c..0c8097a 100644 --- a/DeviceSQL/Types/ROCMaster/HistoryRecordArray.cs +++ b/DeviceSQL.SQLTypes/ROCMaster/HistoryRecordArray.cs @@ -9,7 +9,7 @@ #endregion -namespace DeviceSQL.Types.ROCMaster +namespace DeviceSQL.SQLTypes.ROCMaster { [Serializable()] [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = -1)] diff --git a/DeviceSQL/Types/ROCMaster/Parameter.cs b/DeviceSQL.SQLTypes/ROCMaster/Parameter.cs similarity index 99% rename from DeviceSQL/Types/ROCMaster/Parameter.cs rename to DeviceSQL.SQLTypes/ROCMaster/Parameter.cs index 6cab5b7..af587c9 100644 --- a/DeviceSQL/Types/ROCMaster/Parameter.cs +++ b/DeviceSQL.SQLTypes/ROCMaster/Parameter.cs @@ -1,6 +1,7 @@ #region Imported Types using DeviceSQL.Device.ROC.Data; +using DeviceSQL.Devices.Device.ROC.Data; using Microsoft.SqlServer.Server; using System; using System.Data.SqlTypes; @@ -8,7 +9,7 @@ #endregion -namespace DeviceSQL.Types.ROCMaster +namespace DeviceSQL.SQLTypes.ROCMaster { [Serializable()] diff --git a/DeviceSQL/Types/ROCMaster/ParameterArray.cs b/DeviceSQL.SQLTypes/ROCMaster/ParameterArray.cs similarity index 99% rename from DeviceSQL/Types/ROCMaster/ParameterArray.cs rename to DeviceSQL.SQLTypes/ROCMaster/ParameterArray.cs index b9a676a..97e4824 100644 --- a/DeviceSQL/Types/ROCMaster/ParameterArray.cs +++ b/DeviceSQL.SQLTypes/ROCMaster/ParameterArray.cs @@ -9,7 +9,7 @@ #endregion -namespace DeviceSQL.Types.ROCMaster +namespace DeviceSQL.SQLTypes.ROCMaster { [Serializable()] diff --git a/DeviceSQL/Types/ROCMaster/ROCPlusAlarmRecord.cs b/DeviceSQL.SQLTypes/ROCMaster/ROCPlusAlarmRecord.cs similarity index 98% rename from DeviceSQL/Types/ROCMaster/ROCPlusAlarmRecord.cs rename to DeviceSQL.SQLTypes/ROCMaster/ROCPlusAlarmRecord.cs index 3ac0be1..61deae3 100644 --- a/DeviceSQL/Types/ROCMaster/ROCPlusAlarmRecord.cs +++ b/DeviceSQL.SQLTypes/ROCMaster/ROCPlusAlarmRecord.cs @@ -1,6 +1,7 @@ #region Imported Types using DeviceSQL.Device.ROC.Data; +using DeviceSQL.Devices.Device.ROC.Data; using Microsoft.SqlServer.Server; using System; using System.Data.SqlTypes; @@ -9,7 +10,7 @@ #endregion -namespace DeviceSQL.Types.ROCMaster +namespace DeviceSQL.SQLTypes.ROCMaster { [Serializable()] [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = 28)] diff --git a/DeviceSQL/Types/ROCMaster/ROCPlusAlarmRecordArray.cs b/DeviceSQL.SQLTypes/ROCMaster/ROCPlusAlarmRecordArray.cs similarity index 99% rename from DeviceSQL/Types/ROCMaster/ROCPlusAlarmRecordArray.cs rename to DeviceSQL.SQLTypes/ROCMaster/ROCPlusAlarmRecordArray.cs index 5d95eff..af950c8 100644 --- a/DeviceSQL/Types/ROCMaster/ROCPlusAlarmRecordArray.cs +++ b/DeviceSQL.SQLTypes/ROCMaster/ROCPlusAlarmRecordArray.cs @@ -9,7 +9,7 @@ #endregion -namespace DeviceSQL.Types.ROCMaster +namespace DeviceSQL.SQLTypes.ROCMaster { [Serializable()] [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = -1)] diff --git a/DeviceSQL/Types/ROCMaster/ROCPlusEventRecord.cs b/DeviceSQL.SQLTypes/ROCMaster/ROCPlusEventRecord.cs similarity index 99% rename from DeviceSQL/Types/ROCMaster/ROCPlusEventRecord.cs rename to DeviceSQL.SQLTypes/ROCMaster/ROCPlusEventRecord.cs index 8c6cf9d..533a872 100644 --- a/DeviceSQL/Types/ROCMaster/ROCPlusEventRecord.cs +++ b/DeviceSQL.SQLTypes/ROCMaster/ROCPlusEventRecord.cs @@ -1,6 +1,7 @@ #region Imported Types using DeviceSQL.Device.ROC.Data; +using DeviceSQL.Devices.Device.ROC.Data; using Microsoft.SqlServer.Server; using System; using System.Data.SqlTypes; @@ -9,7 +10,7 @@ #endregion -namespace DeviceSQL.Types.ROCMaster +namespace DeviceSQL.SQLTypes.ROCMaster { [Serializable()] [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = 27)] diff --git a/DeviceSQL/Types/ROCMaster/ROCPlusEventRecordArray.cs b/DeviceSQL.SQLTypes/ROCMaster/ROCPlusEventRecordArray.cs similarity index 99% rename from DeviceSQL/Types/ROCMaster/ROCPlusEventRecordArray.cs rename to DeviceSQL.SQLTypes/ROCMaster/ROCPlusEventRecordArray.cs index 35ae73f..6ef2e3a 100644 --- a/DeviceSQL/Types/ROCMaster/ROCPlusEventRecordArray.cs +++ b/DeviceSQL.SQLTypes/ROCMaster/ROCPlusEventRecordArray.cs @@ -9,7 +9,7 @@ #endregion -namespace DeviceSQL.Types.ROCMaster +namespace DeviceSQL.SQLTypes.ROCMaster { [Serializable()] [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = -1)] diff --git a/DeviceSQL/Types/ROCMaster/ROCPlusHistoryPointArray.cs b/DeviceSQL.SQLTypes/ROCMaster/ROCPlusHistoryPointArray.cs similarity index 99% rename from DeviceSQL/Types/ROCMaster/ROCPlusHistoryPointArray.cs rename to DeviceSQL.SQLTypes/ROCMaster/ROCPlusHistoryPointArray.cs index 0339928..6ee3e53 100644 --- a/DeviceSQL/Types/ROCMaster/ROCPlusHistoryPointArray.cs +++ b/DeviceSQL.SQLTypes/ROCMaster/ROCPlusHistoryPointArray.cs @@ -9,7 +9,7 @@ #endregion -namespace DeviceSQL.Types.ROCMaster +namespace DeviceSQL.SQLTypes.ROCMaster { [Serializable()] [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = -1)] diff --git a/DeviceSQL/Types/ROCMaster/ROCPlusHistoryRecord.cs b/DeviceSQL.SQLTypes/ROCMaster/ROCPlusHistoryRecord.cs similarity index 99% rename from DeviceSQL/Types/ROCMaster/ROCPlusHistoryRecord.cs rename to DeviceSQL.SQLTypes/ROCMaster/ROCPlusHistoryRecord.cs index ee7bdc9..57ab050 100644 --- a/DeviceSQL/Types/ROCMaster/ROCPlusHistoryRecord.cs +++ b/DeviceSQL.SQLTypes/ROCMaster/ROCPlusHistoryRecord.cs @@ -7,7 +7,7 @@ #endregion -namespace DeviceSQL.Types.ROCMaster +namespace DeviceSQL.SQLTypes.ROCMaster { [Serializable()] [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = 15)] diff --git a/DeviceSQL/Types/ROCMaster/ROCPlusHistoryRecordArray.cs b/DeviceSQL.SQLTypes/ROCMaster/ROCPlusHistoryRecordArray.cs similarity index 99% rename from DeviceSQL/Types/ROCMaster/ROCPlusHistoryRecordArray.cs rename to DeviceSQL.SQLTypes/ROCMaster/ROCPlusHistoryRecordArray.cs index c056a31..8727010 100644 --- a/DeviceSQL/Types/ROCMaster/ROCPlusHistoryRecordArray.cs +++ b/DeviceSQL.SQLTypes/ROCMaster/ROCPlusHistoryRecordArray.cs @@ -9,7 +9,7 @@ #endregion -namespace DeviceSQL.Types.ROCMaster +namespace DeviceSQL.SQLTypes.ROCMaster { [Serializable()] [SqlUserDefinedType(Format.UserDefined, IsByteOrdered = false, IsFixedLength = false, MaxByteSize = -1)] diff --git a/DeviceSQL.Service/API/ChannelController.cs b/DeviceSQL.Service/API/ChannelController.cs new file mode 100644 index 0000000..629fa43 --- /dev/null +++ b/DeviceSQL.Service/API/ChannelController.cs @@ -0,0 +1,128 @@ +using DeviceSQL.IO.Channels; +using DeviceSQL.Service.IOC; +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Net.Sockets; +using System.Text; +using System.Threading.Tasks; +using System.Web.Http; + +namespace DeviceSQL.Service.API +{ + public class ChannelController : ApiController + { + + public ConcurrentDictionary ChannelConcurrentDictionary + { + get + { + return SimpleIOC.Default.GetInstance>(); + } + } + + public EventLog EventLog + { + get + { + return SimpleIOC.Default.GetInstance(); + } + } + + [HttpGet] + [Route("api/Channels/GetChannels")] + public IEnumerable GetChannels() + { + foreach (var channelKeyValuePair in ChannelConcurrentDictionary) + { + yield return channelKeyValuePair.Value; + } + } + + [HttpGet] + [Route("api/Channels/RemoveChannel")] + public void RemoveChannel(string channelName) + { + if (ChannelConcurrentDictionary.TryRemove(channelName, out IChannel channel)) + { + try + { + channel.Dispose(); + } + catch (Exception ex) + { + EventLog.WriteEntry($"Error disposing channel: {ex.Message}", EventLogEntryType.Error); + throw new Exception($"Error disposing channel: {ex.Message}"); + } + } + else + { + EventLog.WriteEntry("Channel does not exist", EventLogEntryType.Error); + throw new Exception("Channel does not exist"); + } + } + + [HttpGet] + [Route("api/Channels/AddTcpChannel")] + public void AddTcpChannel(string channelName, string hostName, int hostPort, int connectionAttempts, int connectionRetryDelay, int readTimeout, int writeTimeout) + { + int currentConnectAttempts = 0; + TcpChannel tcpChannel; + + + + try + { + tcpChannel = new TcpChannel() + { + HostName = hostName, + HostPort = hostPort, + ConnectionAttempts = connectionAttempts, + ConnectionRetryDelay = connectionRetryDelay, + TcpClientReadTimeout = readTimeout, + TcpClientWriteTimeout = writeTimeout + }; + + if (ChannelConcurrentDictionary.TryAdd(channelName, tcpChannel)) + { + + Connect: + currentConnectAttempts++; + + try + { + tcpChannel.TcpClient = new TcpClient(); + tcpChannel.TcpClient.Connect(tcpChannel.HostName, tcpChannel.HostPort); + tcpChannel.ReadTimeout = tcpChannel.TcpClientReadTimeout; + tcpChannel.WriteTimeout = tcpChannel.TcpClientWriteTimeout; + } + catch (SocketException) + { + if (currentConnectAttempts > tcpChannel.ConnectionAttempts) + { + throw new Exception("Unable to connect to host"); + } + else + { + System.Threading.Thread.Sleep(tcpChannel.ConnectionRetryDelay); + goto Connect; + } + } + } + else + { + EventLog.WriteEntry("TCP channel already exists", EventLogEntryType.Error); + throw new Exception("TCP channel already exists"); + } + } + catch (Exception ex) + { + EventLog.WriteEntry($"Error creating TCP channel: {ex.Message}", EventLogEntryType.Error); + throw new Exception($"Error creating TCP channel: {ex.Message}"); + } + } + } +} diff --git a/DeviceSQL.Service/App.config b/DeviceSQL.Service/App.config new file mode 100644 index 0000000..f72ba73 --- /dev/null +++ b/DeviceSQL.Service/App.config @@ -0,0 +1,30 @@ + + + + +
+ + + + + + + + + http://localhost:8080 + + + + + + + + + + + + + + + + diff --git a/DeviceSQL.Service/DeviceSQL.Service.csproj b/DeviceSQL.Service/DeviceSQL.Service.csproj new file mode 100644 index 0000000..985f3b1 --- /dev/null +++ b/DeviceSQL.Service/DeviceSQL.Service.csproj @@ -0,0 +1,153 @@ + + + + + Debug + AnyCPU + {F7B38332-A678-424C-A67E-25CF36C2430D} + WinExe + DeviceSQL.Service + DeviceSQL.Service + v4.8 + 512 + true + + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + false + + + + + + + + ..\packages\Microsoft.Owin.4.0.1\lib\net45\Microsoft.Owin.dll + + + ..\packages\Microsoft.Owin.Diagnostics.4.0.1\lib\net45\Microsoft.Owin.Diagnostics.dll + + + ..\packages\Microsoft.Owin.Host.HttpListener.4.0.1\lib\net45\Microsoft.Owin.Host.HttpListener.dll + + + ..\packages\Microsoft.Owin.Hosting.4.0.1\lib\net45\Microsoft.Owin.Hosting.dll + + + ..\packages\Newtonsoft.Json.12.0.2\lib\net45\Newtonsoft.Json.dll + + + ..\packages\Owin.1.0\lib\net40\Owin.dll + + + + + + + ..\packages\Microsoft.AspNet.WebApi.Client.5.2.7\lib\net45\System.Net.Http.Formatting.dll + + + + ..\packages\Microsoft.AspNet.WebApi.Core.5.2.7\lib\net45\System.Web.Http.dll + + + ..\packages\Microsoft.AspNet.WebApi.Owin.5.2.7\lib\net45\System.Web.Http.Owin.dll + + + + + + + + + + + + + + + + Component + + + ProjectInstaller.cs + + + Component + + + DeviceSqlService.cs + + + + + True + True + Settings.settings + + + + + + + + + + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + + + DeviceSqlService.cs + + + ProjectInstaller.cs + + + + + {5deadadf-be60-4774-80c6-97b3a83fa289} + DeviceSQL.Devices.Common + + + {0869e7fe-4fac-4fc5-a2a8-313f410cf8cd} + DeviceSQL.Devices.Modbus + + + {af0e4b64-f2c2-4459-a518-9aa905ff6f0f} + DeviceSQL.Devices.ROC + + + {256ca566-5436-4543-bc13-d2480bee70c2} + DeviceSQL.SQLTypes.ROC + + + + + + + + \ No newline at end of file diff --git a/DeviceSQL.Service/DeviceSqlService.Designer.cs b/DeviceSQL.Service/DeviceSqlService.Designer.cs new file mode 100644 index 0000000..d018be2 --- /dev/null +++ b/DeviceSQL.Service/DeviceSqlService.Designer.cs @@ -0,0 +1,40 @@ +namespace DeviceSQL.Service +{ + partial class DeviceSqlService + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + // + // DeviceSqlService + // + this.ServiceName = "DeviceSqlSvc"; + + } + + #endregion + } +} diff --git a/DeviceSQL.Service/DeviceSqlService.cs b/DeviceSQL.Service/DeviceSqlService.cs new file mode 100644 index 0000000..16f6f98 --- /dev/null +++ b/DeviceSQL.Service/DeviceSqlService.cs @@ -0,0 +1,66 @@ +using DeviceSQL.Device; +using DeviceSQL.IO.Channels; +using DeviceSQL.Service.IOC; +using Microsoft.Owin.Hosting; +using System; +using System.Collections.Concurrent; +using System.Diagnostics; +using System.ServiceProcess; + +namespace DeviceSQL.Service +{ + public partial class DeviceSqlService : ServiceBase + { + + private IDisposable webAppServer = null; + + public DeviceSqlService() + { + InitializeComponent(); + } + + protected override void OnStart(string[] args) + { + SimpleIOC.Default.Register(() => { return new ConcurrentDictionary(); }); + SimpleIOC.Default.Register(() => { return new ConcurrentDictionary(); }); + SimpleIOC.Default.Register(() => { return EventLog; }); + webAppServer = WebApp.Start(url: Properties.Settings.Default.BaseAddress); + } + + protected override void OnStop() + { + if (webAppServer != null) + { + try + { + webAppServer.Dispose(); + } + catch (Exception ex) + { + EventLog.WriteEntry($"Unable to dispose web app server: {ex.Message}", EventLogEntryType.Error); + } + } + + if (SimpleIOC.Default.ContainsCreated>()) + { + + var channelConcurrentDictionary = SimpleIOC.Default.GetInstance>(); + + foreach (var channelKeyValuePair in channelConcurrentDictionary) + { + try + { + channelKeyValuePair.Value.Dispose(); + } + catch (Exception ex) + { + EventLog.WriteEntry($"Unable to dispose channel: {ex.Message}", EventLogEntryType.Error); + } + } + } + + base.OnStop(); + + } + } +} diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/Properties/Resources.resx b/DeviceSQL.Service/DeviceSqlService.resx similarity index 87% rename from DeviceSQL.Utilities.RealFLOMappingGenerator/Properties/Resources.resx rename to DeviceSQL.Service/DeviceSqlService.resx index af7dbeb..e5858cc 100644 --- a/DeviceSQL.Utilities.RealFLOMappingGenerator/Properties/Resources.resx +++ b/DeviceSQL.Service/DeviceSqlService.resx @@ -46,7 +46,7 @@ mimetype: application/x-microsoft.net.object.binary.base64 value : The object must be serialized with - : System.Serialization.Formatters.Binary.BinaryFormatter + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter : and then encoded with base64 encoding. mimetype: application/x-microsoft.net.object.soap.base64 @@ -60,6 +60,7 @@ : and then encoded with base64 encoding. --> + @@ -68,9 +69,10 @@ - + + @@ -85,9 +87,10 @@ - + + @@ -109,9 +112,12 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + False + \ No newline at end of file diff --git a/DeviceSQL/IOC/ISimpleIOC.cs b/DeviceSQL.Service/IOC/ISimpleIOC.cs similarity index 99% rename from DeviceSQL/IOC/ISimpleIOC.cs rename to DeviceSQL.Service/IOC/ISimpleIOC.cs index a22db5e..54fec51 100644 --- a/DeviceSQL/IOC/ISimpleIOC.cs +++ b/DeviceSQL.Service/IOC/ISimpleIOC.cs @@ -13,12 +13,13 @@ // // **************************************************************************** -using DeviceSQL.ServiceLocation; + +using DeviceSQL.Service.ServiceLocation; using System; using System.Diagnostics.CodeAnalysis; -namespace DeviceSQL.IOC +namespace DeviceSQL.Service.IOC { /// /// A very simple IOC container with basic functionality needed to register and resolve diff --git a/DeviceSQL/IOC/PreferredConstructor.cs b/DeviceSQL.Service/IOC/PreferredConstructor.cs similarity index 97% rename from DeviceSQL/IOC/PreferredConstructor.cs rename to DeviceSQL.Service/IOC/PreferredConstructor.cs index 1bf2921..aa69001 100644 --- a/DeviceSQL/IOC/PreferredConstructor.cs +++ b/DeviceSQL.Service/IOC/PreferredConstructor.cs @@ -15,7 +15,7 @@ using System; -namespace DeviceSQL.IOC +namespace DeviceSQL.Service.IOC { /// /// When used with the SimpleIoc container, specifies which constructor diff --git a/DeviceSQL/IOC/SimpleIOC.cs b/DeviceSQL.Service/IOC/SimpleIOC.cs similarity index 99% rename from DeviceSQL/IOC/SimpleIOC.cs rename to DeviceSQL.Service/IOC/SimpleIOC.cs index 55ba599..f34aa08 100644 --- a/DeviceSQL/IOC/SimpleIOC.cs +++ b/DeviceSQL.Service/IOC/SimpleIOC.cs @@ -14,7 +14,7 @@ // BL0005 // **************************************************************************** -using DeviceSQL.ServiceLocation; +using DeviceSQL.Service.ServiceLocation; using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; @@ -22,7 +22,7 @@ using System.Linq; using System.Reflection; -namespace DeviceSQL.IOC +namespace DeviceSQL.Service.IOC { /// /// A very simple IOC container with basic functionality needed to register and resolve diff --git a/DeviceSQL.Service/Program.cs b/DeviceSQL.Service/Program.cs new file mode 100644 index 0000000..70e2ce3 --- /dev/null +++ b/DeviceSQL.Service/Program.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.ServiceProcess; +using System.Text; +using System.Threading.Tasks; + +namespace DeviceSQL.Service +{ + static class Program + { + /// + /// The main entry point for the application. + /// + static void Main() + { + ServiceBase[] ServicesToRun; + ServicesToRun = new ServiceBase[] + { + new DeviceSqlService() + }; + ServiceBase.Run(ServicesToRun); + } + } +} diff --git a/DeviceSQL.Service/ProjectInstaller.Designer.cs b/DeviceSQL.Service/ProjectInstaller.Designer.cs new file mode 100644 index 0000000..4a98b7d --- /dev/null +++ b/DeviceSQL.Service/ProjectInstaller.Designer.cs @@ -0,0 +1,60 @@ +namespace DeviceSQL.Service +{ + partial class ProjectInstaller + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.serviceProcessInstaller = new System.ServiceProcess.ServiceProcessInstaller(); + this.serviceInstaller = new System.ServiceProcess.ServiceInstaller(); + // + // serviceProcessInstaller + // + this.serviceProcessInstaller.Account = System.ServiceProcess.ServiceAccount.NetworkService; + this.serviceProcessInstaller.Password = null; + this.serviceProcessInstaller.Username = null; + // + // serviceInstaller + // + this.serviceInstaller.Description = "DeviceSQL Web API REST Services"; + this.serviceInstaller.DisplayName = "DeviceSQL Service"; + this.serviceInstaller.ServiceName = "DeviceSqlSvc"; + this.serviceInstaller.StartType = System.ServiceProcess.ServiceStartMode.Automatic; + // + // ProjectInstaller + // + this.Installers.AddRange(new System.Configuration.Install.Installer[] { + this.serviceProcessInstaller, + this.serviceInstaller}); + + } + + #endregion + + private System.ServiceProcess.ServiceProcessInstaller serviceProcessInstaller; + private System.ServiceProcess.ServiceInstaller serviceInstaller; + } +} \ No newline at end of file diff --git a/DeviceSQL.Service/ProjectInstaller.cs b/DeviceSQL.Service/ProjectInstaller.cs new file mode 100644 index 0000000..bda0512 --- /dev/null +++ b/DeviceSQL.Service/ProjectInstaller.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.ComponentModel; +using System.Configuration.Install; +using System.Linq; +using System.Threading.Tasks; + +namespace DeviceSQL.Service +{ + [RunInstaller(true)] + public partial class ProjectInstaller : System.Configuration.Install.Installer + { + public ProjectInstaller() + { + InitializeComponent(); + } + } +} diff --git a/DeviceSQL.Service/ProjectInstaller.resx b/DeviceSQL.Service/ProjectInstaller.resx new file mode 100644 index 0000000..f92835d --- /dev/null +++ b/DeviceSQL.Service/ProjectInstaller.resx @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 65 + + + 196, 17 + + + False + + \ No newline at end of file diff --git a/DeviceSQL.Utilities.DeploymentScriptFormatter/Properties/AssemblyInfo.cs b/DeviceSQL.Service/Properties/AssemblyInfo.cs similarity index 75% rename from DeviceSQL.Utilities.DeploymentScriptFormatter/Properties/AssemblyInfo.cs rename to DeviceSQL.Service/Properties/AssemblyInfo.cs index a6d38c3..c971418 100644 --- a/DeviceSQL.Utilities.DeploymentScriptFormatter/Properties/AssemblyInfo.cs +++ b/DeviceSQL.Service/Properties/AssemblyInfo.cs @@ -5,14 +5,15 @@ // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with an assembly. -[assembly: AssemblyTitle("DeviceSQL.Utilities.DeploymentScriptFormatter")] -[assembly: AssemblyDescription("")] +[assembly: AssemblyTitle("DeviceSQL.Service")] +[assembly: AssemblyDescription("DeviceSQL.Service")] [assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("DeviceSQL.Utilities.DeploymentScriptFormatter")] -[assembly: AssemblyCopyright("Copyright © 2017")] +[assembly: AssemblyCompany("CloudSonix")] +[assembly: AssemblyProduct("DeviceSQL")] +[assembly: AssemblyCopyright("© CloudSonix. All rights reserved.")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] +[assembly: AssemblyKeyFile("../DeviceSQL-Key.snk")] // Setting ComVisible to false makes the types in this assembly not visible // to COM components. If you need to access a type in this assembly from @@ -20,7 +21,7 @@ [assembly: ComVisible(false)] // The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("0ea05da7-635f-4018-9f33-0d3419374c9f")] +[assembly: Guid("f7b38332-a678-424c-a67e-25cf36c2430d")] // Version information for an assembly consists of the following four values: // diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/Properties/Settings.Designer.cs b/DeviceSQL.Service/Properties/Settings.Designer.cs similarity index 60% rename from DeviceSQL.Utilities.RealFLOMappingGenerator/Properties/Settings.Designer.cs rename to DeviceSQL.Service/Properties/Settings.Designer.cs index f7bf38d..834a47d 100644 --- a/DeviceSQL.Utilities.RealFLOMappingGenerator/Properties/Settings.Designer.cs +++ b/DeviceSQL.Service/Properties/Settings.Designer.cs @@ -8,23 +8,28 @@ // //------------------------------------------------------------------------------ -namespace DeviceSQL.Utilities.RealFLOMappingGenerator.Properties -{ - - +namespace DeviceSQL.Service.Properties { + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] - internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase - { - + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.2.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); - - public static Settings Default - { - get - { + + public static Settings Default { + get { return defaultInstance; } } + + [global::System.Configuration.ApplicationScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("http://localhost:8080")] + public string BaseAddress { + get { + return ((string)(this["BaseAddress"])); + } + } } } diff --git a/DeviceSQL.Service/Properties/Settings.settings b/DeviceSQL.Service/Properties/Settings.settings new file mode 100644 index 0000000..467b977 --- /dev/null +++ b/DeviceSQL.Service/Properties/Settings.settings @@ -0,0 +1,9 @@ + + + + + + http://localhost:8080 + + + \ No newline at end of file diff --git a/DeviceSQL/ServiceLocation/ActivationException.cs b/DeviceSQL.Service/ServiceLocation/ActivationException.cs similarity index 96% rename from DeviceSQL/ServiceLocation/ActivationException.cs rename to DeviceSQL.Service/ServiceLocation/ActivationException.cs index 6224ab7..54c7e32 100644 --- a/DeviceSQL/ServiceLocation/ActivationException.cs +++ b/DeviceSQL.Service/ServiceLocation/ActivationException.cs @@ -4,7 +4,7 @@ #endregion -namespace DeviceSQL.ServiceLocation +namespace DeviceSQL.Service.ServiceLocation { /// /// The standard exception thrown when a ServiceLocator has an error in resolving an object. diff --git a/DeviceSQL/ServiceLocation/IServiceLocator.cs b/DeviceSQL.Service/ServiceLocation/IServiceLocator.cs similarity index 98% rename from DeviceSQL/ServiceLocation/IServiceLocator.cs rename to DeviceSQL.Service/ServiceLocation/IServiceLocator.cs index abcb9e3..92eae8f 100644 --- a/DeviceSQL/ServiceLocation/IServiceLocator.cs +++ b/DeviceSQL.Service/ServiceLocation/IServiceLocator.cs @@ -5,7 +5,7 @@ #endregion -namespace DeviceSQL.ServiceLocation +namespace DeviceSQL.Service.ServiceLocation { /// /// The generic Service Locator interface. This interface is used diff --git a/DeviceSQL/ServiceLocation/ServiceLocator.cs b/DeviceSQL.Service/ServiceLocation/ServiceLocator.cs similarity index 96% rename from DeviceSQL/ServiceLocation/ServiceLocator.cs rename to DeviceSQL.Service/ServiceLocation/ServiceLocator.cs index b812366..4582b5d 100644 --- a/DeviceSQL/ServiceLocation/ServiceLocator.cs +++ b/DeviceSQL.Service/ServiceLocation/ServiceLocator.cs @@ -4,7 +4,7 @@ #endregion -namespace DeviceSQL.ServiceLocation +namespace DeviceSQL.Service.ServiceLocation { /// /// This class provides the ambient container for this application. If your diff --git a/DeviceSQL/ServiceLocation/ServiceLocatorImplBase.cs b/DeviceSQL.Service/ServiceLocation/ServiceLocatorImplBase.cs similarity index 99% rename from DeviceSQL/ServiceLocation/ServiceLocatorImplBase.cs rename to DeviceSQL.Service/ServiceLocation/ServiceLocatorImplBase.cs index f5a3e23..b9524ae 100644 --- a/DeviceSQL/ServiceLocation/ServiceLocatorImplBase.cs +++ b/DeviceSQL.Service/ServiceLocation/ServiceLocatorImplBase.cs @@ -6,7 +6,7 @@ #endregion -namespace DeviceSQL.ServiceLocation +namespace DeviceSQL.Service.ServiceLocation { /// /// This class is a helper that provides a default implementation diff --git a/DeviceSQL/ServiceLocation/ServiceLocatorProvider.cs b/DeviceSQL.Service/ServiceLocation/ServiceLocatorProvider.cs similarity index 90% rename from DeviceSQL/ServiceLocation/ServiceLocatorProvider.cs rename to DeviceSQL.Service/ServiceLocation/ServiceLocatorProvider.cs index 5daa6d1..a819a53 100644 --- a/DeviceSQL/ServiceLocation/ServiceLocatorProvider.cs +++ b/DeviceSQL.Service/ServiceLocation/ServiceLocatorProvider.cs @@ -1,4 +1,4 @@ -namespace DeviceSQL.ServiceLocation +namespace DeviceSQL.Service.ServiceLocation { /// /// This delegate type is used to provide a method that will diff --git a/DeviceSQL.Service/Startup.cs b/DeviceSQL.Service/Startup.cs new file mode 100644 index 0000000..06948ab --- /dev/null +++ b/DeviceSQL.Service/Startup.cs @@ -0,0 +1,16 @@ +using Owin; +using System.Web.Http; + +namespace DeviceSQL.Service +{ + public class Startup + { + public void Configuration(IAppBuilder appBuilder) + { + var httpConfiguration = new HttpConfiguration(); + + httpConfiguration.MapHttpAttributeRoutes(); + appBuilder.UseWebApi(httpConfiguration); + } + } +} diff --git a/DeviceSQL.Service/packages.config b/DeviceSQL.Service/packages.config new file mode 100644 index 0000000..73132f5 --- /dev/null +++ b/DeviceSQL.Service/packages.config @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/DeviceSQL.TestHarness/App.config b/DeviceSQL.TestHarness/App.config deleted file mode 100644 index 731f6de..0000000 --- a/DeviceSQL.TestHarness/App.config +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/DeviceSQL.TestHarness/DeviceSQL.TestHarness.csproj b/DeviceSQL.TestHarness/DeviceSQL.TestHarness.csproj deleted file mode 100644 index 1315d74..0000000 --- a/DeviceSQL.TestHarness/DeviceSQL.TestHarness.csproj +++ /dev/null @@ -1,87 +0,0 @@ - - - - - Debug - AnyCPU - {FF09F40D-A515-4ABB-9DB1-21D9D1F2793E} - Exe - DeviceSQL.TestHarness - DeviceSQL.TestHarness - v4.6.1 - 512 - true - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - false - true - - - AnyCPU - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - AnyCPU - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - - - - - - - - - - - - - - - - - - - - {cb6f0884-5a58-432a-800e-4abfeeab6f46} - DeviceSQL - - - - - False - Microsoft .NET Framework 4.6.1 %28x86 and x64%29 - true - - - False - .NET Framework 3.5 SP1 - false - - - - \ No newline at end of file diff --git a/DeviceSQL.TestHarness/Program.cs b/DeviceSQL.TestHarness/Program.cs deleted file mode 100644 index 58e1d45..0000000 --- a/DeviceSQL.TestHarness/Program.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Data.SqlTypes; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace DeviceSQL.TestHarness -{ - class Program - { - static void Main(string[] args) - { - TcpChannelTest.Test(); - } - } -} diff --git a/DeviceSQL.TestHarness/SerialPortChannelTest.cs b/DeviceSQL.TestHarness/SerialPortChannelTest.cs deleted file mode 100644 index cd0ea99..0000000 --- a/DeviceSQL.TestHarness/SerialPortChannelTest.cs +++ /dev/null @@ -1,47 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace DeviceSQL.TestHarness -{ - class SerialPortChannelTest - { - public static void Test() - { - using (var serialPortChannel = new IO.Channels.SerialPortChannel() - { - Name = "com1://localhost", - ReadTimeout = 5000, - WriteTimeout = 5000, - TracingEnabled = true - }) - { - var rocMaster = new Device.ROC.ROCMaster(serialPortChannel) - { - Name = "FB103-01", - DeviceAddress = 1, - DeviceGroup = 2, - HostAddress = 3, - HostGroup = 1 - }; - - rocMaster.Transport.NumberOfRetries = 3; - - serialPortChannel.SerialPort.BaudRate = 19200; - serialPortChannel.SerialPort.DataBits = 8; - serialPortChannel.SerialPort.Parity = System.IO.Ports.Parity.None; - serialPortChannel.SerialPort.StopBits = System.IO.Ports.StopBits.One; - serialPortChannel.SerialPort.Handshake = System.IO.Ports.Handshake.None; - - serialPortChannel.SerialPort.Open(); - - var deviceRealTimeClockValue = rocMaster.GetRealTimeClockValue(null, null, null, null, 2000); - - serialPortChannel.SerialPort.Close(); - - } - } - } -} diff --git a/DeviceSQL.TestHarness/TcpChannelTest.cs b/DeviceSQL.TestHarness/TcpChannelTest.cs deleted file mode 100644 index 3ff8282..0000000 --- a/DeviceSQL.TestHarness/TcpChannelTest.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace DeviceSQL.TestHarness -{ - class TcpChannelTest - { - public static void Test() - { - - - - - DeviceSQL.Functions.ChannelManager.ChannelManager_RegisterTcpChannel("tcp://96.53.12.52:4000", "96.53.12.52", 4000, 5, 5000, 5000, 5000); - - DeviceSQL.Functions.DeviceManager.DeviceManager_RegisterROCMaster("tcp://96.53.12.52:4000", "FB103-01", 1, 2, 3, 1, 5, 200, 0, 0); - - var index = 0; - - while (1000 > index) - { - var deviceDateTime = DeviceSQL.Functions.ROCMaster.ROCMaster_GetRealTimeClockValueWithCentury("FB103-01", 2000); - Console.WriteLine(deviceDateTime); - } - - DeviceSQL.Functions.DeviceManager.DeviceManager_UnregisterDevice("FB103-01"); - - DeviceSQL.Functions.ChannelManager.ChannelManager_UnregisterChannel("tcp://96.53.12.52:4000"); - - index++; - } - } -} diff --git a/DeviceSQL.Utilities.DeploymentScriptFormatter/App.config b/DeviceSQL.Utilities.DeploymentScriptFormatter/App.config deleted file mode 100644 index 731f6de..0000000 --- a/DeviceSQL.Utilities.DeploymentScriptFormatter/App.config +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/DeviceSQL.Utilities.DeploymentScriptFormatter/Program.cs b/DeviceSQL.Utilities.DeploymentScriptFormatter/Program.cs deleted file mode 100644 index fd92727..0000000 --- a/DeviceSQL.Utilities.DeploymentScriptFormatter/Program.cs +++ /dev/null @@ -1,53 +0,0 @@ -#region Imported Types - -using System; -using System.IO; - -#endregion - -namespace DeviceSQL.Utilities.DeploymentScriptFormatter -{ - class Program - { - static void Main(string[] args) - { - try - { - // This utility requires the user to copy the SQL publish output to "|>GitHub\DeviceSQL\Version 1.0\Install Script.sql" - // If only Microsoft would add a new SQLCLR Attribute to define which schema the object belongs to (the project is bound to a single schema for the CLR objects). - - var installScriptFolderName = @"..\..\..\Version 1.0\"; - var installScriptFileName = @"..\..\..\Version 1.0\Install Script.sql"; - var installScriptText = ""; - using (var streamReader = File.OpenText(installScriptFileName)) - { - installScriptText = streamReader.ReadToEnd(); - } - - installScriptText = $"CREATE DATABASE [DeviceSQL] \r\n" + - "\r\n" + - "GO \r\n" + - "USE [DeviceSQL] \r\n" + - "\r\n" + - $"{installScriptText.Substring(installScriptText.IndexOf("PRINT N'Creating [ChannelManager]...';"))}"; - - installScriptText = installScriptText.Substring(0, installScriptText.IndexOf("DECLARE @VarDecimalSupported AS BIT;")); - - installScriptText = installScriptText.Replace("[dbo].[Watchdog_", "[Watchdog].[").Replace("[dbo].[ChannelManager_", "[ChannelManager].[").Replace("[dbo].[DeviceManager_", "[DeviceManager].[").Replace("[dbo].[MODBUSMaster_", "[MODBUSMaster].[").Replace("[dbo].[ROCMaster_", "[ROCMaster].["); - - File.WriteAllText(installScriptFolderName + "Install Script.sql", installScriptText); - - Console.WriteLine("Formatting Completed"); - - Console.ReadKey(); - - } - catch (Exception ex) - { - Console.WriteLine($"Formatting Error: {ex.Message}"); - - Console.ReadKey(); - } - } - } -} diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/App.config b/DeviceSQL.Utilities.RealFLOMappingGenerator/App.config deleted file mode 100644 index 731f6de..0000000 --- a/DeviceSQL.Utilities.RealFLOMappingGenerator/App.config +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/App.xaml b/DeviceSQL.Utilities.RealFLOMappingGenerator/App.xaml deleted file mode 100644 index 7a5e709..0000000 --- a/DeviceSQL.Utilities.RealFLOMappingGenerator/App.xaml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/App.xaml.cs b/DeviceSQL.Utilities.RealFLOMappingGenerator/App.xaml.cs deleted file mode 100644 index 9ddb1ab..0000000 --- a/DeviceSQL.Utilities.RealFLOMappingGenerator/App.xaml.cs +++ /dev/null @@ -1,24 +0,0 @@ -#region Imported Types - -using DeviceSQL.Utilities.RealFLOMappingGenerator.Model; -using DeviceSQL.Utilities.RealFLOMappingGenerator.ViewModel; -using GalaSoft.MvvmLight.Ioc; -using Microsoft.Practices.ServiceLocation; -using System.Windows; - -#endregion - -namespace DeviceSQL.Utilities.RealFLOMappingGenerator -{ - public partial class App : Application - { - private void Application_Startup(object sender, StartupEventArgs e) - { - ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default); - SimpleIoc.Default.Register(); - SimpleIoc.Default.Register(); - SimpleIoc.Default.Register(); - SimpleIoc.Default.Register(); - } - } -} diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/Converter/BoolToVisibilityConverter.cs b/DeviceSQL.Utilities.RealFLOMappingGenerator/Converter/BoolToVisibilityConverter.cs deleted file mode 100644 index 5ae0519..0000000 --- a/DeviceSQL.Utilities.RealFLOMappingGenerator/Converter/BoolToVisibilityConverter.cs +++ /dev/null @@ -1,24 +0,0 @@ -#region Imported Types - -using System; -using System.Globalization; -using System.Windows; -using System.Windows.Data; - -#endregion - -namespace DeviceSQL.Utilities.RealFLOMappingGenerator.Converter -{ - public class BoolToVisibilityConverter : IValueConverter - { - public object Convert(object value, Type targetType, object parameter, CultureInfo culture) - { - return ((bool?)value).GetValueOrDefault() ? Visibility.Visible : Visibility.Collapsed; - } - - public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) - { - throw new NotImplementedException(); - } - } -} diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/Converter/NegatedBoolToVisibilityConverter.cs b/DeviceSQL.Utilities.RealFLOMappingGenerator/Converter/NegatedBoolToVisibilityConverter.cs deleted file mode 100644 index 1c0f764..0000000 --- a/DeviceSQL.Utilities.RealFLOMappingGenerator/Converter/NegatedBoolToVisibilityConverter.cs +++ /dev/null @@ -1,24 +0,0 @@ -#region Imported Types - -using System; -using System.Globalization; -using System.Windows; -using System.Windows.Data; - -#endregion - -namespace DeviceSQL.Utilities.RealFLOMappingGenerator.Converter -{ - public class NegatedBoolToVisibilityConverter : IValueConverter - { - public object Convert(object value, Type targetType, object parameter, CultureInfo culture) - { - return (!(bool?)value).GetValueOrDefault() ? Visibility.Visible : Visibility.Collapsed; - } - - public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) - { - throw new NotImplementedException(); - } - } -} diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/DeviceSQL.Utilities.RealFLOMappingGenerator.csproj b/DeviceSQL.Utilities.RealFLOMappingGenerator/DeviceSQL.Utilities.RealFLOMappingGenerator.csproj deleted file mode 100644 index 865cc90..0000000 --- a/DeviceSQL.Utilities.RealFLOMappingGenerator/DeviceSQL.Utilities.RealFLOMappingGenerator.csproj +++ /dev/null @@ -1,337 +0,0 @@ - - - - - Debug - AnyCPU - {6037A772-F9F9-420A-B04E-24E4B646911A} - WinExe - DeviceSQL.Utilities.RealFLOMappingGenerator - DeviceSQL.Utilities.RealFLOMappingGenerator - v4.6.1 - 512 - {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - 4 - true - true - C:\Users\jason\Documents\GitHub\DeviceSQL\Version 1.0\Utilities\RealFLO Mapping Generator\ - true - Web - true - Foreground - 7 - Days - false - false - true - http://liwt-app01.cloudapp.net/DeviceSQL/RealFLOMappingGenerator/ - http://localhost/DeviceSQL.Utilities.RealFLOMappingGenerator/ - https://github.com/jasonrichardcraig/DeviceSQL/blob/master/ReadMe.md - en-US - RealFLO Mapping Generator - Jason Richard Craig - DeviceSQL - true - publish.htm - true - 5 - 1.0.0.%2a - true - true - true - true - - - AnyCPU - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - AnyCPU - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - Resources\Images\RealFLO.ico - - - CAE5F5BEE4170D26B52B0960F9D7628C18AAE939 - - - DeviceSQL.Utilities.RealFLOMappingGenerator_TemporaryKey.pfx - - - true - - - true - - - true - - - Key.snk - - - Internet - - - Properties\app.manifest - - - - ..\packages\CommonServiceLocator.2.0.2\lib\net45\CommonServiceLocator.dll - - - ..\lib\RCWPF\2017.3.1018.45.NoXaml\EQATEC.Analytics.Monitor.dll - True - - - ..\packages\MvvmLightLibs.5.3.0.0\lib\net45\GalaSoft.MvvmLight.dll - - - ..\packages\MvvmLightLibs.5.3.0.0\lib\net45\GalaSoft.MvvmLight.Extras.dll - - - ..\packages\MvvmLightLibs.5.3.0.0\lib\net45\GalaSoft.MvvmLight.Platform.dll - - - ..\packages\HtmlAgilityPack.1.6.11\lib\Net45\HtmlAgilityPack.dll - - - ..\lib\RCWPF\2017.3.1018.45.NoXaml\SharpDX\SharpDX.dll - True - - - ..\lib\RCWPF\2017.3.1018.45.NoXaml\SharpDX\SharpDX.D3DCompiler.dll - True - - - ..\lib\RCWPF\2017.3.1018.45.NoXaml\SharpDX\SharpDX.Direct2D1.dll - True - - - ..\lib\RCWPF\2017.3.1018.45.NoXaml\SharpDX\SharpDX.Direct3D10.dll - True - - - ..\lib\RCWPF\2017.3.1018.45.NoXaml\SharpDX\SharpDX.Direct3D9.dll - True - - - ..\lib\RCWPF\2017.3.1018.45.NoXaml\SharpDX\SharpDX.DXGI.dll - True - - - - - ..\packages\MvvmLightLibs.5.3.0.0\lib\net45\System.Windows.Interactivity.dll - - - - - - - - - 4.0 - - - ..\lib\RCWPF\2017.3.1018.45.NoXaml\Telerik.Windows.Cloud.dll - True - - - ..\lib\RCWPF\2017.3.1018.45.NoXaml\Telerik.Windows.Controls.dll - True - - - ..\lib\RCWPF\2017.3.1018.45.NoXaml\Telerik.Windows.Controls.Docking.dll - True - - - ..\lib\RCWPF\2017.3.1018.45.NoXaml\Telerik.Windows.Controls.FileDialogs.dll - True - - - ..\lib\RCWPF\2017.3.1018.45.NoXaml\Telerik.Windows.Controls.FixedDocumentViewers.dll - True - - - ..\lib\RCWPF\2017.3.1018.45.NoXaml\Telerik.Windows.Controls.GridView.dll - True - - - ..\lib\RCWPF\2017.3.1018.45.NoXaml\Telerik.Windows.Controls.Input.dll - True - - - ..\lib\RCWPF\2017.3.1018.45.NoXaml\Telerik.Windows.Controls.Navigation.dll - True - - - ..\lib\RCWPF\2017.3.1018.45.NoXaml\Telerik.Windows.Controls.RibbonView.dll - True - - - ..\lib\RCWPF\2017.3.1018.45.NoXaml\Telerik.Windows.Data.dll - True - - - ..\lib\RCWPF\2017.3.1018.45.NoXaml\Telerik.Windows.Diagrams.Core.dll - True - - - ..\lib\RCWPF\2017.3.1018.45.NoXaml\Telerik.Windows.Documents.Core.dll - True - - - ..\lib\RCWPF\2017.3.1018.45.NoXaml\Telerik.Windows.Documents.Fixed.dll - True - - - ..\lib\RCWPF\2017.3.1018.45.NoXaml\Telerik.Windows.Documents.Spreadsheet.dll - True - - - ..\lib\RCWPF\2017.3.1018.45.NoXaml\Telerik.Windows.Themes.Office2016Touch.dll - True - - - ..\lib\RCWPF\2017.3.1018.45.NoXaml\Telerik.Windows.Zip.dll - True - - - - - - - - MSBuild:Compile - Designer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - NewMapWizard.xaml - - - MSBuild:Compile - Designer - - - App.xaml - Code - - - MainWindow.xaml - Code - - - Designer - MSBuild:Compile - - - - - Code - - - True - True - Resources.resx - - - True - Settings.settings - True - - - ResXFileCodeGenerator - Resources.Designer.cs - - - - - - - SettingsSingleFileGenerator - Settings.Designer.cs - - - - - - - - - - - - - - - - - - - - False - Microsoft .NET Framework 4.6.1 %28x86 and x64%29 - true - - - False - .NET Framework 3.5 SP1 - false - - - - - False - RealFLO Map - RealFLOMappingGenerator - RealFLO.ico - - - - - - - - - \ No newline at end of file diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/Interop/HelpDocument.cs b/DeviceSQL.Utilities.RealFLOMappingGenerator/Interop/HelpDocument.cs deleted file mode 100644 index 97ec9a1..0000000 --- a/DeviceSQL.Utilities.RealFLOMappingGenerator/Interop/HelpDocument.cs +++ /dev/null @@ -1,19 +0,0 @@ -#region Imported Types - -using DeviceSQL.Utilities.RealFLOMappingGenerator.ViewModel; -using Microsoft.Practices.ServiceLocation; -using System.Runtime.InteropServices; - -#endregion - -namespace DeviceSQL.Utilities.RealFLOMappingGenerator.Interop -{ - [ComVisible(true)] - public class HelpDocument - { - public void NavigateMain(string source) - { - ServiceLocator.Current.GetInstance().NavigateMainWebBrowserCommand.Execute(source); - } - } -} diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/Interop/Main.cs b/DeviceSQL.Utilities.RealFLOMappingGenerator/Interop/Main.cs deleted file mode 100644 index c959d7d..0000000 --- a/DeviceSQL.Utilities.RealFLOMappingGenerator/Interop/Main.cs +++ /dev/null @@ -1,13 +0,0 @@ -#region Imported Types - -using System.Runtime.InteropServices; - -#endregion - -namespace DeviceSQL.Utilities.RealFLOMappingGenerator.Interop -{ - [ComVisible(true)] - public class Main - { - } -} diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/Key.snk b/DeviceSQL.Utilities.RealFLOMappingGenerator/Key.snk deleted file mode 100644 index 316e834..0000000 Binary files a/DeviceSQL.Utilities.RealFLOMappingGenerator/Key.snk and /dev/null differ diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/MainWindow.xaml b/DeviceSQL.Utilities.RealFLOMappingGenerator/MainWindow.xaml deleted file mode 100644 index 0f07657..0000000 --- a/DeviceSQL.Utilities.RealFLOMappingGenerator/MainWindow.xaml +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/MainWindow.xaml.cs b/DeviceSQL.Utilities.RealFLOMappingGenerator/MainWindow.xaml.cs deleted file mode 100644 index 30b0a85..0000000 --- a/DeviceSQL.Utilities.RealFLOMappingGenerator/MainWindow.xaml.cs +++ /dev/null @@ -1,87 +0,0 @@ -#region Imported Types - -using DeviceSQL.Utilities.RealFLOMappingGenerator.ViewModel; -using Microsoft.Practices.ServiceLocation; -using System.Windows; -using System.Windows.Navigation; -using System; - -#endregion - -namespace DeviceSQL.Utilities.RealFLOMappingGenerator -{ - public partial class MainWindow : Window - { - - #region Constructor - - public MainWindow() - { - InitializeComponent(); - } - - #endregion - - #region Base Class Events - - private void Window_Loaded(object sender, RoutedEventArgs e) - { - var mainViewModel = ServiceLocator.Current.GetInstance(); - mainViewModel.NavigateHelpDocumentWebBrowserCommand = new GalaSoft.MvvmLight.CommandWpf.RelayCommand(NavigateHelpDocumentWebBrowser); - mainViewModel.NavigateMainWebBrowserCommand = new GalaSoft.MvvmLight.CommandWpf.RelayCommand(NavigateMainWebBrowser); - MainWebBrowser.Navigate("about:blank"); - HelpDocumentWebBrowser.Navigate("about:blank"); - } - - #endregion - - #region Web Browser Events - - private void MainWebBrowser_Navigating(object sender, NavigatingCancelEventArgs e) - { - - } - - private void MainWebBrowser_Navigated(object sender, NavigationEventArgs e) - { - var mainViewModel = ServiceLocator.Current.GetInstance(); - if (mainViewModel.MainWebBrowserObjectForScripting != MainWebBrowser.ObjectForScripting) - { - MainWebBrowser.ObjectForScripting = mainViewModel.MainWebBrowserObjectForScripting; - } - } - - private void HelpDocumentWebBrowser_Navigating(object sender, NavigatingCancelEventArgs e) - { - - } - - private void HelpDocumentWebBrowser_Navigated(object sender, NavigationEventArgs e) - { - var mainViewModel = ServiceLocator.Current.GetInstance(); - if (mainViewModel.HelpDocumentWebBrowserObjectForScripting != HelpDocumentWebBrowser.ObjectForScripting) - { - HelpDocumentWebBrowser.ObjectForScripting = mainViewModel.HelpDocumentWebBrowserObjectForScripting; - } - } - - #endregion - - #region Navigation Methods - - private void NavigateMainWebBrowser(string source) - { - MainWebBrowser.Navigate(source); - } - - private void NavigateHelpDocumentWebBrowser(string source) - { - HelpDocumentWebBrowser.Navigate(source); - } - - #endregion - - } - -} - diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/Model/DataService.cs b/DeviceSQL.Utilities.RealFLOMappingGenerator/Model/DataService.cs deleted file mode 100644 index a7871c5..0000000 --- a/DeviceSQL.Utilities.RealFLOMappingGenerator/Model/DataService.cs +++ /dev/null @@ -1,175 +0,0 @@ -#region Imported Types - -using HtmlAgilityPack; -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; -using System.Linq; -using System.Reflection; -using System.Runtime.Serialization.Formatters.Binary; -using System.Windows; - -#endregion - -namespace DeviceSQL.Utilities.RealFLOMappingGenerator.Model -{ - public class DataService - { - - public string GetVersion() - { - return Assembly.GetEntryAssembly().GetName().Version.ToString(); - } - - public Map NewMap(string fileName, string chmFileName) - { - var map = new Map() - { - Id = Guid.NewGuid(), - HelpFileBytes = File.ReadAllBytes(chmFileName), - EnronArchives = new List(), - EnronEvents = new List(), - EnronRegisters = new List(), - TeleBUSArchives = new List(), - TeleBUSEvents = new List(), - TeleBUSRegisters = new List() - }; - return map; - } - - public Map LoadMap(string fileName) - { - using (var fileStream = new FileStream(fileName, FileMode.Open)) - { - return new BinaryFormatter().Deserialize(fileStream) as Map; - } - } - - public void SaveMap(Map map, string fileName) - { - using (var fileStream = new FileStream(fileName, FileMode.OpenOrCreate)) - { - new BinaryFormatter().Serialize(fileStream, map); - } - } - - public void ExtractCHMFile(Map map, out string chmFileName, out string decompiledCHMFolderName) - { - var formattedMapId = map.Id.ToString().Replace("-", ""); - var chmFolderName = $"{Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)}\\RealFLOMappingGenerator"; - - chmFileName = $"{chmFolderName}\\rfm.{formattedMapId}.chm"; - decompiledCHMFolderName = $"{chmFolderName}\\rfm.{formattedMapId}.decompiled"; - - if (!Directory.Exists(chmFolderName)) - { - Directory.CreateDirectory(chmFolderName); - } - - if (!Directory.Exists(decompiledCHMFolderName)) - { - Directory.CreateDirectory(decompiledCHMFolderName); - } - - File.WriteAllBytes(chmFileName, map.HelpFileBytes); - - using (var process = Process.Start("hh.exe", $" -decompile {decompiledCHMFolderName} {chmFileName}")) - { - if (process.WaitForExit(30000)) - { - using (var styleFileStream = File.Create($"{decompiledCHMFolderName}\\rfm.style.css")) - using (var treeFileStream = File.Create($"{decompiledCHMFolderName}\\rfm.index.js")) - { - Application.GetResourceStream(new Uri("Resources/Styles/rfm.style.css", UriKind.RelativeOrAbsolute)).Stream.CopyTo(styleFileStream); - Application.GetResourceStream(new Uri("Resources/Scripts/rfm.index.js", UriKind.RelativeOrAbsolute)).Stream.CopyTo(treeFileStream); - } - - foreach (var htmFileInfo in new DirectoryInfo(decompiledCHMFolderName).GetFiles("*.htm", SearchOption.AllDirectories)) - { - var chmHTMLDocument = new HtmlDocument(); - - chmHTMLDocument.Load(htmFileInfo.FullName); - File.WriteAllText(htmFileInfo.FullName, $"\r\n{ chmHTMLDocument.DocumentNode.InnerHtml }", System.Text.Encoding.UTF8); - } - } - else - { - throw new TimeoutException("HTML help decompiler timed out"); - } - } - } - - public string CreateIndexHTMLDocument(string chmFolderName) - { - var hhcFileInfo = new DirectoryInfo(chmFolderName).EnumerateFiles("*.hhc").FirstOrDefault(); - - if (hhcFileInfo != null) - { - var hhcHTMLDocument = new HtmlDocument(); - var destinationHHCFileName = $"{hhcFileInfo.DirectoryName}\\rfm.index.html"; - var defaultSource = ""; - - //file:///C:/Users/jason/Desktop/Realflo%20Reference%20Manual.htm - - hhcHTMLDocument.OptionUseIdAttribute = true; - hhcHTMLDocument.OptionOutputAsXml = true; - hhcHTMLDocument.Load(hhcFileInfo.FullName); - - hhcHTMLDocument.DocumentNode.ChildNodes.Where(node => node.Name == "#comment" && node.InnerText.StartsWith(""), htmlNode.FirstChild); - } - - hhcHTMLDocument.DocumentNode.SelectSingleNode("//head").AppendChild(HtmlNode.CreateNode("")); - hhcHTMLDocument.DocumentNode.SelectSingleNode("//head").AppendChild(HtmlNode.CreateNode("")); - hhcHTMLDocument.DocumentNode.SelectSingleNode("//head").AppendChild(HtmlNode.CreateNode("")); - hhcHTMLDocument.DocumentNode.SelectSingleNode("//head").AppendChild(HtmlNode.CreateNode("")); - - foreach (var objectHTMLNode in hhcHTMLDocument.DocumentNode.SelectNodes("//object")) - { - switch (objectHTMLNode.GetAttributeValue("type", null)) - { - case "text/sitemap": - { - var name = objectHTMLNode.ChildNodes.FirstOrDefault(htmlNode => htmlNode.NodeType == HtmlNodeType.Element && htmlNode.Name == "param" && htmlNode.GetAttributeValue("name", "") == "Name")?.GetAttributeValue("value", ""); - var imageNumber = objectHTMLNode.ChildNodes.FirstOrDefault(htmlNode => htmlNode.NodeType == HtmlNodeType.Element && htmlNode.Name == "param" && htmlNode.GetAttributeValue("name", "") == "ImageNumber")?.GetAttributeValue("value", ""); - var local = objectHTMLNode.ChildNodes.FirstOrDefault(htmlNode => htmlNode.NodeType == HtmlNodeType.Element && htmlNode.Name == "param" && htmlNode.GetAttributeValue("name", "") == "Local")?.GetAttributeValue("value", ""); - - objectHTMLNode.Name = "a"; - objectHTMLNode.InnerHtml = name; - objectHTMLNode.Attributes.Add("href", $"#_{local}_"); - objectHTMLNode.Attributes.Add("onclick", $"javascript: window.external.NavigateMain('{chmFolderName.Replace("\\","\\\\")}\\\\{local}');"); - - if(defaultSource == "") - { - defaultSource = $"{chmFolderName}\\{local}"; - } - } - break; - default: - { - objectHTMLNode.RemoveAllChildren(); - objectHTMLNode.Remove(); - } - break; - } - } - - hhcHTMLDocument.DocumentNode.SelectSingleNode("//head").AppendChild(HtmlNode.CreateNode($"")); - - File.WriteAllText(destinationHHCFileName, $"\r\n\r\n{ hhcHTMLDocument.DocumentNode.InnerHtml }", System.Text.Encoding.UTF8); - - return destinationHHCFileName; - } - else - { - return null; - } - } - } -} diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/Model/DialogService.cs b/DeviceSQL.Utilities.RealFLOMappingGenerator/Model/DialogService.cs deleted file mode 100644 index 74bef13..0000000 --- a/DeviceSQL.Utilities.RealFLOMappingGenerator/Model/DialogService.cs +++ /dev/null @@ -1,191 +0,0 @@ -#region Imported Types - -using DeviceSQL.Utilities.RealFLOMappingGenerator.ViewModel; -using Microsoft.Practices.ServiceLocation; -using Microsoft.Win32; -using System; -using System.IO; -using Telerik.Windows.Controls; - -#endregion - -namespace DeviceSQL.Utilities.RealFLOMappingGenerator.Model -{ - public class DialogService - { - - #region Properties - - public DataService DataService - { - get - { - return ServiceLocator.Current.GetInstance(); - } - } - - #endregion - - #region Dialog Methods - - public void ShowErrorMessage(string errorMessage) - { - RadWindow.Alert(errorMessage); - } - - public string OpenCreateMapFileDialog() - { - var saveFileDialog = new SaveFileDialog() - { - Title = "Set Map File Destination", - FileName = "RealFLO Map.rfm", - InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), - DefaultExt = ".chm", - Filter = "RealFLO Map Files|*.rfm", - OverwritePrompt = true, - CreatePrompt = true, - ValidateNames = true, - CheckPathExists = true, - }; - - var dialogResult = saveFileDialog.ShowDialog(); - - if (dialogResult.HasValue && dialogResult.Value) - { - try - { - using (var fileStream = File.Create(saveFileDialog.FileName)) - { - return saveFileDialog.FileName; - } - } - catch (Exception ex) - { - ShowErrorMessage($"Error creating map file: {ex.Message}"); - return null; - } - - } - else - { - return null; - } - - } - - public string OpenSelectRealFLOHelpFileDialog(string fileName) - { - - var fileInfo = new FileInfo(fileName); - - var openFileDialog = new OpenFileDialog() - { - Title = "Select RealFLO Help File", - FileName = fileInfo.Name, - InitialDirectory = fileInfo.DirectoryName, - DefaultExt = ".chm", - Filter = "Help Files|*.chm" - }; - - var dialogResult = openFileDialog.ShowDialog(); - - if (dialogResult.HasValue && dialogResult.Value) - { - return openFileDialog.FileName; - } - else - { - return null; - } - } - - public bool? ShowSaveBeforeProceedingDialog() - { - var dialogResult = (bool?)null; - var dialogParameters = new DialogParameters() - { - Content = "Would you like to save before proceeding?", - OkButtonContent = "Yes", - CancelButtonContent = "No", - Closed = (s, e) => - { - dialogResult = e.DialogResult; - } - }; - - RadWindow.Confirm(dialogParameters); - - return dialogResult; - - } - - public Map OpenNewMapWizardDialog() - { - var newMapWizard = new Wizard.NewMapWizard() - { - Owner = App.Current.MainWindow - }; - - var dialogResult = newMapWizard.ShowDialog(); - - if (dialogResult.HasValue && dialogResult.Value) - { - try - { - var newMapWizardViewModel = ServiceLocator.Current.GetInstance(); - - return DataService.NewMap(newMapWizardViewModel.FileName, newMapWizardViewModel.CHMFileName); - - } - catch (Exception ex) - { - var dialogParameters = new DialogParameters() - { - Content = $"Error creating new map: {ex.Message}" - }; - - RadWindow.Alert(dialogParameters); - return null; - } - } - else - { - return null; - } - } - - public Map OpenMapFileDialog() - { - - var openFileDialog = new OpenFileDialog() - { - Title = "Select RealFLO Map File", - InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), - DefaultExt = ".rfm", - Filter = "RealFLO Map Files|*.rfm" - }; - - var dialogResult = openFileDialog.ShowDialog(); - - if (dialogResult.HasValue && dialogResult.Value) - { - try - { - return DataService.LoadMap(openFileDialog.FileName); - } - catch (Exception ex) - { - ShowErrorMessage($"Error opening map file: {ex.Message}"); - } - return null; - } - else - { - return null; - } - } - - #endregion - - } -} diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/Model/Enron/Archive.cs b/DeviceSQL.Utilities.RealFLOMappingGenerator/Model/Enron/Archive.cs deleted file mode 100644 index d45f49b..0000000 --- a/DeviceSQL.Utilities.RealFLOMappingGenerator/Model/Enron/Archive.cs +++ /dev/null @@ -1,19 +0,0 @@ -#region Imported Types - -using System; -using System.Collections.Generic; - -#endregion - -namespace DeviceSQL.Utilities.RealFLOMappingGenerator.Model.Enron -{ - [Serializable] - public class Archive - { - public List Fields - { - get; - set; - } - } -} diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/Model/Enron/ArchiveField.cs b/DeviceSQL.Utilities.RealFLOMappingGenerator/Model/Enron/ArchiveField.cs deleted file mode 100644 index 1e94155..0000000 --- a/DeviceSQL.Utilities.RealFLOMappingGenerator/Model/Enron/ArchiveField.cs +++ /dev/null @@ -1,13 +0,0 @@ -#region Imported Types - -using System; - -#endregion - -namespace DeviceSQL.Utilities.RealFLOMappingGenerator.Model.TeleBUS -{ - public class ArchiveField - { - - } -} diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/Model/Enron/Event.cs b/DeviceSQL.Utilities.RealFLOMappingGenerator/Model/Enron/Event.cs deleted file mode 100644 index 238a9df..0000000 --- a/DeviceSQL.Utilities.RealFLOMappingGenerator/Model/Enron/Event.cs +++ /dev/null @@ -1,14 +0,0 @@ -#region Imported Types - -using System; - -#endregion - -namespace DeviceSQL.Utilities.RealFLOMappingGenerator.Model.Enron -{ - [Serializable] - public class Event - { - - } -} diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/Model/Enron/Register.cs b/DeviceSQL.Utilities.RealFLOMappingGenerator/Model/Enron/Register.cs deleted file mode 100644 index f9ca9f7..0000000 --- a/DeviceSQL.Utilities.RealFLOMappingGenerator/Model/Enron/Register.cs +++ /dev/null @@ -1,13 +0,0 @@ -#region Imported Types - -using System; - -#endregion - -namespace DeviceSQL.Utilities.RealFLOMappingGenerator.Model.Enron -{ - [Serializable] - public class Register - { - } -} diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/Model/Map.cs b/DeviceSQL.Utilities.RealFLOMappingGenerator/Model/Map.cs deleted file mode 100644 index bc391fd..0000000 --- a/DeviceSQL.Utilities.RealFLOMappingGenerator/Model/Map.cs +++ /dev/null @@ -1,67 +0,0 @@ -#region Imported Types - -using System; -using System.Collections.Generic; - -#endregion - -namespace DeviceSQL.Utilities.RealFLOMappingGenerator.Model -{ - [Serializable] - public class Map - { - - #region Properties - - public Guid Id - { - get; - set; - } - - public byte[] HelpFileBytes - { - get; - set; - } - - public List EnronRegisters - { - get; - set; - } - - public List TeleBUSRegisters - { - get; - set; - } - - public List EnronArchives - { - get; - set; - } - - public List TeleBUSArchives - { - get; - set; - } - - public List EnronEvents - { - get; - set; - } - - public List TeleBUSEvents - { - get; - set; - } - - #endregion - - } -} diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/Model/TeleBUS/Archive.cs b/DeviceSQL.Utilities.RealFLOMappingGenerator/Model/TeleBUS/Archive.cs deleted file mode 100644 index 3caa0c2..0000000 --- a/DeviceSQL.Utilities.RealFLOMappingGenerator/Model/TeleBUS/Archive.cs +++ /dev/null @@ -1,13 +0,0 @@ -#region Imported Types - -using System; - -#endregion - -namespace DeviceSQL.Utilities.RealFLOMappingGenerator.Model.TeleBUS -{ - [Serializable] - public class Archive - { - } -} diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/Model/TeleBUS/ArchiveCommand.cs b/DeviceSQL.Utilities.RealFLOMappingGenerator/Model/TeleBUS/ArchiveCommand.cs deleted file mode 100644 index feed439..0000000 --- a/DeviceSQL.Utilities.RealFLOMappingGenerator/Model/TeleBUS/ArchiveCommand.cs +++ /dev/null @@ -1,13 +0,0 @@ -#region Imported Types - -using System; - -#endregion - -namespace DeviceSQL.Utilities.RealFLOMappingGenerator.Model.TeleBUS -{ - [Serializable] - public class ArchiveCommand - { - } -} diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/Model/TeleBUS/ArchiveField.cs b/DeviceSQL.Utilities.RealFLOMappingGenerator/Model/TeleBUS/ArchiveField.cs deleted file mode 100644 index 8e5bf7c..0000000 --- a/DeviceSQL.Utilities.RealFLOMappingGenerator/Model/TeleBUS/ArchiveField.cs +++ /dev/null @@ -1,14 +0,0 @@ -#region Imported Types - -using System; - -#endregion - -namespace DeviceSQL.Utilities.RealFLOMappingGenerator.Model.Enron -{ - [Serializable] - public class ArchiveField - { - - } -} diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/Model/TeleBUS/ConfigurationCommand.cs b/DeviceSQL.Utilities.RealFLOMappingGenerator/Model/TeleBUS/ConfigurationCommand.cs deleted file mode 100644 index fa437a2..0000000 --- a/DeviceSQL.Utilities.RealFLOMappingGenerator/Model/TeleBUS/ConfigurationCommand.cs +++ /dev/null @@ -1,13 +0,0 @@ -#region Imported Types - -using System; - -#endregion - -namespace DeviceSQL.Utilities.RealFLOMappingGenerator.Model.TeleBUS -{ - [Serializable] - public class ConfigurationCommand - { - } -} diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/Model/TeleBUS/Event.cs b/DeviceSQL.Utilities.RealFLOMappingGenerator/Model/TeleBUS/Event.cs deleted file mode 100644 index 00ad842..0000000 --- a/DeviceSQL.Utilities.RealFLOMappingGenerator/Model/TeleBUS/Event.cs +++ /dev/null @@ -1,14 +0,0 @@ -#region Imported Types - -using System; - -#endregion - -namespace DeviceSQL.Utilities.RealFLOMappingGenerator.Model.TeleBUS -{ - [Serializable] - public class Event - { - - } -} diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/Model/TeleBUS/Register.cs b/DeviceSQL.Utilities.RealFLOMappingGenerator/Model/TeleBUS/Register.cs deleted file mode 100644 index f4e4bee..0000000 --- a/DeviceSQL.Utilities.RealFLOMappingGenerator/Model/TeleBUS/Register.cs +++ /dev/null @@ -1,14 +0,0 @@ -#region Imported Types - -using System; - -#endregion - -namespace DeviceSQL.Utilities.RealFLOMappingGenerator.Model.TeleBUS -{ - [Serializable] - public class Register - { - - } -} diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/Properties/AssemblyInfo.cs b/DeviceSQL.Utilities.RealFLOMappingGenerator/Properties/AssemblyInfo.cs deleted file mode 100644 index 8097267..0000000 --- a/DeviceSQL.Utilities.RealFLOMappingGenerator/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,55 +0,0 @@ -using System.Reflection; -using System.Resources; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; -using System.Windows; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("DeviceSQL.Utilities.RealFLOMappingGenerator")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("DeviceSQL.Utilities.RealFLOMappingGenerator")] -[assembly: AssemblyCopyright("Copyright © 2017")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -//In order to begin building localizable applications, set -//CultureYouAreCodingWith in your .csproj file -//inside a . For example, if you are using US english -//in your source files, set the to en-US. Then uncomment -//the NeutralResourceLanguage attribute below. Update the "en-US" in -//the line below to match the UICulture setting in the project file. - -//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] - - -[assembly: ThemeInfo( - ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located - //(used if a resource is not found in the page, - // or application resource dictionaries) - ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located - //(used if a resource is not found in the page, - // app, or any theme specific resource dictionaries) -)] - - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/Properties/Resources.Designer.cs b/DeviceSQL.Utilities.RealFLOMappingGenerator/Properties/Resources.Designer.cs deleted file mode 100644 index 42ded07..0000000 --- a/DeviceSQL.Utilities.RealFLOMappingGenerator/Properties/Resources.Designer.cs +++ /dev/null @@ -1,71 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace DeviceSQL.Utilities.RealFLOMappingGenerator.Properties -{ - - - /// - /// A strongly-typed resource class, for looking up localized strings, etc. - /// - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resources - { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resources() - { - } - - /// - /// Returns the cached ResourceManager instance used by this class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager - { - get - { - if ((resourceMan == null)) - { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("DeviceSQL.Utilities.RealFLOMappingGenerator.Properties.Resources", typeof(Resources).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture - { - get - { - return resourceCulture; - } - set - { - resourceCulture = value; - } - } - } -} diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/Properties/Settings.settings b/DeviceSQL.Utilities.RealFLOMappingGenerator/Properties/Settings.settings deleted file mode 100644 index 033d7a5..0000000 --- a/DeviceSQL.Utilities.RealFLOMappingGenerator/Properties/Settings.settings +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/Properties/app.manifest b/DeviceSQL.Utilities.RealFLOMappingGenerator/Properties/app.manifest deleted file mode 100644 index f0a58bd..0000000 --- a/DeviceSQL.Utilities.RealFLOMappingGenerator/Properties/app.manifest +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/RealFLO.ico b/DeviceSQL.Utilities.RealFLOMappingGenerator/RealFLO.ico deleted file mode 100644 index 49da11f..0000000 Binary files a/DeviceSQL.Utilities.RealFLOMappingGenerator/RealFLO.ico and /dev/null differ diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/RealFLO_24x24.png b/DeviceSQL.Utilities.RealFLOMappingGenerator/RealFLO_24x24.png deleted file mode 100644 index 2ec04c2..0000000 Binary files a/DeviceSQL.Utilities.RealFLOMappingGenerator/RealFLO_24x24.png and /dev/null differ diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/Resources/Images/RealFLO.ico b/DeviceSQL.Utilities.RealFLOMappingGenerator/Resources/Images/RealFLO.ico deleted file mode 100644 index 49da11f..0000000 Binary files a/DeviceSQL.Utilities.RealFLOMappingGenerator/Resources/Images/RealFLO.ico and /dev/null differ diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/Resources/Images/RealFLO_24x24.png b/DeviceSQL.Utilities.RealFLOMappingGenerator/Resources/Images/RealFLO_24x24.png deleted file mode 100644 index a3df78f..0000000 Binary files a/DeviceSQL.Utilities.RealFLOMappingGenerator/Resources/Images/RealFLO_24x24.png and /dev/null differ diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/Resources/Images/RealFLO_32x32.png b/DeviceSQL.Utilities.RealFLOMappingGenerator/Resources/Images/RealFLO_32x32.png deleted file mode 100644 index 906aac0..0000000 Binary files a/DeviceSQL.Utilities.RealFLOMappingGenerator/Resources/Images/RealFLO_32x32.png and /dev/null differ diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/Resources/Scripts/rfm.index.js b/DeviceSQL.Utilities.RealFLOMappingGenerator/Resources/Scripts/rfm.index.js deleted file mode 100644 index bc0153a..0000000 --- a/DeviceSQL.Utilities.RealFLOMappingGenerator/Resources/Scripts/rfm.index.js +++ /dev/null @@ -1,3 +0,0 @@ -$(document).ready(function () { - window.external.NavigateMain(defaultSource); -}); diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/Resources/Styles/rfm.style.css b/DeviceSQL.Utilities.RealFLOMappingGenerator/Resources/Styles/rfm.style.css deleted file mode 100644 index 56759d9..0000000 --- a/DeviceSQL.Utilities.RealFLOMappingGenerator/Resources/Styles/rfm.style.css +++ /dev/null @@ -1,84 +0,0 @@ -body, a { - color: #3B4C56; - font-family: sans-serif; - font-size: 14px; - text-decoration: none; -} - -#logo { - width: 505px; - margin: 0 auto; - text-align: center; -} - -#pgtitle { - margin: 0px 0px 20px; - font-size: 18pt; -} - -a { - cursor: pointer; -} - -.tree ul { - list-style: none outside none; -} - -.tree li a { - line-height: 25px; -} - -.tree > ul > li > a { - color: #3B4C56; - display: block; - font-weight: normal; - position: relative; - text-decoration: none; -} - -.tree li.parent > a { - padding: 0 0 0 28px; -} - - .tree li.parent > a:before { - background-image: url("../images/plus_minus_icons.png"); - background-position: 25px center; - content: ""; - display: block; - height: 21px; - left: 0; - position: absolute; - top: 2px; - vertical-align: middle; - width: 23px; - } - -.tree ul li.active > a:before { - background-position: 0 center; -} - -.tree ul li ul { - border-left: 1px solid #D9DADB; - display: none; - margin: 0 0 0 12px; - overflow: hidden; - padding: 0 0 0 25px; -} - - .tree ul li ul li { - position: relative; - } - - .tree ul li ul li:before { - border-bottom: 1px dashed #E2E2E3; - content: ""; - left: -20px; - position: absolute; - top: 12px; - width: 15px; - } - -#wrapper { - margin: 0 auto; - width: 300px; -} diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/ViewModel/Enron/ArchiveViewModel.cs b/DeviceSQL.Utilities.RealFLOMappingGenerator/ViewModel/Enron/ArchiveViewModel.cs deleted file mode 100644 index abd2fa1..0000000 --- a/DeviceSQL.Utilities.RealFLOMappingGenerator/ViewModel/Enron/ArchiveViewModel.cs +++ /dev/null @@ -1,35 +0,0 @@ -#region Imported Types - -using DeviceSQL.Utilities.RealFLOMappingGenerator.Model.Enron; -using GalaSoft.MvvmLight; - -#endregion - -namespace DeviceSQL.Utilities.RealFLOMappingGenerator.ViewModel.Enron -{ - public class ArchiveViewModel : TrackableViewModelBase - { - #region Fields - - private Archive archive; - - #endregion - - #region Properties - - public Archive Archive - { - get - { - return archive; - } - set - { - archive = value; - RaisePropertyChanged("Archive"); - } - } - - #endregion - } -} diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/ViewModel/Enron/EventViewModel.cs b/DeviceSQL.Utilities.RealFLOMappingGenerator/ViewModel/Enron/EventViewModel.cs deleted file mode 100644 index 105e4a4..0000000 --- a/DeviceSQL.Utilities.RealFLOMappingGenerator/ViewModel/Enron/EventViewModel.cs +++ /dev/null @@ -1,35 +0,0 @@ -#region Imported Types - -using DeviceSQL.Utilities.RealFLOMappingGenerator.Model.Enron; -using GalaSoft.MvvmLight; - -#endregion - -namespace DeviceSQL.Utilities.RealFLOMappingGenerator.ViewModel.Enron -{ - public class EventViewModel : TrackableViewModelBase - { - #region Fields - - private Event _event; - - #endregion - - #region Imported Types - - public Event Event - { - get - { - return _event; - } - set - { - _event = value; - RaisePropertyChanged("Event"); - } - } - - #endregion - } -} diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/ViewModel/Enron/RegisterViewModel.cs b/DeviceSQL.Utilities.RealFLOMappingGenerator/ViewModel/Enron/RegisterViewModel.cs deleted file mode 100644 index c2e7da0..0000000 --- a/DeviceSQL.Utilities.RealFLOMappingGenerator/ViewModel/Enron/RegisterViewModel.cs +++ /dev/null @@ -1,37 +0,0 @@ -#region Imported Types - -using DeviceSQL.Utilities.RealFLOMappingGenerator.Model.Enron; -using GalaSoft.MvvmLight; - -#endregion - -namespace DeviceSQL.Utilities.RealFLOMappingGenerator.ViewModel.Enron -{ - public class RegisterViewModel : TrackableViewModelBase - { - - #region Fields - - private Register register; - - #endregion - - #region Imported Types - - public Register Register - { - get - { - return register; - } - set - { - register = value; - RaisePropertyChanged("Register"); - } - } - - #endregion - - } -} diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/ViewModel/ExportMapWizardViewModel.cs b/DeviceSQL.Utilities.RealFLOMappingGenerator/ViewModel/ExportMapWizardViewModel.cs deleted file mode 100644 index ea48dce..0000000 --- a/DeviceSQL.Utilities.RealFLOMappingGenerator/ViewModel/ExportMapWizardViewModel.cs +++ /dev/null @@ -1,13 +0,0 @@ -#region Imported Types - -using DeviceSQL.Utilities.RealFLOMappingGenerator.Model; -using GalaSoft.MvvmLight; - -#endregion - -namespace DeviceSQL.Utilities.RealFLOMappingGenerator.ViewModel -{ - public class ExportMapWizardViewModel : ViewModelBase - { - } -} diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/ViewModel/MainViewModel.cs b/DeviceSQL.Utilities.RealFLOMappingGenerator/ViewModel/MainViewModel.cs deleted file mode 100644 index 4685bba..0000000 --- a/DeviceSQL.Utilities.RealFLOMappingGenerator/ViewModel/MainViewModel.cs +++ /dev/null @@ -1,638 +0,0 @@ -#region Imported Types - -using DeviceSQL.Utilities.RealFLOMappingGenerator.Model; -using GalaSoft.MvvmLight; -using GalaSoft.MvvmLight.CommandWpf; -using Microsoft.Practices.ServiceLocation; -using System; -using System.Collections.ObjectModel; -using System.Collections.Specialized; -using System.IO; -using System.Linq; - -#endregion - -namespace DeviceSQL.Utilities.RealFLOMappingGenerator.ViewModel -{ - public class MainViewModel : ViewModelBase - { - - #region Fields - - private Guid id; - private byte[] helpFileBytes; - private string currentMapFileName; - private string currentCHMFileName; - private string currentCHMFolderName; - private string mainWebBrowserPanelHeaderText = "about:blank"; - private Interop.Main mainWebBrowserObjectForScripting; - private Interop.HelpDocument helpDocumentWebBrowserObjectForScripting; - private ObservableCollection enronRegisterViewModels; - private ObservableCollection enronArchiveViewModels; - private ObservableCollection enronEventViewModels; - private ObservableCollection teleBUSRegisterViewModels; - private ObservableCollection teleBUSArchiveViewModels; - private ObservableCollection teleBUSEventViewModels; - private bool hasChanged; - - #endregion - - #region Properties - - public Guid Id - { - get - { - return id; - } - set - { - id = value; - RaisePropertyChanged("Id"); - } - } - - public byte[] HelpFileBytes - { - get - { - return helpFileBytes; - } - set - { - helpFileBytes = value; - RaisePropertyChanged("HelpFileBytes"); - } - } - - public DialogService DialogService - { - get - { - return ServiceLocator.Current.GetInstance(); - } - } - - public DataService DataService - { - get - { - return ServiceLocator.Current.GetInstance(); - } - } - - public ObservableCollection EnronRegisterViewModels - { - get - { - return enronRegisterViewModels; - } - set - { - if (enronRegisterViewModels != null) - { - enronRegisterViewModels.CollectionChanged -= EnronRegisterViewModels_CollectionChanged; - } - - enronRegisterViewModels = value; - - if (enronRegisterViewModels != null) - { - enronRegisterViewModels.CollectionChanged += EnronRegisterViewModels_CollectionChanged; - } - } - } - - public ObservableCollection EnronArchiveViewModels - { - get - { - return enronArchiveViewModels; - } - set - { - if (enronArchiveViewModels != null) - { - enronArchiveViewModels.CollectionChanged -= EnronArchiveViewModels_CollectionChanged; - } - - enronArchiveViewModels = value; - - if (enronArchiveViewModels != null) - { - enronArchiveViewModels.CollectionChanged += EnronArchiveViewModels_CollectionChanged; - } - } - } - - public ObservableCollection EnronEventViewModels - { - get - { - return enronEventViewModels; - } - set - { - if (enronEventViewModels != null) - { - enronEventViewModels.CollectionChanged -= EnronEventViewModels_CollectionChanged; - } - - enronEventViewModels = value; - - if (enronEventViewModels != null) - { - enronEventViewModels.CollectionChanged += EnronEventViewModels_CollectionChanged; - } - } - } - - public ObservableCollection TeleBUSRegisterViewModels - { - get - { - return teleBUSRegisterViewModels; - } - set - { - if (teleBUSRegisterViewModels != null) - { - teleBUSRegisterViewModels.CollectionChanged -= TeleBUSRegisterViewModels_CollectionChanged; - } - - teleBUSRegisterViewModels = value; - - if (teleBUSRegisterViewModels != null) - { - teleBUSRegisterViewModels.CollectionChanged += TeleBUSRegisterViewModels_CollectionChanged; - } - } - } - - public ObservableCollection TeleBUSArchiveViewModels - { - get - { - return teleBUSArchiveViewModels; - } - set - { - if (teleBUSArchiveViewModels != null) - { - teleBUSArchiveViewModels.CollectionChanged -= TeleBUSArchiveViewModels_CollectionChanged; - } - - teleBUSArchiveViewModels = value; - - if (teleBUSArchiveViewModels != null) - { - teleBUSArchiveViewModels.CollectionChanged += TeleBUSArchiveViewModels_CollectionChanged; - } - } - } - - public ObservableCollection TeleBUSEventViewModels - { - get - { - return teleBUSEventViewModels; - } - set - { - if (teleBUSEventViewModels != null) - { - teleBUSEventViewModels.CollectionChanged -= TeleBUSEventViewModels_CollectionChanged; - } - - teleBUSEventViewModels = value; - - if (teleBUSEventViewModels != null) - { - teleBUSEventViewModels.CollectionChanged += TeleBUSEventViewModels_CollectionChanged; - } - } - } - - public string Version - { - get - { - return DataService.GetVersion(); - } - } - - public Interop.Main MainWebBrowserObjectForScripting - { - get - { - return mainWebBrowserObjectForScripting; - } - set - { - mainWebBrowserObjectForScripting = value; - RaisePropertyChanged("MainWebBrowserObjectForScripting"); - } - } - - public Interop.HelpDocument HelpDocumentWebBrowserObjectForScripting - { - get - { - return helpDocumentWebBrowserObjectForScripting; - } - set - { - helpDocumentWebBrowserObjectForScripting = value; - RaisePropertyChanged("HelpDocumentWebBrowserObjectForScripting"); - } - } - - public RelayCommand NewCommand - { - get; - set; - } - - public RelayCommand OpenCommand - { - get; - set; - } - - public RelayCommand SaveCommand - { - get; - set; - } - - public RelayCommand ExportCommand - { - get; - set; - } - - public RelayCommand CloseCommand - { - get; - set; - } - - public RelayCommand NavigateHelpDocumentWebBrowserCommand - { - get; - set; - } - - public RelayCommand NavigateMainWebBrowserCommand - { - get; - set; - } - - public string MainWebBrowserPanelHeaderText - { - get - { - return mainWebBrowserPanelHeaderText; - } - set - { - mainWebBrowserPanelHeaderText = value; - RaisePropertyChanged("MainWebBrowserPanelHeaderText"); - } - } - - public bool CurrentMapFileExists - { - get - { - return File.Exists(CurrentCHMFileName); - } - } - - public string CurrentMapFileName - { - get - { - return currentMapFileName; - } - set - { - currentMapFileName = value; - RaisePropertyChanged("CurrentMapFileName"); - } - } - - public string CurrentCHMFileName - { - get - { - return currentCHMFileName; - } - set - { - currentCHMFileName = value; - RaisePropertyChanged("CurrentCHMFileName"); - } - } - - public string CurrentCHMFolderName - { - get - { - return currentCHMFolderName; - } - set - { - currentCHMFolderName = value; - RaisePropertyChanged("CurrentCHMFolderName"); - } - } - - public bool HasChanged - { - get - { - return hasChanged; - } - set - { - hasChanged = value; - RaisePropertyChanged("HasChanged"); - } - } - - #endregion - - #region Constructor - - public MainViewModel() - { - NewCommand = new RelayCommand(New); - OpenCommand = new RelayCommand(Open); - SaveCommand = new RelayCommand(Save, CanSave); - ExportCommand = new RelayCommand(Export, CanExport); - CloseCommand = new RelayCommand(Close, CanClose); - MainWebBrowserObjectForScripting = new Interop.Main(); - HelpDocumentWebBrowserObjectForScripting = new Interop.HelpDocument(); - } - - #endregion - - #region Command Methods - - private void New() - { - if (CanSave()) - { - var showSaveBeforeProceedingDialogResult = DialogService.ShowSaveBeforeProceedingDialog(); - if (showSaveBeforeProceedingDialogResult.HasValue) - { - if (showSaveBeforeProceedingDialogResult.Value) - { - Save(); - } - } - else - { - return; - } - } - - var map = DialogService.OpenNewMapWizardDialog(); - - if (map != null) - { - LoadMap(map); - } - } - - private void Open() - { - var map = DialogService.OpenMapFileDialog(); - if (map != null) - { - LoadMap(map); - } - } - private bool CanSave() - { - return HasChanged; - } - - private void Save() - { - try - { - var map = new Map() - { - Id = Id, - HelpFileBytes = HelpFileBytes, - EnronRegisters = EnronRegisterViewModels?.Select(enronRegisterViewModel => enronRegisterViewModel.Register).ToList(), - EnronArchives = EnronArchiveViewModels?.Select(enronArchiveViewModel => enronArchiveViewModel.Archive).ToList(), - EnronEvents = EnronEventViewModels?.Select(enronEventViewModel => enronEventViewModel.Event).ToList(), - TeleBUSRegisters = TeleBUSRegisterViewModels?.Select(teleBUSRegisterViewModel => teleBUSRegisterViewModel.Register).ToList(), - TeleBUSArchives = teleBUSArchiveViewModels?.Select(teleBUSArchiveViewModel => teleBUSArchiveViewModel.Archive).ToList(), - TeleBUSEvents = TeleBUSEventViewModels?.Select(teleBUSEventViewModel => teleBUSEventViewModel.Event).ToList() - }; - DataService.SaveMap(map, CurrentMapFileName); - } - catch (Exception ex) - { - DialogService.ShowErrorMessage($"Error saving map: {ex.Message}"); - } - } - - private bool CanExport() - { - return false; - } - - private void Export() - { - - } - - private bool CanClose() - { - return !Id.Equals(Guid.Empty); - } - - private void Close() - { - if (CanSave()) - { - var showSaveBeforeProceedingDialogResult = DialogService.ShowSaveBeforeProceedingDialog(); - if (showSaveBeforeProceedingDialogResult.HasValue) - { - if (showSaveBeforeProceedingDialogResult.Value) - { - Save(); - } - } - else - { - return; - } - } - Id = Guid.Empty; - CurrentMapFileName = null; - CurrentCHMFileName = null; - HelpFileBytes = new byte[] { }; - EnronArchiveViewModels = new ObservableCollection(); - EnronRegisterViewModels = new ObservableCollection(); - EnronEventViewModels = new ObservableCollection(); - TeleBUSArchiveViewModels = new ObservableCollection(); - TeleBUSRegisterViewModels = new ObservableCollection(); - TeleBUSEventViewModels = new ObservableCollection(); - } - - #endregion - - #region Observable Collection Events - - private void EnronRegisterViewModels_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) - { - switch (e.Action) - { - case NotifyCollectionChangedAction.Add: - break; - case NotifyCollectionChangedAction.Move: - break; - case NotifyCollectionChangedAction.Remove: - break; - case NotifyCollectionChangedAction.Replace: - break; - case NotifyCollectionChangedAction.Reset: - break; - } - } - - private void EnronArchiveViewModels_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) - { - switch (e.Action) - { - case NotifyCollectionChangedAction.Add: - break; - case NotifyCollectionChangedAction.Move: - break; - case NotifyCollectionChangedAction.Remove: - break; - case NotifyCollectionChangedAction.Replace: - break; - case NotifyCollectionChangedAction.Reset: - break; - } - } - - private void EnronEventViewModels_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) - { - switch (e.Action) - { - case NotifyCollectionChangedAction.Add: - break; - case NotifyCollectionChangedAction.Move: - break; - case NotifyCollectionChangedAction.Remove: - break; - case NotifyCollectionChangedAction.Replace: - break; - case NotifyCollectionChangedAction.Reset: - break; - } - } - - private void TeleBUSRegisterViewModels_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) - { - switch (e.Action) - { - case NotifyCollectionChangedAction.Add: - break; - case NotifyCollectionChangedAction.Move: - break; - case NotifyCollectionChangedAction.Remove: - break; - case NotifyCollectionChangedAction.Replace: - break; - case NotifyCollectionChangedAction.Reset: - break; - } - } - - private void TeleBUSArchiveViewModels_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) - { - switch (e.Action) - { - case NotifyCollectionChangedAction.Add: - break; - case NotifyCollectionChangedAction.Move: - break; - case NotifyCollectionChangedAction.Remove: - break; - case NotifyCollectionChangedAction.Replace: - break; - case NotifyCollectionChangedAction.Reset: - break; - } - } - - private void TeleBUSEventViewModels_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) - { - switch (e.Action) - { - case NotifyCollectionChangedAction.Add: - break; - case NotifyCollectionChangedAction.Move: - break; - case NotifyCollectionChangedAction.Remove: - break; - case NotifyCollectionChangedAction.Replace: - break; - case NotifyCollectionChangedAction.Reset: - break; - } - } - - #endregion - - #region Helper Methods - - private void LoadMap(Map map) - { - if (map != null) - { - try - { - Id = map.Id; - DataService.ExtractCHMFile(map, out currentCHMFileName, out currentCHMFolderName); - HelpFileBytes = map.HelpFileBytes; - EnronArchiveViewModels = new ObservableCollection(map.EnronArchives.Select(enronArchive => new Enron.ArchiveViewModel() { Archive = enronArchive })); - EnronRegisterViewModels = new ObservableCollection(map.EnronRegisters.Select(enronArchive => new Enron.RegisterViewModel() { Register = enronArchive })); - EnronEventViewModels = new ObservableCollection(map.EnronEvents.Select(enronEvent => new Enron.EventViewModel() { Event = enronEvent })); - TeleBUSArchiveViewModels = new ObservableCollection(map.TeleBUSArchives.Select(teleBUSArchive => new TeleBUS.ArchiveViewModel() { Archive = teleBUSArchive })); - TeleBUSRegisterViewModels = new ObservableCollection(map.TeleBUSRegisters.Select(teleBUSArchive => new TeleBUS.RegisterViewModel() { Register = teleBUSArchive })); - TeleBUSEventViewModels = new ObservableCollection(map.TeleBUSEvents.Select(teleBUSEvent => new TeleBUS.EventViewModel() { Event = teleBUSEvent })); - - var indexHTMLDocumentFileName = DataService.CreateIndexHTMLDocument(currentCHMFolderName); - - if (indexHTMLDocumentFileName != null) - { - NavigateHelpDocumentWebBrowserCommand.Execute(indexHTMLDocumentFileName); - } - else - { - DialogService.ShowErrorMessage("Unable to create index HTML document"); - Close(); - } - } - catch (Exception ex) - { - DialogService.ShowErrorMessage($"Error loading map: {ex.Message}"); - } - } - } - - #endregion - - } -} \ No newline at end of file diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/ViewModel/NewMapWizardViewModel.cs b/DeviceSQL.Utilities.RealFLOMappingGenerator/ViewModel/NewMapWizardViewModel.cs deleted file mode 100644 index b6d383b..0000000 --- a/DeviceSQL.Utilities.RealFLOMappingGenerator/ViewModel/NewMapWizardViewModel.cs +++ /dev/null @@ -1,140 +0,0 @@ -#region Imported Types - -using System; -using GalaSoft.MvvmLight; -using GalaSoft.MvvmLight.CommandWpf; -using DeviceSQL.Utilities.RealFLOMappingGenerator.Model; -using Microsoft.Practices.ServiceLocation; -using System.IO; - -#endregion - -namespace DeviceSQL.Utilities.RealFLOMappingGenerator.ViewModel -{ - public class NewMapWizardViewModel : ViewModelBase - { - - #region Fields - - private string fileName; - private string chmFileName = @"C:\Program Files (x86)\Schneider Electric\Realflo\Help\Realflo Reference Manual.chm"; - - #endregion - - #region Properties - - public DataService DataService - { - get - { - return ServiceLocator.Current.GetInstance(); - } - } - - public DialogService DialogService - { - get - { - return ServiceLocator.Current.GetInstance(); - } - } - - public RelayCommand SelectRealFLOHelpFileCommand - { - get; - set; - } - - public RelayCommand SelectMapFileNameCommand - { - get; - set; - } - - public bool FileExists - { - get - { - return File.Exists(FileName); - } - } - - public string FileName - { - get - { - return fileName; - } - set - { - fileName = value; - RaisePropertyChanged("FileName"); - RaisePropertyChanged("FileExists"); - } - } - - public bool CHMFileExists - { - get - { - return File.Exists(CHMFileName); - } - } - - public string CHMFileName - { - get - { - return chmFileName; - } - set - { - chmFileName = value; - RaisePropertyChanged("CHMFileName"); - RaisePropertyChanged("CHMFileExists"); - } - } - - #endregion - - #region Constructor - - public NewMapWizardViewModel() - { - SelectRealFLOHelpFileCommand = new RelayCommand(SelectRealFLOHelpFile); - SelectMapFileNameCommand = new RelayCommand(SelectMapFileName); - } - - #endregion - - #region Command Methods - - private void SelectRealFLOHelpFile() - { - var selectedCHMFile = DialogService.OpenSelectRealFLOHelpFileDialog(CHMFileName); - if(selectedCHMFile!= null) - { - CHMFileName = selectedCHMFile; - } - } - - private void SelectMapFileName() - { - var selectedMapFileName = DialogService.OpenCreateMapFileDialog(); - - if(selectedMapFileName != null) - { - FileName = selectedMapFileName; - } - else - { - FileName = null; - CHMFileName = null; - } - - } - - #endregion - - } -} diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/ViewModel/TeleBUS/ArchiveViewModel.cs b/DeviceSQL.Utilities.RealFLOMappingGenerator/ViewModel/TeleBUS/ArchiveViewModel.cs deleted file mode 100644 index 96f7511..0000000 --- a/DeviceSQL.Utilities.RealFLOMappingGenerator/ViewModel/TeleBUS/ArchiveViewModel.cs +++ /dev/null @@ -1,35 +0,0 @@ -#region Imported Types - -using DeviceSQL.Utilities.RealFLOMappingGenerator.Model.TeleBUS; -using GalaSoft.MvvmLight; - -#endregion - -namespace DeviceSQL.Utilities.RealFLOMappingGenerator.ViewModel.TeleBUS -{ - public class ArchiveViewModel : TrackableViewModelBase - { - #region Fields - - private Archive archive; - - #endregion - - #region Imported Types - - public Archive Archive - { - get - { - return archive; - } - set - { - archive = value; - RaisePropertyChanged("Archive"); - } - } - - #endregion - } -} diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/ViewModel/TeleBUS/EventViewModel.cs b/DeviceSQL.Utilities.RealFLOMappingGenerator/ViewModel/TeleBUS/EventViewModel.cs deleted file mode 100644 index 5f1d4b7..0000000 --- a/DeviceSQL.Utilities.RealFLOMappingGenerator/ViewModel/TeleBUS/EventViewModel.cs +++ /dev/null @@ -1,35 +0,0 @@ -#region Imported Types - -using DeviceSQL.Utilities.RealFLOMappingGenerator.Model.TeleBUS; -using GalaSoft.MvvmLight; - -#endregion - -namespace DeviceSQL.Utilities.RealFLOMappingGenerator.ViewModel.TeleBUS -{ - public class EventViewModel : TrackableViewModelBase - { - #region Fields - - private Event _event; - - #endregion - - #region Imported Types - - public Event Event - { - get - { - return _event; - } - set - { - _event = value; - RaisePropertyChanged("Event"); - } - } - - #endregion - } -} diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/ViewModel/TeleBUS/RegisterViewModel.cs b/DeviceSQL.Utilities.RealFLOMappingGenerator/ViewModel/TeleBUS/RegisterViewModel.cs deleted file mode 100644 index 7a30cf9..0000000 --- a/DeviceSQL.Utilities.RealFLOMappingGenerator/ViewModel/TeleBUS/RegisterViewModel.cs +++ /dev/null @@ -1,35 +0,0 @@ -#region Imported Types - -using DeviceSQL.Utilities.RealFLOMappingGenerator.Model.TeleBUS; -using GalaSoft.MvvmLight; - -#endregion - -namespace DeviceSQL.Utilities.RealFLOMappingGenerator.ViewModel.TeleBUS -{ - public class RegisterViewModel : TrackableViewModelBase - { - #region Fields - - private Register register; - - #endregion - - #region Imported Types - - public Register Register - { - get - { - return register; - } - set - { - register = value; - RaisePropertyChanged("Register"); - } - } - - #endregion - } -} diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/ViewModel/TrackableViewModelBase.cs b/DeviceSQL.Utilities.RealFLOMappingGenerator/ViewModel/TrackableViewModelBase.cs deleted file mode 100644 index 0bada95..0000000 --- a/DeviceSQL.Utilities.RealFLOMappingGenerator/ViewModel/TrackableViewModelBase.cs +++ /dev/null @@ -1,74 +0,0 @@ -#region Imported Types - -using System.Runtime.CompilerServices; -using GalaSoft.MvvmLight; - -#endregion - -namespace DeviceSQL.Utilities.RealFLOMappingGenerator.ViewModel -{ - public class TrackableViewModelBase : ViewModelBase - { - - #region Fields - - private bool hasChanged; - private TrackableViewModelBase parent; - - #endregion - - #region Properties - - public bool HasChanged - { - get - { - return hasChanged; - } - set - { - hasChanged = value; - RaisePropertyChanged("HasChanged"); - } - } - - public TrackableViewModelBase Parent - { - get - { - return parent; - } - } - - #endregion - - #region Constructor(s) - - public TrackableViewModelBase() - { - } - - public TrackableViewModelBase(TrackableViewModelBase parent) - { - this.parent = parent; - } - - #endregion - - #region Overrides - - public override void RaisePropertyChanged([CallerMemberName] string propertyName = null) - { - HasChanged = true; - if (parent != null) - { - parent.HasChanged = true; - } - base.RaisePropertyChanged(propertyName); - } - - #endregion - - - } -} diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/ViewModel/ViewModelLocator.cs b/DeviceSQL.Utilities.RealFLOMappingGenerator/ViewModel/ViewModelLocator.cs deleted file mode 100644 index f645007..0000000 --- a/DeviceSQL.Utilities.RealFLOMappingGenerator/ViewModel/ViewModelLocator.cs +++ /dev/null @@ -1,68 +0,0 @@ -#region Imported Types - -using GalaSoft.MvvmLight; -using Microsoft.Practices.ServiceLocation; - -#endregion - -namespace DeviceSQL.Utilities.RealFLOMappingGenerator.ViewModel -{ - public class ViewModelLocator - { - public ViewModelLocator() - { - - } - - public ExportMapWizardViewModel ExportMapWizard - { - get - { - if (!ViewModelBase.IsInDesignModeStatic) - { - return ServiceLocator.Current.GetInstance(); - } - else - { - return null; - } - - } - } - - public NewMapWizardViewModel NewMapWizard - { - get - { - if (!ViewModelBase.IsInDesignModeStatic) - { - return ServiceLocator.Current.GetInstance(); - } - else - { - return null; - } - } - } - - public MainViewModel Main - { - get - { - if (!ViewModelBase.IsInDesignModeStatic) - { - return ServiceLocator.Current.GetInstance(); - } - else - { - return null; - } - } - } - - public static void Cleanup() - { - - } - } -} \ No newline at end of file diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/Wizard/NewMapWizard.xaml b/DeviceSQL.Utilities.RealFLOMappingGenerator/Wizard/NewMapWizard.xaml deleted file mode 100644 index 7896ea5..0000000 --- a/DeviceSQL.Utilities.RealFLOMappingGenerator/Wizard/NewMapWizard.xaml +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/Wizard/NewMapWizard.xaml.cs b/DeviceSQL.Utilities.RealFLOMappingGenerator/Wizard/NewMapWizard.xaml.cs deleted file mode 100644 index bd50a86..0000000 --- a/DeviceSQL.Utilities.RealFLOMappingGenerator/Wizard/NewMapWizard.xaml.cs +++ /dev/null @@ -1,34 +0,0 @@ -#region Imported Types - -using DeviceSQL.Utilities.RealFLOMappingGenerator.ViewModel; -using Microsoft.Practices.ServiceLocation; -using System.Windows; - -#endregion - -namespace DeviceSQL.Utilities.RealFLOMappingGenerator.Wizard -{ - public partial class NewMapWizard : Window - { - - #region Constructor(s) - - public NewMapWizard() - { - InitializeComponent(); - } - - #endregion - - #region Wizard Events - - private void RadWizard_Finish(object sender, Telerik.Windows.Controls.NavigationButtonsEventArgs e) - { - DialogResult = true; - Close(); - } - - #endregion - - } -} diff --git a/DeviceSQL.Utilities.RealFLOMappingGenerator/packages.config b/DeviceSQL.Utilities.RealFLOMappingGenerator/packages.config deleted file mode 100644 index c36c606..0000000 --- a/DeviceSQL.Utilities.RealFLOMappingGenerator/packages.config +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/DeviceSQL.sln b/DeviceSQL.sln index cadd9af..b830189 100644 --- a/DeviceSQL.sln +++ b/DeviceSQL.sln @@ -1,17 +1,31 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.27130.2010 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.29306.81 MinimumVisualStudioVersion = 10.0.40219.1 Project("{00D1A9C2-B5F0-4AF3-8072-F6C62B433612}") = "DeviceSQL", "DeviceSQL\DeviceSQL.sqlproj", "{CB6F0884-5A58-432A-800E-4ABFEEAB6F46}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DeviceSQL.TestHarness", "DeviceSQL.TestHarness\DeviceSQL.TestHarness.csproj", "{FF09F40D-A515-4ABB-9DB1-21D9D1F2793E}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DeviceSQL.DatabaseSetupUtility", "DeviceSQL.DatabaseSetupUtility\DeviceSQL.DatabaseSetupUtility.csproj", "{22929CF0-D02A-47D9-A308-D1D5497BF42B}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DeviceSQL.Utilities.DeploymentScriptFormatter", "DeviceSQL.Utilities.DeploymentScriptFormatter\DeviceSQL.Utilities.DeploymentScriptFormatter.csproj", "{0EA05DA7-635F-4018-9F33-0D3419374C9F}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DeviceSQL.Service", "DeviceSQL.Service\DeviceSQL.Service.csproj", "{F7B38332-A678-424C-A67E-25CF36C2430D}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DeviceSQL.Utilities.RealFLOMappingGenerator", "DeviceSQL.Utilities.RealFLOMappingGenerator\DeviceSQL.Utilities.RealFLOMappingGenerator.csproj", "{6037A772-F9F9-420A-B04E-24E4B646911A}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DeviceSQL.Devices.ROC", "DeviceSQL.Devices.ROC\DeviceSQL.Devices.ROC.csproj", "{AF0E4B64-F2C2-4459-A518-9AA905FF6F0F}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DeviceSQL.DatabaseSetupUtility", "DeviceSQL.DatabaseSetupUtility\DeviceSQL.DatabaseSetupUtility.csproj", "{22929CF0-D02A-47D9-A308-D1D5497BF42B}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DeviceSQL.Devices.Modbus", "DeviceSQL.Devices.Modbus\DeviceSQL.Devices.Modbus.csproj", "{0869E7FE-4FAC-4FC5-A2A8-313F410CF8CD}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DeviceSQL.Devices.Common", "DeviceSQL.Devices.Common\DeviceSQL.Devices.Common.csproj", "{5DEADADF-BE60-4774-80C6-97B3A83FA289}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DeviceSQL.SQLTypes.ROC", "DeviceSQL.SQLTypes.ROC\DeviceSQL.SQLTypes.ROC.csproj", "{256CA566-5436-4543-BC13-D2480BEE70C2}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DeviceSQL.SQLTypes.Modbus", "DeviceSQL.SQLTypes.Modbus\DeviceSQL.SQLTypes.Modbus.csproj", "{CD45D76E-D2ED-4587-9873-F35AD24E42A5}" +EndProject +Project("{00D1A9C2-B5F0-4AF3-8072-F6C62B433612}") = "DeviceSQL.ChannelManager", "DeviceSQL.ChannelManager\DeviceSQL.ChannelManager.sqlproj", "{6393A621-3002-48AB-8DE0-74A03FFC4AFB}" +EndProject +Project("{00D1A9C2-B5F0-4AF3-8072-F6C62B433612}") = "DeviceSQL.ROCMaster", "DeviceSQL.ROCMaster\DeviceSQL.ROCMaster.sqlproj", "{C5358ADC-ECA3-464D-AEB9-CE99048D4BE3}" +EndProject +Project("{00D1A9C2-B5F0-4AF3-8072-F6C62B433612}") = "DeviceSQL.ModbusMaster", "DeviceSQL.ModbusMaster\DeviceSQL.ModbusMaster.sqlproj", "{BF99E0A7-F591-4629-8DD2-DDA18B05E5F2}" +EndProject +Project("{00D1A9C2-B5F0-4AF3-8072-F6C62B433612}") = "DeviceSQL.DeviceManager", "DeviceSQL.DeviceManager\DeviceSQL.DeviceManager.sqlproj", "{0186AFD4-F3E0-42C0-A6BA-58F704804C31}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -33,30 +47,6 @@ Global {CB6F0884-5A58-432A-800E-4ABFEEAB6F46}.Release|x86.ActiveCfg = Release|Any CPU {CB6F0884-5A58-432A-800E-4ABFEEAB6F46}.Release|x86.Build.0 = Release|Any CPU {CB6F0884-5A58-432A-800E-4ABFEEAB6F46}.Release|x86.Deploy.0 = Release|Any CPU - {FF09F40D-A515-4ABB-9DB1-21D9D1F2793E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FF09F40D-A515-4ABB-9DB1-21D9D1F2793E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FF09F40D-A515-4ABB-9DB1-21D9D1F2793E}.Debug|x86.ActiveCfg = Debug|Any CPU - {FF09F40D-A515-4ABB-9DB1-21D9D1F2793E}.Debug|x86.Build.0 = Debug|Any CPU - {FF09F40D-A515-4ABB-9DB1-21D9D1F2793E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FF09F40D-A515-4ABB-9DB1-21D9D1F2793E}.Release|Any CPU.Build.0 = Release|Any CPU - {FF09F40D-A515-4ABB-9DB1-21D9D1F2793E}.Release|x86.ActiveCfg = Release|Any CPU - {FF09F40D-A515-4ABB-9DB1-21D9D1F2793E}.Release|x86.Build.0 = Release|Any CPU - {0EA05DA7-635F-4018-9F33-0D3419374C9F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0EA05DA7-635F-4018-9F33-0D3419374C9F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0EA05DA7-635F-4018-9F33-0D3419374C9F}.Debug|x86.ActiveCfg = Debug|Any CPU - {0EA05DA7-635F-4018-9F33-0D3419374C9F}.Debug|x86.Build.0 = Debug|Any CPU - {0EA05DA7-635F-4018-9F33-0D3419374C9F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0EA05DA7-635F-4018-9F33-0D3419374C9F}.Release|Any CPU.Build.0 = Release|Any CPU - {0EA05DA7-635F-4018-9F33-0D3419374C9F}.Release|x86.ActiveCfg = Release|Any CPU - {0EA05DA7-635F-4018-9F33-0D3419374C9F}.Release|x86.Build.0 = Release|Any CPU - {6037A772-F9F9-420A-B04E-24E4B646911A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6037A772-F9F9-420A-B04E-24E4B646911A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6037A772-F9F9-420A-B04E-24E4B646911A}.Debug|x86.ActiveCfg = Debug|Any CPU - {6037A772-F9F9-420A-B04E-24E4B646911A}.Debug|x86.Build.0 = Debug|Any CPU - {6037A772-F9F9-420A-B04E-24E4B646911A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {6037A772-F9F9-420A-B04E-24E4B646911A}.Release|Any CPU.Build.0 = Release|Any CPU - {6037A772-F9F9-420A-B04E-24E4B646911A}.Release|x86.ActiveCfg = Release|Any CPU - {6037A772-F9F9-420A-B04E-24E4B646911A}.Release|x86.Build.0 = Release|Any CPU {22929CF0-D02A-47D9-A308-D1D5497BF42B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {22929CF0-D02A-47D9-A308-D1D5497BF42B}.Debug|Any CPU.Build.0 = Debug|Any CPU {22929CF0-D02A-47D9-A308-D1D5497BF42B}.Debug|x86.ActiveCfg = Debug|Any CPU @@ -65,6 +55,102 @@ Global {22929CF0-D02A-47D9-A308-D1D5497BF42B}.Release|Any CPU.Build.0 = Release|Any CPU {22929CF0-D02A-47D9-A308-D1D5497BF42B}.Release|x86.ActiveCfg = Release|Any CPU {22929CF0-D02A-47D9-A308-D1D5497BF42B}.Release|x86.Build.0 = Release|Any CPU + {F7B38332-A678-424C-A67E-25CF36C2430D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F7B38332-A678-424C-A67E-25CF36C2430D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F7B38332-A678-424C-A67E-25CF36C2430D}.Debug|x86.ActiveCfg = Debug|Any CPU + {F7B38332-A678-424C-A67E-25CF36C2430D}.Debug|x86.Build.0 = Debug|Any CPU + {F7B38332-A678-424C-A67E-25CF36C2430D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F7B38332-A678-424C-A67E-25CF36C2430D}.Release|Any CPU.Build.0 = Release|Any CPU + {F7B38332-A678-424C-A67E-25CF36C2430D}.Release|x86.ActiveCfg = Release|Any CPU + {F7B38332-A678-424C-A67E-25CF36C2430D}.Release|x86.Build.0 = Release|Any CPU + {AF0E4B64-F2C2-4459-A518-9AA905FF6F0F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AF0E4B64-F2C2-4459-A518-9AA905FF6F0F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AF0E4B64-F2C2-4459-A518-9AA905FF6F0F}.Debug|x86.ActiveCfg = Debug|Any CPU + {AF0E4B64-F2C2-4459-A518-9AA905FF6F0F}.Debug|x86.Build.0 = Debug|Any CPU + {AF0E4B64-F2C2-4459-A518-9AA905FF6F0F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AF0E4B64-F2C2-4459-A518-9AA905FF6F0F}.Release|Any CPU.Build.0 = Release|Any CPU + {AF0E4B64-F2C2-4459-A518-9AA905FF6F0F}.Release|x86.ActiveCfg = Release|Any CPU + {AF0E4B64-F2C2-4459-A518-9AA905FF6F0F}.Release|x86.Build.0 = Release|Any CPU + {0869E7FE-4FAC-4FC5-A2A8-313F410CF8CD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0869E7FE-4FAC-4FC5-A2A8-313F410CF8CD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0869E7FE-4FAC-4FC5-A2A8-313F410CF8CD}.Debug|x86.ActiveCfg = Debug|Any CPU + {0869E7FE-4FAC-4FC5-A2A8-313F410CF8CD}.Debug|x86.Build.0 = Debug|Any CPU + {0869E7FE-4FAC-4FC5-A2A8-313F410CF8CD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0869E7FE-4FAC-4FC5-A2A8-313F410CF8CD}.Release|Any CPU.Build.0 = Release|Any CPU + {0869E7FE-4FAC-4FC5-A2A8-313F410CF8CD}.Release|x86.ActiveCfg = Release|Any CPU + {0869E7FE-4FAC-4FC5-A2A8-313F410CF8CD}.Release|x86.Build.0 = Release|Any CPU + {5DEADADF-BE60-4774-80C6-97B3A83FA289}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5DEADADF-BE60-4774-80C6-97B3A83FA289}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5DEADADF-BE60-4774-80C6-97B3A83FA289}.Debug|x86.ActiveCfg = Debug|Any CPU + {5DEADADF-BE60-4774-80C6-97B3A83FA289}.Debug|x86.Build.0 = Debug|Any CPU + {5DEADADF-BE60-4774-80C6-97B3A83FA289}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5DEADADF-BE60-4774-80C6-97B3A83FA289}.Release|Any CPU.Build.0 = Release|Any CPU + {5DEADADF-BE60-4774-80C6-97B3A83FA289}.Release|x86.ActiveCfg = Release|Any CPU + {5DEADADF-BE60-4774-80C6-97B3A83FA289}.Release|x86.Build.0 = Release|Any CPU + {256CA566-5436-4543-BC13-D2480BEE70C2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {256CA566-5436-4543-BC13-D2480BEE70C2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {256CA566-5436-4543-BC13-D2480BEE70C2}.Debug|x86.ActiveCfg = Debug|Any CPU + {256CA566-5436-4543-BC13-D2480BEE70C2}.Debug|x86.Build.0 = Debug|Any CPU + {256CA566-5436-4543-BC13-D2480BEE70C2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {256CA566-5436-4543-BC13-D2480BEE70C2}.Release|Any CPU.Build.0 = Release|Any CPU + {256CA566-5436-4543-BC13-D2480BEE70C2}.Release|x86.ActiveCfg = Release|Any CPU + {256CA566-5436-4543-BC13-D2480BEE70C2}.Release|x86.Build.0 = Release|Any CPU + {CD45D76E-D2ED-4587-9873-F35AD24E42A5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CD45D76E-D2ED-4587-9873-F35AD24E42A5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CD45D76E-D2ED-4587-9873-F35AD24E42A5}.Debug|x86.ActiveCfg = Debug|Any CPU + {CD45D76E-D2ED-4587-9873-F35AD24E42A5}.Debug|x86.Build.0 = Debug|Any CPU + {CD45D76E-D2ED-4587-9873-F35AD24E42A5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CD45D76E-D2ED-4587-9873-F35AD24E42A5}.Release|Any CPU.Build.0 = Release|Any CPU + {CD45D76E-D2ED-4587-9873-F35AD24E42A5}.Release|x86.ActiveCfg = Release|Any CPU + {CD45D76E-D2ED-4587-9873-F35AD24E42A5}.Release|x86.Build.0 = Release|Any CPU + {6393A621-3002-48AB-8DE0-74A03FFC4AFB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6393A621-3002-48AB-8DE0-74A03FFC4AFB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6393A621-3002-48AB-8DE0-74A03FFC4AFB}.Debug|Any CPU.Deploy.0 = Debug|Any CPU + {6393A621-3002-48AB-8DE0-74A03FFC4AFB}.Debug|x86.ActiveCfg = Debug|Any CPU + {6393A621-3002-48AB-8DE0-74A03FFC4AFB}.Debug|x86.Build.0 = Debug|Any CPU + {6393A621-3002-48AB-8DE0-74A03FFC4AFB}.Debug|x86.Deploy.0 = Debug|Any CPU + {6393A621-3002-48AB-8DE0-74A03FFC4AFB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6393A621-3002-48AB-8DE0-74A03FFC4AFB}.Release|Any CPU.Build.0 = Release|Any CPU + {6393A621-3002-48AB-8DE0-74A03FFC4AFB}.Release|Any CPU.Deploy.0 = Release|Any CPU + {6393A621-3002-48AB-8DE0-74A03FFC4AFB}.Release|x86.ActiveCfg = Release|Any CPU + {6393A621-3002-48AB-8DE0-74A03FFC4AFB}.Release|x86.Build.0 = Release|Any CPU + {6393A621-3002-48AB-8DE0-74A03FFC4AFB}.Release|x86.Deploy.0 = Release|Any CPU + {C5358ADC-ECA3-464D-AEB9-CE99048D4BE3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C5358ADC-ECA3-464D-AEB9-CE99048D4BE3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C5358ADC-ECA3-464D-AEB9-CE99048D4BE3}.Debug|Any CPU.Deploy.0 = Debug|Any CPU + {C5358ADC-ECA3-464D-AEB9-CE99048D4BE3}.Debug|x86.ActiveCfg = Debug|Any CPU + {C5358ADC-ECA3-464D-AEB9-CE99048D4BE3}.Debug|x86.Build.0 = Debug|Any CPU + {C5358ADC-ECA3-464D-AEB9-CE99048D4BE3}.Debug|x86.Deploy.0 = Debug|Any CPU + {C5358ADC-ECA3-464D-AEB9-CE99048D4BE3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C5358ADC-ECA3-464D-AEB9-CE99048D4BE3}.Release|Any CPU.Build.0 = Release|Any CPU + {C5358ADC-ECA3-464D-AEB9-CE99048D4BE3}.Release|Any CPU.Deploy.0 = Release|Any CPU + {C5358ADC-ECA3-464D-AEB9-CE99048D4BE3}.Release|x86.ActiveCfg = Release|Any CPU + {C5358ADC-ECA3-464D-AEB9-CE99048D4BE3}.Release|x86.Build.0 = Release|Any CPU + {C5358ADC-ECA3-464D-AEB9-CE99048D4BE3}.Release|x86.Deploy.0 = Release|Any CPU + {BF99E0A7-F591-4629-8DD2-DDA18B05E5F2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BF99E0A7-F591-4629-8DD2-DDA18B05E5F2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BF99E0A7-F591-4629-8DD2-DDA18B05E5F2}.Debug|Any CPU.Deploy.0 = Debug|Any CPU + {BF99E0A7-F591-4629-8DD2-DDA18B05E5F2}.Debug|x86.ActiveCfg = Debug|Any CPU + {BF99E0A7-F591-4629-8DD2-DDA18B05E5F2}.Debug|x86.Build.0 = Debug|Any CPU + {BF99E0A7-F591-4629-8DD2-DDA18B05E5F2}.Debug|x86.Deploy.0 = Debug|Any CPU + {BF99E0A7-F591-4629-8DD2-DDA18B05E5F2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BF99E0A7-F591-4629-8DD2-DDA18B05E5F2}.Release|Any CPU.Build.0 = Release|Any CPU + {BF99E0A7-F591-4629-8DD2-DDA18B05E5F2}.Release|Any CPU.Deploy.0 = Release|Any CPU + {BF99E0A7-F591-4629-8DD2-DDA18B05E5F2}.Release|x86.ActiveCfg = Release|Any CPU + {BF99E0A7-F591-4629-8DD2-DDA18B05E5F2}.Release|x86.Build.0 = Release|Any CPU + {BF99E0A7-F591-4629-8DD2-DDA18B05E5F2}.Release|x86.Deploy.0 = Release|Any CPU + {0186AFD4-F3E0-42C0-A6BA-58F704804C31}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0186AFD4-F3E0-42C0-A6BA-58F704804C31}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0186AFD4-F3E0-42C0-A6BA-58F704804C31}.Debug|Any CPU.Deploy.0 = Debug|Any CPU + {0186AFD4-F3E0-42C0-A6BA-58F704804C31}.Debug|x86.ActiveCfg = Debug|Any CPU + {0186AFD4-F3E0-42C0-A6BA-58F704804C31}.Debug|x86.Build.0 = Debug|Any CPU + {0186AFD4-F3E0-42C0-A6BA-58F704804C31}.Debug|x86.Deploy.0 = Debug|Any CPU + {0186AFD4-F3E0-42C0-A6BA-58F704804C31}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0186AFD4-F3E0-42C0-A6BA-58F704804C31}.Release|Any CPU.Build.0 = Release|Any CPU + {0186AFD4-F3E0-42C0-A6BA-58F704804C31}.Release|Any CPU.Deploy.0 = Release|Any CPU + {0186AFD4-F3E0-42C0-A6BA-58F704804C31}.Release|x86.ActiveCfg = Release|Any CPU + {0186AFD4-F3E0-42C0-A6BA-58F704804C31}.Release|x86.Build.0 = Release|Any CPU + {0186AFD4-F3E0-42C0-A6BA-58F704804C31}.Release|x86.Deploy.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/DeviceSQL/Device/ROC/Crc16.cs b/DeviceSQL/Device/ROC/Crc16.cs deleted file mode 100644 index 54bae8a..0000000 --- a/DeviceSQL/Device/ROC/Crc16.cs +++ /dev/null @@ -1,110 +0,0 @@ -#region Imported Types - -using System; - -#endregion - -namespace DeviceSQL.Device.ROC.Utility -{ - public class CRC16 : System.Security.Cryptography.HashAlgorithm - { - - #region Fields - - protected System.UInt16 _crc; - - protected readonly static System.UInt16 _initialCondition = 0x0; - - /* Table of CRC values for high-order byte */ - protected readonly static byte[] _crcHiLookupTable = { - 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, - 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, - 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, - 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, - 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, - 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, - 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, - 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, - 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, - 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, - 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, - 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, - 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, - 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, - 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, - 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, - 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, - 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, - 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, - 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, - 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, - 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, - 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, - 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, - 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, - 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40 - }; - - /* Table of CRC values for low-order byte */ - protected readonly static byte[] _crcLoLookupTable = { - 0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06, - 0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD, - 0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09, - 0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A, - 0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4, - 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3, - 0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3, - 0xF2, 0x32, 0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4, - 0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A, - 0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29, - 0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED, - 0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26, - 0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60, - 0x61, 0xA1, 0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67, - 0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F, - 0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68, - 0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA, 0xBE, 0x7E, - 0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5, - 0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71, - 0x70, 0xB0, 0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92, - 0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C, - 0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B, - 0x99, 0x59, 0x58, 0x98, 0x88, 0x48, 0x49, 0x89, 0x4B, 0x8B, - 0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C, - 0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42, - 0x43, 0x83, 0x41, 0x81, 0x80, 0x40 - }; - - #endregion - - #region Overridden Methods - - public override void Initialize() - { - _crc = _initialCondition; - } - - protected override void HashCore(byte[] buffer, int offset, int count) - { - byte[] crc = BitConverter.GetBytes(_crc); - int nextByte = 0; - int uIndex; - for (int i = offset; i < count && i < buffer.Length; i++) - { - nextByte = (0xFF & ((int)buffer[i])); - uIndex = (crc[0] ^ nextByte); - crc[0] = (Convert.ToByte((crc[1] ^ _crcHiLookupTable[uIndex]))); - crc[1] = _crcLoLookupTable[uIndex]; - } - _crc = BitConverter.ToUInt16(crc, 0); - } - - protected override byte[] HashFinal() - { - return BitConverter.GetBytes(_crc); - } - - #endregion - - } -} diff --git a/DeviceSQL/DeviceSQL.sqlproj b/DeviceSQL/DeviceSQL.sqlproj index d2b0ca9..590f94a 100644 --- a/DeviceSQL/DeviceSQL.sqlproj +++ b/DeviceSQL/DeviceSQL.sqlproj @@ -8,7 +8,7 @@ 2.0 4.1 {cb6f0884-5a58-432a-800e-4abfeeab6f46} - Microsoft.Data.Tools.Schema.Sql.Sql130DatabaseSchemaProvider + Microsoft.Data.Tools.Schema.Sql.Sql140DatabaseSchemaProvider Database @@ -17,16 +17,17 @@ 1033, CI BySchemaAndSchemaType True - v4.6.1 + v4.8 CS Properties False True True UNSAFE - True - DeviceSQL-Key.snk + False + ..\DeviceSQL-Key.snk False + bin\Release\ @@ -62,323 +63,10 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -387,26 +75,7 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/DeviceSQL/Documentation/Modbus_Application_Protocol_V1_1b3.pdf b/DeviceSQL/Documentation/Modbus_Application_Protocol_V1_1b3.pdf deleted file mode 100644 index c531a74..0000000 Binary files a/DeviceSQL/Documentation/Modbus_Application_Protocol_V1_1b3.pdf and /dev/null differ diff --git a/DeviceSQL/Functions/ChannelManager/DisableChannelTracing.cs b/DeviceSQL/Functions/ChannelManager/DisableChannelTracing.cs deleted file mode 100644 index f3c3174..0000000 --- a/DeviceSQL/Functions/ChannelManager/DisableChannelTracing.cs +++ /dev/null @@ -1,45 +0,0 @@ -#region Imported Types - -using DeviceSQL.IO.Channels; -using System; -using System.Data.SqlTypes; -using System.Diagnostics; -using System.Linq; - -#endregion -namespace DeviceSQL.Functions -{ - public partial class ChannelManager - { - - [Microsoft.SqlServer.Server.SqlFunction] - public static SqlBoolean ChannelManager_DisableChannelLogging (SqlString channelName) - { - try - { - var channelNameValue = channelName.Value; - var channels = DeviceSQL.Watchdog.Worker.Channels; - var channel = channels.FirstOrDefault(c => c.Name == channelName.Value); - - if (channel != null) - { - - channel.TracingEnabled = false; - - return new SqlBoolean(true); - - } - else - { - throw new ArgumentException("Channel does not exist"); - } - } - catch (Exception ex) - { - Trace.TraceError(string.Format("Error disabling channel tracing: {0}", ex.Message)); - } - return new SqlBoolean(false); - } - } - -} diff --git a/DeviceSQL/Functions/ChannelManager/EnableChannelTracing.cs b/DeviceSQL/Functions/ChannelManager/EnableChannelTracing.cs deleted file mode 100644 index f91a8c1..0000000 --- a/DeviceSQL/Functions/ChannelManager/EnableChannelTracing.cs +++ /dev/null @@ -1,45 +0,0 @@ -#region Imported Types - -using System; -using System.Data.SqlTypes; -using System.Diagnostics; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class ChannelManager - { - - [Microsoft.SqlServer.Server.SqlFunction] - public static SqlBoolean ChannelManager_EnableChannelLogging(SqlString channelName) - { - try - { - var channelNameValue = channelName.Value; - var channels = DeviceSQL.Watchdog.Worker.Channels; - var channel = channels.FirstOrDefault(c => c.Name == channelName.Value); - - if (channel != null) - { - - channel.TracingEnabled = true; - - return new SqlBoolean(true); - - } - else - { - throw new ArgumentException("Channel does not exist"); - } - } - catch (Exception ex) - { - Trace.TraceError(string.Format("Error enabling channel tracing: {0}", ex.Message)); - } - return new SqlBoolean(false); - } - } - -} diff --git a/DeviceSQL/Functions/ChannelManager/GetChannels.cs b/DeviceSQL/Functions/ChannelManager/GetChannels.cs deleted file mode 100644 index 27a6a2b..0000000 --- a/DeviceSQL/Functions/ChannelManager/GetChannels.cs +++ /dev/null @@ -1,54 +0,0 @@ -#region Imported Types - -using Microsoft.SqlServer.Server; -using System.Collections; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class ChannelManager - { - [SqlFunction(FillRowMethodName = "GetChannels_FillRow", TableDefinition = "ChannelName nvarchar(512), ChannelType nvarchar(512), ReadTimeout int, WriteTimeout int, ConnectionString nvarchar(512), TracingEnabled bit")] - public static IEnumerable ChannelManager_GetChannels() - { - ArrayList resultCollection = new ArrayList(); - var channels = DeviceSQL.Watchdog.Worker.Channels; - channels.ToList().ForEach(channel => resultCollection.Add(new GetChannels_Result(channel.Name, channel.GetType().Name, channel.ReadTimeout, channel.WriteTimeout, channel.ConnectionString, channel.TracingEnabled))); - return resultCollection; - } - - internal class GetChannels_Result - { - public SqlString ChannelName; - public SqlString ChannelType; - public SqlInt32 ReadTimeout; - public SqlInt32 WriteTimeout; - public SqlString ConnectionString; - public SqlBoolean TracingEnabled; - - public GetChannels_Result(SqlString channelName, SqlString channelType, SqlInt32 readTimeout, SqlInt32 writeTimeout, SqlString connectionString, SqlBoolean tracingEnabled) - { - ChannelName = channelName; - ChannelType = channelType; - ReadTimeout = readTimeout; - WriteTimeout = writeTimeout; - ConnectionString = connectionString; - TracingEnabled = tracingEnabled; - } - } - - public static void GetChannels_FillRow(object getChannels_ResultObj, out SqlString channelName, out SqlString channelType, out SqlInt32 readTimeout, out SqlInt32 writeTimeout, out SqlString connectionString, out SqlBoolean tracingEnabled) - { - var getChannels_Result = (getChannels_ResultObj as GetChannels_Result); - channelName = getChannels_Result.ChannelName; - channelType = getChannels_Result.ChannelType; - readTimeout = getChannels_Result.ReadTimeout; - writeTimeout = getChannels_Result.WriteTimeout; - connectionString = getChannels_Result.ConnectionString; - tracingEnabled = getChannels_Result.TracingEnabled; - } - } -} diff --git a/DeviceSQL/Functions/ChannelManager/RegisterSerialPortChannel.cs b/DeviceSQL/Functions/ChannelManager/RegisterSerialPortChannel.cs deleted file mode 100644 index 9156a1f..0000000 --- a/DeviceSQL/Functions/ChannelManager/RegisterSerialPortChannel.cs +++ /dev/null @@ -1,76 +0,0 @@ -#region Imported Types - -using DeviceSQL.IO.Channels; -using Microsoft.SqlServer.Server; -using System; -using System.Data.SqlTypes; -using System.Diagnostics; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class ChannelManager - { - [SqlFunction] - public static SqlBoolean ChannelManager_RegisterSerialPortChannel(SqlString channelName, SqlString portName, SqlInt32 baudRate, SqlByte dataBits, SqlByte parity, SqlByte stopBits, SqlInt32 readTimeout, SqlInt32 writeTimeout) - { - try - { - var channelNameValue = channelName.Value; - var channels = DeviceSQL.Watchdog.Worker.Channels; - - if (channels.Where(serialPortChannel => serialPortChannel.Name == channelNameValue).Count() == 0) - { - if (channelNameValue.Count(c => - { - switch (c) - { - case '|': - case ';': - case ',': - return true; - default: - return false; - } - }) > 0) - { - throw new ArgumentException("Invalid channel name"); - } - - var serialPortChannel = new SerialPortChannel() - { - Name = channelNameValue, - ReadTimeout = readTimeout.Value, - WriteTimeout = writeTimeout.Value - }; - - serialPortChannel.SerialPort.PortName = portName.Value; - serialPortChannel.SerialPort.BaudRate = baudRate.Value; - serialPortChannel.SerialPort.Parity = (System.IO.Ports.Parity)Enum.Parse(typeof(System.IO.Ports.Parity), parity.Value.ToString()); - serialPortChannel.SerialPort.StopBits = (System.IO.Ports.StopBits)Enum.Parse(typeof(System.IO.Ports.StopBits), stopBits.Value.ToString()); - serialPortChannel.SerialPort.Handshake = System.IO.Ports.Handshake.None; - serialPortChannel.SerialPort.DtrEnable = false; - serialPortChannel.SerialPort.RtsEnable = false; - - serialPortChannel.SerialPort.Open(); - - channels.Add(serialPortChannel); - - return new SqlBoolean(true); - - } - else - { - throw new ArgumentException("Channel name is already registered"); - } - } - catch (Exception ex) - { - Trace.TraceError(string.Format("Error registering channel: {0}", ex.Message)); - } - return new SqlBoolean(false); - } - } -} diff --git a/DeviceSQL/Functions/ChannelManager/RegisterTcpChannel.cs b/DeviceSQL/Functions/ChannelManager/RegisterTcpChannel.cs deleted file mode 100644 index 3a2caeb..0000000 --- a/DeviceSQL/Functions/ChannelManager/RegisterTcpChannel.cs +++ /dev/null @@ -1,89 +0,0 @@ -#region Imported Types - -using DeviceSQL.IO.Channels; -using System; -using System.Data.SqlTypes; -using System.Diagnostics; -using System.Linq; -using System.Net.Sockets; - -#endregion -namespace DeviceSQL.Functions -{ - public partial class ChannelManager - { - - [Microsoft.SqlServer.Server.SqlFunction] - public static SqlBoolean ChannelManager_RegisterTcpChannel(SqlString channelName, SqlString hostName, SqlInt32 hostPort, SqlInt32 connectAttempts, SqlInt32 connectionRetryDelay, SqlInt32 readTimeout, SqlInt32 writeTimeout) - { - - var channelNameValue = channelName.Value; - var channels = DeviceSQL.Watchdog.Worker.Channels; - - if (channelNameValue.Count(c => - { - switch (c) - { - case '|': - case ';': - case ',': - return true; - default: - return false; - } - }) > 0) - { - throw new ArgumentException("Invalid channel name"); - } - - if (channels.Where(channel => channel.Name == channelNameValue).Count() == 0) - { - var tcpChannel = new TcpChannel() - { - Name = channelNameValue, - HostName = hostName.Value, - HostPort = hostPort.Value, - ConnectionAttempts = connectAttempts.Value, - ConnectionRetryDelay = connectionRetryDelay.Value - }; - - var currentConnectAttempts = 0; - - Connect: - currentConnectAttempts++; - - try - { - - tcpChannel.TcpClient.Connect(tcpChannel.HostName, tcpChannel.HostPort); - - } - catch(SocketException socketException) - { - if (currentConnectAttempts > tcpChannel.ConnectionAttempts) - { - throw socketException; - } - else - { - System.Threading.Thread.Sleep(500); - goto Connect; - } - } - - tcpChannel.ReadTimeout = readTimeout.Value; - tcpChannel.WriteTimeout = writeTimeout.Value; - - channels.Add(tcpChannel); - - return new SqlBoolean(true); - - } - else - { - throw new ArgumentException("Channel name is already registered"); - } - } - } - -} diff --git a/DeviceSQL/Functions/ChannelManager/TraceChannels.cs b/DeviceSQL/Functions/ChannelManager/TraceChannels.cs deleted file mode 100644 index 353a3f0..0000000 --- a/DeviceSQL/Functions/ChannelManager/TraceChannels.cs +++ /dev/null @@ -1,91 +0,0 @@ -#region Imported Types - -using DeviceSQL.IO.Channels; -using Microsoft.SqlServer.Server; -using System; -using System.Collections; -using System.Collections.Generic; -using System.Data.SqlTypes; -using System.Linq; -using System.Threading; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class ChannelManager - { - [SqlFunction(FillRowMethodName = "TraceChannels_FillRow", TableDefinition = "[MessageDateTimeStamp] datetime, [ChannelType] nvarchar(64), [ChannelName] nvarchar(1024), [Operation] nvarchar(32), [Sequence] int, [StartTime] datetime, [Duration] float, [Count] int, [Data] nvarchar(640)")] - public static IEnumerable ChannelManager_TraceChannels() - { - var queueLockObject = new object(); - using (var channelTraceListener = new ChannelTraceListener()) - { - var channelTraceListenerMessageQueue = new Queue(); - channelTraceListener.ChannelTraceMessageReceived += (object sender, ChannelTraceEventArgs e) => - { - lock (queueLockObject) - { - channelTraceListenerMessageQueue.Enqueue(new TraceChannels_Result(e.MessageDateTimeStamp, e.ChannelType, e.Name, e.Operation, e.Sequence, e.StartTime, e.Duration, e.Count, e.Data)); - } - }; - - while (channelTraceListener != null) - { - lock (queueLockObject) - { - while (channelTraceListenerMessageQueue.Count > 0) - { - yield return channelTraceListenerMessageQueue.Dequeue(); - } - } - TimedThreadBlocker.Wait(125); - } - - } - } - - internal class TraceChannels_Result - { - - internal SqlDateTime MessageDateTimeStamp { get; set; } - internal SqlString Name { get; set; } - internal SqlDateTime StartTime { get; set; } - internal SqlString Operation { get; set; } - internal SqlDouble Duration { get; set; } - internal SqlInt32 Sequence { get; set; } - internal SqlInt32 Count { get; set; } - internal SqlString Data { get; set; } - internal SqlString ChannelType { get; set; } - - public TraceChannels_Result(SqlDateTime messageDateTimeStamp, SqlString channelType, SqlString name, SqlString operation, SqlInt32 sequence, SqlDateTime startTime, SqlDouble duration, SqlInt32 count, SqlString data) - { - MessageDateTimeStamp = messageDateTimeStamp; - Name = name; - StartTime = startTime; - Operation = operation; - Duration = duration; - Sequence = sequence; - Count = count; - Data = data; - ChannelType = channelType; - } - } - - public static void TraceChannels_FillRow(object TraceChannels_ResultObj, out SqlDateTime messageDateTimeStamp, out SqlString channelType, out SqlString name, out SqlString operation, out SqlInt32 sequence, out SqlDateTime startTime, out SqlDouble duration, out SqlInt32 count, out SqlString data) - { - var TraceChannels_Result = (TraceChannels_ResultObj as TraceChannels_Result); - - messageDateTimeStamp = TraceChannels_Result.MessageDateTimeStamp; - name = TraceChannels_Result.Name; - startTime = TraceChannels_Result.StartTime; - operation = TraceChannels_Result.Operation; - duration = TraceChannels_Result.Duration; - sequence = TraceChannels_Result.Sequence; - count = TraceChannels_Result.Count; - data = TraceChannels_Result.Data; - channelType = TraceChannels_Result.ChannelType; - - } - } -} diff --git a/DeviceSQL/Functions/ChannelManager/UnregisterChannel.cs b/DeviceSQL/Functions/ChannelManager/UnregisterChannel.cs deleted file mode 100644 index 34d5ad7..0000000 --- a/DeviceSQL/Functions/ChannelManager/UnregisterChannel.cs +++ /dev/null @@ -1,43 +0,0 @@ -#region Imported Types - -using System; -using System.Data.SqlTypes; -using System.Diagnostics; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class ChannelManager - { - [Microsoft.SqlServer.Server.SqlFunction] - public static SqlBoolean ChannelManager_UnregisterChannel(SqlString channelName) - { - try - { - var channelNameValue = channelName.Value; - var channels = DeviceSQL.Watchdog.Worker.Channels; - var channelsToRemove = channels.Where(channel => channel.Name == channelNameValue).ToList(); - channelsToRemove.ForEach((channel) => - { - try - { - channel.Dispose(); - channels.TryTake(out channel); - } - catch (Exception ex) - { - Trace.TraceError(string.Format("Error unregistering channel: {0}", ex.Message)); - } - }); - } - catch (Exception ex) - { - Trace.TraceError(string.Format("Error unregistering channel: {0}", ex.Message)); - } - return new SqlBoolean(true); - } - } - -} diff --git a/DeviceSQL/Functions/DeviceManager/GetDevices.cs b/DeviceSQL/Functions/DeviceManager/GetDevices.cs deleted file mode 100644 index 3836665..0000000 --- a/DeviceSQL/Functions/DeviceManager/GetDevices.cs +++ /dev/null @@ -1,73 +0,0 @@ -#region Imported Types - -using Microsoft.SqlServer.Server; -using System.Collections; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class DeviceManager - { - - [SqlFunction(FillRowMethodName = "GetDevices_FillRow", TableDefinition = "DeviceName nvarchar(512), ChannelName nvarchar(512), DeviceType nvarchar(512), Address nvarchar(512), NumberOfRetries int, WaitToRetry int, RequestWriteDelay int, ResponseReadDelay int")] - public static IEnumerable DeviceManager_GetDevices() - { - ArrayList resultCollection = new ArrayList(); - var devices = DeviceSQL.Watchdog.Worker.Devices; - devices.ToList().ForEach(device => resultCollection.Add(new GetDevices_Result(device.Name, device.Transport.Channel.Name, device.GetType().Name, device.Address, device.Transport.NumberOfRetries, device.Transport.WaitToRetryMilliseconds, device.Transport.RequestWriteDelayMilliseconds, device.Transport.ResponseReadDelayMilliseconds))); - return resultCollection; - } - - internal class GetDevices_Result - { - - #region Fields - - public SqlString ChannelName; - public SqlString DeviceName; - public SqlString DeviceType; - public SqlString Address; - public SqlInt32 NumberOfRetries; - public SqlInt32 WaitToRetry; - public SqlInt32 RequestWriteDelay; - public SqlInt32 ResponseReadDelay; - - #endregion - - #region Constructor - - public GetDevices_Result(SqlString channelName, SqlString deviceName, SqlString deviceType, SqlString address, SqlInt32 numberOfRetries, SqlInt32 waitToRetry, SqlInt32 requestWriteDelay, SqlInt32 responseReadDelay) - { - ChannelName = channelName; - DeviceName = deviceName; - DeviceType = deviceType; - Address = address; - NumberOfRetries = numberOfRetries; - WaitToRetry = waitToRetry; - RequestWriteDelay = requestWriteDelay; - ResponseReadDelay = responseReadDelay; - } - - #endregion - - } - - public static void GetDevices_FillRow(object getDevices_ResultObj, out SqlString channelName, out SqlString deviceName, out SqlString deviceType, out SqlString address, out SqlInt32 numberOfRetries, out SqlInt32 waitToRetry, out SqlInt32 requestWriteDelay, out SqlInt32 responseReadDelay) - { - GetDevices_Result getDevices_Result = (getDevices_ResultObj as GetDevices_Result); - channelName = getDevices_Result.ChannelName; - deviceName = getDevices_Result.DeviceName; - deviceType = getDevices_Result.DeviceType; - address = getDevices_Result.Address; - numberOfRetries = getDevices_Result.NumberOfRetries; - waitToRetry = getDevices_Result.WaitToRetry; - requestWriteDelay = getDevices_Result.RequestWriteDelay; - responseReadDelay = getDevices_Result.ResponseReadDelay; - } - - } - -} diff --git a/DeviceSQL/Functions/DeviceManager/RegisterModbusMaster.cs b/DeviceSQL/Functions/DeviceManager/RegisterModbusMaster.cs deleted file mode 100644 index b56fea3..0000000 --- a/DeviceSQL/Functions/DeviceManager/RegisterModbusMaster.cs +++ /dev/null @@ -1,54 +0,0 @@ -#region Imported Types - -using Microsoft.SqlServer.Server; -using System; -using System.Data.SqlTypes; -using System.Diagnostics; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class DeviceManager - { - [SqlFunction] - public static SqlBoolean DeviceManager_RegisterMODBUSMaster(SqlString channelName, SqlString deviceName, SqlInt32 unitId, SqlBoolean useExtendedAddressing, SqlInt32 numberOfRetries, SqlInt32 waitToRetry, SqlInt32 requestWriteDelay, SqlInt32 responseReadDelay) - { - try - { - var deviceNameValue = deviceName.Value; - var devices = DeviceSQL.Watchdog.Worker.Devices; - if (devices.Where(device => device.Name == deviceNameValue).Count() == 0) - { - var channelNameValue = channelName.Value; - var MODBUSMaster = new Device.MODBUS.MODBUSMaster(DeviceSQL.Watchdog.Worker.Channels.First(channel => channel.Name == channelNameValue)) - { - Name = deviceNameValue, - UnitId = Convert.ToUInt16(unitId.Value), - UseExtendedAddressing = useExtendedAddressing.Value - }; - - MODBUSMaster.Transport.NumberOfRetries = numberOfRetries.Value; - MODBUSMaster.Transport.WaitToRetryMilliseconds = waitToRetry.Value; - MODBUSMaster.Transport.RequestWriteDelayMilliseconds = requestWriteDelay.Value; - MODBUSMaster.Transport.ResponseReadDelayMilliseconds = responseReadDelay.Value; - - devices.Add(MODBUSMaster); - - return new SqlBoolean(true); - - } - else - { - throw new ArgumentException("Device name is already registered"); - } - } - catch (Exception ex) - { - Trace.TraceError(string.Format("Error registering device: {0}", ex.Message)); - } - return new SqlBoolean(false); - } - } -} diff --git a/DeviceSQL/Functions/DeviceManager/RegisterROCMaster.cs b/DeviceSQL/Functions/DeviceManager/RegisterROCMaster.cs deleted file mode 100644 index be8894d..0000000 --- a/DeviceSQL/Functions/DeviceManager/RegisterROCMaster.cs +++ /dev/null @@ -1,56 +0,0 @@ -#region Imported Types - -using Microsoft.SqlServer.Server; -using System; -using System.Data.SqlTypes; -using System.Diagnostics; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class DeviceManager - { - [SqlFunction] - public static SqlBoolean DeviceManager_RegisterROCMaster(SqlString channelName, SqlString deviceName, SqlByte deviceAddress, SqlByte deviceGroup, SqlByte hostAddress, SqlByte hostGroup, SqlInt32 numberOfRetries, SqlInt32 waitToRetry, SqlInt32 requestWriteDelay, SqlInt32 responseReadDelay) - { - try - { - var deviceNameValue = deviceName.Value; - var devices = DeviceSQL.Watchdog.Worker.Devices; - if (devices.Where(device => device.Name == deviceNameValue).Count() == 0) - { - var channelNameValue = channelName.Value; - var rocMaster = new Device.ROC.ROCMaster(DeviceSQL.Watchdog.Worker.Channels.First(channel => channel.Name == channelNameValue)) - { - Name = deviceNameValue, - DeviceAddress = deviceAddress.Value, - DeviceGroup = deviceGroup.Value, - HostAddress = hostAddress.Value, - HostGroup = hostGroup.Value - }; - - rocMaster.Transport.NumberOfRetries = numberOfRetries.Value; - rocMaster.Transport.WaitToRetryMilliseconds = waitToRetry.Value; - rocMaster.Transport.RequestWriteDelayMilliseconds = requestWriteDelay.Value; - rocMaster.Transport.ResponseReadDelayMilliseconds = responseReadDelay.Value; - - devices.Add(rocMaster); - - return new SqlBoolean(true); - - } - else - { - throw new ArgumentException("Device name is already registered"); - } - } - catch (Exception ex) - { - Trace.TraceError(string.Format("Error registering device: {0}", ex.Message)); - } - return new SqlBoolean(false); - } - } -} diff --git a/DeviceSQL/Functions/DeviceManager/UnregisterDevice.cs b/DeviceSQL/Functions/DeviceManager/UnregisterDevice.cs deleted file mode 100644 index c2c3e14..0000000 --- a/DeviceSQL/Functions/DeviceManager/UnregisterDevice.cs +++ /dev/null @@ -1,42 +0,0 @@ -#region Imported Types - -using Microsoft.SqlServer.Server; -using System; -using System.Data.SqlTypes; -using System.Diagnostics; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class DeviceManager - { - [SqlFunction] - public static SqlBoolean DeviceManager_UnregisterDevice(SqlString deviceName) - { - try - { - var deviceNameValue = deviceName.Value; - var devices = DeviceSQL.Watchdog.Worker.Devices; - var devicesToRemove = devices.Where(channel => channel.Name == deviceNameValue).ToList(); - devicesToRemove.ForEach((device) => - { - try - { - devices.TryTake(out device); - } - catch (Exception ex) - { - Trace.TraceError(string.Format("Error unregistering device: {0}", ex.Message)); - } - }); - } - catch (Exception ex) - { - Trace.TraceError(string.Format("Error unregistering device: {0}", ex.Message)); - } - return new SqlBoolean(true); - } - } -} diff --git a/DeviceSQL/Functions/ModbusMaster/ReadCoils.cs b/DeviceSQL/Functions/ModbusMaster/ReadCoils.cs deleted file mode 100644 index 675ecbc..0000000 --- a/DeviceSQL/Functions/ModbusMaster/ReadCoils.cs +++ /dev/null @@ -1,24 +0,0 @@ -#region Imported Types - -using Microsoft.SqlServer.Server; -using System; -using System.Collections.Generic; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class MODBUSMaster - { - [SqlFunction] - public static Types.MODBUSMaster.MODBUSMaster_CoilRegisterArray MODBUSMaster_ReadCoils(SqlString deviceName, Types.MODBUSMaster.MODBUSMaster_CoilRegisterArray coilRegisterArray) - { - var deviceNameValue = deviceName.Value; - var coilRegisters = new List(coilRegisterArray.coilRegisters.Select(coilRegister => new Device.MODBUS.Data.CoilRegister(new Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(coilRegister.Address.RelativeAddress.Value), coilRegister.Address.IsZeroBased.Value)))); - (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.MODBUS.MODBUSMaster).ReadCoilRegisters(null, ref coilRegisters, null); - return new Types.MODBUSMaster.MODBUSMaster_CoilRegisterArray() { coilRegisters = coilRegisters.Select(coilRegister => new Types.MODBUSMaster.MODBUSMaster_CoilRegister() { Address = new Types.MODBUSMaster.MODBUSMaster_MODBUSAddress { RelativeAddress = coilRegister.Address.RelativeAddress, IsZeroBased = coilRegister.Address.IsZeroBased }, Data = coilRegister.Data }).ToList() }; - } - } -} diff --git a/DeviceSQL/Functions/ModbusMaster/ReadDiscreteInputs.cs b/DeviceSQL/Functions/ModbusMaster/ReadDiscreteInputs.cs deleted file mode 100644 index 06e21eb..0000000 --- a/DeviceSQL/Functions/ModbusMaster/ReadDiscreteInputs.cs +++ /dev/null @@ -1,24 +0,0 @@ -#region Imported Types - -using Microsoft.SqlServer.Server; -using System; -using System.Collections.Generic; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class MODBUSMaster - { - [SqlFunction] - public static Types.MODBUSMaster.MODBUSMaster_DiscreteInputRegisterArray MODBUSMaster_ReadDiscreteInputs(SqlString deviceName, Types.MODBUSMaster.MODBUSMaster_DiscreteInputRegisterArray discreteInputRegisterArray) - { - var deviceNameValue = deviceName.Value; - var discreteInputRegisters = new List(discreteInputRegisterArray.discreteInputRegisters.Select(discreteInputRegister => new Device.MODBUS.Data.DiscreteInputRegister(new Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(discreteInputRegister.Address.RelativeAddress.Value), discreteInputRegister.Address.IsZeroBased.Value)))); - (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.MODBUS.MODBUSMaster).ReadDiscreteInputRegisters(null, ref discreteInputRegisters, null); - return new Types.MODBUSMaster.MODBUSMaster_DiscreteInputRegisterArray() { discreteInputRegisters = discreteInputRegisters.Select(discreteInputRegister => new Types.MODBUSMaster.MODBUSMaster_DiscreteInputRegister() { Address = new Types.MODBUSMaster.MODBUSMaster_MODBUSAddress { RelativeAddress = discreteInputRegister.Address.RelativeAddress, IsZeroBased = discreteInputRegister.Address.IsZeroBased }, Data = discreteInputRegister.Data }).ToList() }; - } - } -} \ No newline at end of file diff --git a/DeviceSQL/Functions/ModbusMaster/ReadEventArchiveRecords.cs b/DeviceSQL/Functions/ModbusMaster/ReadEventArchiveRecords.cs deleted file mode 100644 index 5e3e5e7..0000000 --- a/DeviceSQL/Functions/ModbusMaster/ReadEventArchiveRecords.cs +++ /dev/null @@ -1,22 +0,0 @@ -#region Imported Types - -using Microsoft.SqlServer.Server; -using System; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class MODBUSMaster - { - [SqlFunction] - public static Types.MODBUSMaster.MODBUSMaster_EventArchiveRecordArray MODBUSMaster_ReadEventArchiveRecords(SqlString deviceName, Types.MODBUSMaster.MODBUSMaster_MODBUSAddress eventArchiveAddress, SqlInt32 index) - { - var deviceNameValue = deviceName.Value; - var eventArchiveRecords = (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.MODBUS.MODBUSMaster).ReadEventArchiveRecord(null, new Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(eventArchiveAddress.RelativeAddress.Value), eventArchiveAddress.IsZeroBased.Value), Convert.ToUInt16(index.Value), null); - return new Types.MODBUSMaster.MODBUSMaster_EventArchiveRecordArray() { eventArchiveRecords = eventArchiveRecords.Select(ear => new Types.MODBUSMaster.MODBUSMaster_EventArchiveRecord() { Index = ear.Index, Data = ear.Data }).ToList() }; - } - } -} diff --git a/DeviceSQL/Functions/ModbusMaster/ReadFloats.cs b/DeviceSQL/Functions/ModbusMaster/ReadFloats.cs deleted file mode 100644 index 1c4afd1..0000000 --- a/DeviceSQL/Functions/ModbusMaster/ReadFloats.cs +++ /dev/null @@ -1,24 +0,0 @@ -#region Imported Types - -using Microsoft.SqlServer.Server; -using System; -using System.Collections.Generic; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class MODBUSMaster - { - [SqlFunction] - public static Types.MODBUSMaster.MODBUSMaster_FloatRegisterArray MODBUSMaster_ReadFloats(SqlString deviceName, Types.MODBUSMaster.MODBUSMaster_FloatRegisterArray floatRegisterArray) - { - var deviceNameValue = deviceName.Value; - var floatRegisters = new List(floatRegisterArray.floatRegisters.Select(floatRegister => new Device.MODBUS.Data.FloatRegister(new Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(floatRegister.Address.RelativeAddress.Value), floatRegister.Address.IsZeroBased.Value), floatRegister.ByteSwap.Value, floatRegister.WordSwap.Value))); - (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.MODBUS.MODBUSMaster).ReadFloatRegisters(null, ref floatRegisters, null); - return new Types.MODBUSMaster.MODBUSMaster_FloatRegisterArray() { floatRegisters = floatRegisters.Select(floatRegister => new Types.MODBUSMaster.MODBUSMaster_FloatRegister() { Address = new Types.MODBUSMaster.MODBUSMaster_MODBUSAddress { RelativeAddress = floatRegister.Address.RelativeAddress, IsZeroBased = floatRegister.Address.IsZeroBased }, Data = floatRegister.Data }).ToList() }; - } - } -} diff --git a/DeviceSQL/Functions/ModbusMaster/ReadHistoryArchiveRecord.cs b/DeviceSQL/Functions/ModbusMaster/ReadHistoryArchiveRecord.cs deleted file mode 100644 index 6cedc48..0000000 --- a/DeviceSQL/Functions/ModbusMaster/ReadHistoryArchiveRecord.cs +++ /dev/null @@ -1,22 +0,0 @@ -#region Imported Types - -using Microsoft.SqlServer.Server; -using System; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class MODBUSMaster - { - [SqlFunction] - public static Types.MODBUSMaster.MODBUSMaster_HistoryArchiveRecord MODBUSMaster_ReadHistoryArchiveRecord(SqlString deviceName, Types.MODBUSMaster.MODBUSMaster_MODBUSAddress historyArchiveAddress, SqlInt32 index, SqlByte recordSize) - { - var deviceNameValue = deviceName.Value; - var historyArchiveRecord = (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.MODBUS.MODBUSMaster).ReadHistoryArchiveRecord(null, new Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(historyArchiveAddress.RelativeAddress.Value), historyArchiveAddress.IsZeroBased.Value), Convert.ToUInt16(index.Value), recordSize.Value, null); - return new Types.MODBUSMaster.MODBUSMaster_HistoryArchiveRecord() { Index = historyArchiveRecord.Index, Data = historyArchiveRecord.Data }; - } - } -} diff --git a/DeviceSQL/Functions/ModbusMaster/ReadHoldings.cs b/DeviceSQL/Functions/ModbusMaster/ReadHoldings.cs deleted file mode 100644 index d758aca..0000000 --- a/DeviceSQL/Functions/ModbusMaster/ReadHoldings.cs +++ /dev/null @@ -1,24 +0,0 @@ -#region Imported Types - -using Microsoft.SqlServer.Server; -using System; -using System.Collections.Generic; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class MODBUSMaster - { - [SqlFunction] - public static Types.MODBUSMaster.MODBUSMaster_HoldingRegisterArray MODBUSMaster_ReadHoldings(SqlString deviceName, Types.MODBUSMaster.MODBUSMaster_HoldingRegisterArray holdingRegisterArray) - { - var deviceNameValue = deviceName.Value; - var holdingRegisters = new List(holdingRegisterArray.holdingRegisters.Select(holdingRegister => new Device.MODBUS.Data.HoldingRegister(new Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(holdingRegister.Address.RelativeAddress.Value), holdingRegister.Address.IsZeroBased.Value), holdingRegister.ByteSwap.Value))); - (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.MODBUS.MODBUSMaster).ReadHoldingRegisters(null, ref holdingRegisters, null); - return new Types.MODBUSMaster.MODBUSMaster_HoldingRegisterArray() { holdingRegisters = holdingRegisters.Select(holdingRegister => new Types.MODBUSMaster.MODBUSMaster_HoldingRegister() { Address = new Types.MODBUSMaster.MODBUSMaster_MODBUSAddress { RelativeAddress = holdingRegister.Address.RelativeAddress, IsZeroBased = holdingRegister.Address.IsZeroBased }, ByteSwap = holdingRegister.ByteSwap, Data = holdingRegister.Data }).ToList() }; - } - } -} diff --git a/DeviceSQL/Functions/ModbusMaster/ReadInputs.cs b/DeviceSQL/Functions/ModbusMaster/ReadInputs.cs deleted file mode 100644 index 3bdb884..0000000 --- a/DeviceSQL/Functions/ModbusMaster/ReadInputs.cs +++ /dev/null @@ -1,24 +0,0 @@ -#region Imported Types - -using Microsoft.SqlServer.Server; -using System; -using System.Collections.Generic; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class MODBUSMaster - { - [SqlFunction] - public static Types.MODBUSMaster.MODBUSMaster_InputRegisterArray MODBUSMaster_ReadInputs(SqlString deviceName, Types.MODBUSMaster.MODBUSMaster_InputRegisterArray inputRegisterArray) - { - var deviceNameValue = deviceName.Value; - var inputRegisters = new List(inputRegisterArray.inputRegisters.Select(inputRegister => new Device.MODBUS.Data.InputRegister(new Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(inputRegister.Address.RelativeAddress.Value), inputRegister.Address.IsZeroBased.Value), inputRegister.ByteSwap.Value))); - (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.MODBUS.MODBUSMaster).ReadInputRegisters(null, ref inputRegisters, null); - return new Types.MODBUSMaster.MODBUSMaster_InputRegisterArray() { inputRegisters = inputRegisters.Select(inputRegister => new Types.MODBUSMaster.MODBUSMaster_InputRegister() { Address = new Types.MODBUSMaster.MODBUSMaster_MODBUSAddress { RelativeAddress = inputRegister.Address.RelativeAddress, IsZeroBased = inputRegister.Address.IsZeroBased }, ByteSwap = inputRegister.ByteSwap, Data = inputRegister.Data }).ToList() }; - } - } -} diff --git a/DeviceSQL/Functions/ModbusMaster/ReadLongs.cs b/DeviceSQL/Functions/ModbusMaster/ReadLongs.cs deleted file mode 100644 index e3c1f46..0000000 --- a/DeviceSQL/Functions/ModbusMaster/ReadLongs.cs +++ /dev/null @@ -1,24 +0,0 @@ -#region Imported Types - -using Microsoft.SqlServer.Server; -using System; -using System.Collections.Generic; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class MODBUSMaster - { - [SqlFunction] - public static Types.MODBUSMaster.MODBUSMaster_LongRegisterArray MODBUSMaster_ReadLongs(SqlString deviceName, Types.MODBUSMaster.MODBUSMaster_LongRegisterArray longRegisterArray) - { - var deviceNameValue = deviceName.Value; - var longRegisters = new List(longRegisterArray.longRegisters.Select(longRegister => new Device.MODBUS.Data.LongRegister(new Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(longRegister.Address.RelativeAddress.Value), longRegister.Address.IsZeroBased.Value), longRegister.ByteSwap.Value, longRegister.WordSwap.Value))); - (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.MODBUS.MODBUSMaster).ReadLongRegisters(null, ref longRegisters, null); - return new Types.MODBUSMaster.MODBUSMaster_LongRegisterArray() { longRegisters = longRegisters.Select(floatRegister => new Types.MODBUSMaster.MODBUSMaster_LongRegister() { Address = new Types.MODBUSMaster.MODBUSMaster_MODBUSAddress { RelativeAddress = floatRegister.Address.RelativeAddress, IsZeroBased = floatRegister.Address.IsZeroBased }, Data = floatRegister.Data }).ToList() }; - } - } -} diff --git a/DeviceSQL/Functions/ModbusMaster/ReadShorts.cs b/DeviceSQL/Functions/ModbusMaster/ReadShorts.cs deleted file mode 100644 index fe31434..0000000 --- a/DeviceSQL/Functions/ModbusMaster/ReadShorts.cs +++ /dev/null @@ -1,24 +0,0 @@ -#region Imported Types - -using Microsoft.SqlServer.Server; -using System; -using System.Collections.Generic; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class MODBUSMaster - { - [SqlFunction] - public static Types.MODBUSMaster.MODBUSMaster_ShortRegisterArray MODBUSMaster_ReadShorts(SqlString deviceName, Types.MODBUSMaster.MODBUSMaster_ShortRegisterArray shortRegisterArray) - { - var deviceNameValue = deviceName.Value; - var shortRegisters = new List(shortRegisterArray.shortRegisters.Select(longRegister => new Device.MODBUS.Data.ShortRegister(new Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(longRegister.Address.RelativeAddress.Value), longRegister.Address.IsZeroBased.Value), longRegister.ByteSwap.Value))); - (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.MODBUS.MODBUSMaster).ReadShortRegisters(null, ref shortRegisters, null); - return new Types.MODBUSMaster.MODBUSMaster_ShortRegisterArray() { shortRegisters = shortRegisters.Select(shortRegister => new Types.MODBUSMaster.MODBUSMaster_ShortRegister() { Address = new Types.MODBUSMaster.MODBUSMaster_MODBUSAddress { RelativeAddress = shortRegister.Address.RelativeAddress, IsZeroBased = shortRegister.Address.IsZeroBased }, Data = shortRegister.Data }).ToList() }; - } - } -} diff --git a/DeviceSQL/Functions/ModbusMaster/ReadString.cs b/DeviceSQL/Functions/ModbusMaster/ReadString.cs deleted file mode 100644 index 6c28c57..0000000 --- a/DeviceSQL/Functions/ModbusMaster/ReadString.cs +++ /dev/null @@ -1,24 +0,0 @@ -#region Imported Types - -using Microsoft.SqlServer.Server; -using System; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class MODBUSMaster - { - [SqlFunction] - public static Types.MODBUSMaster.MODBUSMaster_StringRegister MODBUSMaster_ReadString(SqlString deviceName, Types.MODBUSMaster.MODBUSMaster_StringRegister stringRegister) - { - var deviceNameValue = deviceName.Value; - var stringRegisterValue = new Device.MODBUS.Data.StringRegister(new Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(stringRegister.Address.RelativeAddress.Value), stringRegister.Address.IsZeroBased.Value), stringRegister.Length.Value); - (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.MODBUS.MODBUSMaster).ReadStringRegister(null, null, ref stringRegisterValue); - stringRegister.Data = stringRegisterValue.Data; - return stringRegister; - } - } -} diff --git a/DeviceSQL/Functions/ModbusMaster/WriteBoolean.cs b/DeviceSQL/Functions/ModbusMaster/WriteBoolean.cs deleted file mode 100644 index d7edbbc..0000000 --- a/DeviceSQL/Functions/ModbusMaster/WriteBoolean.cs +++ /dev/null @@ -1,23 +0,0 @@ -#region Imported Types - -using Microsoft.SqlServer.Server; -using System; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class MODBUSMaster - { - [SqlFunction] - public static SqlBoolean MODBUSMaster_WriteBoolean(SqlString deviceName, Types.MODBUSMaster.MODBUSMaster_BooleanRegister booleanRegister) - { - var deviceNameValue = deviceName.Value; - var booleanRegisterRaw = new Device.MODBUS.Data.BooleanRegister(new Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(booleanRegister.Address.RelativeAddress.Value), booleanRegister.Address.IsZeroBased.Value)); - (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.MODBUS.MODBUSMaster).WriteBooleanRegister(null, booleanRegisterRaw, null); - return true; - } - } -} diff --git a/DeviceSQL/Functions/ModbusMaster/WriteFloats.cs b/DeviceSQL/Functions/ModbusMaster/WriteFloats.cs deleted file mode 100644 index 2b951f3..0000000 --- a/DeviceSQL/Functions/ModbusMaster/WriteFloats.cs +++ /dev/null @@ -1,24 +0,0 @@ -#region Imported Types - -using Microsoft.SqlServer.Server; -using System; -using System.Collections.Generic; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class MODBUSMaster - { - [SqlFunction] - public static SqlBoolean MODBUSMaster_WriteFloats(SqlString deviceName, Types.MODBUSMaster.MODBUSMaster_FloatRegisterArray floatRegisterArray) - { - var deviceNameValue = deviceName.Value; - var floatRegisters = new List(floatRegisterArray.floatRegisters.Select(floatRegister => new Device.MODBUS.Data.FloatRegister(new Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(floatRegister.Address.RelativeAddress.Value), floatRegister.Address.IsZeroBased.Value), floatRegister.ByteSwap.Value, floatRegister.WordSwap.Value))); - (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.MODBUS.MODBUSMaster).WriteFloatRegisters(null, floatRegisters, null); - return true; - } - } -} diff --git a/DeviceSQL/Functions/ROCMaster/ClearAuditLogEventFlags.cs b/DeviceSQL/Functions/ROCMaster/ClearAuditLogEventFlags.cs deleted file mode 100644 index a798040..0000000 --- a/DeviceSQL/Functions/ROCMaster/ClearAuditLogEventFlags.cs +++ /dev/null @@ -1,21 +0,0 @@ -#region Imported Types - -using Microsoft.SqlServer.Server; -using System; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class ROCMaster - { - [SqlFunction] - public static int ROCMaster_ClearAuditLogEventFlags(SqlString deviceName, byte numberOfAuditLogRecordsToClear, int startingAuditLogPointer) - { - var deviceNameValue = deviceName.Value; - return (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).ClearAuditLogEventFlags(null, null, null, null, numberOfAuditLogRecordsToClear, Convert.ToUInt16(startingAuditLogPointer)); - } - } -} diff --git a/DeviceSQL/Functions/ROCMaster/GetAlarms.cs b/DeviceSQL/Functions/ROCMaster/GetAlarms.cs deleted file mode 100644 index 8d60bd1..0000000 --- a/DeviceSQL/Functions/ROCMaster/GetAlarms.cs +++ /dev/null @@ -1,22 +0,0 @@ -#region Imported Types - -using Microsoft.SqlServer.Server; -using System; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class ROCMaster - { - [SqlFunction] - public static Types.ROCMaster.ROCMaster_AlarmRecordArray ROCMaster_GetAlarms(SqlString deviceName, byte count, int startIndex) - { - var deviceNameValue = deviceName.Value; - var alarmsRecords = (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).GetAlarms(null, null, null, null, count, Convert.ToUInt16(startIndex)); - return new Types.ROCMaster.ROCMaster_AlarmRecordArray() { alarmRecords = alarmsRecords.Select(a => new Types.ROCMaster.ROCMaster_AlarmRecord() { data = a.data, Index = a.Index }).ToList() }; - } - } -} diff --git a/DeviceSQL/Functions/ROCMaster/GetArchiveInfo.cs b/DeviceSQL/Functions/ROCMaster/GetArchiveInfo.cs deleted file mode 100644 index 4790a17..0000000 --- a/DeviceSQL/Functions/ROCMaster/GetArchiveInfo.cs +++ /dev/null @@ -1,22 +0,0 @@ -#region Imported Types - -using Microsoft.SqlServer.Server; -using System; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class ROCMaster - { - [SqlFunction] - public static Types.ROCMaster.ROCMaster_ArchiveInformation ROCMaster_GetArchiveInfo(SqlString deviceName) - { - var deviceNameValue = deviceName.Value; - var archiveInfo = (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).GetArchiveInfo(null, null, null, null); - return new Types.ROCMaster.ROCMaster_ArchiveInformation() { Data = archiveInfo.data }; - } - } -} diff --git a/DeviceSQL/Functions/ROCMaster/GetAuditLogRecords.cs b/DeviceSQL/Functions/ROCMaster/GetAuditLogRecords.cs deleted file mode 100644 index abbceaa..0000000 --- a/DeviceSQL/Functions/ROCMaster/GetAuditLogRecords.cs +++ /dev/null @@ -1,22 +0,0 @@ -#region Imported Types - -using Microsoft.SqlServer.Server; -using System; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class ROCMaster - { - [SqlFunction] - public static Types.ROCMaster.ROCMaster_AuditLogRecordArray ROCMaster_GetAuditLogRecords(SqlString deviceName, byte count, int startIndex) - { - var deviceNameValue = deviceName.Value; - var auditLogRecords = (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).GetAuditLogRecords(null, null, null, null, count, Convert.ToUInt16(startIndex)); - return new Types.ROCMaster.ROCMaster_AuditLogRecordArray() { auditLogRecords = auditLogRecords.Select(e => new Types.ROCMaster.ROCMaster_AuditLogRecord() { Data = e.data, Index = e.Index }).ToList() }; - } - } -} diff --git a/DeviceSQL/Functions/ROCMaster/GetCurrentROCPlusAlarmIndex.cs b/DeviceSQL/Functions/ROCMaster/GetCurrentROCPlusAlarmIndex.cs deleted file mode 100644 index 874e0f8..0000000 --- a/DeviceSQL/Functions/ROCMaster/GetCurrentROCPlusAlarmIndex.cs +++ /dev/null @@ -1,21 +0,0 @@ -#region Imported Types - -using Microsoft.SqlServer.Server; -using System; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class ROCMaster - { - [SqlFunction] - public static int ROCMaster_GetCurrentROCPlusAlarmIndex(SqlString deviceName) - { - var deviceNameValue = deviceName.Value; - return (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).GetCurrentROCPlusAlarmIndex(null, null, null, null); - } - } -} diff --git a/DeviceSQL/Functions/ROCMaster/GetCurrentROCPlusEventIndex.cs b/DeviceSQL/Functions/ROCMaster/GetCurrentROCPlusEventIndex.cs deleted file mode 100644 index 5c24221..0000000 --- a/DeviceSQL/Functions/ROCMaster/GetCurrentROCPlusEventIndex.cs +++ /dev/null @@ -1,21 +0,0 @@ -#region Imported Types - -using Microsoft.SqlServer.Server; -using System; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class ROCMaster - { - [SqlFunction] - public static int ROCMaster_GetCurrentROCPlusEventIndex(SqlString deviceName) - { - var deviceNameValue = deviceName.Value; - return (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).GetCurrentROCPlusEventIndex(null, null, null, null); - } - } -} diff --git a/DeviceSQL/Functions/ROCMaster/GetCurrentROCPlusHistorySegmentIndex.cs b/DeviceSQL/Functions/ROCMaster/GetCurrentROCPlusHistorySegmentIndex.cs deleted file mode 100644 index a562308..0000000 --- a/DeviceSQL/Functions/ROCMaster/GetCurrentROCPlusHistorySegmentIndex.cs +++ /dev/null @@ -1,21 +0,0 @@ -#region Imported Types - -using Microsoft.SqlServer.Server; -using System; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class ROCMaster - { - [SqlFunction] - public static int ROCMaster_GetCurrentROCPlusHistorySegmentIndex(SqlString deviceName, byte historySegment, byte historyType) - { - var deviceNameValue = deviceName.Value; - return (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).GetCurrentROCPlusHistorySegmentIndex(null, null, null, null, historySegment, historyType); - } - } -} diff --git a/DeviceSQL/Functions/ROCMaster/GetDoubleValue.cs b/DeviceSQL/Functions/ROCMaster/GetDoubleValue.cs deleted file mode 100644 index 66aa649..0000000 --- a/DeviceSQL/Functions/ROCMaster/GetDoubleValue.cs +++ /dev/null @@ -1,24 +0,0 @@ -#region Imported Types - -using DeviceSQL.Device.ROC.Data; -using Microsoft.SqlServer.Server; -using System; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class ROCMaster - { - [SqlFunction] - public static SqlDouble ROCMaster_GetDoubleValue(SqlString deviceName, SqlByte pointType, SqlByte logicalNumber, SqlByte parameterNumber) - { - var deviceNameValue = deviceName.Value; - var DoubleParameter = new DoubleParameter(new Tlp(pointType.Value, logicalNumber.Value, parameterNumber.Value)); - (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).ReadParameter(null, null, null, null, ref DoubleParameter); - return DoubleParameter.NullableValue.HasValue ? DoubleParameter.Value : SqlDouble.Null; - } - } -} diff --git a/DeviceSQL/Functions/ROCMaster/GetEvents.cs b/DeviceSQL/Functions/ROCMaster/GetEvents.cs deleted file mode 100644 index 74a94c1..0000000 --- a/DeviceSQL/Functions/ROCMaster/GetEvents.cs +++ /dev/null @@ -1,22 +0,0 @@ -#region Imported Types - -using Microsoft.SqlServer.Server; -using System; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class ROCMaster - { - [SqlFunction] - public static Types.ROCMaster.ROCMaster_EventRecordArray ROCMaster_GetEvents(SqlString deviceName, byte count, int startIndex) - { - var deviceNameValue = deviceName.Value; - var eventRecords = (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).GetEvents(null, null, null, null, count, Convert.ToUInt16(startIndex)); - return new Types.ROCMaster.ROCMaster_EventRecordArray() { eventRecords = eventRecords.Select(e => new Types.ROCMaster.ROCMaster_EventRecord() { Data = e.data, Index = e.Index }).ToList() }; - } - } -} diff --git a/DeviceSQL/Functions/ROCMaster/GetFloatValue.cs b/DeviceSQL/Functions/ROCMaster/GetFloatValue.cs deleted file mode 100644 index 0637600..0000000 --- a/DeviceSQL/Functions/ROCMaster/GetFloatValue.cs +++ /dev/null @@ -1,25 +0,0 @@ -#region Imported Types - -using DeviceSQL.Device.ROC.Data; -using Microsoft.SqlServer.Server; -using System; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class ROCMaster - { - [SqlFunction] - public static SqlSingle ROCMaster_GetFloatValue(SqlString deviceName, SqlByte pointType, SqlByte logicalNumber, SqlByte parameterNumber) - { - var deviceNameValue = deviceName.Value; - var flpParameter = new FlpParameter(new Tlp(pointType.Value, logicalNumber.Value, parameterNumber.Value)); - (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).ReadParameter(null, null, null, null, ref flpParameter); - return flpParameter.NullableValue.HasValue ? flpParameter.Value : SqlSingle.Null; - } - - } -} diff --git a/DeviceSQL/Functions/ROCMaster/GetFstInformation.cs b/DeviceSQL/Functions/ROCMaster/GetFstInformation.cs deleted file mode 100644 index 5f50b43..0000000 --- a/DeviceSQL/Functions/ROCMaster/GetFstInformation.cs +++ /dev/null @@ -1,46 +0,0 @@ -#region Imported Types - -using DeviceSQL.Device.ROC.Data; -using Microsoft.SqlServer.Server; -using System; -using System.Collections.Generic; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class ROCMaster - { - [SqlFunction] - public static Types.ROCMaster.ROCMaster_FSTInformation ROCMaster_GetFstInformation(SqlString deviceName, SqlByte fstNumber) - { - var deviceNameValue = deviceName.Value; - var rocMaster = (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster); - - var fstHeaderInfo = rocMaster.GetFstHeaderInfo(null, null, null, null, fstNumber.Value); - var fstSizeParameter = new UInt16Parameter(new Tlp(16, fstNumber.Value, 25)); - - rocMaster.ReadParameter(null, null, null, null, ref fstSizeParameter); - - var fstSize = fstSizeParameter.Value; - var codeBytes = new List(); - - while (fstSize > codeBytes.Count) - { - codeBytes.AddRange(rocMaster.GetFstCodeChunk(null, null, null, null, 0, (byte)codeBytes.Count, (fstSize - codeBytes.Count) > 240 ? (byte)240 : (byte)(fstSize - codeBytes.Count)).CodeBytes); - } - - return new Types.ROCMaster.ROCMaster_FSTInformation() - { - FSTNumber = fstNumber.Value, - Version = fstHeaderInfo.Version, - Description = fstHeaderInfo.Description, - FSTCode = codeBytes.ToArray() - }; - - } - - } -} diff --git a/DeviceSQL/Functions/ROCMaster/GetHistory.cs b/DeviceSQL/Functions/ROCMaster/GetHistory.cs deleted file mode 100644 index 8f0b172..0000000 --- a/DeviceSQL/Functions/ROCMaster/GetHistory.cs +++ /dev/null @@ -1,22 +0,0 @@ -#region Imported Types - -using Microsoft.SqlServer.Server; -using System; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class ROCMaster - { - [SqlFunction] - public static Types.ROCMaster.ROCMaster_HistoryRecordArray ROCMaster_GetHistory(SqlString deviceName, byte historicalRamArea, byte historyPointNumber, byte count, int startIndex) - { - var deviceNameValue = deviceName.Value; - var historyRecords = (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).GetHistory(null, null, null, null, historicalRamArea, historyPointNumber, count, Convert.ToUInt16(startIndex)); - return new Types.ROCMaster.ROCMaster_HistoryRecordArray() { historyRecords = historyRecords.Select(h => new Types.ROCMaster.ROCMaster_HistoryRecord() { HistorySegment = h.HistorySegment, HistoryPointNumber = h.HistoryPointNumber, Index = h.Index, Value = h.Value }).ToList() }; - } - } -} diff --git a/DeviceSQL/Functions/ROCMaster/GetInt16Value.cs b/DeviceSQL/Functions/ROCMaster/GetInt16Value.cs deleted file mode 100644 index 403a2d8..0000000 --- a/DeviceSQL/Functions/ROCMaster/GetInt16Value.cs +++ /dev/null @@ -1,24 +0,0 @@ -#region Imported Types - -using DeviceSQL.Device.ROC.Data; -using Microsoft.SqlServer.Server; -using System; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class ROCMaster - { - [SqlFunction] - public static SqlInt16 ROCMaster_GetInt16Value(SqlString deviceName, SqlByte pointType, SqlByte logicalNumber, SqlByte parameterNumber) - { - var deviceNameValue = deviceName.Value; - var int16Parameter = new Int16Parameter(new Tlp(pointType.Value, logicalNumber.Value, parameterNumber.Value)); - (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).ReadParameter(null, null, null, null, ref int16Parameter); - return int16Parameter.Value; - } - } -} diff --git a/DeviceSQL/Functions/ROCMaster/GetInt32Value.cs b/DeviceSQL/Functions/ROCMaster/GetInt32Value.cs deleted file mode 100644 index 6106d85..0000000 --- a/DeviceSQL/Functions/ROCMaster/GetInt32Value.cs +++ /dev/null @@ -1,24 +0,0 @@ -#region Imported Types - -using DeviceSQL.Device.ROC.Data; -using Microsoft.SqlServer.Server; -using System; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class ROCMaster - { - [SqlFunction] - public static SqlInt32 ROCMaster_GetInt32Value(SqlString deviceName, SqlByte pointType, SqlByte logicalNumber, SqlByte parameterNumber) - { - var deviceNameValue = deviceName.Value; - var int32Parameter = new Int32Parameter(new Tlp(pointType.Value, logicalNumber.Value, parameterNumber.Value)); - (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).ReadParameter(null, null, null, null, ref int32Parameter); - return int32Parameter.Value; - } - } -} diff --git a/DeviceSQL/Functions/ROCMaster/GetInt8Value.cs b/DeviceSQL/Functions/ROCMaster/GetInt8Value.cs deleted file mode 100644 index 4aec4aa..0000000 --- a/DeviceSQL/Functions/ROCMaster/GetInt8Value.cs +++ /dev/null @@ -1,23 +0,0 @@ -#region Imported Types - -using DeviceSQL.Device.ROC.Data; -using Microsoft.SqlServer.Server; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class ROCMaster - { - [SqlFunction] - public static SqlInt16 ROCMaster_GetInt8Value(SqlString deviceName, SqlByte pointType, SqlByte logicalNumber, SqlByte parameterNumber) - { - var deviceNameValue = deviceName.Value; - var int8Parameter = new Int8Parameter(new Tlp(pointType.Value, logicalNumber.Value, parameterNumber.Value)); - (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).ReadParameter(null, null, null, null, ref int8Parameter); - return int8Parameter.Value; - } - } -} diff --git a/DeviceSQL/Functions/ROCMaster/GetMinutelyHistory.cs b/DeviceSQL/Functions/ROCMaster/GetMinutelyHistory.cs deleted file mode 100644 index d59020f..0000000 --- a/DeviceSQL/Functions/ROCMaster/GetMinutelyHistory.cs +++ /dev/null @@ -1,21 +0,0 @@ -#region Imported Types - -using Microsoft.SqlServer.Server; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class ROCMaster - { - [SqlFunction] - public static Types.ROCMaster.ROCMaster_HistoryRecordArray ROCMaster_GetMinutelyHistory(SqlString deviceName, byte historyPointNumber) - { - var deviceNameValue = deviceName.Value; - var historyRecords = (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).GetMinutelyHistory(null, null, null, null, historyPointNumber); - return new Types.ROCMaster.ROCMaster_HistoryRecordArray() { historyRecords = historyRecords.Select(h => new Types.ROCMaster.ROCMaster_HistoryRecord() { HistoryPointNumber = h.HistoryPointNumber, Index = h.Index, Value = h.Value }).ToList() }; - } - } -} diff --git a/DeviceSQL/Functions/ROCMaster/GetROCPlusAlarms.cs b/DeviceSQL/Functions/ROCMaster/GetROCPlusAlarms.cs deleted file mode 100644 index 068bf69..0000000 --- a/DeviceSQL/Functions/ROCMaster/GetROCPlusAlarms.cs +++ /dev/null @@ -1,22 +0,0 @@ -#region Imported Types - -using Microsoft.SqlServer.Server; -using System; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class ROCMaster - { - [SqlFunction] - public static Types.ROCMaster.ROCMaster_ROCPlusAlarmRecordArray ROCMaster_GetROCPlusAlarms(SqlString deviceName, byte count, int startIndex) - { - var deviceNameValue = deviceName.Value; - var rocPlusAlarmRecords = (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).GetROCPlusAlarms(null, null, null, null, count, Convert.ToUInt16(startIndex)); - return new Types.ROCMaster.ROCMaster_ROCPlusAlarmRecordArray() { rocPlusAlarmRecords = rocPlusAlarmRecords.Select(a => new Types.ROCMaster.ROCMaster_ROCPlusAlarmRecord() { Data = a.data, Index = a.Index }).ToList() }; - } - } -} diff --git a/DeviceSQL/Functions/ROCMaster/GetROCPlusConfiguredHistoryPoints.cs b/DeviceSQL/Functions/ROCMaster/GetROCPlusConfiguredHistoryPoints.cs deleted file mode 100644 index eba61f8..0000000 --- a/DeviceSQL/Functions/ROCMaster/GetROCPlusConfiguredHistoryPoints.cs +++ /dev/null @@ -1,21 +0,0 @@ -#region Imported Types - -using Microsoft.SqlServer.Server; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class ROCMaster - { - [SqlFunction] - public static Types.ROCMaster.ROCMaster_ROCPlusHistoryPointArray ROCMaster_GetROCPlusConfiguredHistoryPoints(SqlString deviceName, byte historySegment) - { - var deviceNameValue = deviceName.Value; - var configuredHistoryPoints = (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).GetROCPlusConfiguredHistoryPoints(null, null, null, null, historySegment); - return new Types.ROCMaster.ROCMaster_ROCPlusHistoryPointArray() { historyPoints = configuredHistoryPoints }; - } - } -} diff --git a/DeviceSQL/Functions/ROCMaster/GetROCPlusEvents.cs b/DeviceSQL/Functions/ROCMaster/GetROCPlusEvents.cs deleted file mode 100644 index ab6705a..0000000 --- a/DeviceSQL/Functions/ROCMaster/GetROCPlusEvents.cs +++ /dev/null @@ -1,22 +0,0 @@ -#region Imported Types - -using Microsoft.SqlServer.Server; -using System; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class ROCMaster - { - [SqlFunction] - public static Types.ROCMaster.ROCMaster_ROCPlusEventRecordArray ROCMaster_GetROCPlusEvents(SqlString deviceName, byte count, int startIndex) - { - var deviceNameValue = deviceName.Value; - var rocPlusEventRecords = (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).GetROCPlusEvents(null, null, null, null, count, Convert.ToUInt16(startIndex)); - return new Types.ROCMaster.ROCMaster_ROCPlusEventRecordArray() { rocPlusEventRecords = rocPlusEventRecords.Select(e => new Types.ROCMaster.ROCMaster_ROCPlusEventRecord() { Data = e.data, Index = e.Index }).ToList() }; - } - } -} diff --git a/DeviceSQL/Functions/ROCMaster/GetROCPlusHistory.cs b/DeviceSQL/Functions/ROCMaster/GetROCPlusHistory.cs deleted file mode 100644 index 2344d10..0000000 --- a/DeviceSQL/Functions/ROCMaster/GetROCPlusHistory.cs +++ /dev/null @@ -1,22 +0,0 @@ -#region Imported Types - -using Microsoft.SqlServer.Server; -using System; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class ROCMaster - { - [SqlFunction] - public static Types.ROCMaster.ROCMaster_ROCPlusHistoryRecordArray ROCMaster_GetROCPlusHistory(SqlString deviceName, byte historySegment, int historyIndex, byte historyType, byte startingHistoryPoint, byte numberOfHistoryPoints, byte numberOfTimePeriods) - { - var deviceNameValue = deviceName.Value; - var rocPlusHistoryRecords = (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).GetROCPlusHistory(null, null, null, null, historySegment, Convert.ToUInt16(historyIndex), historyType, startingHistoryPoint, numberOfHistoryPoints, numberOfTimePeriods); - return new Types.ROCMaster.ROCMaster_ROCPlusHistoryRecordArray() { rocPlusHistoryRecords = rocPlusHistoryRecords.Select(h => new Types.ROCMaster.ROCMaster_ROCPlusHistoryRecord() { HistorySegment = h.HistorySegment, HistoryPointNumber = h.HistoryPointNumber, Index = h.Index, Value = h.Value }).ToList() }; - } - } -} diff --git a/DeviceSQL/Functions/ROCMaster/GetROCPlusHistoryByHistoryPointArray.cs b/DeviceSQL/Functions/ROCMaster/GetROCPlusHistoryByHistoryPointArray.cs deleted file mode 100644 index b57c984..0000000 --- a/DeviceSQL/Functions/ROCMaster/GetROCPlusHistoryByHistoryPointArray.cs +++ /dev/null @@ -1,22 +0,0 @@ -#region Imported Types - -using Microsoft.SqlServer.Server; -using System; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class ROCMaster - { - [SqlFunction] - public static Types.ROCMaster.ROCMaster_ROCPlusHistoryRecordArray ROCMaster_GetROCPlusHistoryByHistoryPointArray(SqlString deviceName, byte historySegment, int historyIndex, byte historyType, byte startingHistoryPoint, bool requestTimeStamps, byte numberOfHistoryPoints, Types.ROCMaster.ROCMaster_ROCPlusHistoryPointArray requestedHistoryPoints, byte numberOfTimePeriods) - { - var deviceNameValue = deviceName.Value; - var rocPlusHistoryRecords = (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).GetROCPlusHistory(null, null, null, null, historySegment, Convert.ToUInt16(historyIndex), historyType, requestTimeStamps, requestedHistoryPoints.historyPoints, numberOfTimePeriods); - return new Types.ROCMaster.ROCMaster_ROCPlusHistoryRecordArray() { rocPlusHistoryRecords = rocPlusHistoryRecords.Select(h => new Types.ROCMaster.ROCMaster_ROCPlusHistoryRecord() { HistorySegment = h.HistorySegment, HistoryPointNumber = h.HistoryPointNumber, Index = h.Index, Value = h.Value }).ToList() }; - } - } -} diff --git a/DeviceSQL/Functions/ROCMaster/GetRealTimeClockValue.cs b/DeviceSQL/Functions/ROCMaster/GetRealTimeClockValue.cs deleted file mode 100644 index 9619e71..0000000 --- a/DeviceSQL/Functions/ROCMaster/GetRealTimeClockValue.cs +++ /dev/null @@ -1,20 +0,0 @@ -#region Imported Types - -using Microsoft.SqlServer.Server; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class ROCMaster - { - [SqlFunction] - public static SqlDateTime ROCMaster_GetRealTimeClockValue(SqlString deviceName) - { - var deviceNameValue = deviceName.Value; - return new SqlDateTime((DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).GetRealTimeClockValue(null, null, null, null)); - } - } -} diff --git a/DeviceSQL/Functions/ROCMaster/GetRealTimeClockValueWithCentury.cs b/DeviceSQL/Functions/ROCMaster/GetRealTimeClockValueWithCentury.cs deleted file mode 100644 index 65125ec..0000000 --- a/DeviceSQL/Functions/ROCMaster/GetRealTimeClockValueWithCentury.cs +++ /dev/null @@ -1,21 +0,0 @@ -#region Imported Types - -using Microsoft.SqlServer.Server; -using System; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class ROCMaster - { - [SqlFunction] - public static SqlDateTime ROCMaster_GetRealTimeClockValueWithCentury(SqlString deviceName, SqlInt32 century) - { - var deviceNameValue = deviceName.Value; - return new SqlDateTime((DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).GetRealTimeClockValue(null, null, null, null, Convert.ToUInt16(century.Value))); - } - } -} diff --git a/DeviceSQL/Functions/ROCMaster/GetStringValue.cs b/DeviceSQL/Functions/ROCMaster/GetStringValue.cs deleted file mode 100644 index 338c658..0000000 --- a/DeviceSQL/Functions/ROCMaster/GetStringValue.cs +++ /dev/null @@ -1,46 +0,0 @@ -#region Imported Types - -using DeviceSQL.Device.ROC.Data; -using Microsoft.SqlServer.Server; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class ROCMaster - { - [SqlFunction] - public static SqlString ROCMaster_GetStringValue(SqlString deviceName, SqlByte pointType, SqlByte logicalNumber, SqlByte parameterNumber, SqlByte stringLength) - { - var deviceNameValue = deviceName.Value; - - if (10 >= stringLength) - { - var ac10Parameter = new Ac10Parameter(new Tlp(pointType.Value, logicalNumber.Value, parameterNumber.Value)); - (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).ReadParameter(null, null, null, null, ref ac10Parameter); - return ac10Parameter.Value; - } - else if (12 >= stringLength) - { - var ac12Parameter = new Ac12Parameter(new Tlp(pointType.Value, logicalNumber.Value, parameterNumber.Value)); - (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).ReadParameter(null, null, null, null, ref ac12Parameter); - return ac12Parameter.Value; - } - else if (20 >= stringLength) - { - var ac20Parameter = new Ac20Parameter(new Tlp(pointType.Value, logicalNumber.Value, parameterNumber.Value)); - (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).ReadParameter(null, null, null, null, ref ac20Parameter); - return ac20Parameter.Value; - } - else - { - var ac30Parameter = new Ac30Parameter(new Tlp(pointType.Value, logicalNumber.Value, parameterNumber.Value)); - (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).ReadParameter(null, null, null, null, ref ac30Parameter); - return ac30Parameter.Value; - } - - } - } -} diff --git a/DeviceSQL/Functions/ROCMaster/GetTimeValue.cs b/DeviceSQL/Functions/ROCMaster/GetTimeValue.cs deleted file mode 100644 index 0f44e4d..0000000 --- a/DeviceSQL/Functions/ROCMaster/GetTimeValue.cs +++ /dev/null @@ -1,22 +0,0 @@ -#region Imported Types - -using Microsoft.SqlServer.Server; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class ROCMaster - { - [SqlFunction] - public static SqlDateTime ROCMaster_GetTimeValue(SqlString deviceName, SqlByte pointType, SqlByte logicalNumber, SqlByte parameterNumber) - { - var deviceNameValue = deviceName.Value; - var timeParameter = new Device.ROC.Data.TimeParameter(new Device.ROC.Data.Tlp(pointType.Value, logicalNumber.Value, parameterNumber.Value)); - (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).ReadParameter(null, null, null, null, ref timeParameter); - return timeParameter.Value; - } - } -} diff --git a/DeviceSQL/Functions/ROCMaster/GetUInt16Value.cs b/DeviceSQL/Functions/ROCMaster/GetUInt16Value.cs deleted file mode 100644 index e885d9b..0000000 --- a/DeviceSQL/Functions/ROCMaster/GetUInt16Value.cs +++ /dev/null @@ -1,23 +0,0 @@ -#region Imported Types - -using DeviceSQL.Device.ROC.Data; -using Microsoft.SqlServer.Server; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class ROCMaster - { - [SqlFunction] - public static SqlInt32 ROCMaster_GetUInt16Value(SqlString deviceName, SqlByte pointType, SqlByte logicalNumber, SqlByte parameterNumber) - { - var deviceNameValue = deviceName.Value; - var uInt16Parameter = new UInt16Parameter(new Tlp(pointType.Value, logicalNumber.Value, parameterNumber.Value)); - (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).ReadParameter(null, null, null, null, ref uInt16Parameter); - return uInt16Parameter.Value; - } - } -} diff --git a/DeviceSQL/Functions/ROCMaster/GetUInt32Value.cs b/DeviceSQL/Functions/ROCMaster/GetUInt32Value.cs deleted file mode 100644 index 1f2887b..0000000 --- a/DeviceSQL/Functions/ROCMaster/GetUInt32Value.cs +++ /dev/null @@ -1,23 +0,0 @@ -#region Imported Types - -using DeviceSQL.Device.ROC.Data; -using Microsoft.SqlServer.Server; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class ROCMaster - { - [SqlFunction] - public static SqlInt64 ROCMaster_GetUInt32Value(SqlString deviceName, SqlByte pointType, SqlByte logicalNumber, SqlByte parameterNumber) - { - var deviceNameValue = deviceName.Value; - var uInt32Parameter = new UInt32Parameter(new Tlp(pointType.Value, logicalNumber.Value, parameterNumber.Value)); - (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).ReadParameter(null, null, null, null, ref uInt32Parameter); - return uInt32Parameter.Value; - } - } -} diff --git a/DeviceSQL/Functions/ROCMaster/GetUInt8Value.cs b/DeviceSQL/Functions/ROCMaster/GetUInt8Value.cs deleted file mode 100644 index 61eaf5a..0000000 --- a/DeviceSQL/Functions/ROCMaster/GetUInt8Value.cs +++ /dev/null @@ -1,23 +0,0 @@ -#region Imported Types - -using DeviceSQL.Device.ROC.Data; -using Microsoft.SqlServer.Server; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class ROCMaster - { - [SqlFunction] - public static SqlByte ROCMaster_GetUInt8Value(SqlString deviceName, SqlByte pointType, SqlByte logicalNumber, SqlByte parameterNumber) - { - var deviceNameValue = deviceName.Value; - var uInt8Parameter = new UInt8Parameter(new Tlp(pointType.Value, logicalNumber.Value, parameterNumber.Value)); - (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).ReadParameter(null, null, null, null, ref uInt8Parameter); - return uInt8Parameter.Value; - } - } -} diff --git a/DeviceSQL/Functions/ROCMaster/ReadParameters.cs b/DeviceSQL/Functions/ROCMaster/ReadParameters.cs deleted file mode 100644 index 75a77b3..0000000 --- a/DeviceSQL/Functions/ROCMaster/ReadParameters.cs +++ /dev/null @@ -1,101 +0,0 @@ -#region Imported Types - -using DeviceSQL.Device.ROC.Data; -using Microsoft.SqlServer.Server; -using System.Collections.Generic; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class ROCMaster - { - [SqlFunction] - public static Types.ROCMaster.ROCMaster_ParameterArray ROCMaster_ReadParameters(SqlString deviceName, Types.ROCMaster.ROCMaster_ParameterArray parameterArray) - { - var deviceNameValue = deviceName.Value; - var parameters = new List(); - var length = parameterArray.Length; - - for (var parameterIndex = 0; length > parameterIndex; parameterIndex++) - { - var parameter = parameterArray.GetParameter(parameterIndex); - - switch (parameter.RawType) - { - case ParameterType.AC3: - parameters.Add(new Ac3Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); - break; - case ParameterType.AC7: - parameters.Add(new Ac7Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); - break; - case ParameterType.AC10: - parameters.Add(new Ac10Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); - break; - case ParameterType.AC12: - parameters.Add(new Ac12Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); - break; - case ParameterType.AC20: - parameters.Add(new Ac20Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); - break; - case ParameterType.AC30: - parameters.Add(new Ac30Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); - break; - case ParameterType.AC40: - parameters.Add(new Ac40Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); - break; - case ParameterType.BIN: - parameters.Add(new BinParameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); - break; - case ParameterType.FL: - parameters.Add(new FlpParameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); - break; - case ParameterType.DOUBLE: - parameters.Add(new DoubleParameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); - break; - case ParameterType.INT16: - parameters.Add(new Int16Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); - break; - case ParameterType.INT32: - parameters.Add(new Int32Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); - break; - case ParameterType.INT8: - parameters.Add(new Int8Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); - break; - case ParameterType.TLP: - parameters.Add(new TlpParameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); - break; - case ParameterType.UINT16: - parameters.Add(new UInt16Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); - break; - case ParameterType.UINT32: - parameters.Add(new UInt32Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); - break; - case ParameterType.TIME: - parameters.Add(new TimeParameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); - break; - case ParameterType.UINT8: - parameters.Add(new UInt8Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); - break; - } - - } - - (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).ReadParameters(null, null, null, null, ref parameters); - - - for (var parameterIndex = 0; length > parameterIndex; parameterIndex++) - { - var parameter = parameterArray[parameterIndex]; - parameter.RawValue = parameters[parameterIndex].Data; - parameterArray[parameterIndex] = parameter; - } - - return parameterArray; - - } - - } -} diff --git a/DeviceSQL/Functions/ROCMaster/SetFloatValue.cs b/DeviceSQL/Functions/ROCMaster/SetFloatValue.cs deleted file mode 100644 index 1f14278..0000000 --- a/DeviceSQL/Functions/ROCMaster/SetFloatValue.cs +++ /dev/null @@ -1,23 +0,0 @@ -#region Imported Types - -using DeviceSQL.Device.ROC.Data; -using Microsoft.SqlServer.Server; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class ROCMaster - { - [SqlFunction] - public static SqlBoolean ROCMaster_SetFloatValue(SqlString deviceName, SqlByte pointType, SqlByte logicalNumber, SqlByte parameterNumber, SqlSingle value) - { - var deviceNameValue = deviceName.Value; - var flpParameter = new FlpParameter(new Tlp(pointType.Value, logicalNumber.Value, parameterNumber.Value)) { Value = value.Value }; - (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).WriteParameter(null, null, null, null, flpParameter); - return true; - } - } -} diff --git a/DeviceSQL/Functions/ROCMaster/SetInt16Value.cs b/DeviceSQL/Functions/ROCMaster/SetInt16Value.cs deleted file mode 100644 index 215410d..0000000 --- a/DeviceSQL/Functions/ROCMaster/SetInt16Value.cs +++ /dev/null @@ -1,23 +0,0 @@ -#region Imported Types - -using DeviceSQL.Device.ROC.Data; -using Microsoft.SqlServer.Server; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class ROCMaster - { - [SqlFunction] - public static SqlBoolean ROCMaster_SetInt16Value(SqlString deviceName, SqlByte pointType, SqlByte logicalNumber, SqlByte parameterNumber, SqlInt16 value) - { - var deviceNameValue = deviceName.Value; - var int16Parameter = new Int16Parameter(new Tlp(pointType.Value, logicalNumber.Value, parameterNumber.Value)) { Value = value.Value }; - (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).WriteParameter(null, null, null, null, int16Parameter); - return true; - } - } -} diff --git a/DeviceSQL/Functions/ROCMaster/SetInt32Value.cs b/DeviceSQL/Functions/ROCMaster/SetInt32Value.cs deleted file mode 100644 index aa27474..0000000 --- a/DeviceSQL/Functions/ROCMaster/SetInt32Value.cs +++ /dev/null @@ -1,23 +0,0 @@ -#region Imported Types - -using DeviceSQL.Device.ROC.Data; -using Microsoft.SqlServer.Server; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class ROCMaster - { - [SqlFunction] - public static SqlBoolean ROCMaster_SetInt32Value(SqlString deviceName, SqlByte pointType, SqlByte logicalNumber, SqlByte parameterNumber, SqlInt32 value) - { - var deviceNameValue = deviceName.Value; - var int32Parameter = new Int32Parameter(new Tlp(pointType.Value, logicalNumber.Value, parameterNumber.Value)) { Value = value.Value }; - (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).WriteParameter(null, null, null, null, int32Parameter); - return true; - } - } -} diff --git a/DeviceSQL/Functions/ROCMaster/SetInt8Value.cs b/DeviceSQL/Functions/ROCMaster/SetInt8Value.cs deleted file mode 100644 index 9fc8c50..0000000 --- a/DeviceSQL/Functions/ROCMaster/SetInt8Value.cs +++ /dev/null @@ -1,24 +0,0 @@ -#region Imported Types - -using DeviceSQL.Device.ROC.Data; -using Microsoft.SqlServer.Server; -using System; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class ROCMaster - { - [SqlFunction] - public static SqlBoolean ROCMaster_SetInt8Value(SqlString deviceName, SqlByte pointType, SqlByte logicalNumber, SqlByte parameterNumber, SqlInt16 value) - { - var deviceNameValue = deviceName.Value; - var int8Parameter = new Int8Parameter(new Tlp(pointType.Value, logicalNumber.Value, parameterNumber.Value)) { Value = Convert.ToSByte(value.Value) }; - (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as DeviceSQL.Device.ROC.ROCMaster).WriteParameter(null, null, null, null, int8Parameter); - return true; - } - } -} diff --git a/DeviceSQL/Functions/ROCMaster/SetOperatorIdentification.cs b/DeviceSQL/Functions/ROCMaster/SetOperatorIdentification.cs deleted file mode 100644 index f71784c..0000000 --- a/DeviceSQL/Functions/ROCMaster/SetOperatorIdentification.cs +++ /dev/null @@ -1,22 +0,0 @@ -#region Imported Types - -using Microsoft.SqlServer.Server; -using System; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class ROCMaster - { - [SqlFunction] - public static SqlBoolean ROCMaster_SetOperatorIdentification(SqlString deviceName, SqlString operatorId, SqlInt32 password) - { - var deviceNameValue = deviceName.Value; - (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).SetOperatorIdentification(null, null, null, null, operatorId.IsNull ? "LOI" : operatorId.Value, Convert.ToUInt16(password.IsNull ? 1000 : password.Value)); - return true; - } - } -} diff --git a/DeviceSQL/Functions/ROCMaster/SetRealTimeClock.cs b/DeviceSQL/Functions/ROCMaster/SetRealTimeClock.cs deleted file mode 100644 index bbb2759..0000000 --- a/DeviceSQL/Functions/ROCMaster/SetRealTimeClock.cs +++ /dev/null @@ -1,21 +0,0 @@ -#region Imported Types - -using Microsoft.SqlServer.Server; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class ROCMaster - { - [SqlFunction] - public static SqlBoolean ROCMaster_SetRealTimeClock(SqlString deviceName, SqlDateTime dateTime) - { - var deviceNameValue = deviceName.Value; - (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).SetRealTimeClock(null, null, null, null, dateTime.Value); - return true; - } - } -} diff --git a/DeviceSQL/Functions/ROCMaster/SetStringValue.cs b/DeviceSQL/Functions/ROCMaster/SetStringValue.cs deleted file mode 100644 index f4b524e..0000000 --- a/DeviceSQL/Functions/ROCMaster/SetStringValue.cs +++ /dev/null @@ -1,47 +0,0 @@ -#region Imported Types - -using DeviceSQL.Device.ROC.Data; -using Microsoft.SqlServer.Server; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class ROCMaster - { - [SqlFunction] - public static SqlBoolean ROCMaster_SetStringValue(SqlString deviceName, SqlByte pointType, SqlByte logicalNumber, SqlByte parameterNumber, SqlByte stringLength, SqlString value) - { - var deviceNameValue = deviceName.Value; - - if (10 >= stringLength) - { - var ac10Parameter = new Ac10Parameter(new Tlp(pointType.Value, logicalNumber.Value, parameterNumber.Value)) { Value = value.Value }; - (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).WriteParameter(null, null, null, null, ac10Parameter); - return true; - } - else if (12 >= stringLength) - { - var ac12Parameter = new Ac12Parameter(new Tlp(pointType.Value, logicalNumber.Value, parameterNumber.Value)) { Value = value.Value }; - (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).WriteParameter(null, null, null, null, ac12Parameter); - return true; - } - else if (20 >= stringLength) - { - var ac20Parameter = new Ac20Parameter(new Tlp(pointType.Value, logicalNumber.Value, parameterNumber.Value)) { Value = value.Value }; - (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).WriteParameter(null, null, null, null, ac20Parameter); - return true; - } - else - { - var ac30Parameter = new Ac30Parameter(new Tlp(pointType.Value, logicalNumber.Value, parameterNumber.Value)) { Value = value.Value }; - (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).WriteParameter(null, null, null, null, ac30Parameter); - return true; - } - - } - - } -} diff --git a/DeviceSQL/Functions/ROCMaster/SetTimeValue.cs b/DeviceSQL/Functions/ROCMaster/SetTimeValue.cs deleted file mode 100644 index 0ce8543..0000000 --- a/DeviceSQL/Functions/ROCMaster/SetTimeValue.cs +++ /dev/null @@ -1,23 +0,0 @@ -#region Imported Types - -using DeviceSQL.Device.ROC.Data; -using Microsoft.SqlServer.Server; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class ROCMaster - { - [SqlFunction] - public static SqlBoolean ROCMaster_SetTimeValue(SqlString deviceName, SqlByte pointType, SqlByte logicalNumber, SqlByte parameterNumber, SqlDateTime value) - { - var deviceNameValue = deviceName.Value; - var timeParameter = new TimeParameter(new Tlp(pointType.Value, logicalNumber.Value, parameterNumber.Value)) { Value = value.Value }; - (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).WriteParameter(null, null, null, null, timeParameter); - return true; - } - } -} diff --git a/DeviceSQL/Functions/ROCMaster/SetUInt16Value.cs b/DeviceSQL/Functions/ROCMaster/SetUInt16Value.cs deleted file mode 100644 index 72213ea..0000000 --- a/DeviceSQL/Functions/ROCMaster/SetUInt16Value.cs +++ /dev/null @@ -1,24 +0,0 @@ -#region Imported Types - -using DeviceSQL.Device.ROC.Data; -using Microsoft.SqlServer.Server; -using System; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class ROCMaster - { - [SqlFunction] - public static SqlBoolean ROCMaster_SetUInt16Value(SqlString deviceName, SqlByte pointType, SqlByte logicalNumber, SqlByte parameterNumber, SqlInt32 value) - { - var deviceNameValue = deviceName.Value; - var uInt16Parameter = new UInt16Parameter(new Tlp(pointType.Value, logicalNumber.Value, parameterNumber.Value)) { Value = Convert.ToUInt16(value.Value) }; - (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).ReadParameter(null, null, null, null, ref uInt16Parameter); - return true; - } - } -} \ No newline at end of file diff --git a/DeviceSQL/Functions/ROCMaster/SetUInt32Value.cs b/DeviceSQL/Functions/ROCMaster/SetUInt32Value.cs deleted file mode 100644 index f4ec445..0000000 --- a/DeviceSQL/Functions/ROCMaster/SetUInt32Value.cs +++ /dev/null @@ -1,24 +0,0 @@ -#region Imported Types - -using DeviceSQL.Device.ROC.Data; -using Microsoft.SqlServer.Server; -using System; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class ROCMaster - { - [SqlFunction] - public static SqlBoolean ROCMaster_SetUInt32Value(SqlString deviceName, SqlByte pointType, SqlByte logicalNumber, SqlByte parameterNumber, SqlInt64 value) - { - var deviceNameValue = deviceName.Value; - var uInt32Parameter = new UInt32Parameter(new Tlp(pointType.Value, logicalNumber.Value, parameterNumber.Value)) { Value = Convert.ToUInt32(value.Value) }; - (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).WriteParameter(null, null, null, null, uInt32Parameter); - return true; - } - } -} diff --git a/DeviceSQL/Functions/ROCMaster/SetUInt8Value.cs b/DeviceSQL/Functions/ROCMaster/SetUInt8Value.cs deleted file mode 100644 index fbc5294..0000000 --- a/DeviceSQL/Functions/ROCMaster/SetUInt8Value.cs +++ /dev/null @@ -1,23 +0,0 @@ -#region Imported Types - -using DeviceSQL.Device.ROC.Data; -using Microsoft.SqlServer.Server; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class ROCMaster - { - [SqlFunction] - public static SqlBoolean ROCMaster_SetUInt8Value(SqlString deviceName, SqlByte pointType, SqlByte logicalNumber, SqlByte parameterNumber, SqlByte value) - { - var deviceNameValue = deviceName.Value; - var uInt8Parameter = new UInt8Parameter(new Tlp(pointType.Value, logicalNumber.Value, parameterNumber.Value)) { Value = value.Value }; - (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).WriteParameter(null, null, null, null, uInt8Parameter); - return true; - } - } -} diff --git a/DeviceSQL/Functions/ROCMaster/WriteParameters.cs b/DeviceSQL/Functions/ROCMaster/WriteParameters.cs deleted file mode 100644 index 6a2a1d5..0000000 --- a/DeviceSQL/Functions/ROCMaster/WriteParameters.cs +++ /dev/null @@ -1,93 +0,0 @@ -#region Imported Types - -using DeviceSQL.Device.ROC.Data; -using Microsoft.SqlServer.Server; -using System.Collections.Generic; -using System.Data.SqlTypes; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class ROCMaster - { - [SqlFunction] - public static SqlBoolean ROCMaster_WriteParameters(SqlString deviceName, Types.ROCMaster.ROCMaster_ParameterArray parameterArray) - { - var deviceNameValue = deviceName.Value; - var parameters = new List(); - var length = parameterArray.Length; - - for (var parameterIndex = 0; length > parameterIndex; parameterIndex++) - { - var parameter = parameterArray.GetParameter(parameterIndex); - - switch (parameter.RawType) - { - case ParameterType.AC3: - parameters.Add(new Ac3Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); - break; - case ParameterType.AC7: - parameters.Add(new Ac7Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); - break; - case ParameterType.AC10: - parameters.Add(new Ac10Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); - break; - case ParameterType.AC12: - parameters.Add(new Ac12Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); - break; - case ParameterType.AC20: - parameters.Add(new Ac20Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); - break; - case ParameterType.AC30: - parameters.Add(new Ac30Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); - break; - case ParameterType.AC40: - parameters.Add(new Ac40Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); - break; - case ParameterType.BIN: - parameters.Add(new BinParameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); - break; - case ParameterType.FL: - parameters.Add(new FlpParameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); - break; - case ParameterType.DOUBLE: - parameters.Add(new DoubleParameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); - break; - case ParameterType.INT16: - parameters.Add(new Int16Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); - break; - case ParameterType.INT32: - parameters.Add(new Int32Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); - break; - case ParameterType.INT8: - parameters.Add(new Int8Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); - break; - case ParameterType.TLP: - parameters.Add(new TlpParameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); - break; - case ParameterType.UINT16: - parameters.Add(new UInt16Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); - break; - case ParameterType.UINT32: - parameters.Add(new UInt32Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); - break; - case ParameterType.TIME: - parameters.Add(new TimeParameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); - break; - case ParameterType.UINT8: - parameters.Add(new UInt8Parameter(new Tlp(parameter.PointType, parameter.LogicalNumber, parameter.Parameter)) { Data = parameter.RawValue }); - break; - } - - } - - (DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.ROC.ROCMaster).WriteParameters(null, null, null, null, parameters); - - return true; - - } - - } -} diff --git a/DeviceSQL/Functions/Watchdog/GetCounterValue.cs b/DeviceSQL/Functions/Watchdog/GetCounterValue.cs deleted file mode 100644 index 517bfc6..0000000 --- a/DeviceSQL/Functions/Watchdog/GetCounterValue.cs +++ /dev/null @@ -1,28 +0,0 @@ -#region Imported Types - -using Microsoft.SqlServer.Server; -using System; -using System.Data.SqlTypes; -using System.Diagnostics; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class Watchdog - { - [SqlFunction] - public static SqlInt32 Watchdog_GetCounterValue() - { - try - { - return new SqlInt32(DeviceSQL.Watchdog.Worker.WatchdogCounter); - } - catch (Exception ex) - { - Trace.TraceError(string.Format("Error getting watchdog counter value: {0}", ex.Message)); - } - return 0; - } - } -} diff --git a/DeviceSQL/Functions/Watchdog/IsAlive.cs b/DeviceSQL/Functions/Watchdog/IsAlive.cs deleted file mode 100644 index 2c38a28..0000000 --- a/DeviceSQL/Functions/Watchdog/IsAlive.cs +++ /dev/null @@ -1,29 +0,0 @@ -#region Imported Types - -using Microsoft.SqlServer.Server; -using System; -using System.Data.SqlTypes; -using System.Diagnostics; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class Watchdog - - { - [SqlFunction] - public static SqlBoolean Watchdog_IsAlive() - { - try - { - return new SqlBoolean(DeviceSQL.Watchdog.Worker.IsAlive); - } - catch (Exception ex) - { - Trace.TraceError(string.Format("Error getting watchdog IsAlive value: {0}", ex.Message)); - } - return false; - } - } -} diff --git a/DeviceSQL/Functions/Watchdog/Run.cs b/DeviceSQL/Functions/Watchdog/Run.cs deleted file mode 100644 index a6c99cc..0000000 --- a/DeviceSQL/Functions/Watchdog/Run.cs +++ /dev/null @@ -1,28 +0,0 @@ -#region Imported Types - -using Microsoft.SqlServer.Server; -using System; -using System.Data.SqlTypes; -using System.Diagnostics; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class Watchdog - { - [SqlFunction] - public static SqlBoolean Watchdog_Run() - { - try - { - DeviceSQL.Watchdog.Worker.Run(); - } - catch (Exception ex) - { - Trace.TraceError(string.Format("Error starting channel manager: {0}", ex.Message)); - } - return new SqlBoolean(true); - } - } -} diff --git a/DeviceSQL/Functions/Watchdog/Stop.cs b/DeviceSQL/Functions/Watchdog/Stop.cs deleted file mode 100644 index 5df65cc..0000000 --- a/DeviceSQL/Functions/Watchdog/Stop.cs +++ /dev/null @@ -1,43 +0,0 @@ -#region Imported Types - -using Microsoft.SqlServer.Server; -using System; -using System.Data.SqlTypes; -using System.Diagnostics; -using System.Linq; - -#endregion - -namespace DeviceSQL.Functions -{ - public partial class Watchdog - { - [SqlFunction] - public static SqlBoolean Watchdog_Stop() - { - try - { - var channels = DeviceSQL.Watchdog.Worker.Channels; - var channelList = channels.ToList(); - channelList.ForEach((channel) => - { - try - { - channel.Dispose(); - channels.TryTake(out channel); - } - catch (Exception ex) - { - Trace.TraceError(string.Format("Error disposing channel: {0}", ex.Message)); - } - }); - DeviceSQL.Watchdog.Worker.Stop(); - } - catch (Exception ex) - { - Trace.TraceError(string.Format("Error stopping channel manager: {0}", ex.Message)); - } - return new SqlBoolean(true); - } - } -} diff --git a/DeviceSQL/IO/Channels/ChannelTraceEventArgs.cs b/DeviceSQL/IO/Channels/ChannelTraceEventArgs.cs deleted file mode 100644 index dcd1a99..0000000 --- a/DeviceSQL/IO/Channels/ChannelTraceEventArgs.cs +++ /dev/null @@ -1,23 +0,0 @@ -#region Imported Types - -using System; -using System.Collections.Generic; -using System.Text; - -#endregion - -namespace DeviceSQL.IO.Channels -{ - internal class ChannelTraceEventArgs : EventArgs - { - internal DateTime MessageDateTimeStamp { get; set; } - internal string Name { get; set; } - internal DateTime StartTime { get; set; } - internal string Operation { get; set; } - internal double Duration { get; set; } - internal int Sequence { get; set; } - internal int Count { get; set; } - internal string Data { get; set; } - internal string ChannelType { get; set; } - } -} diff --git a/DeviceSQL/IO/Channels/SerialPortMuxChannel.cs b/DeviceSQL/IO/Channels/SerialPortMuxChannel.cs deleted file mode 100644 index aa98fe5..0000000 --- a/DeviceSQL/IO/Channels/SerialPortMuxChannel.cs +++ /dev/null @@ -1,139 +0,0 @@ -#region Imported Types - -using System; -using System.Diagnostics; -using System.IO.Ports; -using System.Linq; - -#endregion - -namespace DeviceSQL.IO.Channels -{ - public class SerialPortMuxChannel : SerialPortChannel, IMuxChannel - { - - #region Fields - - private string sourceChannelName = ""; - private int requestDelay = 0; - private int responseDelay = 0; - private int responseTimeout = 3000; - - #endregion - - #region Properties - - public IChannel SourceChannel - { - get - { - return Watchdog.Worker.Channels.FirstOrDefault(channel => channel.Name == sourceChannelName); - } - } - - public string SourceChannelName - { - get - { - return sourceChannelName; - } - set - { - sourceChannelName = value; - } - } - - public int RequestDelay - { - get - { - return requestDelay; - } - set - { - requestDelay = value; - } - } - - public int ResponseDelay - { - get - { - return responseDelay; - } - set - { - responseDelay = value; - } - } - - public int ResponseTimeout - { - get - { - return responseTimeout; - } - set - { - responseTimeout = value; - } - } - - #endregion - - #region Mux Methods - - public void Run() - { - SerialPort.DataReceived -= SerialPort_DataReceived; - SerialPort.DataReceived += SerialPort_DataReceived; - } - - public void Stop() - { - SerialPort.DataReceived -= SerialPort_DataReceived; - } - - #endregion - - #region Serial Port Events - - private void SerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e) - { - var startTime = DateTime.Now; - var lockObject = SourceChannel.LockObject; - lock (lockObject) - { - var masterStopWatch = new Stopwatch(); - var requestBytes = new byte[] { }; - - TimedThreadBlocker.Wait(requestDelay); - - requestBytes = new byte[SerialPort.BytesToRead]; - - if (requestBytes.Length > 0) - { - Read(ref requestBytes, 0, requestBytes.Length, 0); - SourceChannel.Write(ref requestBytes, 0, requestBytes.Length); - TimedThreadBlocker.Wait(responseDelay); - masterStopWatch.Start(); - - var sequence = 0; - while (SourceChannel.NumberOfBytesAvailable > 0 && responseTimeout > masterStopWatch.ElapsedMilliseconds) - { - var responseBytes = new byte[SourceChannel.NumberOfBytesAvailable]; - - SourceChannel.Read(ref responseBytes, 0, responseBytes.Length, sequence++); - Write(ref responseBytes, 0, responseBytes.Length); - } - - masterStopWatch.Stop(); - - } - } - } - - #endregion - - } -} diff --git a/DeviceSQL/Properties/AssemblyInfo.cs b/DeviceSQL/Properties/AssemblyInfo.cs index a90746f..f25f370 100644 --- a/DeviceSQL/Properties/AssemblyInfo.cs +++ b/DeviceSQL/Properties/AssemblyInfo.cs @@ -3,14 +3,15 @@ // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with the SQLCLR assembly. -[assembly: AssemblyTitle("DeviceSQL libraries")] -[assembly: AssemblyDescription("SQL Server libraries for communicating with anything")] +[assembly: AssemblyTitle("DeviceSQL")] +[assembly: AssemblyDescription("DeviceSQL")] [assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("DeviceSQL")] +[assembly: AssemblyCompany("CloudSonix")] [assembly: AssemblyProduct("DeviceSQL")] -[assembly: AssemblyCopyright("2017 DeviceSQL")] +[assembly: AssemblyCopyright("© CloudSonix. All rights reserved.")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] +[assembly: AssemblyKeyFileAttribute("../DeviceSQL-Key.snk")] // Version information for an assembly consists of the following four values: // diff --git a/DeviceSQL/Schemas/ChannelManager.sql b/DeviceSQL/Schemas/ChannelManager.sql deleted file mode 100644 index c37a8ce..0000000 --- a/DeviceSQL/Schemas/ChannelManager.sql +++ /dev/null @@ -1 +0,0 @@ -CREATE SCHEMA [ChannelManager] diff --git a/DeviceSQL/Schemas/DeviceManager.sql b/DeviceSQL/Schemas/DeviceManager.sql deleted file mode 100644 index c45b236..0000000 --- a/DeviceSQL/Schemas/DeviceManager.sql +++ /dev/null @@ -1 +0,0 @@ -CREATE SCHEMA [DeviceManager] diff --git a/DeviceSQL/Schemas/ModbusMaster.sql b/DeviceSQL/Schemas/ModbusMaster.sql deleted file mode 100644 index ced978d..0000000 --- a/DeviceSQL/Schemas/ModbusMaster.sql +++ /dev/null @@ -1 +0,0 @@ -CREATE SCHEMA [MODBUSMaster] diff --git a/DeviceSQL/Schemas/Watchdog.sql b/DeviceSQL/Schemas/Watchdog.sql deleted file mode 100644 index b7bb5f6..0000000 --- a/DeviceSQL/Schemas/Watchdog.sql +++ /dev/null @@ -1 +0,0 @@ -CREATE SCHEMA [Watchdog] diff --git a/DeviceSQL/Tables/FlowSQL/DifferentialPressureMeterProcessVariableAlarms.sql b/DeviceSQL/Tables/FlowSQL/DifferentialPressureMeterProcessVariableAlarms.sql deleted file mode 100644 index 0b47bbc..0000000 --- a/DeviceSQL/Tables/FlowSQL/DifferentialPressureMeterProcessVariableAlarms.sql +++ /dev/null @@ -1,26 +0,0 @@ -CREATE TABLE [FlowSQL].[DifferentialPressureMeterProcessVariableAlarms] ( - [MeterId] BIGINT NOT NULL, - [DateTimeStamp] DATETIMEOFFSET (7) NOT NULL, - [DifferentialPressure.LowLowAlarm] FLOAT (53) NOT NULL, - [DifferentialPressure.LowAlarm] FLOAT (53) NOT NULL, - [DifferentialPressure.HighAlarm] FLOAT (53) NOT NULL, - [DifferentialPressure.HighHighAlarm] FLOAT (53) NOT NULL, - [DifferentialPressure.RateAlarm] FLOAT (53) NOT NULL, - [DifferentialPressure.Deadband] FLOAT (53) NOT NULL, - [StaticPressure.LowLowAlarm] FLOAT (53) NOT NULL, - [StaticPressure.LowAlarm] FLOAT (53) NOT NULL, - [StaticPressure.HighAlarm] FLOAT (53) NOT NULL, - [StaticPressure.HighHighAlarm] FLOAT (53) NOT NULL, - [StaticPressure.RateAlarm] FLOAT (53) NOT NULL, - [StaticPressure.Deadband] FLOAT (53) NOT NULL, - [Temperature.LowLowAlarm] FLOAT (53) NOT NULL, - [Temperature.LowAlarm] FLOAT (53) NOT NULL, - [Temperature.HighAlarm] FLOAT (53) NOT NULL, - [Temperature.HighHighAlarm] FLOAT (53) NOT NULL, - [Temperature.RateAlarm] FLOAT (53) NOT NULL, - [Temperature.Deadband] FLOAT (53) NOT NULL, - [RowVersion] ROWVERSION NULL, - CONSTRAINT [PK_DifferentialPressureMeterProcessVariableAlarms] PRIMARY KEY CLUSTERED ([MeterId] ASC, [DateTimeStamp] ASC), - CONSTRAINT [FK_DifferentialPressureMeterProcessVariableAlarms_Meters] FOREIGN KEY ([MeterId]) REFERENCES [FlowSQL].[Meters] ([Id]) -); - diff --git a/DeviceSQL/Tables/FlowSQL/DifferentialPressureMeterProcessVariableValues.sql b/DeviceSQL/Tables/FlowSQL/DifferentialPressureMeterProcessVariableValues.sql deleted file mode 100644 index 3d11d58..0000000 --- a/DeviceSQL/Tables/FlowSQL/DifferentialPressureMeterProcessVariableValues.sql +++ /dev/null @@ -1,41 +0,0 @@ -CREATE TABLE [FlowSQL].[DifferentialPressureMeterProcessVariableValues] ( - [MeterId] BIGINT NOT NULL, - [DateTimeStamp] DATETIMEOFFSET (7) NOT NULL, - [DifferentialPressure.AlarmingEnabled] BIT NOT NULL, - [DifferentialPressure.ScanningEnabled] BIT NOT NULL, - [DifferentialPressure.ScanPeriod] INT NOT NULL, - [DifferentialPressure.Filter] INT NOT NULL, - [DifferentialPressure.Units] VARCHAR (30) NOT NULL, - [DifferentialPressure.Raw.Value] FLOAT (53) NOT NULL, - [DifferentialPressure.EU.Value] FLOAT (53) NOT NULL, - [DifferentialPressure.Raw.ZeroValue] INT NOT NULL, - [DifferentialPressure.Raw.SpanValue] INT NOT NULL, - [DifferentialPressure.EU.ZeroValue] FLOAT (53) NOT NULL, - [DifferentialPressure.EU.SpanValue] FLOAT (53) NOT NULL, - [StaticPressure.AlarmingEnabled] BIT NOT NULL, - [StaticPressure.ScanningEnabled] BIT NOT NULL, - [StaticPressure.ScanPeriod] INT NOT NULL, - [StaticPressure.Filter] INT NOT NULL, - [StaticPressure.Units] VARCHAR (30) NOT NULL, - [StaticPressure.Raw.Value] FLOAT (53) NOT NULL, - [StaticPressure.EU.Value] FLOAT (53) NOT NULL, - [StaticPressure.Raw.ZeroValue] INT NOT NULL, - [StaticPressure.Raw.SpanValue] INT NOT NULL, - [StaticPressure.EU.ZeroValue] FLOAT (53) NOT NULL, - [StaticPressure.EU.SpanValue] FLOAT (53) NOT NULL, - [Temperature.AlarmingEnabled] BIT NOT NULL, - [Temperature.ScanningEnabled] BIT NOT NULL, - [Temperature.ScanPeriod] INT NOT NULL, - [Temperature.Filter] INT NOT NULL, - [Temperature.Units] VARCHAR (30) NOT NULL, - [Temperature.Raw.Value] FLOAT (53) NOT NULL, - [Temperature.EU.Value] FLOAT (53) NOT NULL, - [Temperature.Raw.ZeroValue] INT NOT NULL, - [Temperature.Raw.SpanValue] INT NOT NULL, - [Temperature.EU.ZeroValue] FLOAT (53) NOT NULL, - [Temperature.EU.SpanValue] FLOAT (53) NOT NULL, - [RowVersion] ROWVERSION NULL, - CONSTRAINT [PK_DifferentialPressureMeterProcessVariableValues] PRIMARY KEY CLUSTERED ([MeterId] ASC, [DateTimeStamp] ASC), - CONSTRAINT [FK_DifferentialPressureMeterProcessVariableValues_Meters] FOREIGN KEY ([MeterId]) REFERENCES [FlowSQL].[Meters] ([Id]) -); - diff --git a/DeviceSQL/Tables/FlowSQL/MeterAttributes.sql b/DeviceSQL/Tables/FlowSQL/MeterAttributes.sql deleted file mode 100644 index c384b5c..0000000 --- a/DeviceSQL/Tables/FlowSQL/MeterAttributes.sql +++ /dev/null @@ -1,9 +0,0 @@ -CREATE TABLE [FlowSQL].[MeterAttributes] ( - [MeterId] BIGINT NOT NULL, - [AttributeName] VARCHAR (255) NOT NULL, - [AttributeValue] SQL_VARIANT NULL, - [RowVersion] ROWVERSION NULL, - CONSTRAINT [PK_MeterAttributes] PRIMARY KEY CLUSTERED ([MeterId] ASC, [AttributeName] ASC), - CONSTRAINT [FK_MeterAttributes_Meters] FOREIGN KEY ([MeterId]) REFERENCES [FlowSQL].[Meters] ([Id]) -); - diff --git a/DeviceSQL/Tables/FlowSQL/Meters.sql b/DeviceSQL/Tables/FlowSQL/Meters.sql deleted file mode 100644 index a857346..0000000 --- a/DeviceSQL/Tables/FlowSQL/Meters.sql +++ /dev/null @@ -1,8 +0,0 @@ -CREATE TABLE [FlowSQL].[Meters] ( - [Id] BIGINT IDENTITY (1, 1) NOT NULL, - [Name] VARCHAR (255) NOT NULL, - [Description] VARCHAR (255) NOT NULL, - [RowVersion] ROWVERSION NULL, - CONSTRAINT [PK_Meters] PRIMARY KEY CLUSTERED ([Id] ASC) -); - diff --git a/DeviceSQL/Tables/ROCMaster/FloBoss.103.MeterHistory.sql b/DeviceSQL/Tables/ROCMaster/FloBoss.103.MeterHistory.sql deleted file mode 100644 index 4e36bf1..0000000 --- a/DeviceSQL/Tables/ROCMaster/FloBoss.103.MeterHistory.sql +++ /dev/null @@ -1,16 +0,0 @@ -CREATE TABLE [ROCMaster].[FloBoss.103.MeterHistory] ( - [Id] BIGINT IDENTITY (1, 1) NOT NULL, - [ROCMeterId] INT NOT NULL, - [FlowDuration] [ROCMaster].[HistoryRecord] NOT NULL, - [DIfferentialPressure] [ROCMaster].[HistoryRecord] NOT NULL, - [StaticPressure] [ROCMaster].[HistoryRecord] NOT NULL, - [Temperature] [ROCMaster].[HistoryRecord] NOT NULL, - [IMV] [ROCMaster].[HistoryRecord] NOT NULL, - [HwPf] [ROCMaster].[HistoryRecord] NOT NULL, - [Energy] [ROCMaster].[HistoryRecord] NOT NULL, - [Volume] [ROCMaster].[HistoryRecord] NOT NULL, - [RowVersion] ROWVERSION NULL, - CONSTRAINT [PK_FloBoss.103.MeterHistory] PRIMARY KEY CLUSTERED ([Id] ASC), - CONSTRAINT [FK_FloBoss.103.MeterHistory_ROCMeters] FOREIGN KEY ([Id]) REFERENCES [ROCMaster].[ROCMeters] ([Id]) -); - diff --git a/DeviceSQL/Tables/ROCMaster/FloBoss.103.MeterProcessVariableAlarms.sql b/DeviceSQL/Tables/ROCMaster/FloBoss.103.MeterProcessVariableAlarms.sql deleted file mode 100644 index 75a5af6..0000000 --- a/DeviceSQL/Tables/ROCMaster/FloBoss.103.MeterProcessVariableAlarms.sql +++ /dev/null @@ -1,26 +0,0 @@ -CREATE TABLE [ROCMaster].[FloBoss.103.MeterProcessVariableAlarms] ( - [ROCMeterId] BIGINT NOT NULL, - [DateTimeStamp] DATETIMEOFFSET (7) CONSTRAINT [DF_FloBoss.103.MeterProcessVariableAlarms_DateTimeStamp] DEFAULT (sysdatetime()) NOT NULL, - [DifferentialPressure.LowLowAlarm] [ROCMaster].[Parameter] NOT NULL, - [DifferentialPressure.LowAlarm] [ROCMaster].[Parameter] NOT NULL, - [DifferentialPressure.HighAlarm] [ROCMaster].[Parameter] NOT NULL, - [DifferentialPressure.HighHighAlarm] [ROCMaster].[Parameter] NOT NULL, - [DifferentialPressure.RateAlarm] [ROCMaster].[Parameter] NOT NULL, - [DifferentialPressure.Deadband] [ROCMaster].[Parameter] NOT NULL, - [StaticPressure.LowLowAlarm] [ROCMaster].[Parameter] NOT NULL, - [StaticPressure.LowAlarm] [ROCMaster].[Parameter] NOT NULL, - [StaticPressure.HighAlarm] [ROCMaster].[Parameter] NOT NULL, - [StaticPressure.HighHighAlarm] [ROCMaster].[Parameter] NOT NULL, - [StaticPressure.RateAlarm] [ROCMaster].[Parameter] NOT NULL, - [StaticPressure.Deadband] [ROCMaster].[Parameter] NOT NULL, - [Temperature.LowLowAlarm] [ROCMaster].[Parameter] NOT NULL, - [Temperature.LowAlarm] [ROCMaster].[Parameter] NOT NULL, - [Temperature.HighAlarm] [ROCMaster].[Parameter] NOT NULL, - [Temperature.HighHighAlarm] [ROCMaster].[Parameter] NOT NULL, - [Temperature.RateAlarm] [ROCMaster].[Parameter] NOT NULL, - [Temperature.Deadband] [ROCMaster].[Parameter] NOT NULL, - [RowVersion] ROWVERSION NOT NULL, - CONSTRAINT [PK_FloBoss.103.MeterProcessVariableAlarms_1] PRIMARY KEY CLUSTERED ([ROCMeterId] ASC), - CONSTRAINT [FK_FloBoss.103.MeterProcessVariableAlarms_ROCMeters] FOREIGN KEY ([ROCMeterId]) REFERENCES [ROCMaster].[ROCMeters] ([Id]) -); - diff --git a/DeviceSQL/Tables/ROCMaster/FloBoss.103.MeterProcessVariables.sql b/DeviceSQL/Tables/ROCMaster/FloBoss.103.MeterProcessVariables.sql deleted file mode 100644 index 938d01d..0000000 --- a/DeviceSQL/Tables/ROCMaster/FloBoss.103.MeterProcessVariables.sql +++ /dev/null @@ -1,46 +0,0 @@ -CREATE TABLE [ROCMaster].[FloBoss.103.MeterProcessVariables] ( - [ROCMeterId] BIGINT NOT NULL, - [DateTimeStamp] DATETIMEOFFSET (7) CONSTRAINT [DF_FloBoss.103.MeterProcessVariables_DateTimeStamp] DEFAULT (sysdatetime()) NOT NULL, - [DifferentialPressure.AlarmingEnabled] [ROCMaster].[Parameter] NOT NULL, - [DifferentialPressure.ScanningEnabled] [ROCMaster].[Parameter] NOT NULL, - [DifferentialPressure.ScanPeriod] [ROCMaster].[Parameter] NOT NULL, - [DifferentialPressure.Filter] [ROCMaster].[Parameter] NOT NULL, - [DifferentialPressure.Units] [ROCMaster].[Parameter] NOT NULL, - [DifferentialPressure.Raw.Value] [ROCMaster].[Parameter] NOT NULL, - [DifferentialPressure.EU.Value] [ROCMaster].[Parameter] NOT NULL, - [DifferentialPressure.Raw.ZeroValue] [ROCMaster].[Parameter] NOT NULL, - [DifferentialPressure.Raw.SpanValue] [ROCMaster].[Parameter] NOT NULL, - [[DifferentialPressure.EU.ZeroValue] [ROCMaster].[Parameter] NOT NULL, - [DifferentialPressure.EU.SpanValue] [ROCMaster].[Parameter] NOT NULL, - [StaticPressure.AlarmingEnabled] [ROCMaster].[Parameter] NOT NULL, - [StaticPressurePressure.ScanningEnabled] [ROCMaster].[Parameter] NOT NULL, - [StaticPressurePressure.ScanPeriod] [ROCMaster].[Parameter] NOT NULL, - [StaticPressurePressure.Filter] [ROCMaster].[Parameter] NOT NULL, - [StaticPressurePressure.Units] [ROCMaster].[Parameter] NOT NULL, - [StaticPressure.Raw.Value] [ROCMaster].[Parameter] NOT NULL, - [StaticPressure.EU.Value] [ROCMaster].[Parameter] NOT NULL, - [StaticPressure.Raw.ZeroValue] [ROCMaster].[Parameter] NOT NULL, - [StaticPressure.Raw.SpanValue] [ROCMaster].[Parameter] NOT NULL, - [StaticPressure.EU.ZeroValue] [ROCMaster].[Parameter] NOT NULL, - [StaticPressure.EU.SpanValue] [ROCMaster].[Parameter] NOT NULL, - [Temperature.AlarmingEnabled] [ROCMaster].[Parameter] NOT NULL, - [Temperature.ScanningEnabled] [ROCMaster].[Parameter] NOT NULL, - [Temperature.ScanPeriod] [ROCMaster].[Parameter] NOT NULL, - [Temperature.Filter] [ROCMaster].[Parameter] NOT NULL, - [Temperature.Units] [ROCMaster].[Parameter] NOT NULL, - [Temperature.Raw.Value] [ROCMaster].[Parameter] NOT NULL, - [Temperature.EU.Value] [ROCMaster].[Parameter] NOT NULL, - [Temperature.Raw.ZeroValue] [ROCMaster].[Parameter] NOT NULL, - [Temperature.Raw.SpanValue] [ROCMaster].[Parameter] NOT NULL, - [Temperature.EU.ZeroValue] [ROCMaster].[Parameter] NOT NULL, - [Temperature.EU.SpanValue] [ROCMaster].[Parameter] NOT NULL, - [RowVersion] ROWVERSION NULL, - CONSTRAINT [PK_FloBoss.103.MeterProcessVariables_1] PRIMARY KEY CLUSTERED ([ROCMeterId] ASC), - CONSTRAINT [FK_FloBoss.103.MeterProcessVariables_ROCMeters] FOREIGN KEY ([ROCMeterId]) REFERENCES [ROCMaster].[ROCMeters] ([Id]) -); - - -GO -CREATE NONCLUSTERED INDEX [IX_FloBoss.103.MeterProcessVariables] - ON [ROCMaster].[FloBoss.103.MeterProcessVariables]([ROCMeterId] ASC, [DateTimeStamp] ASC); - diff --git a/DeviceSQL/Tables/ROCMaster/ROCChannelGroup.sql b/DeviceSQL/Tables/ROCMaster/ROCChannelGroup.sql deleted file mode 100644 index 6cc901d..0000000 --- a/DeviceSQL/Tables/ROCMaster/ROCChannelGroup.sql +++ /dev/null @@ -1,10 +0,0 @@ -CREATE TABLE [ROCMaster].[ROCChannelGroup] ( - [Id] INT IDENTITY (1, 1) NOT NULL, - [Name] VARCHAR (255) NOT NULL, - [Timeout] INT NOT NULL, - [HostAddress] TINYINT NOT NULL, - [HostGroup] TINYINT NOT NULL, - [RowVersion] ROWVERSION NULL, - CONSTRAINT [PK_ROCChannelGroup] PRIMARY KEY CLUSTERED ([Id] ASC) -); - diff --git a/DeviceSQL/Tables/ROCMaster/ROCChannels.sql b/DeviceSQL/Tables/ROCMaster/ROCChannels.sql deleted file mode 100644 index cc2326d..0000000 --- a/DeviceSQL/Tables/ROCMaster/ROCChannels.sql +++ /dev/null @@ -1,12 +0,0 @@ -CREATE TABLE [ROCMaster].[ROCChannels] ( - [Id] BIGINT IDENTITY (1, 1) NOT NULL, - [Name] VARCHAR (1024) NOT NULL, - [IsSerialPortChannel] BIT NOT NULL, - [PortName] VARCHAR (8) NOT NULL, - [BaudRate] INT NOT NULL, - [HostName] VARCHAR (255) NOT NULL, - [HostPort] INT NOT NULL, - [RowVersion] ROWVERSION NULL, - CONSTRAINT [PK_ROCChannels] PRIMARY KEY CLUSTERED ([Id] ASC) -); - diff --git a/DeviceSQL/Tables/ROCMaster/ROCMeters.sql b/DeviceSQL/Tables/ROCMaster/ROCMeters.sql deleted file mode 100644 index 68263d5..0000000 --- a/DeviceSQL/Tables/ROCMaster/ROCMeters.sql +++ /dev/null @@ -1,14 +0,0 @@ -CREATE TABLE [ROCMaster].[ROCMeters] ( - [Id] BIGINT NOT NULL, - [Name] VARCHAR (255) NOT NULL, - [Description] VARCHAR (255) NOT NULL, - [ROCChannelId] BIGINT NOT NULL, - [ROCChannelGroupId] INT NOT NULL, - [DeviceAddress] TINYINT NOT NULL, - [DeviceGroup] TINYINT NOT NULL, - [RowVersion] ROWVERSION NULL, - CONSTRAINT [PK_ROCMeters] PRIMARY KEY CLUSTERED ([Id] ASC), - CONSTRAINT [FK_ROCMeters_ROCChannelGroup] FOREIGN KEY ([ROCChannelGroupId]) REFERENCES [ROCMaster].[ROCChannelGroup] ([Id]), - CONSTRAINT [FK_ROCMeters_ROCChannels] FOREIGN KEY ([ROCChannelId]) REFERENCES [ROCMaster].[ROCChannels] ([Id]) -); - diff --git a/DeviceSQL/Watchdog/Worker.cs b/DeviceSQL/Watchdog/Worker.cs deleted file mode 100644 index ebd9d2e..0000000 --- a/DeviceSQL/Watchdog/Worker.cs +++ /dev/null @@ -1,144 +0,0 @@ -#region Imported Types - -using DeviceSQL.Device; -using DeviceSQL.IO.Channels; -using DeviceSQL.IOC; -using DeviceSQL.ServiceLocation; -using System; -using System.Collections.Concurrent; -using System.Diagnostics; -using System.Linq; -using System.Threading; - -#endregion - -namespace DeviceSQL.Watchdog -{ - public static class Worker - { - #region Fields - - private static volatile bool isRunning; - private static volatile bool stopRequested; - private static volatile int watchdogCounter; - public readonly static BlockingCollection Channels = new BlockingCollection(); - public readonly static BlockingCollection Devices = new BlockingCollection(); - public readonly static SimpleIOC MainContainer = SimpleIOC.Default; - - #endregion - - #region Properties - - public static int WatchdogCounter - { - get - { - return watchdogCounter; - } - } - - public static bool IsAlive - { - get - { - return isRunning; - } - } - - #endregion - - #region Watchdog Methods - - public static void Run() - { - if (isRunning) - { - return; - } - stopRequested = false; - try - { - ServiceLocator.SetLocatorProvider(() => MainContainer); - MainContainer.Register>(() => { return Channels; }); - MainContainer.Register>(() => { return Devices; }); - - while (!stopRequested) - { - isRunning = true; - if (MainContainer != SimpleIOC.Default) - { - Trace.TraceWarning("SimpleIOC \"Default\" object reference changed"); - } - if (Channels != MainContainer.GetInstance>()) - { - Trace.TraceWarning("Channels object reference changed"); - } - if (Devices != MainContainer.GetInstance>()) - { - Trace.TraceWarning("Devices object reference changed"); - } - if (watchdogCounter >= (int.MaxValue - 1)) - { - watchdogCounter = 0; - } - else - { - watchdogCounter++; - } - TimedThreadBlocker.Wait(300); - } - } - catch (ThreadAbortException taex) - { - Trace.TraceError(string.Format("Watchdog thread aborted: {0}", taex.Message)); - } - finally - { - if (isRunning) - { - isRunning = false; - var channelList = Channels.ToList(); - var deviceList = Devices.ToList(); - channelList.ToList().ForEach((channel) => - { - try - { - channel.Dispose(); - Channels.TryTake(out channel); - } - catch (Exception ex) - { - Trace.TraceError(string.Format("Error removing channel: {0}", ex.Message)); - } - }); - deviceList.ToList().ForEach((device) => - { - try - { - Devices.TryTake(out device); - } - catch (Exception ex) - { - Trace.TraceError(string.Format("Error removing device: {0}", ex.Message)); - } - }); - MainContainer.Unregister>(); - MainContainer.Unregister>(); - } - } - - } - - public static void Stop() - { - while (isRunning) - { - stopRequested = true; - TimedThreadBlocker.Wait(100); - } - isRunning = false; - } - - #endregion - } -} diff --git a/ReadMe.md b/ReadMe.md index ab12f0f..bbd551d 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -6,4 +6,4 @@ [Version 1.0 Now Available for Download](https://github.com/jasonrichardcraig/DeviceSQL/tree/master/Version%201.0 "1.0") -#### Support (Mountain Time): 403-618-6945 | Jason.Craig@Outlook.com | Skype - JasonRichardCraig +#### Support (Eastern Standard Time): +1-587-731-1776 | Jason.Craig@Outlook.com | Skype - JasonRichardCraig diff --git a/Version 1.0/ReadMe.md b/Version 1.0/ReadMe.md index f4ff6c5..e9bfab3 100644 --- a/Version 1.0/ReadMe.md +++ b/Version 1.0/ReadMe.md @@ -17,4 +17,4 @@ ##### CREATE LOGIN [DeviceSqlClrLogin] FROM ASYMMETRIC KEY [DeviceSqlKey] ##### GRANT UNSAFE ASSEMBLY TO [DeviceSqlClrLogin] - +You must enable the Lock Pages In Memory option: https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/enable-the-lock-pages-in-memory-option-windows?view=sql-server-2017