From f89ad396dd94a69b0e352d7ff430ff79c6a71a41 Mon Sep 17 00:00:00 2001
From: 488_MP-4 <488_MP-4@iastate.edu>
Date: Thu, 2 Nov 2023 21:43:25 +0100
Subject: [PATCH] set param works

---
 cache/5F73C19B.json                           | 4651 +++++++++++++++++
 cache/CCB14664.json                           | 2544 +++++++++
 .../crazyflie_connection.cpython-38.pyc       |  Bin 7221 -> 7926 bytes
 .../groundstation_socket.cpython-38.pyc       |  Bin 4869 -> 4782 bytes
 cflib_groundstation/crazyflie_connection.py   |  119 +-
 cflib_groundstation/groundstation_socket.py   |   11 +-
 cflib_groundstation/main.py                   |    4 +-
 7 files changed, 7276 insertions(+), 53 deletions(-)
 create mode 100644 cache/5F73C19B.json
 create mode 100644 cache/CCB14664.json

diff --git a/cache/5F73C19B.json b/cache/5F73C19B.json
new file mode 100644
index 000000000..17eca4277
--- /dev/null
+++ b/cache/5F73C19B.json
@@ -0,0 +1,4651 @@
+{
+  "gyro": {
+    "xRaw": {
+      "__class__": "LogTocElement",
+      "ident": 0,
+      "group": "gyro",
+      "name": "xRaw",
+      "ctype": "int16_t",
+      "pytype": "<h",
+      "access": 0
+    },
+    "yRaw": {
+      "__class__": "LogTocElement",
+      "ident": 1,
+      "group": "gyro",
+      "name": "yRaw",
+      "ctype": "int16_t",
+      "pytype": "<h",
+      "access": 0
+    },
+    "zRaw": {
+      "__class__": "LogTocElement",
+      "ident": 2,
+      "group": "gyro",
+      "name": "zRaw",
+      "ctype": "int16_t",
+      "pytype": "<h",
+      "access": 0
+    },
+    "xVariance": {
+      "__class__": "LogTocElement",
+      "ident": 3,
+      "group": "gyro",
+      "name": "xVariance",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "yVariance": {
+      "__class__": "LogTocElement",
+      "ident": 4,
+      "group": "gyro",
+      "name": "yVariance",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "zVariance": {
+      "__class__": "LogTocElement",
+      "ident": 5,
+      "group": "gyro",
+      "name": "zVariance",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "x": {
+      "__class__": "LogTocElement",
+      "ident": 108,
+      "group": "gyro",
+      "name": "x",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "y": {
+      "__class__": "LogTocElement",
+      "ident": 109,
+      "group": "gyro",
+      "name": "y",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "z": {
+      "__class__": "LogTocElement",
+      "ident": 110,
+      "group": "gyro",
+      "name": "z",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    }
+  },
+  "pwm": {
+    "m1_pwm": {
+      "__class__": "LogTocElement",
+      "ident": 6,
+      "group": "pwm",
+      "name": "m1_pwm",
+      "ctype": "uint32_t",
+      "pytype": "<L",
+      "access": 0
+    },
+    "m2_pwm": {
+      "__class__": "LogTocElement",
+      "ident": 7,
+      "group": "pwm",
+      "name": "m2_pwm",
+      "ctype": "uint32_t",
+      "pytype": "<L",
+      "access": 0
+    },
+    "m3_pwm": {
+      "__class__": "LogTocElement",
+      "ident": 8,
+      "group": "pwm",
+      "name": "m3_pwm",
+      "ctype": "uint32_t",
+      "pytype": "<L",
+      "access": 0
+    },
+    "m4_pwm": {
+      "__class__": "LogTocElement",
+      "ident": 9,
+      "group": "pwm",
+      "name": "m4_pwm",
+      "ctype": "uint32_t",
+      "pytype": "<L",
+      "access": 0
+    }
+  },
+  "crtp": {
+    "rxRate": {
+      "__class__": "LogTocElement",
+      "ident": 10,
+      "group": "crtp",
+      "name": "rxRate",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0
+    },
+    "txRate": {
+      "__class__": "LogTocElement",
+      "ident": 11,
+      "group": "crtp",
+      "name": "txRate",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0
+    }
+  },
+  "pm": {
+    "vbat": {
+      "__class__": "LogTocElement",
+      "ident": 12,
+      "group": "pm",
+      "name": "vbat",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "vbatMV": {
+      "__class__": "LogTocElement",
+      "ident": 13,
+      "group": "pm",
+      "name": "vbatMV",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0
+    },
+    "extVbat": {
+      "__class__": "LogTocElement",
+      "ident": 14,
+      "group": "pm",
+      "name": "extVbat",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "extVbatMV": {
+      "__class__": "LogTocElement",
+      "ident": 15,
+      "group": "pm",
+      "name": "extVbatMV",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0
+    },
+    "extCurr": {
+      "__class__": "LogTocElement",
+      "ident": 16,
+      "group": "pm",
+      "name": "extCurr",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "chargeCurrent": {
+      "__class__": "LogTocElement",
+      "ident": 17,
+      "group": "pm",
+      "name": "chargeCurrent",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "state": {
+      "__class__": "LogTocElement",
+      "ident": 18,
+      "group": "pm",
+      "name": "state",
+      "ctype": "int8_t",
+      "pytype": "<b",
+      "access": 0
+    },
+    "batteryLevel": {
+      "__class__": "LogTocElement",
+      "ident": 19,
+      "group": "pm",
+      "name": "batteryLevel",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0
+    }
+  },
+  "radio": {
+    "rssi": {
+      "__class__": "LogTocElement",
+      "ident": 20,
+      "group": "radio",
+      "name": "rssi",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0
+    },
+    "isConnected": {
+      "__class__": "LogTocElement",
+      "ident": 21,
+      "group": "radio",
+      "name": "isConnected",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0
+    }
+  },
+  "sys": {
+    "armed": {
+      "__class__": "LogTocElement",
+      "ident": 22,
+      "group": "sys",
+      "name": "armed",
+      "ctype": "int8_t",
+      "pytype": "<b",
+      "access": 0
+    },
+    "canfly": {
+      "__class__": "LogTocElement",
+      "ident": 38,
+      "group": "sys",
+      "name": "canfly",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0
+    },
+    "isFlying": {
+      "__class__": "LogTocElement",
+      "ident": 39,
+      "group": "sys",
+      "name": "isFlying",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0
+    },
+    "isTumbled": {
+      "__class__": "LogTocElement",
+      "ident": 40,
+      "group": "sys",
+      "name": "isTumbled",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0
+    }
+  },
+  "extrx": {
+    "ch0": {
+      "__class__": "LogTocElement",
+      "ident": 23,
+      "group": "extrx",
+      "name": "ch0",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0
+    },
+    "ch1": {
+      "__class__": "LogTocElement",
+      "ident": 24,
+      "group": "extrx",
+      "name": "ch1",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0
+    },
+    "ch2": {
+      "__class__": "LogTocElement",
+      "ident": 25,
+      "group": "extrx",
+      "name": "ch2",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0
+    },
+    "ch3": {
+      "__class__": "LogTocElement",
+      "ident": 26,
+      "group": "extrx",
+      "name": "ch3",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0
+    },
+    "thrust": {
+      "__class__": "LogTocElement",
+      "ident": 27,
+      "group": "extrx",
+      "name": "thrust",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0
+    },
+    "roll": {
+      "__class__": "LogTocElement",
+      "ident": 28,
+      "group": "extrx",
+      "name": "roll",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "pitch": {
+      "__class__": "LogTocElement",
+      "ident": 29,
+      "group": "extrx",
+      "name": "pitch",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "yaw": {
+      "__class__": "LogTocElement",
+      "ident": 30,
+      "group": "extrx",
+      "name": "yaw",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    }
+  },
+  "memTst": {
+    "errCntW": {
+      "__class__": "LogTocElement",
+      "ident": 31,
+      "group": "memTst",
+      "name": "errCntW",
+      "ctype": "uint32_t",
+      "pytype": "<L",
+      "access": 0
+    }
+  },
+  "range": {
+    "front": {
+      "__class__": "LogTocElement",
+      "ident": 32,
+      "group": "range",
+      "name": "front",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0
+    },
+    "back": {
+      "__class__": "LogTocElement",
+      "ident": 33,
+      "group": "range",
+      "name": "back",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0
+    },
+    "up": {
+      "__class__": "LogTocElement",
+      "ident": 34,
+      "group": "range",
+      "name": "up",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0
+    },
+    "left": {
+      "__class__": "LogTocElement",
+      "ident": 35,
+      "group": "range",
+      "name": "left",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0
+    },
+    "right": {
+      "__class__": "LogTocElement",
+      "ident": 36,
+      "group": "range",
+      "name": "right",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0
+    },
+    "zrange": {
+      "__class__": "LogTocElement",
+      "ident": 37,
+      "group": "range",
+      "name": "zrange",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0
+    }
+  },
+  "ext_pos": {
+    "X": {
+      "__class__": "LogTocElement",
+      "ident": 41,
+      "group": "ext_pos",
+      "name": "X",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "Y": {
+      "__class__": "LogTocElement",
+      "ident": 42,
+      "group": "ext_pos",
+      "name": "Y",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "Z": {
+      "__class__": "LogTocElement",
+      "ident": 43,
+      "group": "ext_pos",
+      "name": "Z",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    }
+  },
+  "locSrv": {
+    "x": {
+      "__class__": "LogTocElement",
+      "ident": 44,
+      "group": "locSrv",
+      "name": "x",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "y": {
+      "__class__": "LogTocElement",
+      "ident": 45,
+      "group": "locSrv",
+      "name": "y",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "z": {
+      "__class__": "LogTocElement",
+      "ident": 46,
+      "group": "locSrv",
+      "name": "z",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "qx": {
+      "__class__": "LogTocElement",
+      "ident": 47,
+      "group": "locSrv",
+      "name": "qx",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "qy": {
+      "__class__": "LogTocElement",
+      "ident": 48,
+      "group": "locSrv",
+      "name": "qy",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "qz": {
+      "__class__": "LogTocElement",
+      "ident": 49,
+      "group": "locSrv",
+      "name": "qz",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "qw": {
+      "__class__": "LogTocElement",
+      "ident": 50,
+      "group": "locSrv",
+      "name": "qw",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    }
+  },
+  "locSrvZ": {
+    "tick": {
+      "__class__": "LogTocElement",
+      "ident": 51,
+      "group": "locSrvZ",
+      "name": "tick",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0
+    }
+  },
+  "pid_attitude": {
+    "roll_outP": {
+      "__class__": "LogTocElement",
+      "ident": 52,
+      "group": "pid_attitude",
+      "name": "roll_outP",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "roll_outI": {
+      "__class__": "LogTocElement",
+      "ident": 53,
+      "group": "pid_attitude",
+      "name": "roll_outI",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "roll_outD": {
+      "__class__": "LogTocElement",
+      "ident": 54,
+      "group": "pid_attitude",
+      "name": "roll_outD",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "pitch_outP": {
+      "__class__": "LogTocElement",
+      "ident": 55,
+      "group": "pid_attitude",
+      "name": "pitch_outP",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "pitch_outI": {
+      "__class__": "LogTocElement",
+      "ident": 56,
+      "group": "pid_attitude",
+      "name": "pitch_outI",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "pitch_outD": {
+      "__class__": "LogTocElement",
+      "ident": 57,
+      "group": "pid_attitude",
+      "name": "pitch_outD",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "yaw_outP": {
+      "__class__": "LogTocElement",
+      "ident": 58,
+      "group": "pid_attitude",
+      "name": "yaw_outP",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "yaw_outI": {
+      "__class__": "LogTocElement",
+      "ident": 59,
+      "group": "pid_attitude",
+      "name": "yaw_outI",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "yaw_outD": {
+      "__class__": "LogTocElement",
+      "ident": 60,
+      "group": "pid_attitude",
+      "name": "yaw_outD",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    }
+  },
+  "pid_rate": {
+    "roll_outP": {
+      "__class__": "LogTocElement",
+      "ident": 61,
+      "group": "pid_rate",
+      "name": "roll_outP",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "roll_outI": {
+      "__class__": "LogTocElement",
+      "ident": 62,
+      "group": "pid_rate",
+      "name": "roll_outI",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "roll_outD": {
+      "__class__": "LogTocElement",
+      "ident": 63,
+      "group": "pid_rate",
+      "name": "roll_outD",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "pitch_outP": {
+      "__class__": "LogTocElement",
+      "ident": 64,
+      "group": "pid_rate",
+      "name": "pitch_outP",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "pitch_outI": {
+      "__class__": "LogTocElement",
+      "ident": 65,
+      "group": "pid_rate",
+      "name": "pitch_outI",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "pitch_outD": {
+      "__class__": "LogTocElement",
+      "ident": 66,
+      "group": "pid_rate",
+      "name": "pitch_outD",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "yaw_outP": {
+      "__class__": "LogTocElement",
+      "ident": 67,
+      "group": "pid_rate",
+      "name": "yaw_outP",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "yaw_outI": {
+      "__class__": "LogTocElement",
+      "ident": 68,
+      "group": "pid_rate",
+      "name": "yaw_outI",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "yaw_outD": {
+      "__class__": "LogTocElement",
+      "ident": 69,
+      "group": "pid_rate",
+      "name": "yaw_outD",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    }
+  },
+  "sensfusion6": {
+    "qw": {
+      "__class__": "LogTocElement",
+      "ident": 70,
+      "group": "sensfusion6",
+      "name": "qw",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "qx": {
+      "__class__": "LogTocElement",
+      "ident": 71,
+      "group": "sensfusion6",
+      "name": "qx",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "qy": {
+      "__class__": "LogTocElement",
+      "ident": 72,
+      "group": "sensfusion6",
+      "name": "qy",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "qz": {
+      "__class__": "LogTocElement",
+      "ident": 73,
+      "group": "sensfusion6",
+      "name": "qz",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "gravityX": {
+      "__class__": "LogTocElement",
+      "ident": 74,
+      "group": "sensfusion6",
+      "name": "gravityX",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "gravityY": {
+      "__class__": "LogTocElement",
+      "ident": 75,
+      "group": "sensfusion6",
+      "name": "gravityY",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "gravityZ": {
+      "__class__": "LogTocElement",
+      "ident": 76,
+      "group": "sensfusion6",
+      "name": "gravityZ",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "accZbase": {
+      "__class__": "LogTocElement",
+      "ident": 77,
+      "group": "sensfusion6",
+      "name": "accZbase",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "isInit": {
+      "__class__": "LogTocElement",
+      "ident": 78,
+      "group": "sensfusion6",
+      "name": "isInit",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0
+    },
+    "isCalibrated": {
+      "__class__": "LogTocElement",
+      "ident": 79,
+      "group": "sensfusion6",
+      "name": "isCalibrated",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0
+    }
+  },
+  "acc": {
+    "x": {
+      "__class__": "LogTocElement",
+      "ident": 80,
+      "group": "acc",
+      "name": "x",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "y": {
+      "__class__": "LogTocElement",
+      "ident": 81,
+      "group": "acc",
+      "name": "y",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "z": {
+      "__class__": "LogTocElement",
+      "ident": 82,
+      "group": "acc",
+      "name": "z",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    }
+  },
+  "baro": {
+    "asl": {
+      "__class__": "LogTocElement",
+      "ident": 83,
+      "group": "baro",
+      "name": "asl",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "temp": {
+      "__class__": "LogTocElement",
+      "ident": 84,
+      "group": "baro",
+      "name": "temp",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "pressure": {
+      "__class__": "LogTocElement",
+      "ident": 85,
+      "group": "baro",
+      "name": "pressure",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    }
+  },
+  "controller": {
+    "ctr_yaw": {
+      "__class__": "LogTocElement",
+      "ident": 86,
+      "group": "controller",
+      "name": "ctr_yaw",
+      "ctype": "int16_t",
+      "pytype": "<h",
+      "access": 0
+    },
+    "cmd_thrust": {
+      "__class__": "LogTocElement",
+      "ident": 213,
+      "group": "controller",
+      "name": "cmd_thrust",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "cmd_roll": {
+      "__class__": "LogTocElement",
+      "ident": 214,
+      "group": "controller",
+      "name": "cmd_roll",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "cmd_pitch": {
+      "__class__": "LogTocElement",
+      "ident": 215,
+      "group": "controller",
+      "name": "cmd_pitch",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "cmd_yaw": {
+      "__class__": "LogTocElement",
+      "ident": 216,
+      "group": "controller",
+      "name": "cmd_yaw",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "r_roll": {
+      "__class__": "LogTocElement",
+      "ident": 217,
+      "group": "controller",
+      "name": "r_roll",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "r_pitch": {
+      "__class__": "LogTocElement",
+      "ident": 218,
+      "group": "controller",
+      "name": "r_pitch",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "r_yaw": {
+      "__class__": "LogTocElement",
+      "ident": 219,
+      "group": "controller",
+      "name": "r_yaw",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "accelz": {
+      "__class__": "LogTocElement",
+      "ident": 220,
+      "group": "controller",
+      "name": "accelz",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "actuatorThrust": {
+      "__class__": "LogTocElement",
+      "ident": 221,
+      "group": "controller",
+      "name": "actuatorThrust",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "roll": {
+      "__class__": "LogTocElement",
+      "ident": 222,
+      "group": "controller",
+      "name": "roll",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "pitch": {
+      "__class__": "LogTocElement",
+      "ident": 223,
+      "group": "controller",
+      "name": "pitch",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "yaw": {
+      "__class__": "LogTocElement",
+      "ident": 224,
+      "group": "controller",
+      "name": "yaw",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "rollRate": {
+      "__class__": "LogTocElement",
+      "ident": 225,
+      "group": "controller",
+      "name": "rollRate",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "pitchRate": {
+      "__class__": "LogTocElement",
+      "ident": 226,
+      "group": "controller",
+      "name": "pitchRate",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "yawRate": {
+      "__class__": "LogTocElement",
+      "ident": 227,
+      "group": "controller",
+      "name": "yawRate",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    }
+  },
+  "ctrltarget": {
+    "x": {
+      "__class__": "LogTocElement",
+      "ident": 87,
+      "group": "ctrltarget",
+      "name": "x",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "y": {
+      "__class__": "LogTocElement",
+      "ident": 88,
+      "group": "ctrltarget",
+      "name": "y",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "z": {
+      "__class__": "LogTocElement",
+      "ident": 89,
+      "group": "ctrltarget",
+      "name": "z",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "vx": {
+      "__class__": "LogTocElement",
+      "ident": 90,
+      "group": "ctrltarget",
+      "name": "vx",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "vy": {
+      "__class__": "LogTocElement",
+      "ident": 91,
+      "group": "ctrltarget",
+      "name": "vy",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "vz": {
+      "__class__": "LogTocElement",
+      "ident": 92,
+      "group": "ctrltarget",
+      "name": "vz",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "ax": {
+      "__class__": "LogTocElement",
+      "ident": 93,
+      "group": "ctrltarget",
+      "name": "ax",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "ay": {
+      "__class__": "LogTocElement",
+      "ident": 94,
+      "group": "ctrltarget",
+      "name": "ay",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "az": {
+      "__class__": "LogTocElement",
+      "ident": 95,
+      "group": "ctrltarget",
+      "name": "az",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "roll": {
+      "__class__": "LogTocElement",
+      "ident": 96,
+      "group": "ctrltarget",
+      "name": "roll",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "pitch": {
+      "__class__": "LogTocElement",
+      "ident": 97,
+      "group": "ctrltarget",
+      "name": "pitch",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "yaw": {
+      "__class__": "LogTocElement",
+      "ident": 98,
+      "group": "ctrltarget",
+      "name": "yaw",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    }
+  },
+  "ctrltargetZ": {
+    "x": {
+      "__class__": "LogTocElement",
+      "ident": 99,
+      "group": "ctrltargetZ",
+      "name": "x",
+      "ctype": "int16_t",
+      "pytype": "<h",
+      "access": 0
+    },
+    "y": {
+      "__class__": "LogTocElement",
+      "ident": 100,
+      "group": "ctrltargetZ",
+      "name": "y",
+      "ctype": "int16_t",
+      "pytype": "<h",
+      "access": 0
+    },
+    "z": {
+      "__class__": "LogTocElement",
+      "ident": 101,
+      "group": "ctrltargetZ",
+      "name": "z",
+      "ctype": "int16_t",
+      "pytype": "<h",
+      "access": 0
+    },
+    "vx": {
+      "__class__": "LogTocElement",
+      "ident": 102,
+      "group": "ctrltargetZ",
+      "name": "vx",
+      "ctype": "int16_t",
+      "pytype": "<h",
+      "access": 0
+    },
+    "vy": {
+      "__class__": "LogTocElement",
+      "ident": 103,
+      "group": "ctrltargetZ",
+      "name": "vy",
+      "ctype": "int16_t",
+      "pytype": "<h",
+      "access": 0
+    },
+    "vz": {
+      "__class__": "LogTocElement",
+      "ident": 104,
+      "group": "ctrltargetZ",
+      "name": "vz",
+      "ctype": "int16_t",
+      "pytype": "<h",
+      "access": 0
+    },
+    "ax": {
+      "__class__": "LogTocElement",
+      "ident": 105,
+      "group": "ctrltargetZ",
+      "name": "ax",
+      "ctype": "int16_t",
+      "pytype": "<h",
+      "access": 0
+    },
+    "ay": {
+      "__class__": "LogTocElement",
+      "ident": 106,
+      "group": "ctrltargetZ",
+      "name": "ay",
+      "ctype": "int16_t",
+      "pytype": "<h",
+      "access": 0
+    },
+    "az": {
+      "__class__": "LogTocElement",
+      "ident": 107,
+      "group": "ctrltargetZ",
+      "name": "az",
+      "ctype": "int16_t",
+      "pytype": "<h",
+      "access": 0
+    }
+  },
+  "mag": {
+    "x": {
+      "__class__": "LogTocElement",
+      "ident": 111,
+      "group": "mag",
+      "name": "x",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "y": {
+      "__class__": "LogTocElement",
+      "ident": 112,
+      "group": "mag",
+      "name": "y",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "z": {
+      "__class__": "LogTocElement",
+      "ident": 113,
+      "group": "mag",
+      "name": "z",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    }
+  },
+  "stabilizer": {
+    "roll": {
+      "__class__": "LogTocElement",
+      "ident": 114,
+      "group": "stabilizer",
+      "name": "roll",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "pitch": {
+      "__class__": "LogTocElement",
+      "ident": 115,
+      "group": "stabilizer",
+      "name": "pitch",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "yaw": {
+      "__class__": "LogTocElement",
+      "ident": 116,
+      "group": "stabilizer",
+      "name": "yaw",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "thrust": {
+      "__class__": "LogTocElement",
+      "ident": 117,
+      "group": "stabilizer",
+      "name": "thrust",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "rtStab": {
+      "__class__": "LogTocElement",
+      "ident": 118,
+      "group": "stabilizer",
+      "name": "rtStab",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "intToOut": {
+      "__class__": "LogTocElement",
+      "ident": 119,
+      "group": "stabilizer",
+      "name": "intToOut",
+      "ctype": "uint32_t",
+      "pytype": "<L",
+      "access": 0
+    }
+  },
+  "stateEstimate": {
+    "x": {
+      "__class__": "LogTocElement",
+      "ident": 120,
+      "group": "stateEstimate",
+      "name": "x",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "y": {
+      "__class__": "LogTocElement",
+      "ident": 121,
+      "group": "stateEstimate",
+      "name": "y",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "z": {
+      "__class__": "LogTocElement",
+      "ident": 122,
+      "group": "stateEstimate",
+      "name": "z",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "vx": {
+      "__class__": "LogTocElement",
+      "ident": 123,
+      "group": "stateEstimate",
+      "name": "vx",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "vy": {
+      "__class__": "LogTocElement",
+      "ident": 124,
+      "group": "stateEstimate",
+      "name": "vy",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "vz": {
+      "__class__": "LogTocElement",
+      "ident": 125,
+      "group": "stateEstimate",
+      "name": "vz",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "ax": {
+      "__class__": "LogTocElement",
+      "ident": 126,
+      "group": "stateEstimate",
+      "name": "ax",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "ay": {
+      "__class__": "LogTocElement",
+      "ident": 127,
+      "group": "stateEstimate",
+      "name": "ay",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "az": {
+      "__class__": "LogTocElement",
+      "ident": 128,
+      "group": "stateEstimate",
+      "name": "az",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "roll": {
+      "__class__": "LogTocElement",
+      "ident": 129,
+      "group": "stateEstimate",
+      "name": "roll",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "pitch": {
+      "__class__": "LogTocElement",
+      "ident": 130,
+      "group": "stateEstimate",
+      "name": "pitch",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "yaw": {
+      "__class__": "LogTocElement",
+      "ident": 131,
+      "group": "stateEstimate",
+      "name": "yaw",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "qx": {
+      "__class__": "LogTocElement",
+      "ident": 132,
+      "group": "stateEstimate",
+      "name": "qx",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "qy": {
+      "__class__": "LogTocElement",
+      "ident": 133,
+      "group": "stateEstimate",
+      "name": "qy",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "qz": {
+      "__class__": "LogTocElement",
+      "ident": 134,
+      "group": "stateEstimate",
+      "name": "qz",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "qw": {
+      "__class__": "LogTocElement",
+      "ident": 135,
+      "group": "stateEstimate",
+      "name": "qw",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    }
+  },
+  "stateEstimateZ": {
+    "x": {
+      "__class__": "LogTocElement",
+      "ident": 136,
+      "group": "stateEstimateZ",
+      "name": "x",
+      "ctype": "int16_t",
+      "pytype": "<h",
+      "access": 0
+    },
+    "y": {
+      "__class__": "LogTocElement",
+      "ident": 137,
+      "group": "stateEstimateZ",
+      "name": "y",
+      "ctype": "int16_t",
+      "pytype": "<h",
+      "access": 0
+    },
+    "z": {
+      "__class__": "LogTocElement",
+      "ident": 138,
+      "group": "stateEstimateZ",
+      "name": "z",
+      "ctype": "int16_t",
+      "pytype": "<h",
+      "access": 0
+    },
+    "vx": {
+      "__class__": "LogTocElement",
+      "ident": 139,
+      "group": "stateEstimateZ",
+      "name": "vx",
+      "ctype": "int16_t",
+      "pytype": "<h",
+      "access": 0
+    },
+    "vy": {
+      "__class__": "LogTocElement",
+      "ident": 140,
+      "group": "stateEstimateZ",
+      "name": "vy",
+      "ctype": "int16_t",
+      "pytype": "<h",
+      "access": 0
+    },
+    "vz": {
+      "__class__": "LogTocElement",
+      "ident": 141,
+      "group": "stateEstimateZ",
+      "name": "vz",
+      "ctype": "int16_t",
+      "pytype": "<h",
+      "access": 0
+    },
+    "ax": {
+      "__class__": "LogTocElement",
+      "ident": 142,
+      "group": "stateEstimateZ",
+      "name": "ax",
+      "ctype": "int16_t",
+      "pytype": "<h",
+      "access": 0
+    },
+    "ay": {
+      "__class__": "LogTocElement",
+      "ident": 143,
+      "group": "stateEstimateZ",
+      "name": "ay",
+      "ctype": "int16_t",
+      "pytype": "<h",
+      "access": 0
+    },
+    "az": {
+      "__class__": "LogTocElement",
+      "ident": 144,
+      "group": "stateEstimateZ",
+      "name": "az",
+      "ctype": "int16_t",
+      "pytype": "<h",
+      "access": 0
+    },
+    "quat": {
+      "__class__": "LogTocElement",
+      "ident": 145,
+      "group": "stateEstimateZ",
+      "name": "quat",
+      "ctype": "uint32_t",
+      "pytype": "<L",
+      "access": 0
+    },
+    "rateRoll": {
+      "__class__": "LogTocElement",
+      "ident": 146,
+      "group": "stateEstimateZ",
+      "name": "rateRoll",
+      "ctype": "int16_t",
+      "pytype": "<h",
+      "access": 0
+    },
+    "ratePitch": {
+      "__class__": "LogTocElement",
+      "ident": 147,
+      "group": "stateEstimateZ",
+      "name": "ratePitch",
+      "ctype": "int16_t",
+      "pytype": "<h",
+      "access": 0
+    },
+    "rateYaw": {
+      "__class__": "LogTocElement",
+      "ident": 148,
+      "group": "stateEstimateZ",
+      "name": "rateYaw",
+      "ctype": "int16_t",
+      "pytype": "<h",
+      "access": 0
+    }
+  },
+  "posEstAlt": {
+    "estimatedZ": {
+      "__class__": "LogTocElement",
+      "ident": 149,
+      "group": "posEstAlt",
+      "name": "estimatedZ",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "estVZ": {
+      "__class__": "LogTocElement",
+      "ident": 150,
+      "group": "posEstAlt",
+      "name": "estVZ",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "velocityZ": {
+      "__class__": "LogTocElement",
+      "ident": 151,
+      "group": "posEstAlt",
+      "name": "velocityZ",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    }
+  },
+  "posCtl": {
+    "targetVX": {
+      "__class__": "LogTocElement",
+      "ident": 152,
+      "group": "posCtl",
+      "name": "targetVX",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "targetVY": {
+      "__class__": "LogTocElement",
+      "ident": 153,
+      "group": "posCtl",
+      "name": "targetVY",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "targetVZ": {
+      "__class__": "LogTocElement",
+      "ident": 154,
+      "group": "posCtl",
+      "name": "targetVZ",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "targetX": {
+      "__class__": "LogTocElement",
+      "ident": 155,
+      "group": "posCtl",
+      "name": "targetX",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "targetY": {
+      "__class__": "LogTocElement",
+      "ident": 156,
+      "group": "posCtl",
+      "name": "targetY",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "targetZ": {
+      "__class__": "LogTocElement",
+      "ident": 157,
+      "group": "posCtl",
+      "name": "targetZ",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "Xp": {
+      "__class__": "LogTocElement",
+      "ident": 158,
+      "group": "posCtl",
+      "name": "Xp",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "Xi": {
+      "__class__": "LogTocElement",
+      "ident": 159,
+      "group": "posCtl",
+      "name": "Xi",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "Xd": {
+      "__class__": "LogTocElement",
+      "ident": 160,
+      "group": "posCtl",
+      "name": "Xd",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "Yp": {
+      "__class__": "LogTocElement",
+      "ident": 161,
+      "group": "posCtl",
+      "name": "Yp",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "Yi": {
+      "__class__": "LogTocElement",
+      "ident": 162,
+      "group": "posCtl",
+      "name": "Yi",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "Yd": {
+      "__class__": "LogTocElement",
+      "ident": 163,
+      "group": "posCtl",
+      "name": "Yd",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "Zp": {
+      "__class__": "LogTocElement",
+      "ident": 164,
+      "group": "posCtl",
+      "name": "Zp",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "Zi": {
+      "__class__": "LogTocElement",
+      "ident": 165,
+      "group": "posCtl",
+      "name": "Zi",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "Zd": {
+      "__class__": "LogTocElement",
+      "ident": 166,
+      "group": "posCtl",
+      "name": "Zd",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "VXp": {
+      "__class__": "LogTocElement",
+      "ident": 167,
+      "group": "posCtl",
+      "name": "VXp",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "VXi": {
+      "__class__": "LogTocElement",
+      "ident": 168,
+      "group": "posCtl",
+      "name": "VXi",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "VXd": {
+      "__class__": "LogTocElement",
+      "ident": 169,
+      "group": "posCtl",
+      "name": "VXd",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "VZp": {
+      "__class__": "LogTocElement",
+      "ident": 170,
+      "group": "posCtl",
+      "name": "VZp",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "VZi": {
+      "__class__": "LogTocElement",
+      "ident": 171,
+      "group": "posCtl",
+      "name": "VZi",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "VZd": {
+      "__class__": "LogTocElement",
+      "ident": 172,
+      "group": "posCtl",
+      "name": "VZd",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    }
+  },
+  "posCtrlIndi": {
+    "posRef_x": {
+      "__class__": "LogTocElement",
+      "ident": 173,
+      "group": "posCtrlIndi",
+      "name": "posRef_x",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "posRef_y": {
+      "__class__": "LogTocElement",
+      "ident": 174,
+      "group": "posCtrlIndi",
+      "name": "posRef_y",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "posRef_z": {
+      "__class__": "LogTocElement",
+      "ident": 175,
+      "group": "posCtrlIndi",
+      "name": "posRef_z",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "velS_x": {
+      "__class__": "LogTocElement",
+      "ident": 176,
+      "group": "posCtrlIndi",
+      "name": "velS_x",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "velS_y": {
+      "__class__": "LogTocElement",
+      "ident": 177,
+      "group": "posCtrlIndi",
+      "name": "velS_y",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "velS_z": {
+      "__class__": "LogTocElement",
+      "ident": 178,
+      "group": "posCtrlIndi",
+      "name": "velS_z",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "velRef_x": {
+      "__class__": "LogTocElement",
+      "ident": 179,
+      "group": "posCtrlIndi",
+      "name": "velRef_x",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "velRef_y": {
+      "__class__": "LogTocElement",
+      "ident": 180,
+      "group": "posCtrlIndi",
+      "name": "velRef_y",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "velRef_z": {
+      "__class__": "LogTocElement",
+      "ident": 181,
+      "group": "posCtrlIndi",
+      "name": "velRef_z",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "angS_roll": {
+      "__class__": "LogTocElement",
+      "ident": 182,
+      "group": "posCtrlIndi",
+      "name": "angS_roll",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "angS_pitch": {
+      "__class__": "LogTocElement",
+      "ident": 183,
+      "group": "posCtrlIndi",
+      "name": "angS_pitch",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "angS_yaw": {
+      "__class__": "LogTocElement",
+      "ident": 184,
+      "group": "posCtrlIndi",
+      "name": "angS_yaw",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "angF_roll": {
+      "__class__": "LogTocElement",
+      "ident": 185,
+      "group": "posCtrlIndi",
+      "name": "angF_roll",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "angF_pitch": {
+      "__class__": "LogTocElement",
+      "ident": 186,
+      "group": "posCtrlIndi",
+      "name": "angF_pitch",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "angF_yaw": {
+      "__class__": "LogTocElement",
+      "ident": 187,
+      "group": "posCtrlIndi",
+      "name": "angF_yaw",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "accRef_x": {
+      "__class__": "LogTocElement",
+      "ident": 188,
+      "group": "posCtrlIndi",
+      "name": "accRef_x",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "accRef_y": {
+      "__class__": "LogTocElement",
+      "ident": 189,
+      "group": "posCtrlIndi",
+      "name": "accRef_y",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "accRef_z": {
+      "__class__": "LogTocElement",
+      "ident": 190,
+      "group": "posCtrlIndi",
+      "name": "accRef_z",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "accS_x": {
+      "__class__": "LogTocElement",
+      "ident": 191,
+      "group": "posCtrlIndi",
+      "name": "accS_x",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "accS_y": {
+      "__class__": "LogTocElement",
+      "ident": 192,
+      "group": "posCtrlIndi",
+      "name": "accS_y",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "accS_z": {
+      "__class__": "LogTocElement",
+      "ident": 193,
+      "group": "posCtrlIndi",
+      "name": "accS_z",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "accF_x": {
+      "__class__": "LogTocElement",
+      "ident": 194,
+      "group": "posCtrlIndi",
+      "name": "accF_x",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "accF_y": {
+      "__class__": "LogTocElement",
+      "ident": 195,
+      "group": "posCtrlIndi",
+      "name": "accF_y",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "accF_z": {
+      "__class__": "LogTocElement",
+      "ident": 196,
+      "group": "posCtrlIndi",
+      "name": "accF_z",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "accFT_x": {
+      "__class__": "LogTocElement",
+      "ident": 197,
+      "group": "posCtrlIndi",
+      "name": "accFT_x",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "accFT_y": {
+      "__class__": "LogTocElement",
+      "ident": 198,
+      "group": "posCtrlIndi",
+      "name": "accFT_y",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "accFT_z": {
+      "__class__": "LogTocElement",
+      "ident": 199,
+      "group": "posCtrlIndi",
+      "name": "accFT_z",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "accErr_x": {
+      "__class__": "LogTocElement",
+      "ident": 200,
+      "group": "posCtrlIndi",
+      "name": "accErr_x",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "accErr_y": {
+      "__class__": "LogTocElement",
+      "ident": 201,
+      "group": "posCtrlIndi",
+      "name": "accErr_y",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "accErr_z": {
+      "__class__": "LogTocElement",
+      "ident": 202,
+      "group": "posCtrlIndi",
+      "name": "accErr_z",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "phi_tilde": {
+      "__class__": "LogTocElement",
+      "ident": 203,
+      "group": "posCtrlIndi",
+      "name": "phi_tilde",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "theta_tilde": {
+      "__class__": "LogTocElement",
+      "ident": 204,
+      "group": "posCtrlIndi",
+      "name": "theta_tilde",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "T_tilde": {
+      "__class__": "LogTocElement",
+      "ident": 205,
+      "group": "posCtrlIndi",
+      "name": "T_tilde",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "T_inner": {
+      "__class__": "LogTocElement",
+      "ident": 206,
+      "group": "posCtrlIndi",
+      "name": "T_inner",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "T_inner_f": {
+      "__class__": "LogTocElement",
+      "ident": 207,
+      "group": "posCtrlIndi",
+      "name": "T_inner_f",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "T_incremented": {
+      "__class__": "LogTocElement",
+      "ident": 208,
+      "group": "posCtrlIndi",
+      "name": "T_incremented",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "cmd_phi": {
+      "__class__": "LogTocElement",
+      "ident": 209,
+      "group": "posCtrlIndi",
+      "name": "cmd_phi",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "cmd_theta": {
+      "__class__": "LogTocElement",
+      "ident": 210,
+      "group": "posCtrlIndi",
+      "name": "cmd_theta",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    }
+  },
+  "estimator": {
+    "rtApnd": {
+      "__class__": "LogTocElement",
+      "ident": 211,
+      "group": "estimator",
+      "name": "rtApnd",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "rtRej": {
+      "__class__": "LogTocElement",
+      "ident": 212,
+      "group": "estimator",
+      "name": "rtRej",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    }
+  },
+  "ctrlMel": {
+    "cmd_thrust": {
+      "__class__": "LogTocElement",
+      "ident": 228,
+      "group": "ctrlMel",
+      "name": "cmd_thrust",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "cmd_roll": {
+      "__class__": "LogTocElement",
+      "ident": 229,
+      "group": "ctrlMel",
+      "name": "cmd_roll",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "cmd_pitch": {
+      "__class__": "LogTocElement",
+      "ident": 230,
+      "group": "ctrlMel",
+      "name": "cmd_pitch",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "cmd_yaw": {
+      "__class__": "LogTocElement",
+      "ident": 231,
+      "group": "ctrlMel",
+      "name": "cmd_yaw",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "r_roll": {
+      "__class__": "LogTocElement",
+      "ident": 232,
+      "group": "ctrlMel",
+      "name": "r_roll",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "r_pitch": {
+      "__class__": "LogTocElement",
+      "ident": 233,
+      "group": "ctrlMel",
+      "name": "r_pitch",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "r_yaw": {
+      "__class__": "LogTocElement",
+      "ident": 234,
+      "group": "ctrlMel",
+      "name": "r_yaw",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "accelz": {
+      "__class__": "LogTocElement",
+      "ident": 235,
+      "group": "ctrlMel",
+      "name": "accelz",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "zdx": {
+      "__class__": "LogTocElement",
+      "ident": 236,
+      "group": "ctrlMel",
+      "name": "zdx",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "zdy": {
+      "__class__": "LogTocElement",
+      "ident": 237,
+      "group": "ctrlMel",
+      "name": "zdy",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "zdz": {
+      "__class__": "LogTocElement",
+      "ident": 238,
+      "group": "ctrlMel",
+      "name": "zdz",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "i_err_x": {
+      "__class__": "LogTocElement",
+      "ident": 239,
+      "group": "ctrlMel",
+      "name": "i_err_x",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "i_err_y": {
+      "__class__": "LogTocElement",
+      "ident": 240,
+      "group": "ctrlMel",
+      "name": "i_err_y",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "i_err_z": {
+      "__class__": "LogTocElement",
+      "ident": 241,
+      "group": "ctrlMel",
+      "name": "i_err_z",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    }
+  },
+  "ctrlINDI": {
+    "cmd_thrust": {
+      "__class__": "LogTocElement",
+      "ident": 242,
+      "group": "ctrlINDI",
+      "name": "cmd_thrust",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "cmd_roll": {
+      "__class__": "LogTocElement",
+      "ident": 243,
+      "group": "ctrlINDI",
+      "name": "cmd_roll",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "cmd_pitch": {
+      "__class__": "LogTocElement",
+      "ident": 244,
+      "group": "ctrlINDI",
+      "name": "cmd_pitch",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "cmd_yaw": {
+      "__class__": "LogTocElement",
+      "ident": 245,
+      "group": "ctrlINDI",
+      "name": "cmd_yaw",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "r_roll": {
+      "__class__": "LogTocElement",
+      "ident": 246,
+      "group": "ctrlINDI",
+      "name": "r_roll",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "r_pitch": {
+      "__class__": "LogTocElement",
+      "ident": 247,
+      "group": "ctrlINDI",
+      "name": "r_pitch",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "r_yaw": {
+      "__class__": "LogTocElement",
+      "ident": 248,
+      "group": "ctrlINDI",
+      "name": "r_yaw",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "u_act_dyn_p": {
+      "__class__": "LogTocElement",
+      "ident": 249,
+      "group": "ctrlINDI",
+      "name": "u_act_dyn_p",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "u_act_dyn_q": {
+      "__class__": "LogTocElement",
+      "ident": 250,
+      "group": "ctrlINDI",
+      "name": "u_act_dyn_q",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "u_act_dyn_r": {
+      "__class__": "LogTocElement",
+      "ident": 251,
+      "group": "ctrlINDI",
+      "name": "u_act_dyn_r",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "du_p": {
+      "__class__": "LogTocElement",
+      "ident": 252,
+      "group": "ctrlINDI",
+      "name": "du_p",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "du_q": {
+      "__class__": "LogTocElement",
+      "ident": 253,
+      "group": "ctrlINDI",
+      "name": "du_q",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "du_r": {
+      "__class__": "LogTocElement",
+      "ident": 254,
+      "group": "ctrlINDI",
+      "name": "du_r",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "ang_accel_ref_p": {
+      "__class__": "LogTocElement",
+      "ident": 255,
+      "group": "ctrlINDI",
+      "name": "ang_accel_ref_p",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "ang_accel_ref_q": {
+      "__class__": "LogTocElement",
+      "ident": 256,
+      "group": "ctrlINDI",
+      "name": "ang_accel_ref_q",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "ang_accel_ref_r": {
+      "__class__": "LogTocElement",
+      "ident": 257,
+      "group": "ctrlINDI",
+      "name": "ang_accel_ref_r",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "rate_d[0]": {
+      "__class__": "LogTocElement",
+      "ident": 258,
+      "group": "ctrlINDI",
+      "name": "rate_d[0]",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "rate_d[1]": {
+      "__class__": "LogTocElement",
+      "ident": 259,
+      "group": "ctrlINDI",
+      "name": "rate_d[1]",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "rate_d[2]": {
+      "__class__": "LogTocElement",
+      "ident": 260,
+      "group": "ctrlINDI",
+      "name": "rate_d[2]",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "uf_p": {
+      "__class__": "LogTocElement",
+      "ident": 261,
+      "group": "ctrlINDI",
+      "name": "uf_p",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "uf_q": {
+      "__class__": "LogTocElement",
+      "ident": 262,
+      "group": "ctrlINDI",
+      "name": "uf_q",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "uf_r": {
+      "__class__": "LogTocElement",
+      "ident": 263,
+      "group": "ctrlINDI",
+      "name": "uf_r",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "Omega_f_p": {
+      "__class__": "LogTocElement",
+      "ident": 264,
+      "group": "ctrlINDI",
+      "name": "Omega_f_p",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "Omega_f_q": {
+      "__class__": "LogTocElement",
+      "ident": 265,
+      "group": "ctrlINDI",
+      "name": "Omega_f_q",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "Omega_f_r": {
+      "__class__": "LogTocElement",
+      "ident": 266,
+      "group": "ctrlINDI",
+      "name": "Omega_f_r",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "n_p": {
+      "__class__": "LogTocElement",
+      "ident": 267,
+      "group": "ctrlINDI",
+      "name": "n_p",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "n_q": {
+      "__class__": "LogTocElement",
+      "ident": 268,
+      "group": "ctrlINDI",
+      "name": "n_q",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "n_r": {
+      "__class__": "LogTocElement",
+      "ident": 269,
+      "group": "ctrlINDI",
+      "name": "n_r",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    }
+  },
+  "s_pid_attitude": {
+    "roll_outP": {
+      "__class__": "LogTocElement",
+      "ident": 270,
+      "group": "s_pid_attitude",
+      "name": "roll_outP",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "roll_outI": {
+      "__class__": "LogTocElement",
+      "ident": 271,
+      "group": "s_pid_attitude",
+      "name": "roll_outI",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "roll_outD": {
+      "__class__": "LogTocElement",
+      "ident": 272,
+      "group": "s_pid_attitude",
+      "name": "roll_outD",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "pitch_outP": {
+      "__class__": "LogTocElement",
+      "ident": 273,
+      "group": "s_pid_attitude",
+      "name": "pitch_outP",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "pitch_outI": {
+      "__class__": "LogTocElement",
+      "ident": 274,
+      "group": "s_pid_attitude",
+      "name": "pitch_outI",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "pitch_outD": {
+      "__class__": "LogTocElement",
+      "ident": 275,
+      "group": "s_pid_attitude",
+      "name": "pitch_outD",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "yaw_outP": {
+      "__class__": "LogTocElement",
+      "ident": 276,
+      "group": "s_pid_attitude",
+      "name": "yaw_outP",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "yaw_outI": {
+      "__class__": "LogTocElement",
+      "ident": 277,
+      "group": "s_pid_attitude",
+      "name": "yaw_outI",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "yaw_outD": {
+      "__class__": "LogTocElement",
+      "ident": 278,
+      "group": "s_pid_attitude",
+      "name": "yaw_outD",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    }
+  },
+  "s_pid_rate": {
+    "roll_outP": {
+      "__class__": "LogTocElement",
+      "ident": 279,
+      "group": "s_pid_rate",
+      "name": "roll_outP",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "roll_outI": {
+      "__class__": "LogTocElement",
+      "ident": 280,
+      "group": "s_pid_rate",
+      "name": "roll_outI",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "roll_outD": {
+      "__class__": "LogTocElement",
+      "ident": 281,
+      "group": "s_pid_rate",
+      "name": "roll_outD",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "pitch_outP": {
+      "__class__": "LogTocElement",
+      "ident": 282,
+      "group": "s_pid_rate",
+      "name": "pitch_outP",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "pitch_outI": {
+      "__class__": "LogTocElement",
+      "ident": 283,
+      "group": "s_pid_rate",
+      "name": "pitch_outI",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "pitch_outD": {
+      "__class__": "LogTocElement",
+      "ident": 284,
+      "group": "s_pid_rate",
+      "name": "pitch_outD",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "yaw_outP": {
+      "__class__": "LogTocElement",
+      "ident": 285,
+      "group": "s_pid_rate",
+      "name": "yaw_outP",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "yaw_outI": {
+      "__class__": "LogTocElement",
+      "ident": 286,
+      "group": "s_pid_rate",
+      "name": "yaw_outI",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "yaw_outD": {
+      "__class__": "LogTocElement",
+      "ident": 287,
+      "group": "s_pid_rate",
+      "name": "yaw_outD",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    }
+  },
+  "ctrlStdnt": {
+    "cmd_thrust": {
+      "__class__": "LogTocElement",
+      "ident": 288,
+      "group": "ctrlStdnt",
+      "name": "cmd_thrust",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "cmd_roll": {
+      "__class__": "LogTocElement",
+      "ident": 289,
+      "group": "ctrlStdnt",
+      "name": "cmd_roll",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "cmd_pitch": {
+      "__class__": "LogTocElement",
+      "ident": 290,
+      "group": "ctrlStdnt",
+      "name": "cmd_pitch",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "cmd_yaw": {
+      "__class__": "LogTocElement",
+      "ident": 291,
+      "group": "ctrlStdnt",
+      "name": "cmd_yaw",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "r_roll": {
+      "__class__": "LogTocElement",
+      "ident": 292,
+      "group": "ctrlStdnt",
+      "name": "r_roll",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "r_pitch": {
+      "__class__": "LogTocElement",
+      "ident": 293,
+      "group": "ctrlStdnt",
+      "name": "r_pitch",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "r_yaw": {
+      "__class__": "LogTocElement",
+      "ident": 294,
+      "group": "ctrlStdnt",
+      "name": "r_yaw",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "accelz": {
+      "__class__": "LogTocElement",
+      "ident": 295,
+      "group": "ctrlStdnt",
+      "name": "accelz",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "thrustDesired": {
+      "__class__": "LogTocElement",
+      "ident": 296,
+      "group": "ctrlStdnt",
+      "name": "thrustDesired",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "roll": {
+      "__class__": "LogTocElement",
+      "ident": 297,
+      "group": "ctrlStdnt",
+      "name": "roll",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "pitch": {
+      "__class__": "LogTocElement",
+      "ident": 298,
+      "group": "ctrlStdnt",
+      "name": "pitch",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "yaw": {
+      "__class__": "LogTocElement",
+      "ident": 299,
+      "group": "ctrlStdnt",
+      "name": "yaw",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "rollRate": {
+      "__class__": "LogTocElement",
+      "ident": 300,
+      "group": "ctrlStdnt",
+      "name": "rollRate",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "pitchRate": {
+      "__class__": "LogTocElement",
+      "ident": 301,
+      "group": "ctrlStdnt",
+      "name": "pitchRate",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "yawRate": {
+      "__class__": "LogTocElement",
+      "ident": 302,
+      "group": "ctrlStdnt",
+      "name": "yawRate",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    }
+  },
+  "motor": {
+    "m1": {
+      "__class__": "LogTocElement",
+      "ident": 303,
+      "group": "motor",
+      "name": "m1",
+      "ctype": "uint32_t",
+      "pytype": "<L",
+      "access": 0
+    },
+    "m2": {
+      "__class__": "LogTocElement",
+      "ident": 304,
+      "group": "motor",
+      "name": "m2",
+      "ctype": "uint32_t",
+      "pytype": "<L",
+      "access": 0
+    },
+    "m3": {
+      "__class__": "LogTocElement",
+      "ident": 305,
+      "group": "motor",
+      "name": "m3",
+      "ctype": "uint32_t",
+      "pytype": "<L",
+      "access": 0
+    },
+    "m4": {
+      "__class__": "LogTocElement",
+      "ident": 306,
+      "group": "motor",
+      "name": "m4",
+      "ctype": "uint32_t",
+      "pytype": "<L",
+      "access": 0
+    }
+  },
+  "colAv": {
+    "latency": {
+      "__class__": "LogTocElement",
+      "ident": 307,
+      "group": "colAv",
+      "name": "latency",
+      "ctype": "uint32_t",
+      "pytype": "<L",
+      "access": 0
+    }
+  },
+  "health": {
+    "motorVarXM1": {
+      "__class__": "LogTocElement",
+      "ident": 308,
+      "group": "health",
+      "name": "motorVarXM1",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "motorVarYM1": {
+      "__class__": "LogTocElement",
+      "ident": 309,
+      "group": "health",
+      "name": "motorVarYM1",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "motorVarXM2": {
+      "__class__": "LogTocElement",
+      "ident": 310,
+      "group": "health",
+      "name": "motorVarXM2",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "motorVarYM2": {
+      "__class__": "LogTocElement",
+      "ident": 311,
+      "group": "health",
+      "name": "motorVarYM2",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "motorVarXM3": {
+      "__class__": "LogTocElement",
+      "ident": 312,
+      "group": "health",
+      "name": "motorVarXM3",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "motorVarYM3": {
+      "__class__": "LogTocElement",
+      "ident": 313,
+      "group": "health",
+      "name": "motorVarYM3",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "motorVarXM4": {
+      "__class__": "LogTocElement",
+      "ident": 314,
+      "group": "health",
+      "name": "motorVarXM4",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "motorVarYM4": {
+      "__class__": "LogTocElement",
+      "ident": 315,
+      "group": "health",
+      "name": "motorVarYM4",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "motorPass": {
+      "__class__": "LogTocElement",
+      "ident": 316,
+      "group": "health",
+      "name": "motorPass",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0
+    },
+    "batterySag": {
+      "__class__": "LogTocElement",
+      "ident": 317,
+      "group": "health",
+      "name": "batterySag",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "batteryPass": {
+      "__class__": "LogTocElement",
+      "ident": 318,
+      "group": "health",
+      "name": "batteryPass",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0
+    },
+    "motorTestCount": {
+      "__class__": "LogTocElement",
+      "ident": 319,
+      "group": "health",
+      "name": "motorTestCount",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0
+    }
+  },
+  "kalman": {
+    "inFlight": {
+      "__class__": "LogTocElement",
+      "ident": 320,
+      "group": "kalman",
+      "name": "inFlight",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0
+    },
+    "stateX": {
+      "__class__": "LogTocElement",
+      "ident": 321,
+      "group": "kalman",
+      "name": "stateX",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "stateY": {
+      "__class__": "LogTocElement",
+      "ident": 322,
+      "group": "kalman",
+      "name": "stateY",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "stateZ": {
+      "__class__": "LogTocElement",
+      "ident": 323,
+      "group": "kalman",
+      "name": "stateZ",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "statePX": {
+      "__class__": "LogTocElement",
+      "ident": 324,
+      "group": "kalman",
+      "name": "statePX",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "statePY": {
+      "__class__": "LogTocElement",
+      "ident": 325,
+      "group": "kalman",
+      "name": "statePY",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "statePZ": {
+      "__class__": "LogTocElement",
+      "ident": 326,
+      "group": "kalman",
+      "name": "statePZ",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "stateD0": {
+      "__class__": "LogTocElement",
+      "ident": 327,
+      "group": "kalman",
+      "name": "stateD0",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "stateD1": {
+      "__class__": "LogTocElement",
+      "ident": 328,
+      "group": "kalman",
+      "name": "stateD1",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "stateD2": {
+      "__class__": "LogTocElement",
+      "ident": 329,
+      "group": "kalman",
+      "name": "stateD2",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "varX": {
+      "__class__": "LogTocElement",
+      "ident": 330,
+      "group": "kalman",
+      "name": "varX",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "varY": {
+      "__class__": "LogTocElement",
+      "ident": 331,
+      "group": "kalman",
+      "name": "varY",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "varZ": {
+      "__class__": "LogTocElement",
+      "ident": 332,
+      "group": "kalman",
+      "name": "varZ",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "varPX": {
+      "__class__": "LogTocElement",
+      "ident": 333,
+      "group": "kalman",
+      "name": "varPX",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "varPY": {
+      "__class__": "LogTocElement",
+      "ident": 334,
+      "group": "kalman",
+      "name": "varPY",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "varPZ": {
+      "__class__": "LogTocElement",
+      "ident": 335,
+      "group": "kalman",
+      "name": "varPZ",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "varD0": {
+      "__class__": "LogTocElement",
+      "ident": 336,
+      "group": "kalman",
+      "name": "varD0",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "varD1": {
+      "__class__": "LogTocElement",
+      "ident": 337,
+      "group": "kalman",
+      "name": "varD1",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "varD2": {
+      "__class__": "LogTocElement",
+      "ident": 338,
+      "group": "kalman",
+      "name": "varD2",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "q0": {
+      "__class__": "LogTocElement",
+      "ident": 339,
+      "group": "kalman",
+      "name": "q0",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "q1": {
+      "__class__": "LogTocElement",
+      "ident": 340,
+      "group": "kalman",
+      "name": "q1",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "q2": {
+      "__class__": "LogTocElement",
+      "ident": 341,
+      "group": "kalman",
+      "name": "q2",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "q3": {
+      "__class__": "LogTocElement",
+      "ident": 342,
+      "group": "kalman",
+      "name": "q3",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "rtUpdate": {
+      "__class__": "LogTocElement",
+      "ident": 343,
+      "group": "kalman",
+      "name": "rtUpdate",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "rtPred": {
+      "__class__": "LogTocElement",
+      "ident": 344,
+      "group": "kalman",
+      "name": "rtPred",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "rtFinal": {
+      "__class__": "LogTocElement",
+      "ident": 345,
+      "group": "kalman",
+      "name": "rtFinal",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    }
+  },
+  "outlierf": {
+    "lhWin": {
+      "__class__": "LogTocElement",
+      "ident": 346,
+      "group": "outlierf",
+      "name": "lhWin",
+      "ctype": "int32_t",
+      "pytype": "<i",
+      "access": 0
+    },
+    "bucket0": {
+      "__class__": "LogTocElement",
+      "ident": 427,
+      "group": "outlierf",
+      "name": "bucket0",
+      "ctype": "int32_t",
+      "pytype": "<i",
+      "access": 0
+    },
+    "bucket1": {
+      "__class__": "LogTocElement",
+      "ident": 428,
+      "group": "outlierf",
+      "name": "bucket1",
+      "ctype": "int32_t",
+      "pytype": "<i",
+      "access": 0
+    },
+    "bucket2": {
+      "__class__": "LogTocElement",
+      "ident": 429,
+      "group": "outlierf",
+      "name": "bucket2",
+      "ctype": "int32_t",
+      "pytype": "<i",
+      "access": 0
+    },
+    "bucket3": {
+      "__class__": "LogTocElement",
+      "ident": 430,
+      "group": "outlierf",
+      "name": "bucket3",
+      "ctype": "int32_t",
+      "pytype": "<i",
+      "access": 0
+    },
+    "bucket4": {
+      "__class__": "LogTocElement",
+      "ident": 431,
+      "group": "outlierf",
+      "name": "bucket4",
+      "ctype": "int32_t",
+      "pytype": "<i",
+      "access": 0
+    },
+    "accLev": {
+      "__class__": "LogTocElement",
+      "ident": 432,
+      "group": "outlierf",
+      "name": "accLev",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "errD": {
+      "__class__": "LogTocElement",
+      "ident": 433,
+      "group": "outlierf",
+      "name": "errD",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    }
+  },
+  "kalman_pred": {
+    "predNX": {
+      "__class__": "LogTocElement",
+      "ident": 347,
+      "group": "kalman_pred",
+      "name": "predNX",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "predNY": {
+      "__class__": "LogTocElement",
+      "ident": 348,
+      "group": "kalman_pred",
+      "name": "predNY",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "measNX": {
+      "__class__": "LogTocElement",
+      "ident": 349,
+      "group": "kalman_pred",
+      "name": "measNX",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "measNY": {
+      "__class__": "LogTocElement",
+      "ident": 350,
+      "group": "kalman_pred",
+      "name": "measNY",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    }
+  },
+  "ring": {
+    "fadeTime": {
+      "__class__": "LogTocElement",
+      "ident": 351,
+      "group": "ring",
+      "name": "fadeTime",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    }
+  },
+  "gps": {
+    "lat": {
+      "__class__": "LogTocElement",
+      "ident": 352,
+      "group": "gps",
+      "name": "lat",
+      "ctype": "int32_t",
+      "pytype": "<i",
+      "access": 0
+    },
+    "lon": {
+      "__class__": "LogTocElement",
+      "ident": 353,
+      "group": "gps",
+      "name": "lon",
+      "ctype": "int32_t",
+      "pytype": "<i",
+      "access": 0
+    },
+    "hMSL": {
+      "__class__": "LogTocElement",
+      "ident": 354,
+      "group": "gps",
+      "name": "hMSL",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "hAcc": {
+      "__class__": "LogTocElement",
+      "ident": 355,
+      "group": "gps",
+      "name": "hAcc",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "nsat": {
+      "__class__": "LogTocElement",
+      "ident": 356,
+      "group": "gps",
+      "name": "nsat",
+      "ctype": "int32_t",
+      "pytype": "<i",
+      "access": 0
+    },
+    "fix": {
+      "__class__": "LogTocElement",
+      "ident": 357,
+      "group": "gps",
+      "name": "fix",
+      "ctype": "int32_t",
+      "pytype": "<i",
+      "access": 0
+    }
+  },
+  "usd": {
+    "spiWrBps": {
+      "__class__": "LogTocElement",
+      "ident": 358,
+      "group": "usd",
+      "name": "spiWrBps",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "spiReBps": {
+      "__class__": "LogTocElement",
+      "ident": 359,
+      "group": "usd",
+      "name": "spiReBps",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "fatWrBps": {
+      "__class__": "LogTocElement",
+      "ident": 360,
+      "group": "usd",
+      "name": "fatWrBps",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    }
+  },
+  "loco": {
+    "mode": {
+      "__class__": "LogTocElement",
+      "ident": 361,
+      "group": "loco",
+      "name": "mode",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0
+    },
+    "spiWr": {
+      "__class__": "LogTocElement",
+      "ident": 362,
+      "group": "loco",
+      "name": "spiWr",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "spiRe": {
+      "__class__": "LogTocElement",
+      "ident": 363,
+      "group": "loco",
+      "name": "spiRe",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    }
+  },
+  "ranging": {
+    "state": {
+      "__class__": "LogTocElement",
+      "ident": 364,
+      "group": "ranging",
+      "name": "state",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0
+    },
+    "distance0": {
+      "__class__": "LogTocElement",
+      "ident": 365,
+      "group": "ranging",
+      "name": "distance0",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "distance1": {
+      "__class__": "LogTocElement",
+      "ident": 366,
+      "group": "ranging",
+      "name": "distance1",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "distance2": {
+      "__class__": "LogTocElement",
+      "ident": 367,
+      "group": "ranging",
+      "name": "distance2",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "distance3": {
+      "__class__": "LogTocElement",
+      "ident": 368,
+      "group": "ranging",
+      "name": "distance3",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "distance4": {
+      "__class__": "LogTocElement",
+      "ident": 369,
+      "group": "ranging",
+      "name": "distance4",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "distance5": {
+      "__class__": "LogTocElement",
+      "ident": 370,
+      "group": "ranging",
+      "name": "distance5",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "distance6": {
+      "__class__": "LogTocElement",
+      "ident": 371,
+      "group": "ranging",
+      "name": "distance6",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "distance7": {
+      "__class__": "LogTocElement",
+      "ident": 372,
+      "group": "ranging",
+      "name": "distance7",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "pressure0": {
+      "__class__": "LogTocElement",
+      "ident": 373,
+      "group": "ranging",
+      "name": "pressure0",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "pressure1": {
+      "__class__": "LogTocElement",
+      "ident": 374,
+      "group": "ranging",
+      "name": "pressure1",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "pressure2": {
+      "__class__": "LogTocElement",
+      "ident": 375,
+      "group": "ranging",
+      "name": "pressure2",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "pressure3": {
+      "__class__": "LogTocElement",
+      "ident": 376,
+      "group": "ranging",
+      "name": "pressure3",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "pressure4": {
+      "__class__": "LogTocElement",
+      "ident": 377,
+      "group": "ranging",
+      "name": "pressure4",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "pressure5": {
+      "__class__": "LogTocElement",
+      "ident": 378,
+      "group": "ranging",
+      "name": "pressure5",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "pressure6": {
+      "__class__": "LogTocElement",
+      "ident": 379,
+      "group": "ranging",
+      "name": "pressure6",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "pressure7": {
+      "__class__": "LogTocElement",
+      "ident": 380,
+      "group": "ranging",
+      "name": "pressure7",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    }
+  },
+  "twr": {
+    "rangingSuccessRate0": {
+      "__class__": "LogTocElement",
+      "ident": 381,
+      "group": "twr",
+      "name": "rangingSuccessRate0",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0
+    },
+    "rangingPerSec0": {
+      "__class__": "LogTocElement",
+      "ident": 382,
+      "group": "twr",
+      "name": "rangingPerSec0",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0
+    },
+    "rangingSuccessRate1": {
+      "__class__": "LogTocElement",
+      "ident": 383,
+      "group": "twr",
+      "name": "rangingSuccessRate1",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0
+    },
+    "rangingPerSec1": {
+      "__class__": "LogTocElement",
+      "ident": 384,
+      "group": "twr",
+      "name": "rangingPerSec1",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0
+    },
+    "rangingSuccessRate2": {
+      "__class__": "LogTocElement",
+      "ident": 385,
+      "group": "twr",
+      "name": "rangingSuccessRate2",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0
+    },
+    "rangingPerSec2": {
+      "__class__": "LogTocElement",
+      "ident": 386,
+      "group": "twr",
+      "name": "rangingPerSec2",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0
+    },
+    "rangingSuccessRate3": {
+      "__class__": "LogTocElement",
+      "ident": 387,
+      "group": "twr",
+      "name": "rangingSuccessRate3",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0
+    },
+    "rangingPerSec3": {
+      "__class__": "LogTocElement",
+      "ident": 388,
+      "group": "twr",
+      "name": "rangingPerSec3",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0
+    },
+    "rangingSuccessRate4": {
+      "__class__": "LogTocElement",
+      "ident": 389,
+      "group": "twr",
+      "name": "rangingSuccessRate4",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0
+    },
+    "rangingPerSec4": {
+      "__class__": "LogTocElement",
+      "ident": 390,
+      "group": "twr",
+      "name": "rangingPerSec4",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0
+    },
+    "rangingSuccessRate5": {
+      "__class__": "LogTocElement",
+      "ident": 391,
+      "group": "twr",
+      "name": "rangingSuccessRate5",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0
+    },
+    "rangingPerSec5": {
+      "__class__": "LogTocElement",
+      "ident": 392,
+      "group": "twr",
+      "name": "rangingPerSec5",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0
+    }
+  },
+  "tdoa2": {
+    "d7-0": {
+      "__class__": "LogTocElement",
+      "ident": 393,
+      "group": "tdoa2",
+      "name": "d7-0",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "d0-1": {
+      "__class__": "LogTocElement",
+      "ident": 394,
+      "group": "tdoa2",
+      "name": "d0-1",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "d1-2": {
+      "__class__": "LogTocElement",
+      "ident": 395,
+      "group": "tdoa2",
+      "name": "d1-2",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "d2-3": {
+      "__class__": "LogTocElement",
+      "ident": 396,
+      "group": "tdoa2",
+      "name": "d2-3",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "d3-4": {
+      "__class__": "LogTocElement",
+      "ident": 397,
+      "group": "tdoa2",
+      "name": "d3-4",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "d4-5": {
+      "__class__": "LogTocElement",
+      "ident": 398,
+      "group": "tdoa2",
+      "name": "d4-5",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "d5-6": {
+      "__class__": "LogTocElement",
+      "ident": 399,
+      "group": "tdoa2",
+      "name": "d5-6",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "d6-7": {
+      "__class__": "LogTocElement",
+      "ident": 400,
+      "group": "tdoa2",
+      "name": "d6-7",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "cc0": {
+      "__class__": "LogTocElement",
+      "ident": 401,
+      "group": "tdoa2",
+      "name": "cc0",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "cc1": {
+      "__class__": "LogTocElement",
+      "ident": 402,
+      "group": "tdoa2",
+      "name": "cc1",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "cc2": {
+      "__class__": "LogTocElement",
+      "ident": 403,
+      "group": "tdoa2",
+      "name": "cc2",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "cc3": {
+      "__class__": "LogTocElement",
+      "ident": 404,
+      "group": "tdoa2",
+      "name": "cc3",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "cc4": {
+      "__class__": "LogTocElement",
+      "ident": 405,
+      "group": "tdoa2",
+      "name": "cc4",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "cc5": {
+      "__class__": "LogTocElement",
+      "ident": 406,
+      "group": "tdoa2",
+      "name": "cc5",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "cc6": {
+      "__class__": "LogTocElement",
+      "ident": 407,
+      "group": "tdoa2",
+      "name": "cc6",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "cc7": {
+      "__class__": "LogTocElement",
+      "ident": 408,
+      "group": "tdoa2",
+      "name": "cc7",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "dist7-0": {
+      "__class__": "LogTocElement",
+      "ident": 409,
+      "group": "tdoa2",
+      "name": "dist7-0",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0
+    },
+    "dist0-1": {
+      "__class__": "LogTocElement",
+      "ident": 410,
+      "group": "tdoa2",
+      "name": "dist0-1",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0
+    },
+    "dist1-2": {
+      "__class__": "LogTocElement",
+      "ident": 411,
+      "group": "tdoa2",
+      "name": "dist1-2",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0
+    },
+    "dist2-3": {
+      "__class__": "LogTocElement",
+      "ident": 412,
+      "group": "tdoa2",
+      "name": "dist2-3",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0
+    },
+    "dist3-4": {
+      "__class__": "LogTocElement",
+      "ident": 413,
+      "group": "tdoa2",
+      "name": "dist3-4",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0
+    },
+    "dist4-5": {
+      "__class__": "LogTocElement",
+      "ident": 414,
+      "group": "tdoa2",
+      "name": "dist4-5",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0
+    },
+    "dist5-6": {
+      "__class__": "LogTocElement",
+      "ident": 415,
+      "group": "tdoa2",
+      "name": "dist5-6",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0
+    },
+    "dist6-7": {
+      "__class__": "LogTocElement",
+      "ident": 416,
+      "group": "tdoa2",
+      "name": "dist6-7",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0
+    }
+  },
+  "tdoaEngine": {
+    "stRx": {
+      "__class__": "LogTocElement",
+      "ident": 417,
+      "group": "tdoaEngine",
+      "name": "stRx",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "stEst": {
+      "__class__": "LogTocElement",
+      "ident": 418,
+      "group": "tdoaEngine",
+      "name": "stEst",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "stTime": {
+      "__class__": "LogTocElement",
+      "ident": 419,
+      "group": "tdoaEngine",
+      "name": "stTime",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "stFound": {
+      "__class__": "LogTocElement",
+      "ident": 420,
+      "group": "tdoaEngine",
+      "name": "stFound",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "stCc": {
+      "__class__": "LogTocElement",
+      "ident": 421,
+      "group": "tdoaEngine",
+      "name": "stCc",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "stHit": {
+      "__class__": "LogTocElement",
+      "ident": 422,
+      "group": "tdoaEngine",
+      "name": "stHit",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "stMiss": {
+      "__class__": "LogTocElement",
+      "ident": 423,
+      "group": "tdoaEngine",
+      "name": "stMiss",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "cc": {
+      "__class__": "LogTocElement",
+      "ident": 424,
+      "group": "tdoaEngine",
+      "name": "cc",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "tof": {
+      "__class__": "LogTocElement",
+      "ident": 425,
+      "group": "tdoaEngine",
+      "name": "tof",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0
+    },
+    "tdoa": {
+      "__class__": "LogTocElement",
+      "ident": 426,
+      "group": "tdoaEngine",
+      "name": "tdoa",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    }
+  },
+  "motion": {
+    "motion": {
+      "__class__": "LogTocElement",
+      "ident": 434,
+      "group": "motion",
+      "name": "motion",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0
+    },
+    "deltaX": {
+      "__class__": "LogTocElement",
+      "ident": 435,
+      "group": "motion",
+      "name": "deltaX",
+      "ctype": "int16_t",
+      "pytype": "<h",
+      "access": 0
+    },
+    "deltaY": {
+      "__class__": "LogTocElement",
+      "ident": 436,
+      "group": "motion",
+      "name": "deltaY",
+      "ctype": "int16_t",
+      "pytype": "<h",
+      "access": 0
+    },
+    "shutter": {
+      "__class__": "LogTocElement",
+      "ident": 437,
+      "group": "motion",
+      "name": "shutter",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0
+    },
+    "maxRaw": {
+      "__class__": "LogTocElement",
+      "ident": 438,
+      "group": "motion",
+      "name": "maxRaw",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0
+    },
+    "minRaw": {
+      "__class__": "LogTocElement",
+      "ident": 439,
+      "group": "motion",
+      "name": "minRaw",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0
+    },
+    "Rawsum": {
+      "__class__": "LogTocElement",
+      "ident": 440,
+      "group": "motion",
+      "name": "Rawsum",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0
+    },
+    "outlierCount": {
+      "__class__": "LogTocElement",
+      "ident": 441,
+      "group": "motion",
+      "name": "outlierCount",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0
+    },
+    "squal": {
+      "__class__": "LogTocElement",
+      "ident": 442,
+      "group": "motion",
+      "name": "squal",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0
+    },
+    "std": {
+      "__class__": "LogTocElement",
+      "ident": 443,
+      "group": "motion",
+      "name": "std",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    }
+  },
+  "oa": {
+    "front": {
+      "__class__": "LogTocElement",
+      "ident": 444,
+      "group": "oa",
+      "name": "front",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0
+    },
+    "back": {
+      "__class__": "LogTocElement",
+      "ident": 445,
+      "group": "oa",
+      "name": "back",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0
+    },
+    "up": {
+      "__class__": "LogTocElement",
+      "ident": 446,
+      "group": "oa",
+      "name": "up",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0
+    },
+    "left": {
+      "__class__": "LogTocElement",
+      "ident": 447,
+      "group": "oa",
+      "name": "left",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0
+    },
+    "right": {
+      "__class__": "LogTocElement",
+      "ident": 448,
+      "group": "oa",
+      "name": "right",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0
+    }
+  },
+  "activeMarker": {
+    "btSns": {
+      "__class__": "LogTocElement",
+      "ident": 449,
+      "group": "activeMarker",
+      "name": "btSns",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0
+    },
+    "i2cOk": {
+      "__class__": "LogTocElement",
+      "ident": 450,
+      "group": "activeMarker",
+      "name": "i2cOk",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0
+    }
+  },
+  "aideck": {
+    "receivebyte": {
+      "__class__": "LogTocElement",
+      "ident": 451,
+      "group": "aideck",
+      "name": "receivebyte",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0
+    }
+  },
+  "lighthouse": {
+    "validAngles": {
+      "__class__": "LogTocElement",
+      "ident": 452,
+      "group": "lighthouse",
+      "name": "validAngles",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0
+    },
+    "rawAngle0x": {
+      "__class__": "LogTocElement",
+      "ident": 453,
+      "group": "lighthouse",
+      "name": "rawAngle0x",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "rawAngle0y": {
+      "__class__": "LogTocElement",
+      "ident": 454,
+      "group": "lighthouse",
+      "name": "rawAngle0y",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "rawAngle1x": {
+      "__class__": "LogTocElement",
+      "ident": 455,
+      "group": "lighthouse",
+      "name": "rawAngle1x",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "rawAngle1y": {
+      "__class__": "LogTocElement",
+      "ident": 456,
+      "group": "lighthouse",
+      "name": "rawAngle1y",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "angle0x": {
+      "__class__": "LogTocElement",
+      "ident": 457,
+      "group": "lighthouse",
+      "name": "angle0x",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "angle0y": {
+      "__class__": "LogTocElement",
+      "ident": 458,
+      "group": "lighthouse",
+      "name": "angle0y",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "angle1x": {
+      "__class__": "LogTocElement",
+      "ident": 459,
+      "group": "lighthouse",
+      "name": "angle1x",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "angle1y": {
+      "__class__": "LogTocElement",
+      "ident": 460,
+      "group": "lighthouse",
+      "name": "angle1y",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "angle0x_1": {
+      "__class__": "LogTocElement",
+      "ident": 461,
+      "group": "lighthouse",
+      "name": "angle0x_1",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "angle0y_1": {
+      "__class__": "LogTocElement",
+      "ident": 462,
+      "group": "lighthouse",
+      "name": "angle0y_1",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "angle1x_1": {
+      "__class__": "LogTocElement",
+      "ident": 463,
+      "group": "lighthouse",
+      "name": "angle1x_1",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "angle1y_1": {
+      "__class__": "LogTocElement",
+      "ident": 464,
+      "group": "lighthouse",
+      "name": "angle1y_1",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "angle0x_2": {
+      "__class__": "LogTocElement",
+      "ident": 465,
+      "group": "lighthouse",
+      "name": "angle0x_2",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "angle0y_2": {
+      "__class__": "LogTocElement",
+      "ident": 466,
+      "group": "lighthouse",
+      "name": "angle0y_2",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "angle1x_2": {
+      "__class__": "LogTocElement",
+      "ident": 467,
+      "group": "lighthouse",
+      "name": "angle1x_2",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "angle1y_2": {
+      "__class__": "LogTocElement",
+      "ident": 468,
+      "group": "lighthouse",
+      "name": "angle1y_2",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "angle0x_3": {
+      "__class__": "LogTocElement",
+      "ident": 469,
+      "group": "lighthouse",
+      "name": "angle0x_3",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "angle0y_3": {
+      "__class__": "LogTocElement",
+      "ident": 470,
+      "group": "lighthouse",
+      "name": "angle0y_3",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "angle1x_3": {
+      "__class__": "LogTocElement",
+      "ident": 471,
+      "group": "lighthouse",
+      "name": "angle1x_3",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "angle1y_3": {
+      "__class__": "LogTocElement",
+      "ident": 472,
+      "group": "lighthouse",
+      "name": "angle1y_3",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "rawAngle0xlh2": {
+      "__class__": "LogTocElement",
+      "ident": 473,
+      "group": "lighthouse",
+      "name": "rawAngle0xlh2",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "rawAngle0ylh2": {
+      "__class__": "LogTocElement",
+      "ident": 474,
+      "group": "lighthouse",
+      "name": "rawAngle0ylh2",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "rawAngle1xlh2": {
+      "__class__": "LogTocElement",
+      "ident": 475,
+      "group": "lighthouse",
+      "name": "rawAngle1xlh2",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "rawAngle1ylh2": {
+      "__class__": "LogTocElement",
+      "ident": 476,
+      "group": "lighthouse",
+      "name": "rawAngle1ylh2",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "angle0x_0lh2": {
+      "__class__": "LogTocElement",
+      "ident": 477,
+      "group": "lighthouse",
+      "name": "angle0x_0lh2",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "angle0y_0lh2": {
+      "__class__": "LogTocElement",
+      "ident": 478,
+      "group": "lighthouse",
+      "name": "angle0y_0lh2",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "angle1x_0lh2": {
+      "__class__": "LogTocElement",
+      "ident": 479,
+      "group": "lighthouse",
+      "name": "angle1x_0lh2",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "angle1y_0lh2": {
+      "__class__": "LogTocElement",
+      "ident": 480,
+      "group": "lighthouse",
+      "name": "angle1y_0lh2",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "serRt": {
+      "__class__": "LogTocElement",
+      "ident": 481,
+      "group": "lighthouse",
+      "name": "serRt",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "frmRt": {
+      "__class__": "LogTocElement",
+      "ident": 482,
+      "group": "lighthouse",
+      "name": "frmRt",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "cycleRt": {
+      "__class__": "LogTocElement",
+      "ident": 483,
+      "group": "lighthouse",
+      "name": "cycleRt",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "bs0Rt": {
+      "__class__": "LogTocElement",
+      "ident": 484,
+      "group": "lighthouse",
+      "name": "bs0Rt",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "bs1Rt": {
+      "__class__": "LogTocElement",
+      "ident": 485,
+      "group": "lighthouse",
+      "name": "bs1Rt",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "width0": {
+      "__class__": "LogTocElement",
+      "ident": 486,
+      "group": "lighthouse",
+      "name": "width0",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0
+    },
+    "width1": {
+      "__class__": "LogTocElement",
+      "ident": 487,
+      "group": "lighthouse",
+      "name": "width1",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0
+    },
+    "width2": {
+      "__class__": "LogTocElement",
+      "ident": 488,
+      "group": "lighthouse",
+      "name": "width2",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0
+    },
+    "width3": {
+      "__class__": "LogTocElement",
+      "ident": 489,
+      "group": "lighthouse",
+      "name": "width3",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0
+    },
+    "comSync": {
+      "__class__": "LogTocElement",
+      "ident": 490,
+      "group": "lighthouse",
+      "name": "comSync",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0
+    },
+    "bsReceive": {
+      "__class__": "LogTocElement",
+      "ident": 491,
+      "group": "lighthouse",
+      "name": "bsReceive",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0
+    },
+    "bsActive": {
+      "__class__": "LogTocElement",
+      "ident": 492,
+      "group": "lighthouse",
+      "name": "bsActive",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0
+    },
+    "bsCalUd": {
+      "__class__": "LogTocElement",
+      "ident": 493,
+      "group": "lighthouse",
+      "name": "bsCalUd",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0
+    },
+    "bsCalCon": {
+      "__class__": "LogTocElement",
+      "ident": 494,
+      "group": "lighthouse",
+      "name": "bsCalCon",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0
+    },
+    "status": {
+      "__class__": "LogTocElement",
+      "ident": 495,
+      "group": "lighthouse",
+      "name": "status",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0
+    },
+    "posRt": {
+      "__class__": "LogTocElement",
+      "ident": 496,
+      "group": "lighthouse",
+      "name": "posRt",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "estBs0Rt": {
+      "__class__": "LogTocElement",
+      "ident": 497,
+      "group": "lighthouse",
+      "name": "estBs0Rt",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "estBs1Rt": {
+      "__class__": "LogTocElement",
+      "ident": 498,
+      "group": "lighthouse",
+      "name": "estBs1Rt",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "x": {
+      "__class__": "LogTocElement",
+      "ident": 499,
+      "group": "lighthouse",
+      "name": "x",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "y": {
+      "__class__": "LogTocElement",
+      "ident": 500,
+      "group": "lighthouse",
+      "name": "y",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "z": {
+      "__class__": "LogTocElement",
+      "ident": 501,
+      "group": "lighthouse",
+      "name": "z",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "delta": {
+      "__class__": "LogTocElement",
+      "ident": 502,
+      "group": "lighthouse",
+      "name": "delta",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0
+    },
+    "bsGeoVal": {
+      "__class__": "LogTocElement",
+      "ident": 503,
+      "group": "lighthouse",
+      "name": "bsGeoVal",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0
+    },
+    "bsCalVal": {
+      "__class__": "LogTocElement",
+      "ident": 504,
+      "group": "lighthouse",
+      "name": "bsCalVal",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0
+    }
+  }
+}
\ No newline at end of file
diff --git a/cache/CCB14664.json b/cache/CCB14664.json
new file mode 100644
index 000000000..e7a113b3d
--- /dev/null
+++ b/cache/CCB14664.json
@@ -0,0 +1,2544 @@
+{
+  "imu_sensors": {
+    "AK8963": {
+      "__class__": "ParamTocElement",
+      "ident": 0,
+      "group": "imu_sensors",
+      "name": "AK8963",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 1,
+      "extended": false
+    },
+    "LPS25H": {
+      "__class__": "ParamTocElement",
+      "ident": 1,
+      "group": "imu_sensors",
+      "name": "LPS25H",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 1,
+      "extended": false
+    },
+    "BMP388": {
+      "__class__": "ParamTocElement",
+      "ident": 5,
+      "group": "imu_sensors",
+      "name": "BMP388",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 1,
+      "extended": false
+    }
+  },
+  "imu_tests": {
+    "MPU6500": {
+      "__class__": "ParamTocElement",
+      "ident": 2,
+      "group": "imu_tests",
+      "name": "MPU6500",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 1,
+      "extended": false
+    },
+    "AK8963": {
+      "__class__": "ParamTocElement",
+      "ident": 3,
+      "group": "imu_tests",
+      "name": "AK8963",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 1,
+      "extended": false
+    },
+    "LPS25H": {
+      "__class__": "ParamTocElement",
+      "ident": 4,
+      "group": "imu_tests",
+      "name": "LPS25H",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 1,
+      "extended": false
+    }
+  },
+  "cpu": {
+    "flash": {
+      "__class__": "ParamTocElement",
+      "ident": 6,
+      "group": "cpu",
+      "name": "flash",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 1,
+      "extended": false
+    },
+    "id0": {
+      "__class__": "ParamTocElement",
+      "ident": 7,
+      "group": "cpu",
+      "name": "id0",
+      "ctype": "uint32_t",
+      "pytype": "<L",
+      "access": 1,
+      "extended": false
+    },
+    "id1": {
+      "__class__": "ParamTocElement",
+      "ident": 8,
+      "group": "cpu",
+      "name": "id1",
+      "ctype": "uint32_t",
+      "pytype": "<L",
+      "access": 1,
+      "extended": false
+    },
+    "id2": {
+      "__class__": "ParamTocElement",
+      "ident": 9,
+      "group": "cpu",
+      "name": "id2",
+      "ctype": "uint32_t",
+      "pytype": "<L",
+      "access": 1,
+      "extended": false
+    }
+  },
+  "system": {
+    "selftestPassed": {
+      "__class__": "ParamTocElement",
+      "ident": 10,
+      "group": "system",
+      "name": "selftestPassed",
+      "ctype": "int8_t",
+      "pytype": "<b",
+      "access": 1,
+      "extended": false
+    },
+    "forceArm": {
+      "__class__": "ParamTocElement",
+      "ident": 11,
+      "group": "system",
+      "name": "forceArm",
+      "ctype": "int8_t",
+      "pytype": "<b",
+      "access": 0,
+      "extended": false
+    },
+    "taskDump": {
+      "__class__": "ParamTocElement",
+      "ident": 16,
+      "group": "system",
+      "name": "taskDump",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0,
+      "extended": false
+    },
+    "highlight": {
+      "__class__": "ParamTocElement",
+      "ident": 208,
+      "group": "system",
+      "name": "highlight",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0,
+      "extended": false
+    }
+  },
+  "crtpsrv": {
+    "echoDelay": {
+      "__class__": "ParamTocElement",
+      "ident": 12,
+      "group": "crtpsrv",
+      "name": "echoDelay",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0,
+      "extended": false
+    }
+  },
+  "sound": {
+    "effect": {
+      "__class__": "ParamTocElement",
+      "ident": 13,
+      "group": "sound",
+      "name": "effect",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0,
+      "extended": false
+    },
+    "neffect": {
+      "__class__": "ParamTocElement",
+      "ident": 14,
+      "group": "sound",
+      "name": "neffect",
+      "ctype": "uint32_t",
+      "pytype": "<L",
+      "access": 1,
+      "extended": false
+    },
+    "freq": {
+      "__class__": "ParamTocElement",
+      "ident": 15,
+      "group": "sound",
+      "name": "freq",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0,
+      "extended": false
+    }
+  },
+  "memTst": {
+    "resetW": {
+      "__class__": "ParamTocElement",
+      "ident": 17,
+      "group": "memTst",
+      "name": "resetW",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0,
+      "extended": false
+    }
+  },
+  "sys": {
+    "e_stop": {
+      "__class__": "ParamTocElement",
+      "ident": 18,
+      "group": "sys",
+      "name": "e_stop",
+      "ctype": "int8_t",
+      "pytype": "<b",
+      "access": 0,
+      "extended": false
+    }
+  },
+  "commander": {
+    "enHighLevel": {
+      "__class__": "ParamTocElement",
+      "ident": 19,
+      "group": "commander",
+      "name": "enHighLevel",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0,
+      "extended": false
+    }
+  },
+  "flightmode": {
+    "althold": {
+      "__class__": "ParamTocElement",
+      "ident": 20,
+      "group": "flightmode",
+      "name": "althold",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0,
+      "extended": false
+    },
+    "poshold": {
+      "__class__": "ParamTocElement",
+      "ident": 21,
+      "group": "flightmode",
+      "name": "poshold",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0,
+      "extended": false
+    },
+    "posSet": {
+      "__class__": "ParamTocElement",
+      "ident": 22,
+      "group": "flightmode",
+      "name": "posSet",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0,
+      "extended": false
+    },
+    "yawMode": {
+      "__class__": "ParamTocElement",
+      "ident": 23,
+      "group": "flightmode",
+      "name": "yawMode",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0,
+      "extended": false
+    },
+    "stabModeRoll": {
+      "__class__": "ParamTocElement",
+      "ident": 24,
+      "group": "flightmode",
+      "name": "stabModeRoll",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0,
+      "extended": false
+    },
+    "stabModePitch": {
+      "__class__": "ParamTocElement",
+      "ident": 25,
+      "group": "flightmode",
+      "name": "stabModePitch",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0,
+      "extended": false
+    },
+    "stabModeYaw": {
+      "__class__": "ParamTocElement",
+      "ident": 26,
+      "group": "flightmode",
+      "name": "stabModeYaw",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0,
+      "extended": false
+    }
+  },
+  "cmdrCPPM": {
+    "rateRoll": {
+      "__class__": "ParamTocElement",
+      "ident": 27,
+      "group": "cmdrCPPM",
+      "name": "rateRoll",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "ratePitch": {
+      "__class__": "ParamTocElement",
+      "ident": 28,
+      "group": "cmdrCPPM",
+      "name": "ratePitch",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "angPitch": {
+      "__class__": "ParamTocElement",
+      "ident": 29,
+      "group": "cmdrCPPM",
+      "name": "angPitch",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "angRoll": {
+      "__class__": "ParamTocElement",
+      "ident": 30,
+      "group": "cmdrCPPM",
+      "name": "angRoll",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "rateYaw": {
+      "__class__": "ParamTocElement",
+      "ident": 31,
+      "group": "cmdrCPPM",
+      "name": "rateYaw",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    }
+  },
+  "locSrv": {
+    "enRangeStreamFP32": {
+      "__class__": "ParamTocElement",
+      "ident": 32,
+      "group": "locSrv",
+      "name": "enRangeStreamFP32",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0,
+      "extended": false
+    },
+    "enLhAngleStream": {
+      "__class__": "ParamTocElement",
+      "ident": 33,
+      "group": "locSrv",
+      "name": "enLhAngleStream",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0,
+      "extended": false
+    },
+    "extPosStdDev": {
+      "__class__": "ParamTocElement",
+      "ident": 34,
+      "group": "locSrv",
+      "name": "extPosStdDev",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "extQuatStdDev": {
+      "__class__": "ParamTocElement",
+      "ident": 35,
+      "group": "locSrv",
+      "name": "extQuatStdDev",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    }
+  },
+  "pid_attitude": {
+    "roll_kp": {
+      "__class__": "ParamTocElement",
+      "ident": 36,
+      "group": "pid_attitude",
+      "name": "roll_kp",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "roll_ki": {
+      "__class__": "ParamTocElement",
+      "ident": 37,
+      "group": "pid_attitude",
+      "name": "roll_ki",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "roll_kd": {
+      "__class__": "ParamTocElement",
+      "ident": 38,
+      "group": "pid_attitude",
+      "name": "roll_kd",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "pitch_kp": {
+      "__class__": "ParamTocElement",
+      "ident": 39,
+      "group": "pid_attitude",
+      "name": "pitch_kp",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "pitch_ki": {
+      "__class__": "ParamTocElement",
+      "ident": 40,
+      "group": "pid_attitude",
+      "name": "pitch_ki",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "pitch_kd": {
+      "__class__": "ParamTocElement",
+      "ident": 41,
+      "group": "pid_attitude",
+      "name": "pitch_kd",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "yaw_kp": {
+      "__class__": "ParamTocElement",
+      "ident": 42,
+      "group": "pid_attitude",
+      "name": "yaw_kp",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "yaw_ki": {
+      "__class__": "ParamTocElement",
+      "ident": 43,
+      "group": "pid_attitude",
+      "name": "yaw_ki",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "yaw_kd": {
+      "__class__": "ParamTocElement",
+      "ident": 44,
+      "group": "pid_attitude",
+      "name": "yaw_kd",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    }
+  },
+  "pid_rate": {
+    "roll_kp": {
+      "__class__": "ParamTocElement",
+      "ident": 45,
+      "group": "pid_rate",
+      "name": "roll_kp",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "roll_ki": {
+      "__class__": "ParamTocElement",
+      "ident": 46,
+      "group": "pid_rate",
+      "name": "roll_ki",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "roll_kd": {
+      "__class__": "ParamTocElement",
+      "ident": 47,
+      "group": "pid_rate",
+      "name": "roll_kd",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "pitch_kp": {
+      "__class__": "ParamTocElement",
+      "ident": 48,
+      "group": "pid_rate",
+      "name": "pitch_kp",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "pitch_ki": {
+      "__class__": "ParamTocElement",
+      "ident": 49,
+      "group": "pid_rate",
+      "name": "pitch_ki",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "pitch_kd": {
+      "__class__": "ParamTocElement",
+      "ident": 50,
+      "group": "pid_rate",
+      "name": "pitch_kd",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "yaw_kp": {
+      "__class__": "ParamTocElement",
+      "ident": 51,
+      "group": "pid_rate",
+      "name": "yaw_kp",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "yaw_ki": {
+      "__class__": "ParamTocElement",
+      "ident": 52,
+      "group": "pid_rate",
+      "name": "yaw_ki",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "yaw_kd": {
+      "__class__": "ParamTocElement",
+      "ident": 53,
+      "group": "pid_rate",
+      "name": "yaw_kd",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    }
+  },
+  "sensfusion6": {
+    "kp": {
+      "__class__": "ParamTocElement",
+      "ident": 54,
+      "group": "sensfusion6",
+      "name": "kp",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "ki": {
+      "__class__": "ParamTocElement",
+      "ident": 55,
+      "group": "sensfusion6",
+      "name": "ki",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "baseZacc": {
+      "__class__": "ParamTocElement",
+      "ident": 56,
+      "group": "sensfusion6",
+      "name": "baseZacc",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    }
+  },
+  "stabilizer": {
+    "estimator": {
+      "__class__": "ParamTocElement",
+      "ident": 57,
+      "group": "stabilizer",
+      "name": "estimator",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0,
+      "extended": false
+    },
+    "controller": {
+      "__class__": "ParamTocElement",
+      "ident": 58,
+      "group": "stabilizer",
+      "name": "controller",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0,
+      "extended": false
+    },
+    "stop": {
+      "__class__": "ParamTocElement",
+      "ident": 59,
+      "group": "stabilizer",
+      "name": "stop",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0,
+      "extended": false
+    }
+  },
+  "posEstAlt": {
+    "estAlphaAsl": {
+      "__class__": "ParamTocElement",
+      "ident": 60,
+      "group": "posEstAlt",
+      "name": "estAlphaAsl",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "estAlphaZr": {
+      "__class__": "ParamTocElement",
+      "ident": 61,
+      "group": "posEstAlt",
+      "name": "estAlphaZr",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "velFactor": {
+      "__class__": "ParamTocElement",
+      "ident": 62,
+      "group": "posEstAlt",
+      "name": "velFactor",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "velZAlpha": {
+      "__class__": "ParamTocElement",
+      "ident": 63,
+      "group": "posEstAlt",
+      "name": "velZAlpha",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "vAccDeadband": {
+      "__class__": "ParamTocElement",
+      "ident": 64,
+      "group": "posEstAlt",
+      "name": "vAccDeadband",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    }
+  },
+  "posCtlPid": {
+    "xKp": {
+      "__class__": "ParamTocElement",
+      "ident": 65,
+      "group": "posCtlPid",
+      "name": "xKp",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "xKi": {
+      "__class__": "ParamTocElement",
+      "ident": 66,
+      "group": "posCtlPid",
+      "name": "xKi",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "xKd": {
+      "__class__": "ParamTocElement",
+      "ident": 67,
+      "group": "posCtlPid",
+      "name": "xKd",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "yKp": {
+      "__class__": "ParamTocElement",
+      "ident": 68,
+      "group": "posCtlPid",
+      "name": "yKp",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "yKi": {
+      "__class__": "ParamTocElement",
+      "ident": 69,
+      "group": "posCtlPid",
+      "name": "yKi",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "yKd": {
+      "__class__": "ParamTocElement",
+      "ident": 70,
+      "group": "posCtlPid",
+      "name": "yKd",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "zKp": {
+      "__class__": "ParamTocElement",
+      "ident": 71,
+      "group": "posCtlPid",
+      "name": "zKp",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "zKi": {
+      "__class__": "ParamTocElement",
+      "ident": 72,
+      "group": "posCtlPid",
+      "name": "zKi",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "zKd": {
+      "__class__": "ParamTocElement",
+      "ident": 73,
+      "group": "posCtlPid",
+      "name": "zKd",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "thrustBase": {
+      "__class__": "ParamTocElement",
+      "ident": 74,
+      "group": "posCtlPid",
+      "name": "thrustBase",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0,
+      "extended": false
+    },
+    "thrustMin": {
+      "__class__": "ParamTocElement",
+      "ident": 75,
+      "group": "posCtlPid",
+      "name": "thrustMin",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0,
+      "extended": false
+    },
+    "rpLimit": {
+      "__class__": "ParamTocElement",
+      "ident": 76,
+      "group": "posCtlPid",
+      "name": "rpLimit",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "xyVelMax": {
+      "__class__": "ParamTocElement",
+      "ident": 77,
+      "group": "posCtlPid",
+      "name": "xyVelMax",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "zVelMax": {
+      "__class__": "ParamTocElement",
+      "ident": 78,
+      "group": "posCtlPid",
+      "name": "zVelMax",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    }
+  },
+  "velCtlPid": {
+    "vxKp": {
+      "__class__": "ParamTocElement",
+      "ident": 79,
+      "group": "velCtlPid",
+      "name": "vxKp",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "vxKi": {
+      "__class__": "ParamTocElement",
+      "ident": 80,
+      "group": "velCtlPid",
+      "name": "vxKi",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "vxKd": {
+      "__class__": "ParamTocElement",
+      "ident": 81,
+      "group": "velCtlPid",
+      "name": "vxKd",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "vyKp": {
+      "__class__": "ParamTocElement",
+      "ident": 82,
+      "group": "velCtlPid",
+      "name": "vyKp",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "vyKi": {
+      "__class__": "ParamTocElement",
+      "ident": 83,
+      "group": "velCtlPid",
+      "name": "vyKi",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "vyKd": {
+      "__class__": "ParamTocElement",
+      "ident": 84,
+      "group": "velCtlPid",
+      "name": "vyKd",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "vzKp": {
+      "__class__": "ParamTocElement",
+      "ident": 85,
+      "group": "velCtlPid",
+      "name": "vzKp",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "vzKi": {
+      "__class__": "ParamTocElement",
+      "ident": 86,
+      "group": "velCtlPid",
+      "name": "vzKi",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "vzKd": {
+      "__class__": "ParamTocElement",
+      "ident": 87,
+      "group": "velCtlPid",
+      "name": "vzKd",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    }
+  },
+  "posCtrlIndi": {
+    "K_xi_x": {
+      "__class__": "ParamTocElement",
+      "ident": 88,
+      "group": "posCtrlIndi",
+      "name": "K_xi_x",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "K_xi_y": {
+      "__class__": "ParamTocElement",
+      "ident": 89,
+      "group": "posCtrlIndi",
+      "name": "K_xi_y",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "K_xi_z": {
+      "__class__": "ParamTocElement",
+      "ident": 90,
+      "group": "posCtrlIndi",
+      "name": "K_xi_z",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "K_dxi_x": {
+      "__class__": "ParamTocElement",
+      "ident": 91,
+      "group": "posCtrlIndi",
+      "name": "K_dxi_x",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "K_dxi_y": {
+      "__class__": "ParamTocElement",
+      "ident": 92,
+      "group": "posCtrlIndi",
+      "name": "K_dxi_y",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "K_dxi_z": {
+      "__class__": "ParamTocElement",
+      "ident": 93,
+      "group": "posCtrlIndi",
+      "name": "K_dxi_z",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "pq_clamping": {
+      "__class__": "ParamTocElement",
+      "ident": 94,
+      "group": "posCtrlIndi",
+      "name": "pq_clamping",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    }
+  },
+  "controller": {
+    "tiltComp": {
+      "__class__": "ParamTocElement",
+      "ident": 95,
+      "group": "controller",
+      "name": "tiltComp",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0,
+      "extended": false
+    }
+  },
+  "ctrlMel": {
+    "kp_xy": {
+      "__class__": "ParamTocElement",
+      "ident": 96,
+      "group": "ctrlMel",
+      "name": "kp_xy",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "kd_xy": {
+      "__class__": "ParamTocElement",
+      "ident": 97,
+      "group": "ctrlMel",
+      "name": "kd_xy",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "ki_xy": {
+      "__class__": "ParamTocElement",
+      "ident": 98,
+      "group": "ctrlMel",
+      "name": "ki_xy",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "i_range_xy": {
+      "__class__": "ParamTocElement",
+      "ident": 99,
+      "group": "ctrlMel",
+      "name": "i_range_xy",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "kp_z": {
+      "__class__": "ParamTocElement",
+      "ident": 100,
+      "group": "ctrlMel",
+      "name": "kp_z",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "kd_z": {
+      "__class__": "ParamTocElement",
+      "ident": 101,
+      "group": "ctrlMel",
+      "name": "kd_z",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "ki_z": {
+      "__class__": "ParamTocElement",
+      "ident": 102,
+      "group": "ctrlMel",
+      "name": "ki_z",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "i_range_z": {
+      "__class__": "ParamTocElement",
+      "ident": 103,
+      "group": "ctrlMel",
+      "name": "i_range_z",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "mass": {
+      "__class__": "ParamTocElement",
+      "ident": 104,
+      "group": "ctrlMel",
+      "name": "mass",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "massThrust": {
+      "__class__": "ParamTocElement",
+      "ident": 105,
+      "group": "ctrlMel",
+      "name": "massThrust",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "kR_xy": {
+      "__class__": "ParamTocElement",
+      "ident": 106,
+      "group": "ctrlMel",
+      "name": "kR_xy",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "kR_z": {
+      "__class__": "ParamTocElement",
+      "ident": 107,
+      "group": "ctrlMel",
+      "name": "kR_z",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "kw_xy": {
+      "__class__": "ParamTocElement",
+      "ident": 108,
+      "group": "ctrlMel",
+      "name": "kw_xy",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "kw_z": {
+      "__class__": "ParamTocElement",
+      "ident": 109,
+      "group": "ctrlMel",
+      "name": "kw_z",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "ki_m_xy": {
+      "__class__": "ParamTocElement",
+      "ident": 110,
+      "group": "ctrlMel",
+      "name": "ki_m_xy",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "ki_m_z": {
+      "__class__": "ParamTocElement",
+      "ident": 111,
+      "group": "ctrlMel",
+      "name": "ki_m_z",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "kd_omega_rp": {
+      "__class__": "ParamTocElement",
+      "ident": 112,
+      "group": "ctrlMel",
+      "name": "kd_omega_rp",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "i_range_m_xy": {
+      "__class__": "ParamTocElement",
+      "ident": 113,
+      "group": "ctrlMel",
+      "name": "i_range_m_xy",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "i_range_m_z": {
+      "__class__": "ParamTocElement",
+      "ident": 114,
+      "group": "ctrlMel",
+      "name": "i_range_m_z",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    }
+  },
+  "ctrlINDI": {
+    "thrust_threshold": {
+      "__class__": "ParamTocElement",
+      "ident": 115,
+      "group": "ctrlINDI",
+      "name": "thrust_threshold",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "bound_ctrl_input": {
+      "__class__": "ParamTocElement",
+      "ident": 116,
+      "group": "ctrlINDI",
+      "name": "bound_ctrl_input",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "g1_p": {
+      "__class__": "ParamTocElement",
+      "ident": 117,
+      "group": "ctrlINDI",
+      "name": "g1_p",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "g1_q": {
+      "__class__": "ParamTocElement",
+      "ident": 118,
+      "group": "ctrlINDI",
+      "name": "g1_q",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "g1_r": {
+      "__class__": "ParamTocElement",
+      "ident": 119,
+      "group": "ctrlINDI",
+      "name": "g1_r",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "g2": {
+      "__class__": "ParamTocElement",
+      "ident": 120,
+      "group": "ctrlINDI",
+      "name": "g2",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "ref_err_p": {
+      "__class__": "ParamTocElement",
+      "ident": 121,
+      "group": "ctrlINDI",
+      "name": "ref_err_p",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "ref_err_q": {
+      "__class__": "ParamTocElement",
+      "ident": 122,
+      "group": "ctrlINDI",
+      "name": "ref_err_q",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "ref_err_r": {
+      "__class__": "ParamTocElement",
+      "ident": 123,
+      "group": "ctrlINDI",
+      "name": "ref_err_r",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "ref_rate_p": {
+      "__class__": "ParamTocElement",
+      "ident": 124,
+      "group": "ctrlINDI",
+      "name": "ref_rate_p",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "ref_rate_q": {
+      "__class__": "ParamTocElement",
+      "ident": 125,
+      "group": "ctrlINDI",
+      "name": "ref_rate_q",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "ref_rate_r": {
+      "__class__": "ParamTocElement",
+      "ident": 126,
+      "group": "ctrlINDI",
+      "name": "ref_rate_r",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "act_dyn_p": {
+      "__class__": "ParamTocElement",
+      "ident": 127,
+      "group": "ctrlINDI",
+      "name": "act_dyn_p",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "act_dyn_q": {
+      "__class__": "ParamTocElement",
+      "ident": 128,
+      "group": "ctrlINDI",
+      "name": "act_dyn_q",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "act_dyn_r": {
+      "__class__": "ParamTocElement",
+      "ident": 129,
+      "group": "ctrlINDI",
+      "name": "act_dyn_r",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "filt_cutoff": {
+      "__class__": "ParamTocElement",
+      "ident": 130,
+      "group": "ctrlINDI",
+      "name": "filt_cutoff",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "filt_cutoff_r": {
+      "__class__": "ParamTocElement",
+      "ident": 131,
+      "group": "ctrlINDI",
+      "name": "filt_cutoff_r",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "outerLoopActive": {
+      "__class__": "ParamTocElement",
+      "ident": 132,
+      "group": "ctrlINDI",
+      "name": "outerLoopActive",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0,
+      "extended": false
+    }
+  },
+  "s_pid_attitude": {
+    "roll_kp": {
+      "__class__": "ParamTocElement",
+      "ident": 133,
+      "group": "s_pid_attitude",
+      "name": "roll_kp",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "roll_ki": {
+      "__class__": "ParamTocElement",
+      "ident": 134,
+      "group": "s_pid_attitude",
+      "name": "roll_ki",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "roll_kd": {
+      "__class__": "ParamTocElement",
+      "ident": 135,
+      "group": "s_pid_attitude",
+      "name": "roll_kd",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "pitch_kp": {
+      "__class__": "ParamTocElement",
+      "ident": 136,
+      "group": "s_pid_attitude",
+      "name": "pitch_kp",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "pitch_ki": {
+      "__class__": "ParamTocElement",
+      "ident": 137,
+      "group": "s_pid_attitude",
+      "name": "pitch_ki",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "pitch_kd": {
+      "__class__": "ParamTocElement",
+      "ident": 138,
+      "group": "s_pid_attitude",
+      "name": "pitch_kd",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "yaw_kp": {
+      "__class__": "ParamTocElement",
+      "ident": 139,
+      "group": "s_pid_attitude",
+      "name": "yaw_kp",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "yaw_ki": {
+      "__class__": "ParamTocElement",
+      "ident": 140,
+      "group": "s_pid_attitude",
+      "name": "yaw_ki",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "yaw_kd": {
+      "__class__": "ParamTocElement",
+      "ident": 141,
+      "group": "s_pid_attitude",
+      "name": "yaw_kd",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    }
+  },
+  "s_pid_rate": {
+    "roll_kp": {
+      "__class__": "ParamTocElement",
+      "ident": 142,
+      "group": "s_pid_rate",
+      "name": "roll_kp",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "roll_ki": {
+      "__class__": "ParamTocElement",
+      "ident": 143,
+      "group": "s_pid_rate",
+      "name": "roll_ki",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "roll_kd": {
+      "__class__": "ParamTocElement",
+      "ident": 144,
+      "group": "s_pid_rate",
+      "name": "roll_kd",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "pitch_kp": {
+      "__class__": "ParamTocElement",
+      "ident": 145,
+      "group": "s_pid_rate",
+      "name": "pitch_kp",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "pitch_ki": {
+      "__class__": "ParamTocElement",
+      "ident": 146,
+      "group": "s_pid_rate",
+      "name": "pitch_ki",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "pitch_kd": {
+      "__class__": "ParamTocElement",
+      "ident": 147,
+      "group": "s_pid_rate",
+      "name": "pitch_kd",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "yaw_kp": {
+      "__class__": "ParamTocElement",
+      "ident": 148,
+      "group": "s_pid_rate",
+      "name": "yaw_kp",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "yaw_ki": {
+      "__class__": "ParamTocElement",
+      "ident": 149,
+      "group": "s_pid_rate",
+      "name": "yaw_ki",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "yaw_kd": {
+      "__class__": "ParamTocElement",
+      "ident": 150,
+      "group": "s_pid_rate",
+      "name": "yaw_kd",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    }
+  },
+  "ctrlStdnt": {
+    "tiltComp": {
+      "__class__": "ParamTocElement",
+      "ident": 151,
+      "group": "ctrlStdnt",
+      "name": "tiltComp",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0,
+      "extended": false
+    },
+    "TEST_PARAM": {
+      "__class__": "ParamTocElement",
+      "ident": 152,
+      "group": "ctrlStdnt",
+      "name": "TEST_PARAM",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0,
+      "extended": false
+    }
+  },
+  "motorPowerSet": {
+    "enable": {
+      "__class__": "ParamTocElement",
+      "ident": 153,
+      "group": "motorPowerSet",
+      "name": "enable",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0,
+      "extended": false
+    },
+    "m1": {
+      "__class__": "ParamTocElement",
+      "ident": 154,
+      "group": "motorPowerSet",
+      "name": "m1",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0,
+      "extended": false
+    },
+    "m2": {
+      "__class__": "ParamTocElement",
+      "ident": 155,
+      "group": "motorPowerSet",
+      "name": "m2",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0,
+      "extended": false
+    },
+    "m3": {
+      "__class__": "ParamTocElement",
+      "ident": 156,
+      "group": "motorPowerSet",
+      "name": "m3",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0,
+      "extended": false
+    },
+    "m4": {
+      "__class__": "ParamTocElement",
+      "ident": 157,
+      "group": "motorPowerSet",
+      "name": "m4",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 0,
+      "extended": false
+    }
+  },
+  "powerDist": {
+    "idleThrust": {
+      "__class__": "ParamTocElement",
+      "ident": 158,
+      "group": "powerDist",
+      "name": "idleThrust",
+      "ctype": "uint32_t",
+      "pytype": "<L",
+      "access": 0,
+      "extended": false
+    }
+  },
+  "colAv": {
+    "enable": {
+      "__class__": "ParamTocElement",
+      "ident": 159,
+      "group": "colAv",
+      "name": "enable",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0,
+      "extended": false
+    },
+    "ellipsoidX": {
+      "__class__": "ParamTocElement",
+      "ident": 160,
+      "group": "colAv",
+      "name": "ellipsoidX",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "ellipsoidY": {
+      "__class__": "ParamTocElement",
+      "ident": 161,
+      "group": "colAv",
+      "name": "ellipsoidY",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "ellipsoidZ": {
+      "__class__": "ParamTocElement",
+      "ident": 162,
+      "group": "colAv",
+      "name": "ellipsoidZ",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "bboxMinX": {
+      "__class__": "ParamTocElement",
+      "ident": 163,
+      "group": "colAv",
+      "name": "bboxMinX",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "bboxMinY": {
+      "__class__": "ParamTocElement",
+      "ident": 164,
+      "group": "colAv",
+      "name": "bboxMinY",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "bboxMinZ": {
+      "__class__": "ParamTocElement",
+      "ident": 165,
+      "group": "colAv",
+      "name": "bboxMinZ",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "bboxMaxX": {
+      "__class__": "ParamTocElement",
+      "ident": 166,
+      "group": "colAv",
+      "name": "bboxMaxX",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "bboxMaxY": {
+      "__class__": "ParamTocElement",
+      "ident": 167,
+      "group": "colAv",
+      "name": "bboxMaxY",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "bboxMaxZ": {
+      "__class__": "ParamTocElement",
+      "ident": 168,
+      "group": "colAv",
+      "name": "bboxMaxZ",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "horizon": {
+      "__class__": "ParamTocElement",
+      "ident": 169,
+      "group": "colAv",
+      "name": "horizon",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "maxSpeed": {
+      "__class__": "ParamTocElement",
+      "ident": 170,
+      "group": "colAv",
+      "name": "maxSpeed",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "sidestepThrsh": {
+      "__class__": "ParamTocElement",
+      "ident": 171,
+      "group": "colAv",
+      "name": "sidestepThrsh",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "maxPeerLocAge": {
+      "__class__": "ParamTocElement",
+      "ident": 172,
+      "group": "colAv",
+      "name": "maxPeerLocAge",
+      "ctype": "int32_t",
+      "pytype": "<i",
+      "access": 0,
+      "extended": false
+    },
+    "vorTol": {
+      "__class__": "ParamTocElement",
+      "ident": 173,
+      "group": "colAv",
+      "name": "vorTol",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "vorIters": {
+      "__class__": "ParamTocElement",
+      "ident": 174,
+      "group": "colAv",
+      "name": "vorIters",
+      "ctype": "int32_t",
+      "pytype": "<i",
+      "access": 0,
+      "extended": false
+    }
+  },
+  "health": {
+    "startPropTest": {
+      "__class__": "ParamTocElement",
+      "ident": 175,
+      "group": "health",
+      "name": "startPropTest",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0,
+      "extended": false
+    },
+    "startBatTest": {
+      "__class__": "ParamTocElement",
+      "ident": 176,
+      "group": "health",
+      "name": "startBatTest",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0,
+      "extended": false
+    }
+  },
+  "kalman": {
+    "resetEstimation": {
+      "__class__": "ParamTocElement",
+      "ident": 177,
+      "group": "kalman",
+      "name": "resetEstimation",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0,
+      "extended": false
+    },
+    "quadIsFlying": {
+      "__class__": "ParamTocElement",
+      "ident": 178,
+      "group": "kalman",
+      "name": "quadIsFlying",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0,
+      "extended": false
+    },
+    "robustTdoa": {
+      "__class__": "ParamTocElement",
+      "ident": 179,
+      "group": "kalman",
+      "name": "robustTdoa",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0,
+      "extended": false
+    },
+    "robustTwr": {
+      "__class__": "ParamTocElement",
+      "ident": 180,
+      "group": "kalman",
+      "name": "robustTwr",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0,
+      "extended": false
+    },
+    "pNAcc_xy": {
+      "__class__": "ParamTocElement",
+      "ident": 181,
+      "group": "kalman",
+      "name": "pNAcc_xy",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "pNAcc_z": {
+      "__class__": "ParamTocElement",
+      "ident": 182,
+      "group": "kalman",
+      "name": "pNAcc_z",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "pNVel": {
+      "__class__": "ParamTocElement",
+      "ident": 183,
+      "group": "kalman",
+      "name": "pNVel",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "pNPos": {
+      "__class__": "ParamTocElement",
+      "ident": 184,
+      "group": "kalman",
+      "name": "pNPos",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "pNAtt": {
+      "__class__": "ParamTocElement",
+      "ident": 185,
+      "group": "kalman",
+      "name": "pNAtt",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "mNBaro": {
+      "__class__": "ParamTocElement",
+      "ident": 186,
+      "group": "kalman",
+      "name": "mNBaro",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "mNGyro_rollpitch": {
+      "__class__": "ParamTocElement",
+      "ident": 187,
+      "group": "kalman",
+      "name": "mNGyro_rollpitch",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "mNGyro_yaw": {
+      "__class__": "ParamTocElement",
+      "ident": 188,
+      "group": "kalman",
+      "name": "mNGyro_yaw",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "initialX": {
+      "__class__": "ParamTocElement",
+      "ident": 189,
+      "group": "kalman",
+      "name": "initialX",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "initialY": {
+      "__class__": "ParamTocElement",
+      "ident": 190,
+      "group": "kalman",
+      "name": "initialY",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "initialZ": {
+      "__class__": "ParamTocElement",
+      "ident": 191,
+      "group": "kalman",
+      "name": "initialZ",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "initialYaw": {
+      "__class__": "ParamTocElement",
+      "ident": 192,
+      "group": "kalman",
+      "name": "initialYaw",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "maxPos": {
+      "__class__": "ParamTocElement",
+      "ident": 193,
+      "group": "kalman",
+      "name": "maxPos",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "maxVel": {
+      "__class__": "ParamTocElement",
+      "ident": 194,
+      "group": "kalman",
+      "name": "maxVel",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    }
+  },
+  "hlCommander": {
+    "vtoff": {
+      "__class__": "ParamTocElement",
+      "ident": 195,
+      "group": "hlCommander",
+      "name": "vtoff",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "vland": {
+      "__class__": "ParamTocElement",
+      "ident": 196,
+      "group": "hlCommander",
+      "name": "vland",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    }
+  },
+  "deck": {
+    "bcLedRing": {
+      "__class__": "ParamTocElement",
+      "ident": 197,
+      "group": "deck",
+      "name": "bcLedRing",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 1,
+      "extended": false
+    },
+    "bcBuzzer": {
+      "__class__": "ParamTocElement",
+      "ident": 209,
+      "group": "deck",
+      "name": "bcBuzzer",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 1,
+      "extended": false
+    },
+    "bcGTGPS": {
+      "__class__": "ParamTocElement",
+      "ident": 210,
+      "group": "deck",
+      "name": "bcGTGPS",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 1,
+      "extended": false
+    },
+    "bcCPPM": {
+      "__class__": "ParamTocElement",
+      "ident": 211,
+      "group": "deck",
+      "name": "bcCPPM",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 1,
+      "extended": false
+    },
+    "bcUSD": {
+      "__class__": "ParamTocElement",
+      "ident": 212,
+      "group": "deck",
+      "name": "bcUSD",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 1,
+      "extended": false
+    },
+    "bcZRanger": {
+      "__class__": "ParamTocElement",
+      "ident": 215,
+      "group": "deck",
+      "name": "bcZRanger",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 1,
+      "extended": false
+    },
+    "bcZRanger2": {
+      "__class__": "ParamTocElement",
+      "ident": 216,
+      "group": "deck",
+      "name": "bcZRanger2",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 1,
+      "extended": false
+    },
+    "bcDWM1000": {
+      "__class__": "ParamTocElement",
+      "ident": 217,
+      "group": "deck",
+      "name": "bcDWM1000",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 1,
+      "extended": false
+    },
+    "bcFlow": {
+      "__class__": "ParamTocElement",
+      "ident": 222,
+      "group": "deck",
+      "name": "bcFlow",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 1,
+      "extended": false
+    },
+    "bcFlow2": {
+      "__class__": "ParamTocElement",
+      "ident": 223,
+      "group": "deck",
+      "name": "bcFlow2",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 1,
+      "extended": false
+    },
+    "bcOA": {
+      "__class__": "ParamTocElement",
+      "ident": 227,
+      "group": "deck",
+      "name": "bcOA",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 1,
+      "extended": false
+    },
+    "bcMultiranger": {
+      "__class__": "ParamTocElement",
+      "ident": 228,
+      "group": "deck",
+      "name": "bcMultiranger",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 1,
+      "extended": false
+    },
+    "bcLighthouse4": {
+      "__class__": "ParamTocElement",
+      "ident": 229,
+      "group": "deck",
+      "name": "bcLighthouse4",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 1,
+      "extended": false
+    },
+    "bcActiveMarker": {
+      "__class__": "ParamTocElement",
+      "ident": 236,
+      "group": "deck",
+      "name": "bcActiveMarker",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 1,
+      "extended": false
+    },
+    "bcAIDeck": {
+      "__class__": "ParamTocElement",
+      "ident": 237,
+      "group": "deck",
+      "name": "bcAIDeck",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 1,
+      "extended": false
+    }
+  },
+  "ring": {
+    "effect": {
+      "__class__": "ParamTocElement",
+      "ident": 198,
+      "group": "ring",
+      "name": "effect",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0,
+      "extended": false
+    },
+    "neffect": {
+      "__class__": "ParamTocElement",
+      "ident": 199,
+      "group": "ring",
+      "name": "neffect",
+      "ctype": "uint32_t",
+      "pytype": "<L",
+      "access": 1,
+      "extended": false
+    },
+    "solidRed": {
+      "__class__": "ParamTocElement",
+      "ident": 200,
+      "group": "ring",
+      "name": "solidRed",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0,
+      "extended": false
+    },
+    "solidGreen": {
+      "__class__": "ParamTocElement",
+      "ident": 201,
+      "group": "ring",
+      "name": "solidGreen",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0,
+      "extended": false
+    },
+    "solidBlue": {
+      "__class__": "ParamTocElement",
+      "ident": 202,
+      "group": "ring",
+      "name": "solidBlue",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0,
+      "extended": false
+    },
+    "headlightEnable": {
+      "__class__": "ParamTocElement",
+      "ident": 203,
+      "group": "ring",
+      "name": "headlightEnable",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0,
+      "extended": false
+    },
+    "emptyCharge": {
+      "__class__": "ParamTocElement",
+      "ident": 204,
+      "group": "ring",
+      "name": "emptyCharge",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "fullCharge": {
+      "__class__": "ParamTocElement",
+      "ident": 205,
+      "group": "ring",
+      "name": "fullCharge",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "fadeColor": {
+      "__class__": "ParamTocElement",
+      "ident": 206,
+      "group": "ring",
+      "name": "fadeColor",
+      "ctype": "uint32_t",
+      "pytype": "<L",
+      "access": 0,
+      "extended": false
+    },
+    "fadeTime": {
+      "__class__": "ParamTocElement",
+      "ident": 207,
+      "group": "ring",
+      "name": "fadeTime",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    }
+  },
+  "usd": {
+    "canLog": {
+      "__class__": "ParamTocElement",
+      "ident": 213,
+      "group": "usd",
+      "name": "canLog",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 1,
+      "extended": false
+    },
+    "logging": {
+      "__class__": "ParamTocElement",
+      "ident": 214,
+      "group": "usd",
+      "name": "logging",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0,
+      "extended": false
+    }
+  },
+  "loco": {
+    "mode": {
+      "__class__": "ParamTocElement",
+      "ident": 218,
+      "group": "loco",
+      "name": "mode",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0,
+      "extended": false
+    }
+  },
+  "tdoaEngine": {
+    "logId": {
+      "__class__": "ParamTocElement",
+      "ident": 219,
+      "group": "tdoaEngine",
+      "name": "logId",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0,
+      "extended": false
+    },
+    "logOthrId": {
+      "__class__": "ParamTocElement",
+      "ident": 220,
+      "group": "tdoaEngine",
+      "name": "logOthrId",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0,
+      "extended": false
+    },
+    "matchAlgo": {
+      "__class__": "ParamTocElement",
+      "ident": 221,
+      "group": "tdoaEngine",
+      "name": "matchAlgo",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0,
+      "extended": false
+    }
+  },
+  "motion": {
+    "disable": {
+      "__class__": "ParamTocElement",
+      "ident": 224,
+      "group": "motion",
+      "name": "disable",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0,
+      "extended": false
+    },
+    "adaptive": {
+      "__class__": "ParamTocElement",
+      "ident": 225,
+      "group": "motion",
+      "name": "adaptive",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0,
+      "extended": false
+    },
+    "flowStdFixed": {
+      "__class__": "ParamTocElement",
+      "ident": 226,
+      "group": "motion",
+      "name": "flowStdFixed",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    }
+  },
+  "activeMarker": {
+    "front": {
+      "__class__": "ParamTocElement",
+      "ident": 230,
+      "group": "activeMarker",
+      "name": "front",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0,
+      "extended": false
+    },
+    "back": {
+      "__class__": "ParamTocElement",
+      "ident": 231,
+      "group": "activeMarker",
+      "name": "back",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0,
+      "extended": false
+    },
+    "left": {
+      "__class__": "ParamTocElement",
+      "ident": 232,
+      "group": "activeMarker",
+      "name": "left",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0,
+      "extended": false
+    },
+    "right": {
+      "__class__": "ParamTocElement",
+      "ident": 233,
+      "group": "activeMarker",
+      "name": "right",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0,
+      "extended": false
+    },
+    "mode": {
+      "__class__": "ParamTocElement",
+      "ident": 234,
+      "group": "activeMarker",
+      "name": "mode",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0,
+      "extended": false
+    },
+    "poll": {
+      "__class__": "ParamTocElement",
+      "ident": 235,
+      "group": "activeMarker",
+      "name": "poll",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0,
+      "extended": false
+    }
+  },
+  "firmware": {
+    "revision0": {
+      "__class__": "ParamTocElement",
+      "ident": 238,
+      "group": "firmware",
+      "name": "revision0",
+      "ctype": "uint32_t",
+      "pytype": "<L",
+      "access": 1,
+      "extended": false
+    },
+    "revision1": {
+      "__class__": "ParamTocElement",
+      "ident": 239,
+      "group": "firmware",
+      "name": "revision1",
+      "ctype": "uint16_t",
+      "pytype": "<H",
+      "access": 1,
+      "extended": false
+    },
+    "modified": {
+      "__class__": "ParamTocElement",
+      "ident": 240,
+      "group": "firmware",
+      "name": "modified",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 1,
+      "extended": false
+    }
+  },
+  "lighthouse": {
+    "method": {
+      "__class__": "ParamTocElement",
+      "ident": 241,
+      "group": "lighthouse",
+      "name": "method",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0,
+      "extended": false
+    },
+    "bsCalibReset": {
+      "__class__": "ParamTocElement",
+      "ident": 242,
+      "group": "lighthouse",
+      "name": "bsCalibReset",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0,
+      "extended": false
+    },
+    "systemType": {
+      "__class__": "ParamTocElement",
+      "ident": 243,
+      "group": "lighthouse",
+      "name": "systemType",
+      "ctype": "uint8_t",
+      "pytype": "<B",
+      "access": 0,
+      "extended": false
+    },
+    "sweepStd": {
+      "__class__": "ParamTocElement",
+      "ident": 244,
+      "group": "lighthouse",
+      "name": "sweepStd",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    },
+    "sweepStd2": {
+      "__class__": "ParamTocElement",
+      "ident": 245,
+      "group": "lighthouse",
+      "name": "sweepStd2",
+      "ctype": "float",
+      "pytype": "<f",
+      "access": 0,
+      "extended": false
+    }
+  }
+}
\ No newline at end of file
diff --git a/cflib_groundstation/__pycache__/crazyflie_connection.cpython-38.pyc b/cflib_groundstation/__pycache__/crazyflie_connection.cpython-38.pyc
index 7fed0bbfac59539b7cfe78f8badae14f8708c4b6..e400bbdbd3f831942b5dcd904faaa1b3dc1797a7 100644
GIT binary patch
literal 7926
zcmb_hO>88`b?(3E>1oanm&?_1e<ZbjtZ3x*tc^IfqbSbqlA<g?qSi}FiW^Bf&8g<F
zxjoaP>Yk-I7+$<GVgxagLvHbbG<*?q%PF_y8X%V-34(NxQ%(eO2#}nN9P+)_Jv}qb
z7|DSo=2g|}s`sj^zV}nrA2%Adg1;ZtwgUZiMfo>s%>U_VJissc8Hi9^MW{lH)V}Jf
zD%JH!>+7!0bt3{7JR>q(gUgC*qO3&KzU5ln$Bb%y+qJn~jaK?~w_c2GxDE8RqGrG4
zwwPCoR{N{&YX6#hjoWs#*1zsvFZ!>$H{Mgkil~2~i28HQeL)zzO1m-sFS{%K@yS6H
z23|KF41#VN#slZjABZSOob)ho{BAn(BPSfBfkd4iABX87KPv}!>^*di2hoWm13y8Z
zFm-~@!z4|d5OQKC3FI>fOB^51NLD`(p)XII{UALKf&t6x$#^snN$Qgt8<SYn0-;F|
z9XLr0zMqngF2v=tb^K^ymPt8HyNmbRckq)?*s(9LJ4##4j5O>ARDOVY?x0fJoGu0$
zjop($cb-xC{wNqx|Hg+wlK8z~?_?Ofztz^V)^3mvW4zV(c->@XZ%1M8F#RwV)W7yY
z+}n%?2Vt*En&<yY#QZI|fdWJ*t|nAh7n;z&P+TLZ2;-+fg)qM`fRC!Mz^#g!uu)q1
zj=D9`5KXjg(GsgDSHv~3hO#cMi*=L@aYMX-vMFwg4V0~5RosHq+u{zSUK4l4i{P$_
zm&D5`uM0=Kf^uEFDqcf*L%c4&g7O9NhWHhfH^rNxjdDZ0CBBOCmbfRrhVr)Pi2Eq-
zh_3@%-^i|)i-(slkTveu4*v3W0v48T8E;qKv8&Fl7S%QUHt|co1(GUf%DFO8JT=vx
zQ>hCT)DRkIMd+YrkNDNp;^#G?Vrs_t7d#7^$@_ya4gDw_2MjepPo@sx;vTo7xYr8@
zJ?Aspdgu5s>>d)Hd*L%eEWt1+MGd1kO{w#7I1usiJs@2G_7DftNC2io84u!7;*?h7
z%$eN&NhwGK2mUC+xY*f=2SLZ#JA}^UFdjt$=90@~-E*Rj4>6;uyg{!N1|cM)Z0~GK
zTF166X(?Ts-`Jx!mL@S8#VdRK%9);Y53+igOua)O-1VU^{l3@5=I#64r+6|Nq;6|E
z4s!s~6KO$Owu<*>%kXj|m0!Z#$cDdE<TZ5o#pC;jaX+}fAEvY_!Tqfud78$<`wO1n
zJ|n`r#GBgcbZT%Jo#9Dld0vQ3^}LrMKWTy}wyjy3sq()zzPkjMo#`N$t3HxpmlkLG
zNA(JRjJqRLQsqcJ)6NxDN%e`ElKa+v0{8wC#@$3Ys+^hhlxtP02?Hp!(we9|S24;y
zTcKx1^>g5rO0R*kdDhBXM~!pz5+<-(ox|$XYG%7k5b<Xq=s1sxb%ak$;D5V86a|B{
z+<XytM}08ZzXBJ|VSG$7Mo9txr6`T}j}RB&wVhasK$g-lFbQ&u^ByPn7@7=^03JR;
ze}scnh5=lEfsYvy-{y`ER{L$|i7&#~=>jB!ASxA%tDXB@zk3KL>RR#`kmGu$br1H&
z_08O?z&3rc(_YOgj1t%A%5><~83RJXP-P-%_oP9j4&v70VKDHbaPZV^9s9t_K`cF<
zO@e`&Q$PhGs|+RFde$6m!Y^#b{XT3ukZ!H4${P@v)w<J1k^tw{0sFE`Ta&A#dYuS?
zJ|}CaWz}LY-$o;$UP{$g*Hs(;rfM1M=J?Jsv=*a&xp#aMl2W7`gf?JGm9K+pXF6k%
zP>S#Z3f!_kyz6X*Ng>oZka2$=Q{&d$LtgCdwjpmqgKQAtCAGUzoCLh4vPIlWFKUZY
z!4o`AIFZsUyd}Nq_@!lUIUCZ&kcB^TVQh}%Wm4sbh?~30m+B7OOYL32en<(#+#Gl|
zyyBIuV1LweF)U#lSI4)O>E>SlKeh5Mgvl3)%wBq?u=W^EGDts&d%rWM^u=XL%br)F
zxba?)mJ*ZSn^XSEGUW@suVez|$3x+#!SBy$zP(Iy-t9_Mt~?45uXBO>b9!H1rgyII
zg1;wB(QlIkd=99k$^@zUErqR#YeKuFoN75&=)(9BwGj)bmoP+y+eXnw^2Y5-(MB4_
zZL?@2spEEayq6-bh#I0w^|^Ykv6gDdL+mJcm6B(cJhS8(CC~U&8EhCzYCN^&Kd6X9
zh&`1bsy|Q$+HaFzFpsK#qRKR{omu1^CeZp+0~cQ6$ULhNZ}17YI&(LeYcux&xHfY;
z%w1vbTi~uRcZ<1o=B|TVXYL-&U|<mC=Z#5qQkj?&<J@3hWu7%@glNDsHOHM@M3_8L
zoTd_q19$ECMH1%sDgAKb1J2qq1BmlE!?_?IaY3H{qDF*#)diX51-oqZ;DYS`LMK9@
zVW-_<r<R#XDo5QkGe?6VOgF3SpQJ&O*`N5)D0o-OSjv~spFO?2g&N#FrH$S}bb|Dc
zQmS~ko!3_|=_jxOItjQfG#(;FOh+PTtb_4k_<0}}xHM+BNSi2<48*k6wm6bd)Zj>z
z8GXpj6FD<Il%phdD?_9Jhpr*xD01}^|9H+Ru>)*;gpeph5qvZnj#7d7Clq}Yt*+M9
z)#<;kAq>&~hT2qZ-PY=wjpvI$Q!}(Rb-dJ_ENHnB+qU7McJRLMi{y`J)`k0C8aifO
zf4OD<C4}Gvp%zvMgp(Bt<6Jw{=J<MU&CJ(R#86?TGs|X6p4r=Y8<^(oPyQ*@j;cr2
zQSHp0=;!KbWl}j>5!OuwW&NgdYUVvos}uA(Yp@Myssfw63!81iX8%HkCBSA|qDH<a
zw_9PuGFHZ~I)DYtpgYZjoig!qo)J_#j>IK}!p0!)p_Z9Zn5I!6JH-Af$OXB%Ozn)X
z?ZoLJon49~AmEHjr`*S;e86KHkoRfe*NJ?C2t|HA98fCdQBswsLlvG$rl)Z?yVeU*
zFNgw4J0ZmjkyKG4Kg^7Q-w)gx(C+bkvnI?yhWn$murf+93dqY}C4CQwJOs%q`G{&E
zIIA6uqR1nGJcG-ax3E-?>D2Pa7@WKSqG%g{wxeo*^cp~K8Ee(1y8LV~9gMTVN<2zo
zHGC7$CD$?iTS29a8MirR<k=T_Wgv`@Rm2HV0mAe-zLCcV<{RTZph7=0&K3EGR0D?K
zrOzz*M<581sB*+u;F`@52^>*nRM`cpcofbUCdO2Y7*GeEexBn=Sf|w-OKIb|a%xSi
z#TkBko>$C{c+iQs1UxpWJgug!vsF=>RPjDF$f$9jYe#F4X5)QVCYGrG)Ht;#+S&Dq
z&1agzt2<Ao$AU|sy_9|8aMJBK<5k!*AFX*4JDtuYWXo@3`EywRI%>T?`0=0Z{>@+i
z=U*|%Gqa!cfIImeJZc-6Ma>j<H}ZR6WEMpX562{yxzk?HQ(N+h@;8VO%H=ymC~(N%
zB=TJ%zeVH$5yoVVkj}W2kHE}oWHY{${z+Cjh+;ow^T`YfDzZvF>QCO?ef;?0lZPLA
z?{8%~fYn~f&k79p_ek^uA|zjK5qTHHHS;?;p0Hazh#paZa_cfkhVdW?I0Vj8QTF;4
zR*)C(&mkcBCWvBKuz(E>762zsCyrHhU2Cd_YT~R+uHV9cU9~iDU?<vto91%+n2Np<
zFJFVT?ZzY74gQX1S~&To>2lfgY82x&a>alDe<?0|UWsD+3HB}5{Eu^*m&UbO*DFz7
z!<&4>9_^pzG%sE3vgeg3COA?oPyTsM@6wBzX~!#3TYV@5sr{EZtxFHsMZbmQLB}9U
z6gO#behu`$UHmkG$P;GyR;nY}eFv?|Q%!z{TOG7aw6?kBpjAa{k6UYKS!nHZ%OFZ8
z+jebdyoQxvABdCWb{GYVUXUH&S1>b<^zv&|qcA@`sn6UQ<*sdg=4LVtuJMw$pj4|+
z^RMWh+y+tL4ag_pUSjd5EkC`_L|n<%wJ@JYQQUo6+^hUM&5ON*Hhyi{>F!ehg}V~E
z=`5r51dZ`NVl8q(L|vC^M;aopab%pTJwE51RnC<y<#+GV8E>NBQi}HNQ)7ZVXT)9u
zk+*_4XHF^<=RW(^XKzfjPqB49<a4`})2$<?t0D$J%VTgJe|xmK+IW8!50NH?vb-&G
zQhz_fhm`|L%u+l{I?l)N@a1J30%UnzhWnCX<e%U}N5Z#tQE_<<8OQ}GFd~~;jAogR
zP8`iL<7se`WTrnv8Yeh{wM|BeTSXAwMt+s|)6vhZg}A7b9;zIXF5{=wLntiNdl>y6
zv{?)ygAy(ZGB|7C#L?7DoGY4i1+;V%FUeWhMB4mv6A9mAr`*JsW}A451b=P|D%gT=
z&Tm0TTcD1A>;SNQRZm$Yt}YMw>jbB&IDbC#!-%(n&Yoq?f^Pibs@#Gy885a8SER#u
zIErutoQ-l=XueGtUrM9R?l@TW#XaJTBQrU(Nb-#-ZWK8Sxn#NxS~3<%3tvGdn%{x*
z!qXv+7klZEZDHh2`z~Fj(_(mDW_uovnxly7br0VL{HS<R^*r1vd!D?G9l+;;R7%=t
zd4~vH!Apn8D@0x;@*0s}BSN2W<TeqqNBMmsbU7$@iR=;in8+tYJ|*%4A}$e+h)-np
z{#>JMM^ZL^3%`V1AQBkEy3^dSEDN6jivKq)-MZU+qihquWf|5D9^1Yt1Cm1!%S_~o
zI2uXv|D3|P`3J=gT{KHNOt`K5lU2F<eAn#0c!}Ggk3glX;!EkQ!k=041=t{M>kD5w
zyaXN(sWPRD{6$65U50!8vShMix>9v3gHeBY;%b8-zsR!H$*gzsz5Fh~p(J#BX;kU(
Rk9-d|vQ(>cxk^0!e*lG;g`fZc

delta 2967
zcma)8U5r~t6`r~OzP7LJUB}+-ZniF@X&su~q^hzNC@q`KPYYqQB2*0~sdLwJ*R|Jc
zyK~1uG1pquq#`P`s+dQj%F7Ec2mw`JDH0V3!2>V6T%jrjgeVd}5>gNk2+kRMcS9sL
z`09S1IcLuNoH^e)_wLDepY~ozr(FWSpZ)4okeT~|x1!Pa<rQr+&!*W!H%TQM<k-w@
z%4XTYn}+;AJ8fMg<%M`s`o+n2mi3=d8cW-Jj!wu`^If_oE$ifwp&OB=*-UQJ(SJ1s
z|LLJO>NQi_loDpbJk~osYl`YC<&1pWK5OzcY()Oko~;(35hrS$%}u|}0?sqgucX32
zEboZQ8qa}{A3&Jcg-K||cCFKH2Q~3Y=!6~sv0a*{E<Bc=xB4@%`MiAHdDV{1E^oAj
z%q5DYER4H<CYLqB@noy=xkO`TZza`I%bBNxwO;*_{AJ>N`5;a*_un(^jZCciwT(cW
z@6;=D$z46V|LF9&K<pZXm*tP#FC5<A!g`_0d=b1PpH6=66Z;QMo(k%X_GtW7`TgV>
zdQIL<w&-P9OReSwiHsX?OD~f4ltF~C;qu?e_fpeE4tHoZ?V+<xD2X(tZD?;%?#jQW
z4je6^Zs?+>{b|s-N_Rp@lS+C7q)8<`FOR1W%v=`ctF&z(s!{34j?Bo4jBP`1q<gx@
zXXNkFk690+Lo+h#)r_*kbMiIs$+^9oP?wOta1G+5!Ga6DZcnVqUwb7zPgC-)_psJ~
zL|ypN%u`49cZv%hU+J*mc^1Adzn)p#vSDEd-eq{h9|A;_(P_doroX05lYutw8_ZOF
zecZR0t@=j)DjbXq={DhS!r`4FiS!~Fm?&*(11qwcdeexsNC%0@5^w0>R*(%XaD;Jo
zTZ1lX+DzXd{FZQr3FabuUg1oONY#e>nT7jt;eNhL!S9raBunDWeUY@aON6C>Woh|F
z_R$v~h23+Ca2Vkz!aTwPz(;t{n9i5=*sSwTuNxa}e=~@++FJc9`R|?kuz&N}er}~B
zUT(DOr7<G{wo*>XY%ag0=xTO-?r&Bmea5Oi6^GTD-)gNv$j4Kx(+;Y@Ujg=2HL!Zk
zZ}oyo0)(R`N2YQOH)4jZAn3;4k`TPH))T=Q&O4mXfUazhc>fd*MuPKC!CAp%Jl%S)
z)vDs&Id1BHK06nYQn1Z$fHEur5G_mb(I7dbr~_#H+tNK9dYVh+om^?FhF;tG;r?`Z
z&%ql$1Rw~b=<tXbq)C~!NHkKVOb5ps{e{x<*af98zZ|qn=!VkR4JE&%91)0sm(=d(
zOZ|z{_l{8dWp!aIknr&Q%1h(q7n@a|*Tee`$)AN`-^T4307P?W{|Su$|9J=BoS4m^
z?{@>8Q|V0=<kG~UEl319o^B^0^uG$>s1FT@=bwTM+K}iWA*eCVUVmtBlN)qk!Wa{E
zbpo+&o+eig4Q$~=_E_&k4#>PgBC>{wD4|08_A9r*%2Gbvf?NPJb3x#uV4ROI-tUa!
zo!J9>6zd{+gA9^U5-14NWI8jDf{XXc3})@fc4ibQoOy2r0d<Nwk-M!8Qc?1mD1{Ti
zU_~lHL<U>xwAp43mP)`<ZUm&eZ4A<pHk^pks=SSe_x$AY)*kVYbFtNG2+;}@?do5<
z^{tCP|MB17<4-8nW>~K_*hhE~Wg~X5E3S6~j=>f?klOufD`<0^aiu(|;vv?de#P!O
z?`&4ru8Sb#DbVth2#Ntq&!DlT0xXP;RwER#<#)S5oAD)7CD6?0+`k^1>#dG2_%Re4
zT_mm!>&egNr?<R&Xm<uDA9D}tvfc_sMHih~tivi5E9|X-BsLl%*sNH7P4xVh+H=KT
zZ=J$DR#H3&yPb9z;F<1=-`G)g4@mkQSSS1p05MKFbP67aIyy2n3+3FQ2E52w&jdM5
z=^jWd-2xqIm28CaANkb>m1f8c7dt&(3qF9-T#|1cIQAe5*yhOMj<QG;jy<Tnd>&3c
zGWji(my*0uIR1Yua-k=nr2Sqk@~^_N<NMbz^d8o*@DJ!cOjksHm@CR&apAH3E$t=7
z(DIM+7sbcrWa03M{l{aqgio2XjaKld-L<s-93-2fJU%_Yu)lc*Y)`d1wT<yN-Jj)~
z(+lt|I3xcyJHM5O8Dl*ZoMV#Zvj`=GM-V=S@NtAg2qzF05wK9J1jsFHT|$8JKzIe=
zO9+<{t{}XGP(`?ku=hnVK_Kclepm1$z%;xeGStxw!<q34j^k*%&*RW4IHtF_D?y#E
pEXzgC<X;XJCXiAUx3=DDtj*WB=<=d0%)OnxcS&4PzCZWme*n${mh=Ds

diff --git a/cflib_groundstation/__pycache__/groundstation_socket.cpython-38.pyc b/cflib_groundstation/__pycache__/groundstation_socket.cpython-38.pyc
index 30ef2552b4af55a25d6e1a991b7f10cde30eb8e0..ac3003bf0ebab8f540db688413cf7aa33f548f9f 100644
GIT binary patch
delta 278
zcmZowTc^qw%FD~e00c@LE~y1#8~HwRGF@Pp%*dsqUc<D2sfICyS&|`(Ifd1pA%(?(
zVId<U15}(%5+X7=hf6X5D#i{KL#P6Ypy&mf$RWvK&QQw)*2A!XrG}}5HH$5a87Ko(
zEzVHFp2ablk=vh<b8;ZJ#N<5g0C6dh3mG{W*??GtQG!v3Q4EA9KjmJ^m^-<f=QuNe
z5$j}oKH14dyqg%yCadzzU~HJYkFSrhWwI~-3dXL@-}q&ixNq^gyN3AqySsV%OqLds
bWt=kEQb?bXX>z8}WX@~>E&&z+HUTaG0#`jg

delta 389
zcmZ3d+N#DE%FD~e00eaxoKj`QH}ZYtWD;SV%*ds~TEbAn)I3>>OFA6PVq^sJ7ckW@
zrm#seq_8+JECh;RkzuvRCCiScZ*mQnqzl3XpvfGP4CV~AOfaz$h7uN_8yK5mb~7ws
ztzjx*%VN)B2C4>{C(cm9k;OTAFPA?f*JNI92}Y&KirgXUS|A@Waxk(1u?P@L0I?7d
ziy_fGj2x4DxR>&j0+klCfHiPUKENqHIfQ2^vv?8f<hA^=lO=gKG1g5!!#jhqV{$5A
zA7jttFMKN)CvBd~FT<o0#qH}D5g!s6;2Q7gQlt(v0*TN7aU+1l93U>%n0%2}c#@Fd
X<o|-~lZAvPa~2D539tyT32*@bvF1;J

diff --git a/cflib_groundstation/crazyflie_connection.py b/cflib_groundstation/crazyflie_connection.py
index 407b50f55..761543566 100644
--- a/cflib_groundstation/crazyflie_connection.py
+++ b/cflib_groundstation/crazyflie_connection.py
@@ -66,7 +66,9 @@ class CrazyflieConnection:
         self.scf = SyncCrazyflie(uri, cf=Crazyflie(rw_cache='./cache'))
         self.scf.open_link()
         self.scf.wait_for_params()
-        self.is_connected = True
+        self.iC_connected = True
+        print("Connect quad")
+        #self.toc = self.get_TOC()
 
         # sets commander
         self.scf.cf.commander = uCartCommander.Commander(self.scf.cf)
@@ -111,7 +113,6 @@ class CrazyflieConnection:
             pitch = struct.unpack('f', bytes(pitch))[0]
             roll = struct.unpack('f', bytes(roll))[0]
             thrust = struct.unpack('f', bytes(thrust))[0]
-            print(thrust)
         except ValueError:
             raise Exception
 
@@ -134,35 +135,38 @@ class CrazyflieConnection:
                 raise Exception
 
             self.setpoint_handler.setSetpoint(yaw, pitch, roll, thrust)
+            self.setpoint_handler.sendSetpoint()
 
     def GetNodeIds():
         raise Exception
+
     def SetParam(self, command):
         """ Set a crazyflie parameter value. """
-        group = command['data'][0:1]
-        name = command['data'][2:3]
-        value =  command['data'][4:7]
+        group = int.from_bytes(command['data'][0:2], 'little')
+        name = int.from_bytes(command['data'][2:4], 'little')
+        value = struct.unpack('f', bytes(command['data'][4:8]))[0]
         try:
             if self.scf.is_link_open():
-                full_name = group + "." + name
+                element = self.scf.cf.param.toc.get_element_by_id(name)
+                full_name = element.group + "." + element.name
                 cf = self.scf.cf
-                cf.param.add_update_callback(group=group, name=name,
-                                             cb=self.done_setting_param_value)
+                # cf.param.add_update_callback(group=group, name=name,
+                #                              cb=self.done_setting_param_value)
 
                 cf.param.set_value(full_name, value)
 
                 # Don't return until the parameter is done getting set
-                while self.param_callback_count < 1:
-                    time.sleep(0.01)
+                # while self.param_callback_count < 1:
+                #     time.sleep(0.01)
 
-                self.param_callback_count = 0
+                # self.param_callback_count = 0
         except AttributeError:
             print("Nothing connected")
 
-    def done_setting_param_value(self, *_args):
-        """ Callback when done setting a parameter value. """
-        print("Done setting param")
-        self.param_callback_count += 1
+    # def done_setting_param_value(self, *_args):
+    #     """ Callback when done setting a parameter value. """
+    #     print("Done setting param")
+    #     self.param_callback_count += 1
 
     def GetParam(self, command, outputQueue: Queue): #group: str, name: str,
         """ Retrieve parameter value from crazyflie toc. """
@@ -171,44 +175,27 @@ class CrazyflieConnection:
         print("Getting Param...")
         group = int.from_bytes(command['data'][0:2], 'little')
         name = int.from_bytes(command['data'][2:4], 'little')
-        print(group)
-        print(name)
-
 
         try:
             if self.scf.is_link_open():
-                print(self.scf.cf.param.values)
-                lst = list(self.scf.cf.param.values.values())
-                print(lst)
-                toc = []
-                for val in lst:
-                    sublst = list(val.values())
-                    for item in sublst:
-                        toc.append(item)
-                #lst2 = list(self.scf.cf.param.values)
-                #print(lst2)
-                #val = toc.flatten()
-                #print(val)
-                print(toc)
-                actual = toc[name]
-                print(actual)
-    
+                #print(self.scf.cf.param.values)
+                element = self.scf.cf.param.toc.get_element_by_id(name)
+                print(element.group)
+                print(element.name)
+                full_name = element.group + "." + element.name
+                actual = self.scf.cf.param.get_value(full_name)
 
         except AttributeError:
-            val = -1.234567
+            actual = -1.234567
             pass
 
-            
         data = bytearray()
         data += command['data'][0:2]
         data += command['data'][2:4]
         print(actual)
         actual = float(actual)
-        print(actual)
         flBytes = struct.pack('f', actual)
         data += flBytes
-        print(data)
-        print(len(data))
         responsedata = {
         "msg_type": (MessageTypeID.RESPPARAM_ID),
         "msg_id": command['msg_id'],
@@ -231,9 +218,55 @@ class CrazyflieConnection:
         raise Exception
     def AddNode():
         raise Exception
-    def GetLogFile(): 
-        #TODO
-        raise Exception
+    def GetLogFile(self, command): 
+        print("Getting LogFile...")
+        id = int.from_bytes(command['data'][0], 'little')
+        if id == 0: # logdata?
+            raise Exception # Not implemented
+        elif id == 1: # param toc
+            raise Exception # Not implemented
+        elif id == 2: # logging toc
+            raise Exception # Not implemented
+        elif id == 3: # active header of the data log
+            raise Exception # Not implemented
+        elif id == 4: # state of test stand connection
+            raise Exception # Not implemented
+        else :
+            raise Exception
     def LogBlockCommand(): 
         #TODO
-        raise Exception
\ No newline at end of file
+        raise Exception
+
+    def get_logging_toc(self):
+        """ Retrieve entire logging table of contents. Used in order to
+        display list in logging tab. """
+
+        try:
+            if self.scf.is_link_open():
+                tocFull = self.scf.cf.log.toc.toc
+                toc = []
+                for key in tocFull.keys():
+                    for inner_key in tocFull[key].keys():
+                        # concatenate group name with parameter name.
+                        full_name = key + "." + inner_key
+                        toc.append(full_name)
+
+                return toc
+            else:
+                return []
+        except AttributeError:
+            pass
+        return []
+
+    def get_param_toc(self):
+        """ Get the names of all groups available for parameters on the
+        crazyflie. Used to populate parameter group list on parameter tab. """
+
+        try:
+            if self.scf.is_link_open():
+                toc = self.scf.cf.param.values
+
+                return toc
+        except AttributeError:
+            pass
+        return {}
\ No newline at end of file
diff --git a/cflib_groundstation/groundstation_socket.py b/cflib_groundstation/groundstation_socket.py
index 7c684ece2..585bcdc52 100644
--- a/cflib_groundstation/groundstation_socket.py
+++ b/cflib_groundstation/groundstation_socket.py
@@ -96,20 +96,12 @@ class GroundstationSocket():
         bytedata = bytearray()
         bytedata += b"\xbe"        
         bytedata.append((messagedata["msg_type"].value & 0xFF))
-        print(bytedata)
         bytedata.append((messagedata["msg_type"].value >> 8) & 0xFF)
-        print(bytedata)
         bytedata.append(messagedata["msg_id"] & 0xFF)
-        print(bytedata)
         bytedata.append((messagedata["msg_id"] >> 8) & 0xFF)
-        print(bytedata)
         bytedata.append(messagedata["data_len"] & 0xFF)
-        print(bytedata)
         bytedata.append((messagedata["data_len"] >> 8) & 0xFF)
-        print(bytedata)
         bytedata += messagedata["data"]
-        print(bytedata)
-        print(len(bytedata))
         bytedata.append(self.packetChecksum(bytedata, PacketHeader.HDR_SIZE.value + messagedata["data_len"] + ChecksumFormat.CSUM_SIZE.value))
         print(bytedata)
         return bytedata
@@ -173,7 +165,8 @@ class MessageTypeID(Enum):
     RESPADDNODE_ID = 18
     OUTPUT_OVERRIDE_ID = 19
     SEND_RT_ID = 20
-    MAX_TYPE_ID = 21
+    #MAX_TYPE_ID = 21
+    GETLOGFILE_ID = 21
 
 
 
diff --git a/cflib_groundstation/main.py b/cflib_groundstation/main.py
index ddf09b0f0..2aae0c8e8 100644
--- a/cflib_groundstation/main.py
+++ b/cflib_groundstation/main.py
@@ -43,7 +43,7 @@ class main():
                 elif msg_type == MessageTypeID.GETNODES_ID.value:
                     self.cfConnect.GetNodes()
                 elif msg_type == MessageTypeID.SETPARAM_ID.value:
-                    self.cfConnect.SetParam()
+                    self.cfConnect.SetParam(command)
                 elif msg_type == MessageTypeID.GETPARAM_ID.value:
                     self.cfConnect.GetParam(command, self.outputQueue)
                 elif msg_type == MessageTypeID.SETSOURCE_ID.value:
@@ -62,6 +62,8 @@ class main():
                     self.cfConnect.GetLogFile()
                 elif msg_type == MessageTypeID.LOG_END_ID.value:
                     self.cfConnect.LogBlockCommand()
+                elif msg_type == MessageTypeID.GETLOGFILE_ID.value:
+                    self.cfConnect.GetLogFile(command)
             
             
 
-- 
GitLab