1// Based on https://github.com/ArduPilot/MAVProxy/blob/9bf8b00fbc355650b060e546110877c7898baa81/MAVProxy/modules/lib/mp_util.py#L384
8import QGroundControl.Controls
11 property Fact fact: Fact { }
15 property var busTypes: {
25 property var compassTypes: {
52 property var imuTypes: {
76 0x31: 'INS_ADIS1647X',
89 0x3E: 'INS_LSM6DSV16X',
91 0x40: 'INS_ADIS16607',
92 0x41: 'INS_ZEROONE_FPGA_SCH16T',
93 0x42: 'INS_LSM6DSV32X',
94 0x43: 'INS_LSM6DSK320X',
98 property var baroTypes: {
125 property var airspeedTypes: {
138 function decode (device) {
139 let devid = parseInt(device.valueString)
140 let deviceName = device.name
141 let busType = busTypes[devid & 0x07]
142 let bus = (devid >> 3) & 0x1F
143 let address = (devid >> 8) & 0xFF
144 let devtype = (devid >> 16)
150 if (deviceName.startsWith('COMPASS')) {
151 if (busType === 'UAVCAN') {
152 decodedDevname = 'UAVCAN'
153 } else if (busType === 'EAHRS') {
154 decodedDevname = 'EAHRS'
156 decodedDevname = compassTypes[devtype] || '?'
159 if (deviceName.startsWith('INS')) {
160 decodedDevname = imuTypes[devtype] || '?'
162 if (deviceName.startsWith('GND_BARO')) {
163 decodedDevname = baroTypes[devtype] || '?'
165 if (deviceName.startsWith('BARO')) {
166 decodedDevname = baroTypes[devtype] || '?'
168 if (deviceName.startsWith('ARSP')) {
169 decodedDevname = airspeedTypes[devtype] || '?'
171 return `${decodedDevname} (${busType}${bus})`