@@ -38,7 +38,7 @@ class Command(t.uint8_t, enum.Enum):
3838 ),
3939 Command .change_network_state : (t .uint8_t , ),
4040 Command .device_state : (t .uint8_t , t .uint8_t , t .uint8_t ),
41- Command .read_parameter : (t .uint16_t , t .uint8_t ),
41+ Command .read_parameter : (t .uint16_t , t .uint8_t , t . Bytes ),
4242 Command .version : (),
4343 Command .write_parameter : (t .uint16_t , t .uint8_t , t .Bytes ),
4444}
@@ -88,21 +88,21 @@ class NetworkParameter(t.uint8_t, enum.Enum):
8888
8989
9090NETWORK_PARAMETER_SCHEMA = {
91- NetworkParameter .mac_address : t .EUI64 ,
92- NetworkParameter .nwk_panid : t . uint16_t ,
93- NetworkParameter .nwk_address : t . uint16_t ,
94- NetworkParameter .nwk_extended_panid : t . uint64_t ,
95- NetworkParameter .aps_designed_coordinator : t .uint8_t ,
96- NetworkParameter .channel_mask : t .uint32_t ,
97- NetworkParameter .aps_extended_panid : t . uint64_t ,
98- NetworkParameter .trust_center_address : t . uint64_t ,
99- NetworkParameter .security_mode : t .uint8_t ,
100- NetworkParameter .network_key : t .uint8_t ,
101- NetworkParameter .current_channel : t .uint8_t ,
102- NetworkParameter .permit_join : t .uint8_t ,
103- NetworkParameter .protocol_version : t .uint16_t ,
104- NetworkParameter .nwk_update_id : t .uint8_t ,
105- NetworkParameter .watchdog_ttl : t .uint32_t ,
91+ NetworkParameter .mac_address : ( t .EUI64 , ) ,
92+ NetworkParameter .nwk_panid : ( t . PanId , ) ,
93+ NetworkParameter .nwk_address : ( t . NWK , ) ,
94+ NetworkParameter .nwk_extended_panid : ( t . ExtendedPanId , ) ,
95+ NetworkParameter .aps_designed_coordinator : ( t .uint8_t , ) ,
96+ NetworkParameter .channel_mask : ( t .uint32_t , ) ,
97+ NetworkParameter .aps_extended_panid : ( t . ExtendedPanId , ) ,
98+ NetworkParameter .trust_center_address : ( t . EUI64 , ) ,
99+ NetworkParameter .security_mode : ( t .uint8_t , ) ,
100+ NetworkParameter .network_key : ( t .uint8_t , t . Key , ) ,
101+ NetworkParameter .current_channel : ( t .uint8_t , ) ,
102+ NetworkParameter .permit_join : ( t .uint8_t , ) ,
103+ NetworkParameter .protocol_version : ( t .uint16_t , ) ,
104+ NetworkParameter .nwk_update_id : ( t .uint8_t , ) ,
105+ NetworkParameter .watchdog_ttl : ( t .uint32_t , ) ,
106106}
107107
108108
@@ -231,7 +231,7 @@ def change_network_state(self, state):
231231 def _handle_change_network_state (self , data ):
232232 LOGGER .debug ("Change network state response: %s" , NetworkState (data [0 ]).name )
233233
234- async def read_parameter (self , id_ ):
234+ async def read_parameter (self , id_ , * args ):
235235 try :
236236 if isinstance (id_ , str ):
237237 param = NetworkParameter [id_ ]
@@ -240,15 +240,16 @@ async def read_parameter(self, id_):
240240 except (KeyError , ValueError ):
241241 raise KeyError ("Unknown parameter id: %s" % (id_ , ))
242242
243- r = await self ._command (Command .read_parameter , 1 , param )
244- data = NETWORK_PARAMETER_SCHEMA [param ].deserialize (r [2 ])[0 ]
243+ data = t .serialize (args , NETWORK_PARAMETER_SCHEMA [param ])
244+ r = await self ._command (Command .read_parameter , 1 + len (data ), param , data )
245+ data = t .deserialize (r [2 ], NETWORK_PARAMETER_SCHEMA [param ])[0 ]
245246 LOGGER .debug ("Read parameter %s response: %s" , param .name , data )
246247 return data
247248
248249 def _handle_read_parameter (self , data ):
249250 pass
250251
251- def write_parameter (self , id_ , value ):
252+ def write_parameter (self , id_ , * args ):
252253 try :
253254 if isinstance (id_ , str ):
254255 param = NetworkParameter [id_ ]
@@ -257,7 +258,7 @@ def write_parameter(self, id_, value):
257258 except (KeyError , ValueError ):
258259 raise KeyError ("Unknown parameter id: %s write request" % (id_ ,))
259260
260- v = NETWORK_PARAMETER_SCHEMA [param ]( value ). serialize ( )
261+ v = t . serialize ( args , NETWORK_PARAMETER_SCHEMA [param ])
261262 length = len (v ) + 1
262263 return self ._command (Command .write_parameter , length , param , v )
263264
@@ -271,7 +272,7 @@ def _handle_write_parameter(self, data):
271272 LOGGER .debug ("Write parameter %s: SUCCESS" , param .name )
272273
273274 async def version (self ):
274- self ._proto_ver = await self [NetworkParameter .protocol_version ]
275+ self ._proto_ver , = await self [NetworkParameter .protocol_version ]
275276 version = await self ._command (Command .version )
276277 if self .protocol_version >= MIN_PROTO_VERSION and \
277278 (version [0 ] & 0x0000FF00 ) == 0x00000500 :
0 commit comments