summaryrefslogtreecommitdiff
path: root/epan/dissectors/packet-asterix.c
diff options
context:
space:
mode:
authorMarko Hrastovec <marko.hrastovec@gmail.com>2015-01-21 15:03:43 +0100
committerAlexis La Goutte <alexis.lagoutte@gmail.com>2015-01-22 09:01:03 +0000
commitf8fa70f4e8ceffe3603eb467ba47f19ba5abb90e (patch)
tree05a6cfa3726e8c5b5188cc3a3eb0bec60ad7127f /epan/dissectors/packet-asterix.c
parentdadf2c15b2d007a5d35ca8a72ec3373dc326302b (diff)
downloadwireshark-f8fa70f4e8ceffe3603eb467ba47f19ba5abb90e.tar.gz
Decoding of Asterix categories 063 and 065 extended to item decoding.
Categories 063 and 065 were decoded only partially. Now the dissector dissects all the items in these two categories. Change-Id: Ib8fd1d18327cbea668600f7376a6b83a270909a2 Reviewed-on: https://code.wireshark.org/review/6714 Petri-Dish: Alexis La Goutte <alexis.lagoutte@gmail.com> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
Diffstat (limited to 'epan/dissectors/packet-asterix.c')
-rw-r--r--epan/dissectors/packet-asterix.c362
1 files changed, 337 insertions, 25 deletions
diff --git a/epan/dissectors/packet-asterix.c b/epan/dissectors/packet-asterix.c
index 72450e9a30..167600a894 100644
--- a/epan/dissectors/packet-asterix.c
+++ b/epan/dissectors/packet-asterix.c
@@ -1145,25 +1145,54 @@ static gint hf_062_SP = -1;
/* Category 063 */
static gint hf_063_010 = -1;
static gint hf_063_015 = -1;
+static gint hf_063_015_SI = -1;
static gint hf_063_030 = -1;
static gint hf_063_050 = -1;
static gint hf_063_060 = -1;
+static gint hf_063_060_CON = -1;
+static gint hf_063_060_PSR = -1;
+static gint hf_063_060_SSR = -1;
+static gint hf_063_060_MDS = -1;
+static gint hf_063_060_ADS = -1;
+static gint hf_063_060_MLT = -1;
+static gint hf_063_060_OPS = -1;
+static gint hf_063_060_ODP = -1;
+static gint hf_063_060_OXT = -1;
+static gint hf_063_060_MSC = -1;
+static gint hf_063_060_TSV = -1;
+static gint hf_063_060_NPW = -1;
static gint hf_063_070 = -1;
+static gint hf_063_070_TSB = -1;
static gint hf_063_080 = -1;
+static gint hf_063_080_SRG = -1;
+static gint hf_063_080_SRB = -1;
static gint hf_063_081 = -1;
+static gint hf_063_081_SAB = -1;
static gint hf_063_090 = -1;
+static gint hf_063_090_PRG = -1;
+static gint hf_063_090_PRB = -1;
static gint hf_063_091 = -1;
+static gint hf_063_091_PAB = -1;
static gint hf_063_092 = -1;
+static gint hf_063_092_PEB = -1;
static gint hf_063_RE = -1;
static gint hf_063_SP = -1;
/* Category 065 */
static gint hf_065_000 = -1;
+static gint hf_065_000_MT = -1;
static gint hf_065_010 = -1;
static gint hf_065_015 = -1;
+static gint hf_065_015_SI = -1;
static gint hf_065_020 = -1;
+static gint hf_065_020_BTN = -1;
static gint hf_065_030 = -1;
static gint hf_065_040 = -1;
+static gint hf_065_040_NOGO = -1;
+static gint hf_065_040_OVL = -1;
+static gint hf_065_040_TSV = -1;
+static gint hf_065_040_PSS = -1;
static gint hf_065_050 = -1;
+static gint hf_065_050_REP = -1;
static gint hf_065_RE = -1;
static gint hf_065_SP = -1;
@@ -2276,27 +2305,56 @@ static gint ett_062_SP = -1;
/* Category 063 */
static gint ett_063_010 = -1;
static gint ett_063_015 = -1;
+static gint ett_063_015_SI = -1;
static gint ett_063_030 = -1;
static gint ett_063_050 = -1;
static gint ett_063_060 = -1;
+static gint ett_063_060_CON = -1;
+static gint ett_063_060_PSR = -1;
+static gint ett_063_060_SSR = -1;
+static gint ett_063_060_MDS = -1;
+static gint ett_063_060_ADS = -1;
+static gint ett_063_060_MLT = -1;
+static gint ett_063_060_OPS = -1;
+static gint ett_063_060_ODP = -1;
+static gint ett_063_060_OXT = -1;
+static gint ett_063_060_MSC = -1;
+static gint ett_063_060_TSV = -1;
+static gint ett_063_060_NPW = -1;
static gint ett_063_070 = -1;
+static gint ett_063_070_TSB = -1;
static gint ett_063_080 = -1;
+static gint ett_063_080_SRG = -1;
+static gint ett_063_080_SRB = -1;
static gint ett_063_081 = -1;
+static gint ett_063_081_SAB = -1;
static gint ett_063_090 = -1;
+static gint ett_063_090_PRG = -1;
+static gint ett_063_090_PRB = -1;
static gint ett_063_091 = -1;
+static gint ett_063_091_PAB = -1;
static gint ett_063_092 = -1;
+static gint ett_063_092_PEB = -1;
static gint ett_063_RE = -1;
static gint ett_063_SP = -1;
/* Category 065 */
static gint ett_065_000 = -1;
+static gint ett_065_000_MT = -1;
static gint ett_065_010 = -1;
static gint ett_065_015 = -1;
+static gint ett_065_015_SI = -1;
static gint ett_065_020 = -1;
+static gint ett_065_020_BTN = -1;
static gint ett_065_030 = -1;
static gint ett_065_040 = -1;
+static gint ett_065_040_NOGO = -1;
+static gint ett_065_040_OVL = -1;
+static gint ett_065_040_TSV = -1;
+static gint ett_065_040_PSS = -1;
static gint ett_065_050 = -1;
-static gint ett_065_RE = -1;
-static gint ett_065_SP = -1;
+static gint ett_065_050_REP = -1;
+static gint ett_065_RE = -1;
+static gint ett_065_SP = -1;
static dissector_handle_t asterix_handle;
@@ -5740,7 +5798,7 @@ static const FieldPart I062_380_20_WD_VAL = { 16, 1.0, FIELD_PART_UFLOAT, &hf_06
static const FieldPart I062_380_20_TMP_VAL = { 16, 1.0/4.0, FIELD_PART_FLOAT, &hf_062_380_20_TMP_VAL, NULL };
static const FieldPart I062_380_20_TRB_VAL = { 8, 1.0, FIELD_PART_UINT, &hf_062_380_20_TRB_VAL, NULL };
static const FieldPart *I062_380_20_PARTS[] = { &I062_380_20_WS, &I062_380_20_WD, &I062_380_20_TMP, &I062_380_20_TRB, &IXXX_4bit_spare,
- &I062_380_20_WS_VAL, &I062_380_20_WD_VAL, &I062_380_20_TMP_VAL, &I062_380_20_TRB_VAL, NULL };
+ &I062_380_20_WS_VAL, &I062_380_20_WD_VAL, &I062_380_20_TMP_VAL, &I062_380_20_TRB_VAL, NULL };
/* Emitter Category */
static const value_string valstr_062_380_21_ECAT[] = {
@@ -6413,19 +6471,138 @@ static const enum_val_t I062_versions[] = {
/* *********************** */
/* Fields */
+/* Service Identification */
+static const FieldPart I063_015_SI = { 8, 1.0, FIELD_PART_UINT, &hf_063_015_SI, NULL };
+static const FieldPart *I063_015_PARTS[] = { &I063_015_SI, NULL };
+
+/* Sensor Configuration and Status */
+static const value_string valstr_063_060_CON[] = {
+ { 0, "operational"},
+ { 1, "degraded"},
+ { 2, "initialization"},
+ { 3, "not currently connected"},
+ { 0, NULL}
+};
+
+static const value_string valstr_063_060_PSR[] = {
+ { 0, "PSR GO"},
+ { 1, "PSR NOGO"},
+ { 0, NULL}
+};
+
+static const value_string valstr_063_060_SSR[] = {
+ { 0, "SSR GO"},
+ { 1, "SSR NOGO"},
+ { 0, NULL}
+};
+
+static const value_string valstr_063_060_MDS[] = {
+ { 0, "Mode S GO"},
+ { 1, "Mode S NOGO"},
+ { 0, NULL}
+};
+
+static const value_string valstr_063_060_ADS[] = {
+ { 0, "ADS GO"},
+ { 1, "ADS NOGO"},
+ { 0, NULL}
+};
+
+static const value_string valstr_063_060_MLT[] = {
+ { 0, "MLT GO"},
+ { 1, "MLT NOGO"},
+ { 0, NULL}
+};
+
+static const value_string valstr_063_060_OPS[] = {
+ { 0, "System is released for operational use"},
+ { 1, "Operational use of System is inhibited"},
+ { 0, NULL}
+};
+
+static const value_string valstr_063_060_ODP[] = {
+ { 0, "Default, no overload"},
+ { 1, "Overload in DP"},
+ { 0, NULL}
+};
+
+static const value_string valstr_063_060_OXT[] = {
+ { 0, "Default, no overload"},
+ { 1, "Overload in transmission subsystem"},
+ { 0, NULL}
+};
+
+static const value_string valstr_063_060_MSC[] = {
+ { 0, "Monitoring system connected"},
+ { 1, "Monitoring system disconnected"},
+ { 0, NULL}
+};
+
+static const value_string valstr_063_060_TSV[] = {
+ { 0, "valid"},
+ { 1, "invalid"},
+ { 0, NULL}
+};
+
+static const value_string valstr_063_060_NPW[] = {
+ { 0, "Default (no meaning)"},
+ { 1, "No plots being received"},
+ { 0, NULL}
+};
+
+static const FieldPart I063_060_CON = { 2, 1.0, FIELD_PART_UINT, &hf_063_060_CON, NULL };
+static const FieldPart I063_060_PSR = { 1, 1.0, FIELD_PART_UINT, &hf_063_060_PSR, NULL };
+static const FieldPart I063_060_SSR = { 1, 1.0, FIELD_PART_UINT, &hf_063_060_SSR, NULL };
+static const FieldPart I063_060_MDS = { 1, 1.0, FIELD_PART_UINT, &hf_063_060_MDS, NULL };
+static const FieldPart I063_060_ADS = { 1, 1.0, FIELD_PART_UINT, &hf_063_060_ADS, NULL };
+static const FieldPart I063_060_MLT = { 1, 1.0, FIELD_PART_UINT, &hf_063_060_MLT, NULL };
+static const FieldPart I063_060_OPS = { 1, 1.0, FIELD_PART_UINT, &hf_063_060_OPS, NULL };
+static const FieldPart I063_060_ODP = { 1, 1.0, FIELD_PART_UINT, &hf_063_060_ODP, NULL };
+static const FieldPart I063_060_OXT = { 1, 1.0, FIELD_PART_UINT, &hf_063_060_OXT, NULL };
+static const FieldPart I063_060_MSC = { 1, 1.0, FIELD_PART_UINT, &hf_063_060_MSC, NULL };
+static const FieldPart I063_060_TSV = { 1, 1.0, FIELD_PART_UINT, &hf_063_060_TSV, NULL };
+static const FieldPart I063_060_NPW = { 1, 1.0, FIELD_PART_UINT, &hf_063_060_NPW, NULL };
+static const FieldPart *I063_060_PARTS[] = { &I063_060_CON, &I063_060_PSR, &I063_060_SSR, &I063_060_MDS, &I063_060_ADS, &I063_060_MLT, &IXXX_FX,
+ &I063_060_OPS, &I063_060_ODP, &I063_060_OXT, &I063_060_MSC, &I063_060_TSV, &I063_060_NPW, &IXXX_1bit_spare, &IXXX_FX, NULL };
+
+/* Time Stamping Bias */
+static const FieldPart I063_070_TSB = { 16, 1.0, FIELD_PART_UFLOAT, &hf_063_070_TSB, NULL };
+static const FieldPart *I063_070_PARTS[] = { &I063_070_TSB, NULL };
+
+/* SSR / Mode S Range Gain and Bias */
+static const FieldPart I063_080_SRG = { 16, 0.00001, FIELD_PART_FLOAT, &hf_063_080_SRG, NULL };
+static const FieldPart I063_080_SRB = { 16, 1.0 / 128.0, FIELD_PART_FLOAT, &hf_063_080_SRB, NULL };
+static const FieldPart *I063_080_PARTS[] = { &I063_080_SRG, &I063_080_SRB, NULL };
+
+/* SSR / MOde S Azimuth Bias */
+static const FieldPart I063_081_SAB = { 16, 360.0 / 65536.0, FIELD_PART_FLOAT, &hf_063_081_SAB, NULL };
+static const FieldPart *I063_081_PARTS[] = { &I063_081_SAB, NULL };
+
+/* PSR Range Gain and Bias */
+static const FieldPart I063_090_PRG = { 16, 0.00001, FIELD_PART_FLOAT, &hf_063_090_PRG, NULL };
+static const FieldPart I063_090_PRB = { 16, 1.0 / 128.0, FIELD_PART_FLOAT, &hf_063_090_PRB, NULL };
+static const FieldPart *I063_090_PARTS[] = { &I063_090_PRG, &I063_090_PRB, NULL };
+
+/* PSR Azimuth Bias */
+static const FieldPart I063_091_PAB = { 16, 360.0 / 65536.0, FIELD_PART_FLOAT, &hf_063_091_PAB, NULL };
+static const FieldPart *I063_091_PARTS[] = { &I063_091_PAB, NULL };
+
+/* PSR Elevation Bias */
+static const FieldPart I063_092_PEB = { 16, 360.0 / 65536.0, FIELD_PART_FLOAT, &hf_063_092_PEB, NULL };
+static const FieldPart *I063_092_PARTS[] = { &I063_092_PEB, NULL };
/* Items */
static const AsterixField I063_010 = { FIXED, 2, 0, 0, &hf_063_010, IXXX_SAC_SIC, { NULL } };
-static const AsterixField I063_015 = { FIXED, 1, 0, 0, &hf_063_015, NULL, { NULL } };
+static const AsterixField I063_015 = { FIXED, 1, 0, 0, &hf_063_015, I063_015_PARTS, { NULL } };
static const AsterixField I063_030 = { FIXED, 3, 0, 0, &hf_063_030, IXXX_TOD, { NULL } };
static const AsterixField I063_050 = { FIXED, 2, 0, 0, &hf_063_050, IXXX_SAC_SIC, { NULL } };
-static const AsterixField I063_060 = { FX, 1, 0, 0, &hf_063_060, NULL, { NULL } };
-static const AsterixField I063_070 = { FIXED, 2, 0, 0, &hf_063_070, NULL, { NULL } };
-static const AsterixField I063_080 = { FIXED, 4, 0, 0, &hf_063_080, NULL, { NULL } };
-static const AsterixField I063_081 = { FIXED, 2, 0, 0, &hf_063_081, NULL, { NULL } };
-static const AsterixField I063_090 = { FIXED, 4, 0, 0, &hf_063_090, NULL, { NULL } };
-static const AsterixField I063_091 = { FIXED, 2, 0, 0, &hf_063_091, NULL, { NULL } };
-static const AsterixField I063_092 = { FIXED, 2, 0, 0, &hf_063_092, NULL, { NULL } };
+static const AsterixField I063_060 = { FX, 1, 0, 0, &hf_063_060, I063_060_PARTS, { NULL } };
+static const AsterixField I063_070 = { FIXED, 2, 0, 0, &hf_063_070, I063_070_PARTS, { NULL } };
+static const AsterixField I063_080 = { FIXED, 4, 0, 0, &hf_063_080, I063_080_PARTS, { NULL } };
+static const AsterixField I063_081 = { FIXED, 2, 0, 0, &hf_063_081, I063_081_PARTS, { NULL } };
+static const AsterixField I063_090 = { FIXED, 4, 0, 0, &hf_063_090, I063_090_PARTS, { NULL } };
+static const AsterixField I063_091 = { FIXED, 2, 0, 0, &hf_063_091, I063_091_PARTS, { NULL } };
+static const AsterixField I063_092 = { FIXED, 2, 0, 0, &hf_063_092, I063_092_PARTS, { NULL } };
static const AsterixField I063_RE = { RE, 0, 0, 1, &hf_063_RE, NULL, { NULL } };
static const AsterixField I063_SP = { SP, 0, 0, 1, &hf_063_SP, NULL, { NULL } };
@@ -6444,15 +6621,92 @@ static const enum_val_t I063_versions[] = {
/* *********************** */
/* Fields */
+/* Message Type */
+static const value_string valstr_065_000_MT[] = {
+ { 0, "SDPS Status" },
+ { 1, "End of Batch" },
+ { 2, "Service Status Report" },
+ { 0, NULL }
+};
+
+static const FieldPart I065_000_MT = { 8, 1.0, FIELD_PART_UINT, &hf_065_000_MT, NULL };
+static const FieldPart *I065_000_PARTS[] = { &I065_000_MT, NULL };
+
+/* Service Identification */
+static const FieldPart I065_015_SI = { 8, 1.0, FIELD_PART_UINT, &hf_065_015_SI, NULL };
+static const FieldPart *I065_015_PARTS[] = { &I065_015_SI, NULL };
+
+/* Batch Number */
+static const FieldPart I065_020_BTN = { 8, 1.0, FIELD_PART_UINT, &hf_065_020_BTN, NULL };
+static const FieldPart *I065_020_PARTS[] = { &I065_020_BTN, NULL };
+
+/* SDPS Configuration and Status */
+static const value_string valstr_065_040_NOGO[] = {
+ { 0, "operational" },
+ { 1, "degraded" },
+ { 2, "not currently connected" },
+ { 3, "unknown" },
+ { 0, NULL }
+};
+
+static const value_string valstr_065_040_OVL[] = {
+ { 0, "Default" },
+ { 1, "Overload" },
+ { 0, NULL }
+};
+
+static const value_string valstr_065_040_TSV[] = {
+ { 0, "Default" },
+ { 1, "Invalid Time Source" },
+ { 0, NULL }
+};
+
+static const value_string valstr_065_040_PSS[] = {
+ { 0, "not applicable" },
+ { 1, "SDPS-1 selected" },
+ { 2, "SDPS-2 selected" },
+ { 3, "SDPS-3 selected" },
+ { 0, NULL }
+};
+
+static const FieldPart I065_040_NOGO = { 2, 1.0, FIELD_PART_UINT, &hf_065_040_NOGO, NULL };
+static const FieldPart I065_040_OVL = { 1, 1.0, FIELD_PART_UINT, &hf_065_040_OVL, NULL };
+static const FieldPart I065_040_TSV = { 1, 1.0, FIELD_PART_UINT, &hf_065_040_TSV, NULL };
+static const FieldPart I065_040_PSS = { 2, 1.0, FIELD_PART_UINT, &hf_065_040_PSS, NULL };
+static const FieldPart *I065_040_PARTS[] = { &I065_040_NOGO, &I065_040_OVL, &I065_040_TSV, &I065_040_PSS, &IXXX_2bit_spare, NULL };
+
+/* Service Status Report */
+static const value_string valstr_065_050_REP[] = {
+ { 1, "service degradation" },
+ { 2, "service degradation ended" },
+ { 3, "main radar out of service" },
+ { 4, "service interrupted by the operator" },
+ { 5, "service interrupted due to contingency" },
+ { 6, "ready for service restart after contingency" },
+ { 7, "service ended by the operator" },
+ { 8, "failure of user main radar" },
+ { 9, "service restarted by the operator" },
+ { 10, "main radar becoming operational" },
+ { 11, "main radar becoming degraded" },
+ { 12, "service continuity interrupted due to disconnection with adjacent unit" },
+ { 13, "service continuity restarted" },
+ { 14, "service synchronised on backup radar" },
+ { 15, "service synchronised on main radar" },
+ { 16, "main and backup radar, if any, failed" },
+ { 0, NULL }
+};
+
+static const FieldPart I065_050_REP = { 8, 1.0, FIELD_PART_UINT, &hf_065_050_REP, NULL };
+static const FieldPart *I065_050_PARTS[] = { &I065_050_REP, NULL };
/* Items */
-static const AsterixField I065_000 = { FIXED, 1, 0, 0, &hf_065_000, NULL, { NULL } };
+static const AsterixField I065_000 = { FIXED, 1, 0, 0, &hf_065_000, I065_000_PARTS, { NULL } };
static const AsterixField I065_010 = { FIXED, 2, 0, 0, &hf_065_010, IXXX_SAC_SIC, { NULL } };
-static const AsterixField I065_015 = { FIXED, 1, 0, 0, &hf_065_015, NULL, { NULL } };
-static const AsterixField I065_020 = { FIXED, 1, 0, 0, &hf_065_020, NULL, { NULL } };
+static const AsterixField I065_015 = { FIXED, 1, 0, 0, &hf_065_015, I065_015_PARTS, { NULL } };
+static const AsterixField I065_020 = { FIXED, 1, 0, 0, &hf_065_020, I065_020_PARTS, { NULL } };
static const AsterixField I065_030 = { FIXED, 3, 0, 0, &hf_065_030, IXXX_TOD, { NULL } };
-static const AsterixField I065_040 = { FIXED, 1, 0, 0, &hf_065_040, NULL, { NULL } };
-static const AsterixField I065_050 = { FIXED, 1, 0, 0, &hf_065_050, NULL, { NULL } };
+static const AsterixField I065_040 = { FIXED, 1, 0, 0, &hf_065_040, I065_040_PARTS, { NULL } };
+static const AsterixField I065_050 = { FIXED, 1, 0, 0, &hf_065_050, I065_050_PARTS, { NULL } };
static const AsterixField I065_RE = { RE, 0, 0, 1, &hf_065_RE, NULL, { NULL } };
static const AsterixField I065_SP = { SP, 0, 0, 1, &hf_065_SP, NULL, { NULL } };
@@ -8405,27 +8659,56 @@ void proto_register_asterix (void)
/* Category 063 */
{ &hf_063_010, { "010, Data Source Identifier", "asterix.063_010", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_063_015, { "015, Service Identification", "asterix.063_015", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_063_015_SI, { "SI", "asterix.063_015_SI", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_063_030, { "030, Time of Message", "asterix.063_030", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_063_050, { "050, Sensor Identifier", "asterix.063_050", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_063_060, { "060, Sensor Configuration and Status", "asterix.063_060", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_063_060_CON, { "CON", "asterix.063_060_CON", FT_UINT8, BASE_DEC, VALS(valstr_063_060_CON), 0xc0, NULL, HFILL } },
+ { &hf_063_060_PSR, { "PSR", "asterix.063_060_PSR", FT_UINT8, BASE_DEC, VALS(valstr_063_060_PSR), 0x20, NULL, HFILL } },
+ { &hf_063_060_SSR, { "SSR", "asterix.063_060_SSR", FT_UINT8, BASE_DEC, VALS(valstr_063_060_SSR), 0x10, NULL, HFILL } },
+ { &hf_063_060_MDS, { "MDS", "asterix.063_060_MDS", FT_UINT8, BASE_DEC, VALS(valstr_063_060_MDS), 0x08, NULL, HFILL } },
+ { &hf_063_060_ADS, { "ADS", "asterix.063_060_ADS", FT_UINT8, BASE_DEC, VALS(valstr_063_060_ADS), 0x04, NULL, HFILL } },
+ { &hf_063_060_MLT, { "MLT", "asterix.063_060_MLT", FT_UINT8, BASE_DEC, VALS(valstr_063_060_MLT), 0x02, NULL, HFILL } },
+ { &hf_063_060_OPS, { "OPS", "asterix.063_060_OPS", FT_UINT8, BASE_DEC, VALS(valstr_063_060_OPS), 0x80, NULL, HFILL } },
+ { &hf_063_060_ODP, { "ODP", "asterix.063_060_ODP", FT_UINT8, BASE_DEC, VALS(valstr_063_060_ODP), 0x40, NULL, HFILL } },
+ { &hf_063_060_OXT, { "OXT", "asterix.063_060_OXT", FT_UINT8, BASE_DEC, VALS(valstr_063_060_OXT), 0x20, NULL, HFILL } },
+ { &hf_063_060_MSC, { "MSC", "asterix.063_060_MSC", FT_UINT8, BASE_DEC, VALS(valstr_063_060_MSC), 0x10, NULL, HFILL } },
+ { &hf_063_060_TSV, { "TSV", "asterix.063_060_TSV", FT_UINT8, BASE_DEC, VALS(valstr_063_060_TSV), 0x08, NULL, HFILL } },
+ { &hf_063_060_NPW, { "NPW", "asterix.063_060_NPW", FT_UINT8, BASE_DEC, VALS(valstr_063_060_NPW), 0x04, NULL, HFILL } },
{ &hf_063_070, { "070, Time Stamping Bias", "asterix.063_070", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_063_070_TSB, {"TSB[ms]", "asterix.063_070_TSB", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_063_080, { "080, SSR / Mode S Range Gain and Bias", "asterix.063_080", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_063_080_SRG, {"SRG", "asterix.063_080_SRG", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_063_080_SRB, {"SRB", "asterix.063_080_SRB", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_063_081, { "081, SSR / Mode S Azimuth Bias", "asterix.063_081", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_063_081_SAB, {"SAB", "asterix.063_081_SAB", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_063_090, { "090, PSR Range Gain and Bias", "asterix.063_090", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_063_090_PRG, {"PRG", "asterix.063_090_SRG", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_063_090_PRB, {"PRB", "asterix.063_090_PRB", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_063_091, { "091, PSR Azimuth Bias", "asterix.063_091", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_063_091_PAB, {"PAB", "asterix.063_091_PAB", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_063_092, { "092, PSR Elevation Bias", "asterix.063_092", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_063_092_PEB, {"PEB", "asterix.063_092_PEB", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_063_RE, { "Reserved Expansion Field", "asterix.063_RE", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_063_SP, { "Special Purpose Field", "asterix.063_SP", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
/* Category 065 */
- { &hf_065_000, { "000, Message Type", "asterix.063_000", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
- { &hf_065_010, { "010, Data Source Identifier", "asterix.063_010", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
- { &hf_065_015, { "015, Service Identification", "asterix.063_015", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
- { &hf_065_020, { "020, Batch Number", "asterix.063_020", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
- { &hf_065_030, { "030, Time of Message", "asterix.063_030", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
- { &hf_065_040, { "040, SDPS Configuration and Status", "asterix.063_040", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
- { &hf_065_050, { "050, Service Status Report", "asterix.063_050", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
- { &hf_065_RE, { "Reserved Expansion Field", "asterix.063_RE", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
- { &hf_065_SP, { "Special Purpose Field", "asterix.063_SP", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_065_000, { "000, Message Type", "asterix.065_000", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_065_000_MT, { "MT", "asterix.065_000_MT", FT_UINT8, BASE_DEC, VALS(valstr_065_000_MT), 0x0, NULL, HFILL } },
+ { &hf_065_010, { "010, Data Source Identifier", "asterix.065_010", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_065_015, { "015, Service Identification", "asterix.065_015", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_065_015_SI, { "SI", "asterix.065_015_SI", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_065_020, { "020, Batch Number", "asterix.065_020", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_065_020_BTN, { "BTN", "asterix.065_020_BTN", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_065_030, { "030, Time of Message", "asterix.065_030", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_065_040, { "040, SDPS Configuration and Status", "asterix.065_040", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_065_040_NOGO, { "NOGO", "asterix.065_040_NOGO", FT_UINT8, BASE_DEC, VALS(valstr_065_040_NOGO), 0xc0, NULL, HFILL } },
+ { &hf_065_040_OVL, { "OVL", "asterix.065_040_OVL", FT_UINT8, BASE_DEC, VALS(valstr_065_040_OVL), 0x20, NULL, HFILL } },
+ { &hf_065_040_TSV, { "TSV", "asterix.065_040_TSV", FT_UINT8, BASE_DEC, VALS(valstr_065_040_TSV), 0x10, NULL, HFILL } },
+ { &hf_065_040_PSS, { "PSS", "asterix.065_040_PSS", FT_UINT8, BASE_DEC, VALS(valstr_065_040_PSS), 0x0c, NULL, HFILL } },
+ { &hf_065_050, { "050, Service Status Report", "asterix.065_050", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_065_050_REP, { "REP", "asterix.065_050_REP", FT_UINT8, BASE_DEC, VALS(valstr_065_050_REP), 0x0, NULL, HFILL } },
+ { &hf_065_RE, { "Reserved Expansion Field", "asterix.065_RE", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_065_SP, { "Special Purpose Field", "asterix.065_SP", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
};
/* Setup protocol subtree array */
@@ -9538,25 +9821,54 @@ void proto_register_asterix (void)
/* Category 063 */
&ett_063_010,
&ett_063_015,
+ &ett_063_015_SI,
&ett_063_030,
&ett_063_050,
&ett_063_060,
+ &ett_063_060_CON,
+ &ett_063_060_PSR,
+ &ett_063_060_SSR,
+ &ett_063_060_MDS,
+ &ett_063_060_ADS,
+ &ett_063_060_MLT,
+ &ett_063_060_OPS,
+ &ett_063_060_ODP,
+ &ett_063_060_OXT,
+ &ett_063_060_MSC,
+ &ett_063_060_TSV,
+ &ett_063_060_NPW,
&ett_063_070,
+ &ett_063_070_TSB,
&ett_063_080,
+ &ett_063_080_SRG,
+ &ett_063_080_SRB,
&ett_063_081,
+ &ett_063_081_SAB,
&ett_063_090,
+ &ett_063_090_PRG,
+ &ett_063_090_PRB,
&ett_063_091,
+ &ett_063_091_PAB,
&ett_063_092,
+ &ett_063_092_PEB,
&ett_063_RE,
&ett_063_SP,
/* Category 065 */
&ett_065_000,
+ &ett_065_000_MT,
&ett_065_010,
&ett_065_015,
+ &ett_065_015_SI,
&ett_065_020,
+ &ett_065_020_BTN,
&ett_065_030,
&ett_065_040,
+ &ett_065_040_NOGO,
+ &ett_065_040_OVL,
+ &ett_065_040_TSV,
+ &ett_065_040_PSS,
&ett_065_050,
+ &ett_065_050_REP,
&ett_065_RE,
&ett_065_SP
};