QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
APMSensorIdDecoder.qml
Go to the documentation of this file.
1// Based on https://github.com/ArduPilot/MAVProxy/blob/9bf8b00fbc355650b060e546110877c7898baa81/MAVProxy/modules/lib/mp_util.py#L384
2
3import QtQuick
4import QtQuick.Controls
5import QtQuick.Layouts
6
7import QGroundControl
8import QGroundControl.Controls
9
10QGCLabel {
11 property Fact fact: Fact { }
12 text: decode(fact)
13
14
15 property var busTypes: {
16 0: '-',
17 1: 'I2C',
18 2: 'SPI',
19 3: 'UAVCAN',
20 4: 'SITL',
21 5: 'MSP',
22 6: 'EAHRS'
23 }
24
25 property var compassTypes: {
26 0x01: 'HMC5883_OLD',
27 0x07: 'HMC5883',
28 0x02: 'LSM303D',
29 0x04: 'AK8963',
30 0x05: 'BMM150',
31 0x06: 'LSM9DS1',
32 0x08: 'LIS3MDL',
33 0x09: 'AK09916',
34 0x0A: 'IST8310',
35 0x0B: 'ICM20948',
36 0x0C: 'MMC3416',
37 0x0D: 'QMC5883L',
38 0x0E: 'MAG3110',
39 0x0F: 'SITL',
40 0x10: 'IST8308',
41 0x11: 'RM3100',
42 0x12: 'RM3100_2',
43 0x13: 'MMC5983',
44 0x14: 'AK09918',
45 0x15: 'AK09915',
46 0x16: 'QMC5883P',
47 0x17: 'BMM350',
48 0x18: 'IIS2MDC'
49 }
50
51 property var imuTypes: {
52 0x09: 'BMI160',
53 0x10: 'L3G4200D',
54 0x11: 'ACC_LSM303D',
55 0x12: 'ACC_BMA180',
56 0x13: 'ACC_MPU6000',
57 0x16: 'ACC_MPU9250',
58 0x17: 'ACC_IIS328DQ',
59 0x18: 'ACC_LSM9DS1',
60 0x21: 'GYR_MPU6000',
61 0x22: 'GYR_L3GD20',
62 0x24: 'GYR_MPU9250',
63 0x25: 'GYR_I3G4250D',
64 0x26: 'GYR_LSM9DS1',
65 0x27: 'INS_ICM20789',
66 0x28: 'INS_ICM20689',
67 0x29: 'INS_BMI055',
68 0x2A: 'SITL',
69 0x2B: 'INS_BMI088',
70 0x2C: 'INS_ICM20948',
71 0x2D: 'INS_ICM20648',
72 0x2E: 'INS_ICM20649',
73 0x2F: 'INS_ICM20602',
74 0x30: 'INS_ICM20601',
75 0x31: 'INS_ADIS1647X',
76 0x32: 'SERIAL',
77 0x33: 'INS_ICM40609',
78 0x34: 'INS_ICM42688',
79 0x35: 'INS_ICM42605',
80 0x36: 'INS_ICM40605',
81 0x37: 'INS_IIM42652',
82 0x38: 'BMI270',
83 0x39: 'INS_BMI085',
84 0x3A: 'INS_ICM42670',
85 0x3B: 'INS_ICM45686',
86 0x3C: 'INS_SCHA63T',
87 0x3D: 'INS_IIM42653'
88 }
89
90 property var baroTypes: {
91 0x01: 'SITL',
92 0x02: 'BMP085',
93 0x03: 'BMP280',
94 0x04: 'BMP388',
95 0x05: 'DPS280',
96 0x06: 'DPS310',
97 0x07: 'FBM320',
98 0x08: 'ICM20789',
99 0x09: 'KELLERLD',
100 0x0A: 'LPS2XH',
101 0x0B: 'MS5611',
102 0x0C: 'SPL06',
103 0x0D: 'UAVCAN',
104 0x0E: 'MSP',
105 0x0F: 'ICP101XX',
106 0x10: 'ICP201XX',
107 0x11: 'MS5607',
108 0x12: 'MS5837_30BA',
109 0x13: 'MS5637',
110 0x14: 'BMP390',
111 0x15: 'BMP581',
112 0x16: 'SPA06',
113 0x17: 'AUAV',
114 0x18: 'MS5837_02BA'
115 }
116
117 property var airspeedTypes: {
118 0x01: 'SITL',
119 0x02: 'MS4525',
120 0x03: 'MS5525',
121 0x04: 'DLVR',
122 0x05: 'MSP',
123 0x06: 'SDP3X',
124 0x07: 'UAVCAN',
125 0x08: 'ANALOG',
126 0x09: 'NMEA',
127 0x0A: 'ASP5033'
128 }
129
130 function decode (device) {
131 var devid = parseInt(device.valueString)
132 var deviceName = device.name
133 var busType = busTypes[devid & 0x07]
134 var bus = (devid >> 3) & 0x1F
135 var address = (devid >> 8) & 0xFF
136 var devtype = (devid >> 16)
137 var decodedDevname;
138
139 if (devid === 0) {
140 return ""
141 }
142 if (deviceName.startsWith('COMPASS')) {
143 if (busType === 'UAVCAN') {
144 decodedDevname = 'UAVCAN'
145 } else if (busType === 'EAHRS') {
146 decodedDevname = 'EAHRS'
147 } else {
148 decodedDevname = compassTypes[devtype] || '?'
149 }
150 }
151 if (deviceName.startsWith('INS')) {
152 decodedDevname = imuTypes[devtype] || '?'
153 }
154 if (deviceName.startsWith('GND_BARO')) {
155 decodedDevname = baroTypes[devtype] || '?'
156 }
157 if (deviceName.startsWith('BARO')) {
158 decodedDevname = baroTypes[devtype] || '?'
159 }
160 if (deviceName.startsWith('ARSP')) {
161 decodedDevname = airspeedTypes[devtype] || '?'
162 }
163 return `${decodedDevname} (${busType}${bus})`
164 }
165}