From cc2067b729faf7c4da39af2bb1d1f606f5c6f4ed Mon Sep 17 00:00:00 2001 From: Ian McEwen Date: Wed, 11 Sep 2024 17:10:04 -0700 Subject: [PATCH] clean up settings response to use CopyFrom to be better at repeated and nested fields --- meshtastic/node.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/meshtastic/node.py b/meshtastic/node.py index 415154d..52f6aae 100644 --- a/meshtastic/node.py +++ b/meshtastic/node.py @@ -98,6 +98,7 @@ class Node: print("") adminMessage = p["decoded"]["admin"] if "getConfigResponse" in adminMessage: + oneof = "get_config_response" resp = adminMessage["getConfigResponse"] field = list(resp.keys())[0] config_type = self.localConfig.DESCRIPTOR.fields_by_name.get( @@ -106,6 +107,7 @@ class Node: if config_type is not None: config_values = getattr(self.localConfig, config_type.name) elif "getModuleConfigResponse" in adminMessage: + oneof = "get_module_config_response" resp = adminMessage["getModuleConfigResponse"] field = list(resp.keys())[0] config_type = self.moduleConfig.DESCRIPTOR.fields_by_name.get( @@ -118,8 +120,8 @@ class Node: ) return if config_values is not None: - for key, value in resp[field].items(): - setattr(config_values, camel_to_snake(key), value) + raw_config = getattr(getattr(adminMessage['raw'], oneof), field) + config_values.CopyFrom(raw_config) print(f"{str(camel_to_snake(field))}:\n{str(config_values)}") def requestConfig(self, configType):