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()