File: config.py

package info (click to toggle)
python-bellows 0.40.5-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 992 kB
  • sloc: python: 13,630; sh: 7; makefile: 4
file content (280 lines) | stat: -rw-r--r-- 12,177 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
import voluptuous as vol

from bellows.config import cv_optional_int, cv_uint16
from bellows.types import EzspConfigId, EzspDecisionId, EzspPolicyId

EZSP_SCHEMA = {
    #
    # The number of packet buffers available to the stack. When set to the special
    # value 0xFF, the NCP will allocate all remaining configuration RAM towards
    # packet buffers, such that the resulting count will be the largest whole number
    # of packet buffers that can fit into the available memory
    vol.Optional(EzspConfigId.CONFIG_PACKET_BUFFER_COUNT.name): cv_optional_int(
        min=1, max=255
    ),
    # The maximum number of router neighbors the stack can keep track of. A neighbor
    # is a node within radio range
    vol.Optional(EzspConfigId.CONFIG_NEIGHBOR_TABLE_SIZE.name): cv_optional_int(
        min=8, max=16
    ),
    #
    # The maximum number of APS retried messages the stack can be transmitting at
    # any time
    vol.Optional(EzspConfigId.CONFIG_APS_UNICAST_MESSAGE_COUNT.name): cv_optional_int(
        min=0, max=255
    ),
    #
    # The maximum number of non-volatile bindings supported by the stack
    vol.Optional(EzspConfigId.CONFIG_BINDING_TABLE_SIZE.name): cv_optional_int(
        min=0, max=32
    ),
    #
    # The maximum number of EUI64 to network address associations that the stack can
    # maintain for the application. (Note: The total number of such address
    # associations maintained by the NCP is the sum of the value of this setting and
    # the value of EZSP_CONFIG_TRUST_CENTER_ADDRESS_CA CHE_SIZE)
    vol.Optional(EzspConfigId.CONFIG_ADDRESS_TABLE_SIZE.name): cv_optional_int(min=0),
    #
    # The maximum number of multicast groups that the device may be a member of
    vol.Optional(EzspConfigId.CONFIG_MULTICAST_TABLE_SIZE.name): cv_optional_int(
        min=0, max=255
    ),
    #
    # The maximum number of destinations to which a node can route messages. This
    # includes both messages originating at this node and those relayed for others
    vol.Optional(EzspConfigId.CONFIG_ROUTE_TABLE_SIZE.name): cv_optional_int(
        min=0, max=255
    ),
    #
    # The number of simultaneous route discoveries that a node will support
    vol.Optional(EzspConfigId.CONFIG_DISCOVERY_TABLE_SIZE.name): cv_optional_int(
        min=0, max=255
    ),
    #
    # The size of the alarm broadcast buffer
    vol.Optional(EzspConfigId.CONFIG_BROADCAST_ALARM_DATA_SIZE.name): cv_optional_int(
        min=0, max=16
    ),
    #
    # The size of the unicast alarm buffers allocated for end device children
    vol.Optional(EzspConfigId.CONFIG_UNICAST_ALARM_DATA_SIZE.name): cv_optional_int(
        min=0, max=16
    ),
    #
    # Specifies the stack profile
    vol.Optional(EzspConfigId.CONFIG_STACK_PROFILE.name): cv_optional_int(
        min=0, max=255
    ),
    #
    # The security level used for security at the MAC and network layers. The
    # supported values are 0 (no security) and 5 (payload is encrypted and a
    # four-byte MIC is used for authentication)
    vol.Optional(EzspConfigId.CONFIG_SECURITY_LEVEL.name): cv_optional_int(
        min=0, max=5
    ),
    #
    # The maximum number of hops for a message
    vol.Optional(EzspConfigId.CONFIG_MAX_HOPS.name): cv_optional_int(min=0, max=30),
    #
    # The maximum number of end device children that a router will support
    vol.Optional(EzspConfigId.CONFIG_MAX_END_DEVICE_CHILDREN.name): cv_optional_int(
        min=0, max=32
    ),
    #
    # The maximum amount of time that the MAC will hold a message for indirect
    # transmission to a child
    vol.Optional(
        EzspConfigId.CONFIG_INDIRECT_TRANSMISSION_TIMEOUT.name
    ): cv_optional_int(min=0, max=30000),
    #
    # The maximum amount of time that an end device child can wait between polls.
    # If no poll is heard within this timeout, then the parent removes the end
    # device from its tables. The timeout corresponding to a value of zero is 10
    # seconds. The timeout corresponding to a nonzero value N is 2^N minutes,
    # ranging from 2^1 = 2 minutes to 2^14 = 16384 minutes
    vol.Optional(EzspConfigId.CONFIG_END_DEVICE_POLL_TIMEOUT.name): cv_optional_int(
        min=0, max=255
    ),
    #
    # The maximum amount of time that a mobile node can wait between polls. If no
    # poll is heard within this timeout, then the parent removes the mobile node
    # from its tables
    vol.Optional(EzspConfigId.CONFIG_MOBILE_NODE_POLL_TIMEOUT.name): cv_optional_int(
        min=0
    ),
    #
    # The number of child table entries reserved for use only by mobile nodes
    vol.Optional(
        EzspConfigId.CONFIG_RESERVED_MOBILE_CHILD_ENTRIES.name
    ): cv_optional_int(min=0, max=254),
    #
    # Enables boost power mode and/or the alternate transmitter output
    vol.Optional(EzspConfigId.CONFIG_TX_POWER_MODE.name): cv_optional_int(min=0, max=3),
    #
    # 0: Allow this node to relay messages. 1: Prevent this node from relaying
    # messages
    vol.Optional(EzspConfigId.CONFIG_DISABLE_RELAY.name): cv_optional_int(min=0, max=1),
    #
    # The maximum number of EUI64 to network address associations that the Trust
    # Center can maintain. These address cache entries are reserved for and reused
    # by the Trust Center when processing device join/rejoin authentications. This
    # cache size limits the number of overlapping joins the Trust Center can process
    # within a narrow time window (e.g. two seconds), and thus should be set to the
    # maximum number of near simultaneous joins the Trust Center is expected to
    # accommodate. (Note: The total number of such address associations maintained
    # by the NCP is the sum of the value of this setting and the value of
    # EZSP_CONFIG_ADDRESS_TABLE_SIZE)
    vol.Optional(
        EzspConfigId.CONFIG_TRUST_CENTER_ADDRESS_CACHE_SIZE.name
    ): cv_optional_int(min=0),
    #
    # The size of the source route table
    vol.Optional(EzspConfigId.CONFIG_SOURCE_ROUTE_TABLE_SIZE.name): cv_optional_int(
        min=0
    ),
    # The units used for timing out end devices on their parent
    vol.Optional(
        EzspConfigId.CONFIG_END_DEVICE_POLL_TIMEOUT_SHIFT.name
    ): cv_optional_int(min=0, max=10),
    #
    # The number of blocks of a fragmented message that can be sent in a single
    # window
    vol.Optional(EzspConfigId.CONFIG_FRAGMENT_WINDOW_SIZE.name): cv_optional_int(
        min=0, max=8
    ),
    #
    # The time (ms) the stack will wait between sending blocks of a fragmented
    # message
    vol.Optional(EzspConfigId.CONFIG_FRAGMENT_DELAY_MS.name): cv_optional_int(min=0),
    #
    # The size of the Key Table used for storing individual link keys (if the device
    # is a Trust Center) or Application Link Keys (if the device is a normal node)
    vol.Optional(EzspConfigId.CONFIG_KEY_TABLE_SIZE.name): cv_optional_int(min=0),
    #
    # The APS ACK timeout value (ms). The stack waits this amount of time between
    # resends of APS retried messages
    vol.Optional(EzspConfigId.CONFIG_APS_ACK_TIMEOUT.name): cv_optional_int(min=0),
    #
    # The duration of an active scan 15/4 scan duration units. This also controls
    # the jitter used when responding to a beacon request
    vol.Optional(EzspConfigId.CONFIG_ACTIVE_SCAN_DURATION.name): cv_optional_int(
        min=0, max=6
    ),
    #
    # The time (seoonds) the coordinator will wait for a second end device bind
    # request to arrive
    vol.Optional(EzspConfigId.CONFIG_END_DEVICE_BIND_TIMEOUT.name): cv_optional_int(
        min=1
    ),
    #
    # The number of PAN id conflict reports that must be received by the network
    # manager within one minute to trigger a PAN id change
    vol.Optional(
        EzspConfigId.CONFIG_PAN_ID_CONFLICT_REPORT_THRESHOLD.name
    ): cv_optional_int(min=1, max=63),
    #
    # The timeout value in minutes for how long the Trust Center or a normal node
    # waits for the ZigBee Request Key to complete. On the Trust Center this
    # controls whether or not the device buffers the request, waiting for a matching
    # pair of ZigBee Request Key. If the value is non-zero, the Trust Center buffers
    # and waits for that amount of time. If the value is zero, the Trust Center does
    # not buffer the request and immediately responds to the request. Zero is the
    # most compliant behavior
    vol.Optional(EzspConfigId.CONFIG_REQUEST_KEY_TIMEOUT.name): cv_optional_int(
        min=0, max=10
    ),
    #
    # This value indicates the size of the runtime modifiable certificate table.
    # Normally certificates are stored in MFG tokens but this table can be used to
    # field upgrade devices with new Smart Energy certificates. This value cannot be
    # set, it can only be queried
    vol.Optional(EzspConfigId.CONFIG_CERTIFICATE_TABLE_SIZE.name): cv_optional_int(
        min=0, max=1
    ),
    #
    # This is a bitmask that controls which incoming ZDO request messages are passed
    # to the application. The bits are defined in the EmberZdoConfigurationFlags
    # enumeration. To see if the application is required to send a ZDO response in
    # reply to an incoming message, the application must check the APS options
    # bitfield within the incomingMessageHandler callback to see if the
    # EMBER_APS_OPTION_ZDO_RESPONSE_REQUIRED flag is set
    vol.Optional(EzspConfigId.CONFIG_APPLICATION_ZDO_FLAGS.name): cv_optional_int(
        min=0, max=255
    ),
    #
    # The maximum number of broadcasts during a single broadcast timeout period
    vol.Optional(EzspConfigId.CONFIG_BROADCAST_TABLE_SIZE.name): cv_optional_int(
        min=15, max=254
    ),
    #
    # The size of the MAC filter list table
    vol.Optional(EzspConfigId.CONFIG_MAC_FILTER_TABLE_SIZE.name): cv_optional_int(
        min=0, max=254
    ),
    #
    # The number of supported networks
    vol.Optional(EzspConfigId.CONFIG_SUPPORTED_NETWORKS.name): cv_optional_int(
        min=1, max=2
    ),
    #
    # Whether multicasts are sent to the RxOnWhenIdle=true address (0xFFFD) or the
    # sleepy broadcast address (0xFFFF). The RxOnWhenIdle=true address is the ZigBee
    # compliant destination for multicasts. 0=false, 1=true
    vol.Optional(
        EzspConfigId.CONFIG_SEND_MULTICASTS_TO_SLEEPY_ADDRESS.name
    ): cv_optional_int(min=0, max=1),
    #
    # ZLL group address initial configuration
    vol.Optional(EzspConfigId.CONFIG_ZLL_GROUP_ADDRESSES.name): cv_optional_int(
        min=0, max=255
    ),
    #
    # ZLL RSSI threshold initial configuration
    vol.Optional(EzspConfigId.CONFIG_ZLL_RSSI_THRESHOLD.name): cv_optional_int(
        min=-128, max=127
    ),
    #
    # The maximum number of pairings supported by the stack. Controllers must
    # support at least one pairing table entry while targets must support at
    # least five
    vol.Optional(EzspConfigId.CONFIG_RF4CE_PAIRING_TABLE_SIZE.name): cv_optional_int(
        min=0, max=126
    ),
    #
    # The maximum number of outgoing RF4CE packets supported by the stack
    vol.Optional(
        EzspConfigId.CONFIG_RF4CE_PENDING_OUTGOING_PACKET_TABLE_SIZE.name
    ): cv_optional_int(min=0, max=16),
    #
    # Toggles the MTORR flow control in the stack. 0=false, 1=true
    vol.Optional(EzspConfigId.CONFIG_MTORR_FLOW_CONTROL.name): cv_optional_int(
        min=0, max=1
    ),
    #
    # Deprecated
    # The amount of time a trust center will store a transient key
    # with which a device can use to join the network
    vol.Optional(EzspConfigId.CONFIG_TRANSIENT_KEY_TIMEOUT_S.name): cv_optional_int(
        min=0, max=65535
    ),
}

EZSP_POLICIES_SHARED = {
    vol.Optional(
        EzspPolicyId.TC_KEY_REQUEST_POLICY.name,
        default=EzspDecisionId.ALLOW_TC_KEY_REQUESTS_AND_SEND_CURRENT_KEY,
    ): cv_uint16,
    vol.Optional(
        EzspPolicyId.APP_KEY_REQUEST_POLICY.name,
        default=EzspDecisionId.DENY_APP_KEY_REQUESTS,
    ): cv_uint16,
    vol.Optional(
        EzspPolicyId.TRUST_CENTER_POLICY.name,
        default=EzspDecisionId.ALLOW_PRECONFIGURED_KEY_JOINS,
    ): cv_uint16,
}

EZSP_POLICIES_SCH = {
    **EZSP_POLICIES_SHARED,
    **{vol.Optional(policy.name): cv_uint16 for policy in EzspPolicyId},
}