From ba1ec17db61907aa90942f8eb2e31a71cdfc29f3 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Sun, 24 Apr 2011 09:24:13 +0200 Subject: [PATCH] upper mac: print MLE PDU type --- src/tetra_mle_pdu.c | 18 +++++++++++++++++- src/tetra_mle_pdu.h | 21 ++++++++++++++++++++- src/tetra_upper_mac.c | 4 ++++ 3 files changed, 41 insertions(+), 2 deletions(-) diff --git a/src/tetra_mle_pdu.c b/src/tetra_mle_pdu.c index 4ffb7d0..e138503 100644 --- a/src/tetra_mle_pdu.c +++ b/src/tetra_mle_pdu.c @@ -27,7 +27,7 @@ static const struct value_string mle_pdisc_names[] = { { TMLE_PDISC_MM, "MM" }, { TMLE_PDISC_CMCE, "CMCE" }, { TMLE_PDISC_SNDCP, "SNDCP" }, - { TMLE_PDUSC_MLE, "MLE" }, + { TMLE_PDISC_MLE, "MLE" }, { TMLE_PDISC_MGMT, "MGMT" }, { TMLE_PDISC_TEST, "TEST" }, { 0, NULL } @@ -36,3 +36,19 @@ const char *tetra_get_mle_pdisc_name(uint8_t pdisc) { return get_value_string(mle_pdisc_names, pdisc); } + +static const struct value_string mle_pdut_d_names[] = { + { TMLE_PDUT_D_NEW_CELL, "D-NEW CELL" }, + { TMLE_PDUT_D_PREPARE_FAIL, "D-PREPARE FAIL" }, + { TMLE_PDUT_D_NWRK_BROADCAST, "D-NWRK BROADCAST" }, + { TMLE_PDUT_D_NWRK_BROADCAST_EXT, "D-NWRK BROADCAST EXT" }, + { TMLE_PDUT_D_RESTORE_ACK, "D-RESTORE ACK" }, + { TMLE_PDUT_D_RESTORE_FAIL, "D-RESTORE FAIL" }, + { TMLE_PDUT_D_CHANNEL_RESPONSE, "D-CHANNEL RESPONSE" }, + { 0, NULL } +}; +const char *tetra_get_mle_pdut_name(unsigned int pdut, int uplink) +{ + /* FIXME: uplink */ + return get_value_string(mle_pdut_d_names, pdut); +} diff --git a/src/tetra_mle_pdu.h b/src/tetra_mle_pdu.h index cd9231f..0bad3c6 100644 --- a/src/tetra_mle_pdu.h +++ b/src/tetra_mle_pdu.h @@ -3,12 +3,31 @@ #include +/* 18.5.20 */ +enum tetra_mle_pdu_type_d { + TMLE_PDUT_D_NEW_CELL = 0, + TMLE_PDUT_D_PREPARE_FAIL = 1, + TMLE_PDUT_D_NWRK_BROADCAST = 2, + TMLE_PDUT_D_NWRK_BROADCAST_EXT = 3, + TMLE_PDUT_D_RESTORE_ACK = 4, + TMLE_PDUT_D_RESTORE_FAIL = 5, + TMLE_PDUT_D_CHANNEL_RESPONSE = 6 +}; +enum tetra_mle_pdu_type_u { + TMLE_PDUT_U_PREPARE = 0, + TMLE_PDUT_U_SECTOR_ADVICE = 2, + TMLE_PDUT_U_CHANNEL_ADVICE = 3, + TMLE_PDUT_U_RESTORE = 4, + TMLE_PDUT_U_CHANNEL_REQUEST = 6, +}; +const char *tetra_get_mle_pdut_name(unsigned int pdut, int uplink); + /* 18.5.21 */ enum tetra_mle_pdisc { TMLE_PDISC_MM = 1, TMLE_PDISC_CMCE = 2, TMLE_PDISC_SNDCP = 4, - TMLE_PDUSC_MLE = 5, + TMLE_PDISC_MLE = 5, TMLE_PDISC_MGMT = 6, TMLE_PDISC_TEST = 7, }; diff --git a/src/tetra_upper_mac.c b/src/tetra_upper_mac.c index 96c7c66..b68a520 100644 --- a/src/tetra_upper_mac.c +++ b/src/tetra_upper_mac.c @@ -33,6 +33,7 @@ #include "tetra_mm_pdu.h" #include "tetra_cmce_pdu.h" #include "tetra_sndcp_pdu.h" +#include "tetra_mle_pdu.h" #include "tetra_gsmtap.h" static void rx_bcast(struct tetra_tmvsap_prim *tmvp) @@ -99,6 +100,9 @@ static int rx_tm_sdu(uint8_t *bits, unsigned int len) case TMLE_PDISC_SNDCP: printf(" %s", tetra_get_sndcp_pdut_name(bits_to_uint(bits+3, 4), 0)); break; + case TMLE_PDISC_MLE: + printf(" %s", tetra_get_mle_pdut_name(bits_to_uint(bits+3, 3), 0)); + break; default: break; }