aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorData Path <data2path@gmail.com>2015-08-01 14:10:47 +0200
committerData Path <data2path@gmail.com>2015-08-01 14:10:47 +0200
commit7040531ab5484be1041e3b143398b2bd168a7086 (patch)
treee7e14bdfdbaa28d4053ff60bb91e8b1f66f168e4
parent905d2a6fdd5a0b6f0e75060a14ba8309da5db5bc (diff)
downloadetisnoop-7040531ab5484be1041e3b143398b2bd168a7086.tar.gz
etisnoop-7040531ab5484be1041e3b143398b2bd168a7086.tar.bz2
etisnoop-7040531ab5484be1041e3b143398b2bd168a7086.zip
Add FIG 0/28 decoding
-rw-r--r--etisnoop.cpp33
1 files changed, 33 insertions, 0 deletions
diff --git a/etisnoop.cpp b/etisnoop.cpp
index 2e7447e..841b69a 100644
--- a/etisnoop.cpp
+++ b/etisnoop.cpp
@@ -2759,6 +2759,39 @@ void decodeFIG(FIGalyser &figs,
}
}
break;
+ case 28: // FIG 0/28 FM Announcement switching
+ { // ETSI EN 300 401 8.1.11.2.2
+ unsigned short PI;
+ unsigned char i = 1, Cluster_Id_Current_Ensemble, Region_Id_Current_Ensemble;
+ bool New_flag, Rfa;
+ char tmpbuf[256];
+
+ while (i < (figlen - 3)) {
+ // iterate over FM announcement switching
+ Cluster_Id_Current_Ensemble = f[i];
+ New_flag = f[i+1] >> 7;
+ Rfa = (f[i+1] >> 6) & 0x01;
+ Region_Id_Current_Ensemble = f[i+1] & 0x3F;
+ PI = ((unsigned short)f[i+2] << 8) | (unsigned short)f[i+3];
+ sprintf(desc, "Cluster Id Current Ensemble=0x%X", Cluster_Id_Current_Ensemble);
+ if (Cluster_Id_Current_Ensemble == 0) {
+ strcat(desc, " invalid value");
+ fprintf(stderr, "WARNING: FIG %d/%d Cluster Id Current Ensemble invalid value 0\n", figtype, ext);
+ }
+ sprintf(tmpbuf, ", New flag=%d %s announcement",
+ New_flag, New_flag?"newly introduced":"repeated");
+ strcat(desc, tmpbuf);
+ if (Rfa != 0) {
+ sprintf(tmpbuf, ", Rfa=%d invalid value", Rfa);
+ strcat(desc, tmpbuf);
+ }
+ sprintf(tmpbuf, ", Region Id Current Ensemble=0x%X, PI=0x%X", Region_Id_Current_Ensemble, PI);
+ strcat(desc, tmpbuf);
+ printbuf(desc, indent+1, NULL, 0);
+ i += 4;
+ }
+ }
+ break;
}
}
break;