DLMS-SPODES 0.87.13__py3-none-any.whl → 0.87.16__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. DLMS_SPODES/Values/EN/__init__.py +1 -1
  2. DLMS_SPODES/Values/EN/actors.py +8 -8
  3. DLMS_SPODES/Values/EN/relation_to_obis_names.py +387 -387
  4. DLMS_SPODES/Values/RU/__init__.py +1 -1
  5. DLMS_SPODES/Values/RU/actors.py +8 -8
  6. DLMS_SPODES/Values/RU/relation_to_obis_names.py +396 -396
  7. DLMS_SPODES/__init__.py +6 -6
  8. DLMS_SPODES/configEN.ini +126 -126
  9. DLMS_SPODES/config_parser.py +53 -53
  10. DLMS_SPODES/cosem_interface_classes/__class_init__.py +3 -3
  11. DLMS_SPODES/cosem_interface_classes/__init__.py +1 -1
  12. DLMS_SPODES/cosem_interface_classes/a_parameter.py +20 -20
  13. DLMS_SPODES/cosem_interface_classes/activity_calendar.py +254 -254
  14. DLMS_SPODES/cosem_interface_classes/arbitrator.py +105 -105
  15. DLMS_SPODES/cosem_interface_classes/association_ln/abstract.py +34 -34
  16. DLMS_SPODES/cosem_interface_classes/association_ln/authentication_mechanism_name.py +25 -25
  17. DLMS_SPODES/cosem_interface_classes/association_ln/mechanism_id.py +25 -25
  18. DLMS_SPODES/cosem_interface_classes/association_ln/method.py +5 -5
  19. DLMS_SPODES/cosem_interface_classes/association_ln/ver0.py +485 -485
  20. DLMS_SPODES/cosem_interface_classes/association_ln/ver1.py +133 -133
  21. DLMS_SPODES/cosem_interface_classes/association_ln/ver2.py +36 -36
  22. DLMS_SPODES/cosem_interface_classes/association_ln/ver3.py +4 -4
  23. DLMS_SPODES/cosem_interface_classes/association_sn/ver0.py +12 -12
  24. DLMS_SPODES/cosem_interface_classes/attr_indexes.py +12 -12
  25. DLMS_SPODES/cosem_interface_classes/clock.py +131 -131
  26. DLMS_SPODES/cosem_interface_classes/collection.py +2122 -2122
  27. DLMS_SPODES/cosem_interface_classes/cosem_interface_class.py +583 -583
  28. DLMS_SPODES/cosem_interface_classes/data.py +21 -21
  29. DLMS_SPODES/cosem_interface_classes/demand_register/ver0.py +59 -59
  30. DLMS_SPODES/cosem_interface_classes/disconnect_control.py +74 -74
  31. DLMS_SPODES/cosem_interface_classes/extended_register.py +27 -27
  32. DLMS_SPODES/cosem_interface_classes/gprs_modem_setup.py +43 -43
  33. DLMS_SPODES/cosem_interface_classes/gsm_diagnostic/ver0.py +103 -103
  34. DLMS_SPODES/cosem_interface_classes/gsm_diagnostic/ver1.py +40 -40
  35. DLMS_SPODES/cosem_interface_classes/gsm_diagnostic/ver2.py +9 -9
  36. DLMS_SPODES/cosem_interface_classes/iec_hdlc_setup/ver0.py +11 -11
  37. DLMS_SPODES/cosem_interface_classes/iec_hdlc_setup/ver1.py +53 -53
  38. DLMS_SPODES/cosem_interface_classes/iec_local_port_setup.py +11 -11
  39. DLMS_SPODES/cosem_interface_classes/image_transfer/image_transfer_status.py +15 -15
  40. DLMS_SPODES/cosem_interface_classes/image_transfer/ver0.py +126 -126
  41. DLMS_SPODES/cosem_interface_classes/implementations/__init__.py +3 -3
  42. DLMS_SPODES/cosem_interface_classes/implementations/arbitrator.py +19 -19
  43. DLMS_SPODES/cosem_interface_classes/implementations/data.py +487 -487
  44. DLMS_SPODES/cosem_interface_classes/implementations/profile_generic.py +83 -83
  45. DLMS_SPODES/cosem_interface_classes/ipv4_setup.py +72 -72
  46. DLMS_SPODES/cosem_interface_classes/limiter.py +111 -111
  47. DLMS_SPODES/cosem_interface_classes/ln_pattern.py +333 -333
  48. DLMS_SPODES/cosem_interface_classes/modem_configuration/ver0.py +65 -65
  49. DLMS_SPODES/cosem_interface_classes/modem_configuration/ver1.py +39 -39
  50. DLMS_SPODES/cosem_interface_classes/ntp_setup/ver0.py +67 -67
  51. DLMS_SPODES/cosem_interface_classes/obis.py +23 -23
  52. DLMS_SPODES/cosem_interface_classes/overview.py +197 -197
  53. DLMS_SPODES/cosem_interface_classes/parameter.py +547 -547
  54. DLMS_SPODES/cosem_interface_classes/parameters.py +172 -172
  55. DLMS_SPODES/cosem_interface_classes/profile_generic/ver0.py +122 -122
  56. DLMS_SPODES/cosem_interface_classes/profile_generic/ver1.py +277 -277
  57. DLMS_SPODES/cosem_interface_classes/push_setup/ver0.py +12 -12
  58. DLMS_SPODES/cosem_interface_classes/push_setup/ver1.py +10 -10
  59. DLMS_SPODES/cosem_interface_classes/push_setup/ver2.py +166 -166
  60. DLMS_SPODES/cosem_interface_classes/register.py +45 -45
  61. DLMS_SPODES/cosem_interface_classes/register_activation/ver0.py +80 -80
  62. DLMS_SPODES/cosem_interface_classes/register_monitor.py +46 -46
  63. DLMS_SPODES/cosem_interface_classes/reports.py +70 -70
  64. DLMS_SPODES/cosem_interface_classes/schedule.py +176 -176
  65. DLMS_SPODES/cosem_interface_classes/script_table.py +87 -87
  66. DLMS_SPODES/cosem_interface_classes/security_setup/ver0.py +68 -68
  67. DLMS_SPODES/cosem_interface_classes/security_setup/ver1.py +158 -158
  68. DLMS_SPODES/cosem_interface_classes/single_action_schedule.py +50 -50
  69. DLMS_SPODES/cosem_interface_classes/special_days_table.py +84 -84
  70. DLMS_SPODES/cosem_interface_classes/tcp_udp_setup.py +42 -42
  71. DLMS_SPODES/cosem_pdu.py +93 -93
  72. DLMS_SPODES/enums.py +625 -625
  73. DLMS_SPODES/exceptions.py +106 -106
  74. DLMS_SPODES/firmwares.py +99 -99
  75. DLMS_SPODES/hdlc/frame.py +875 -875
  76. DLMS_SPODES/hdlc/sub_layer.py +54 -54
  77. DLMS_SPODES/literals.py +17 -17
  78. DLMS_SPODES/obis/__init__.py +1 -1
  79. DLMS_SPODES/obis/media_id.py +931 -931
  80. DLMS_SPODES/pardata.py +22 -22
  81. DLMS_SPODES/pdu_enums.py +98 -98
  82. DLMS_SPODES/relation_to_OBIS.py +465 -463
  83. DLMS_SPODES/settings.py +551 -551
  84. DLMS_SPODES/types/choices.py +142 -142
  85. DLMS_SPODES/types/common_data_types.py +2401 -2401
  86. DLMS_SPODES/types/cosem_service_types.py +109 -109
  87. DLMS_SPODES/types/implementations/arrays.py +25 -25
  88. DLMS_SPODES/types/implementations/bitstrings.py +97 -97
  89. DLMS_SPODES/types/implementations/double_long_usingneds.py +35 -35
  90. DLMS_SPODES/types/implementations/enums.py +57 -57
  91. DLMS_SPODES/types/implementations/integers.py +11 -11
  92. DLMS_SPODES/types/implementations/long_unsigneds.py +127 -127
  93. DLMS_SPODES/types/implementations/octet_string.py +11 -11
  94. DLMS_SPODES/types/implementations/structs.py +64 -64
  95. DLMS_SPODES/types/useful_types.py +677 -677
  96. {dlms_spodes-0.87.13.dist-info → dlms_spodes-0.87.16.dist-info}/METADATA +30 -30
  97. dlms_spodes-0.87.16.dist-info/RECORD +117 -0
  98. {dlms_spodes-0.87.13.dist-info → dlms_spodes-0.87.16.dist-info}/WHEEL +1 -1
  99. dlms_spodes-0.87.13.dist-info/RECORD +0 -117
  100. {dlms_spodes-0.87.13.dist-info → dlms_spodes-0.87.16.dist-info}/top_level.txt +0 -0
@@ -1,11 +1,11 @@
1
- """all realisation cdt.Integer subclasses"""
2
- from ...types import common_data_types as cdt
3
- from typing_extensions import deprecated
4
-
5
-
6
- @deprecated("use INTEGER_0")
7
- class Only0(cdt.Integer, value=0):
8
- """ Limited Integer only 0 """
9
-
10
-
11
- INTEGER_0 = cdt.Integer(0)
1
+ """all realisation cdt.Integer subclasses"""
2
+ from ...types import common_data_types as cdt
3
+ from typing_extensions import deprecated
4
+
5
+
6
+ @deprecated("use INTEGER_0")
7
+ class Only0(cdt.Integer, value=0):
8
+ """ Limited Integer only 0 """
9
+
10
+
11
+ INTEGER_0 = cdt.Integer(0)
@@ -1,127 +1,127 @@
1
- from dataclasses import dataclass
2
- from ...types import common_data_types as cdt
3
- from ...cosem_interface_classes import overview
4
-
5
-
6
- class ClassId(cdt.LongUnsigned):
7
- """ Class ID type """
8
- DEFAULT = 1
9
-
10
- def validate(self):
11
- if not int(self) in overview.ClassID.get_all_id():
12
- raise ValueError(F'Unknown DLMS class with ID {int(self)}')
13
-
14
-
15
- @dataclass(frozen=True)
16
- class ClassIDCDT:
17
- DATA = ClassId(int(overview.ClassID.DATA))
18
- REGISTER = ClassId(int(overview.ClassID.REGISTER))
19
- EXT_REGISTER = ClassId(int(overview.ClassID.EXT_REGISTER))
20
- DEMAND_REGISTER = ClassId(int(overview.ClassID.DEMAND_REGISTER))
21
- REGISTER_ACTIVATION = ClassId(int(overview.ClassID.REGISTER_ACTIVATION))
22
- PROFILE_GENERIC = ClassId(int(overview.ClassID.PROFILE_GENERIC))
23
- CLOCK = ClassId(int(overview.ClassID.CLOCK))
24
- SCRIPT_TABLE = ClassId(int(overview.ClassID.SCRIPT_TABLE))
25
- SCHEDULE = ClassId(int(overview.ClassID.SCHEDULE))
26
- SPECIAL_DAYS_TABLE = ClassId(int(overview.ClassID.SPECIAL_DAYS_TABLE))
27
- ASSOCIATION_SN_CLASS = ClassId(int(overview.ClassID.ASSOCIATION_SN))
28
- ASSOCIATION_LN_CLASS = ClassId(int(overview.ClassID.ASSOCIATION_LN))
29
- SAP_ASSIGNMENT = ClassId(int(overview.ClassID.SAP_ASSIGNMENT))
30
- IMAGE_TRANSFER = ClassId(int(overview.ClassID.IMAGE_TRANSFER))
31
- IEC_LOCAL_PORT_SETUP = ClassId(int(overview.ClassID.IEC_LOCAL_PORT_SETUP))
32
- ACTIVITY_CALENDAR = ClassId(int(overview.ClassID.ACTIVITY_CALENDAR))
33
- REGISTER_MONITOR = ClassId(int(overview.ClassID.REGISTER_MONITOR))
34
- SINGLE_ACTION_SCHEDULE = ClassId(int(overview.ClassID.SINGLE_ACTION_SCHEDULE))
35
- IEC_HDLC_SETUP = ClassId(int(overview.ClassID.IEC_HDLC_SETUP))
36
- IEC_TWISTED_PAIR__1__SETUP = ClassId(int(overview.ClassID.IEC_TWISTED_PAIR_1_SETUP))
37
- M_BUS_SLAVE_PORT_SETUP = ClassId(int(overview.ClassID.M_BUS_SLAVE_PORT_SETUP))
38
- UTILITY_TABLES = ClassId(int(overview.ClassID.UTILITY_TABLES))
39
- MODEM_CONFIGURATION = ClassId(int(overview.ClassID.MODEM_CONFIGURATION))
40
- AUTO_ANSWER = ClassId(int(overview.ClassID.AUTO_ANSWER))
41
- AUTO_CONNECT = ClassId(int(overview.ClassID.AUTO_CONNECT))
42
- COSEM_DATA_PROTECTION = ClassId(int(overview.ClassID.COSEM_DATA_PROTECTION))
43
- PUSH_SETUP = ClassId(int(overview.ClassID.PUSH_SETUP))
44
- TCP_UDP_SETUP = ClassId(int(overview.ClassID.TCP_UDP_SETUP))
45
- IPV4_SETUP = ClassId(int(overview.ClassID.IPV4_SETUP))
46
- PRIME_NB_OFDM_PLC_MAC_ADDRESS_SETUP = ClassId(int(overview.ClassID.PRIME_NB_OFDM_PLC_MAC_ADDRESS_SETUP))
47
- PPP_SETUP = ClassId(int(overview.ClassID.PPP_SETUP))
48
- GPRS_MODEM_SETUP = ClassId(int(overview.ClassID.GPRS_MODEM_SETUP))
49
- SMTP_SETUP = ClassId(int(overview.ClassID.SMTP_SETUP))
50
- GSM_DIAGNOSTIC = ClassId(int(overview.ClassID.GSM_DIAGNOSTIC))
51
- IPV6_SETUP = ClassId(int(overview.ClassID.IPV6_SETUP))
52
- S_FSK_PHY_MAC_SET_UP = ClassId(int(overview.ClassID.S_FSK_PHY_MAC_SET_UP))
53
- S_FSK_ACTIVE_INITIATOR = ClassId(int(overview.ClassID.S_FSK_ACTIVE_INITIATOR))
54
- S_FSK_MAC_SYNCHRONIZATION_TIMEOUTS = ClassId(int(overview.ClassID.S_FSK_MAC_SYNCHRONIZATION_TIMEOUTS))
55
- S_FSK_MAC_COUNTERS = ClassId(int(overview.ClassID.S_FSK_MAC_COUNTERS))
56
- IEC_61334_4_32_LLC_SETUP = ClassId(int(overview.ClassID.IEC_61334_4_32_LLC_SETUP))
57
- S_FSK_REPORTING_SYSTEM_LIST = ClassId(int(overview.ClassID.S_FSK_REPORTING_SYSTEM_LIST))
58
- ISO_IEC_8802_2_LLC_TYPE_1_SETUP = ClassId(int(overview.ClassID.ISO_IEC_8802_2_LLC_TYPE_1_SETUP))
59
- ISO_IEC_8802_2_LLC_TYPE_2_SETUP = ClassId(int(overview.ClassID.ISO_IEC_8802_2_LLC_TYPE_2_SETUP))
60
- ISO_IEC_8802_2_LLC_TYPE_3_SETUP = ClassId(int(overview.ClassID.ISO_IEC_8802_2_LLC_TYPE_3_SETUP))
61
- REGISTER_TABLE = ClassId(int(overview.ClassID.REGISTER_TABLE))
62
- COMPACT_DATA = ClassId(int(overview.ClassID.COMPACT_DATA))
63
- STATUS_MAPPING = ClassId(int(overview.ClassID.STATUS_MAPPING))
64
- SECURITY_SETUP = ClassId(int(overview.ClassID.SECURITY_SETUP))
65
- PARAMETER_MONITOR = ClassId(int(overview.ClassID.PARAMETER_MONITOR))
66
- SENSOR_MANAGER_INTERFACE_CLASS = ClassId(int(overview.ClassID.SENSOR_MANAGER_INTERFACE_CLASS))
67
- ARBITRATOR = ClassId(int(overview.ClassID.ARBITRATOR))
68
- DISCONNECT_CONTROL = ClassId(int(overview.ClassID.DISCONNECT_CONTROL))
69
- LIMITER = ClassId(int(overview.ClassID.LIMITER))
70
- M_BUS_CLIENT = ClassId(int(overview.ClassID.M_BUS_CLIENT))
71
- WIRELESS_MODE_Q_CHANNEL = ClassId(int(overview.ClassID.WIRELESS_MODE_Q_CHANNEL))
72
- M_BUS_MASTER_PORT_SETUP = ClassId(int(overview.ClassID.M_BUS_MASTER_PORT_SETUP))
73
- DLMS_COSEM_SERVER_M_BUS_PORT_SETUP = ClassId(int(overview.ClassID.DLMS_COSEM_SERVER_M_BUS_PORT_SETUP))
74
- M_BUS_DIAGNOSTIC = ClassId(int(overview.ClassID.M_BUS_DIAGNOSTIC))
75
- _61334_4_32_LLC_SSCS_SETUP = ClassId(int(overview.ClassID._61334_4_32_LLC_SSCS_SETUP))
76
- PRIME_NB_OFDM_PLC_PHYSICAL_LAYER_COUNTERS = ClassId(int(overview.ClassID.PRIME_NB_OFDM_PLC_PHYSICAL_LAYER_COUNTERS))
77
- PRIME_NB_OFDM_PLC_MAC_SETUP = ClassId(int(overview.ClassID.PRIME_NB_OFDM_PLC_MAC_SETUP))
78
- PRIME_NB_OFDM_PLC_MAC_FUNCTIONAL_PARAMETERS = ClassId(int(overview.ClassID.PRIME_NB_OFDM_PLC_MAC_FUNCTIONAL_PARAMETERS))
79
- PRIME_NB_OFDM_PLC_MAC_COUNTERS = ClassId(int(overview.ClassID.PRIME_NB_OFDM_PLC_MAC_COUNTERS))
80
- PRIME_NB_OFDM_PLC_MAC_NETWORK_ADMINISTRATION_DATA = ClassId(int(overview.ClassID.PRIME_NB_OFDM_PLC_MAC_NETWORK_ADMINISTRATION_DATA))
81
- PRIME_NB_OFDM_PLC_APPLICATION_IDENTIFICATION = ClassId(int(overview.ClassID.PRIME_NB_OFDM_PLC_APPLICATION_IDENTIFICATION))
82
- G3_PLC_MAC_LAYER_COUNTERS = ClassId(int(overview.ClassID.G3_PLC_MAC_LAYER_COUNTERS))
83
- G3_PLC_MAC_SETUP = ClassId(int(overview.ClassID.G3_PLC_MAC_SETUP))
84
- G3_PLC_MAC_6LOWPAN_ADAPTATION_LAYER_SETUP = ClassId(int(overview.ClassID.G3_PLC_MAC_6LOWPAN_ADAPTATION_LAYER_SETUP))
85
- WI_SUN_SETUP = ClassId(int(overview.ClassID.WI_SUN_SETUP))
86
- WI_SUN_DIAGNOSTIC = ClassId(int(overview.ClassID.WI_SUN_DIAGNOSTIC))
87
- RPL_DIAGNOSTIC = ClassId(int(overview.ClassID.RPL_DIAGNOSTIC))
88
- MPL_DIAGNOSTIC = ClassId(int(overview.ClassID.MPL_DIAGNOSTIC))
89
- NTP_SETUP = ClassId(int(overview.ClassID.NTP_SETUP))
90
- ZIGBEE_SAS_STARTUP = ClassId(int(overview.ClassID.ZIGBEE_SAS_STARTUP))
91
- ZIGBEE_SAS_JOIN = ClassId(int(overview.ClassID.ZIGBEE_SAS_JOIN))
92
- ZIGBEE_SAS_APS_FRAGMENTATION = ClassId(int(overview.ClassID.ZIGBEE_SAS_APS_FRAGMENTATION))
93
- ZIGBEE_NETWORK_CONTROL = ClassId(int(overview.ClassID.ZIGBEE_NETWORK_CONTROL))
94
- ZIGBEE_TUNNEL_SETUP = ClassId(int(overview.ClassID.ZIGBEE_TUNNEL_SETUP))
95
- ACCOUNT = ClassId(int(overview.ClassID.ACCOUNT))
96
- CREDIT_INTERFACE_CLASS = ClassId(int(overview.ClassID.CREDIT_INTERFACE_CLASS))
97
- CHARGE = ClassId(int(overview.ClassID.CHARGE))
98
- TOKEN_GATEWAY = ClassId(int(overview.ClassID.TOKEN_GATEWAY))
99
- FUNCTION_CONTROL = ClassId(int(overview.ClassID.FUNCTION_CONTROL))
100
- ARRAY_MANAGER = ClassId(int(overview.ClassID.ARRAY_MANAGER))
101
- COMMUNICATION_PORT_PROTECTION = ClassId(int(overview.ClassID.COMMUNICATION_PORT_PROTECTION))
102
- SCHC_LPWAN_SETUP = ClassId(int(overview.ClassID.SCHC_LPWAN_SETUP))
103
- SCHC_LPWAN_DIAGNOSTIC = ClassId(int(overview.ClassID.SCHC_LPWAN_DIAGNOSTIC))
104
- LoRaWAN_SETUP = ClassId(int(overview.ClassID.LoRaWAN_SETUP))
105
- LoRaWAN_DIAGNOSTIC = ClassId(int(overview.ClassID.LoRaWAN_DIAGNOSTIC))
106
- ISO_IEC14908_IDENTIFICATION = ClassId(int(overview.ClassID.ISO_IEC14908_IDENTIFICATION))
107
- ISO_IEC14908_PROTOCOL_SETUP = ClassId(int(overview.ClassID.ISO_IEC14908_PROTOCOL_SETUP))
108
- ISO_IEC14908_PROTOCOL_STATUS = ClassId(int(overview.ClassID.ISO_IEC14908_PROTOCOL_STATUS))
109
- ISO_IEC14908_PROTOCOL_DIAGNOSTIC = ClassId(int(overview.ClassID.ISO_IEC14908_PROTOCOL_DIAGNOSTIC))
110
- HS_PLC_ISO_IEC_12139_1_MAC_SETUP = ClassId(int(overview.ClassID.HS_PLC_ISO_IEC_12139_1_MAC_SETUP))
111
- HS_PLC_ISO_IEC_12139_1_CPAS_SETUP = ClassId(int(overview.ClassID.HS_PLC_ISO_IEC_12139_1_CPAS_SETUP))
112
- HS_PLC_ISO_IEC_12139_1_IP_SSAS_SETUP = ClassId(int(overview.ClassID.HS_PLC_ISO_IEC_12139_1_IP_SSAS_SETUP))
113
- HS_PLC_ISO_IEC_12139_1_HDLC_SSAS_SETUP = ClassId(int(overview.ClassID.HS_PLC_ISO_IEC_12139_1_HDLC_SSAS_SETUP))
114
- LTE_MONITORING = ClassId(int(overview.ClassID.LTE_MONITORING))
115
- CLIENT_SETUP = ClassId(int(overview.ClassID.CLIENT_SETUP))
116
-
117
- @classmethod
118
- def get_all_id(cls) -> tuple[int]:
119
- """return all id container in build-in <int>"""
120
- return tuple(map(int, filter(lambda it: isinstance(it, ClassId), cls.__dict__.values())))
121
-
122
-
123
- class ServerSAP(cdt.LongUnsigned):
124
-
125
- def validate(self):
126
- if int.from_bytes(self.contents, 'big') > 0x3FFF:
127
- raise ValueError(F'The range for the server_SAP is 0x000…0x3FFF, but got {self.contents.hex()}')
1
+ from dataclasses import dataclass
2
+ from ...types import common_data_types as cdt
3
+ from ...cosem_interface_classes import overview
4
+
5
+
6
+ class ClassId(cdt.LongUnsigned):
7
+ """ Class ID type """
8
+ DEFAULT = 1
9
+
10
+ def validate(self):
11
+ if not int(self) in overview.ClassID.get_all_id():
12
+ raise ValueError(F'Unknown DLMS class with ID {int(self)}')
13
+
14
+
15
+ @dataclass(frozen=True)
16
+ class ClassIDCDT:
17
+ DATA = ClassId(int(overview.ClassID.DATA))
18
+ REGISTER = ClassId(int(overview.ClassID.REGISTER))
19
+ EXT_REGISTER = ClassId(int(overview.ClassID.EXT_REGISTER))
20
+ DEMAND_REGISTER = ClassId(int(overview.ClassID.DEMAND_REGISTER))
21
+ REGISTER_ACTIVATION = ClassId(int(overview.ClassID.REGISTER_ACTIVATION))
22
+ PROFILE_GENERIC = ClassId(int(overview.ClassID.PROFILE_GENERIC))
23
+ CLOCK = ClassId(int(overview.ClassID.CLOCK))
24
+ SCRIPT_TABLE = ClassId(int(overview.ClassID.SCRIPT_TABLE))
25
+ SCHEDULE = ClassId(int(overview.ClassID.SCHEDULE))
26
+ SPECIAL_DAYS_TABLE = ClassId(int(overview.ClassID.SPECIAL_DAYS_TABLE))
27
+ ASSOCIATION_SN_CLASS = ClassId(int(overview.ClassID.ASSOCIATION_SN))
28
+ ASSOCIATION_LN_CLASS = ClassId(int(overview.ClassID.ASSOCIATION_LN))
29
+ SAP_ASSIGNMENT = ClassId(int(overview.ClassID.SAP_ASSIGNMENT))
30
+ IMAGE_TRANSFER = ClassId(int(overview.ClassID.IMAGE_TRANSFER))
31
+ IEC_LOCAL_PORT_SETUP = ClassId(int(overview.ClassID.IEC_LOCAL_PORT_SETUP))
32
+ ACTIVITY_CALENDAR = ClassId(int(overview.ClassID.ACTIVITY_CALENDAR))
33
+ REGISTER_MONITOR = ClassId(int(overview.ClassID.REGISTER_MONITOR))
34
+ SINGLE_ACTION_SCHEDULE = ClassId(int(overview.ClassID.SINGLE_ACTION_SCHEDULE))
35
+ IEC_HDLC_SETUP = ClassId(int(overview.ClassID.IEC_HDLC_SETUP))
36
+ IEC_TWISTED_PAIR__1__SETUP = ClassId(int(overview.ClassID.IEC_TWISTED_PAIR_1_SETUP))
37
+ M_BUS_SLAVE_PORT_SETUP = ClassId(int(overview.ClassID.M_BUS_SLAVE_PORT_SETUP))
38
+ UTILITY_TABLES = ClassId(int(overview.ClassID.UTILITY_TABLES))
39
+ MODEM_CONFIGURATION = ClassId(int(overview.ClassID.MODEM_CONFIGURATION))
40
+ AUTO_ANSWER = ClassId(int(overview.ClassID.AUTO_ANSWER))
41
+ AUTO_CONNECT = ClassId(int(overview.ClassID.AUTO_CONNECT))
42
+ COSEM_DATA_PROTECTION = ClassId(int(overview.ClassID.COSEM_DATA_PROTECTION))
43
+ PUSH_SETUP = ClassId(int(overview.ClassID.PUSH_SETUP))
44
+ TCP_UDP_SETUP = ClassId(int(overview.ClassID.TCP_UDP_SETUP))
45
+ IPV4_SETUP = ClassId(int(overview.ClassID.IPV4_SETUP))
46
+ PRIME_NB_OFDM_PLC_MAC_ADDRESS_SETUP = ClassId(int(overview.ClassID.PRIME_NB_OFDM_PLC_MAC_ADDRESS_SETUP))
47
+ PPP_SETUP = ClassId(int(overview.ClassID.PPP_SETUP))
48
+ GPRS_MODEM_SETUP = ClassId(int(overview.ClassID.GPRS_MODEM_SETUP))
49
+ SMTP_SETUP = ClassId(int(overview.ClassID.SMTP_SETUP))
50
+ GSM_DIAGNOSTIC = ClassId(int(overview.ClassID.GSM_DIAGNOSTIC))
51
+ IPV6_SETUP = ClassId(int(overview.ClassID.IPV6_SETUP))
52
+ S_FSK_PHY_MAC_SET_UP = ClassId(int(overview.ClassID.S_FSK_PHY_MAC_SET_UP))
53
+ S_FSK_ACTIVE_INITIATOR = ClassId(int(overview.ClassID.S_FSK_ACTIVE_INITIATOR))
54
+ S_FSK_MAC_SYNCHRONIZATION_TIMEOUTS = ClassId(int(overview.ClassID.S_FSK_MAC_SYNCHRONIZATION_TIMEOUTS))
55
+ S_FSK_MAC_COUNTERS = ClassId(int(overview.ClassID.S_FSK_MAC_COUNTERS))
56
+ IEC_61334_4_32_LLC_SETUP = ClassId(int(overview.ClassID.IEC_61334_4_32_LLC_SETUP))
57
+ S_FSK_REPORTING_SYSTEM_LIST = ClassId(int(overview.ClassID.S_FSK_REPORTING_SYSTEM_LIST))
58
+ ISO_IEC_8802_2_LLC_TYPE_1_SETUP = ClassId(int(overview.ClassID.ISO_IEC_8802_2_LLC_TYPE_1_SETUP))
59
+ ISO_IEC_8802_2_LLC_TYPE_2_SETUP = ClassId(int(overview.ClassID.ISO_IEC_8802_2_LLC_TYPE_2_SETUP))
60
+ ISO_IEC_8802_2_LLC_TYPE_3_SETUP = ClassId(int(overview.ClassID.ISO_IEC_8802_2_LLC_TYPE_3_SETUP))
61
+ REGISTER_TABLE = ClassId(int(overview.ClassID.REGISTER_TABLE))
62
+ COMPACT_DATA = ClassId(int(overview.ClassID.COMPACT_DATA))
63
+ STATUS_MAPPING = ClassId(int(overview.ClassID.STATUS_MAPPING))
64
+ SECURITY_SETUP = ClassId(int(overview.ClassID.SECURITY_SETUP))
65
+ PARAMETER_MONITOR = ClassId(int(overview.ClassID.PARAMETER_MONITOR))
66
+ SENSOR_MANAGER_INTERFACE_CLASS = ClassId(int(overview.ClassID.SENSOR_MANAGER_INTERFACE_CLASS))
67
+ ARBITRATOR = ClassId(int(overview.ClassID.ARBITRATOR))
68
+ DISCONNECT_CONTROL = ClassId(int(overview.ClassID.DISCONNECT_CONTROL))
69
+ LIMITER = ClassId(int(overview.ClassID.LIMITER))
70
+ M_BUS_CLIENT = ClassId(int(overview.ClassID.M_BUS_CLIENT))
71
+ WIRELESS_MODE_Q_CHANNEL = ClassId(int(overview.ClassID.WIRELESS_MODE_Q_CHANNEL))
72
+ M_BUS_MASTER_PORT_SETUP = ClassId(int(overview.ClassID.M_BUS_MASTER_PORT_SETUP))
73
+ DLMS_COSEM_SERVER_M_BUS_PORT_SETUP = ClassId(int(overview.ClassID.DLMS_COSEM_SERVER_M_BUS_PORT_SETUP))
74
+ M_BUS_DIAGNOSTIC = ClassId(int(overview.ClassID.M_BUS_DIAGNOSTIC))
75
+ _61334_4_32_LLC_SSCS_SETUP = ClassId(int(overview.ClassID._61334_4_32_LLC_SSCS_SETUP))
76
+ PRIME_NB_OFDM_PLC_PHYSICAL_LAYER_COUNTERS = ClassId(int(overview.ClassID.PRIME_NB_OFDM_PLC_PHYSICAL_LAYER_COUNTERS))
77
+ PRIME_NB_OFDM_PLC_MAC_SETUP = ClassId(int(overview.ClassID.PRIME_NB_OFDM_PLC_MAC_SETUP))
78
+ PRIME_NB_OFDM_PLC_MAC_FUNCTIONAL_PARAMETERS = ClassId(int(overview.ClassID.PRIME_NB_OFDM_PLC_MAC_FUNCTIONAL_PARAMETERS))
79
+ PRIME_NB_OFDM_PLC_MAC_COUNTERS = ClassId(int(overview.ClassID.PRIME_NB_OFDM_PLC_MAC_COUNTERS))
80
+ PRIME_NB_OFDM_PLC_MAC_NETWORK_ADMINISTRATION_DATA = ClassId(int(overview.ClassID.PRIME_NB_OFDM_PLC_MAC_NETWORK_ADMINISTRATION_DATA))
81
+ PRIME_NB_OFDM_PLC_APPLICATION_IDENTIFICATION = ClassId(int(overview.ClassID.PRIME_NB_OFDM_PLC_APPLICATION_IDENTIFICATION))
82
+ G3_PLC_MAC_LAYER_COUNTERS = ClassId(int(overview.ClassID.G3_PLC_MAC_LAYER_COUNTERS))
83
+ G3_PLC_MAC_SETUP = ClassId(int(overview.ClassID.G3_PLC_MAC_SETUP))
84
+ G3_PLC_MAC_6LOWPAN_ADAPTATION_LAYER_SETUP = ClassId(int(overview.ClassID.G3_PLC_MAC_6LOWPAN_ADAPTATION_LAYER_SETUP))
85
+ WI_SUN_SETUP = ClassId(int(overview.ClassID.WI_SUN_SETUP))
86
+ WI_SUN_DIAGNOSTIC = ClassId(int(overview.ClassID.WI_SUN_DIAGNOSTIC))
87
+ RPL_DIAGNOSTIC = ClassId(int(overview.ClassID.RPL_DIAGNOSTIC))
88
+ MPL_DIAGNOSTIC = ClassId(int(overview.ClassID.MPL_DIAGNOSTIC))
89
+ NTP_SETUP = ClassId(int(overview.ClassID.NTP_SETUP))
90
+ ZIGBEE_SAS_STARTUP = ClassId(int(overview.ClassID.ZIGBEE_SAS_STARTUP))
91
+ ZIGBEE_SAS_JOIN = ClassId(int(overview.ClassID.ZIGBEE_SAS_JOIN))
92
+ ZIGBEE_SAS_APS_FRAGMENTATION = ClassId(int(overview.ClassID.ZIGBEE_SAS_APS_FRAGMENTATION))
93
+ ZIGBEE_NETWORK_CONTROL = ClassId(int(overview.ClassID.ZIGBEE_NETWORK_CONTROL))
94
+ ZIGBEE_TUNNEL_SETUP = ClassId(int(overview.ClassID.ZIGBEE_TUNNEL_SETUP))
95
+ ACCOUNT = ClassId(int(overview.ClassID.ACCOUNT))
96
+ CREDIT_INTERFACE_CLASS = ClassId(int(overview.ClassID.CREDIT_INTERFACE_CLASS))
97
+ CHARGE = ClassId(int(overview.ClassID.CHARGE))
98
+ TOKEN_GATEWAY = ClassId(int(overview.ClassID.TOKEN_GATEWAY))
99
+ FUNCTION_CONTROL = ClassId(int(overview.ClassID.FUNCTION_CONTROL))
100
+ ARRAY_MANAGER = ClassId(int(overview.ClassID.ARRAY_MANAGER))
101
+ COMMUNICATION_PORT_PROTECTION = ClassId(int(overview.ClassID.COMMUNICATION_PORT_PROTECTION))
102
+ SCHC_LPWAN_SETUP = ClassId(int(overview.ClassID.SCHC_LPWAN_SETUP))
103
+ SCHC_LPWAN_DIAGNOSTIC = ClassId(int(overview.ClassID.SCHC_LPWAN_DIAGNOSTIC))
104
+ LoRaWAN_SETUP = ClassId(int(overview.ClassID.LoRaWAN_SETUP))
105
+ LoRaWAN_DIAGNOSTIC = ClassId(int(overview.ClassID.LoRaWAN_DIAGNOSTIC))
106
+ ISO_IEC14908_IDENTIFICATION = ClassId(int(overview.ClassID.ISO_IEC14908_IDENTIFICATION))
107
+ ISO_IEC14908_PROTOCOL_SETUP = ClassId(int(overview.ClassID.ISO_IEC14908_PROTOCOL_SETUP))
108
+ ISO_IEC14908_PROTOCOL_STATUS = ClassId(int(overview.ClassID.ISO_IEC14908_PROTOCOL_STATUS))
109
+ ISO_IEC14908_PROTOCOL_DIAGNOSTIC = ClassId(int(overview.ClassID.ISO_IEC14908_PROTOCOL_DIAGNOSTIC))
110
+ HS_PLC_ISO_IEC_12139_1_MAC_SETUP = ClassId(int(overview.ClassID.HS_PLC_ISO_IEC_12139_1_MAC_SETUP))
111
+ HS_PLC_ISO_IEC_12139_1_CPAS_SETUP = ClassId(int(overview.ClassID.HS_PLC_ISO_IEC_12139_1_CPAS_SETUP))
112
+ HS_PLC_ISO_IEC_12139_1_IP_SSAS_SETUP = ClassId(int(overview.ClassID.HS_PLC_ISO_IEC_12139_1_IP_SSAS_SETUP))
113
+ HS_PLC_ISO_IEC_12139_1_HDLC_SSAS_SETUP = ClassId(int(overview.ClassID.HS_PLC_ISO_IEC_12139_1_HDLC_SSAS_SETUP))
114
+ LTE_MONITORING = ClassId(int(overview.ClassID.LTE_MONITORING))
115
+ CLIENT_SETUP = ClassId(int(overview.ClassID.CLIENT_SETUP))
116
+
117
+ @classmethod
118
+ def get_all_id(cls) -> tuple[int]:
119
+ """return all id container in build-in <int>"""
120
+ return tuple(map(int, filter(lambda it: isinstance(it, ClassId), cls.__dict__.values())))
121
+
122
+
123
+ class ServerSAP(cdt.LongUnsigned):
124
+
125
+ def validate(self):
126
+ if int.from_bytes(self.contents, 'big') > 0x3FFF:
127
+ raise ValueError(F'The range for the server_SAP is 0x000…0x3FFF, but got {self.contents.hex()}')
@@ -1,11 +1,11 @@
1
- from ...types import common_data_types as cdt
2
-
3
-
4
- class LDN(cdt.OctetString):
5
- """for ldn. todo: check length in initialisation"""
6
- def get_manufacturer(self) -> bytes:
7
- return self.contents[:3]
8
-
9
-
10
- class ID(cdt.OctetString):
11
- """for all implementation of Identifiers"""
1
+ from ...types import common_data_types as cdt
2
+
3
+
4
+ class LDN(cdt.OctetString):
5
+ """for ldn. todo: check length in initialisation"""
6
+ def get_manufacturer(self) -> bytes:
7
+ return self.contents[:3]
8
+
9
+
10
+ class ID(cdt.OctetString):
11
+ """for all implementation of Identifiers"""
@@ -1,64 +1,64 @@
1
- """ COMMON Structs """
2
- from abc import ABC, abstractmethod
3
- from ...types import common_data_types as cdt, cosem_service_types as cst
4
- from . import long_unsigneds
5
-
6
-
7
- class ActionItem(cdt.Structure):
8
- script_logical_name: cst.LogicalName
9
- script_selector: cdt.LongUnsigned
10
-
11
-
12
- class ValueDefinition(cdt.Structure):
13
- """ Defines an attribute of an object to be monitored. Only attributes with simple data types are allowed. """
14
- class_id: long_unsigneds.ClassId
15
- logical_name: cst.LogicalName
16
- attribute_index: cdt.Integer
17
-
18
-
19
- class RestrictionByDate(cdt.Structure):
20
- from_date: cst.OctetStringDate
21
- to_date: cst.OctetStringDate
22
-
23
-
24
- class RestrictionByEntry(cdt.Structure):
25
- from_entry: cdt.DoubleLongUnsigned
26
- to_entry: cdt.DoubleLongUnsigned
27
-
28
-
29
- class CaptureObjectDefinition(cdt.Structure):
30
- """ Capture objects that are assigned to the object instance. Upon a call of the capture (data) method or automatically
31
- in defined intervals, the selected attributes are copied into the buffer of the profile. """
32
- DEFAULT = b'\x02\x04\x12\x00\x08\x09\x06\x00\x00\x01\x00\x00\xff\x0f\x02\x12\x00\x00'
33
- class_id: long_unsigneds.ClassId
34
- logical_name: cst.LogicalName
35
- attribute_index: cdt.Integer
36
- data_index: cdt.LongUnsigned
37
-
38
- def __hash__(self):
39
- return int.from_bytes(self.logical_name.contents+self.attribute_index.contents+self.data_index.contents, 'big')
40
-
41
-
42
- class WindowElement(cdt.Structure):
43
- start_time: cst.OctetStringDateTime
44
- end_time: cst.OctetStringDateTime
45
-
46
-
47
- class AccessRight(cdt.Structure):
48
- """ TODO: maybe more nested description"""
49
- attribute_access: cdt.Array
50
- method_access: cdt.Array
51
-
52
-
53
- class ObjectListElement(cdt.Structure):
54
- """common for AssociationLN"""
55
- class_id: long_unsigneds.ClassId
56
- version: cdt.Unsigned
57
- logical_name: cst.LogicalName
58
- access_rights: AccessRight
59
-
60
-
61
- class UserListEntry(cdt.Structure):
62
- """user_list_entry"""
63
- user_id: cdt.Unsigned
64
- user_name: cdt.VisibleString
1
+ """ COMMON Structs """
2
+ from abc import ABC, abstractmethod
3
+ from ...types import common_data_types as cdt, cosem_service_types as cst
4
+ from . import long_unsigneds
5
+
6
+
7
+ class ActionItem(cdt.Structure):
8
+ script_logical_name: cst.LogicalName
9
+ script_selector: cdt.LongUnsigned
10
+
11
+
12
+ class ValueDefinition(cdt.Structure):
13
+ """ Defines an attribute of an object to be monitored. Only attributes with simple data types are allowed. """
14
+ class_id: long_unsigneds.ClassId
15
+ logical_name: cst.LogicalName
16
+ attribute_index: cdt.Integer
17
+
18
+
19
+ class RestrictionByDate(cdt.Structure):
20
+ from_date: cst.OctetStringDate
21
+ to_date: cst.OctetStringDate
22
+
23
+
24
+ class RestrictionByEntry(cdt.Structure):
25
+ from_entry: cdt.DoubleLongUnsigned
26
+ to_entry: cdt.DoubleLongUnsigned
27
+
28
+
29
+ class CaptureObjectDefinition(cdt.Structure):
30
+ """ Capture objects that are assigned to the object instance. Upon a call of the capture (data) method or automatically
31
+ in defined intervals, the selected attributes are copied into the buffer of the profile. """
32
+ DEFAULT = b'\x02\x04\x12\x00\x08\x09\x06\x00\x00\x01\x00\x00\xff\x0f\x02\x12\x00\x00'
33
+ class_id: long_unsigneds.ClassId
34
+ logical_name: cst.LogicalName
35
+ attribute_index: cdt.Integer
36
+ data_index: cdt.LongUnsigned
37
+
38
+ def __hash__(self):
39
+ return int.from_bytes(self.logical_name.contents+self.attribute_index.contents+self.data_index.contents, 'big')
40
+
41
+
42
+ class WindowElement(cdt.Structure):
43
+ start_time: cst.OctetStringDateTime
44
+ end_time: cst.OctetStringDateTime
45
+
46
+
47
+ class AccessRight(cdt.Structure):
48
+ """ TODO: maybe more nested description"""
49
+ attribute_access: cdt.Array
50
+ method_access: cdt.Array
51
+
52
+
53
+ class ObjectListElement(cdt.Structure):
54
+ """common for AssociationLN"""
55
+ class_id: long_unsigneds.ClassId
56
+ version: cdt.Unsigned
57
+ logical_name: cst.LogicalName
58
+ access_rights: AccessRight
59
+
60
+
61
+ class UserListEntry(cdt.Structure):
62
+ """user_list_entry"""
63
+ user_id: cdt.Unsigned
64
+ user_name: cdt.VisibleString