blob: 1aa294c33586370fabf3c41de20456fb6ae37d41 [file] [log] [blame]
Constantin Ziesche857c7ab2020-02-25 11:24:51 +01001/*******************************************************************************
2* Copyright (c) 2020 Robert Bosch GmbH
3* Author: Constantin Ziesche (constantin.ziesche@bosch.com)
4*
5* This program and the accompanying materials are made available under the
6* terms of the Eclipse Public License 2.0 which is available at
7* http://www.eclipse.org/legal/epl-2.0
8*
9* SPDX-License-Identifier: EPL-2.0
10*******************************************************************************/
11using BaSyx.Models.Core.Attributes;
12using BaSyx.Models.Core.AssetAdministrationShell.References;
13using System.Collections.Generic;
14using System.Runtime.Serialization;
15using BaSyx.Models.Core.AssetAdministrationShell.Semantics;
16using BaSyx.Models.Core.Common;
17
18namespace BaSyx.Models.Extensions.Semantics.DataSpecifications
19{
20 [DataContract, DataSpecification("www.admin-shell.io/DataSpecificationTemplates/DataSpecificationIEC61360")]
21 public class DataSpecificationIEC61360 : IEmbeddedDataSpecification
22 {
23 public IReference HasDataSpecification => new Reference(
24 new GlobalKey(KeyElements.GlobalReference, KeyType.IRI, "www.admin-shell.io/DataSpecificationTemplates/DataSpecificationIEC61360"));
25 [DataSpecificationContent(typeof(DataSpecificationIEC61360Content), "IEC61360")]
26 public IDataSpecificationContent DataSpecificationContent { get; set; }
27
28 public DataSpecificationIEC61360(DataSpecificationIEC61360Content content)
29 {
30 DataSpecificationContent = content;
31 }
32 }
33
34 [DataContract]
35 public class DataSpecificationIEC61360Content : IDataSpecificationContent
36 {
Constantin Ziesche310d2aa2020-03-25 11:48:26 +010037 [DataMember(EmitDefaultValue = false, IsRequired = false, Name = "dataType")]
Constantin Ziesche857c7ab2020-02-25 11:24:51 +010038 public DataTypeIEC61360 DataType { get; set; }
39 [DataMember(EmitDefaultValue = false, IsRequired = false, Name = "definition")]
40 public LangStringSet Definition { get; set; }
41 [DataMember(EmitDefaultValue = false, IsRequired = false, Name = "preferredName")]
42 public LangStringSet PreferredName { get; set; }
43 [DataMember(EmitDefaultValue = false, IsRequired = false, Name = "shortName")]
44 public LangStringSet ShortName { get; set; }
45 [DataMember(EmitDefaultValue = false, IsRequired = false, Name = "sourceOfDefinition")]
46 public string SourceOfDefinition { get; set; }
47 [DataMember(EmitDefaultValue = false, IsRequired = false, Name = "symbol")]
48 public string Symbol { get; set; }
49 [DataMember(EmitDefaultValue = false, IsRequired = false, Name = "unit")]
50 public string Unit { get; set; }
51 [DataMember(EmitDefaultValue = false, IsRequired = false, Name = "unitId")]
52 public IReference UnitId { get; set; }
53 [DataMember(EmitDefaultValue = false, IsRequired = false, Name = "valueFormat")]
54 public string ValueFormat { get; set; }
55 [DataMember(EmitDefaultValue = false, IsRequired = false, Name = "valueList")]
56 public List<ValueReferencePair> ValueList { get; set; }
57 [DataMember(EmitDefaultValue = false, IsRequired = false, Name = "valueId")]
58 public IReference ValueId { get; set; }
59 [DataMember(EmitDefaultValue = false, IsRequired = false, Name = "value")]
60 public object Value { get; set; }
61 [DataMember(EmitDefaultValue = false, IsRequired = false, Name = "levelTypes")]
62 public List<LevelType> LevelTypes { get; set; }
63 }
64
65 [DataContract]
66 public enum LevelType
67 {
Constantin Ziesche35f47ac2020-03-02 13:42:26 +010068 [EnumMember(Value = "Undefined")]
69 Undefined,
Constantin Ziesche857c7ab2020-02-25 11:24:51 +010070 [EnumMember(Value = "Min")]
71 Min,
72 [EnumMember(Value = "Max")]
73 Max,
74 [EnumMember(Value = "Nom")]
75 Nom,
76 [EnumMember(Value = "Typ")]
77 Typ
78 }
79
80 [DataContract]
81 public enum DataTypeIEC61360
82 {
Constantin Ziesche35f47ac2020-03-02 13:42:26 +010083 [EnumMember(Value = "UNDEFINED")]
84 UNDEFINED,
Constantin Ziesche857c7ab2020-02-25 11:24:51 +010085 [EnumMember(Value = "DATE")]
86 DATE,
87 [EnumMember(Value = "STRING")]
88 STRING,
89 [EnumMember(Value = "STRING_TRANSLATABLE")]
Constantin Ziesche310d2aa2020-03-25 11:48:26 +010090 STRING_TRANSLATABLE,
Constantin Ziesche857c7ab2020-02-25 11:24:51 +010091 [EnumMember(Value = "INTEGER")]
92 INTEGER,
93 [EnumMember(Value = "INTEGER_MEASURE")]
94 INTEGER_MEASURE,
95 [EnumMember(Value = "INTEGER_CURRENCY")]
96 INTEGER_CURRENCY,
97 [EnumMember(Value = "REAL_MEASURE")]
98 REAL_MEASURE,
99 [EnumMember(Value = "REAL_COUNT")]
100 REAL_COUNT,
101 [EnumMember(Value = "REAL_CURRENCY")]
102 REAL_CURRENCY,
103 [EnumMember(Value = "BOOLEAN")]
104 BOOLEAN,
105 [EnumMember(Value = "URL")]
106 URL,
107 [EnumMember(Value = "RATIONAL")]
108 RATIONAL,
109 [EnumMember(Value = "RATIONAL_MEASURE")]
110 RATIONAL_MEASURE,
111 [EnumMember(Value = "TIME")]
112 TIME,
113 [EnumMember(Value = "TIME_STAMP")]
114 TIME_STAMP
115 }
116
Constantin Ziesche310d2aa2020-03-25 11:48:26 +0100117 /// <summary>
118 /// A value reference pair within a value list. Each value has a global unique id defining its semantic.
119 /// </summary>
Constantin Ziesche857c7ab2020-02-25 11:24:51 +0100120 [DataContract]
121 public class ValueReferencePair
122 {
Constantin Ziesche310d2aa2020-03-25 11:48:26 +0100123 /// <summary>
124 /// the value of the referenced concept definition of the value in valueId.
125 /// </summary>
Constantin Ziesche857c7ab2020-02-25 11:24:51 +0100126 [DataMember(EmitDefaultValue = false, IsRequired = false, Name = "value")]
127 public object Value { get; set; }
Constantin Ziesche310d2aa2020-03-25 11:48:26 +0100128
129 /// <summary>
130 /// Global unique id of the value.
131 /// </summary>
Constantin Ziesche857c7ab2020-02-25 11:24:51 +0100132 [DataMember(EmitDefaultValue = false, IsRequired = false, Name = "valueId")]
133 public IReference ValueId { get; set; }
134 }
135
136}