aboutsummaryrefslogtreecommitdiffstats
path: root/fig0_11.cpp
diff options
context:
space:
mode:
authorMatthias P. Braendli <matthias.braendli@mpb.li>2016-01-22 14:08:58 +0100
committerMatthias P. Braendli <matthias.braendli@mpb.li>2016-01-22 14:08:58 +0100
commit74e2beb5b80470a26054c8c51665996b10303f68 (patch)
tree55032f4b62aea432d03c8a49adfab51740b4640b /fig0_11.cpp
parente05c1b5903709651aac348fd5144de3ccbbd77a3 (diff)
downloadetisnoop-74e2beb5b80470a26054c8c51665996b10303f68.tar.gz
etisnoop-74e2beb5b80470a26054c8c51665996b10303f68.tar.bz2
etisnoop-74e2beb5b80470a26054c8c51665996b10303f68.zip
Add repetition rate analyser
Diffstat (limited to 'fig0_11.cpp')
-rw-r--r--fig0_11.cpp26
1 files changed, 25 insertions, 1 deletions
diff --git a/fig0_11.cpp b/fig0_11.cpp
index cc6bead..40136c3 100644
--- a/fig0_11.cpp
+++ b/fig0_11.cpp
@@ -28,10 +28,28 @@
#include <cstdio>
#include <cstring>
#include <map>
+#include <unordered_set>
+
+static std::unordered_set<int> region_ids_seen;
+
+bool fig0_11_is_complete(int region_id)
+{
+ bool complete = region_ids_seen.count(region_id);
+
+ if (complete) {
+ region_ids_seen.clear();
+ }
+ else {
+ region_ids_seen.insert(region_id);
+ }
+
+ return complete;
+}
+
// FIG 0/11 Region definition
// ETSI EN 300 401 8.1.16.1
-void fig0_11(fig0_common_t& fig0, int indent)
+bool fig0_11(fig0_common_t& fig0, int indent)
{
Lat_Lng gps_pos = {0, 0};
int16_t Latitude_coarse, Longitude_coarse;
@@ -43,12 +61,15 @@ void fig0_11(fig0_common_t& fig0, int indent)
bool GE_flag;
uint8_t* f = fig0.f;
uint8_t Mode_Identity = get_mode_identity();
+ bool complete = false;
while (i < (fig0.figlen - 1)) {
// iterate over Region definition
GATy = f[i] >> 4;
GE_flag = (f[i] >> 3) & 0x01;
Region_Id = ((uint16_t)(f[i] & 0x07) << 8) | ((uint16_t)f[i+1]);
+ complete |= fig0_11_is_complete(Region_Id);
+
key = ((uint16_t)fig0.oe() << 12) | ((uint16_t)fig0.pd() << 11) | Region_Id;
i += 2;
if (GATy == 0) {
@@ -182,4 +203,7 @@ void fig0_11(fig0_common_t& fig0, int indent)
i = fig0.figlen;
}
}
+
+ return complete;
}
+