Files
cms-core-active/CMS_CORE_Library/DataStructures.cs
T
Lucio Maranta 9e25977528
2018-03-07 15:40:38 +00:00

344 lines
11 KiB
C#

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;
}
public class SoftKeysModel
{
public int Id;
public bool Active;
public bool 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
#region Constants
public const int SOFTKEY_NUMBER = 128;
#endregion Constants
}
}