@@ -608,9 +608,10 @@ def getMetadata(self):
608
608
p .get_device_metadata_request = True
609
609
logging .info (f"Requesting device metadata" )
610
610
611
- return self ._sendAdmin (
611
+ self ._sendAdmin (
612
612
p , wantResponse = True , onResponse = self .onRequestGetMetadata
613
613
)
614
+ self .iface .waitForAckNak ()
614
615
615
616
def factoryReset (self ):
616
617
"""Tell the node to factory reset."""
@@ -713,24 +714,30 @@ def onRequestGetMetadata(self, p):
713
714
"""Handle the response packet for requesting device metadata getMetadata()"""
714
715
logging .debug (f"onRequestGetMetadata() p:{ p } " )
715
716
716
- if p ["decoded" ]["portnum" ] == portnums_pb2 .PortNum .Name (
717
- portnums_pb2 .PortNum .ROUTING_APP
718
- ):
717
+ if "routing" in p ["decoded" ]:
719
718
if p ["decoded" ]["routing" ]["errorReason" ] != "NONE" :
720
- logging .warning (
721
- f'Metadata request failed, error reason: { p ["decoded" ]["routing" ]["errorReason" ]} '
722
- )
723
- self ._timeout .expireTime = time .time () # Do not wait any longer
724
- return # Don't try to parse this routing message
725
- logging .debug (f"Retrying metadata request." )
726
- self .getMetadata ()
727
- return
719
+ print (f'Error on response: { p ["decoded" ]["routing" ]["errorReason" ]} ' )
720
+ self .iface ._acknowledgment .receivedNak = True
721
+ else :
722
+ self .iface ._acknowledgment .receivedAck = True
723
+ if p ["decoded" ]["portnum" ] == portnums_pb2 .PortNum .Name (
724
+ portnums_pb2 .PortNum .ROUTING_APP
725
+ ):
726
+ if p ["decoded" ]["routing" ]["errorReason" ] != "NONE" :
727
+ logging .warning (
728
+ f'Metadata request failed, error reason: { p ["decoded" ]["routing" ]["errorReason" ]} '
729
+ )
730
+ self ._timeout .expireTime = time .time () # Do not wait any longer
731
+ return # Don't try to parse this routing message
732
+ logging .debug (f"Retrying metadata request." )
733
+ self .getMetadata ()
734
+ return
728
735
729
- c = p ["decoded" ]["admin" ]["raw" ].get_device_metadata_response
730
- self ._timeout .reset () # We made forward progress
731
- logging .debug (f"Received metadata { stripnl (c )} " )
732
- print (f"\n firmware_version: { c .firmware_version } " )
733
- print (f"device_state_version: { c .device_state_version } " )
736
+ c = p ["decoded" ]["admin" ]["raw" ].get_device_metadata_response
737
+ self ._timeout .reset () # We made forward progress
738
+ logging .debug (f"Received metadata { stripnl (c )} " )
739
+ print (f"\n firmware_version: { c .firmware_version } " )
740
+ print (f"device_state_version: { c .device_state_version } " )
734
741
735
742
def onResponseRequestChannel (self , p ):
736
743
"""Handle the response packet for requesting a channel _requestChannel()"""
0 commit comments