%PDF- %PDF-
Direktori : /www/old2/_music/diplomka/ |
Current File : /www/old2/_music/diplomka/datapoints_refactor.patch |
Index: ConfigApp.Logic/Bus2DatapointHelper.cs =================================================================== --- ConfigApp.Logic/Bus2DatapointHelper.cs (revision 3381) +++ ConfigApp.Logic/Bus2DatapointHelper.cs (working copy) @@ -1,129 +0,0 @@ -using System.Linq; -using Honeywell.MBEMEA.ConfigApp.Data; - -namespace Honeywell.MBEMEA.ConfigApp.Logic -{ - public static class Bus2DatapointHelper - { - private const string Bus2DeviceType = "BUS2DEVICE"; - private const string Bus2IoType = "BUS2IO"; - - /// <summary> - /// Method for saving BUS2 devices datapoint information - /// </summary> - public static void SaveBus2Devices() - { - //SaveBus22RelaisModules(); - SaveBus2HwDevices(); - } - - /// <summary> - /// Helper method for defining base datapoint number of device - /// </summary> - /// <param name="busNumber">Number of BUS2 controller</param> - /// <param name="deviceAddress">Adderee of device on controller</param> - /// <returns>Datapoint number for device</returns> - private static int GetBaseDatapoint(int busNumber, int deviceAddress) - { - // Formula by Karsten Stock - return 10000 + ((busNumber - 1)*(17*64)) + (17*deviceAddress); - } - - /// <summary> - /// Method for saving BUS2 2-Relay module - /// </summary> - private static void SaveBus22RelaisModules() - { - foreach (var device in InternalDataStore.DataSet.HWBus22RelaisInputModule) - { - var row = InternalDataStore.DataSet.DatapointNumbers.NewDatapointNumbersRow(); - var parent = InternalDataStore.DataSet.HWBus2BusController.FirstOrDefault(p => p.UID == device.HardwareDeviceRow.ParentDeviceUID); - if (parent != null) - { - int baseDataPoint = GetBaseDatapoint(parent.BusNumber, - device.HardwareDeviceRow.Address); - row.ItemType = "Bus2Device"; - row.ItemUID = device.UID; - row.Name = device.HardwareDeviceRow.Name; - row.DatapointNumber = baseDataPoint; - row.DatapointType = Bus2DeviceType; - InternalDataStore.DataSet.DatapointNumbers.AddDatapointNumbersRow(row); - - // Inputs && outputs - InsertInputs(device.UID, baseDataPoint); - InsertOutputs(device.UID, baseDataPoint); - } - } - } - - /// <summary> - /// Experimental method for saving all BUS2 hardware devices the same way - /// </summary> - private static void SaveBus2HwDevices() - { - var controllers = from p in InternalDataStore.DataSet.HWBus2BusController select p.UID; - var devices = InternalDataStore.DataSet.HardwareDevice.Where(p => !p.IsParentDeviceUIDNull() && controllers.Contains(p.ParentDeviceUID)); - foreach (var device in devices) - { - var row = InternalDataStore.DataSet.DatapointNumbers.NewDatapointNumbersRow(); - var parent = InternalDataStore.DataSet.HWBus2BusController.FirstOrDefault(p => p.UID == device.ParentDeviceUID); - if (parent != null) - { - int baseDataPoint = GetBaseDatapoint(parent.BusNumber, - device.Address); - row.ItemType = "Bus2Device"; - row.ItemUID = device.UID; - row.Name = device.Name; - row.DatapointNumber = baseDataPoint; - row.DatapointType = Bus2DeviceType; - InternalDataStore.DataSet.DatapointNumbers.AddDatapointNumbersRow(row); - - // Inputs && outputs - InsertInputs(device.UID, baseDataPoint); - InsertOutputs(device.UID, baseDataPoint); - } - } - } - - private static void InsertOutputs(uint deviceUid, int baseDataPoint) - { - var outputs = - InternalDataStore.DataSet.LogicalDevice.Where( - p => !p.IsClassTypeNull() && p.HardwareDeviceUID == deviceUid && p.ClassType == "ccBusOutput"); - foreach (var output in outputs) - { - var row = InternalDataStore.DataSet.DatapointNumbers.NewDatapointNumbersRow(); - row.ItemType = "Bus2IO"; - row.ItemUID = output.UID; - row.Name = output.Name; - row.DatapointNumber = baseDataPoint + 5 + output.Number; - row.DatapointType = Bus2IoType; - - // Separate LEDs - if (row.Name.ToUpper().IndexOf("LED", System.StringComparison.Ordinal) >= 0) - { - row.DatapointNumber += 5; - } - - InternalDataStore.DataSet.DatapointNumbers.AddDatapointNumbersRow(row); - } - } - - private static void InsertInputs(uint deviceUid, int baseDataPoint) - { - var inputs = - InternalDataStore.DataSet.LogicalDevice.Where( - p => !p.IsClassTypeNull() && p.HardwareDeviceUID == deviceUid && p.ClassType == "ccBusInput"); - foreach (var input in inputs) - { - var row = InternalDataStore.DataSet.DatapointNumbers.NewDatapointNumbersRow(); - row.ItemType = "Bus2IO"; - row.ItemUID = input.UID; - row.Name = input.Name; - row.DatapointNumber = baseDataPoint + input.Number; - row.DatapointType = Bus2IoType; - InternalDataStore.DataSet.DatapointNumbers.AddDatapointNumbersRow(row); - } - } - } -} Index: ConfigApp.Logic/ConfigApp.Logic.csproj =================================================================== --- ConfigApp.Logic/ConfigApp.Logic.csproj (revision 3381) +++ ConfigApp.Logic/ConfigApp.Logic.csproj (working copy) @@ -93,9 +93,9 @@ <Reference Include="System.Xml" /> </ItemGroup> <ItemGroup> - <Compile Include="Bus2DatapointHelper.cs" /> + <Compile Include="Datapoints\Bus2DatapointHelper.cs" /> <Compile Include="DataLoader.cs" /> - <Compile Include="DatapointNumberHelper.cs" /> + <Compile Include="Datapoints\DatapointNumberHelper.cs" /> <Compile Include="DataTemplateManager.cs" /> <Compile Include="DataTemplateNames.cs" /> <Compile Include="DeviceCatalogue.cs" /> Index: ConfigApp.Logic/DataLoader.cs =================================================================== --- ConfigApp.Logic/DataLoader.cs (revision 3381) +++ ConfigApp.Logic/DataLoader.cs (working copy) @@ -13,6 +13,7 @@ using Honeywell.MBEMEA.Common.Interfaces; using Honeywell.MBEMEA.ConfigApp.Data; using Honeywell.MBEMEA.ConfigApp.Logic; +using Honeywell.MBEMEA.ConfigApp.Logic.Datapoints; using Honeywell.MBEMEA.ServiceReferences; using Honeywell.MBEMEA.Common.DataManagers; using DevExpress.XtraEditors; @@ -299,7 +300,7 @@ row.ItemType = "Partition"; row.DatapointNumber = partition.DatapointNumber; row.Name = partition.Name; - row.DatapointType = "NA"; + row.DatapointType = "300070000"; InternalDataStore.DataSet.DatapointNumbers.AddDatapointNumbersRow(row); } @@ -312,7 +313,7 @@ row.ItemType = "DetectorGroup"; row.DatapointNumber = detectorGroup.DatapointNumber; row.Name = detectorGroup.PartitionMemberRow.Name; - row.DatapointType = "NA"; + row.DatapointType = "300070001"; InternalDataStore.DataSet.DatapointNumbers.AddDatapointNumbersRow(row); } @@ -325,7 +326,7 @@ row.ItemType = "Macro"; row.DatapointNumber = macroRow.DatapointNumber; row.Name = macroRow.Name; - row.DatapointType = "NA"; + row.DatapointType = "300070003"; InternalDataStore.DataSet.DatapointNumbers.AddDatapointNumbersRow(row); } @@ -338,7 +339,7 @@ row.ItemType = "Door"; row.DatapointNumber = doorGuard.DoorDatapointNumber; row.Name = doorGuard.HardwareDeviceRow.Name; - row.DatapointType = "NA"; + row.DatapointType = "300070002"; InternalDataStore.DataSet.DatapointNumbers.AddDatapointNumbersRow(row); } var identkeys = InternalDataStore.DataSet.HWBus2Identkey3.Where(p => !p.IsDoorDatapointNumberNull()); @@ -349,7 +350,7 @@ row.ItemType = "Door"; row.DatapointNumber = identkey.DoorDatapointNumber; row.Name = identkey.HardwareDeviceRow.Name; - row.DatapointType = "NA"; + row.DatapointType = "300070002"; InternalDataStore.DataSet.DatapointNumbers.AddDatapointNumbersRow(row); } var doorControllerModules = InternalDataStore.DataSet.HWBus2DoorControllerModule.Where(p => !p.IsDoorDatapointNumberNull()); @@ -360,7 +361,7 @@ row.ItemType = "Door"; row.DatapointNumber = doorControllerModule.DoorDatapointNumber; row.Name = doorControllerModule.HardwareDeviceRow.Name; - row.DatapointType = "NA"; + row.DatapointType = "300070002"; InternalDataStore.DataSet.DatapointNumbers.AddDatapointNumbersRow(row); } var rfDevices = Index: ConfigApp.Logic/DatapointNumberHelper.cs =================================================================== --- ConfigApp.Logic/DatapointNumberHelper.cs (revision 3381) +++ ConfigApp.Logic/DatapointNumberHelper.cs (working copy) @@ -1,139 +0,0 @@ -using Honeywell.MBEMEA.ConfigApp.Data; -using System.Linq; - -namespace Honeywell.MBEMEA.ConfigApp.Logic -{ - public static class DatapointNumberHelper - { - public const int PartitionStart = 1000; - public const int PartitionEnd = 1511; - public const int DetectorGroupStart = 1512; - public const int DetectorGroupEnd = 5607; - public const int DoorStart = 5608; - public const int DoorEnd = 6631; - public const int MacroStart = 6632; - public const int MacroEnd = 8631; - public const int WirelessDeviceBaseStart = 8640; - public const int WirelessDeviceBaseEnd = 9982; // 9999 - 17 because we need entire range for last device - - public static int GetPartitionNumber(int number = 0) - { - int retVal = PartitionStart; - if (number != 0 && IsPartitionNumberAvailable(number)) - { - return number; - } - while (!IsPartitionNumberAvailable(retVal) && retVal <= PartitionEnd) - { - retVal++; - } - return retVal; - } - - public static int GetDetectorGroupNumber(int number = 0) - { - int retVal = DetectorGroupStart; - if (number != 0 && IsDetectorGroupNumberAvailable(number)) - { - return number; - } - while (!IsDetectorGroupNumberAvailable(retVal) && retVal <= DetectorGroupEnd) - { - retVal++; - } - return retVal; - } - - public static int GetMacroNumber(int number = 0) - { - int retVal = MacroStart; - if (number != 0 && IsMacroNumberAvailable(number)) - { - return number; - } - while (!IsMacroNumberAvailable(retVal) && retVal <= MacroEnd) - { - retVal++; - } - return retVal; - } - - public static int GetDoorNumber(int number = 0) - { - int retVal = DoorStart; - if (number != 0 && IsDoorNumberAvailable(number)) - { - return number; - } - while (!IsDoorNumberAvailable(retVal) && retVal <= DoorEnd) - { - retVal++; - } - return retVal; - } - - public static int GetWirelessDeviceBaseNumber(int number = 0) - { - int retVal = WirelessDeviceBaseStart; - if (number != 0 && IsWirelessDeviceBaseNumberAvailable(number)) - { - return number; - } - while (!IsWirelessDeviceBaseNumberAvailable(retVal) && retVal <= WirelessDeviceBaseEnd) - { - retVal += 17; - } - return retVal; - } - - - - private static bool IsWirelessDeviceBaseNumberAvailable(int number) - { - bool retVal = - (InternalDataStore.DataSet.HWBus2Wireless4IOModule.Count(p => !p.IsDatapointNumberNull() && p.DatapointNumber == number) + - InternalDataStore.DataSet.HWBus2WirelessSmokeDetector.Count(p => !p.IsDatapointNumberNull() && p.DatapointNumber == number) + - InternalDataStore.DataSet.HWBus2WirelessViewguard.Count(p => !p.IsDatapointNumberNull() && p.DatapointNumber == number) - ) == 0 - && number >= WirelessDeviceBaseStart && number <= WirelessDeviceBaseEnd && (number - WirelessDeviceBaseStart) % 17 == 0; - return retVal; - } - - private static bool IsPartitionNumberAvailable(int number) - { - bool retVal = - InternalDataStore.DataSet.Partition.Count(p => !p.IsDatapointNumberNull() && p.DatapointNumber == number) == 0 - && number >= PartitionStart && number <= PartitionEnd; - return retVal; - } - - private static bool IsDetectorGroupNumberAvailable(int number) - { - bool retVal = - InternalDataStore.DataSet.DetectorGroup.Count(p => !p.IsDatapointNumberNull() && p.DatapointNumber == number) == 0 - && number >= DetectorGroupStart && number <= DetectorGroupEnd; - return retVal; - } - - private static bool IsMacroNumberAvailable(int number) - { - bool retVal = - InternalDataStore.DataSet.Macro.Count(p => !p.IsDatapointNumberNull() && p.DatapointNumber == number) == 0 - && number >= MacroStart && number <= MacroEnd; - return retVal; - } - - private static bool IsDoorNumberAvailable(int number) - { - bool retVal = - ( - InternalDataStore.DataSet.HWBus2DoorGuard.Count(p => !p.IsDoorDatapointNumberNull() && p.DoorDatapointNumber == number) + - InternalDataStore.DataSet.HWBus2DoorControllerModule.Count(p => !p.IsDoorDatapointNumberNull() && p.DoorDatapointNumber == number) + - InternalDataStore.DataSet.HWBus2Identkey3.Count(p => !p.IsDoorDatapointNumberNull() && p.DoorDatapointNumber == number) - ) == 0 - && number >= DoorStart && number <= DoorEnd; - return retVal; - } - - } -} Index: ConfigApp.Logic/Datapoints/Bus2DatapointHelper.cs =================================================================== --- ConfigApp.Logic/Datapoints/Bus2DatapointHelper.cs (revision 0) +++ ConfigApp.Logic/Datapoints/Bus2DatapointHelper.cs (working copy) @@ -0,0 +1,129 @@ +using System.Linq; +using Honeywell.MBEMEA.ConfigApp.Data; + +namespace Honeywell.MBEMEA.ConfigApp.Logic.Datapoints +{ + public static class Bus2DatapointHelper + { + private const string Bus2DeviceType = "BUS2DEVICE"; + private const string Bus2IoType = "BUS2IO"; + + /// <summary> + /// Method for saving BUS2 devices datapoint information + /// </summary> + public static void SaveBus2Devices() + { + //SaveBus22RelaisModules(); + SaveBus2HwDevices(); + } + + /// <summary> + /// Helper method for defining base datapoint number of device + /// </summary> + /// <param name="busNumber">Number of BUS2 controller</param> + /// <param name="deviceAddress">Adderee of device on controller</param> + /// <returns>Datapoint number for device</returns> + private static int GetBaseDatapoint(int busNumber, int deviceAddress) + { + // Formula by Karsten Stock + return 10000 + ((busNumber - 1)*(17*64)) + (17*deviceAddress); + } + + /// <summary> + /// Method for saving BUS2 2-Relay module + /// </summary> + private static void SaveBus22RelaisModules() + { + foreach (var device in InternalDataStore.DataSet.HWBus22RelaisInputModule) + { + var row = InternalDataStore.DataSet.DatapointNumbers.NewDatapointNumbersRow(); + var parent = InternalDataStore.DataSet.HWBus2BusController.FirstOrDefault(p => p.UID == device.HardwareDeviceRow.ParentDeviceUID); + if (parent != null) + { + int baseDataPoint = GetBaseDatapoint(parent.BusNumber, + device.HardwareDeviceRow.Address); + row.ItemType = "Bus2Device"; + row.ItemUID = device.UID; + row.Name = device.HardwareDeviceRow.Name; + row.DatapointNumber = baseDataPoint; + row.DatapointType = Bus2DeviceType; + InternalDataStore.DataSet.DatapointNumbers.AddDatapointNumbersRow(row); + + // Inputs && outputs + InsertInputs(device.UID, baseDataPoint); + InsertOutputs(device.UID, baseDataPoint); + } + } + } + + /// <summary> + /// Experimental method for saving all BUS2 hardware devices the same way + /// </summary> + private static void SaveBus2HwDevices() + { + var controllers = from p in InternalDataStore.DataSet.HWBus2BusController select p.UID; + var devices = InternalDataStore.DataSet.HardwareDevice.Where(p => !p.IsParentDeviceUIDNull() && controllers.Contains(p.ParentDeviceUID)); + foreach (var device in devices) + { + var row = InternalDataStore.DataSet.DatapointNumbers.NewDatapointNumbersRow(); + var parent = InternalDataStore.DataSet.HWBus2BusController.FirstOrDefault(p => p.UID == device.ParentDeviceUID); + if (parent != null) + { + int baseDataPoint = GetBaseDatapoint(parent.BusNumber, + device.Address); + row.ItemType = "Bus2Device"; + row.ItemUID = device.UID; + row.Name = device.Name; + row.DatapointNumber = baseDataPoint; + row.DatapointType = Bus2DeviceType; + InternalDataStore.DataSet.DatapointNumbers.AddDatapointNumbersRow(row); + + // Inputs && outputs + InsertInputs(device.UID, baseDataPoint); + InsertOutputs(device.UID, baseDataPoint); + } + } + } + + private static void InsertOutputs(uint deviceUid, int baseDataPoint) + { + var outputs = + InternalDataStore.DataSet.LogicalDevice.Where( + p => !p.IsClassTypeNull() && p.HardwareDeviceUID == deviceUid && p.ClassType == "ccBusOutput"); + foreach (var output in outputs) + { + var row = InternalDataStore.DataSet.DatapointNumbers.NewDatapointNumbersRow(); + row.ItemType = "Bus2IO"; + row.ItemUID = output.UID; + row.Name = output.Name; + row.DatapointNumber = baseDataPoint + 5 + output.Number; + row.DatapointType = Bus2IoType; + + // Separate LEDs + if (row.Name.ToUpper().IndexOf("LED", System.StringComparison.Ordinal) >= 0) + { + row.DatapointNumber += 5; + } + + InternalDataStore.DataSet.DatapointNumbers.AddDatapointNumbersRow(row); + } + } + + private static void InsertInputs(uint deviceUid, int baseDataPoint) + { + var inputs = + InternalDataStore.DataSet.LogicalDevice.Where( + p => !p.IsClassTypeNull() && p.HardwareDeviceUID == deviceUid && p.ClassType == "ccBusInput"); + foreach (var input in inputs) + { + var row = InternalDataStore.DataSet.DatapointNumbers.NewDatapointNumbersRow(); + row.ItemType = "Bus2IO"; + row.ItemUID = input.UID; + row.Name = input.Name; + row.DatapointNumber = baseDataPoint + input.Number; + row.DatapointType = Bus2IoType; + InternalDataStore.DataSet.DatapointNumbers.AddDatapointNumbersRow(row); + } + } + } +} Index: ConfigApp.Logic/Datapoints/DatapointNumberHelper.cs =================================================================== --- ConfigApp.Logic/Datapoints/DatapointNumberHelper.cs (revision 0) +++ ConfigApp.Logic/Datapoints/DatapointNumberHelper.cs (working copy) @@ -0,0 +1,139 @@ +using Honeywell.MBEMEA.ConfigApp.Data; +using System.Linq; + +namespace Honeywell.MBEMEA.ConfigApp.Logic.Datapoints +{ + public static class DatapointNumberHelper + { + public const int PartitionStart = 1000; + public const int PartitionEnd = 1511; + public const int DetectorGroupStart = 1512; + public const int DetectorGroupEnd = 5607; + public const int DoorStart = 5608; + public const int DoorEnd = 6631; + public const int MacroStart = 6632; + public const int MacroEnd = 8631; + public const int WirelessDeviceBaseStart = 8640; + public const int WirelessDeviceBaseEnd = 9982; // 9999 - 17 because we need entire range for last device + + public static int GetPartitionNumber(int number = 0) + { + int retVal = PartitionStart; + if (number != 0 && IsPartitionNumberAvailable(number)) + { + return number; + } + while (!IsPartitionNumberAvailable(retVal) && retVal <= PartitionEnd) + { + retVal++; + } + return retVal; + } + + public static int GetDetectorGroupNumber(int number = 0) + { + int retVal = DetectorGroupStart; + if (number != 0 && IsDetectorGroupNumberAvailable(number)) + { + return number; + } + while (!IsDetectorGroupNumberAvailable(retVal) && retVal <= DetectorGroupEnd) + { + retVal++; + } + return retVal; + } + + public static int GetMacroNumber(int number = 0) + { + int retVal = MacroStart; + if (number != 0 && IsMacroNumberAvailable(number)) + { + return number; + } + while (!IsMacroNumberAvailable(retVal) && retVal <= MacroEnd) + { + retVal++; + } + return retVal; + } + + public static int GetDoorNumber(int number = 0) + { + int retVal = DoorStart; + if (number != 0 && IsDoorNumberAvailable(number)) + { + return number; + } + while (!IsDoorNumberAvailable(retVal) && retVal <= DoorEnd) + { + retVal++; + } + return retVal; + } + + public static int GetWirelessDeviceBaseNumber(int number = 0) + { + int retVal = WirelessDeviceBaseStart; + if (number != 0 && IsWirelessDeviceBaseNumberAvailable(number)) + { + return number; + } + while (!IsWirelessDeviceBaseNumberAvailable(retVal) && retVal <= WirelessDeviceBaseEnd) + { + retVal += 17; + } + return retVal; + } + + + + private static bool IsWirelessDeviceBaseNumberAvailable(int number) + { + bool retVal = + (InternalDataStore.DataSet.HWBus2Wireless4IOModule.Count(p => !p.IsDatapointNumberNull() && p.DatapointNumber == number) + + InternalDataStore.DataSet.HWBus2WirelessSmokeDetector.Count(p => !p.IsDatapointNumberNull() && p.DatapointNumber == number) + + InternalDataStore.DataSet.HWBus2WirelessViewguard.Count(p => !p.IsDatapointNumberNull() && p.DatapointNumber == number) + ) == 0 + && number >= WirelessDeviceBaseStart && number <= WirelessDeviceBaseEnd && (number - WirelessDeviceBaseStart) % 17 == 0; + return retVal; + } + + private static bool IsPartitionNumberAvailable(int number) + { + bool retVal = + InternalDataStore.DataSet.Partition.Count(p => !p.IsDatapointNumberNull() && p.DatapointNumber == number) == 0 + && number >= PartitionStart && number <= PartitionEnd; + return retVal; + } + + private static bool IsDetectorGroupNumberAvailable(int number) + { + bool retVal = + InternalDataStore.DataSet.DetectorGroup.Count(p => !p.IsDatapointNumberNull() && p.DatapointNumber == number) == 0 + && number >= DetectorGroupStart && number <= DetectorGroupEnd; + return retVal; + } + + private static bool IsMacroNumberAvailable(int number) + { + bool retVal = + InternalDataStore.DataSet.Macro.Count(p => !p.IsDatapointNumberNull() && p.DatapointNumber == number) == 0 + && number >= MacroStart && number <= MacroEnd; + return retVal; + } + + private static bool IsDoorNumberAvailable(int number) + { + bool retVal = + ( + InternalDataStore.DataSet.HWBus2DoorGuard.Count(p => !p.IsDoorDatapointNumberNull() && p.DoorDatapointNumber == number) + + InternalDataStore.DataSet.HWBus2DoorControllerModule.Count(p => !p.IsDoorDatapointNumberNull() && p.DoorDatapointNumber == number) + + InternalDataStore.DataSet.HWBus2Identkey3.Count(p => !p.IsDoorDatapointNumberNull() && p.DoorDatapointNumber == number) + ) == 0 + && number >= DoorStart && number <= DoorEnd; + return retVal; + } + + } +} Index: ConfigApp.Logic/Datapoints/Bus2DatapointHelper.cs =================================================================== --- ConfigApp.Logic/Datapoints/Bus2DatapointHelper.cs (revision 0) +++ ConfigApp.Logic/Datapoints/Bus2DatapointHelper.cs (working copy) @@ -0,0 +1,129 @@ +using System.Linq; +using Honeywell.MBEMEA.ConfigApp.Data; + +namespace Honeywell.MBEMEA.ConfigApp.Logic.Datapoints +{ + public static class Bus2DatapointHelper + { + private const string Bus2DeviceType = "BUS2DEVICE"; + private const string Bus2IoType = "BUS2IO"; + + /// <summary> + /// Method for saving BUS2 devices datapoint information + /// </summary> + public static void SaveBus2Devices() + { + //SaveBus22RelaisModules(); + SaveBus2HwDevices(); + } + + /// <summary> + /// Helper method for defining base datapoint number of device + /// </summary> + /// <param name="busNumber">Number of BUS2 controller</param> + /// <param name="deviceAddress">Adderee of device on controller</param> + /// <returns>Datapoint number for device</returns> + private static int GetBaseDatapoint(int busNumber, int deviceAddress) + { + // Formula by Karsten Stock + return 10000 + ((busNumber - 1)*(17*64)) + (17*deviceAddress); + } + + /// <summary> + /// Method for saving BUS2 2-Relay module + /// </summary> + private static void SaveBus22RelaisModules() + { + foreach (var device in InternalDataStore.DataSet.HWBus22RelaisInputModule) + { + var row = InternalDataStore.DataSet.DatapointNumbers.NewDatapointNumbersRow(); + var parent = InternalDataStore.DataSet.HWBus2BusController.FirstOrDefault(p => p.UID == device.HardwareDeviceRow.ParentDeviceUID); + if (parent != null) + { + int baseDataPoint = GetBaseDatapoint(parent.BusNumber, + device.HardwareDeviceRow.Address); + row.ItemType = "Bus2Device"; + row.ItemUID = device.UID; + row.Name = device.HardwareDeviceRow.Name; + row.DatapointNumber = baseDataPoint; + row.DatapointType = Bus2DeviceType; + InternalDataStore.DataSet.DatapointNumbers.AddDatapointNumbersRow(row); + + // Inputs && outputs + InsertInputs(device.UID, baseDataPoint); + InsertOutputs(device.UID, baseDataPoint); + } + } + } + + /// <summary> + /// Experimental method for saving all BUS2 hardware devices the same way + /// </summary> + private static void SaveBus2HwDevices() + { + var controllers = from p in InternalDataStore.DataSet.HWBus2BusController select p.UID; + var devices = InternalDataStore.DataSet.HardwareDevice.Where(p => !p.IsParentDeviceUIDNull() && controllers.Contains(p.ParentDeviceUID)); + foreach (var device in devices) + { + var row = InternalDataStore.DataSet.DatapointNumbers.NewDatapointNumbersRow(); + var parent = InternalDataStore.DataSet.HWBus2BusController.FirstOrDefault(p => p.UID == device.ParentDeviceUID); + if (parent != null) + { + int baseDataPoint = GetBaseDatapoint(parent.BusNumber, + device.Address); + row.ItemType = "Bus2Device"; + row.ItemUID = device.UID; + row.Name = device.Name; + row.DatapointNumber = baseDataPoint; + row.DatapointType = Bus2DeviceType; + InternalDataStore.DataSet.DatapointNumbers.AddDatapointNumbersRow(row); + + // Inputs && outputs + InsertInputs(device.UID, baseDataPoint); + InsertOutputs(device.UID, baseDataPoint); + } + } + } + + private static void InsertOutputs(uint deviceUid, int baseDataPoint) + { + var outputs = + InternalDataStore.DataSet.LogicalDevice.Where( + p => !p.IsClassTypeNull() && p.HardwareDeviceUID == deviceUid && p.ClassType == "ccBusOutput"); + foreach (var output in outputs) + { + var row = InternalDataStore.DataSet.DatapointNumbers.NewDatapointNumbersRow(); + row.ItemType = "Bus2IO"; + row.ItemUID = output.UID; + row.Name = output.Name; + row.DatapointNumber = baseDataPoint + 5 + output.Number; + row.DatapointType = Bus2IoType; + + // Separate LEDs + if (row.Name.ToUpper().IndexOf("LED", System.StringComparison.Ordinal) >= 0) + { + row.DatapointNumber += 5; + } + + InternalDataStore.DataSet.DatapointNumbers.AddDatapointNumbersRow(row); + } + } + + private static void InsertInputs(uint deviceUid, int baseDataPoint) + { + var inputs = + InternalDataStore.DataSet.LogicalDevice.Where( + p => !p.IsClassTypeNull() && p.HardwareDeviceUID == deviceUid && p.ClassType == "ccBusInput"); + foreach (var input in inputs) + { + var row = InternalDataStore.DataSet.DatapointNumbers.NewDatapointNumbersRow(); + row.ItemType = "Bus2IO"; + row.ItemUID = input.UID; + row.Name = input.Name; + row.DatapointNumber = baseDataPoint + input.Number; + row.DatapointType = Bus2IoType; + InternalDataStore.DataSet.DatapointNumbers.AddDatapointNumbersRow(row); + } + } + } +} Index: ConfigApp.Logic/Datapoints/DatapointNumberHelper.cs =================================================================== --- ConfigApp.Logic/Datapoints/DatapointNumberHelper.cs (revision 0) +++ ConfigApp.Logic/Datapoints/DatapointNumberHelper.cs (working copy) @@ -0,0 +1,139 @@ +using Honeywell.MBEMEA.ConfigApp.Data; +using System.Linq; + +namespace Honeywell.MBEMEA.ConfigApp.Logic.Datapoints +{ + public static class DatapointNumberHelper + { + public const int PartitionStart = 1000; + public const int PartitionEnd = 1511; + public const int DetectorGroupStart = 1512; + public const int DetectorGroupEnd = 5607; + public const int DoorStart = 5608; + public const int DoorEnd = 6631; + public const int MacroStart = 6632; + public const int MacroEnd = 8631; + public const int WirelessDeviceBaseStart = 8640; + public const int WirelessDeviceBaseEnd = 9982; // 9999 - 17 because we need entire range for last device + + public static int GetPartitionNumber(int number = 0) + { + int retVal = PartitionStart; + if (number != 0 && IsPartitionNumberAvailable(number)) + { + return number; + } + while (!IsPartitionNumberAvailable(retVal) && retVal <= PartitionEnd) + { + retVal++; + } + return retVal; + } + + public static int GetDetectorGroupNumber(int number = 0) + { + int retVal = DetectorGroupStart; + if (number != 0 && IsDetectorGroupNumberAvailable(number)) + { + return number; + } + while (!IsDetectorGroupNumberAvailable(retVal) && retVal <= DetectorGroupEnd) + { + retVal++; + } + return retVal; + } + + public static int GetMacroNumber(int number = 0) + { + int retVal = MacroStart; + if (number != 0 && IsMacroNumberAvailable(number)) + { + return number; + } + while (!IsMacroNumberAvailable(retVal) && retVal <= MacroEnd) + { + retVal++; + } + return retVal; + } + + public static int GetDoorNumber(int number = 0) + { + int retVal = DoorStart; + if (number != 0 && IsDoorNumberAvailable(number)) + { + return number; + } + while (!IsDoorNumberAvailable(retVal) && retVal <= DoorEnd) + { + retVal++; + } + return retVal; + } + + public static int GetWirelessDeviceBaseNumber(int number = 0) + { + int retVal = WirelessDeviceBaseStart; + if (number != 0 && IsWirelessDeviceBaseNumberAvailable(number)) + { + return number; + } + while (!IsWirelessDeviceBaseNumberAvailable(retVal) && retVal <= WirelessDeviceBaseEnd) + { + retVal += 17; + } + return retVal; + } + + + + private static bool IsWirelessDeviceBaseNumberAvailable(int number) + { + bool retVal = + (InternalDataStore.DataSet.HWBus2Wireless4IOModule.Count(p => !p.IsDatapointNumberNull() && p.DatapointNumber == number) + + InternalDataStore.DataSet.HWBus2WirelessSmokeDetector.Count(p => !p.IsDatapointNumberNull() && p.DatapointNumber == number) + + InternalDataStore.DataSet.HWBus2WirelessViewguard.Count(p => !p.IsDatapointNumberNull() && p.DatapointNumber == number) + ) == 0 + && number >= WirelessDeviceBaseStart && number <= WirelessDeviceBaseEnd && (number - WirelessDeviceBaseStart) % 17 == 0; + return retVal; + } + + private static bool IsPartitionNumberAvailable(int number) + { + bool retVal = + InternalDataStore.DataSet.Partition.Count(p => !p.IsDatapointNumberNull() && p.DatapointNumber == number) == 0 + && number >= PartitionStart && number <= PartitionEnd; + return retVal; + } + + private static bool IsDetectorGroupNumberAvailable(int number) + { + bool retVal = + InternalDataStore.DataSet.DetectorGroup.Count(p => !p.IsDatapointNumberNull() && p.DatapointNumber == number) == 0 + && number >= DetectorGroupStart && number <= DetectorGroupEnd; + return retVal; + } + + private static bool IsMacroNumberAvailable(int number) + { + bool retVal = + InternalDataStore.DataSet.Macro.Count(p => !p.IsDatapointNumberNull() && p.DatapointNumber == number) == 0 + && number >= MacroStart && number <= MacroEnd; + return retVal; + } + + private static bool IsDoorNumberAvailable(int number) + { + bool retVal = + ( + InternalDataStore.DataSet.HWBus2DoorGuard.Count(p => !p.IsDoorDatapointNumberNull() && p.DoorDatapointNumber == number) + + InternalDataStore.DataSet.HWBus2DoorControllerModule.Count(p => !p.IsDoorDatapointNumberNull() && p.DoorDatapointNumber == number) + + InternalDataStore.DataSet.HWBus2Identkey3.Count(p => !p.IsDoorDatapointNumberNull() && p.DoorDatapointNumber == number) + ) == 0 + && number >= DoorStart && number <= DoorEnd; + return retVal; + } + + } +} Index: ConfigApp/Views/Hardware/HardwareTreeDetails/HardwareDevices/Bus2DoorControllerModuleDetail.cs =================================================================== --- ConfigApp/Views/Hardware/HardwareTreeDetails/HardwareDevices/Bus2DoorControllerModuleDetail.cs (revision 3381) +++ ConfigApp/Views/Hardware/HardwareTreeDetails/HardwareDevices/Bus2DoorControllerModuleDetail.cs (working copy) @@ -3,6 +3,7 @@ using DevExpress.XtraEditors.Controls; using Honeywell.MBEMEA.ConfigApp.Data; using Honeywell.MBEMEA.ConfigApp.Logic; +using Honeywell.MBEMEA.ConfigApp.Logic.Datapoints; namespace Honeywell.MBEMEA.ConfigApp.Views.Hardware.HardwareTreeDetails.HardwareDevices { Index: ConfigApp/Views/Hardware/HardwareTreeDetails/HardwareDevices/Bus2DoorGuardDetail.cs =================================================================== --- ConfigApp/Views/Hardware/HardwareTreeDetails/HardwareDevices/Bus2DoorGuardDetail.cs (revision 3381) +++ ConfigApp/Views/Hardware/HardwareTreeDetails/HardwareDevices/Bus2DoorGuardDetail.cs (working copy) @@ -3,6 +3,7 @@ using DevExpress.XtraEditors.Controls; using Honeywell.MBEMEA.ConfigApp.Data; using Honeywell.MBEMEA.ConfigApp.Logic; +using Honeywell.MBEMEA.ConfigApp.Logic.Datapoints; using Honeywell.MBEMEA.ConfigApp.Properties; namespace Honeywell.MBEMEA.ConfigApp.Views.Hardware.HardwareTreeDetails.HardwareDevices Index: ConfigApp/Views/Hardware/HardwareTreeDetails/HardwareDevices/Bus2IdentKey3Detail.cs =================================================================== --- ConfigApp/Views/Hardware/HardwareTreeDetails/HardwareDevices/Bus2IdentKey3Detail.cs (revision 3381) +++ ConfigApp/Views/Hardware/HardwareTreeDetails/HardwareDevices/Bus2IdentKey3Detail.cs (working copy) @@ -3,6 +3,7 @@ using DevExpress.XtraEditors.Controls; using Honeywell.MBEMEA.ConfigApp.Data; using Honeywell.MBEMEA.ConfigApp.Logic; +using Honeywell.MBEMEA.ConfigApp.Logic.Datapoints; namespace Honeywell.MBEMEA.ConfigApp.Views.Hardware.HardwareTreeDetails.HardwareDevices { Index: ConfigApp/Views/Hardware/HardwareTreeDetails/HardwareDevices/Bus2Wireless4IOModuleDetail.cs =================================================================== --- ConfigApp/Views/Hardware/HardwareTreeDetails/HardwareDevices/Bus2Wireless4IOModuleDetail.cs (revision 3381) +++ ConfigApp/Views/Hardware/HardwareTreeDetails/HardwareDevices/Bus2Wireless4IOModuleDetail.cs (working copy) @@ -8,6 +8,7 @@ using DevExpress.XtraEditors; using Honeywell.MBEMEA.ConfigApp.Data; using Honeywell.MBEMEA.ConfigApp.Logic; +using Honeywell.MBEMEA.ConfigApp.Logic.Datapoints; using Honeywell.MBEMEA.ConfigApp.Templates; using System.Diagnostics; Index: ConfigApp/Views/Hardware/HardwareTreeDetails/HardwareDevices/Bus2WirelessSmokeDetectorDetail.cs =================================================================== --- ConfigApp/Views/Hardware/HardwareTreeDetails/HardwareDevices/Bus2WirelessSmokeDetectorDetail.cs (revision 3381) +++ ConfigApp/Views/Hardware/HardwareTreeDetails/HardwareDevices/Bus2WirelessSmokeDetectorDetail.cs (working copy) @@ -8,6 +8,7 @@ using DevExpress.XtraEditors; using Honeywell.MBEMEA.ConfigApp.Data; using Honeywell.MBEMEA.ConfigApp.Logic; +using Honeywell.MBEMEA.ConfigApp.Logic.Datapoints; using Honeywell.MBEMEA.ConfigApp.Templates; using System.Diagnostics; Index: ConfigApp/Views/Hardware/HardwareTreeDetails/HardwareDevices/Bus2WirelessViewguardDetail.cs =================================================================== --- ConfigApp/Views/Hardware/HardwareTreeDetails/HardwareDevices/Bus2WirelessViewguardDetail.cs (revision 3381) +++ ConfigApp/Views/Hardware/HardwareTreeDetails/HardwareDevices/Bus2WirelessViewguardDetail.cs (working copy) @@ -6,6 +6,7 @@ using System.Diagnostics; using DevExpress.XtraEditors.Repository; using DevExpress.XtraEditors.Controls; +using Honeywell.MBEMEA.ConfigApp.Logic.Datapoints; namespace Honeywell.MBEMEA.ConfigApp.Views.Hardware.HardwareTreeDetails.HardwareDevices { Index: ConfigApp/Views/SystemData/Macros/MacroViewNew.cs =================================================================== --- ConfigApp/Views/SystemData/Macros/MacroViewNew.cs (revision 3381) +++ ConfigApp/Views/SystemData/Macros/MacroViewNew.cs (working copy) @@ -3,6 +3,7 @@ using DevExpress.XtraLayout.Utils; using Honeywell.MBEMEA.ConfigApp.Data; using Honeywell.MBEMEA.ConfigApp.Logic; +using Honeywell.MBEMEA.ConfigApp.Logic.Datapoints; using Honeywell.MBEMEA.ConfigApp.Templates; using System; using System.Collections.Generic; Index: ConfigApp/Views/SystemData/Partitions/PartitionTreeDetails/DetectorGroupDetail.cs =================================================================== --- ConfigApp/Views/SystemData/Partitions/PartitionTreeDetails/DetectorGroupDetail.cs (revision 3381) +++ ConfigApp/Views/SystemData/Partitions/PartitionTreeDetails/DetectorGroupDetail.cs (working copy) @@ -3,6 +3,7 @@ using Honeywell.MBEMEA.ConfigApp.Data; using Honeywell.MBEMEA.ConfigApp.Helper; using Honeywell.MBEMEA.ConfigApp.Logic; +using Honeywell.MBEMEA.ConfigApp.Logic.Datapoints; using Honeywell.MBEMEA.ConfigApp.Templates; using System; using System.Data; Index: ConfigApp/Views/SystemData/Partitions/PartitionTreeDetails/PartitionDetail.cs =================================================================== --- ConfigApp/Views/SystemData/Partitions/PartitionTreeDetails/PartitionDetail.cs (revision 3381) +++ ConfigApp/Views/SystemData/Partitions/PartitionTreeDetails/PartitionDetail.cs (working copy) @@ -9,6 +9,7 @@ using Honeywell.MBEMEA.Common; using Honeywell.MBEMEA.ConfigApp.Data; using Honeywell.MBEMEA.ConfigApp.Logic; +using Honeywell.MBEMEA.ConfigApp.Logic.Datapoints; using Honeywell.MBEMEA.ConfigApp.Templates; namespace Honeywell.MBEMEA.ConfigApp.Views.SystemData.Partitions.PartitionTreeDetails