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 0x1A: 'AF9838'
50 }
51
52 property var imuTypes: {
53 0x09: 'BMI160',
54 0x10: 'L3G4200D',
55 0x11: 'ACC_LSM303D',
56 0x12: 'ACC_BMA180',
57 0x13: 'ACC_MPU6000',
58 0x16: 'ACC_MPU9250',
59 0x17: 'ACC_IIS328DQ',
60 0x18: 'ACC_LSM9DS1',
61 0x21: 'GYR_MPU6000',
62 0x22: 'GYR_L3GD20',
63 0x24: 'GYR_MPU9250',
64 0x25: 'GYR_I3G4250D',
65 0x26: 'GYR_LSM9DS1',
66 0x27: 'INS_ICM20789',
67 0x28: 'INS_ICM20689',
68 0x29: 'INS_BMI055',
69 0x2A: 'SITL',
70 0x2B: 'INS_BMI088',
71 0x2C: 'INS_ICM20948',
72 0x2D: 'INS_ICM20648',
73 0x2E: 'INS_ICM20649',
74 0x2F: 'INS_ICM20602',
75 0x30: 'INS_ICM20601',
76 0x31: 'INS_ADIS1647X',
77 0x32: 'SERIAL',
78 0x33: 'INS_ICM40609',
79 0x34: 'INS_ICM42688',
80 0x35: 'INS_ICM42605',
81 0x36: 'INS_ICM40605',
82 0x37: 'INS_IIM42652',
83 0x38: 'BMI270',
84 0x39: 'INS_BMI085',
85 0x3A: 'INS_ICM42670',
86 0x3B: 'INS_ICM45686',
87 0x3C: 'INS_SCHA63T',
88 0x3D: 'INS_IIM42653',
89 0x3E: 'INS_LSM6DSV16X',
90 0x3F: 'INS_ASM330',
91 0x40: 'INS_ADIS16607',
92 0x41: 'INS_ZEROONE_FPGA_SCH16T',
93 0x42: 'INS_LSM6DSV32X',
94 0x43: 'INS_LSM6DSK320X',
95 0x44: 'INS_ICM56686'
96 }
97
98 property var baroTypes: {
99 0x01: 'SITL',
100 0x02: 'BMP085',
101 0x03: 'BMP280',
102 0x04: 'BMP388',
103 0x05: 'DPS280',
104 0x06: 'DPS310',
105 0x07: 'FBM320',
106 0x08: 'ICM20789',
107 0x09: 'KELLERLD',
108 0x0A: 'LPS2XH',
109 0x0B: 'MS5611',
110 0x0C: 'SPL06',
111 0x0D: 'UAVCAN',
112 0x0E: 'MSP',
113 0x0F: 'ICP101XX',
114 0x10: 'ICP201XX',
115 0x11: 'MS5607',
116 0x12: 'MS5837_30BA',
117 0x13: 'MS5637',
118 0x14: 'BMP390',
119 0x15: 'BMP581',
120 0x16: 'SPA06',
121 0x17: 'AUAV',
122 0x18: 'MS5837_02BA'
123 }
124
125 property var airspeedTypes: {
126 0x01: 'SITL',
127 0x02: 'MS4525',
128 0x03: 'MS5525',
129 0x04: 'DLVR',
130 0x05: 'MSP',
131 0x06: 'SDP3X',
132 0x07: 'UAVCAN',
133 0x08: 'ANALOG',
134 0x09: 'NMEA',
135 0x0A: 'ASP5033'
136 }
137
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)
145 let decodedDevname;
146
147 if (devid === 0) {
148 return ""
149 }
150 if (deviceName.startsWith('COMPASS')) {
151 if (busType === 'UAVCAN') {
152 decodedDevname = 'UAVCAN'
153 } else if (busType === 'EAHRS') {
154 decodedDevname = 'EAHRS'
155 } else {
156 decodedDevname = compassTypes[devtype] || '?'
157 }
158 }
159 if (deviceName.startsWith('INS')) {
160 decodedDevname = imuTypes[devtype] || '?'
161 }
162 if (deviceName.startsWith('GND_BARO')) {
163 decodedDevname = baroTypes[devtype] || '?'
164 }
165 if (deviceName.startsWith('BARO')) {
166 decodedDevname = baroTypes[devtype] || '?'
167 }
168 if (deviceName.startsWith('ARSP')) {
169 decodedDevname = airspeedTypes[devtype] || '?'
170 }
171 return `${decodedDevname} (${busType}${bus})`
172 }
173}