using static CMS_CORE.Nc; namespace CMS_CORE_Library { public static class DataStructures { /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #region Data structor models #region Pre and Post Power on Models public class PreAndPostPowerOnModel { public PrePowerOnModel PrePowerOn { get; set; } public PostPowerOnModel PostPowerOn { get; set; } public PreAndPostPowerOnModel() { PrePowerOn = new PrePowerOnModel(); PostPowerOn = new PostPowerOnModel(); } public override bool Equals(object obj) { var item = obj as PreAndPostPowerOnModel; if (item == null) return false; if (!PrePowerOn.Equals(item.PrePowerOn) || !PostPowerOn.Equals(item.PostPowerOn)) return false; return true; } public override int GetHashCode() { return base.GetHashCode(); } } public class PrePowerOnModel { public PowerOnDataModel PowerOn { get; set; } public PowerOnDataModel AirPressure { get; set; } public PowerOnDataModel ProtectionStatus { get; set; } public PowerOnDataModel EmergencyButtons { get; set; } public PowerOnDataModel SettingMode { get; set; } public PowerOnDataModel StartingKey { get; set; } public PrePowerOnModel() { PowerOn = new PowerOnDataModel(); AirPressure = new PowerOnDataModel(); ProtectionStatus = new PowerOnDataModel(); EmergencyButtons = new PowerOnDataModel(); SettingMode = new PowerOnDataModel(); StartingKey = new PowerOnDataModel(); } public override bool Equals(object obj) { var item = obj as PrePowerOnModel; if (item == null) return false; if (!PowerOn.Equals(item.PowerOn) || !AirPressure.Equals(item.AirPressure) || !ProtectionStatus.Equals(item.ProtectionStatus) || !EmergencyButtons.Equals(item.EmergencyButtons) || !SettingMode.Equals(item.SettingMode) || !StartingKey.Equals(item.StartingKey)) return false; return true; } public override int GetHashCode() { return base.GetHashCode(); } } public class PostPowerOnModel { public PowerOnDataModel AxisReset { get; set; } public PowerOnDataModel WaterjetPump { get; set; } public PostPowerOnModel() { AxisReset = new PowerOnDataModel(); WaterjetPump = new PowerOnDataModel(); } public override bool Equals(object obj) { var item = obj as PostPowerOnModel; if (item == null) return false; if (!AxisReset.Equals(item.AxisReset) || !WaterjetPump.Equals(item.WaterjetPump)) return false; return true; } public override int GetHashCode() { return base.GetHashCode(); } } public class PowerOnDataModel { public uint Id { get; set; } public bool Active { get; set; } public bool Clickable { get; set; } public PowerOnDataModel() { Id = 0; Active = false; Clickable = false; } public override bool Equals(object obj) { var item = obj as PowerOnDataModel; if (item == null) return false; if (Id != item.Id || Active != item.Active || Clickable != item.Clickable) return false; return true; } public override int GetHashCode() { return base.GetHashCode(); } } #endregion Pre and Post Power on Models // R-W MEMORY Cell internal struct MEMORY_CELL { public readonly MEMORY_TYPE MemType; public readonly int Address; public readonly int SubAddress; //Only for Siemens public readonly int Size; public MEMORY_CELL(MEMORY_TYPE MType, int Addr, int SubAddr, int Sz) { MemType = MType; Address = Addr; SubAddress = SubAddr; Size = Sz; } public MEMORY_CELL(MEMORY_TYPE MType, int Addr, int Sz) { MemType = MType; Address = Addr; SubAddress = 0; Size = Sz; } } public class AlarmModel { public uint Id; public string Message; public bool IsWarning; public int Process; } public class ProcessDataModel { public ushort Id; public string Type; public bool IsInAlarm; public string PartProgramName; public string Status; public bool Visible; public byte Reps; public override bool Equals(object obj) { var item = obj as ProcessDataModel; if (item == null) return false; if (Id != item.Id) return false; if (Type != item.Type || IsInAlarm != item.IsInAlarm || PartProgramName != item.PartProgramName || Status != item.Status || Visible != item.Visible || Reps != item.Reps) return false; return true; } public override int GetHashCode() { return base.GetHashCode(); } } public struct FunctionalityModel { public uint Id; public bool IsActive; } public struct StrobeModel { public uint Id; public bool IsActive; } public class AxisResetDataModel { public bool IsActive; public int Percentage; public AxisResetDataModel() { IsActive = false; Percentage = 0; } public override bool Equals(object obj) { var item = obj as AxisResetDataModel; if (IsActive == item.IsActive && Percentage == item.Percentage) return true; else return false; } public override int GetHashCode() { return base.GetHashCode(); } } public struct CounterModel { public uint Id; public uint Value; } #endregion Data structor models /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #region Cms Errors Codes public enum CMS_ERROR_CODES : uint { OK = 0, NC_PROD_ERROR = 1, NOT_CONNECTED = 2, PROC_NOT_FOUND = 3, FUNCTION_NOT_ALLOWED = 4, BIT_NOT_IN_RANGE = 5, BYTE_NOT_IN_RANGE = 6, INTERNAL_ERROR = 7, INCORRECT_PARAMETERS = 8, NC_LANGUAGE_ERROR = 9, SIEMENS_ENVIRONMENT_NOT_FOUND = 10, SIEMENS_HMI_NOT_RUNNING = 11 } public class CmsError { public CMS_ERROR_CODES errorCode; public string message; public CmsError(CMS_ERROR_CODES errorCode, string message) { this.errorCode = errorCode; this.message = message; } public bool IsError() { if (errorCode == CMS_ERROR_CODES.OK) return false; else return true; } public static CmsError InternalError(string message) { return new CmsError(CMS_ERROR_CODES.INTERNAL_ERROR, message); } public static CmsError NcError(string message) { return new CmsError(CMS_ERROR_CODES.NC_PROD_ERROR, message); } } internal static CmsError NO_ERROR = new CmsError(CMS_ERROR_CODES.OK, ""); internal static CmsError NOT_CONNECTED_ERROR = new CmsError(CMS_ERROR_CODES.NOT_CONNECTED, "CMS-Core-Error: Nc not Connected"); internal static CmsError PROC_NOT_FOUND_ERROR = new CmsError(CMS_ERROR_CODES.FUNCTION_NOT_ALLOWED, "CMS-Core-Error: Function not allowed for this type of NC"); internal static CmsError FUNCTION_NOT_ALLOWED_ERROR = new CmsError(CMS_ERROR_CODES.FUNCTION_NOT_ALLOWED, "CMS-Core-Error: Function not allowed for this type of NC"); internal static CmsError BIT_NOT_IN_RANGE_ERROR = new CmsError(CMS_ERROR_CODES.BIT_NOT_IN_RANGE, "CMS-Core-Error: Bit - number must be between 0 and 7"); internal static CmsError BYTE_NOT_IN_RANGE_ERROR = new CmsError(CMS_ERROR_CODES.BYTE_NOT_IN_RANGE, "CMS-Core-Error: Byte - number must be between 0 and 1"); internal static CmsError INCORRECT_PARAMETERS_ERROR = new CmsError(CMS_ERROR_CODES.INCORRECT_PARAMETERS, "CMS-Core-Error: Incorrect Parameters error"); internal static CmsError LANGUAGE_ERROR = new CmsError(CMS_ERROR_CODES.NC_LANGUAGE_ERROR, "CMS-Core-Error: Incorrect Language"); internal static CmsError SIEMENS_ENVIRONMENT_NOT_FOUND_ERROR = new CmsError(CMS_ERROR_CODES.SIEMENS_ENVIRONMENT_NOT_FOUND, "CMS-Core-Error: Siemens Environment not found"); internal static CmsError SIEMENS_HMI_NOT_RUNNING_ERROR = new CmsError(CMS_ERROR_CODES.SIEMENS_HMI_NOT_RUNNING, "CMS-Core-Error: Siemens HMI is not Running / Ready"); #endregion Cms Errors Codes } }