8
8
from saleae .analyzers import HighLevelAnalyzer , AnalyzerFrame , StringSetting , NumberSetting , ChoicesSetting
9
9
from saleae .data import GraphTimeDelta
10
10
11
- # I2C_ADDRESS_SETTING is not used in v1.0.0. TODO: provide filtering on the selected address only
12
11
I2C_ADDRESS_SETTING = 'I2C Address (usually 66 = 0x42)'
13
12
SPI_CHANNEL_SETTING = 'SPI Channel'
14
13
UBLOX_MODULE_SETTING = 'u-blox Module'
@@ -54,34 +53,49 @@ class Hla(HighLevelAnalyzer):
54
53
ignore_avail_LSB = 3 # Ignore this byte - it is the LSB of Bytes-Available
55
54
ignore_avail_MSB = 4 # Ignore this byte - it is the MSB of Bytes-Available
56
55
57
- # UBX Class
56
+ # UBX Class (Numerical order)
58
57
UBX_CLASS = {
58
+ 0x01 : "NAV" ,
59
+ 0x02 : "RXM" ,
60
+ 0x04 : "INF" ,
59
61
0x05 : "ACK" ,
60
62
0x06 : "CFG" ,
61
- 0x04 : "INF" ,
62
- 0x21 : "LOG" ,
63
- 0x13 : "MGA" ,
63
+ 0x09 : "UPD" ,
64
64
0x0a : "MON" ,
65
- 0x01 : "NAV" ,
66
- 0x29 : "NAV2" ,
67
- 0x02 : "RXM" ,
68
- 0x27 : "SEC" ,
65
+ 0x0b : "AID" ,
66
+ 0x0c : "DBG" ,
69
67
0x0d : "TIM" ,
70
- 0x09 : "UPD"
68
+ 0x10 : "ESF" ,
69
+ 0x13 : "MGA" ,
70
+ 0x21 : "LOG" ,
71
+ 0x27 : "SEC" ,
72
+ 0x28 : "HNR" ,
73
+ 0x29 : "NAV2" ,
74
+ 0xF0 : "NMEA" ,
75
+ 0xF1 : "PUBX" ,
76
+ 0xF4 : "RTCM2" ,
77
+ 0xF5 : "RTCM3" ,
78
+ 0xF6 : "SPARTN" ,
79
+ 0xF7 : "NMEA-NAV2"
71
80
}
72
81
73
- # UBX ID
82
+ # UBX ID (Alphabetical order - as per the interface description)
74
83
UBX_ID = {
75
84
# ACK
76
85
(0x05 , 0x01 ): "ACK" ,
77
86
(0x05 , 0x00 ): "NACK" ,
78
87
# CFG
79
88
(0x06 , 0x13 ): "ANT" ,
89
+ (0x06 , 0x93 ): "BATCH" ,
80
90
(0x06 , 0x09 ): "CFG" ,
81
91
(0x06 , 0x06 ): "DAT" ,
82
92
(0x06 , 0x70 ): "DGNSS" ,
93
+ (0x06 , 0x4c ): "ESFA" ,
94
+ (0x06 , 0x56 ): "ESFALG" ,
95
+ (0x06 , 0x4d ): "ESFG" ,
83
96
(0x06 , 0x69 ): "GEOFENCE" ,
84
97
(0x06 , 0x3e ): "GNSS" ,
98
+ (0x06 , 0x5c ): "HNR" ,
85
99
(0x06 , 0x02 ): "INF" ,
86
100
(0x06 , 0x39 ): "ITFM" ,
87
101
(0x06 , 0x47 ): "LOGFILTER" ,
@@ -90,6 +104,8 @@ class Hla(HighLevelAnalyzer):
90
104
(0x06 , 0x23 ): "NAVX5" ,
91
105
(0x06 , 0x17 ): "NMEA" ,
92
106
(0x06 , 0x1e ): "ODO" ,
107
+ (0x06 , 0x3b ): "PM2" ,
108
+ (0x06 , 0x86 ): "PMS" ,
93
109
(0x06 , 0x00 ): "PRT" ,
94
110
(0x06 , 0x57 ): "PWR" ,
95
111
(0x06 , 0x08 ): "RATE" ,
@@ -102,6 +118,17 @@ class Hla(HighLevelAnalyzer):
102
118
(0x06 , 0x8c ): "VALDEL" ,
103
119
(0x06 , 0x8b ): "VALGET" ,
104
120
(0x06 , 0x8a ): "VALSET" ,
121
+ # ESF
122
+ (0x10 , 0x14 ): "ALG" ,
123
+ (0x10 , 0x15 ): "INS" ,
124
+ (0x10 , 0x02 ): "MEAS" ,
125
+ (0x10 , 0x03 ): "RAW" ,
126
+ (0x10 , 0x13 ): "RESETALG" ,
127
+ (0x10 , 0x10 ): "STATUS" ,
128
+ # HNR
129
+ (0x28 , 0x01 ): "ATT" ,
130
+ (0x28 , 0x02 ): "INS" ,
131
+ (0x28 , 0x00 ): "PVT" ,
105
132
# INF
106
133
(0x04 , 0x04 ): "DEBUG" ,
107
134
(0x04 , 0x00 ): "ERROR" ,
@@ -120,8 +147,10 @@ class Hla(HighLevelAnalyzer):
120
147
(0x21 , 0x04 ): "STRING" ,
121
148
# MGA
122
149
(0x13 , 0x60 ): "ACK" ,
150
+ (0x13 , 0x20 ): "ANO" ,
123
151
(0x13 , 0x03 ): "BDS" ,
124
152
(0x13 , 0x80 ): "DBD" ,
153
+ (0x13 , 0x21 ): "FLASH" ,
125
154
(0x13 , 0x02 ): "GAL" ,
126
155
(0x13 , 0x06 ): "GLO" ,
127
156
(0x13 , 0x00 ): "GPS" ,
@@ -136,52 +165,70 @@ class Hla(HighLevelAnalyzer):
136
165
(0x0a , 0x02 ): "IO" ,
137
166
(0x0a , 0x06 ): "MSGPP" ,
138
167
(0x0a , 0x27 ): "PATCH" ,
168
+ (0x0a , 0x35 ): "PMP" ,
169
+ (0x0a , 0x2b ): "PT2" ,
139
170
(0x0a , 0x38 ): "RF" ,
140
171
(0x0a , 0x07 ): "RXBUF" ,
141
172
(0x0a , 0x21 ): "RXR" ,
173
+ (0x0a , 0x2e ): "SMGR" ,
142
174
(0x0a , 0x31 ): "SPAN" ,
143
175
(0x0a , 0x39 ): "SYS" ,
176
+ (0x0a , 0x0e ): "TEMP" ,
144
177
(0x0a , 0x08 ): "TXBUF" ,
145
178
(0x0a , 0x04 ): "VER" ,
146
179
# NAV
180
+ (0x01 , 0x05 ): "ATT" ,
181
+ (0x01 , 0x60 ): "AOPSTATUS" ,
147
182
(0x01 , 0x22 ): "CLOCK" ,
148
183
(0x01 , 0x36 ): "COV" ,
184
+ (0x01 , 0x31 ): "DGPS" ,
149
185
(0x01 , 0x04 ): "DOP" ,
186
+ (0x01 , 0x3d ): "EELL" ,
150
187
(0x01 , 0x61 ): "EOE" ,
151
188
(0x01 , 0x39 ): "GEOFENCE" ,
189
+ (0x01 , 0x37 ): "HNR" ,
152
190
(0x01 , 0x13 ): "HPPOSECEF" ,
153
191
(0x01 , 0x14 ): "HPPOSLLH" ,
192
+ (0x01 , 0x28 ): "NMI" ,
154
193
(0x01 , 0x09 ): "ODO" ,
155
194
(0x01 , 0x34 ): "ORB" ,
156
195
(0x01 , 0x62 ): "PL" ,
157
196
(0x01 , 0x01 ): "POSECEF" ,
158
197
(0x01 , 0x02 ): "POSLLH" ,
198
+ (0x01 , 0x17 ): "PVAT" ,
159
199
(0x01 , 0x07 ): "PVT" ,
160
200
(0x01 , 0x3C ): "RELPOSNED" ,
161
201
(0x01 , 0x10 ): "RESETODO" ,
162
202
(0x01 , 0x35 ): "SAT" ,
163
203
(0x01 , 0x32 ): "SBAS" ,
164
204
(0x01 , 0x43 ): "SIG" ,
165
205
(0x01 , 0x42 ): "SLAS" ,
206
+ (0x01 , 0x06 ): "SOL" ,
166
207
(0x01 , 0x03 ): "STATUS" ,
167
208
(0x01 , 0x3B ): "SVIN" ,
209
+ (0x01 , 0x30 ): "SVINFO" ,
168
210
(0x01 , 0x24 ): "TIMEBDS" ,
169
211
(0x01 , 0x25 ): "TIMEGAL" ,
170
212
(0x01 , 0x23 ): "TIMEGLO" ,
171
213
(0x01 , 0x20 ): "TIMEGPS" ,
172
214
(0x01 , 0x26 ): "TIMELS" ,
173
- (0x01 , 0x27 ): "TIMEQZSS" ,
174
215
(0x01 , 0x21 ): "TIMEUTC" ,
216
+ (0x01 , 0x63 ): "TIMENAVIC" ,
217
+ (0x01 , 0x27 ): "TIMEQZSS" ,
218
+ (0x01 , 0x64 ): "TIMETRUSTED" ,
175
219
(0x01 , 0x11 ): "VELECEF" ,
176
220
(0x01 , 0x12 ): "VELNED" ,
177
221
# NAV2
178
222
(0x29 , 0x22 ): "CLOCK" ,
179
223
(0x29 , 0x36 ): "COV" ,
224
+ (0x29 , 0x31 ): "DGPS" ,
180
225
(0x29 , 0x04 ): "DOP" ,
181
226
(0x29 , 0x61 ): "EOE" ,
227
+ (0x29 , 0x3d ): "EELL" ,
182
228
(0x29 , 0x09 ): "ODO" ,
183
229
(0x29 , 0x01 ): "POSECEF" ,
184
230
(0x29 , 0x02 ): "POSLLH" ,
231
+ (0x29 , 0x17 ): "PVAT" ,
185
232
(0x29 , 0x07 ): "PVT" ,
186
233
(0x29 , 0x35 ): "SAT" ,
187
234
(0x29 , 0x32 ): "SBAS" ,
@@ -194,12 +241,17 @@ class Hla(HighLevelAnalyzer):
194
241
(0x29 , 0x23 ): "TIMEGLO" ,
195
242
(0x29 , 0x20 ): "TIMEGPS" ,
196
243
(0x29 , 0x26 ): "TIMELS" ,
197
- (0x29 , 0x27 ): "TIMEQZSS " ,
244
+ (0x29 , 0x63 ): "TIMENAVIC " ,
198
245
(0x29 , 0x21 ): "TIMEUTC" ,
246
+ (0x29 , 0x27 ): "TIMEQZSS" ,
199
247
(0x29 , 0x11 ): "VELECEF" ,
200
248
(0x29 , 0x12 ): "VELNED" ,
201
249
# RXM
202
250
(0x02 , 0x34 ): "COR" ,
251
+ (0x02 , 0x84 ): "MEAS20" ,
252
+ (0x02 , 0x86 ): "MEAS50" ,
253
+ (0x02 , 0x82 ): "MEASC12" ,
254
+ (0x02 , 0x80 ): "MEASD12" ,
203
255
(0x02 , 0x14 ): "MEASX" ,
204
256
(0x02 , 0x72 ): "PMP" ,
205
257
(0x02 , 0x41 ): "PMREQ" ,
@@ -211,10 +263,24 @@ class Hla(HighLevelAnalyzer):
211
263
(0x02 , 0x33 ): "SPARTN" ,
212
264
(0x02 , 0x36 ): "SPARTNKEY" ,
213
265
# SEC
266
+ (0x27 , 0x04 ): "ECSIGN" ,
267
+ (0x27 , 0x0A ): "OSNMA" ,
268
+ (0x27 , 0x05 ): "SESSID" ,
269
+ (0x27 , 0x09 ): "SIG" ,
270
+ (0x27 , 0x10 ): "SIGLOG" ,
271
+ (0x27 , 0x01 ): "SIGN" ,
214
272
(0x27 , 0x03 ): "UNIQID" ,
215
273
# TIM
274
+ (0x0d , 0x11 ): "DOSC" ,
275
+ (0x0d , 0x16 ): "FCHG" ,
276
+ (0x0d , 0x17 ): "HOC" ,
277
+ (0x0d , 0x13 ): "SMEAS" ,
278
+ (0x0d , 0x04 ): "SVIN" ,
279
+ (0x0d , 0x05 ): "SYNC" ,
216
280
(0x0d , 0x03 ): "TM2" ,
281
+ (0x0d , 0x12 ): "TOS" ,
217
282
(0x0d , 0x01 ): "TP" ,
283
+ (0x0d , 0x15 ): "VCOCAL" ,
218
284
(0x0d , 0x06 ): "VRFY" ,
219
285
# UPD
220
286
(0x09 , 0x14 ): "SOS"
@@ -454,10 +520,18 @@ def analyze_ubx(self, frame, value):
454
520
455
521
if self .this_is_byte == 0 :
456
522
self .ack_class = value
457
- return AnalyzerFrame ('message' , frame .start_time , frame .end_time , {'str' : self .UBX_CLASS [value ]})
523
+ if value in self .UBX_CLASS :
524
+ class_str = self .UBX_CLASS [value ]
525
+ else :
526
+ class_str = 'Class'
527
+ return AnalyzerFrame ('message' , frame .start_time , frame .end_time , {'str' : class_str })
458
528
elif self .this_is_byte == 1 :
529
+ if (self .ack_class , value ) in self .UBX_ID :
530
+ id_str = self .UBX_ID [self .ack_class , value ]
531
+ else :
532
+ id_str = 'ID'
459
533
return AnalyzerFrame ('message' , frame .start_time , frame .end_time ,
460
- {'str' : self . UBX_ID [ self . ack_class , value ] })
534
+ {'str' : id_str })
461
535
else :
462
536
return AnalyzerFrame ('message' , frame .start_time , frame .end_time , {'str' : '?' })
463
537
0 commit comments