diff --git a/protobufs_extra/routing_proto.py b/protobufs_extra/routing_proto.py new file mode 100644 index 0000000..b960b65 --- /dev/null +++ b/protobufs_extra/routing_proto.py @@ -0,0 +1,35 @@ +ROUTING_ERROR_ENUM = { + 0: "NONE", + 1: "NO_ROUTE", + 2: "GOT_NAK", + 3: "TIMEOUT", + 4: "NO_INTERFACE", + 5: "MAX_RETRANSMIT", + 6: "NO_CHANNEL", + 7: "TOO_LARGE", + 8: "NO_RESPONSE", + 9: "DUTY_CYCLE_LIMIT", + 32: "BAD_REQUEST", + 33: "NOT_AUTHORIZED", + 34: "PKI_FAILED", + 35: "PKI_UNKNOWN_PUBKEY", + 36: "ADMIN_BAD_SESSION_KEY", + 37: "ADMIN_PUBLIC_KEY_UNAUTHORIZED", + 38: "RATE_LIMIT_EXCEEDED", + 39: "PKI_SEND_FAIL_PUBLIC_KEY" +} + +ROUTE_DISCOVERY_SCHEME = [ + ("repeated", "fixed32", "route", 1), + ("repeated", "int32", "snr_towards", 2), + ("repeated", "fixed32", "route_back", 3), + ("repeated", "int32", "snr_back", 4) +] + +ROUTING_SCHEME = [ + ("oneof", "variant", [ + (ROUTE_DISCOVERY_SCHEME, "route_request", 1), + (ROUTE_DISCOVERY_SCHEME, "route_reply", 2), + ("int32", "error_reason", 3) + ]) +] \ No newline at end of file diff --git a/service.py b/service.py index 9ebddb0..824edb1 100644 --- a/service.py +++ b/service.py @@ -15,6 +15,7 @@ from mesht_models import _wait_for_config_complete, PUB_CH from mesht_models import NOT_CONNECTED, WAIT_CONFIG, AVAILABLE, ERR, RECONNECT from protobufs_extra.telemetry_proto import * from protobufs_extra.position_proto import * +from protobufs_extra.routing_proto import * import pb #fs imports @@ -154,6 +155,8 @@ class MongoDriver(MeshArgsParse): v["decoded_payload_object"] = pb.decode(v["payload"], TELEMETRY_SCHEME) elif v.get("portnum", 0) == 3: v["decoded_payload_object"] = pb.decode(v["payload"], POSITION_SCHEME) + elif v.get("portnum", 0) == 5: + v["decoded_payload_object"] = pb.decode(v["payload"], ROUTING_SCHEME) except: traceback.print_exc() pass