diff options
-rw-r--r-- | include/grgsm/misc_utils/extract_cmc.h | 1 | ||||
-rw-r--r-- | lib/misc_utils/extract_cmc_impl.cc | 12 | ||||
-rw-r--r-- | lib/misc_utils/extract_cmc_impl.h | 2 |
3 files changed, 14 insertions, 1 deletions
diff --git a/include/grgsm/misc_utils/extract_cmc.h b/include/grgsm/misc_utils/extract_cmc.h index 2b07bbe..82bd729 100644 --- a/include/grgsm/misc_utils/extract_cmc.h +++ b/include/grgsm/misc_utils/extract_cmc.h @@ -53,6 +53,7 @@ namespace gr { virtual std::vector<int> get_framenumbers() = 0; virtual std::vector<int> get_a5_versions() = 0; virtual std::vector<int> get_start_ciphering() = 0; + virtual std::vector<int> get_assignment_commands() = 0; }; } // namespace gsm diff --git a/lib/misc_utils/extract_cmc_impl.cc b/lib/misc_utils/extract_cmc_impl.cc index 16f2f6b..c28e49f 100644 --- a/lib/misc_utils/extract_cmc_impl.cc +++ b/lib/misc_utils/extract_cmc_impl.cc @@ -40,7 +40,7 @@ namespace gr { gsmtap_hdr * header = (gsmtap_hdr *)message_plus_header; uint8_t * msg_elements = (uint8_t *)(message_plus_header+sizeof(gsmtap_hdr)); - if((msg_elements[3] & 0xF) == 0x6 && msg_elements[4] == 0x35) + if((msg_elements[3] & 0xFF) == 0x06 && msg_elements[4] == 0x35) { int frame_nr = be32toh(header->frame_number); @@ -50,6 +50,11 @@ namespace gr { d_framenumbers.push_back(frame_nr); d_a5_versions.push_back(a5_version); } + if((msg_elements[3] & 0xFF) == 0x06 && msg_elements[4] == 0x2e) + { + int frame_nr = be32toh(header->frame_number); + d_assignment_commands.push_back(frame_nr); + } } std::vector<int> extract_cmc_impl::get_framenumbers() @@ -67,6 +72,11 @@ namespace gr { return d_start_ciphering; } + std::vector<int> extract_cmc_impl::get_assignment_commands() + { + return d_assignment_commands; + } + extract_cmc::sptr extract_cmc::make() { diff --git a/lib/misc_utils/extract_cmc_impl.h b/lib/misc_utils/extract_cmc_impl.h index b62cadc..1dd02cb 100644 --- a/lib/misc_utils/extract_cmc_impl.h +++ b/lib/misc_utils/extract_cmc_impl.h @@ -35,10 +35,12 @@ namespace gr { std::vector<int> d_framenumbers; std::vector<int> d_a5_versions; std::vector<int> d_start_ciphering; + std::vector<int> d_assignment_commands; public: virtual std::vector<int> get_framenumbers(); virtual std::vector<int> get_a5_versions(); virtual std::vector<int> get_start_ciphering(); + virtual std::vector<int> get_assignment_commands(); extract_cmc_impl(); ~extract_cmc_impl(); }; |