From 7040531ab5484be1041e3b143398b2bd168a7086 Mon Sep 17 00:00:00 2001 From: Data Path Date: Sat, 1 Aug 2015 14:10:47 +0200 Subject: Add FIG 0/28 decoding --- etisnoop.cpp | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'etisnoop.cpp') 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; -- cgit v1.2.3