1#!/usr/bin/env python3
2
3"""Utilities for reading and writting SF00 files."""
4
5import os
6import re
7import mmap
8import logging
9from functools import partial
10from datetime import timedelta
11from collections import defaultdict
12
13import numpy as np
14
15from chart.project import SID
16from chart.products.eps import isp
17from chart.products.eps.gpfs import datetime_to_gentime
18from chart.products.eps.gpfs import datetime_to_cdstime
19from chart.products.eps.gpfs import gentime_to_datetime
20from chart.products.eps.gpfs import FakeMmap
21from chart.common.util import timedelta_to_us
22from chart.common.args import ArgumentParser
23from chart.common.exceptions import BadFileError
24
25logger = logging.getLogger()
26
27# fixed header bytes to identify SF00 format files
28EDDE = b'\xed\x5e'
29
30# zero fill string
31ZERO = b'\x00'
32
33satellites = (
34 {'scid': 'T01', 'proj_id': 8, 'name': 'METOP-TEST-1'},
35 {'scid': 'T02', 'proj_id': 9, 'name': 'METOP-TEST-2'},
36 {'scid': 'T03', 'proj_id': 10, 'name': 'METOP-TEST-3'},
37 {'scid': 'M01', 'proj_id': 11, 'name': 'METOP-B'},
38 {'scid': 'M02', 'proj_id': 12, 'name': 'METOP-A'},
39 {'scid': 'M03', 'proj_id': 13, 'name': 'METOP-C'},
40 {'scid': 'MOS', 'proj_id': 14, 'name': 'METOP-SIM'},
41 {'scid': 'N18', 'proj_id': 18, 'name': 'NOAA-18'},
42 {'scid': 'N19', 'proj_id': 19, 'name': 'NOAA-19'},
43 {'scid': 'T18', 'proj_id': 99, 'name': 'NOAA-TEST-18'},
44 {'scid': 'T19', 'proj_id': 100, 'name': 'NOAA-TEST-19'},
45 {'scid': 'MHP', 'proj_id': 101, 'name': 'MHS-PFM'},
46 {'scid': 'MH1', 'proj_id': 102, 'name': 'MHS-FM1'},
47 {'scid': 'MH2', 'proj_id': 103, 'name': 'MHS-FM2'},
48 {'scid': 'MH3', 'proj_id': 104, 'name': 'MHS-FM3'},
49 {'scid': 'MH4', 'proj_id': 105, 'name': 'MHS-FM4'},
50 {'scid': 'MH5', 'proj_id': 106, 'name': 'MHS-FM5'},
51 {'scid': 'MSG1', 'proj_id': 201, 'name': 'MSG-1'},
52 {'scid': 'MSG2', 'proj_id': 202, 'name': 'MSG-2'},
53 {'scid': 'MSG3', 'proj_id': 203, 'name': 'MSG-3'},
54 {'scid': 'MSG4', 'proj_id': 204, 'name': 'MSG-4'},
55 )
56
57# map scid against project id
58sat_ids = {}
59for _sat in satellites:
60 sat_ids[_sat['scid']] = _sat['proj_id']
61
62
63def lookup_sat_id(sat_id):
64 """Look up an SF satellite ID (numeric) value and return a SCID."""
65 for key, val in sat_ids.items():
66 if val == sat_id:
67 return key
68
69 raise ValueError('Unknown PROJ_ID {id}'.format(id=sat_id))
70 # return 'UNKNOWN-{id}' + str(sat_id)
71
72
73# map project id against name
74proj_ids = {}
75for _sat in satellites:
76 proj_ids[_sat['proj_id']] = _sat['name']
77
78sites = defaultdict(partial(str, '<unknown>'), {16: 'EUM'})
79
80assemblies = {
81 1: {'name': 'HKTM-ALL',
82 'snack-length': 8192,
83 'scanrate': timedelta(seconds=16),
84 'eps_type': ('HKTM_xxx_00',),
85 'description': 'S-BAND HK TM'},
86 2: {'name': 'ASCAT',
87 'snack-length': None,
88 'scanrate': None,
89 'description': 'ASCAT'},
90 3: {'name': 'GOME-TM',
91 'snack-length': 956,
92 'scanrate': timedelta(microseconds=375000),
93 'eps_type': ('GOME_xxx_00',),
94 'description': 'GOME Telemetry only'},
95 4: {'name': 'GRAS',
96 'description': 'GRAS'},
97 5: {'name': 'IASI',
98 'description': 'IASI'},
99 6: {'name': 'MHS-ALL',
100 'snack-length': 1286 + 6, # payload + OBT
101 'scanrate': timedelta(microseconds=8000000 / 3),
102 'eps_type': ('MHSx_xxx_00', 'NOAA_GAC_00'),
103 'description': 'MHS'},
104 7: {'name': 'NIU'},
105 8: {'name': 'ADCS',
106 'description': 'ADCS'},
107 9: {'name': 'AMSUA1-ALL',
108 'snack-length': 1240 + 6, # OBT timestamp appended
109 'scanrate': timedelta(seconds=8),
110 'eps_type': ('AMSA_xxx_00', 'NOAA_GAC_00'),
111 'description': 'AMSU-A1 Measurement mode'}, # AMSUA1 unique mode is 1120 bytes
112 10: {'name': 'AMSUA2-ALL',
113 'snack-length': 312 + 6,
114 'scanrate': timedelta(seconds=8),
115 'eps_type': ('AMSA_xxx_00', 'NOAA_GAC_00'),
116 'description': 'AMSU-A2 Measurement mode'}, # AMSUA2 unique mode is 288 bytes
117 11: {'name': 'AVHRR',
118 'snack-length': 292,
119 'scanrate': timedelta(microseconds=166667),
120 'eps_type': ('AVHR_xxx_00',),
121 'description': 'AVHRR data with Earth View statistics'},
122 12: {'name': 'HIRS',
123 'snack-length': 2944,
124 'scanrate': timedelta(microseconds=6400000),
125 'eps_type': ('HIRS_xxx_00',),
126 'description': 'HIRS'},
127 13: {'name': 'SARR',
128 'description': 'SARR'},
129 14: {'name': 'SARP',
130 'description': 'SARP'},
131 15: {'name': 'SEM',
132 'snack-length': 640,
133 'scanrate': timedelta(seconds=32),
134 'eps_type': ('SEMx_xxx_00',),
135 'description': 'SEM'},
136 16: {'name': 'FDF',
137 'description': 'FDF'},
138 18: {'name': 'GRAS-TV',
139 'snack-length': 44,
140 'scanrate': timedelta(seconds=1),
141 'eps_type': ('GRAS_xxx_00',),
142 'description': 'GRAS Temperature and Voltage subpacket'},
143 19: {'name': 'HKTM-FRAME',
144 'snack-length': 512,
145 'scanrate': timedelta(seconds=1),
146 'eps_type': ('HKTM_xxx_00',),
147 'description': 'HKTM single frames'},
148
149 1000: {'name': 'P1',
150 'snack-length': 40,
151 'scanrate': timedelta(seconds=1),
152 'apid': 2044,
153 'service': 3,
154 'subservice': 25,
155 'structure_id': 4,
156 'description': 'Platform Housekeeping Packet #1'},
157 1001: {'name': 'P2',
158 'snack-length': 142,
159 'scanrate': timedelta(seconds=16),
160 'apid': 2044,
161 'service': 3,
162 'subservice': 25,
163 'structure_id': 5,
164 'description': 'Platform Housekeeping Packet #2'},
165 1002: {'name': 'P3',
166 'snack-length': 132,
167 'scanrate': timedelta(seconds=16),
168 'apid': 2044,
169 'service': 3,
170 'subservice': 25,
171 'structure_id': 6,
172 'description': 'Platform Housekeeping Packet #3'},
173 1003: {'name': 'P4',
174 'snack-length': 108, # or 40
175 'scanrate': timedelta(seconds=4),
176 'apid': 2044,
177 'service': 3,
178 'subservice': 25,
179 'structure_id': 7,
180 'description': 'Platform Housekeeping Packet #4'},
181 1004: {'name': 'P5',
182 'snack-length': 96,
183 'scanrate': timedelta(seconds=32),
184 'apid': 2044,
185 'service': 3,
186 'subservice': 25,
187 'structure_id': 8,
188 'description': 'Platform Housekeeping Packet #5'},
189 1005: {'name': 'P6',
190 'snack-length': 42,
191 'scanrate': timedelta(seconds=32),
192 'apid': 2044,
193 'service': 3,
194 'subservice': 25,
195 'structure_id': 9,
196 'description': 'Platform Housekeeping Packet #6'},
197 1006: {'name': 'P7',
198 'snack-length': 40,
199 'scanrate': timedelta(seconds=32),
200 'apid': 2044,
201 'service': 3,
202 'subservice': 25,
203 'structure_id': 10,
204 'description': 'Platform Housekeeping Packet #7'},
205 1007: {'name': 'P8',
206 'snack-length': 102,
207 'scanrate': timedelta(seconds=8),
208 'apid': 2044,
209 'service': 3,
210 'subservice': 25,
211 'structure_id': 11,
212 'description': 'Platform Housekeeping Packet #8'},
213 1008: {'name': 'P9',
214 'snack-length': 41,
215 'scanrate': timedelta(seconds=1),
216 'apid': 2044,
217 'service': 3,
218 'subservice': 25,
219 'structure_id': 12,
220 'description': 'Platform Housekeeping Packet #9'},
221 1009: {'name': 'PF',
222 'snack-length': 38,
223 'scanrate': timedelta(seconds=4),
224 'apid': 2044,
225 'service': 3,
226 'subservice': 25,
227 'structure_id': 3,
228 'description': 'Fast HK Prog. Packet'},
229 1010: {'name': 'PS',
230 'snack-length': 92,
231 'scanrate': timedelta(seconds=16),
232 'apid': 2044,
233 'service': 3,
234 'subservice': 25,
235 'structure_id': 2,
236 'description': 'Slow HK Prog. Packet'},
237 1011: {'name': 'S0',
238 'snack-length': 58,
239 'scanrate': timedelta(seconds=4),
240 'apid': 2044,
241 'service': 3,
242 'subservice': 25,
243 'structure_id': 13,
244 'description': 'SEVIRI Housekeeping Packet #0'},
245 1012: {'name': 'S1',
246 'snack-length': 82,
247 'scanrate': timedelta(seconds=32),
248 'apid': 2044,
249 'service': 3,
250 'subservice': 25,
251 'structure_id': 14,
252 'description': 'SEVIRI Housekeeping Packet #1'},
253 1013: {'name': 'S2',
254 'snack-length': 110,
255 'scanrate': timedelta(seconds=32),
256 'apid': 2044,
257 'service': 3,
258 'subservice': 25,
259 'structure_id': 15,
260 'description': 'SEVIRI Housekeeping Packet #2'},
261 1014: {'name': 'S3',
262 'snack-length': 108,
263 'scanrate': timedelta(seconds=32),
264 'apid': 2044,
265 'service': 3,
266 'subservice': 25,
267 'structure_id': 16,
268 'description': 'SEVIRI Housekeeping Packet #3'},
269 1015: {'name': 'S4',
270 'snack-length': 34,
271 'scanrate': timedelta(seconds=16),
272 'apid': 2044,
273 'service': 3,
274 'subservice': 25,
275 'structure_id': 17,
276 'description': 'SEVIRI Housekeeping Packet #4'},
277 1016: {'name': 'S5',
278 'snack-length': 98,
279 'scanrate': timedelta(seconds=64),
280 'apid': 2044,
281 'service': 3,
282 'subservice': 25,
283 'structure_id': 18,
284 'description': 'SEVIRI Housekeeping Packet #5'},
285 1017: {'name': 'S6',
286 'snack-length': 144,
287 'scanrate': timedelta(seconds=64),
288 'apid': 2044,
289 'service': 3,
290 'subservice': 25,
291 'structure_id': 19,
292 'description': 'SEVIRI Housekeeping Packet #6'},
293 1018: {'name': 'S7',
294 'snack-length': 132,
295 'scanrate': timedelta(seconds=64),
296 'apid': 2044,
297 'service': 3,
298 'subservice': 25,
299 'structure_id': 20,
300 'description': 'SEVIRI Housekeeping Packet #7'},
301 1019: {'name': 'S8',
302 'snack-length': 90,
303 'scanrate': timedelta(seconds=64),
304 'apid': 2044,
305 'service': 3,
306 'subservice': 25,
307 'structure_id': 21,
308 'description': 'SEVIRI Housekeeping Packet #8'},
309 1020: {'name': 'S9',
310 'snack-length': 90,
311 'scanrate': timedelta(seconds=64),
312 'apid': 2044,
313 'service': 3,
314 'subservice': 25,
315 'structure_id': 22,
316 'description': 'SEVIRI Housekeeping Packet #9'},
317 1021: {'name': 'SY',
318 'snack-length': 60,
319 'scanrate': timedelta(seconds=0.6),
320 'apid': 2044,
321 'service': 3,
322 'subservice': 25,
323 'structure_id': 1,
324 'description': 'HK Synchro Packet'},
325 1022: {'name': 'TimeCorr',
326 'snack-length': 32,
327 'scanrate': timedelta(hours=1),
328 'description': 'Time correlation parameters extracted from DP SYS17006'},
329 1023: {'name': 'RADAUX',
330 # pkt_type 155 pkt_subtype 0 apid 2044? max_len 204
331 'snack-length': 210, # 211, # 234 - 42 = 192
332 'scanrate': timedelta(seconds=0.6),
333 'service': 155,
334 'subservice': 0,
335 'apid': 40030,
336 'structure_id': 0,
337 'description': 'RADAUX packet'},
338 # 1024: {'name': 'SEVOBS01',
339 # pkt_type 200 pkt_subtype 1 apid 30 max_len 572 pkt_data_id 1
340 # 'snack-length': 579,
341 # 'scanrate': None,
342 # 'description': 'Seviri Observation 1 Packet'},
343 1025: {'name': 'SEVOBS02',
344 # pkt_type 200 pkt_subtype 1 apid 30 max_len 1034 pkt_data_id 2
345 'snack-length': 1038, # 1041,
346 'scanrate': timedelta(seconds=1), # fake but sfwriter needs something
347 'description': 'Seviri Observation Packet'},
348 1026: {'name': 'TIME',
349 'snack-length': None,
350 'scanrate': None,
351 'description': 'Time correlation packet'},
352
353 1027: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB_TC_ER', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 101, 'description': 'AB TC ERROR'},
354 1028: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB01P1', 'service': 8, 'param2': 769, 'subservice': 255, 'param1': 291, 'description': 'AB 01 Rpt, Part 1'},
355 1029: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB01P2', 'service': 8, 'param2': 770, 'subservice': 255, 'param1': 291, 'description': 'AB 01 Rpt, Part 2'},
356 1030: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB01P3', 'service': 8, 'param2': 771, 'subservice': 255, 'param1': 291, 'description': 'AB 01 Rpt, Part 3'},
357 1031: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB02P1', 'service': 8, 'param2': 1025, 'subservice': 255, 'param1': 292, 'description': 'AB 02 Rpt, Part 1'},
358 1032: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB02P2', 'service': 8, 'param2': 1026, 'subservice': 255, 'param1': 292, 'description': 'AB 02 Rpt, Part 2'},
359 1033: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB02P3', 'service': 8, 'param2': 1027, 'subservice': 255, 'param1': 292, 'description': 'AB 02 Rpt, Part 3'},
360 1034: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB03P1', 'service': 8, 'param2': 1281, 'subservice': 255, 'param1': 293, 'description': 'AB 03 Rpt, Part 1'},
361 1035: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB03P2', 'service': 8, 'param2': 1282, 'subservice': 255, 'param1': 293, 'description': 'AB 03 Rpt, Part 2'},
362 1036: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB03P3', 'service': 8, 'param2': 1283, 'subservice': 255, 'param1': 293, 'description': 'AB 03 Rpt, Part 3'},
363 1037: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB04P1', 'service': 8, 'param2': 1537, 'subservice': 255, 'param1': 294, 'description': 'AB 04 Rpt, Part 1'},
364 1038: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB04P2', 'service': 8, 'param2': 1538, 'subservice': 255, 'param1': 294, 'description': 'AB 04 Rpt, Part 2'},
365 1039: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB04P3', 'service': 8, 'param2': 1539, 'subservice': 255, 'param1': 294, 'description': 'AB 04 Rpt, Part 3'},
366 1040: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB05P1', 'service': 8, 'param2': 1793, 'subservice': 255, 'param1': 295, 'description': 'AB 05 Rpt, Part 1'},
367 1041: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB05P2', 'service': 8, 'param2': 1794, 'subservice': 255, 'param1': 295, 'description': 'AB 05 Rpt, Part 2'},
368 1042: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB05P3', 'service': 8, 'param2': 1795, 'subservice': 255, 'param1': 295, 'description': 'AB 05 Rpt, Part 3'},
369 1043: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB06P1', 'service': 8, 'param2': 2049, 'subservice': 255, 'param1': 296, 'description': 'AB 06 Rpt, Part 1'},
370 1044: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB06P2', 'service': 8, 'param2': 2050, 'subservice': 255, 'param1': 296, 'description': 'AB 06 Rpt, Part 2'},
371 1045: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB06P3', 'service': 8, 'param2': 2051, 'subservice': 255, 'param1': 296, 'description': 'AB 06 Rpt, Part 3'},
372 1046: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB07P1', 'service': 8, 'param2': 2305, 'subservice': 255, 'param1': 297, 'description': 'AB 07 Rpt, Part 1'},
373 1047: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB07P2', 'service': 8, 'param2': 2306, 'subservice': 255, 'param1': 297, 'description': 'AB 07 Rpt, Part 2'},
374 1048: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB07P3', 'service': 8, 'param2': 2307, 'subservice': 255, 'param1': 297, 'description': 'AB 07 Rpt, Part 3'},
375 1049: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB08P1', 'service': 8, 'param2': 2561, 'subservice': 255, 'param1': 298, 'description': 'AB 08 Rpt, Part 1'},
376 1050: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB08P2', 'service': 8, 'param2': 2562, 'subservice': 255, 'param1': 298, 'description': 'AB 08 Rpt, Part 2'},
377 1051: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB08P3', 'service': 8, 'param2': 2563, 'subservice': 255, 'param1': 298, 'description': 'AB 08 Rpt, Part 3'},
378 1052: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB09P1', 'service': 8, 'param2': 2817, 'subservice': 255, 'param1': 299, 'description': 'AB 09 Rpt, Part 1'},
379 1053: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB09P2', 'service': 8, 'param2': 2818, 'subservice': 255, 'param1': 299, 'description': 'AB 09 Rpt, Part 2'},
380 1054: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB09P3', 'service': 8, 'param2': 2819, 'subservice': 255, 'param1': 299, 'description': 'AB 09 Rpt, Part 3'},
381 1055: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB10P1', 'service': 8, 'param2': 3073, 'subservice': 255, 'param1': 300, 'description': 'AB 10 Rpt, Part 1'},
382 1056: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB10P2', 'service': 8, 'param2': 3074, 'subservice': 255, 'param1': 300, 'description': 'AB 10 Rpt, Part 2'},
383 1057: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB10P3', 'service': 8, 'param2': 3075, 'subservice': 255, 'param1': 300, 'description': 'AB 10 Rpt, Part 3'},
384 1058: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB11P1', 'service': 8, 'param2': 3329, 'subservice': 255, 'param1': 301, 'description': 'AB 11 Rpt, Part 1'},
385 1059: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB11P2', 'service': 8, 'param2': 3330, 'subservice': 255, 'param1': 301, 'description': 'AB 11 Rpt, Part 2'},
386 1060: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB11P3', 'service': 8, 'param2': 3331, 'subservice': 255, 'param1': 301, 'description': 'AB 11 Rpt, Part 3'},
387 1061: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB12P1', 'service': 8, 'param2': 3585, 'subservice': 255, 'param1': 302, 'description': 'AB 12 Rpt, Part 1'},
388 1062: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB12P2', 'service': 8, 'param2': 3586, 'subservice': 255, 'param1': 302, 'description': 'AB 12 Rpt, Part 2'},
389 1063: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB12P3', 'service': 8, 'param2': 3587, 'subservice': 255, 'param1': 302, 'description': 'AB 12 Rpt, Part 3'},
390 1064: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB13P1', 'service': 8, 'param2': 3841, 'subservice': 255, 'param1': 303, 'description': 'AB 13 Rpt, Part 1'},
391 1065: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB13P2', 'service': 8, 'param2': 3842, 'subservice': 255, 'param1': 303, 'description': 'AB 13 Rpt, Part 2'},
392 1066: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB13P3', 'service': 8, 'param2': 3843, 'subservice': 255, 'param1': 303, 'description': 'AB 13 Rpt, Part 3'},
393 1067: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB14P1', 'service': 8, 'param2': 4097, 'subservice': 255, 'param1': 304, 'description': 'AB 14 Rpt, Part 1'},
394 1068: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB14P2', 'service': 8, 'param2': 4098, 'subservice': 255, 'param1': 304, 'description': 'AB 14 Rpt, Part 2'},
395 1069: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB14P3', 'service': 8, 'param2': 4099, 'subservice': 255, 'param1': 304, 'description': 'AB 14 Rpt, Part 3'},
396 1070: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB15P1', 'service': 8, 'param2': 4353, 'subservice': 255, 'param1': 305, 'description': 'AB 15 Rpt, Part 1'},
397 1071: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB15P2', 'service': 8, 'param2': 4354, 'subservice': 255, 'param1': 305, 'description': 'AB 15 Rpt, Part 2'},
398 1072: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB15P3', 'service': 8, 'param2': 4355, 'subservice': 255, 'param1': 305, 'description': 'AB 15 Rpt, Part 3'},
399 1073: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB16P1', 'service': 8, 'param2': 4609, 'subservice': 255, 'param1': 306, 'description': 'AB 16 Rpt, Part 1'},
400 1074: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB16P2', 'service': 8, 'param2': 4610, 'subservice': 255, 'param1': 306, 'description': 'AB 16 Rpt, Part 2'},
401 1075: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB16P3', 'service': 8, 'param2': 4611, 'subservice': 255, 'param1': 306, 'description': 'AB 16 Rpt, Part 3'},
402 1076: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB17P1', 'service': 8, 'param2': 4865, 'subservice': 255, 'param1': 307, 'description': 'AB 17 Rpt, Part 1'},
403 1077: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB17P2', 'service': 8, 'param2': 4866, 'subservice': 255, 'param1': 307, 'description': 'AB 17 Rpt, Part 2'},
404 1078: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB17P3', 'service': 8, 'param2': 4867, 'subservice': 255, 'param1': 307, 'description': 'AB 17 Rpt, Part 3'},
405 1079: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB18P1', 'service': 8, 'param2': 5121, 'subservice': 255, 'param1': 308, 'description': 'AB 18 Rpt, Part 1'},
406 1080: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB18P2', 'service': 8, 'param2': 5122, 'subservice': 255, 'param1': 308, 'description': 'AB 18 Rpt, Part 2'},
407 1081: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB18P3', 'service': 8, 'param2': 5123, 'subservice': 255, 'param1': 308, 'description': 'AB 18 Rpt, Part 3'},
408 1082: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB19P1', 'service': 8, 'param2': 5377, 'subservice': 255, 'param1': 309, 'description': 'AB 19 Rpt, Part 1'},
409 1083: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB19P2', 'service': 8, 'param2': 5378, 'subservice': 255, 'param1': 309, 'description': 'AB 19 Rpt, Part 2'},
410 1084: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB19P3', 'service': 8, 'param2': 5379, 'subservice': 255, 'param1': 309, 'description': 'AB 19 Rpt, Part 3'},
411 1085: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB20P1', 'service': 8, 'param2': 5633, 'subservice': 255, 'param1': 310, 'description': 'AB 20 Rpt, Part 1'},
412 1086: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB20P2', 'service': 8, 'param2': 5634, 'subservice': 255, 'param1': 310, 'description': 'AB 20 Rpt, Part 2'},
413 1087: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB20P3', 'service': 8, 'param2': 5635, 'subservice': 255, 'param1': 310, 'description': 'AB 20 Rpt, Part 3'},
414 1088: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB21P1', 'service': 8, 'param2': 5889, 'subservice': 255, 'param1': 311, 'description': 'AB 21 Rpt, Part 1'},
415 1089: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB21P2', 'service': 8, 'param2': 5890, 'subservice': 255, 'param1': 311, 'description': 'AB 21 Rpt, Part 2'},
416 1090: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB21P3', 'service': 8, 'param2': 5891, 'subservice': 255, 'param1': 311, 'description': 'AB 21 Rpt, Part 3'},
417 1091: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB22P1', 'service': 8, 'param2': 6145, 'subservice': 255, 'param1': 312, 'description': 'AB 22 Rpt, Part 1'},
418 1092: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB22P2', 'service': 8, 'param2': 6146, 'subservice': 255, 'param1': 312, 'description': 'AB 22 Rpt, Part 2'},
419 1093: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB22P3', 'service': 8, 'param2': 6147, 'subservice': 255, 'param1': 312, 'description': 'AB 22 Rpt, Part 3'},
420 1094: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB23P1', 'service': 8, 'param2': 6401, 'subservice': 255, 'param1': 313, 'description': 'AB 23 Rpt, Part 1'},
421 1095: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB23P2', 'service': 8, 'param2': 6402, 'subservice': 255, 'param1': 313, 'description': 'AB 23 Rpt, Part 2'},
422 1096: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB23P3', 'service': 8, 'param2': 6403, 'subservice': 255, 'param1': 313, 'description': 'AB 23 Rpt, Part 3'},
423 1097: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB24P1', 'service': 8, 'param2': 6657, 'subservice': 255, 'param1': 314, 'description': 'AB 24 Rpt, Part 1'},
424 1098: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB24P2', 'service': 8, 'param2': 6658, 'subservice': 255, 'param1': 314, 'description': 'AB 24 Rpt, Part 2'},
425 1099: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB24P3', 'service': 8, 'param2': 6659, 'subservice': 255, 'param1': 314, 'description': 'AB 24 Rpt, Part 3'},
426 1100: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB25P1', 'service': 8, 'param2': 6913, 'subservice': 255, 'param1': 315, 'description': 'AB 25 Rpt, Part 1'},
427 1101: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB25P2', 'service': 8, 'param2': 6914, 'subservice': 255, 'param1': 315, 'description': 'AB 25 Rpt, Part 2'},
428 1102: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AB25P3', 'service': 8, 'param2': 6915, 'subservice': 255, 'param1': 315, 'description': 'AB 25 Rpt, Part 3'},
429 1103: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ABCAL_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 100, 'description': 'BOA AB CALL RNG ERR'},
430 1104: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ABCALLRG', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 100, 'description': 'AB CALL RANGE ERROR'},
431 1105: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ABLOOP', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 97, 'description': 'AB RECURSIVE USAGE'},
432 1106: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ABLOOP_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 97, 'description': 'BOA AB RECURSIVE USG'},
433 1107: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ABOVERFL', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 98, 'description': 'AB OVERFLOW'},
434 1108: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ABOVFL_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 98, 'description': 'BOA AB OVERFLOW'},
435 1109: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ABSYNT_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 96, 'description': 'BOA AB SYNTACTIC ERR'},
436 1110: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ABSYNTAX', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 96, 'description': 'AB SYNTACTIC ERROR'},
437 1111: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ABTCER_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 101, 'description': 'BOA AB TC ERROR'},
438 1112: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ABWAIT_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 99, 'description': 'BOA AB WAIT RNG ERR'},
439 1113: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ABWAITRG', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 99, 'description': 'AB WAIT RANGE ERROR'},
440 1114: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ACFAIL', 'service': 1, 'param2': None, 'subservice': 2, 'param1': None, 'description': 'Accept Failure Rpt'},
441 1115: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ACSUCC', 'service': 1, 'param2': None, 'subservice': 1, 'param1': None, 'description': 'Accept Success Rpt'},
442 1116: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB01', 'service': 8, 'param2': 769, 'subservice': 255, 'param1': 290, 'description': 'All Abs Rpt; #01/1'},
443 1117: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB02', 'service': 8, 'param2': 770, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #01/2'},
444 1118: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB03', 'service': 8, 'param2': 771, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #01/3'},
445 1119: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB04', 'service': 8, 'param2': 1025, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #02/1'},
446 1120: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB05', 'service': 8, 'param2': 1026, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #02/2'},
447 1121: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB06', 'service': 8, 'param2': 1027, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #02/3'},
448 1122: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB07', 'service': 8, 'param2': 1281, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #03/1'},
449 1123: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB08', 'service': 8, 'param2': 1282, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #03/2'},
450 1124: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB09', 'service': 8, 'param2': 1283, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #03/3'},
451 1125: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB10', 'service': 8, 'param2': 1537, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #04/1'},
452 1126: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB11', 'service': 8, 'param2': 1538, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #04/2'},
453 1127: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB12', 'service': 8, 'param2': 1539, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #04/3'},
454 1128: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB13', 'service': 8, 'param2': 1793, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #05/1'},
455 1129: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB14', 'service': 8, 'param2': 1794, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #05/2'},
456 1130: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB15', 'service': 8, 'param2': 1795, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #05/3'},
457 1131: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB16', 'service': 8, 'param2': 2049, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #06/1'},
458 1132: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB17', 'service': 8, 'param2': 2050, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #06/2'},
459 1133: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB18', 'service': 8, 'param2': 2051, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #06/3'},
460 1134: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB19', 'service': 8, 'param2': 2305, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #07/1'},
461 1135: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB20', 'service': 8, 'param2': 2306, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #07/2'},
462 1136: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB21', 'service': 8, 'param2': 2307, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #07/3'},
463 1137: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB22', 'service': 8, 'param2': 2561, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #08/1'},
464 1138: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB23', 'service': 8, 'param2': 2562, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #08/2'},
465 1139: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB24', 'service': 8, 'param2': 2563, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #08/3'},
466 1140: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB25', 'service': 8, 'param2': 2817, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #09/1'},
467 1141: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB26', 'service': 8, 'param2': 2818, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #09/2'},
468 1142: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB27', 'service': 8, 'param2': 2819, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #09/3'},
469 1143: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB28', 'service': 8, 'param2': 3073, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #10/1'},
470 1144: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB29', 'service': 8, 'param2': 3074, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #10/2'},
471 1145: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB30', 'service': 8, 'param2': 3075, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #10/3'},
472 1146: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB31', 'service': 8, 'param2': 3329, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #11/1'},
473 1147: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB32', 'service': 8, 'param2': 3330, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #11/2'},
474 1148: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB33', 'service': 8, 'param2': 3331, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #11/3'},
475 1149: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB34', 'service': 8, 'param2': 3585, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #12/1'},
476 1150: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB35', 'service': 8, 'param2': 3586, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #12/2'},
477 1151: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB36', 'service': 8, 'param2': 3587, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #12/3'},
478 1152: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB37', 'service': 8, 'param2': 3841, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #13/1'},
479 1153: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB38', 'service': 8, 'param2': 3842, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #13/2'},
480 1154: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB39', 'service': 8, 'param2': 3843, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #13/3'},
481 1155: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB40', 'service': 8, 'param2': 4097, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #14/1'},
482 1156: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB41', 'service': 8, 'param2': 4098, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #14/2'},
483 1157: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB42', 'service': 8, 'param2': 4099, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #14/3'},
484 1158: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB43', 'service': 8, 'param2': 4353, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #15/1'},
485 1159: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB44', 'service': 8, 'param2': 4354, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #15/2'},
486 1160: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB45', 'service': 8, 'param2': 4355, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #15/3'},
487 1161: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB46', 'service': 8, 'param2': 4609, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #16/1'},
488 1162: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB47', 'service': 8, 'param2': 4610, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #16/2'},
489 1163: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB48', 'service': 8, 'param2': 4611, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #16/3'},
490 1164: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB49', 'service': 8, 'param2': 4865, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #17/1'},
491 1165: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB50', 'service': 8, 'param2': 4866, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #17/2'},
492 1166: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB51', 'service': 8, 'param2': 4867, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #17/3'},
493 1167: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB52', 'service': 8, 'param2': 5121, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #18/1'},
494 1168: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB53', 'service': 8, 'param2': 5122, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #18/2'},
495 1169: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB54', 'service': 8, 'param2': 5123, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #18/3'},
496 1170: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB55', 'service': 8, 'param2': 5377, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #19/1'},
497 1171: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB56', 'service': 8, 'param2': 5378, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #19/2'},
498 1172: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB57', 'service': 8, 'param2': 5379, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #19/3'},
499 1173: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB58', 'service': 8, 'param2': 5633, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #20/1'},
500 1174: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB59', 'service': 8, 'param2': 5634, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #20/2'},
501 1175: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB60', 'service': 8, 'param2': 5635, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #20/3'},
502 1176: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB61', 'service': 8, 'param2': 5889, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #21/1'},
503 1177: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB62', 'service': 8, 'param2': 5890, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #21/2'},
504 1178: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB63', 'service': 8, 'param2': 5891, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #21/3'},
505 1179: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB64', 'service': 8, 'param2': 6145, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #22/1'},
506 1180: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB65', 'service': 8, 'param2': 6146, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #22/2'},
507 1181: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB66', 'service': 8, 'param2': 6147, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #22/3'},
508 1182: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB67', 'service': 8, 'param2': 6401, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #23/1'},
509 1183: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB68', 'service': 8, 'param2': 6402, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #23/2'},
510 1184: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB69', 'service': 8, 'param2': 6403, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #23/3'},
511 1185: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB70', 'service': 8, 'param2': 6657, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #24/1'},
512 1186: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB71', 'service': 8, 'param2': 6658, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #24/2'},
513 1187: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB72', 'service': 8, 'param2': 6659, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #24/3'},
514 1188: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB73', 'service': 8, 'param2': 6913, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #25/1'},
515 1189: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB74', 'service': 8, 'param2': 6914, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #25/2'},
516 1190: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ALAB75', 'service': 8, 'param2': 6915, 'subservice': 255, 'param1': 290, 'description': 'All ABs Rpt; #25/3'},
517 1191: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC001', 'service': 8, 'param2': 768, 'subservice': 255, 'param1': 316, 'description': 'All MC; AOCS; CW'},
518 1192: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC002', 'service': 8, 'param2': 769, 'subservice': 255, 'param1': 316, 'description': 'All MC; AOCS; MS01'},
519 1193: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC003', 'service': 8, 'param2': 770, 'subservice': 255, 'param1': 316, 'description': 'All MC; AOCS; MS02'},
520 1194: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC004', 'service': 8, 'param2': 771, 'subservice': 255, 'param1': 316, 'description': 'All MC; AOCS; MS03'},
521 1195: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC005', 'service': 8, 'param2': 772, 'subservice': 255, 'param1': 316, 'description': 'All MC; AOCS; MS04'},
522 1196: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC006', 'service': 8, 'param2': 1024, 'subservice': 255, 'param1': 316, 'description': 'All MC; MCPANT; CW'},
523 1197: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC007', 'service': 8, 'param2': 1025, 'subservice': 255, 'param1': 316, 'description': 'All MC; MCPANT; MS01'},
524 1198: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC008', 'service': 8, 'param2': 1026, 'subservice': 255, 'param1': 316, 'description': 'All MC; MCPANT; MS02'},
525 1199: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC009', 'service': 8, 'param2': 1027, 'subservice': 255, 'param1': 316, 'description': 'All MC; MCPANT; MS03'},
526 1200: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC010', 'service': 8, 'param2': 1028, 'subservice': 255, 'param1': 316, 'description': 'All MC; MCPANT; MS04'},
527 1201: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC011', 'service': 8, 'param2': 1029, 'subservice': 255, 'param1': 316, 'description': 'All MC; MCPANT; MS05'},
528 1202: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC012', 'service': 8, 'param2': 1030, 'subservice': 255, 'param1': 316, 'description': 'All MC; MCPANT; MS06'},
529 1203: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC013', 'service': 8, 'param2': 1031, 'subservice': 255, 'param1': 316, 'description': 'All MC; MCPANT; MS07'},
530 1204: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC014', 'service': 8, 'param2': 1032, 'subservice': 255, 'param1': 316, 'description': 'All MC; MCPANT; MS08'},
531 1205: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC015', 'service': 8, 'param2': 1033, 'subservice': 255, 'param1': 316, 'description': 'All MC; MCPANT; MS09'},
532 1206: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC016', 'service': 8, 'param2': 1034, 'subservice': 255, 'param1': 316, 'description': 'All MC; MCPANT; MS10'},
533 1207: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC017', 'service': 8, 'param2': 1035, 'subservice': 255, 'param1': 316, 'description': 'All MC; MCPANT; MS11'},
534 1208: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC018', 'service': 8, 'param2': 1036, 'subservice': 255, 'param1': 316, 'description': 'All MC; MCPANT; MS12'},
535 1209: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC019', 'service': 8, 'param2': 1037, 'subservice': 255, 'param1': 316, 'description': 'All MC; MCPANT; MS13'},
536 1210: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC020', 'service': 8, 'param2': 1038, 'subservice': 255, 'param1': 316, 'description': 'All MC; MCPANT; MS14'},
537 1211: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC021', 'service': 8, 'param2': 1039, 'subservice': 255, 'param1': 316, 'description': 'All MC; MCPANT; MS15'},
538 1212: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC022', 'service': 8, 'param2': 1040, 'subservice': 255, 'param1': 316, 'description': 'All MC; MCPANT; MS16'},
539 1213: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC023', 'service': 8, 'param2': 1041, 'subservice': 255, 'param1': 316, 'description': 'All MC; MCPANT; MS17'},
540 1214: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC024', 'service': 8, 'param2': 1042, 'subservice': 255, 'param1': 316, 'description': 'All MC; MCPANT; MS18'},
541 1215: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC025', 'service': 8, 'param2': 1043, 'subservice': 255, 'param1': 316, 'description': 'All MC; MCPANT; MS19'},
542 1216: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC026', 'service': 8, 'param2': 1044, 'subservice': 255, 'param1': 316, 'description': 'All MC; MCPANT; MS20'},
543 1217: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC027', 'service': 8, 'param2': 1045, 'subservice': 255, 'param1': 316, 'description': 'All MC; MCPANT; MS21'},
544 1218: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC028', 'service': 8, 'param2': 1046, 'subservice': 255, 'param1': 316, 'description': 'All MC; MCPANT; MS22'},
545 1219: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC029', 'service': 8, 'param2': 1047, 'subservice': 255, 'param1': 316, 'description': 'All MC; MCPANT; MS23'},
546 1220: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC030', 'service': 8, 'param2': 1048, 'subservice': 255, 'param1': 316, 'description': 'All MC; MCPANT; MS24'},
547 1221: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC031', 'service': 8, 'param2': 1049, 'subservice': 255, 'param1': 316, 'description': 'All MC; MCPANT; MS25'},
548 1222: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC032', 'service': 8, 'param2': 1050, 'subservice': 255, 'param1': 316, 'description': 'All MC; MCPANT; MS26'},
549 1223: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC033', 'service': 8, 'param2': 1051, 'subservice': 255, 'param1': 316, 'description': 'All MC; MCPANT; MS27'},
550 1224: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC034', 'service': 8, 'param2': 1052, 'subservice': 255, 'param1': 316, 'description': 'All MC; MCPANT; MS28'},
551 1225: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC035', 'service': 8, 'param2': 1053, 'subservice': 255, 'param1': 316, 'description': 'All MC; MCPANT; MS29'},
552 1226: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC036', 'service': 8, 'param2': 1054, 'subservice': 255, 'param1': 316, 'description': 'All MC; MCPANT; MS30'},
553 1227: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC037', 'service': 8, 'param2': 1280, 'subservice': 255, 'param1': 316, 'description': 'All MC; MCPTTC; CW'},
554 1228: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC038', 'service': 8, 'param2': 1281, 'subservice': 255, 'param1': 316, 'description': 'All MC; MCPTTC; MS01'},
555 1229: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC039', 'service': 8, 'param2': 1282, 'subservice': 255, 'param1': 316, 'description': 'All MC; MCPTTC; MS02'},
556 1230: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC040', 'service': 8, 'param2': 1283, 'subservice': 255, 'param1': 316, 'description': 'All MC; MCPTTC; MS03'},
557 1231: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC041', 'service': 8, 'param2': 1284, 'subservice': 255, 'param1': 316, 'description': 'All MC; MCPTTC; MS04'},
558 1232: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC042', 'service': 8, 'param2': 1285, 'subservice': 255, 'param1': 316, 'description': 'All MC; MCPTTC; MS05'},
559 1233: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC043', 'service': 8, 'param2': 1536, 'subservice': 255, 'param1': 316, 'description': 'All MC; SIDE; CW'},
560 1234: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC044', 'service': 8, 'param2': 1537, 'subservice': 255, 'param1': 316, 'description': 'All MC; SIDE; MS01'},
561 1235: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC045', 'service': 8, 'param2': 1538, 'subservice': 255, 'param1': 316, 'description': 'All MC; SIDE; MS02'},
562 1236: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC046', 'service': 8, 'param2': 1539, 'subservice': 255, 'param1': 316, 'description': 'All MC; SIDE; MS03'},
563 1237: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC047', 'service': 8, 'param2': 1540, 'subservice': 255, 'param1': 316, 'description': 'All MC; SIDE; MS04'},
564 1238: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC048', 'service': 8, 'param2': 1541, 'subservice': 255, 'param1': 316, 'description': 'All MC; SIDE; MS05'},
565 1239: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC049', 'service': 8, 'param2': 1542, 'subservice': 255, 'param1': 316, 'description': 'All MC; SIDE; MS06'},
566 1240: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC050', 'service': 8, 'param2': 1543, 'subservice': 255, 'param1': 316, 'description': 'All MC; SIDE; MS07'},
567 1241: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC051', 'service': 8, 'param2': 1792, 'subservice': 255, 'param1': 316, 'description': 'All MC; SEVIRI; CW'},
568 1242: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC052', 'service': 8, 'param2': 1793, 'subservice': 255, 'param1': 316, 'description': 'All MC; SEVIRI; MS01'},
569 1243: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC053', 'service': 8, 'param2': 1794, 'subservice': 255, 'param1': 316, 'description': 'All MC; SEVIRI; MS02'},
570 1244: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC054', 'service': 8, 'param2': 1795, 'subservice': 255, 'param1': 316, 'description': 'All MC; SEVIRI; MS03'},
571 1245: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC055', 'service': 8, 'param2': 1796, 'subservice': 255, 'param1': 316, 'description': 'All MC; SEVIRI; MS04'},
572 1246: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC056', 'service': 8, 'param2': 1797, 'subservice': 255, 'param1': 316, 'description': 'All MC; SEVIRI; MS05'},
573 1247: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC057', 'service': 8, 'param2': 1798, 'subservice': 255, 'param1': 316, 'description': 'All MC; SEVIRI; MS06'},
574 1248: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC058', 'service': 8, 'param2': 1799, 'subservice': 255, 'param1': 316, 'description': 'All MC; SEVIRI; MS07'},
575 1249: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC059', 'service': 8, 'param2': 1800, 'subservice': 255, 'param1': 316, 'description': 'All MC; SEVIRI; MS08'},
576 1250: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC060', 'service': 8, 'param2': 1801, 'subservice': 255, 'param1': 316, 'description': 'All MC; SEVIRI; MS09'},
577 1251: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC061', 'service': 8, 'param2': 1802, 'subservice': 255, 'param1': 316, 'description': 'All MC; SEVIRI; MS10'},
578 1252: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC062', 'service': 8, 'param2': 1803, 'subservice': 255, 'param1': 316, 'description': 'All MC; SEVIRI; MS11'},
579 1253: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC063', 'service': 8, 'param2': 1804, 'subservice': 255, 'param1': 316, 'description': 'All MC; SEVIRI; MS12'},
580 1254: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC064', 'service': 8, 'param2': 1805, 'subservice': 255, 'param1': 316, 'description': 'All MC; SEVIRI; MS13'},
581 1255: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC065', 'service': 8, 'param2': 1806, 'subservice': 255, 'param1': 316, 'description': 'All MC; SEVIRI; MS14'},
582 1256: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC066', 'service': 8, 'param2': 1807, 'subservice': 255, 'param1': 316, 'description': 'All MC; SEVIRI; MS15'},
583 1257: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC067', 'service': 8, 'param2': 1808, 'subservice': 255, 'param1': 316, 'description': 'All MC; SEVIRI; MS16'},
584 1258: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC068', 'service': 8, 'param2': 1809, 'subservice': 255, 'param1': 316, 'description': 'All MC; SEVIRI; MS17'},
585 1259: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC069', 'service': 8, 'param2': 1810, 'subservice': 255, 'param1': 316, 'description': 'All MC; SEVIRI; MS18'},
586 1260: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC070', 'service': 8, 'param2': 2048, 'subservice': 255, 'param1': 316, 'description': 'All MC; CDMU; CW'},
587 1261: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC071', 'service': 8, 'param2': 2049, 'subservice': 255, 'param1': 316, 'description': 'All MC; CDMU; MS01'},
588 1262: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC072', 'service': 8, 'param2': 2050, 'subservice': 255, 'param1': 316, 'description': 'All MC; CDMU; MS02'},
589 1263: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC073', 'service': 8, 'param2': 2051, 'subservice': 255, 'param1': 316, 'description': 'All MC; CDMU; MS03'},
590 1264: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC074', 'service': 8, 'param2': 2052, 'subservice': 255, 'param1': 316, 'description': 'All MC; CDMU; MS04'},
591 1265: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC075', 'service': 8, 'param2': 2053, 'subservice': 255, 'param1': 316, 'description': 'All MC; CDMU; MS05'},
592 1266: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC076', 'service': 8, 'param2': 2054, 'subservice': 255, 'param1': 316, 'description': 'All MC; CDMU; MS06'},
593 1267: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC077', 'service': 8, 'param2': 2055, 'subservice': 255, 'param1': 316, 'description': 'All MC; CDMU; MS07'},
594 1268: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC078', 'service': 8, 'param2': 2056, 'subservice': 255, 'param1': 316, 'description': 'All MC; CDMU; MS08'},
595 1269: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC079', 'service': 8, 'param2': 2304, 'subservice': 255, 'param1': 316, 'description': 'All MC; PLTH2; CW'},
596 1270: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC080', 'service': 8, 'param2': 2305, 'subservice': 255, 'param1': 316, 'description': 'All MC; PLTH2; MS01'},
597 1271: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC081', 'service': 8, 'param2': 2306, 'subservice': 255, 'param1': 316, 'description': 'All MC; PLTH2; MS02'},
598 1272: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC082', 'service': 8, 'param2': 2307, 'subservice': 255, 'param1': 316, 'description': 'All MC; PLTH2; MS03'},
599 1273: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC083', 'service': 8, 'param2': 2308, 'subservice': 255, 'param1': 316, 'description': 'All MC; PLTH2; MS04'},
600 1274: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC084', 'service': 8, 'param2': 2309, 'subservice': 255, 'param1': 316, 'description': 'All MC; PLTH2; MS05'},
601 1275: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC085', 'service': 8, 'param2': 2310, 'subservice': 255, 'param1': 316, 'description': 'All MC; PLTH2; MS06'},
602 1276: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC086', 'service': 8, 'param2': 2311, 'subservice': 255, 'param1': 316, 'description': 'All MC; PLTH2; MS07'},
603 1277: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC087', 'service': 8, 'param2': 2312, 'subservice': 255, 'param1': 316, 'description': 'All MC; PLTH2; MS08'},
604 1278: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC088', 'service': 8, 'param2': 2560, 'subservice': 255, 'param1': 316, 'description': 'All MC; CALU; CW'},
605 1279: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC089', 'service': 8, 'param2': 2561, 'subservice': 255, 'param1': 316, 'description': 'All MC; CALU; MS01'},
606 1280: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC090', 'service': 8, 'param2': 2562, 'subservice': 255, 'param1': 316, 'description': 'All MC; CALU; MS02'},
607 1281: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC091', 'service': 8, 'param2': 2563, 'subservice': 255, 'param1': 316, 'description': 'All MC; CALU; MS03'},
608 1282: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC092', 'service': 8, 'param2': 2564, 'subservice': 255, 'param1': 316, 'description': 'All MC; CALU; MS04'},
609 1283: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC093', 'service': 8, 'param2': 2565, 'subservice': 255, 'param1': 316, 'description': 'All MC; CALU; MS05'},
610 1284: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC094', 'service': 8, 'param2': 2566, 'subservice': 255, 'param1': 316, 'description': 'All MC; CALU; MS06'},
611 1285: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC095', 'service': 8, 'param2': 2567, 'subservice': 255, 'param1': 316, 'description': 'All MC; CALU; MS07'},
612 1286: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC096', 'service': 8, 'param2': 2568, 'subservice': 255, 'param1': 316, 'description': 'All MC; CALU; MS08'},
613 1287: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC097', 'service': 8, 'param2': 2816, 'subservice': 255, 'param1': 316, 'description': 'All MC; SPARE4; CW'},
614 1288: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC098', 'service': 8, 'param2': 2817, 'subservice': 255, 'param1': 316, 'description': 'All MC; SPARE4; MS01'},
615 1289: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC099', 'service': 8, 'param2': 2818, 'subservice': 255, 'param1': 316, 'description': 'All MC; SPARE4; MS02'},
616 1290: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC100', 'service': 8, 'param2': 2819, 'subservice': 255, 'param1': 316, 'description': 'All MC; SPARE4; MS03'},
617 1291: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC101', 'service': 8, 'param2': 2820, 'subservice': 255, 'param1': 316, 'description': 'All MC; SPARE4; MS04'},
618 1292: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC102', 'service': 8, 'param2': 2821, 'subservice': 255, 'param1': 316, 'description': 'All MC; SPARE4; MS05'},
619 1293: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC103', 'service': 8, 'param2': 2822, 'subservice': 255, 'param1': 316, 'description': 'All MC; SPARE4; MS06'},
620 1294: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC104', 'service': 8, 'param2': 2823, 'subservice': 255, 'param1': 316, 'description': 'All MC; SPARE4; MS07'},
621 1295: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC105', 'service': 8, 'param2': 2824, 'subservice': 255, 'param1': 316, 'description': 'All MC; SPARE4; MS08'},
622 1296: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC106', 'service': 8, 'param2': 3072, 'subservice': 255, 'param1': 316, 'description': 'All MC; RTI; CW'},
623 1297: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC107', 'service': 8, 'param2': 3073, 'subservice': 255, 'param1': 316, 'description': 'All MC; RTI; MS01'},
624 1298: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC108', 'service': 8, 'param2': 3074, 'subservice': 255, 'param1': 316, 'description': 'All MC; RTI; MS02'},
625 1299: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC109', 'service': 8, 'param2': 3075, 'subservice': 255, 'param1': 316, 'description': 'All MC; RTI; MS03'},
626 1300: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC110', 'service': 8, 'param2': 3076, 'subservice': 255, 'param1': 316, 'description': 'All MC; RTI; MS04'},
627 1301: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC111', 'service': 8, 'param2': 3077, 'subservice': 255, 'param1': 316, 'description': 'All MC; RTI; MS05'},
628 1302: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC112', 'service': 8, 'param2': 3078, 'subservice': 255, 'param1': 316, 'description': 'All MC; RTI; MS06'},
629 1303: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC113', 'service': 8, 'param2': 3079, 'subservice': 255, 'param1': 316, 'description': 'All MC; RTI; MS07'},
630 1304: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC114', 'service': 8, 'param2': 3328, 'subservice': 255, 'param1': 316, 'description': 'All MC; RTUMP; CW'},
631 1305: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC115', 'service': 8, 'param2': 3329, 'subservice': 255, 'param1': 316, 'description': 'All MC; RTUMP; MS01'},
632 1306: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC116', 'service': 8, 'param2': 3330, 'subservice': 255, 'param1': 316, 'description': 'All MC; RTUMP; MS02'},
633 1307: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC117', 'service': 8, 'param2': 3331, 'subservice': 255, 'param1': 316, 'description': 'All MC; RTUMP; MS03'},
634 1308: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC118', 'service': 8, 'param2': 3332, 'subservice': 255, 'param1': 316, 'description': 'All MC; RTUMP; MS04'},
635 1309: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC119', 'service': 8, 'param2': 3333, 'subservice': 255, 'param1': 316, 'description': 'All MC; RTUMP; MS05'},
636 1310: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC120', 'service': 8, 'param2': 3334, 'subservice': 255, 'param1': 316, 'description': 'All MC; RTUMP; MS06'},
637 1311: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC121', 'service': 8, 'param2': 3335, 'subservice': 255, 'param1': 316, 'description': 'All MC; RTUMP; MS07'},
638 1312: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC122', 'service': 8, 'param2': 3336, 'subservice': 255, 'param1': 316, 'description': 'All MC; RTUMP; MS08'},
639 1313: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC123', 'service': 8, 'param2': 3337, 'subservice': 255, 'param1': 316, 'description': 'All MC; RTUMP; MS09'},
640 1314: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC124', 'service': 8, 'param2': 3584, 'subservice': 255, 'param1': 316, 'description': 'All MC; RTUUP; CW'},
641 1315: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC125', 'service': 8, 'param2': 3585, 'subservice': 255, 'param1': 316, 'description': 'All MC; RTUUP; MS01'},
642 1316: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC126', 'service': 8, 'param2': 3586, 'subservice': 255, 'param1': 316, 'description': 'All MC; RTUUP; MS02'},
643 1317: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC127', 'service': 8, 'param2': 3587, 'subservice': 255, 'param1': 316, 'description': 'All MC; RTUUP; MS03'},
644 1318: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC128', 'service': 8, 'param2': 3588, 'subservice': 255, 'param1': 316, 'description': 'All MC; RTUUP; MS04'},
645 1319: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC129', 'service': 8, 'param2': 3589, 'subservice': 255, 'param1': 316, 'description': 'All MC; RTUUP; MS05'},
646 1320: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC130', 'service': 8, 'param2': 3590, 'subservice': 255, 'param1': 316, 'description': 'All MC; RTUUP; MS06'},
647 1321: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC131', 'service': 8, 'param2': 3591, 'subservice': 255, 'param1': 316, 'description': 'All MC; RTUUP; MS07'},
648 1322: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC132', 'service': 8, 'param2': 3592, 'subservice': 255, 'param1': 316, 'description': 'All MC; RTUUP; MS08'},
649 1323: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC133', 'service': 8, 'param2': 3593, 'subservice': 255, 'param1': 316, 'description': 'All MC; RTUUP; MS09'},
650 1324: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC134', 'service': 8, 'param2': 0, 'subservice': 255, 'param1': 316, 'description': 'All MC; SPIN_ALARM; '},
651 1325: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC135', 'service': 8, 'param2': 256, 'subservice': 255, 'param1': 316, 'description': 'All MC; HG_ALARM; CW'},
652 1326: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC136', 'service': 8, 'param2': 512, 'subservice': 255, 'param1': 316, 'description': 'All MC; SYNC_ALARM; '},
653 1327: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC137', 'service': 8, 'param2': 3840, 'subservice': 255, 'param1': 316, 'description': 'All MC; DNEL; CW'},
654 1328: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC138', 'service': 8, 'param2': 3841, 'subservice': 255, 'param1': 316, 'description': 'All MC; DNEL; MS01'},
655 1329: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC139', 'service': 8, 'param2': 3842, 'subservice': 255, 'param1': 316, 'description': 'All MC; DNEL; MS02'},
656 1330: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC140', 'service': 8, 'param2': 3843, 'subservice': 255, 'param1': 316, 'description': 'All MC; DNEL; MS03'},
657 1331: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC141', 'service': 8, 'param2': 3844, 'subservice': 255, 'param1': 316, 'description': 'All MC; DNEL; MS04'},
658 1332: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC142', 'service': 8, 'param2': 3845, 'subservice': 255, 'param1': 316, 'description': 'All MC; DNEL; MS05'},
659 1333: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC143', 'service': 8, 'param2': 3846, 'subservice': 255, 'param1': 316, 'description': 'All MC; DNEL; MS06'},
660 1334: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC144', 'service': 8, 'param2': 3847, 'subservice': 255, 'param1': 316, 'description': 'All MC; DNEL; MS07'},
661 1335: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC145', 'service': 8, 'param2': 3848, 'subservice': 255, 'param1': 316, 'description': 'All MC; DNEL; MS08'},
662 1336: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC146', 'service': 8, 'param2': 4096, 'subservice': 255, 'param1': 316, 'description': 'All MC; PLTH; CW'},
663 1337: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC147', 'service': 8, 'param2': 4097, 'subservice': 255, 'param1': 316, 'description': 'All MC; PLTH; MS01'},
664 1338: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC148', 'service': 8, 'param2': 4098, 'subservice': 255, 'param1': 316, 'description': 'All MC; PLTH; MS02'},
665 1339: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC149', 'service': 8, 'param2': 4099, 'subservice': 255, 'param1': 316, 'description': 'All MC; PLTH; MS03'},
666 1340: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC150', 'service': 8, 'param2': 4100, 'subservice': 255, 'param1': 316, 'description': 'All MC; PLTH; MS04'},
667 1341: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC151', 'service': 8, 'param2': 4101, 'subservice': 255, 'param1': 316, 'description': 'All MC; PLTH; MS05'},
668 1342: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC152', 'service': 8, 'param2': 4102, 'subservice': 255, 'param1': 316, 'description': 'All MC; PLTH; MS06'},
669 1343: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC153', 'service': 8, 'param2': 4103, 'subservice': 255, 'param1': 316, 'description': 'All MC; PLTH; MS07'},
670 1344: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC154', 'service': 8, 'param2': 4104, 'subservice': 255, 'param1': 316, 'description': 'All MC; PLTH; MS08'},
671 1345: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC155', 'service': 8, 'param2': 4105, 'subservice': 255, 'param1': 316, 'description': 'All MC; PLTH; MS09'},
672 1346: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC156', 'service': 8, 'param2': 4106, 'subservice': 255, 'param1': 316, 'description': 'All MC; PLTH; MS10'},
673 1347: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC157', 'service': 8, 'param2': 4107, 'subservice': 255, 'param1': 316, 'description': 'All MC; PLTH; MS11'},
674 1348: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC158', 'service': 8, 'param2': 4108, 'subservice': 255, 'param1': 316, 'description': 'All MC; PLTH; MS12'},
675 1349: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC159', 'service': 8, 'param2': 4109, 'subservice': 255, 'param1': 316, 'description': 'All MC; PLTH; MS13'},
676 1350: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC160', 'service': 8, 'param2': 4110, 'subservice': 255, 'param1': 316, 'description': 'All MC; PLTH; MS14'},
677 1351: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC161', 'service': 8, 'param2': 4111, 'subservice': 255, 'param1': 316, 'description': 'All MC; PLTH; MS15'},
678 1352: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC162', 'service': 8, 'param2': 4352, 'subservice': 255, 'param1': 316, 'description': 'All MC; DECA; CW'},
679 1353: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC163', 'service': 8, 'param2': 4353, 'subservice': 255, 'param1': 316, 'description': 'All MC; DECA; MS01'},
680 1354: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC164', 'service': 8, 'param2': 4354, 'subservice': 255, 'param1': 316, 'description': 'All MC; DECA; MS02'},
681 1355: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC165', 'service': 8, 'param2': 4355, 'subservice': 255, 'param1': 316, 'description': 'All MC; DECA; MS03'},
682 1356: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC166', 'service': 8, 'param2': 4356, 'subservice': 255, 'param1': 316, 'description': 'All MC; DECA; MS04'},
683 1357: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC167', 'service': 8, 'param2': 4608, 'subservice': 255, 'param1': 316, 'description': 'All MC; DECB; CW'},
684 1358: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC168', 'service': 8, 'param2': 4609, 'subservice': 255, 'param1': 316, 'description': 'All MC; DECB; MS01'},
685 1359: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC169', 'service': 8, 'param2': 4610, 'subservice': 255, 'param1': 316, 'description': 'All MC; DECB; MS02'},
686 1360: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC170', 'service': 8, 'param2': 4611, 'subservice': 255, 'param1': 316, 'description': 'All MC; DECB; MS03'},
687 1361: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC171', 'service': 8, 'param2': 4612, 'subservice': 255, 'param1': 316, 'description': 'All MC; DECB; MS04'},
688 1362: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC172', 'service': 8, 'param2': 4864, 'subservice': 255, 'param1': 316, 'description': 'All MC; SPARE8; CW'},
689 1363: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC173', 'service': 8, 'param2': 4865, 'subservice': 255, 'param1': 316, 'description': 'All MC; SPARE8; MS01'},
690 1364: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC174', 'service': 8, 'param2': 4866, 'subservice': 255, 'param1': 316, 'description': 'All MC; SPARE8; MS02'},
691 1365: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC175', 'service': 8, 'param2': 4867, 'subservice': 255, 'param1': 316, 'description': 'All MC; SPARE8; MS03'},
692 1366: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC176', 'service': 8, 'param2': 4868, 'subservice': 255, 'param1': 316, 'description': 'All MC; SPARE8; MS04'},
693 1367: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC177', 'service': 8, 'param2': 4869, 'subservice': 255, 'param1': 316, 'description': 'All MC; SPARE8; MS05'},
694 1368: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC178', 'service': 8, 'param2': 4870, 'subservice': 255, 'param1': 316, 'description': 'All MC; SPARE8; MS06'},
695 1369: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC179', 'service': 8, 'param2': 4871, 'subservice': 255, 'param1': 316, 'description': 'All MC; SPARE8; MS07'},
696 1370: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC180', 'service': 8, 'param2': 4872, 'subservice': 255, 'param1': 316, 'description': 'All MC; SPARE8; MS08'},
697 1371: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC181', 'service': 8, 'param2': 5120, 'subservice': 255, 'param1': 316, 'description': 'All MC; SPARE9; CW'},
698 1372: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC182', 'service': 8, 'param2': 5121, 'subservice': 255, 'param1': 316, 'description': 'All MC; SPARE9; MS01'},
699 1373: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC183', 'service': 8, 'param2': 5122, 'subservice': 255, 'param1': 316, 'description': 'All MC; SPARE9; MS02'},
700 1374: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC184', 'service': 8, 'param2': 5123, 'subservice': 255, 'param1': 316, 'description': 'All MC; SPARE9; MS03'},
701 1375: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC185', 'service': 8, 'param2': 5124, 'subservice': 255, 'param1': 316, 'description': 'All MC; SPARE9; MS04'},
702 1376: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC186', 'service': 8, 'param2': 5125, 'subservice': 255, 'param1': 316, 'description': 'All MC; SPARE9; MS05'},
703 1377: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC187', 'service': 8, 'param2': 5126, 'subservice': 255, 'param1': 316, 'description': 'All MC; SPARE9; MS06'},
704 1378: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC188', 'service': 8, 'param2': 5127, 'subservice': 255, 'param1': 316, 'description': 'All MC; SPARE9; MS07'},
705 1379: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC189', 'service': 8, 'param2': 5128, 'subservice': 255, 'param1': 316, 'description': 'All MC; SPARE9; MS08'},
706 1380: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC190', 'service': 8, 'param2': 5376, 'subservice': 255, 'param1': 316, 'description': 'All MC; SPARE10;CW'},
707 1381: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC191', 'service': 8, 'param2': 5377, 'subservice': 255, 'param1': 316, 'description': 'All MC;SPARE10; MS01'},
708 1382: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC192', 'service': 8, 'param2': 5378, 'subservice': 255, 'param1': 316, 'description': 'All MC;SPARE10; MS02'},
709 1383: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC193', 'service': 8, 'param2': 5379, 'subservice': 255, 'param1': 316, 'description': 'All MC;SPARE10; MS03'},
710 1384: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC194', 'service': 8, 'param2': 5380, 'subservice': 255, 'param1': 316, 'description': 'All MC;SPARE10; MS04'},
711 1385: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC195', 'service': 8, 'param2': 5381, 'subservice': 255, 'param1': 316, 'description': 'All MC;SPARE10; MS05'},
712 1386: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC196', 'service': 8, 'param2': 5382, 'subservice': 255, 'param1': 316, 'description': 'All MC;SPARE10; MS06'},
713 1387: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC197', 'service': 8, 'param2': 5383, 'subservice': 255, 'param1': 316, 'description': 'All MC;SPARE10; MS07'},
714 1388: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'AMC198', 'service': 8, 'param2': 5384, 'subservice': 255, 'param1': 316, 'description': 'All MC;SPARE10; MS08'},
715 1389: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ARITER_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 133, 'description': 'BOA ARITHMETIC ERROR'},
716 1390: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ARITH_ER', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 133, 'description': 'ARITHMETIC ERROR'},
717 1391: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ASWLV0_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 131, 'description': 'BOA ASW LEVEL0 ERR'},
718 1392: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ASWLVL0', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 131, 'description': 'ASW LEVEL0 ERROR'},
719 1393: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ASWSCH_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 135, 'description': 'BOA SCHEDULING ERROR'},
720 1394: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ASWSCHER', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 135, 'description': 'SCHEDULING ERROR'},
721 1395: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ASWSTA_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 130, 'description': 'BOA ASW START UP'},
722 1396: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'ASWSTART', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 130, 'description': 'ASW START UP'},
723 1397: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'BOARPT', 'service': 15, 'param2': None, 'subservice': 8, 'param1': None, 'description': 'BOA Contents Rpt'},
724 1398: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'BSWSVC_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 132, 'description': 'BOA BSW SERVICE ERR'},
725 1399: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'BSWSVCER', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 132, 'description': 'BSW SERVICE ERROR'},
726 1400: {'apid': 131, 'scanrate': None, 'snack-length': None, 'name': 'CDMU_CMD', 'service': 5, 'param2': None, 'subservice': 1, 'param1': 4, 'description': 'MRF CMDU COMMAND'},
727 1401: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'CPU_BIT', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 1, 'description': 'CPU BIT ERROR'},
728 1402: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'CPUBIT_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 1, 'description': 'BOA CPU BIT ERROR'},
729 1403: {'apid': 131, 'scanrate': None, 'snack-length': None, 'name': 'CRM_CMD', 'service': 5, 'param2': None, 'subservice': 1, 'param1': 2, 'description': 'MRF CRM COMMAND'},
730 1404: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'CSMREA_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 129, 'description': 'BOA CSM TRNSF RD ERR'},
731 1405: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'CSMREAER', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 129, 'description': 'CSM TRANSF RD ERROR'},
732 1406: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'CSMTEST', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 134, 'description': 'CSM TEST ERROR'},
733 1407: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'CSMTST_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 134, 'description': 'BOA CSM TEST ERROR'},
734 1408: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'CSMWRI_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 128, 'description': 'BOA CSM TRNSF WR ERR'},
735 1409: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'CSMWRIER', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 128, 'description': 'CSM TRANSF WR ERROR'},
736 1410: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'DGPRPT', 'service': 3, 'param2': None, 'subservice': 12, 'param1': None, 'description': 'Diag Parms Def Rpt'},
737 1411: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'DIAG', 'service': 3, 'param2': None, 'subservice': 26, 'param1': 1, 'description': 'Diagnostic Rpt'},
738 1412: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'DNEL_DET', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 104, 'description': 'DNEL DETECTION'},
739 1413: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'DNEL_EVT', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 105, 'description': 'DNEL EVENT'},
740 1414: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'DNEL00', 'service': 8, 'param2': 0, 'subservice': 255, 'param1': 339, 'description': 'DNEL Parms; CW'},
741 1415: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'DNEL01', 'service': 8, 'param2': 1, 'subservice': 255, 'param1': 339, 'description': 'DNEL Parms; MARK01'},
742 1416: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'DNEL02', 'service': 8, 'param2': 2, 'subservice': 255, 'param1': 339, 'description': 'DNEL Parms Rpt; MARK'},
743 1417: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'DNEL03', 'service': 8, 'param2': 3, 'subservice': 255, 'param1': 339, 'description': 'DNEL Parms Rpt; MARK'},
744 1418: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'DNEL04', 'service': 8, 'param2': 4, 'subservice': 255, 'param1': 339, 'description': 'DNEL Parms Rpt; MARK'},
745 1419: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'DNEL05', 'service': 8, 'param2': 5, 'subservice': 255, 'param1': 339, 'description': 'DNEL Parms Rpt; MARK'},
746 1420: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'DNEL06', 'service': 8, 'param2': 6, 'subservice': 255, 'param1': 339, 'description': 'DNEL Parms Rpt; MARK'},
747 1421: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'DNEL07', 'service': 8, 'param2': 7, 'subservice': 255, 'param1': 339, 'description': 'DNEL Parms Rpt; MARK'},
748 1422: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'DNEL08', 'service': 8, 'param2': 8, 'subservice': 255, 'param1': 339, 'description': 'DNEL Parms Rpt; MARK'},
749 1423: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'DNEL09', 'service': 8, 'param2': 9, 'subservice': 255, 'param1': 339, 'description': 'DNEL Parms Rpt; MARK'},
750 1424: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'DNEL10', 'service': 8, 'param2': 10, 'subservice': 255, 'param1': 339, 'description': 'DNEL Parms Rpt; MARK'},
751 1425: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'DNEL11', 'service': 8, 'param2': 11, 'subservice': 255, 'param1': 339, 'description': 'DNEL Parms Rpt; MARK'},
752 1426: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'DNEL12', 'service': 8, 'param2': 12, 'subservice': 255, 'param1': 339, 'description': 'DNEL Parms Rpt; MARK'},
753 1427: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'DNEL13', 'service': 8, 'param2': 13, 'subservice': 255, 'param1': 339, 'description': 'DNEL Parms Rpt; MARK'},
754 1428: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'DNEL14', 'service': 8, 'param2': 14, 'subservice': 255, 'param1': 339, 'description': 'DNEL Parms Rpt; MARK'},
755 1429: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'DNEL15', 'service': 8, 'param2': 15, 'subservice': 255, 'param1': 339, 'description': 'DNEL Parms Rpt; MARK'},
756 1430: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'DNEL16', 'service': 8, 'param2': 16, 'subservice': 255, 'param1': 339, 'description': 'DNEL Parms Rpt; MARK'},
757 1431: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'DNELDE_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 104, 'description': 'BOA DNEL DETECTION'},
758 1432: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'DNELEV_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 105, 'description': 'BOA DNEL EVENT'},
759 1433: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'EDAC_CHK', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 2, 'description': 'EDAC CHECK ERROR'},
760 1434: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'EDACHK_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 2, 'description': 'BOA EDAC CHECK ERR'},
761 1435: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'EXFAIL', 'service': 1, 'param2': None, 'subservice': 8, 'param1': None, 'description': 'Exec Failure Rpt'},
762 1436: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'EXSUCC', 'service': 1, 'param2': None, 'subservice': 7, 'param1': None, 'description': 'Exec Success Rpt'},
763 1437: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'FFERR1_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 144, 'description': 'BOA CDMU ERROR'},
764 1438: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'FFERR2_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 145, 'description': 'BOA PLTH2 ERROR'},
765 1439: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'FFERR3_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 146, 'description': 'BOA SPARE3 ERROR'},
766 1440: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'FFERROR1', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 144, 'description': 'CDMU ERROR'},
767 1441: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'FFERROR2', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 145, 'description': 'PLTH2 ERROR'},
768 1442: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'FFERROR3', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 146, 'description': 'SPARE3 ERROR'},
769 1443: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'GERB_EOP', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 17, 'description': 'GERB EOP'},
770 1444: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'GERBEO_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 17, 'description': 'BOA GERB EOP'},
771 1445: {'apid': 131, 'scanrate': None, 'snack-length': None, 'name': 'HPC2P_CD', 'service': 5, 'param2': None, 'subservice': 1, 'param1': 3, 'description': 'MRF HPC2-P COMMAND'},
772 1446: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'IMPF_FD0', 'service': 160, 'param2': None, 'subservice': 0, 'param1': None, 'description': 'StarObservation'},
773 1447: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'IMPF_FD1', 'service': 160, 'param2': None, 'subservice': 1, 'param1': None, 'description': 'LandmarkObservation'},
774 1448: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'IMPF_FD2', 'service': 160, 'param2': None, 'subservice': 2, 'param1': None, 'description': 'HorizonObservation'},
775 1449: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC_ERR_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 103, 'description': 'BOA MC ERROR'},
776 1450: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC_ERROR', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 103, 'description': 'MC ERROR'},
777 1451: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0100', 'service': 8, 'param2': 768, 'subservice': 255, 'param1': 320, 'description': 'MC_AOCS (01); CW'},
778 1452: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0101', 'service': 8, 'param2': 769, 'subservice': 255, 'param1': 320, 'description': 'MC_AOCS (01); MS01'},
779 1453: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0102', 'service': 8, 'param2': 770, 'subservice': 255, 'param1': 320, 'description': 'MC_AOCS (01); MS02'},
780 1454: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0103', 'service': 8, 'param2': 771, 'subservice': 255, 'param1': 320, 'description': 'MC_AOCS (01); MS03'},
781 1455: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0104', 'service': 8, 'param2': 772, 'subservice': 255, 'param1': 320, 'description': 'MC_AOCS (01); MS04'},
782 1456: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0200', 'service': 8, 'param2': 1024, 'subservice': 255, 'param1': 321, 'description': 'MC_MCPANT (02); CW'},
783 1457: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0201', 'service': 8, 'param2': 1025, 'subservice': 255, 'param1': 321, 'description': 'MC_MCPANT (02); MS01'},
784 1458: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0202', 'service': 8, 'param2': 1026, 'subservice': 255, 'param1': 321, 'description': 'MC_MCPANT (02); MS02'},
785 1459: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0203', 'service': 8, 'param2': 1027, 'subservice': 255, 'param1': 321, 'description': 'MC_MCPANT (02); MS03'},
786 1460: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0204', 'service': 8, 'param2': 1028, 'subservice': 255, 'param1': 321, 'description': 'MC_MCPANT (02); MS04'},
787 1461: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0205', 'service': 8, 'param2': 1029, 'subservice': 255, 'param1': 321, 'description': 'MC_MCPANT (02); MS05'},
788 1462: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0206', 'service': 8, 'param2': 1030, 'subservice': 255, 'param1': 321, 'description': 'MC_MCPANT (02); MS06'},
789 1463: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0207', 'service': 8, 'param2': 1031, 'subservice': 255, 'param1': 321, 'description': 'MC_MCPANT (02); MS07'},
790 1464: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0208', 'service': 8, 'param2': 1032, 'subservice': 255, 'param1': 321, 'description': 'MC_MCPANT (02); MS08'},
791 1465: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0209', 'service': 8, 'param2': 1033, 'subservice': 255, 'param1': 321, 'description': 'MC_MCPANT (02); MS09'},
792 1466: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0210', 'service': 8, 'param2': 1034, 'subservice': 255, 'param1': 321, 'description': 'MC_MCPANT (02); MS10'},
793 1467: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0211', 'service': 8, 'param2': 1035, 'subservice': 255, 'param1': 321, 'description': 'MC_MCPANT (02); MS11'},
794 1468: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0212', 'service': 8, 'param2': 1036, 'subservice': 255, 'param1': 321, 'description': 'MC_MCPANT (02); MS12'},
795 1469: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0213', 'service': 8, 'param2': 1037, 'subservice': 255, 'param1': 321, 'description': 'MC_MCPANT (02); MS13'},
796 1470: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0214', 'service': 8, 'param2': 1038, 'subservice': 255, 'param1': 321, 'description': 'MC_MCPANT (02); MS14'},
797 1471: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0215', 'service': 8, 'param2': 1039, 'subservice': 255, 'param1': 321, 'description': 'MC_MCPANT (02); MS15'},
798 1472: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0216', 'service': 8, 'param2': 1040, 'subservice': 255, 'param1': 321, 'description': 'MC_MCPANT (02); MS16'},
799 1473: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0217', 'service': 8, 'param2': 1041, 'subservice': 255, 'param1': 321, 'description': 'MC_MCPANT (02); MS17'},
800 1474: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0218', 'service': 8, 'param2': 1042, 'subservice': 255, 'param1': 321, 'description': 'MC_MCPANT (02); MS18'},
801 1475: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0219', 'service': 8, 'param2': 1043, 'subservice': 255, 'param1': 321, 'description': 'MC_MCPANT (02); MS19'},
802 1476: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0220', 'service': 8, 'param2': 1044, 'subservice': 255, 'param1': 321, 'description': 'MC_MCPANT (02); MS20'},
803 1477: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0221', 'service': 8, 'param2': 1045, 'subservice': 255, 'param1': 321, 'description': 'MC_MCPANT (02); MS21'},
804 1478: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0222', 'service': 8, 'param2': 1046, 'subservice': 255, 'param1': 321, 'description': 'MC_MCPANT (02); MS22'},
805 1479: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0223', 'service': 8, 'param2': 1047, 'subservice': 255, 'param1': 321, 'description': 'MC_MCPANT (02); MS23'},
806 1480: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0224', 'service': 8, 'param2': 1048, 'subservice': 255, 'param1': 321, 'description': 'MC_MCPANT (02); MS24'},
807 1481: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0225', 'service': 8, 'param2': 1049, 'subservice': 255, 'param1': 321, 'description': 'MC_MCPANT (02); MS25'},
808 1482: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0226', 'service': 8, 'param2': 1050, 'subservice': 255, 'param1': 321, 'description': 'MC_MCPANT (02); MS26'},
809 1483: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0227', 'service': 8, 'param2': 1051, 'subservice': 255, 'param1': 321, 'description': 'MC_MCPANT (02); MS27'},
810 1484: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0228', 'service': 8, 'param2': 1052, 'subservice': 255, 'param1': 321, 'description': 'MC_MCPANT (02); MS28'},
811 1485: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0229', 'service': 8, 'param2': 1053, 'subservice': 255, 'param1': 321, 'description': 'MC_MCPANT (02); MS29'},
812 1486: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0230', 'service': 8, 'param2': 1054, 'subservice': 255, 'param1': 321, 'description': 'MC_MCPANT (02); MS30'},
813 1487: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0300', 'service': 8, 'param2': 1280, 'subservice': 255, 'param1': 322, 'description': 'MC_MCPTTC (03); CW'},
814 1488: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0301', 'service': 8, 'param2': 1281, 'subservice': 255, 'param1': 322, 'description': 'MC_MCPTTC (03); MS01'},
815 1489: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0302', 'service': 8, 'param2': 1282, 'subservice': 255, 'param1': 322, 'description': 'MC_MCPTTC (03); MS02'},
816 1490: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0303', 'service': 8, 'param2': 1283, 'subservice': 255, 'param1': 322, 'description': 'MC_MCPTTC (03); MS03'},
817 1491: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0304', 'service': 8, 'param2': 1284, 'subservice': 255, 'param1': 322, 'description': 'MC_MCPTTC (03); MS04'},
818 1492: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0305', 'service': 8, 'param2': 1285, 'subservice': 255, 'param1': 322, 'description': 'MC_MCPTTC (03); MS05'},
819 1493: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0400', 'service': 8, 'param2': 1536, 'subservice': 255, 'param1': 323, 'description': 'MC_SIDE (04); CW'},
820 1494: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0401', 'service': 8, 'param2': 1537, 'subservice': 255, 'param1': 323, 'description': 'MC_SIDE (04); MS01'},
821 1495: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0402', 'service': 8, 'param2': 1538, 'subservice': 255, 'param1': 323, 'description': 'MC_SIDE (04); MS02'},
822 1496: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0403', 'service': 8, 'param2': 1539, 'subservice': 255, 'param1': 323, 'description': 'MC_SIDE (04); MS03'},
823 1497: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0404', 'service': 8, 'param2': 1540, 'subservice': 255, 'param1': 323, 'description': 'MC_SIDE (04); MS04'},
824 1498: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0405', 'service': 8, 'param2': 1541, 'subservice': 255, 'param1': 323, 'description': 'MC_SIDE (04); MS05'},
825 1499: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0406', 'service': 8, 'param2': 1542, 'subservice': 255, 'param1': 323, 'description': 'MC_SIDE (04); MS06'},
826 1500: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0407', 'service': 8, 'param2': 1543, 'subservice': 255, 'param1': 323, 'description': 'MC_SIDE (04); MS07'},
827 1501: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0500', 'service': 8, 'param2': 1792, 'subservice': 255, 'param1': 324, 'description': 'MC_SEVIRI (05); CW'},
828 1502: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0501', 'service': 8, 'param2': 1793, 'subservice': 255, 'param1': 324, 'description': 'MC_SEVIRI (05); MS01'},
829 1503: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0502', 'service': 8, 'param2': 1794, 'subservice': 255, 'param1': 324, 'description': 'MC_SEVIRI (05); MS02'},
830 1504: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0503', 'service': 8, 'param2': 1795, 'subservice': 255, 'param1': 324, 'description': 'MC_SEVIRI (05); MS03'},
831 1505: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0504', 'service': 8, 'param2': 1796, 'subservice': 255, 'param1': 324, 'description': 'MC_SEVIRI (05); MS04'},
832 1506: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0505', 'service': 8, 'param2': 1797, 'subservice': 255, 'param1': 324, 'description': 'MC_SEVIRI (05); MS05'},
833 1507: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0506', 'service': 8, 'param2': 1798, 'subservice': 255, 'param1': 324, 'description': 'MC_SEVIRI (05); MS06'},
834 1508: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0507', 'service': 8, 'param2': 1799, 'subservice': 255, 'param1': 324, 'description': 'MC_SEVIRI (05); MS07'},
835 1509: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0508', 'service': 8, 'param2': 1800, 'subservice': 255, 'param1': 324, 'description': 'MC_SEVIRI (05); MS08'},
836 1510: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0509', 'service': 8, 'param2': 1801, 'subservice': 255, 'param1': 324, 'description': 'MC_SEVIRI (05); MS09'},
837 1511: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0510', 'service': 8, 'param2': 1802, 'subservice': 255, 'param1': 324, 'description': 'MC_SEVIRI (05); MS10'},
838 1512: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0511', 'service': 8, 'param2': 1803, 'subservice': 255, 'param1': 324, 'description': 'MC_SEVIRI (05); MS11'},
839 1513: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0512', 'service': 8, 'param2': 1804, 'subservice': 255, 'param1': 324, 'description': 'MC_SEVIRI (05); MS12'},
840 1514: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0513', 'service': 8, 'param2': 1805, 'subservice': 255, 'param1': 324, 'description': 'MC_SEVIRI (05); MS13'},
841 1515: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0514', 'service': 8, 'param2': 1806, 'subservice': 255, 'param1': 324, 'description': 'MC_SEVIRI (05); MS14'},
842 1516: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0515', 'service': 8, 'param2': 1807, 'subservice': 255, 'param1': 324, 'description': 'MC_SEVIRI (05); MS15'},
843 1517: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0516', 'service': 8, 'param2': 1808, 'subservice': 255, 'param1': 324, 'description': 'MC_SEVIRI (05); MS16'},
844 1518: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0517', 'service': 8, 'param2': 1809, 'subservice': 255, 'param1': 324, 'description': 'MC_SEVIRI (05); MS17'},
845 1519: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0518', 'service': 8, 'param2': 1810, 'subservice': 255, 'param1': 324, 'description': 'MC_SEVIRI (05); MS18'},
846 1520: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0600', 'service': 8, 'param2': 2048, 'subservice': 255, 'param1': 325, 'description': 'MC_CDMU (06); CW'},
847 1521: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0601', 'service': 8, 'param2': 2049, 'subservice': 255, 'param1': 325, 'description': 'MC_CDMU (06); MS01'},
848 1522: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0602', 'service': 8, 'param2': 2050, 'subservice': 255, 'param1': 325, 'description': 'MC_CDMU (06); MS02'},
849 1523: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0603', 'service': 8, 'param2': 2051, 'subservice': 255, 'param1': 325, 'description': 'MC_CDMU (06); MS03'},
850 1524: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0604', 'service': 8, 'param2': 2052, 'subservice': 255, 'param1': 325, 'description': 'MC_CDMU (06); MS04'},
851 1525: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0605', 'service': 8, 'param2': 2053, 'subservice': 255, 'param1': 325, 'description': 'MC_CDMU (06); MS05'},
852 1526: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0606', 'service': 8, 'param2': 2054, 'subservice': 255, 'param1': 325, 'description': 'MC_CDMU (06); MS06'},
853 1527: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0607', 'service': 8, 'param2': 2055, 'subservice': 255, 'param1': 325, 'description': 'MC_CDMU (06); MS07'},
854 1528: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0608', 'service': 8, 'param2': 2056, 'subservice': 255, 'param1': 325, 'description': 'MC_CDMU (06); MS08'},
855 1529: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0700', 'service': 8, 'param2': 2304, 'subservice': 255, 'param1': 326, 'description': 'MC_PLTH2 (07); CW'},
856 1530: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0701', 'service': 8, 'param2': 2305, 'subservice': 255, 'param1': 326, 'description': 'MC_PLTH2 (07); MS01'},
857 1531: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0702', 'service': 8, 'param2': 2306, 'subservice': 255, 'param1': 326, 'description': 'MC_PLTH2 (07); MS02'},
858 1532: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0703', 'service': 8, 'param2': 2307, 'subservice': 255, 'param1': 326, 'description': 'MC_PLTH2 (07); MS03'},
859 1533: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0704', 'service': 8, 'param2': 2308, 'subservice': 255, 'param1': 326, 'description': 'MC_PLTH2 (07); MS04'},
860 1534: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0705', 'service': 8, 'param2': 2309, 'subservice': 255, 'param1': 326, 'description': 'MC_PLTH2 (07); MS05'},
861 1535: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0706', 'service': 8, 'param2': 2310, 'subservice': 255, 'param1': 326, 'description': 'MC_PLTH2 (07); MS06'},
862 1536: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0707', 'service': 8, 'param2': 2311, 'subservice': 255, 'param1': 326, 'description': 'MC_PLTH2 (07); MS07'},
863 1537: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0708', 'service': 8, 'param2': 2312, 'subservice': 255, 'param1': 326, 'description': 'MC_PLTH2 (07); MS08'},
864 1538: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0800', 'service': 8, 'param2': 2560, 'subservice': 255, 'param1': 327, 'description': 'MC_CALU (08); CW'},
865 1539: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0801', 'service': 8, 'param2': 2561, 'subservice': 255, 'param1': 327, 'description': 'MC_CALU (08); MS01'},
866 1540: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0802', 'service': 8, 'param2': 2562, 'subservice': 255, 'param1': 327, 'description': 'MC_CALU (08); MS02'},
867 1541: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0803', 'service': 8, 'param2': 2563, 'subservice': 255, 'param1': 327, 'description': 'MC_CALU (08); MS03'},
868 1542: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0804', 'service': 8, 'param2': 2564, 'subservice': 255, 'param1': 327, 'description': 'MC_CALU (08); MS04'},
869 1543: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0805', 'service': 8, 'param2': 2565, 'subservice': 255, 'param1': 327, 'description': 'MC_CALU (08); MS05'},
870 1544: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0806', 'service': 8, 'param2': 2566, 'subservice': 255, 'param1': 327, 'description': 'MC_CALU (08); MS06'},
871 1545: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0807', 'service': 8, 'param2': 2567, 'subservice': 255, 'param1': 327, 'description': 'MC_CALU (08); MS07'},
872 1546: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0808', 'service': 8, 'param2': 2568, 'subservice': 255, 'param1': 327, 'description': 'MC_CALU (08); MS08'},
873 1547: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0900', 'service': 8, 'param2': 2816, 'subservice': 255, 'param1': 328, 'description': 'MC_SPARE4 (09); CW'},
874 1548: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0901', 'service': 8, 'param2': 2817, 'subservice': 255, 'param1': 328, 'description': 'MC_SPARE4 (09); MS01'},
875 1549: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0902', 'service': 8, 'param2': 2818, 'subservice': 255, 'param1': 328, 'description': 'MC_SPARE4 (09); MS02'},
876 1550: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0903', 'service': 8, 'param2': 2819, 'subservice': 255, 'param1': 328, 'description': 'MC_SPARE4 (09); MS03'},
877 1551: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0904', 'service': 8, 'param2': 2820, 'subservice': 255, 'param1': 328, 'description': 'MC_SPARE4 (09); MS04'},
878 1552: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0905', 'service': 8, 'param2': 2821, 'subservice': 255, 'param1': 328, 'description': 'MC_SPARE4 (09); MS05'},
879 1553: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0906', 'service': 8, 'param2': 2822, 'subservice': 255, 'param1': 328, 'description': 'MC_SPARE4 (09); MS06'},
880 1554: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0907', 'service': 8, 'param2': 2823, 'subservice': 255, 'param1': 328, 'description': 'MC_SPARE4 (09); MS07'},
881 1555: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC0908', 'service': 8, 'param2': 2824, 'subservice': 255, 'param1': 328, 'description': 'MC_SPARE4 (09); MS08'},
882 1556: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1000', 'service': 8, 'param2': 3072, 'subservice': 255, 'param1': 329, 'description': 'MC_SEV2 CW'},
883 1557: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1001', 'service': 8, 'param2': 3073, 'subservice': 255, 'param1': 329, 'description': 'MC_SEV2 MS01'},
884 1558: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1002', 'service': 8, 'param2': 3074, 'subservice': 255, 'param1': 329, 'description': 'MC_SEV2 MS02'},
885 1559: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1003', 'service': 8, 'param2': 3075, 'subservice': 255, 'param1': 329, 'description': 'MC_SEV2 MS03'},
886 1560: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1004', 'service': 8, 'param2': 3076, 'subservice': 255, 'param1': 329, 'description': 'MC_SEV2 MS04'},
887 1561: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1005', 'service': 8, 'param2': 3077, 'subservice': 255, 'param1': 329, 'description': 'MC_SEV2 MS05'},
888 1562: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1006', 'service': 8, 'param2': 3078, 'subservice': 255, 'param1': 329, 'description': 'MC_SEV2 MS06'},
889 1563: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1007', 'service': 8, 'param2': 3079, 'subservice': 255, 'param1': 329, 'description': 'MC_SEV2 MS07'},
890 1564: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1100', 'service': 8, 'param2': 3328, 'subservice': 255, 'param1': 330, 'description': 'MC_RTUMP (11); CW'},
891 1565: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1101', 'service': 8, 'param2': 3329, 'subservice': 255, 'param1': 330, 'description': 'MC_RTUMP (11); MS01'},
892 1566: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1102', 'service': 8, 'param2': 3330, 'subservice': 255, 'param1': 330, 'description': 'MC_RTUMP (11); MS02'},
893 1567: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1103', 'service': 8, 'param2': 3331, 'subservice': 255, 'param1': 330, 'description': 'MC_RTUMP (11); MS03'},
894 1568: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1104', 'service': 8, 'param2': 3332, 'subservice': 255, 'param1': 330, 'description': 'MC_RTUMP (11); MS04'},
895 1569: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1105', 'service': 8, 'param2': 3333, 'subservice': 255, 'param1': 330, 'description': 'MC_RTUMP (11); MS05'},
896 1570: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1106', 'service': 8, 'param2': 3334, 'subservice': 255, 'param1': 330, 'description': 'MC_RTUMP (11); MS06'},
897 1571: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1107', 'service': 8, 'param2': 3335, 'subservice': 255, 'param1': 330, 'description': 'MC_RTUMP (11); MS07'},
898 1572: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1108', 'service': 8, 'param2': 3336, 'subservice': 255, 'param1': 330, 'description': 'MC_RTUMP (11); MS08'},
899 1573: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1109', 'service': 8, 'param2': 3337, 'subservice': 255, 'param1': 330, 'description': 'MC_RTUMP (11); MS09'},
900 1574: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1200', 'service': 8, 'param2': 3584, 'subservice': 255, 'param1': 331, 'description': 'MC_RTUUP (12); CW'},
901 1575: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1201', 'service': 8, 'param2': 3585, 'subservice': 255, 'param1': 331, 'description': 'MC_RTUUP (12); MS01'},
902 1576: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1202', 'service': 8, 'param2': 3586, 'subservice': 255, 'param1': 331, 'description': 'MC_RTUUP (12); MS02'},
903 1577: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1203', 'service': 8, 'param2': 3587, 'subservice': 255, 'param1': 331, 'description': 'MC_RTUUP (12); MS03'},
904 1578: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1204', 'service': 8, 'param2': 3588, 'subservice': 255, 'param1': 331, 'description': 'MC_RTUUP (12); MS04'},
905 1579: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1205', 'service': 8, 'param2': 3589, 'subservice': 255, 'param1': 331, 'description': 'MC_RTUUP (12); MS05'},
906 1580: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1206', 'service': 8, 'param2': 3590, 'subservice': 255, 'param1': 331, 'description': 'MC_RTUUP (12); MS06'},
907 1581: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1207', 'service': 8, 'param2': 3591, 'subservice': 255, 'param1': 331, 'description': 'MC_RTUUP (12); MS07'},
908 1582: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1208', 'service': 8, 'param2': 3592, 'subservice': 255, 'param1': 331, 'description': 'MC_RTUUP (12); MS08'},
909 1583: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1209', 'service': 8, 'param2': 3593, 'subservice': 255, 'param1': 331, 'description': 'MC_RTUUP (12); MS09'},
910 1584: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1300', 'service': 8, 'param2': 0, 'subservice': 255, 'param1': 317, 'description': 'MC_SPIN_ALARM (13); '},
911 1585: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1400', 'service': 8, 'param2': 256, 'subservice': 255, 'param1': 318, 'description': 'MC_HG_ALARM (14); CW'},
912 1586: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1500', 'service': 8, 'param2': 512, 'subservice': 255, 'param1': 319, 'description': 'MC_SYNC_ALARM (15); '},
913 1587: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1600', 'service': 8, 'param2': 3840, 'subservice': 255, 'param1': 332, 'description': 'MC_DNEL (16); CW'},
914 1588: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1601', 'service': 8, 'param2': 3841, 'subservice': 255, 'param1': 332, 'description': 'MC_DNEL (16); MS01'},
915 1589: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1602', 'service': 8, 'param2': 3842, 'subservice': 255, 'param1': 332, 'description': 'MC_DNEL (16); MS02'},
916 1590: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1603', 'service': 8, 'param2': 3843, 'subservice': 255, 'param1': 332, 'description': 'MC_DNEL (16); MS03'},
917 1591: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1604', 'service': 8, 'param2': 3844, 'subservice': 255, 'param1': 332, 'description': 'MC_DNEL (16); MS04'},
918 1592: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1605', 'service': 8, 'param2': 3845, 'subservice': 255, 'param1': 332, 'description': 'MC_DNEL (16); MS05'},
919 1593: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1606', 'service': 8, 'param2': 3846, 'subservice': 255, 'param1': 332, 'description': 'MC_DNEL (16); MS06'},
920 1594: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1607', 'service': 8, 'param2': 3847, 'subservice': 255, 'param1': 332, 'description': 'MC_DNEL (16); MS07'},
921 1595: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1608', 'service': 8, 'param2': 3848, 'subservice': 255, 'param1': 332, 'description': 'MC_DNEL (16); MS08'},
922 1596: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1700', 'service': 8, 'param2': 4096, 'subservice': 255, 'param1': 333, 'description': 'MC_PLTH1 (17); CW'},
923 1597: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1701', 'service': 8, 'param2': 4097, 'subservice': 255, 'param1': 333, 'description': 'MC_PLTH1 (17); MS01'},
924 1598: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1702', 'service': 8, 'param2': 4098, 'subservice': 255, 'param1': 333, 'description': 'MC_PLTH1 (17); MS02'},
925 1599: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1703', 'service': 8, 'param2': 4099, 'subservice': 255, 'param1': 333, 'description': 'MC_PLTH1 (17); MS03'},
926 1600: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1704', 'service': 8, 'param2': 4100, 'subservice': 255, 'param1': 333, 'description': 'MC_PLTH1 (17); MS04'},
927 1601: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1705', 'service': 8, 'param2': 4101, 'subservice': 255, 'param1': 333, 'description': 'MC_PLTH1 (17); MS05'},
928 1602: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1706', 'service': 8, 'param2': 4102, 'subservice': 255, 'param1': 333, 'description': 'MC_PLTH1 (17); MS06'},
929 1603: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1707', 'service': 8, 'param2': 4103, 'subservice': 255, 'param1': 333, 'description': 'MC_PLTH1 (17); MS07'},
930 1604: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1708', 'service': 8, 'param2': 4104, 'subservice': 255, 'param1': 333, 'description': 'MC_PLTH1 (17); MS08'},
931 1605: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1709', 'service': 8, 'param2': 4105, 'subservice': 255, 'param1': 333, 'description': 'MC_PLTH1 (17); MS09'},
932 1606: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1710', 'service': 8, 'param2': 4106, 'subservice': 255, 'param1': 333, 'description': 'MC_PLTH1 (17); MS10'},
933 1607: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1711', 'service': 8, 'param2': 4107, 'subservice': 255, 'param1': 333, 'description': 'MC_PLTH1 (17); MS11'},
934 1608: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1712', 'service': 8, 'param2': 4108, 'subservice': 255, 'param1': 333, 'description': 'MC_PLTH1 (17); MS12'},
935 1609: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1713', 'service': 8, 'param2': 4109, 'subservice': 255, 'param1': 333, 'description': 'MC_PLTH1 (17); MS13'},
936 1610: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1714', 'service': 8, 'param2': 4110, 'subservice': 255, 'param1': 333, 'description': 'MC_PLTH1 (17); MS14'},
937 1611: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1715', 'service': 8, 'param2': 4111, 'subservice': 255, 'param1': 333, 'description': 'MC_PLTH1 (17); MS15'},
938 1612: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1800', 'service': 8, 'param2': 4352, 'subservice': 255, 'param1': 334, 'description': 'MC_DECA (18); CW'},
939 1613: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1801', 'service': 8, 'param2': 4353, 'subservice': 255, 'param1': 334, 'description': 'MC_DECA (18); MS01'},
940 1614: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1802', 'service': 8, 'param2': 4354, 'subservice': 255, 'param1': 334, 'description': 'MC_DECA (18); MS02'},
941 1615: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1803', 'service': 8, 'param2': 4355, 'subservice': 255, 'param1': 334, 'description': 'MC_DECA (18); MS03'},
942 1616: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1804', 'service': 8, 'param2': 4356, 'subservice': 255, 'param1': 334, 'description': 'MC_DECA (18); MS04'},
943 1617: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1900', 'service': 8, 'param2': 4608, 'subservice': 255, 'param1': 335, 'description': 'MC_DECB (19); CW'},
944 1618: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1901', 'service': 8, 'param2': 4609, 'subservice': 255, 'param1': 335, 'description': 'MC_DECB (19); MS01'},
945 1619: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1902', 'service': 8, 'param2': 4610, 'subservice': 255, 'param1': 335, 'description': 'MC_DECB (19); MS02'},
946 1620: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1903', 'service': 8, 'param2': 4611, 'subservice': 255, 'param1': 335, 'description': 'MC_DECB (19); MS03'},
947 1621: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC1904', 'service': 8, 'param2': 4612, 'subservice': 255, 'param1': 335, 'description': 'MC_DECB (19); MS04'},
948 1622: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC2000', 'service': 8, 'param2': 4864, 'subservice': 255, 'param1': 336, 'description': 'MC_SPARE8 (20); CW'},
949 1623: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC2001', 'service': 8, 'param2': 4865, 'subservice': 255, 'param1': 336, 'description': 'MC_SPARE8 (20); MS01'},
950 1624: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC2002', 'service': 8, 'param2': 4866, 'subservice': 255, 'param1': 336, 'description': 'MC_SPARE8 (20); MS02'},
951 1625: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC2003', 'service': 8, 'param2': 4867, 'subservice': 255, 'param1': 336, 'description': 'MC_SPARE8 (20); MS03'},
952 1626: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC2004', 'service': 8, 'param2': 4868, 'subservice': 255, 'param1': 336, 'description': 'MC_SPARE8 (20); MS04'},
953 1627: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC2005', 'service': 8, 'param2': 4869, 'subservice': 255, 'param1': 336, 'description': 'MC_SPARE8 (20); MS05'},
954 1628: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC2006', 'service': 8, 'param2': 4870, 'subservice': 255, 'param1': 336, 'description': 'MC_SPARE8 (20); MS06'},
955 1629: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC2007', 'service': 8, 'param2': 4871, 'subservice': 255, 'param1': 336, 'description': 'MC_SPARE8 (20); MS07'},
956 1630: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC2008', 'service': 8, 'param2': 4872, 'subservice': 255, 'param1': 336, 'description': 'MC_SPARE8 (20); MS08'},
957 1631: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC2100', 'service': 8, 'param2': 5120, 'subservice': 255, 'param1': 337, 'description': 'MC_SPARE9 (21); CW'},
958 1632: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC2101', 'service': 8, 'param2': 5121, 'subservice': 255, 'param1': 337, 'description': 'MC_SPARE9 (21); MS01'},
959 1633: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC2102', 'service': 8, 'param2': 5122, 'subservice': 255, 'param1': 337, 'description': 'MC_SPARE9 (21); MS02'},
960 1634: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC2103', 'service': 8, 'param2': 5123, 'subservice': 255, 'param1': 337, 'description': 'MC_SPARE9 (21); MS03'},
961 1635: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC2104', 'service': 8, 'param2': 5124, 'subservice': 255, 'param1': 337, 'description': 'MC_SPARE9 (21); MS04'},
962 1636: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC2105', 'service': 8, 'param2': 5125, 'subservice': 255, 'param1': 337, 'description': 'MC_SPARE9 (21); MS05'},
963 1637: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC2106', 'service': 8, 'param2': 5126, 'subservice': 255, 'param1': 337, 'description': 'MC_SPARE9 (21); MS06'},
964 1638: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC2107', 'service': 8, 'param2': 5127, 'subservice': 255, 'param1': 337, 'description': 'MC_SPARE9 (21); MS07'},
965 1639: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC2108', 'service': 8, 'param2': 5128, 'subservice': 255, 'param1': 337, 'description': 'MC_SPARE9 (21); MS08'},
966 1640: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC2200', 'service': 8, 'param2': 5376, 'subservice': 255, 'param1': 338, 'description': 'MC_SPARE10(22); CW'},
967 1641: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC2201', 'service': 8, 'param2': 5377, 'subservice': 255, 'param1': 338, 'description': 'MC_SPARE10(22); MS01'},
968 1642: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC2202', 'service': 8, 'param2': 5378, 'subservice': 255, 'param1': 338, 'description': 'MC_SPARE10(22); MS02'},
969 1643: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC2203', 'service': 8, 'param2': 5379, 'subservice': 255, 'param1': 338, 'description': 'MC_SPARE10(22); MS03'},
970 1644: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC2204', 'service': 8, 'param2': 5380, 'subservice': 255, 'param1': 338, 'description': 'MC_SPARE10(22); MS04'},
971 1645: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC2205', 'service': 8, 'param2': 5381, 'subservice': 255, 'param1': 338, 'description': 'MC_SPARE10(22); MS05'},
972 1646: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC2206', 'service': 8, 'param2': 5382, 'subservice': 255, 'param1': 338, 'description': 'MC_SPARE10(22); MS06'},
973 1647: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC2207', 'service': 8, 'param2': 5383, 'subservice': 255, 'param1': 338, 'description': 'MC_SPARE10(22); MS07'},
974 1648: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MC2208', 'service': 8, 'param2': 5384, 'subservice': 255, 'param1': 338, 'description': 'MC_SPARE10(22); MS08'},
975 1649: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MDUMP', 'service': 6, 'param2': None, 'subservice': 6, 'param1': None, 'description': 'Memory dump Rpt'},
976 1650: {'apid': 131, 'scanrate': None, 'snack-length': None, 'name': 'MOBDH_CD', 'service': 5, 'param2': None, 'subservice': 1, 'param1': 1, 'description': 'MRF OBDH COMMAND'},
977 1651: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MON1AL_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 81, 'description': 'BOA TRF MONITOR1 ALM'},
978 1652: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MON1ALAR', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 81, 'description': 'TRF MONITOR1 ALARM'},
979 1653: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MON1ER_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 80, 'description': 'BOA TRF MONITOR1 ERR'},
980 1654: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MON1ERR', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 80, 'description': 'TRF MONITOR1 ERROR'},
981 1655: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MON2AL_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 87, 'description': 'BOA TRF MONITOR2 ALM'},
982 1656: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MON2ALAR', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 87, 'description': 'TRF MONITOR2 ALARM'},
983 1657: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MON2ER_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 86, 'description': 'BOA TRF MONITOR2 ERR'},
984 1658: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MON2ERR', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 86, 'description': 'TRF MONITOR2 ERROR'},
985 1659: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MOTERR_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 64, 'description': 'BOA OVRIDE MOTOR ERR'},
986 1660: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MOTORERR', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 64, 'description': 'OVRIDING MOTOR ERROR'},
987 1661: {'apid': 131, 'scanrate': None, 'snack-length': None, 'name': 'MRF_ABGC', 'service': 5, 'param2': None, 'subservice': 1, 'param1': 7, 'description': 'MRF AB GRD CMND STOP'},
988 1662: {'apid': 131, 'scanrate': None, 'snack-length': None, 'name': 'MRF_ABST', 'service': 5, 'param2': None, 'subservice': 1, 'param1': 5, 'description': 'MRF AB START EVENT'},
989 1663: {'apid': 131, 'scanrate': None, 'snack-length': None, 'name': 'MRF_ADST', 'service': 5, 'param2': None, 'subservice': 1, 'param1': 6, 'description': 'MRF AD START EVENT'},
990 1664: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MS_ERR_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 102, 'description': 'BOA MS ERROR'},
991 1665: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'MS_ERROR', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 102, 'description': 'MS ERROR'},
992 1666: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'NEWTSOL', 'service': 8, 'param2': 1, 'subservice': 255, 'param1': 160, 'description': 'New Tsol Parms Rpt'},
993 1667: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'OBDH_ER', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 32, 'description': 'OBDH ERROR'},
994 1668: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'OBDHDY_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 10, 'description': 'BOA OBDH RESP DUMMY'},
995 1669: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'OBDHDYRP', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 10, 'description': 'OBDH RESPONSE DUMMY'},
996 1670: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'OBDHER_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 32, 'description': 'BOA OBDH ERROR'},
997 1671: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'P1', 'service': 3, 'param2': None, 'subservice': 25, 'param1': 4, 'description': 'Platform HK Pkt # 1'},
998 1672: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'P2', 'service': 3, 'param2': None, 'subservice': 25, 'param1': 5, 'description': 'Platform HK Pkt # 2'},
999 1673: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'P3', 'service': 3, 'param2': None, 'subservice': 25, 'param1': 6, 'description': 'Platform HK Pkt # 3'},
1000 1674: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'P4', 'service': 3, 'param2': None, 'subservice': 25, 'param1': 7, 'description': 'Platform HK Pkt # 4'},
1001 1675: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'P5', 'service': 3, 'param2': None, 'subservice': 25, 'param1': 8, 'description': 'Platform HK Pkt # 5'},
1002 1676: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'P6', 'service': 3, 'param2': None, 'subservice': 25, 'param1': 9, 'description': 'Platform HK Pkt # 6'},
1003 1677: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'P7', 'service': 3, 'param2': None, 'subservice': 25, 'param1': 10, 'description': 'Platform HK Pkt # 7'},
1004 1678: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'P8', 'service': 3, 'param2': None, 'subservice': 25, 'param1': 11, 'description': 'Platform HK Pkt # 8'},
1005 1679: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'P9', 'service': 3, 'param2': None, 'subservice': 25, 'param1': 12, 'description': 'Platform HK Pkt # 9'},
1006 1680: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'PF', 'service': 3, 'param2': None, 'subservice': 25, 'param1': 3, 'description': 'Fast HK Prog. Pkt'},
1007 1681: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'PS', 'service': 3, 'param2': None, 'subservice': 25, 'param1': 2, 'description': 'Slow HK Prog. Pkt'},
1008 1682: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'RACHKS_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 4, 'description': 'BOA RAM CHECKSUM ERR'},
1009 1683: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'RADAUX', 'service': 155, 'param2': None, 'subservice': 0, 'param1': None, 'description': 'RADAUX DATA'},
1010 1684: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'RAM_1BIT', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 8, 'description': 'RAM SINGLE BIT ERROR'},
1011 1685: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'RAM_CHK', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 3, 'description': 'RAM CHECK ERROR'},
1012 1686: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'RAM_CHKS', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 4, 'description': 'RAM CHECKSUM ERROR'},
1013 1687: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'RAM1BI_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 8, 'description': 'BOA RAM SING BIT ERR'},
1014 1688: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'RAMCHK_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 3, 'description': 'BOA RAM CHECK ERROR'},
1015 1689: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'S0', 'service': 3, 'param2': None, 'subservice': 25, 'param1': 13, 'description': 'SEVIRI HK Pkt # 0'},
1016 1690: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'S1', 'service': 3, 'param2': None, 'subservice': 25, 'param1': 14, 'description': 'SEVIRI HK Pkt # 1'},
1017 1691: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'S2', 'service': 3, 'param2': None, 'subservice': 25, 'param1': 15, 'description': 'SEVIRI HK Pkt # 2'},
1018 1692: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'S3', 'service': 3, 'param2': None, 'subservice': 25, 'param1': 16, 'description': 'SEVIRI HK Pkt # 3'},
1019 1693: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'S4', 'service': 3, 'param2': None, 'subservice': 25, 'param1': 17, 'description': 'SEVIRI HK Pkt # 4'},
1020 1694: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'S5', 'service': 3, 'param2': None, 'subservice': 25, 'param1': 18, 'description': 'SEVIRI HK Pkt # 5'},
1021 1695: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'S6', 'service': 3, 'param2': None, 'subservice': 25, 'param1': 19, 'description': 'SEVIRI HK Pkt # 6'},
1022 1696: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'S7', 'service': 3, 'param2': None, 'subservice': 25, 'param1': 20, 'description': 'SEVIRI HK Pkt # 7'},
1023 1697: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'S8', 'service': 3, 'param2': None, 'subservice': 25, 'param1': 21, 'description': 'SEVIRI HK Pkt # 8'},
1024 1698: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'S9', 'service': 3, 'param2': None, 'subservice': 25, 'param1': 22, 'description': 'SEVIRI HK Pkt # 9'},
1025 1699: {'apid': 135, 'scanrate': None, 'snack-length': None, 'name': 'SCF_EXEC', 'service': 5, 'param2': None, 'subservice': 1, 'param1': 10, 'description': 'SCF EXEC EVENT'},
1026 1700: {'apid': 135, 'scanrate': None, 'snack-length': None, 'name': 'SCF_SYNC', 'service': 5, 'param2': None, 'subservice': 1, 'param1': 9, 'description': 'SCF SYNC EVENT'},
1027 1701: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'SCFPAR', 'service': 8, 'param2': 0, 'subservice': 255, 'param1': 165, 'description': 'SCF Parms Rpt'},
1028 1702: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'SCHRPT', 'service': 11, 'param2': None, 'subservice': 10, 'param1': None, 'description': 'Detailed Sched Rpt'},
1029 1703: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'SEVEOP_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 16, 'description': 'BOA SEVIRI EOP'},
1030 1704: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'SEVI_EOP', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 16, 'description': 'SEVIRI EOP'},
1031 1705: {'apid': 30, 'scanrate': None, 'snack-length': None, 'name': 'SEVOBS01', 'service': 200, 'param2': None, 'subservice': 1, 'param1': 1, 'description': 'Seviri Observability'},
1032 1706: {'apid': 30, 'scanrate': None, 'snack-length': None, 'name': 'SEVOBS02', 'service': 200, 'param2': None, 'subservice': 1, 'param1': 2, 'description': 'Seviri Observability'},
1033 1707: {'apid': 134, 'scanrate': None, 'snack-length': None, 'name': 'SOBDH_CD', 'service': 5, 'param2': None, 'subservice': 1, 'param1': 1, 'description': 'SBF OBDH COMMAND'},
1034 1708: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'SP_AL', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 113, 'description': 'SPIN ALARM'},
1035 1709: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'SP_AL_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 113, 'description': 'BOA SPIN ALARM'},
1036 1710: {'apid': 201, 'scanrate': None, 'snack-length': None, 'name': 'SPA1_EV', 'service': 5, 'param2': None, 'subservice': 1, 'param1': 11, 'description': 'CDMU EVENT REPORT'},
1037 1711: {'apid': 202, 'scanrate': None, 'snack-length': None, 'name': 'SPA2_EV', 'service': 5, 'param2': None, 'subservice': 1, 'param1': 12, 'description': 'PLTH2 EVENT REPORT'},
1038 1712: {'apid': 203, 'scanrate': None, 'snack-length': None, 'name': 'SPA3_EV', 'service': 5, 'param2': None, 'subservice': 1, 'param1': 13, 'description': 'SPARE3 EVENT REPORT'},
1039 1713: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'SPCALC_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 116, 'description': 'BOA SPIN CALCUL ERR'},
1040 1714: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'SPINCALC', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 116, 'description': 'SPIN CALCUL ERROR'},
1041 1715: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'SPINLOST', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 117, 'description': 'SPIN LOST ALARM'},
1042 1716: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'SPINOUT', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 112, 'description': 'SPIN OUT OF LIMITS'},
1043 1717: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'SPLOST_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 117, 'description': 'BOA SPIN LOST ALARM'},
1044 1718: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'SPOUT_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 112, 'description': 'BOA SPIN OUT OF LIM'},
1045 1719: {'apid': 133, 'scanrate': None, 'snack-length': None, 'name': 'SSF_SYNC', 'service': 5, 'param2': None, 'subservice': 1, 'param1': 8, 'description': 'SSF SYNC CHANGE COMP'},
1046 1720: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'SSFPAR', 'service': 8, 'param2': 0, 'subservice': 255, 'param1': 159, 'description': 'SSF Parms Rpt'},
1047 1721: {'apid': 133, 'scanrate': None, 'snack-length': None, 'name': 'SSOBD_CD', 'service': 5, 'param2': None, 'subservice': 1, 'param1': 1, 'description': 'SSF OBDH COMMAND'},
1048 1722: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'SWLVL2', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 106, 'description': 'SW LEVEL2 ALARM'},
1049 1723: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'SWLVL2_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 106, 'description': 'BOA SW LEVEL2 ALARM'},
1050 1724: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'SY', 'service': 3, 'param2': None, 'subservice': 25, 'param1': 1, 'description': 'HK Synchro Pkt'},
1051 1725: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'SYNC_AL', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 114, 'description': 'SYNC ALARM'},
1052 1726: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'SYNCAB_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 119, 'description': 'BOA SYNC CHG ABORTED'},
1053 1727: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'SYNCABOR', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 119, 'description': 'SYNC CHANGE ABORTED'},
1054 1728: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'SYNCAL_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 114, 'description': 'BOA SYNC ALARM'},
1055 1729: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'TC_CNTSG', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 6, 'description': 'TC CTRL SEG FAULT'},
1056 1730: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'TC_SEGOR', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 5, 'description': 'TC SEGORDER FAULT'},
1057 1731: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'TCACC_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 48, 'description': 'BOA TC ACCEPT ERROR'},
1058 1732: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'TCACCEPT', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 48, 'description': 'TC ACCEPT ERROR'},
1059 1733: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'TCCTRL_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 6, 'description': 'BOA TC CTL SEG FAULT'},
1060 1734: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'TCDECN_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 7, 'description': 'BOA TC DEC FAULT NOM'},
1061 1735: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'TCDECR_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 11, 'description': 'BOA TC DEC FAULT RED'},
1062 1736: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'TCEXEC_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 52, 'description': 'BOA TC EXEC ERROR'},
1063 1737: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'TCEXECUT', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 52, 'description': 'TC EXEC ERROR'},
1064 1738: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'TCFTDECN', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 7, 'description': 'TC DECODER FAULT NOM'},
1065 1739: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'TCFTDECR', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 11, 'description': 'TC DECODER FAULT RED'},
1066 1740: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'TCSEG_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 5, 'description': 'BOA TC SEGORDER FLT'},
1067 1741: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'THPR01', 'service': 8, 'param2': 1, 'subservice': 255, 'param1': 3, 'description': 'Therm Parms; Line 01'},
1068 1742: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'THPR02', 'service': 8, 'param2': 2, 'subservice': 255, 'param1': 3, 'description': 'Therm Parms; Line 02'},
1069 1743: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'THPR03', 'service': 8, 'param2': 3, 'subservice': 255, 'param1': 3, 'description': 'Therm Parms; Line 03'},
1070 1744: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'THPR04', 'service': 8, 'param2': 4, 'subservice': 255, 'param1': 3, 'description': 'Therm Parms; Line 04'},
1071 1745: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'THPR05', 'service': 8, 'param2': 5, 'subservice': 255, 'param1': 3, 'description': 'Therm Parms; Line 05'},
1072 1746: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'THPR06', 'service': 8, 'param2': 6, 'subservice': 255, 'param1': 3, 'description': 'Therm Parms; Line 06'},
1073 1747: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'THPR07', 'service': 8, 'param2': 7, 'subservice': 255, 'param1': 3, 'description': 'Therm Parms; Line 07'},
1074 1748: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'THPR08', 'service': 8, 'param2': 8, 'subservice': 255, 'param1': 3, 'description': 'Therm Parms; Line 08'},
1075 1749: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'THPR09', 'service': 8, 'param2': 9, 'subservice': 255, 'param1': 3, 'description': 'Therm Parms; Line 09'},
1076 1750: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'THPR10', 'service': 8, 'param2': 10, 'subservice': 255, 'param1': 3, 'description': 'Therm Parms; Line 10'},
1077 1751: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'THPR11', 'service': 8, 'param2': 11, 'subservice': 255, 'param1': 3, 'description': 'Therm Parms; Line 11'},
1078 1752: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'THPR12', 'service': 8, 'param2': 12, 'subservice': 255, 'param1': 3, 'description': 'Therm Parms; Line 12'},
1079 1753: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'THPR13', 'service': 8, 'param2': 13, 'subservice': 255, 'param1': 3, 'description': 'Therm Parms; Line 13'},
1080 1754: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'THPR14', 'service': 8, 'param2': 14, 'subservice': 255, 'param1': 3, 'description': 'Therm Parms; Line 14'},
1081 1755: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'THPR15', 'service': 8, 'param2': 15, 'subservice': 255, 'param1': 3, 'description': 'Therm Parms; Line 15'},
1082 1756: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'THPR16', 'service': 8, 'param2': 16, 'subservice': 255, 'param1': 3, 'description': 'Therm Parms; Line 16'},
1083 1757: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'THPR17', 'service': 8, 'param2': 17, 'subservice': 255, 'param1': 3, 'description': 'Therm Parms; Line 17'},
1084 1758: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'THPR18', 'service': 8, 'param2': 18, 'subservice': 255, 'param1': 3, 'description': 'Therm Parms; Line 18'},
1085 1759: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'THPR19', 'service': 8, 'param2': 19, 'subservice': 255, 'param1': 3, 'description': 'Therm Parms; Line 19'},
1086 1760: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'THPR20', 'service': 8, 'param2': 20, 'subservice': 255, 'param1': 3, 'description': 'Therm Parms; Line 20'},
1087 1761: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'THPR21', 'service': 8, 'param2': 21, 'subservice': 255, 'param1': 3, 'description': 'Therm Parms; Line 21'},
1088 1762: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'THPR22', 'service': 8, 'param2': 22, 'subservice': 255, 'param1': 3, 'description': 'Therm Parms; Line 22'},
1089 1763: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'THPR23', 'service': 8, 'param2': 23, 'subservice': 255, 'param1': 3, 'description': 'Therm Parms; Line 23'},
1090 1764: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'THPR24', 'service': 8, 'param2': 24, 'subservice': 255, 'param1': 3, 'description': 'Therm Parms; Line 24'},
1091 1765: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'THPR25', 'service': 8, 'param2': 25, 'subservice': 255, 'param1': 3, 'description': 'Therm Parms; Line 25'},
1092 1766: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'THPR26', 'service': 8, 'param2': 26, 'subservice': 255, 'param1': 3, 'description': 'Therm Parms; Line 26'},
1093 1767: {'apid': 0, 'scanrate': None, 'snack-length': None, 'name': 'TIME', 'service': 10, 'param2': None, 'subservice': 1, 'param1': None, 'description': 'Time Report'},
1094 1768: {'apid': 132, 'scanrate': None, 'snack-length': None, 'name': 'TOBDH_CD', 'service': 5, 'param2': None, 'subservice': 1, 'param1': 1, 'description': 'TRF OBDH COMMAND'},
1095 1769: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'TSOL_ER', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 115, 'description': 'TSOL ERROR'},
1096 1770: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'TSOLAB_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 118, 'description': 'BOA TSOL INIT ABORT'},
1097 1771: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'TSOLABOR', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 118, 'description': 'TSOL INIT ABORTED'},
1098 1772: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'TSOLER_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 115, 'description': 'BOA TSOL ERROR'},
1099 1773: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'TTCDIS_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 51, 'description': 'BOA TTC DISCARD ERR'},
1100 1774: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'TTCDISCA', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 51, 'description': 'TTC DISCARDED ERROR'},
1101 1775: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'UNUSEDIT', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 9, 'description': 'UNUSED INTERRUPT'},
1102 1776: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'UNUSIT_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 9, 'description': 'BOA UNUSED INTERRUPT'},
1103 1777: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'USETSOL', 'service': 8, 'param2': 2, 'subservice': 255, 'param1': 161, 'description': 'In use Tsol Parms'},
1104 1778: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'VCA0_BIT', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 12, 'description': 'VCA0 BIT ERROR'},
1105 1779: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'VCA0BE_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 12, 'description': 'BOA VCA0 BIT ERROR'},
1106 1780: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'VCA1_BIT', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 13, 'description': 'VCA1 BIT ERROR'},
1107 1781: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'VCA1BE_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 13, 'description': 'BOA VCA1 BIT ERROR'},
1108 1782: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'VCA7_BIT', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 14, 'description': 'VCA7 BIT ERROR'},
1109 1783: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'VCA7BE_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 14, 'description': 'BOA VCA7 BIT ERROR'},
1110 1784: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'VCM_BIT', 'service': 5, 'param2': None, 'subservice': 2, 'param1': 15, 'description': 'VCM BIT ERROR'},
1111 1785: {'apid': 2044, 'scanrate': None, 'snack-length': None, 'name': 'VCMBIT_B', 'service': 15, 'param2': None, 'subservice': 8, 'param1': 15, 'description': 'BOA VCM BIT ERROR'},
1112
1113 }
1114
1115
1116# Some names assembly IDs
1117ASSY_ID_RADAUX = 1023
1118
1119
1120# Values for the FLAV header setting
1121FLAV_CHART_EPS = 0
1122FLAV_CHART_MSG = 1
1123
1124# Values for the SFID header setting
1125# (used in CHART-MSG only to store CFID)
1126SFID_UNUSED = 0
1127CFID_OPER = 0
1128CFID_VALI = 1
1129
1130sf_header1_desc = np.dtype([('CAUTH', 'S2'), # magic code
1131 ('VERS', '>u2'), # SF format version
1132 ('GSITE', '>u2'), # generation site
1133 ('GSOFT', '>u2'), # generation software
1134 ('ATIME', isp.ccsds_time_desc), # nominal start time of data
1135 ('ADURNH', '>u2'), # nominal duration
1136 ('ADURNL', '>u4'),
1137 ('PROJ', '>u2'), # satellite identifier
1138 ('FLAV', '>u2'), # SF level (CHART-EPS SF00, CHART-MSG SF00)
1139 ('ASSY', '>u2'), # assembly ID (filetype)
1140 ('SFID', '>u2'), # CFID in CHART-MSG (OPER, VALI)
1141 ('STIMEH', '>u2'), # frequency
1142 ('STIMEL', '>u4'),
1143 ('SLEN', '>u4'), # snack len
1144 ('SNUM', '>u4'), # number of snacks
1145 ('STRT', isp.ccsds_time_desc), # time of first snack
1146 ('STOP', isp.ccsds_time_desc), # time of last snack
1147 ('IDIOT', '>u2'), # checksum
1148 ('HEND', 'S2')]) # filler
1149
1150
1151def cdstime_to_isptime(cdstime):
1152 """Convert a dictionary containing DAYS and MILLISECONDS keys into an 8-byte
1153 timestamp as used in CCSDS packets (2 bytes days, 4 bytes milliseconds, 2 bytes microseconds).
1154 """
1155
1156 result = np.zeros((1,), dtype=isp.ccsds_time_desc)
1157 result['days'] = cdstime['DAYS']
1158 result['ms'] = cdstime['MILLISECONDS']
1159 return result
1160
1161
1162def decode_duration(header):
1163 """Combine the duration high word (ADURNH) and low word (ADURNL) from the SF00 file header
1164 into a single duration (in ms(?)).
1165 """
1166
1167 hi = int(header['ADURNH'])
1168 lo = int(header['ADURNL'])
1169 return (hi << 32) + lo
1170
1171
1172def decode_stime(header):
1173 """Combine the start time high word (STIMEH) and low word (STIMEL) from the SF00 file header
1174 into a single file start time (units?).
1175 """
1176
1177 hi = int(header['STIMEH'])
1178 lo = int(header['STIMEL'])
1179 return (hi << 32) + lo
1180
1181
1182class SFReader:
1183 """Read in an SF00 file, decoding the header and making the snacks available via the generator
1184 function gen_snacks().
1185
1186 >> sf00 = SFReader('/bin/bash')
1187 Traceback (most recent call last):
1188 ...
1189 BadSFFile: /bin/bash: not an SF file
1190
1191 >> sf00 = SFReader('20110923061501Z_METOP-2_MHS-ALL.SF00') # doctest: +SKIP
1192 >>> for timestamp, data in sf00.gen_snacks(): # doctest: +SKIP
1193 >> print(timestamp, len(data)) # doctest: +SKIP
1194 """
1195
1196 class BadSFFile(BaseException):
1197 """Cannot open an SF00 file."""
1198
1199 # We disable the pylint message:
1200 # sf.py:203: [W0231, SFReader.BadSFFile.__init__] __init__ method from base class
1201 # 'BaseException' is not called
1202
1203 # If we do try to cal the base class constructor we get the runtime error:
1204 # NameError: global name 'BadSFFile' is not defined
1205 # For unknown reason.
1206
1207 def __init__(self, filename, message): # pylint: disable=W0231
1208 # super(BadSFFile, self).__init__()
1209 self.filename = filename
1210 self.message = message
1211
1212 def __str__(self):
1213 return '{path}: {mess}'.format(path=self.filename, mess=self.message)
1214
1215 def __init__(self, filename=None, buff=None):
1216 # self.filename = filename
1217 if filename is not None:
1218 fd = filename.open('rb')
1219 try:
1220 self.buf = mmap.mmap(fd.fileno(), 0, access=mmap.ACCESS_READ)
1221 except (ValueError, mmap.error): # may occur if file is too large
1222 # print 'E type ', type(e)
1223 # print 'E is ', e
1224 self.buf = FakeMmap(filename)
1225 # on aix we get the stack:
1226 # Global exception handler called
1227 # Traceback (most recent call last):
1228 # File "/homespace/TCchart/chart/chart/commands/ingester", line 641, in <module>
1229 # main()
1230 # File "/homespace/TCchart/chart/chart/commands/ingester", line 633, in main
1231 # sf00 = SFReader(filename)
1232 # File "/homespace/TCchart/chart/chart/common/sf.py", line 235, in __init__
1233 # self.buf = mmap.mmap(fd.fileno(), 0, access=mmap.ACCESS_READ)
1234 # error: [Errno 12] Not enough space
1235 # Finished traceback for [Errno 12] Not enough space
1236
1237 elif buff is not None:
1238 # assume filename is a buffer
1239 self.buf = buff
1240
1241 else:
1242 raise ValueError('No input filename or buffer given')
1243
1244 self.header = self.get_header()
1245
1246 if self.header['CAUTH'].tostring() != EDDE:
1247 raise SFReader.BadSFFile(filename, 'not an SF file')
1248
1249 if self.header['FLAV'] != FLAV_CHART_EPS and self.header['FLAV'] != FLAV_CHART_MSG:
1250 raise SFReader.BadSFFile(filename, 'not an SF level 0 file')
1251
1252 if self.header['ASSY'] in (6, 9, 10) and self.header['VERS'] == 0:
1253 # before we added OBT time to the payload
1254 raise SFReader.BadSFFile(filename, 'is a v0 SF00 file')
1255
1256 def get_header(self):
1257 """Return the SF00 header as a numpy object with named fields."""
1258 if (np.fromstring(EDDE * 32, dtype=np.uint8) ==
1259 np.frombuffer(buffer=self.buf[:64], dtype=np.uint8, count=64)).all():
1260 # np.frombuffer(buffer=self.buf, dtype=np.uint8, count=64, offset=0)).all():
1261 offset = len(self.buf) - 64
1262
1263 else:
1264 offset = 0
1265
1266 header = np.frombuffer(buffer=self.buf[offset:offset + 64], dtype=sf_header1_desc)[0]
1267 # header = np.frombuffer(buffer=self.buf[offset:offset + 64], dtype=sf_header1_desc,
1268 # count=1, offset=offset)[0]
1269 return header
1270
1271 def get_sensing_start(self):
1272 """Return the timestamp of the first snack as a datetime object.
1273 Note that worker.py needs this property.
1274 """
1275 if len(self.buf) == 128:
1276 return None
1277 else:
1278 return isp.ccsds_to_datetime(np.frombuffer(
1279 buffer=self.buf,
1280 dtype=isp.ccsds_time_desc,
1281 count=1,
1282 offset=64)[0])
1283
1284 sensing_start = property(get_sensing_start)
1285
1286 def get_sensing_stop(self):
1287 """Return the timestamp of the first snack as a datetime object."""
1288 if len(self.buf) == 128:
1289 return None
1290
1291 else:
1292 return isp.ccsds_to_datetime(np.frombuffer(
1293 buffer=self.buf,
1294 dtype=isp.ccsds_time_desc,
1295 count=1,
1296 offset=64)[0])
1297
1298 sensing_stop = property(get_sensing_stop)
1299
1300 @property
1301 def sid(self):
1302 """Return the SID of this file ('M01', ...) as read from the SF00 header block."""
1303 return SID(lookup_sat_id(self.header['PROJ']))
1304
1305 @property
1306 def sfid(self):
1307 """Original purpose unused. In CHART-MSG we encode the CFID here."""
1308 return self.header['SFID']
1309
1310 def get_assembly_id(self):
1311 """Return the numeric assembly ID identifying the type of this SF00 file."""
1312 return self.header['ASSY']
1313
1314 assembly_id = property(get_assembly_id)
1315
1316 def get_trailer(self):
1317 """Return the SF00 trailer as a 64-byte numpy uint8 array."""
1318 # trailer = np.frombuffer(buffer=self.buf,
1319 # dtype=np.uint8,
1320 # count=64,
1321 # offset=len(self.buf) - 64)
1322 trailer = np.frombuffer(buffer=self.buf[-64:],
1323 dtype=np.uint8)
1324 return trailer
1325
1326 def gen_snacks(self):
1327 """Generator function which yields tuples of `timestamp`, `payload` for each snack in the
1328 SF00 file. `timestamp` is a datetime object, `payload` is a numpy uint8 array.
1329 """
1330
1331 pos = 64
1332 try:
1333 # len() fails on FakeMmap objects with large size
1334 buflen = len(self.buf)
1335 except OverflowError:
1336 self.buf.handle.seek(0, os.SEEK_END)
1337 buflen = self.buf.handle.tell()
1338
1339 snack_length = self.header['SLEN']
1340
1341 while True:
1342 # print('Reading from pos ' + str(pos) + ' buflen ' + str(buflen) + \
1343 # ' snack_length ' + str(snack_length))
1344 # timestamp = isp.ccsds_to_datetime(np.frombuffer(buffer=self.buf,
1345 # dtype=isp.ccsds_time_desc,
1346 # count=1,
1347 # offset=pos)[0])
1348 timestamp = isp.ccsds_to_datetime(np.frombuffer(buffer=self.buf[pos:pos + 8],
1349 dtype=isp.ccsds_time_desc)[0])
1350 # payload = np.frombuffer(buffer=self.buf,
1351 # dtype=np.uint8,
1352 # count=snack_length,
1353 # offset=pos + 8)
1354 payload = np.frombuffer(buffer=self.buf[pos + 8: pos + 8 + snack_length],
1355 dtype=np.uint8)
1356 yield timestamp, payload
1357 pos += snack_length + 8
1358
1359 #yield timestamp, self.buf[pos+8:pos+8+snack_length]
1360
1361 #yield isp.ccsds_to_datetime(np.frombuffer(buffer=self.buf,
1362 # dtype=isp.ccsds_time_desc,
1363 # count=1,
1364 # offset=pos)[0]), \
1365 # [ord(i) for i in self.buf[pos+8:pos+8+snack_length]]
1366
1367 if pos >= (buflen - 64):
1368 break
1369
1370 # print('quit ' + str(pos))
1371
1372 def calc_checksum(self):
1373 """Compute the correct checksum for this file as used in the SF00 'IDIOT' header field."""
1374 # print 64
1375 # self.buf.handle.seek(0, os.SEEK_END)
1376 # print self.buf.handle.tell()
1377 # print len(self.buf)
1378 # print len(self.buf) - 128
1379 # print self.buf[64: len(self.buf) - 128]
1380 if self.buf.size() <= 128:
1381 return -1
1382
1383 buf = np.frombuffer(self.buf[64: -128],
1384 dtype=np.uint8)
1385 return buf.sum() % 65536
1386
1387 # return np.frombuffer(self.buf,
1388 # dtype=np.uint8,
1389 # count=len(self.buf) - 128,
1390 # offset=64).sum() % 65536
1391
1392
1393class SFWriter:
1394 """Write SF00 files."""
1395
1396 EXT = 'SF00'
1397
1398 def __init__(self,
1399 assembly_id=None,
1400 sfid=SFID_UNUSED,
1401 flav=FLAV_CHART_EPS,
1402 mphr=None,
1403 out_dir=None,
1404 sens_start=None,
1405 duration=None, # int, ms
1406 scid=None,
1407 sid=None,
1408 out_file=None):
1409 """Write an SF00 file.
1410 Args:
1411 `assembly_id` (int): Identifies the file type i.e. MHS
1412 `sfid` (int | 0 (OPER), 1 (VALI)): For CHART-MSG only holds the CFID value
1413 `flav` (int): Project (CHART-EPS/MSG)
1414 `mphr` (numpy complex object): Copy of EPS MPHR fields. Can be set as an
1415 alternative to most of the other header fields
1416 `out_dir` (string): Dir to write to, if `out_file` is not set. Filename
1417 will be computed
1418 `sens_start` (datetime): Nominal start time of product
1419 `duration` (int / microseconds): Nominal duration of product
1420 `scid` (str): Spacecraft ID
1421 `out_file` (str): File name to write to.
1422 """
1423
1424 if scid is not None:
1425 sid = SID(scid)
1426
1427 if 'scanrate' in assemblies[assembly_id]:
1428 frequency = timedelta_to_us(assemblies[assembly_id]['scanrate'])
1429 else:
1430 frequency = -1
1431
1432 snack_length = assemblies[assembly_id]['snack-length']
1433
1434 if mphr is None:
1435 self.duration = duration
1436 self.sid = sid
1437
1438 else:
1439 sens_start = mphr['SENSING_START']
1440 sens_end = mphr['SENSING_END']
1441 dur_td = sens_end - sens_start
1442 self.duration = dur_td.seconds * 1000000 + dur_td.microseconds
1443 if sid is None:
1444 self.sid = SID(mphr['SPACECRAFT_ID'])
1445
1446 else:
1447 self.sid = sid
1448
1449 self.flav = flav
1450 self.assembly_id = assembly_id
1451 self.sfid = sfid
1452 self.frequency = frequency
1453 self.sens_start = sens_start
1454
1455 # if out_file is specified then the following parameters do not have to
1456 # be set on initialisation: sens_start, duration, sat_id
1457
1458 self.temp_filename = False
1459 if out_file is None:
1460 if self.sid is not None:
1461 # We have all the information to synthesise filename for output file
1462 self.filename = out_dir.joinpath(self.auto_filename())
1463
1464 else:
1465 # otherwise we write to a temp file and assume the user will set our SID
1466 self.filename = out_dir.joinpath('SF00_{assy}_{pid}.tmp'.format(
1467 assy=assembly_id, pid=os.getpid()))
1468 self.temp_filename = True
1469
1470 else:
1471 if out_dir is None:
1472 self.filename = out_file
1473
1474 else:
1475 self.filename = out_dir.joinpath(out_file)
1476
1477 # don't use "self.filename.open('wb')"
1478 # numpy doesn't like it
1479 self.handle = open(str(self.filename), 'wb')
1480
1481 self.handle.write(ZERO * 64)
1482 self.snum = 0
1483 self.strt = None
1484 self.stop = None
1485 self.idiot = 0
1486 self.snack_length = snack_length
1487 self.two_zeroes = np.zeros((2, 1), dtype=np.uint8)
1488 logger.debug('sf00 write to {f}'.format(f=self.filename))
1489
1490 def __del__(self):
1491 self.close()
1492
1493 def auto_filename(self):
1494 """Compute filename."""
1495 return '{start}_{scid}_{assy}.{ext}'.format(
1496 start=datetime_to_gentime(self.sens_start),
1497 scid=self.sid.scid,
1498 assy=assemblies[self.assembly_id]['name'],
1499 ext=SFWriter.EXT)
1500
1501 def write_snack(self, timestamp, snack):
1502 """Store a single snack with timestamp.
1503 `timestamp` should be a Python datetime object,
1504 `snack` a buffer like object.
1505 """
1506
1507 ccsdstime = isp.datetime_to_ccsds_time(timestamp)
1508 ccsdstime.tofile(self.handle)
1509 # self.two_zeroes.tofile(self.fd) # omitted since datetime_to_cdstime returns 8 bytes now
1510 # assert len(snack) == self.snack_length
1511 if len(snack) != self.snack_length:
1512 raise BadFileError(
1513 'Attempt to write snack len {act} expecting {req}'.format(
1514 act=len(snack), req=self.snack_length))
1515
1516 self.handle.write(snack)
1517 # import binascii
1518 # logging.debug('wrote 0x' + binascii.hexlify(snack) + ' len ' + str(len(snack)))
1519 # allow payload to be a struct.pack() buffer or a numpy buffer
1520 if hasattr(snack, 'sum'):
1521 self.idiot += snack.sum() + sum(c for c in ccsdstime.tostring())
1522
1523 else:
1524 # FIXME(mschwarz) on 07/03/22: sonarqube blocker - c is not defined.
1525 # Unknown how to resolve.
1526 self.idiot += sum(c) + sum(ccsdstime.tostring())
1527
1528 #self.idiot += sum(ord(c) for c in snack) + sum(ord(c) for c in timestamp_cds.tostring())
1529 if self.strt is None:
1530 self.strt = timestamp
1531
1532 self.stop = timestamp
1533 self.snum += 1
1534
1535 def close(self, message=logging.info):
1536 """Finalise and close the file."""
1537 if not hasattr(self, 'handle') or self.handle is None:
1538 return
1539
1540 if self.sens_start is None:
1541 self.sens_start = self.strt
1542
1543 hdr = np.zeros((1,), dtype=sf_header1_desc)
1544 hdr0 = hdr[0]
1545 hdr0['CAUTH'] = EDDE
1546 # MHS and AMSA is v1 SF00 files w/ OBT times appended to each snack
1547 hdr0['VERS'] = 1 if self.assembly_id in (6, 9, 10) else 0
1548 hdr0['GSITE'] = 16
1549 hdr0['GSOFT'] = 1
1550 if self.sens_start is None:
1551 hdr0['ATIME'] = isp.ccsds_start_epoch
1552 else:
1553 hdr0['ATIME'] = cdstime_to_isptime(datetime_to_cdstime(self.sens_start))
1554
1555 if self.duration is None:
1556 if self.strt is not None and self.stop is not None:
1557 dur_td = self.strt - self.stop
1558 self.duration = dur_td.seconds * 1000000 + dur_td.microseconds
1559 else:
1560 self.duration = 0
1561
1562 if self.sid is None:
1563 raise IOError('No SID set in SF00 file')
1564
1565 # Find the "sat_id" code for the header
1566 sat_id = 'UNKNOWN'
1567 for s in satellites:
1568 if s['scid'] == self.sid.scid:
1569 sat_id = s['proj_id']
1570 break
1571
1572 hdr0['ADURNH'] = self.duration >> 32
1573 hdr0['ADURNL'] = self.duration & 0xffffffff
1574 hdr0['PROJ'] = sat_id
1575 hdr0['FLAV'] = self.flav
1576 hdr0['ASSY'] = self.assembly_id
1577 hdr0['SFID'] = self.sfid
1578 hdr0['STIMEH'] = self.frequency >> 32
1579 hdr0['STIMEL'] = self.frequency & 0xffffffff
1580 hdr0['SLEN'] = self.snack_length
1581 hdr0['SNUM'] = self.snum
1582 if self.strt is None:
1583 hdr0['STRT'] = isp.ccsds_start_epoch
1584
1585 else:
1586 hdr0['STRT'] = cdstime_to_isptime(datetime_to_cdstime(self.strt))
1587
1588 if self.stop is None:
1589 hdr0['STOP'] = isp.ccsds_start_epoch
1590
1591 else:
1592 hdr0['STOP'] = cdstime_to_isptime(datetime_to_cdstime(self.stop))
1593
1594 hdr0['IDIOT'] = self.idiot % 65536
1595 hdr0['HEND'] = EDDE
1596
1597 # type1 = hdr.tostring()
1598 # self.fd.write(type1)
1599 # self.fd.seek(0)
1600 # self.fd.write(type1)
1601
1602 hdr.tofile(self.handle)
1603 self.handle.seek(0)
1604 hdr.tofile(self.handle)
1605
1606 self.handle.close()
1607 self.handle = None
1608
1609 if self.temp_filename and self.sid is not None:
1610 raise NotImplementedError()
1611 # filename = os.path.join(os.path.dirname(self.filename),
1612 # self.auto_filename())
1613
1614 # os.rename(self.filename, filename)
1615 # self.filename = filename
1616
1617 message('Wrote {count} bytes to {filename}'.format(
1618 count=128 + self.snum * (self.snack_length + 8),
1619 filename=self.filename))
1620
1621
1622class SFInMemory:
1623 """A combined SF00 read/write class implementing most methods of SFReader and SFWriter.
1624 The content is only held in memory and is used by the distiller module with the `ingest`
1625 option to distill and ingest native format PDUs without writing an intermediate file to
1626 disk.
1627 """
1628
1629 def __init__(self,
1630 assembly_id=None,
1631 mphr=None,
1632 sid=None,
1633 sfid=SFID_UNUSED):
1634 self.assembly_id = assembly_id
1635
1636 if sid is None:
1637 # if mphr is None:
1638 # raise Exception('Either sid or mphr must be specified')
1639 if mphr is not None:
1640 self.sid = SID(mphr['SPACECRAFT_ID'])
1641
1642 else:
1643 self.sid = None
1644
1645 else:
1646 self.sid = sid
1647
1648 # if self.sid is not None and self.sid.scid not in sat_ids:
1649 # raise ValueError('Unknown sid in MPHR: {scid}'.format(scid=self.scid))
1650
1651 self.snacks = []
1652 logging.debug('SFInMemory created assembly id {assy}'.format(assy=assembly_id))
1653 self.filename = '<memory>'
1654 self.stop_time = None
1655 self.sfid = sfid
1656
1657 # assert self.sid is None or isinstance(self.sid, SID)
1658
1659 def get_assembly_id(self):
1660 """See sf.py or timeseries table XML files for assembly ID values."""
1661 return self.assembly_id
1662
1663 # def get_sensing_start(self):
1664 # """Return sensing start of first snack.
1665 # Needed to decide whether to use APPEND_VALUES hint on Oracle ingester.
1666 # """
1667 # return self.snacks[0][0]
1668
1669 def write_snack(self, timestamp, snack):
1670 """Insert a snack. The timestamp should be a dictionary-like
1671 object containing DAYS and MILLISECONDS keys."""
1672 #logging.debug('SFInMemory snack '+str(timestamp))
1673 self.snacks.append((timestamp, snack))
1674
1675 # not stop time needs to be set to ms accuracy otherwise the DELETE
1676 # operation in `ingester --replace` will not delete enough rows
1677 self.stop_time = timestamp # assume snacks are time-ordered
1678
1679 def close(self, message=None):
1680 """Stub."""
1681 pass
1682
1683 def gen_snacks(self):
1684 """Access the stored snacks."""
1685 logging.debug('SFInMemory returns {count} snacks'.format(count=len(self.snacks)))
1686 return self.snacks
1687
1688 def get_sid(self):
1689 """Construct a SID from this object using project specific module."""
1690 return SID.from_sf(self)
1691
1692
1693class SFFilename:
1694 """Decode an SF standard filename into SID, sensing start and type.
1695
1696 >> from chart.common.path import Path
1697 >> s = SFFilename(Path('20110923061501Z_M02_MHS-ALL.SF00'))
1698 >> print('Sensing start: {start}, sid: {sid}'.format(start=s.sensing_start, sid=s.sid))
1699 Sensing start: 2011-09-23 06:15:01, sid: M02
1700 """
1701
1702 class NotSFFilename(BadFileError):
1703 """Invalid SF filename."""
1704
1705 def __init__(self, filename):
1706 super(SFFilename.NotSFFilename, self).__init__(None, filename)
1707
1708 def __str__(self):
1709 return '{path} is not an SF filename'.format(path=self.filename)
1710
1711 matcher = re.compile(
1712 r'^(?P<start>[0-9]{14})Z_(?P<spacecraft>[A-Z0-9-]+)_(?P<proj>[A-Z0-9-]+).SF00')
1713
1714 def __init__(self, filename):
1715 match = SFFilename.matcher.match(str(filename.name))
1716 if match is None:
1717 raise SFFilename.NotSFFilename(filename)
1718
1719 self.sid = None
1720 spacecraft = match.group('spacecraft')
1721
1722 # Correct these values which persist in some SF00 files
1723 if spacecraft == 'METOP-1' or spacecraft == 'METOP-2' or spacecraft == 'METOP-3':
1724 raise ValueError('Ambiguous spacecraft name in filename {fn}. '
1725 'Correct to use SID i.e. "M02" in filename'.format(fn=filename))
1726
1727 for s in satellites:
1728 if s['name'] == spacecraft or s['scid'] == spacecraft:
1729 self.sid = SID(s['scid'])
1730
1731 self.sensing_start = gentime_to_datetime(match.group('start'))
1732
1733 self.proj = match.group('proj')
1734
1735
1736def main():
1737 """Command line entry point."""
1738 parser = ArgumentParser()
1739 parser.add_argument('--filename', '-f',
1740 metavar='NAME',
1741 help='Read file NAME')
1742 parser.add_argument('--stats',
1743 action='store_true')
1744 # parser.add_argument('--time', '-t', type=ArgumentParser.datetime)
1745 args = parser.parse_args()
1746 # if args.filename:
1747 # sf = SFReader(args.filename)
1748
1749 if args.stats:
1750 sf = SFReader(args.filename)
1751 print('Start ', sf.sensing_start)
1752 print('Stop ', sf.sensing_stop)
1753 parser.exit()
1754
1755 parser.error('No actions specified')
1756
1757if __name__ == '__main__':
1758 main()