diff options
author | Data Path <data2path@gmail.com> | 2015-08-01 14:10:47 +0200 |
---|---|---|
committer | Data Path <data2path@gmail.com> | 2015-08-01 14:10:47 +0200 |
commit | 7040531ab5484be1041e3b143398b2bd168a7086 (patch) | |
tree | e7e14bdfdbaa28d4053ff60bb91e8b1f66f168e4 | |
parent | 905d2a6fdd5a0b6f0e75060a14ba8309da5db5bc (diff) | |
download | etisnoop-7040531ab5484be1041e3b143398b2bd168a7086.tar.gz etisnoop-7040531ab5484be1041e3b143398b2bd168a7086.tar.bz2 etisnoop-7040531ab5484be1041e3b143398b2bd168a7086.zip |
Add FIG 0/28 decoding
-rw-r--r-- | etisnoop.cpp | 33 |
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; |