DLMS-SPODES 0.87.17__py3-none-any.whl → 0.88.1__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.
- DLMS_SPODES/Values/EN/__init__.py +1 -1
- DLMS_SPODES/Values/EN/actors.py +8 -8
- DLMS_SPODES/Values/EN/relation_to_obis_names.py +387 -387
- DLMS_SPODES/Values/RU/__init__.py +1 -1
- DLMS_SPODES/Values/RU/actors.py +8 -8
- DLMS_SPODES/Values/RU/relation_to_obis_names.py +396 -396
- DLMS_SPODES/__init__.py +6 -6
- DLMS_SPODES/configEN.ini +126 -126
- DLMS_SPODES/config_parser.py +53 -53
- DLMS_SPODES/cosem_interface_classes/Overview/__init__.py +0 -0
- DLMS_SPODES/cosem_interface_classes/Overview/class_id.py +107 -0
- DLMS_SPODES/cosem_interface_classes/__class_init__.py +3 -3
- DLMS_SPODES/cosem_interface_classes/__init__.py +3 -2
- DLMS_SPODES/cosem_interface_classes/activity_calendar.py +210 -254
- DLMS_SPODES/cosem_interface_classes/arbitrator.py +78 -105
- DLMS_SPODES/cosem_interface_classes/association_ln/abstract.py +50 -34
- DLMS_SPODES/cosem_interface_classes/association_ln/authentication_mechanism_name.py +25 -25
- DLMS_SPODES/cosem_interface_classes/association_ln/mechanism_id.py +25 -25
- DLMS_SPODES/cosem_interface_classes/association_ln/method.py +5 -5
- DLMS_SPODES/cosem_interface_classes/association_ln/ver0.py +440 -485
- DLMS_SPODES/cosem_interface_classes/association_ln/ver1.py +126 -133
- DLMS_SPODES/cosem_interface_classes/association_ln/ver2.py +30 -36
- DLMS_SPODES/cosem_interface_classes/association_ln/ver3.py +3 -4
- DLMS_SPODES/cosem_interface_classes/association_sn/ver0.py +14 -12
- DLMS_SPODES/cosem_interface_classes/clock.py +81 -131
- DLMS_SPODES/cosem_interface_classes/collection.py +2106 -2122
- DLMS_SPODES/cosem_interface_classes/cosem_interface_class.py +525 -583
- DLMS_SPODES/cosem_interface_classes/data.py +12 -21
- DLMS_SPODES/cosem_interface_classes/demand_register/ver0.py +32 -59
- DLMS_SPODES/cosem_interface_classes/disconnect_control.py +56 -74
- DLMS_SPODES/cosem_interface_classes/extended_register.py +18 -27
- DLMS_SPODES/cosem_interface_classes/gprs_modem_setup.py +33 -43
- DLMS_SPODES/cosem_interface_classes/gsm_diagnostic/ver0.py +78 -103
- DLMS_SPODES/cosem_interface_classes/gsm_diagnostic/ver1.py +42 -40
- DLMS_SPODES/cosem_interface_classes/gsm_diagnostic/ver2.py +6 -9
- DLMS_SPODES/cosem_interface_classes/iec_hdlc_setup/ver0.py +11 -11
- DLMS_SPODES/cosem_interface_classes/iec_hdlc_setup/ver1.py +27 -53
- DLMS_SPODES/cosem_interface_classes/iec_local_port_setup.py +9 -11
- DLMS_SPODES/cosem_interface_classes/image_transfer/image_transfer_status.py +15 -15
- DLMS_SPODES/cosem_interface_classes/image_transfer/ver0.py +54 -126
- DLMS_SPODES/cosem_interface_classes/implementations/__init__.py +3 -3
- DLMS_SPODES/cosem_interface_classes/implementations/arbitrator.py +19 -19
- DLMS_SPODES/cosem_interface_classes/implementations/data.py +491 -487
- DLMS_SPODES/cosem_interface_classes/implementations/profile_generic.py +85 -83
- DLMS_SPODES/cosem_interface_classes/ipv4_setup.py +42 -72
- DLMS_SPODES/cosem_interface_classes/limiter.py +77 -111
- DLMS_SPODES/cosem_interface_classes/ln_pattern.py +334 -333
- DLMS_SPODES/cosem_interface_classes/modem_configuration/ver0.py +51 -65
- DLMS_SPODES/cosem_interface_classes/modem_configuration/ver1.py +27 -39
- DLMS_SPODES/cosem_interface_classes/ntp_setup/ver0.py +48 -67
- DLMS_SPODES/cosem_interface_classes/obis.py +28 -23
- DLMS_SPODES/cosem_interface_classes/overview.py +198 -197
- DLMS_SPODES/cosem_interface_classes/parameter.py +548 -547
- DLMS_SPODES/cosem_interface_classes/parameters.py +172 -172
- DLMS_SPODES/cosem_interface_classes/profile_generic/ver0.py +90 -133
- DLMS_SPODES/cosem_interface_classes/profile_generic/ver1.py +268 -277
- DLMS_SPODES/cosem_interface_classes/push_setup/ver0.py +13 -12
- DLMS_SPODES/cosem_interface_classes/push_setup/ver1.py +9 -10
- DLMS_SPODES/cosem_interface_classes/push_setup/ver2.py +124 -166
- DLMS_SPODES/cosem_interface_classes/register.py +18 -45
- DLMS_SPODES/cosem_interface_classes/register_activation/ver0.py +45 -80
- DLMS_SPODES/cosem_interface_classes/register_monitor.py +33 -46
- DLMS_SPODES/cosem_interface_classes/reports.py +72 -70
- DLMS_SPODES/cosem_interface_classes/schedule.py +88 -176
- DLMS_SPODES/cosem_interface_classes/script_table.py +54 -87
- DLMS_SPODES/cosem_interface_classes/security_setup/ver0.py +45 -68
- DLMS_SPODES/cosem_interface_classes/security_setup/ver1.py +122 -158
- DLMS_SPODES/cosem_interface_classes/single_action_schedule.py +34 -50
- DLMS_SPODES/cosem_interface_classes/special_days_table.py +54 -84
- DLMS_SPODES/cosem_interface_classes/tcp_udp_setup.py +20 -42
- DLMS_SPODES/cosem_pdu.py +93 -93
- DLMS_SPODES/enums.py +625 -625
- DLMS_SPODES/exceptions.py +106 -106
- DLMS_SPODES/firmwares.py +99 -99
- DLMS_SPODES/hdlc/frame.py +875 -875
- DLMS_SPODES/hdlc/sub_layer.py +54 -54
- DLMS_SPODES/literals.py +17 -17
- DLMS_SPODES/obis/__init__.py +1 -1
- DLMS_SPODES/obis/media_id.py +931 -931
- DLMS_SPODES/pardata.py +22 -22
- DLMS_SPODES/pdu_enums.py +98 -98
- DLMS_SPODES/relation_to_OBIS.py +463 -465
- DLMS_SPODES/settings.py +551 -551
- DLMS_SPODES/types/choices.py +140 -142
- DLMS_SPODES/types/common_data_types.py +2379 -2401
- DLMS_SPODES/types/cosem_service_types.py +109 -109
- DLMS_SPODES/types/implementations/arrays.py +25 -25
- DLMS_SPODES/types/implementations/bitstrings.py +97 -97
- DLMS_SPODES/types/implementations/double_long_usingneds.py +35 -35
- DLMS_SPODES/types/implementations/enums.py +57 -57
- DLMS_SPODES/types/implementations/integers.py +12 -11
- DLMS_SPODES/types/implementations/long_unsigneds.py +127 -127
- DLMS_SPODES/types/implementations/octet_string.py +11 -11
- DLMS_SPODES/types/implementations/structs.py +64 -64
- DLMS_SPODES/types/type_alias.py +74 -0
- DLMS_SPODES/types/useful_types.py +627 -677
- {dlms_spodes-0.87.17.dist-info → dlms_spodes-0.88.1.dist-info}/METADATA +30 -30
- dlms_spodes-0.88.1.dist-info/RECORD +118 -0
- {dlms_spodes-0.87.17.dist-info → dlms_spodes-0.88.1.dist-info}/WHEEL +1 -1
- DLMS_SPODES/cosem_interface_classes/a_parameter.py +0 -20
- DLMS_SPODES/cosem_interface_classes/attr_indexes.py +0 -12
- dlms_spodes-0.87.17.dist-info/RECORD +0 -117
- {dlms_spodes-0.87.17.dist-info → dlms_spodes-0.88.1.dist-info}/top_level.txt +0 -0
DLMS_SPODES/pardata.py
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
from dataclasses import dataclass
|
|
2
|
-
from .cosem_interface_classes.parameter import Parameter
|
|
3
|
-
from typing import Optional, Iterator
|
|
4
|
-
from .types import cdt
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
@dataclass(frozen=True)
|
|
8
|
-
class ParValues[T]:
|
|
9
|
-
par: Parameter
|
|
10
|
-
data: T
|
|
11
|
-
|
|
12
|
-
def __iter__(self) -> Iterator[Parameter | T]:
|
|
13
|
-
yield self.par
|
|
14
|
-
yield self.data
|
|
15
|
-
|
|
16
|
-
def __str__(self):
|
|
17
|
-
return F"{self.par} - {self.data}"
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
@dataclass(frozen=True)
|
|
21
|
-
class ParData(ParValues[cdt.CommonDataType]):
|
|
22
|
-
data: cdt.CommonDataType
|
|
1
|
+
from dataclasses import dataclass
|
|
2
|
+
from .cosem_interface_classes.parameter import Parameter
|
|
3
|
+
from typing import Optional, Iterator
|
|
4
|
+
from .types import cdt
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
@dataclass(frozen=True)
|
|
8
|
+
class ParValues[T]:
|
|
9
|
+
par: Parameter
|
|
10
|
+
data: T
|
|
11
|
+
|
|
12
|
+
def __iter__(self) -> Iterator[Parameter | T]:
|
|
13
|
+
yield self.par
|
|
14
|
+
yield self.data
|
|
15
|
+
|
|
16
|
+
def __str__(self):
|
|
17
|
+
return F"{self.par} - {self.data}"
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
@dataclass(frozen=True)
|
|
21
|
+
class ParData(ParValues[cdt.CommonDataType]):
|
|
22
|
+
data: cdt.CommonDataType
|
DLMS_SPODES/pdu_enums.py
CHANGED
|
@@ -1,98 +1,98 @@
|
|
|
1
|
-
from enum import IntEnum, IntFlag
|
|
2
|
-
from typing import TypeAlias
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
class DataAccessResult(IntEnum):
|
|
6
|
-
SUCCESS = 0
|
|
7
|
-
HARDWARE_FAULT = 1
|
|
8
|
-
TEMPORARY_FAILURE = 2
|
|
9
|
-
READ_WRITE_DENIED = 3
|
|
10
|
-
OBJECT_UNDEFINED = 4
|
|
11
|
-
OBJECT_CLASS_INCONSISTENT = 9
|
|
12
|
-
OBJECT_UNAVAILABLE = 11
|
|
13
|
-
TYPE_UNMATCHED = 12
|
|
14
|
-
SCOPE_OF_ACCESS_VIOLATED = 13
|
|
15
|
-
DATA_BLOCK_UNAVAILABLE = 14
|
|
16
|
-
LONG_GET_ABORTED = 15
|
|
17
|
-
NO_LONG_GET_IN_PROGRESS = 16
|
|
18
|
-
LONG_SET_ABORTED = 17
|
|
19
|
-
NO_LONG_SET_IN_PROGRESS = 18
|
|
20
|
-
DATA_BLOCK_NUMBER_INVALID = 19
|
|
21
|
-
OTHER_REASON = 250
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
class GetResponse(IntEnum):
|
|
25
|
-
NORMAL = 1
|
|
26
|
-
WITH_DATABLOCK = 2
|
|
27
|
-
WITH_LIST = 3
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
class SetResponse(IntEnum):
|
|
31
|
-
NORMAL = 1
|
|
32
|
-
DATABLOCK = 2
|
|
33
|
-
LAST_DATABLOCK = 3
|
|
34
|
-
LAST_DATABLOCK_WITH_LIST = 4
|
|
35
|
-
WITH_LIST = 5
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
class ActionResult(IntEnum):
|
|
39
|
-
SUCCESS = 0
|
|
40
|
-
HARDWARE_FAULT = 1
|
|
41
|
-
TEMPORARY_FAILURE = 2
|
|
42
|
-
READ_WRITE_DENIED = 3
|
|
43
|
-
OBJECT_UNDEFINED = 4
|
|
44
|
-
OBJECT_CLASS_INCONSISTENT = 9
|
|
45
|
-
OBJECT_UNAVAILABLE = 11
|
|
46
|
-
TYPE_UNMATCHED = 12
|
|
47
|
-
SCOPE_OF_ACCESS_VIOLATED = 13
|
|
48
|
-
DATA_BLOCK_UNAVAILABLE = 14
|
|
49
|
-
LONG_ACTION_ABORTED = 15
|
|
50
|
-
NO_LONG_ACTION_IN_PROGRESS = 16
|
|
51
|
-
OTHER_REASON = 250
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
class ActionResponse(IntEnum):
|
|
55
|
-
NORMAL = 1
|
|
56
|
-
WITH_PBLOCK = 2
|
|
57
|
-
WITH_LIST = 3
|
|
58
|
-
NEXT_PBLOCK = 4
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
class AttributeAccess(IntEnum):
|
|
62
|
-
"""use with version 0 and 1 AssociationLN"""
|
|
63
|
-
NO_ACCESS = 0
|
|
64
|
-
READ_ONLY = 1
|
|
65
|
-
WRITE_ONLY = 2
|
|
66
|
-
READ_AND_WRITE = 3
|
|
67
|
-
AUTHENTICATED_READ_ONLY = 4
|
|
68
|
-
AUTHENTICATED_WRITE_ONLY = 5
|
|
69
|
-
AUTHENTICATED_READ_AND_WRITE = 6
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
class MethodAccess(IntEnum):
|
|
73
|
-
"""use with version 0 and 1 AssociationLN"""
|
|
74
|
-
NO_ACCESS = 0
|
|
75
|
-
ACCESS = 1
|
|
76
|
-
AUTHENTICATED_ACCESS = 2
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
class SecurityPolicyVer0(IntEnum):
|
|
80
|
-
NOTHING = 0
|
|
81
|
-
AUTHENTICATED = 1
|
|
82
|
-
ENCRYPTED = 2
|
|
83
|
-
AUTHENTICATED_AND_ENCRYPTED = 3
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
class SecurityPolicyVer1(IntFlag):
|
|
87
|
-
NOTHING = 0
|
|
88
|
-
UNUSED_0 = 0b1
|
|
89
|
-
UNUSED_1 = 0b10
|
|
90
|
-
AUTHENTICATED_REQUEST = 0b100
|
|
91
|
-
ENCRYPTED_REQUEST = 0b1000
|
|
92
|
-
DIGITALLY_SIGNED_REQUEST = 0b1_0000
|
|
93
|
-
AUTHENTICATED_RESPONSE = 0b10_0000
|
|
94
|
-
ENCRYPTED_RESPONSE = 0b100_0000
|
|
95
|
-
DIGITALLY_SIGNED_RESPONSE = 0b1000_0000
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
SecurityPolicy: TypeAlias = SecurityPolicyVer0 | SecurityPolicyVer1
|
|
1
|
+
from enum import IntEnum, IntFlag
|
|
2
|
+
from typing import TypeAlias
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class DataAccessResult(IntEnum):
|
|
6
|
+
SUCCESS = 0
|
|
7
|
+
HARDWARE_FAULT = 1
|
|
8
|
+
TEMPORARY_FAILURE = 2
|
|
9
|
+
READ_WRITE_DENIED = 3
|
|
10
|
+
OBJECT_UNDEFINED = 4
|
|
11
|
+
OBJECT_CLASS_INCONSISTENT = 9
|
|
12
|
+
OBJECT_UNAVAILABLE = 11
|
|
13
|
+
TYPE_UNMATCHED = 12
|
|
14
|
+
SCOPE_OF_ACCESS_VIOLATED = 13
|
|
15
|
+
DATA_BLOCK_UNAVAILABLE = 14
|
|
16
|
+
LONG_GET_ABORTED = 15
|
|
17
|
+
NO_LONG_GET_IN_PROGRESS = 16
|
|
18
|
+
LONG_SET_ABORTED = 17
|
|
19
|
+
NO_LONG_SET_IN_PROGRESS = 18
|
|
20
|
+
DATA_BLOCK_NUMBER_INVALID = 19
|
|
21
|
+
OTHER_REASON = 250
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class GetResponse(IntEnum):
|
|
25
|
+
NORMAL = 1
|
|
26
|
+
WITH_DATABLOCK = 2
|
|
27
|
+
WITH_LIST = 3
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class SetResponse(IntEnum):
|
|
31
|
+
NORMAL = 1
|
|
32
|
+
DATABLOCK = 2
|
|
33
|
+
LAST_DATABLOCK = 3
|
|
34
|
+
LAST_DATABLOCK_WITH_LIST = 4
|
|
35
|
+
WITH_LIST = 5
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
class ActionResult(IntEnum):
|
|
39
|
+
SUCCESS = 0
|
|
40
|
+
HARDWARE_FAULT = 1
|
|
41
|
+
TEMPORARY_FAILURE = 2
|
|
42
|
+
READ_WRITE_DENIED = 3
|
|
43
|
+
OBJECT_UNDEFINED = 4
|
|
44
|
+
OBJECT_CLASS_INCONSISTENT = 9
|
|
45
|
+
OBJECT_UNAVAILABLE = 11
|
|
46
|
+
TYPE_UNMATCHED = 12
|
|
47
|
+
SCOPE_OF_ACCESS_VIOLATED = 13
|
|
48
|
+
DATA_BLOCK_UNAVAILABLE = 14
|
|
49
|
+
LONG_ACTION_ABORTED = 15
|
|
50
|
+
NO_LONG_ACTION_IN_PROGRESS = 16
|
|
51
|
+
OTHER_REASON = 250
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
class ActionResponse(IntEnum):
|
|
55
|
+
NORMAL = 1
|
|
56
|
+
WITH_PBLOCK = 2
|
|
57
|
+
WITH_LIST = 3
|
|
58
|
+
NEXT_PBLOCK = 4
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
class AttributeAccess(IntEnum):
|
|
62
|
+
"""use with version 0 and 1 AssociationLN"""
|
|
63
|
+
NO_ACCESS = 0
|
|
64
|
+
READ_ONLY = 1
|
|
65
|
+
WRITE_ONLY = 2
|
|
66
|
+
READ_AND_WRITE = 3
|
|
67
|
+
AUTHENTICATED_READ_ONLY = 4
|
|
68
|
+
AUTHENTICATED_WRITE_ONLY = 5
|
|
69
|
+
AUTHENTICATED_READ_AND_WRITE = 6
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
class MethodAccess(IntEnum):
|
|
73
|
+
"""use with version 0 and 1 AssociationLN"""
|
|
74
|
+
NO_ACCESS = 0
|
|
75
|
+
ACCESS = 1
|
|
76
|
+
AUTHENTICATED_ACCESS = 2
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
class SecurityPolicyVer0(IntEnum):
|
|
80
|
+
NOTHING = 0
|
|
81
|
+
AUTHENTICATED = 1
|
|
82
|
+
ENCRYPTED = 2
|
|
83
|
+
AUTHENTICATED_AND_ENCRYPTED = 3
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
class SecurityPolicyVer1(IntFlag):
|
|
87
|
+
NOTHING = 0
|
|
88
|
+
UNUSED_0 = 0b1
|
|
89
|
+
UNUSED_1 = 0b10
|
|
90
|
+
AUTHENTICATED_REQUEST = 0b100
|
|
91
|
+
ENCRYPTED_REQUEST = 0b1000
|
|
92
|
+
DIGITALLY_SIGNED_REQUEST = 0b1_0000
|
|
93
|
+
AUTHENTICATED_RESPONSE = 0b10_0000
|
|
94
|
+
ENCRYPTED_RESPONSE = 0b100_0000
|
|
95
|
+
DIGITALLY_SIGNED_RESPONSE = 0b1000_0000
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
SecurityPolicy: TypeAlias = SecurityPolicyVer0 | SecurityPolicyVer1
|