[w-scan] 01/05: New upstream version 20161022

Tobias Grimm tiber-guest at moszumanska.debian.org
Sat Nov 5 10:22:35 UTC 2016


This is an automated email from the git hooks/post-receive script.

tiber-guest pushed a commit to branch master
in repository w-scan.

commit 822fdb48e37fff05feea1e2e591896eab88a708a
Author: Tobias Grimm <git at e-tobi.net>
Date:   Sat Nov 5 09:57:31 2016 +0100

    New upstream version 20161022
---
 ChangeLog      |  35 +++++
 config.h       |   6 +-
 configure      |  20 +--
 configure.in   |   2 +-
 countries.c    |  57 ++++++-
 countries.h    |   4 +
 descriptors.c  | 337 +++++++++++++++++++-----------------------
 diseqc.c       |   2 +-
 dump-vdr.c     | 221 +++++++++++++++++++--------
 dump-xml.c     |  10 +-
 emulate.c      | 163 ++++++++++++++++++--
 satellites.dat | 460 +++++++++++++++++++++++++++++++--------------------------
 satellites.h   |   1 +
 scan.c         | 308 ++++++++++++++++++++------------------
 si_types.h     |  29 ++--
 tools.c        |  82 +++++++++-
 tools.h        |   3 +-
 version.h      |   2 +-
 18 files changed, 1087 insertions(+), 655 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 66fade6..ea76c3b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,40 @@
 ChangeLog:
 --------------------
+2015-01-01
+ - check data for descriptor 0x83 to be multiple of 4bytes;
+   On S4E8 0x83 seems to be used for something different as LCN and
+   caused segfault if read in 4byte packets.
+   May be this abuse of 0x83 renders parsing of LCN unusable at all.
+ - find_transponder_by_freq(): fix logging (add missing print_transponder() calls)
+ - emulated dvb device;
+   now accept DVB-S/S2 logs down to 20130331. However, logs earlier
+   than 20140529 are missing last two bytes in SI data hexdumps. :(
+ - modify scan algorithm for tsid, onid, nid;
+   On S4E8, PAT transports wrong transport_stream_id - and therefore
+   scan was endless loop. :(
+   This was actually not an w_scan error, it is an error in sats si
+   tables.
+   1. find_transponder()
+      - now do a strict check for (ONID,NID,TSID); check all 3 pids.
+   2. check_duplicate_transponders()
+      - copy NIT updated tp props from deleted tp to remaining tp,
+        if remaining tp was not yet updated. Sync ids as well.
+      - new function copy_duplicate_tp() to not have this copy several times.
+   3. parse_pat()
+      - update tsid for TERR scans only. On terr scans, freq may be '0' or
+        completely wrong in NIT and find_transponder_by_freq() cannot find
+        those transponders otherwise.
+   4. parse_nit()
+      - move update of (ONID,NID,TSID) to later position, where also tp props
+        are updated. Code easier to read this way.
+      - call check_duplicate_transponders() as soon as new tp was added from
+        NIT.
+   5. tune_to_transponder()
+      - add missing polarization check for sat - this one is a bug fix.
+ - vdr output: update translation table for satname: w_scan <-> VDR
+ - scr_cmd: fix FE_DISEQC_SEND_MASTER_CMD data pointer.
+ - update S4E8 transponder list
+
 2014-11-22
  - move '-lrt' from LDFLAGS to AM_LDFLAGS
  - move nested function LeapYear() outside modified_julian_date_to_utc()
diff --git a/config.h b/config.h
index 7dd8016..045d1b4 100644
--- a/config.h
+++ b/config.h
@@ -60,7 +60,7 @@
 #define PACKAGE_NAME "w_scan"
 
 /* Define to the full name and version of this package. */
-#define PACKAGE_STRING "w_scan 20141122"
+#define PACKAGE_STRING "w_scan 20161022"
 
 /* Define to the one symbol short name of this package. */
 #define PACKAGE_TARNAME "w_scan"
@@ -69,7 +69,7 @@
 #define PACKAGE_URL ""
 
 /* Define to the version of this package. */
-#define PACKAGE_VERSION "20141122"
+#define PACKAGE_VERSION "20161022"
 
 /* Define to 1 if you have the ANSI C header files. */
 #define STDC_HEADERS 1
@@ -97,7 +97,7 @@
 
 
 /* Version number of package */
-#define VERSION "20141122"
+#define VERSION "20161022"
 
 /* Define to 1 if on MINIX. */
 /* #undef _MINIX */
diff --git a/configure b/configure
index b36c02b..f26f2e7 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for w_scan 20141122.
+# Generated by GNU Autoconf 2.68 for w_scan 20161022.
 #
 #
 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -557,8 +557,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='w_scan'
 PACKAGE_TARNAME='w_scan'
-PACKAGE_VERSION='20141122'
-PACKAGE_STRING='w_scan 20141122'
+PACKAGE_VERSION='20161022'
+PACKAGE_STRING='w_scan 20161022'
 PACKAGE_BUGREPORT=''
 PACKAGE_URL=''
 
@@ -1240,7 +1240,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures w_scan 20141122 to adapt to many kinds of systems.
+\`configure' configures w_scan 20161022 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1306,7 +1306,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of w_scan 20141122:";;
+     short | recursive ) echo "Configuration of w_scan 20161022:";;
    esac
   cat <<\_ACEOF
 
@@ -1393,7 +1393,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-w_scan configure 20141122
+w_scan configure 20161022
 generated by GNU Autoconf 2.68
 
 Copyright (C) 2010 Free Software Foundation, Inc.
@@ -1811,7 +1811,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by w_scan $as_me 20141122, which was
+It was created by w_scan $as_me 20161022, which was
 generated by GNU Autoconf 2.68.  Invocation command line was
 
   $ $0 $@
@@ -2629,7 +2629,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='w_scan'
- VERSION='20141122'
+ VERSION='20161022'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -5029,7 +5029,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by w_scan $as_me 20141122, which was
+This file was extended by w_scan $as_me 20161022, which was
 generated by GNU Autoconf 2.68.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -5095,7 +5095,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-w_scan config.status 20141122
+w_scan config.status 20161022
 configured by $0, generated by GNU Autoconf 2.68,
   with options \\"\$ac_cs_config\\"
 
diff --git a/configure.in b/configure.in
index 1a2d100..ce44392 100644
--- a/configure.in
+++ b/configure.in
@@ -2,7 +2,7 @@
 # Process this file with autoconf to produce a configure script.
 
 AC_PREREQ([2.63])
-AC_INIT([w_scan], [20141122])
+AC_INIT([w_scan], [20161022])
 AC_CONFIG_SRCDIR([scan.c])
 AC_CONFIG_HEADERS([config.h])
 AM_INIT_AUTOMAKE
diff --git a/countries.c b/countries.c
index 6c80a44..4501bc1 100644
--- a/countries.c
+++ b/countries.c
@@ -104,6 +104,7 @@ int choose_country (const char * country,
                 case    AT:     //      AUSTRIA
                 case    BE:     //      BELGIUM
                 case    CH:     //      SWITZERLAND
+                case    CO:     //      COLOMBIA, DVB-C + DVB-T2
                 case    CZ:     //      CZECH REPUBLIC
                 case    DE:     //      GERMANY
                 case    DK:     //      DENMARK
@@ -262,6 +263,17 @@ int choose_country (const char * country,
                                 info("QAM US/CA\n");    
                                 }
                         break;
+                case    CO:     //      COLOMBIA, 6MHz offs 389MHz
+                        switch(*dvb) {    
+                                case SCAN_CABLE:
+                                        info("cable colombia not yet defined.\n");
+                                        break;
+                                default:
+                                        *channellist = DVBT2_CO;
+                                        info("DVB-T2 CO\n");
+                                        break;               
+                                }
+                        break;
                 case    BR:     //      BRAZIL, DVB-C/ISDB-T w. ATSC freq list
                         switch(*dvb) {    
                                 case SCAN_CABLE:
@@ -308,6 +320,14 @@ switch (channellist) {
                         case 14 ... 69: return  389000000;
                         default:        return  SKIP_CHANNEL;
                         }
+        case DVBT2_CO: // DVB-T2 Colombia, 6 MHz step
+                switch (channel) {
+                        //channels 21..51 are not stated as digital,
+                        //however ch 27, 28, 43 are marked as T2 in other docs.
+                        //scan up to ch 51 (end of band V)
+                        case 14 ... 51: return  389000000;
+                        default:        return  SKIP_CHANNEL;
+                        }
         case ISDBT_6MHZ: // ISDB-T, 6 MHz central frequencies
                 switch (channel) {
                        // Channels 7-13 are reserved but aren't used yet
@@ -315,7 +335,7 @@ switch (channellist) {
                         case 14 ... 69: return  389000000;
                         default:        return  SKIP_CHANNEL;
                         }
-        case DVBT_AU:  //AUSTRALIA, 7MHz step list
+        case DVBT_AU:  //AUSTRALIA, 7MHz step list, offset 0/+125kHz
                 switch (channel) {
                         case  5 ... 12: return  142500000;
                         case 21 ... 69: return  333500000;
@@ -325,7 +345,7 @@ switch (channellist) {
         case DVBT_FR:  //FRANCE, +/- offset 166kHz & +offset 332kHz & +offset 498kHz
         case DVBT_GB:  //UNITED KINGDOM, +/- offset
                 switch (channel) {
-                        case  5 ... 12: return  142500000; // VHF unused in FRANCE, skip those in offset loop
+                        //case  5 ... 12: return  142500000; // VHF no longer used in Europe.
                         case 21 ... 69: return  306000000;
                         default:        return  SKIP_CHANNEL;
                         }
@@ -362,8 +382,9 @@ switch (channellist) {
         case ATSC_QAM:
         case ATSC_VSB:
         case DVBC_BR:
+        case DVBT2_CO:
         case ISDBT_6MHZ:
-                       return  6000000; // atsc, 6MHz step
+                       return  6000000; // atsc region, 6MHz step
         case DVBT_AU:  return  7000000; // dvb-t australia, 7MHz step
         case DVBT_DE:
         case DVBT_FR:
@@ -387,7 +408,7 @@ switch (channellist) {
 #define DVBC_ROLLOFF 0.15
 #define DVBC_SYMBOL_LEN (1.0 + DVBC_ROLLOFF)
  
-int max_dvbc_srate  (int bandwidth) {
+int max_dvbc_srate(int bandwidth) {
 switch(bandwidth)  {
        case 0 ... 6:
              fatal("%s %d, using old style DVB API", __FUNCTION__, __LINE__);
@@ -515,6 +536,34 @@ switch (channellist) {
         }
 }
 
+/*
+ * some countries don't use legacy delsys anymore
+ */
+int delsysloop_min(int channel, int channellist) {
+switch (channellist) {
+        case DVBT2_CO: return 1; //DVB-T2 only.
+        default:       return 0;
+        }
+}
+
+/*
+ * some countries don't use 2nd gen delsys yet
+ */
+int delsysloop_max(int channel, int channellist) {
+switch (channellist) {
+        case ATSC_VSB:
+        case ATSC_QAM:
+        case DVBC_QAM:
+        case DVBC_FI:
+        case DVBC_FR:
+        case DVBC_BR:
+        case ISDBT_6MHZ:
+        case DAB_DE:
+        case USERLIST:
+                       return 0;
+        default:       return 1;
+        }
+}
 
 /*
  * start/stop values for dvbc qam loop
diff --git a/countries.h b/countries.h
index 60ff792..bb6fc63 100644
--- a/countries.h
+++ b/countries.h
@@ -46,6 +46,8 @@ enum channellist_t {
         DVBC_FR                 = 9,
         DVBC_BR                 = 10,
         ISDBT_6MHZ              = 11,
+        DAB_DE                  = 12,
+        DVBT2_CO                = 13,
         USERLIST                = 999
 };
 
@@ -92,6 +94,8 @@ int freq_offset(int channel, int channellist, int index);
 int max_dvbc_srate(int bandwidth);
 
 int dvbt_transmission_mode(int channel, int channellist);
+int delsysloop_min(int channel, int channellist);
+int delsysloop_max(int channel, int channellist);
 
 int dvbc_qam_max(int channel, int channellist);
 int dvbc_qam_min(int channel, int channellist);
diff --git a/descriptors.c b/descriptors.c
index ada403e..fc9e018 100644
--- a/descriptors.c
+++ b/descriptors.c
@@ -756,8 +756,9 @@ void parse_C2_delivery_system_descriptor (const unsigned char *buf,
 void parse_terrestrial_delivery_system_descriptor(const unsigned char * buf,
                         struct transponder * t, fe_spectral_inversion_t inversion) {
   uint32_t center_frequency;
-  struct frequency_item * p, * p1;
+  struct cell* p;
   bool known;
+  int i;
 
   hd(buf);
   if (t == NULL) return;
@@ -768,6 +769,8 @@ void parse_terrestrial_delivery_system_descriptor(const unsigned char * buf,
   t->inversion = inversion;
 
   center_frequency =  10 * get_u32(buf + 2);                                                         // center_frequency 32 bslbf, 10Hz steps
+  if ((center_frequency < 50000000) || (center_frequency > 1000000000))
+     center_frequency = 0;
   switch(buf[6] >> 5) {                                                                              // bandwidth 3 bslbf
      case 0: t->bandwidth = 8000000; break;
      case 1: t->bandwidth = 7000000; break;
@@ -847,13 +850,14 @@ void parse_terrestrial_delivery_system_descriptor(const unsigned char * buf,
         t->frequency = center_frequency;
      else {
         known = false;
-        for(p = (t->frequencies)->first; p; p = p->next) {
-           if (p->frequency == center_frequency) {
+        for(p = (t->cells)->first; p; p = p->next) {
+           for(i = 0; i < p->num_center_frequencies; i++)
+              if (p->center_frequencies[i] == center_frequency) {
               known = true;
               break;
               }
-           for(p1 = (p->transposers)->first; p1; p1 = p1->next) {
-              if (p1->frequency == center_frequency) {
+           for(i = 0; i < p->num_transposers; i++) {
+              if (p->transposers[i].transposer_frequency == center_frequency) {
                  known = true;
                  break;
                  }
@@ -861,10 +865,9 @@ void parse_terrestrial_delivery_system_descriptor(const unsigned char * buf,
            }           
         if (! known) {
            p = calloc(1, sizeof(*p));
-           p->transposers = &(p->_transposers);
-           NewList(p->transposers, "transposers");
-           p->frequency = center_frequency;
-           AddItem(t->frequencies, p);
+           p->num_center_frequencies = 1;
+           p->center_frequencies[0] = center_frequency;
+           AddItem(t->cells, p);
            }
         } // end other_frequency_flag
      } // end if center_frequency > 0
@@ -873,51 +876,59 @@ void parse_terrestrial_delivery_system_descriptor(const unsigned char * buf,
      t->other_frequency_flag = 1;
      }
 
-  verbose("          F%u B%u %s C%d D%d G%d T%d other_frequency=%d (%u)\n",
-         freq_scale(t->frequency, 1e-3),
-         freq_scale(t->bandwidth, 1e-6),
-         (t->modulation == QPSK)?"QPSK":
-         (t->modulation == QAM_16)?"M16":"M64",
-         (t->coderate == FEC_1_2)?12:
-         (t->coderate == FEC_2_3)?23:
-         (t->coderate == FEC_3_4)?34:
-         (t->coderate == FEC_5_6)?56:
-         (t->coderate == FEC_7_8)?78:999,
-         (t->coderate_LP == FEC_1_2)?12:
-         (t->coderate_LP == FEC_2_3)?23:
-         (t->coderate_LP == FEC_3_4)?34:
-         (t->coderate_LP == FEC_5_6)?56:
-         (t->coderate_LP == FEC_7_8)?78:999,
-         (t->guard==GUARD_INTERVAL_1_32  )? 32:
-         (t->guard==GUARD_INTERVAL_1_16  )? 16:
-         (t->guard==GUARD_INTERVAL_1_8   )? 8:4,
-         (t->transmission == TRANSMISSION_MODE_2K )?2:
-         (t->transmission == TRANSMISSION_MODE_8K )?8:4,
-         t->other_frequency_flag,t->other_frequency_flag?center_frequency:0
-         );
-
-  verbose("          %u frequencies\n", (t->frequencies)->count);
-  for(p = (t->frequencies)->first; p; p = p->next) {
-     verbose("             %u\n", p->frequency);
-     for(p1 = (p->transposers)->first; p1; p1 = p1->next) {
-        verbose("                transposer %u\n", p1->frequency);
+  if (verbosity >= 4) {
+     verbose("          F%u B%u %s C%d D%d G%d T%d other_frequency=%d (%u)\n",
+            freq_scale(t->frequency, 1e-3),
+            freq_scale(t->bandwidth, 1e-6),
+            (t->modulation == QPSK)?"QPSK":
+            (t->modulation == QAM_16)?"M16":"M64",
+            (t->coderate == FEC_1_2)?12:
+            (t->coderate == FEC_2_3)?23:
+            (t->coderate == FEC_3_4)?34:
+            (t->coderate == FEC_5_6)?56:
+            (t->coderate == FEC_7_8)?78:999,
+            (t->coderate_LP == FEC_1_2)?12:
+            (t->coderate_LP == FEC_2_3)?23:
+            (t->coderate_LP == FEC_3_4)?34:
+            (t->coderate_LP == FEC_5_6)?56:
+            (t->coderate_LP == FEC_7_8)?78:999,
+            (t->guard==GUARD_INTERVAL_1_32  )? 32:
+            (t->guard==GUARD_INTERVAL_1_16  )? 16:
+            (t->guard==GUARD_INTERVAL_1_8   )? 8:4,
+            (t->transmission == TRANSMISSION_MODE_2K )?2:
+            (t->transmission == TRANSMISSION_MODE_8K )?8:4,
+            t->other_frequency_flag,t->other_frequency_flag?center_frequency:0
+            );
+     
+     verbose("          %u cells\n", (t->cells)->count);
+     i = 0;
+     for(p = (t->cells)->first; p; p = p->next, ++i) {
+        int n;
+        for(n = 0; n < p->num_center_frequencies; n++)
+           verbose("             cell %u: center_frequency %7.3f\n",
+                   p->cell_id, p->center_frequencies[n]/1000000.0);
+        for(n = 0; n < p->num_transposers; n++) {
+           verbose("                transposer %u transposer_frequency %7.3f\n",
+                   p->transposers[n].cell_id_extension,
+                   p->transposers[n].transposer_frequency/1000000.0);
+           }
         }
-     }
+  }
 } //end parse_terrestrial_delivery_system_descriptor
 
 
 void parse_frequency_list_descriptor(const unsigned char * buf, struct transponder * t) {
-  uint8_t i, coding_type = (buf[2] & 0x03);
+  uint8_t i, j, coding_type = (buf[2] & 0x03);
   uint8_t num_frequencies = (buf[1] - 1) / 4;
   uint32_t f;
   bool known;
-  struct frequency_item * p, * p1;
+  struct cell* p;
 
   if (t == NULL) return;
   hd(buf);
   buf += 3;
 
-  for(i = 0; i < num_frequencies; i++) {
+  for(i = 0; i < num_frequencies; ++i) {
      switch(coding_type) {
         case 1:
            f = 10  * bcd32_to_cpu (buf[0], buf[1], buf[2], buf[3]);
@@ -935,13 +946,14 @@ void parse_frequency_list_descriptor(const unsigned char * buf, struct transpond
      if (f == 0) continue;
 
      known = false;
-     for(p = (t->frequencies)->first; p; p = p->next) {
-        if (p->frequency == f) {
+     for(p = (t->cells)->first; p; p = p->next) {
+        for(j = 0; j < p->num_center_frequencies; j++)
+           if (p->center_frequencies[j] == f) {
            known = true;
            break;
            }
-        for(p1 = (p->transposers)->first; p1; p1 = p1->next) {
-           if (p1->frequency == f) {
+        for(j = 0; j < p->num_transposers; j++) {
+           if (p->transposers[j].transposer_frequency == f) {
               known = true;
               break;
               }
@@ -949,18 +961,22 @@ void parse_frequency_list_descriptor(const unsigned char * buf, struct transpond
         }           
      if (! known) {
         p = calloc(1, sizeof(*p));
-        p->transposers = &(p->_transposers);
-        NewList(p->transposers, "transposers");
-        p->frequency = f;
-        AddItem(t->frequencies, p);
+        p->num_center_frequencies = 1;
+        p->center_frequencies[0] = f;
+        AddItem(t->cells, p);
         }
      } // end freq loop
-
-  verbose("          %-.2u frequencies\n", (t->frequencies)->count);
-  for(p = (t->frequencies)->first; p; p = p->next) {
-     verbose("             %u\n", p->frequency);
-     for(p1 = (p->transposers)->first; p1; p1 = p1->next) {
-        verbose("                transposer %u\n", p1->frequency);
+     
+  if (verbosity >= 4) {
+     verbose("          %u cells\n", (t->cells)->count);
+     i = 0;
+     for(p = (t->cells)->first; p; p = p->next, ++i) {
+        int n;
+        for(n = 0; n < p->num_center_frequencies; n++)
+           verbose("             cell%d: center_frequency%u\n", i, p->center_frequencies[n]);
+        for(n = 0; n < p->num_transposers; n++) {
+           verbose("                transposer%d transposer_frequency%u\n", n, p->transposers[n].transposer_frequency);
+           }
         }
      }
 }
@@ -975,13 +991,10 @@ void parse_T2_delivery_system_descriptor(const unsigned char * buf,
                         struct transponder * t, fe_spectral_inversion_t inversion) {
   unsigned char * bp;
   __u8 descriptor_length;
-  __u8 cell_id_extension;
   __u8 frequency_loop_length = 0;
   __u8 subcell_info_loop_length = 0;
-  __u16 cell_id;
-  __u32 center_frequency = 0, transposer_frequency;
-  bool known = false;
-  struct frequency_item * p, * p1;
+  __u32 center_frequency = 0;
+  struct cell* p;
 
   if (t == NULL) return;
   hd(buf);
@@ -990,6 +1003,12 @@ void parse_T2_delivery_system_descriptor(const unsigned char * buf,
   t->source = 0x04;
   t->delsys = SYS_DVBT2;
   t->modulation = QAM_AUTO;
+  t->hierarchy = HIERARCHY_NONE;
+  t->coderate = FEC_AUTO;
+  t->coderate_LP = FEC_NONE;
+  t->SISO_MISO = 0;                                                                                 // NOTE: DTV_BANDWIDTH == '0' is BANDWIDTH_AUTO
+  t->guard = GUARD_INTERVAL_AUTO;
+  t->transmission = TRANSMISSION_MODE_AUTO;
   t->inversion = inversion;
                                                                                                      // descriptor_tag               8 uimsbf
   descriptor_length = buf[1];                                                                        // descriptor_length            8 uimsbf
@@ -1009,7 +1028,7 @@ void parse_T2_delivery_system_descriptor(const unsigned char * buf,
         case 3: t->bandwidth = 5000000;     break;
         case 4: t->bandwidth = 10000000;    break;
         case 5: t->bandwidth = 1712000;     break;
-        default:t->bandwidth = 8000000;                                                              //       0110 to 1111 reserved for future use
+        default:t->bandwidth = 0;                                                                    //       0110 to 1111 reserved for future use -> '0' is BANDWIDTH_AUTO
         }
      //reserved_future_use = buf[6] & 0x3);                                                          // reserved_future_use 2 bslbf
      switch((buf[7] >> 5) & 0x7) {                                                                   // guard_interval 3 bslbf
@@ -1036,135 +1055,82 @@ void parse_T2_delivery_system_descriptor(const unsigned char * buf,
      descriptor_length -= 6;                                                                         // so far, we read 6 bytes.
      bp = (unsigned char *) &buf[8];
 
+     ClearList(t->cells);
+
      while(descriptor_length > 0) {                                                                  // for (i=0;i<N,i++) {
-        cell_id = get_u16(bp); bp += 2; descriptor_length -= 2;                                      //      cell_id 16 uimsbf  
-        if (t->tfs_flag) {                                                                           //      if (tfs_flag == 1) {
-           // if tfs_flag (Time-Frequency Slicing) is set, we use 2..6 frequencies in parallel,      //
-           // the TS is time interleaved && jumping from freq to freq. No idea, how this should      //
-           // fit in future into linux dvb.                                                          //
-           frequency_loop_length = *bp; bp++; descriptor_length--;                                   //          frequency_loop_length 8 uimsbf // 2 to 6 center freqs belonging to TFS arrangement
-           while(frequency_loop_length > 3) {                                                        //          for (j=0;j<N;j++){
-              bool known = false;
-              struct frequency_item * p;
-              center_frequency = 10 * get_u32(bp);                                                   //              centre_frequency 32 uimsbf     
-              bp += 4; descriptor_length -= 4; frequency_loop_length -= 4;                           //
-
-              for(p = (t->frequencies)->first; p; p = p->next) {
-                 if (p->frequency == center_frequency) {
-                    p->cell_id = cell_id;
-                    known = true;
-                    break;
-                    }
-                 }
-              if (! known) {
-                 p = calloc(1, sizeof(*p));
-                 p->transposers = &(p->_transposers);
-                 NewList(p->transposers, "transposers");
-                 p->cell_id = cell_id;
-                 p->frequency = center_frequency;
-                 AddItem(t->frequencies, p);
-                 }
-              }                                                                                      //              }
+        struct cell* cell = (struct cell*) calloc(1, sizeof(struct cell));
+        cell->cell_id = get_u16(bp); bp += 2; descriptor_length -= 2;                                //      cell_id 16 uimsbf
+        if (t->tfs_flag > 0) {                                                                       //      if (tfs_flag == 1) {
+           int frequency_loop_length = *bp++; descriptor_length--;                                   //          frequency_loop_length 8 uimsbf // 2 to 6 center freqs belonging to TFS arrangement
+           while(frequency_loop_length > 0) {                                                        //          for (j=0;j<N;j++){
+              center_frequency = 10 * get_u32(bp); bp += 4; descriptor_length -= 4;                  //              centre_frequency 32 uimsbf
+              frequency_loop_length -= 4; 
+              cell->center_frequencies[cell->num_center_frequencies++] = center_frequency;
+              } // frequency_loop                                                                    //              }  
            } // end tfs flag                                                                         //          }
         else {                                                                                       //      else { // no tfs_flag, just one center freq. the usual case.
-           center_frequency = 10 * get_u32(bp);                                                      //          centre_frequency 32 uimsbf
-           bp += 4; descriptor_length -= 4;                                                          //     
-
-           if (center_frequency > 0) { // now: add center freq. 
-              if (! t->other_frequency_flag)
-                 t->frequency = center_frequency;
-              else { // more than one center_freqs or transposers.
-                 known = false;
-                 for(p = (t->frequencies)->first; p; p = p->next) {
-                    if (p->frequency == center_frequency) {
-                       p->cell_id = cell_id;
-                       known = true;
-                       break;
-                       }
-                    for(p1 = (p->transposers)->first; p1; p1 = p1->next) {
-                       if (p1->frequency == center_frequency) {
-                          p->cell_id = cell_id;
-                          known = true;
-                          break;
-                          }
-                       }
-                    }           
-                 if (! known) {
-                    p = calloc(1, sizeof(*p));
-                    p->transposers = &(p->_transposers);
-                    NewList(p->transposers, "transposers");
-                    p->cell_id = cell_id;
-                    p->frequency = center_frequency;
-                    AddItem(t->frequencies, p);
-                    }
-                 }
-              }
-           }                                                                                         //          }
-        subcell_info_loop_length = *bp; bp++; descriptor_length -= 1;                                //      subcell_info_loop_length 8 uimsbf
-
-        for(p = (t->frequencies)->first; p; p = p->next) {
-           if (cell_id == p->cell_id) break;
+           center_frequency = 10 * get_u32(bp); bp += 4; descriptor_length -= 4;                     //         centre_frequency 32 uimsbf
+           frequency_loop_length -= 4;                                                               //
+           if ((center_frequency < 50000000) || (center_frequency > 1000000000))
+              center_frequency = 0;
+           cell->center_frequencies[cell->num_center_frequencies++] = center_frequency;              //
+           }                                                                                         //         }
+        subcell_info_loop_length = *bp++; descriptor_length--;                                       //      subcell_info_loop_length 8 uimsbf
+
+        while(subcell_info_loop_length > 0) {                                                        //      for (k=0;k<N;k++){
+           if (cell->num_transposers > 15) break;                                                    //
+           cell->transposers[cell->num_transposers].cell_id_extension = *bp++;                       //         cell_id_extension 8 uimsbf
+           cell->transposers[cell->num_transposers].transposer_frequency = 10 * get_u32(bp);         //         transposer_frequency 32 uimsbf
+           bp += 4; descriptor_length -= 5;                                                          //
+           cell->num_transposers++;
+           subcell_info_loop_length -= 5;
            }
+        AddItem(t->cells, cell);
+        } // while desriptor_length
+     } //extended info
 
-        while(subcell_info_loop_length > 4) {                                                        //      for (k=0;k<N;k++){
-           cell_id_extension = *bp;                                                                  //           cell_id_extension 8 uimsbf
-           transposer_frequency = 10 * get_u32(bp + 1);                                              //           transposer_frequency 32 uimsbf
-           bp += 5; descriptor_length -= 5; subcell_info_loop_length -= 5;                           //
-           if (p == NULL) {
-              p = calloc(1, sizeof(*p));
-              p->transposers = &(p->_transposers);
-              NewList(p->transposers, "transposers");
-              p->cell_id = cell_id;
-              p->frequency = center_frequency;
-              AddItem(t->frequencies, p);              
-              }
-           known = false;
-           for(p1 = (p->transposers)->first; p1; p1 = p1->next) {
-              if (p1->frequency == transposer_frequency) {
-                 p1->cell_id = cell_id_extension;
-                 known = true;
-                 break;
-                 }
-              }
-           if (! known) {
-              p1 = calloc(1, sizeof(*p1));
-              p1->transposers = &(p1->_transposers);
-              NewList(p1->transposers, "transposers");
-              p1->cell_id = cell_id_extension;
-              p1->frequency = transposer_frequency;
-              AddItem(p->transposers, p1);
-              }
-           } // end subcell info loop                                                                //           }
-        } // end while(descriptor_length > 0)                                                        //      }
-     }
   if ((t->frequency == 0) && (t->other_frequency_flag == 0)) {
      verbose("%s: center_freq = 0 && other_frequency_flag = 0 -> set other_frequency_flag = 1\n", __FUNCTION__);
      t->other_frequency_flag = 1;
      }
-  verbose("%s f%u system_id%u plp_id%u SISO/MISO=%s B%.1f G%d T%d other_frequency%d TFS%d\n",
-         __FUNCTION__,
-         freq_scale(t->frequency, 1e-3), t->system_id, t->plp_id,
-         t->SISO_MISO?"MISO":"SISO",
-         (t->bandwidth * 1e-6),
-         (t->guard==GUARD_INTERVAL_1_32  )? 32:
-         (t->guard==GUARD_INTERVAL_1_16  )? 16:
-         (t->guard==GUARD_INTERVAL_1_8   )? 8:
-         (t->guard==GUARD_INTERVAL_1_4   )? 4:
-         (t->guard==GUARD_INTERVAL_1_128 )? 128:
-         (t->guard==GUARD_INTERVAL_19_128)? 19128:19256,
-         (t->transmission == TRANSMISSION_MODE_2K )?2:
-         (t->transmission == TRANSMISSION_MODE_8K )?8:
-         (t->transmission == TRANSMISSION_MODE_4K )?4:
-         (t->transmission == TRANSMISSION_MODE_1K )?1:
-         (t->transmission == TRANSMISSION_MODE_16K)?16:32,
-         t->other_frequency_flag, t->tfs_flag);
-
-
-  verbose("          %-.2u frequencies:\n", (t->frequencies)->count);
-  for(p = (t->frequencies)->first; p; p = p->next) {
-     verbose("             %u\n", p->frequency);
-     for(p1 = (p->transposers)->first; p1; p1 = p1->next) {
-        verbose("                transposer %u\n", p1->frequency);
+
+  if (t->cells->count > 0) {
+     center_frequency = ((struct cell*) t->cells->first)->center_frequencies[0];
+     if (center_frequency > 0)
+        t->frequency = center_frequency;
+     }
+
+  if (verbosity >= 4) {
+     verbose("%s:%d f%u system_id%u plp_id%u SISO/MISO=%s B%.1f G%d T%d other_frequency%d TFS%d\n",
+            __FUNCTION__,__LINE__,
+            freq_scale(t->frequency, 1e-3), t->system_id, t->plp_id,
+            t->SISO_MISO?"MISO":"SISO",
+            (t->bandwidth * 1e-6),
+            (t->guard==GUARD_INTERVAL_1_32  )? 32:
+            (t->guard==GUARD_INTERVAL_1_16  )? 16:
+            (t->guard==GUARD_INTERVAL_1_8   )? 8:
+            (t->guard==GUARD_INTERVAL_1_4   )? 4:
+            (t->guard==GUARD_INTERVAL_1_128 )? 128:
+            (t->guard==GUARD_INTERVAL_19_128)? 19128:19256,
+            (t->transmission == TRANSMISSION_MODE_2K )?2:
+            (t->transmission == TRANSMISSION_MODE_8K )?8:
+            (t->transmission == TRANSMISSION_MODE_4K )?4:
+            (t->transmission == TRANSMISSION_MODE_1K )?1:
+            (t->transmission == TRANSMISSION_MODE_16K)?16:32,
+            t->other_frequency_flag, t->tfs_flag);
+
+     verbose("          %u cells:\n", (t->cells)->count);
+     int i = 0;
+     for(p = (t->cells)->first; p; p = p->next, ++i) {
+        int n;
+        for(n = 0; n < p->num_center_frequencies; n++)
+           verbose("             cell %u: center_frequency %7.3f\n",
+                   p->cell_id, p->center_frequencies[n]/1000000.0);
+        for(n = 0; n < p->num_transposers; n++) {
+           verbose("                cell_id_extension %u: transposer_frequency %7.3f\n",
+                   p->transposers[n].cell_id_extension,
+                   p->transposers[n].transposer_frequency/1000000.0);
+           }
         }
      }
 }
@@ -1180,11 +1146,16 @@ void parse_logical_channel_descriptor(const unsigned char * buf, struct transpon
   int p = 2;                                                       //
                                                                    //
                                                                    //
-  while(descriptor_length > 0) {                                   //
+  if (descriptor_length % 4) {
+     verbose("        %s %d: non-LCN data on descriptor 0x83 ?\n",
+            __FUNCTION__, __LINE__);
+     return;
+     }
+  while(descriptor_length > 3) {                                   //
      service_id = (buf[p] << 8) | buf[p+1];                        // service_id              16 uimsbf
      s = find_service(t, service_id);                              //
      if (s == NULL)                                                //
-        s = alloc_service(t, service_id);                          //
+        return;                                                    //
                                                                    //
      s->visible_service = (buf[p+2] & 0x80) > 0;                   // visible_service_flag     1 bslbf, reserved NorDig: 1bslbf: Australia: 5 bslbf
      s->logical_channel_number = (buf[p+2] & 0x3F) << 8 | buf[p+3];// logical_channel_number   NorDig: 14uimbsf; Australia: 10 uimsbf
diff --git a/diseqc.c b/diseqc.c
index 74fdcfe..08d8f2f 100644
--- a/diseqc.c
+++ b/diseqc.c
@@ -513,7 +513,7 @@ static int scr_cmd(int frontend_fd, struct dvb_diseqc_master_cmd * diseqc) {
      }
   msleep(5); // AN2056: "more than 4ms" after 13V -> 18V; EN50494: 4..22ms
 
-  if ((err = ioctl(frontend_fd, FE_DISEQC_SEND_MASTER_CMD, &diseqc))) {
+  if ((err = ioctl(frontend_fd, FE_DISEQC_SEND_MASTER_CMD, diseqc))) {
      info("%s:%d: FE_DISEQC_SEND_MASTER_CMD failed.\n", __FUNCTION__, __LINE__);
      return err;
      }
diff --git a/dump-vdr.c b/dump-vdr.c
index 9e5df8c..1433beb 100644
--- a/dump-vdr.c
+++ b/dump-vdr.c
@@ -39,70 +39,163 @@ struct cTr {
 };
 
 static struct cTr translations[] = {
-        {  "S4E8",    "S5E"},
-        {  "S7E0",    "S7E"},
-        {  "S9E0",    "S9E"},
-        { "S10E0",   "S10E"},
-        { "S13E0",   "S13E"},
-        { "S16E0",   "S16E"},
-        { "S19E2", "S19.2E"},
-        { "S21E6", "S21.6E"},
-        { "S23E5", "S23.5E"},
-        { "S25E5", "S25.5E"},
-        { "S26EX",   "S26E"},
-        { "S28E2", "S28.2E"},
-        { "S28E5", "S28.5E"},
-        { "S31E5", "S31.5E"},
-        { "S32E9",   "S33E"},
-        { "S33E0",   "S33E"},
-        { "S35E9",   "S36E"},
-        { "S36E0",   "S36E"},
-        { "S38E0",   "S38E"},
-        { "S39E0",   "S39E"},
-        { "S40EX",   "S40E"},
-        { "S42E0",   "S42E"},
-        { "S45E0",   "S45E"},
-        { "S49E0",   "S49E"},
-        { "S53E0",   "S53E"},
-        { "S57E0",   "S56E"},
-        { "S57EX",   "S57E"},
-        { "S60EX",   "S60E"},
-        { "S62EX",   "S62E"},
-        { "S64E2",   "S64E"},
-        { "S68EX", "S68.5E"},
-        { "S70E5", "S70.5E"},
-        { "S72EX",   "S72E"},
-        { "S75EX",   "S75E"},
-        { "S76EX", "S76.5E"},
-        { "S78E5", "S78.5E"},
-        { "S80EX",   "S80E"},
-        { "S83EX",   "S83E"},
-        { "S87E5", "S87.5E"},
-        { "S88EX",   "S88E"},
-        { "S90EX",   "S90E"},
-        { "S91E5", "S91.5E"},
-        { "S93E5", "S93.5E"},
-        { "S95E0",   "S95E"},
-        { "S96EX", "S96.5E"},
-        {"S100EX","S100.5E"},
-        {"S105EX","S105.5E"},
-        {"S108EX",  "S108E"},
-        {"S140EX",  "S140E"},
-        {"S160E0",  "S160E"},
-        {  "S0W8",    "S1W"},
-        {  "S4W0",    "S4W"},
-        {  "S5WX",    "S5W"},
-        {  "S7W0",    "S7W"},
-        {  "S8W0",    "S8W"},
-        { "S11WX",   "S11W"},
-        { "S12W5", "S12.5W"},
-        { "S14W0",   "S14W"},
-        { "S15W0",   "S15W"},
-        { "S18WX",   "S18W"},
-        { "S22WX",   "S22W"},
-        { "S24WX", "S24.5W"},
-        { "S27WX", "S27.5W"},
-        { "S30W0",   "S30W"}};
+  {"S180E0", "S180E"  }, // S180E   Intelsat 18                     //
+  {"S172E0", "S172E"  }, // S172E   Eutelsat 172A                   //
+  {"S169E0", "S169E"  }, // S169E   Intelsat 8                      //
+  {"S166E0", "S166E"  }, // S166E   Intelsat 19                     //
+                         // S164E   Optus B3                        //
+  {"S162E0", "S162E"  }, // S162E   Superbird B2                    //
+  {"S160E0", "S160E"  }, // S160E   Optus D1                        //
+  {"S156E0", "S156E"  }, // S156E   Optus C1/D3                     //
+  {"S154E0", "S154E"  }, // S154E   JCSAT 2A                        //
+  {"S152E0", "S152E"  }, // S152E   Optus D2                        //
+                         // S150E   JCSAT 1B                        //
+  {"S144E0", "S144E"  }, // S144E   Superbird C2                    //
+  {"S140E0", "S140E"  }, // S140E   Express AM3                     //
+  {"S138E0", "S138E"  }, // S138E   Telstar 18                      //
+  {"S134E0", "S134E"  }, // S134E   Apstar 6                        //
+  {"S132E0", "S132E"  }, // S132E   Vinasat 1 & JCSAT 5A            //
+  {"S128E0", "S128E"  }, // S128E   JCSAT 3A                        //
+  {"S125E0", "S125E"  }, // S125E   ChinaSat 6A                     //
+  {"S124E0", "S124E"  }, // S124E   JCSAT 4B                        //
+  {"S122E2", "S122.2E"}, // S122.2E Asiasat 4                       //
+                         // S119.5E Thaicom 4                       //
+  {"S118E0", "S118E"  }, // S118E   Telkom 2                        //
+  {"S116E0", "S116E"  }, // S116E   ABS 7 & Koreasat 6              //
+  {"S115E5", "S115.5E"}, // S115.5E ChinaSat 6B                     //
+  {"S113E0", "S113E"  }, // S113E   Palapa D & Koreasat 5           //
+  {"S110E5", "S110.5E"}, // S110.5E ChinaSat 10                     //
+  {"S110E0", "S110E"  }, // S110E   N-Sat 110 & BSAT 3A/3C          //
+  {"S108E2", "S108.2E"}, // S108.2E Telkom 1 & NSS 11 & SES 7       //
+  {"S105E5", "S105.5E"}, // S105.5E Asiasat 3S                      //
+  {"S103E0", "S103E"  }, // S103E   Express A2                      //
+  {"S100E5", "S100.5E"}, // S100.5E Asiasat 5                       //
+  {"S96E5" , "S96.5E" }, // S96.5E  Express AM33                    //
+  {"S95E0" , "S95E"   }, // S95E    NSS 6                           //
+  {"S93E5" , "S93.5E" }, // S93.5E  Insat 3A/4B                     //
+                         // S92.2E  ChinaSat 9                      //
+  {"S91E5" , "S91.5E" }, // S91.5E  Measat 3/3A                     //
+  {"S90E0" , "S90E"   }, // S90E    Yamal 201/300K                  //
+  {"S88E0" , "S88E"   }, // S88E    ST 2                            //
+  {"S87E5" , "S87.5E" }, // S87.5E  ChinaSat 12                     //
+  {"S86E5" , "S86.5E" }, // S86.5E                                  //
+  {"S85E0" , "S85.2E" }, // S85.2E  Intelsat 15 & Horizons 2        //
+  {"S83E0" , "S83E"   }, // S83E    Insat 4A                        //
+                         // S80E    Express AM2                     //
+  {"S78E5" , "S78.5E" }, // S78.5E  Thaicom 5/6A                    //
+  {"S76E5" , "S76.5E" }, // S76.5E  Apstar 7                        //
+  {"S75E0" , "S75E"   }, // S75E    ABS 1A                          //
+                         // S74E    Insat 3C/4CR                    //
+                         // S72E    Intelsat 22                     //
+  {"S70E5" , "S70.5E" }, // S70.5E  Eutelsat 70B                    //
+  {"S68E5" , "S68.5E" }, // S68.5E  Intelsat 7/10                   //
+  {"S66E0" , "S66E"   }, // S66E    Intelsat 17                     //
+  {"S64E2" , "S64E"   }, // S64E    Intelsat 906                    //
+  {"S62E0" , "S62E"   }, // S62E    Intelsat 902                    //
+  {"S60E0" , "S60E"   }, // S60E    Intelsat 904                    //
+  {"S57E0" , "S57E"   }, // S57E    NSS 12                          //
+  {"S56E0" , "S56E"   }, // S56E    DirecTV 1R                      //
+  {"S53E0" , "S53E"   }, // S53E    Express AM22                    //
+  {"S52E5" , "S52.5E" }, // S52.5E  Yahsat 1A                       //
+  {"S49E0" , "S49E"   }, // S49E    Yamal 202                       //
+                         // S47.5E  Intelsat 10                     //
+                         // S46E    Azerspace-1                     //
+  {"S45E0" , "S45E"   }, // S45E    Intelsat 12                     //
+  {"S42E0" , "S42E"   }, // S42E    Turksat 2A/3A                   //
+  {"S40E0" , "S40E"   }, // S40E    Express AM1                     //
+  {"S39E0" , "S39E"   }, // S39E    Hellas Sat 2                    //
+  {"S38E0" , "S38E"   }, // S38E    Paksat 1R                       //
+  {"S36E0" , "S36E"   }, // S36E    Eutelsat 36A/36B                //
+  {"S33E0" , "S33E"   }, // S33E    Eutelsat 33A & Intelsat 28      //
+  {"S31E5" , "S31.5E" }, // S31.5E  Astra 1G                        //
+  {"S30E5" , "S30.5E" }, // S30.5E  Arabsat 5A                      //
+  {"S28E2" , "S28.2E" }, // S28.2E  Astra 1N/2A/2F                  //
+  {"S26E0" , "S26E"   }, // S26E    Badr C/3/4/5/6                  //
+  {"S25E5" , "S25.5E" }, // S25.5E  Eutelsat 25B                    //
+  {"S23E5" , "S23.5E" }, // S23.5E  Astra 3B                        //
+  {"S21E6" , "S21.6E" }, // S21.6E  Eutelsat 21B                    //
+  {"S20E0" , "S20E"   }, // S20E    Arabsat 5C                      //
+  {"S19E2" , "S19.2E" }, // S19.2E  Astra 1KR/1L/1M/2C              //
+                         // S17E    Amos 5                          //
+  {"S16E0" , "S16E"   }, // S16E    Eutelsat 16A/16B                //
+  {"S13E0" , "S13E"   }, // S13E    Eutelsat Hot Bird 13B/13C/13D   //
+  {"S10E0" , "S10E"   }, // S10E    Eutelsat 10A                    //
+  {"S9E0"  , "S9E"    }, // S9E     Eutelsat 9A/Ka-Sat 9A           //
+  {"S7E0"  , "S7E"    }, // S7E     Eutelsat 7A                     //
+  {"S4E8"  , "S4.8E"  }, // S4.8E   Astra 4A & SES 5                //
+                         // S4E     Eutelsat 4B                     //
+  {"S3E0"  , "S3E"    }, // S3E     Eutelsat 3A/3D & Rascom 1R      //
+  {"S0W8"  , "S1W"    }, // S1W     Thor 3/5 & Intelsat 10-02       //
+  {"S4W0"  , "S4W"    }, // S4W     Amos 1/2/3                      //
+  {"S5W0"  , "S5W"    }, // S5W     Eutelsat 5 West A               //
+  {"S7W0"  , "S7W"    }, // S7W     Nilesat 101/201 & Eutelsat 7W A //
+  {"S8W0"  , "S8W"    }, // S8W     Eutelsat 8 West A/C             //
+  {"S11W0" , "S11W"   }, // S11W    Express AM44                    //
+  {"S12W5" , "S12.5W" }, // S12.5W  Eutelsat 12 West A              //
+  {"S14W0" , "S14W"   }, // S14W    Express A4                      //
+  {"S15W0" , "S15W"   }, // S15W    Telstar 12                      //
+  {"S18W0" , "S18W"   }, // S18W    Intelsat 901                    //
+  {"S20W0" , "S20W"   }, // S20W    NSS 7                           //
+  {"S22W0" , "S22W"   }, // S22W    SES 4                           //
+  {"S24W5" , "S24.5W" }, // S24.5W  Intelsat 905                    //
+  {"S27W5" , "S27.5W" }, // S27.5W  Intelsat 907                    //
+  {"S30W0" , "S30W"   }, // S30W    Hispasat 1D/1E                  //
+  {"S31W5" , "S31.5W" }, // S31.5W  Intelsat 25                     //
+  {"S34W5" , "S34.5W" }, // S34.5W  Intelsat 903                    //
+  {"S37W5" , "S37.5W" }, // S37.5W  NSS 10 & Telstar 11N            //
+  {"S40W5" , "S40.5W" }, // S40.5W  SES 6                           //
+  {"S43W0" , "S43W"   }, // S43W    Intelsat 11                     //
+  {"S45W0" , "S45W"   }, // S45W    Intelsat 14                     //
+  {"S50W0" , "S50W"   }, // S50W    Intelsat 1R                     //
+  {"S53W0" , "S53W"   }, // S53W    Intelsat 23                     //
+  {"S55W5" , "S55.5W" }, // S55.5W  Intelsat 805                    //
+  {"S58W0" , "S58W"   }, // S58W    Intelsat 21                     //
+                         // S61W    Amazonas 2/3                    //
+                         // S61.5W  Echostar 16                     //
+  {"S63W0" , "S63W"   }, // S63W    Telstar 14R                     //
+  {"S65W0" , "S65W"   }, // S65W    Star One C1                     //
+                         // S67W    AMC 4                           //
+  {"S70W0" , "S70W"   }, // S70W    Star One C2                     //
+  {"S72W0" , "S72W"   }, // S72W    AMC 6                           //
+                         // S72.7W  Nimiq 5                         //
+                         // S75W    Star One C3                     //
+                         // S77W    QuetzSat 1                      //
+  {"S78W0" , "S78W"   }, // S78W                                    //
+                         // S82W    Nimiq 4                         //
+  {"S83W0" , "S83W"   }, // S83W    AMC 9                           //
+  {"S84W0" , "S84W"   }, // S84W    Brasilsat B4                    //
+  {"S85W0" , "S85W"   }, // S85W    AMC 16                          //
+                         // S85.1W  XM 3                            //
+  {"S87W0" , "S87W"   }, // S87W    SES 2                           //
+  {"S89W0" , "S89W"   }, // S89W    Galaxy 28                       //
+  {"S91W0" , "S91W"   }, // S91W    Galaxy 17 & Nimiq 6             //
+  {"S93W1" , "S93.1W" }, // S93.1W  Galaxy 25                       //
+  {"S95W0" , "S95W"   }, // S95W    Galaxy 3C                       //
+  {"S97W0" , "S97W"   }, // S97W    Galaxy 19                       //
+  {"S99W2" , "S99W2"  }, // S99.2W  Galaxy 16                       //
+  {"S101W0", "S101W"  }, // S101W   DirecTV 4S/8 & SES 1            //
+  {"S103W0", "S103W"  }, // S103W   AMC 1                           //
+  {"S105W0", "S105W"  }, // S105W   AMC 15/18                       //
+  {"S107W3", "S107.3W"}, // S107.3W Anik F1R/G1                     //
+                         // S110W   DirecTV 5 & Echostar 10/11      //
+  {"S111W1", "S111.1W"}, // S111.1W Anik F2                         //
+  {"S113W0", "S113W"  }, // S113W   SatMex 6                        //
+                         // S114.9W SatMex 5                        //
+  {"S116W8", "S116.8W"}, // S116.8W SatMex 8                        //
+  {"S119W0", "S118.8W"}, // S118.8W Anik F3                         //
+                         // S119W   Echostar 14 & DirecTV 7S        //
+  {"S121W0", "S121W"  }, // S121W   Echostar 9/Galaxy 23            //
+  {"S123W0", "S123W"  }, // S123W   Galaxy 18                       //
+  {"S125W0", "S125W"  }, // S125W   Galaxy 14 & AMC 21              //
+  {"S127W0", "S127W"  }, // S127W   Galaxy 13/Horizons 1            //
+                         // S129W   Ciel 2                          //
+  {"S131W0", "S131W"  }, // S131W   AMC 11                          //
+  {"S133W0", "S133W"  }, // S133W   Galaxy 15                       //
+  {"S135W0", "S135W"  }, // S135W   AMC 10                          //
+  {"S137W0", "S137W"  }, // S137W   AMC 7                           //
+  {"S139W0", "S139W"  }, // S139W   AMC 8                           //
+  {"S177W0", "S177W"  }, // S177W   NSS 9                           //
+};
 #define TR_COUNT(x) (sizeof(x)/sizeof(struct cTr))
 
 /******************************************************************************
diff --git a/dump-xml.c b/dump-xml.c
index 4a1c9d9..45ebb65 100644
--- a/dump-xml.c
+++ b/dump-xml.c
@@ -237,20 +237,20 @@ void xml_dump(FILE * dest, pList transponders) {
               fprintf(dest, "%s<param system_id=\"%d\"/>\n", get_indent(indent), t->system_id);
            if needs_param(plp_id)
               fprintf(dest, "%s<param plp_id=\"%d\"/>\n", get_indent(indent), t->plp_id); 
-           if ((t->other_frequency_flag != false) && ((t->frequencies)->count > 0)) {
-              struct frequency_item * f, * g;
+           if ((t->other_frequency_flag != false) && ((t->cells)->count > 0)) {
+              struct cell* f;
               if needs_param(other_frequency_flag) {
                  fprintf(dest, "%s<param other_frequency_flag=\"%s\"/>\n", get_indent(indent), bool_name(true));
                  fprintf(dest, "%s<frequency_list>\n", get_indent(indent));
                  indent++;
-                 for(f = t->frequencies->first; f; f = f->next) {
+                 for(f = t->cells->first; f; f = f->next) {
                     if (t->tfs_flag) {
                        fprintf(dest, "%s<tfs_center>\n", get_indent(indent));
                        
                        }
                     else {
-                       for(g = f->transposers->first; g; g = g->next) {
-                          }
+                       //for(g = f->transposers->first; g; g = g->next) {
+                       //   }
                        }
                     }
 
diff --git a/emulate.c b/emulate.c
index 908ba7c..f6e9452 100644
--- a/emulate.c
+++ b/emulate.c
@@ -63,6 +63,8 @@ struct {
   *   - not to be exposed outside this file.
   */
 static struct {
+   unsigned                 w_scan_version;
+   uint32_t                 w_scan_flags;
    fe_delivery_system_t     delsys;
    uint32_t                 frequency;
    uint32_t                 bandwidth_hz;
@@ -87,6 +89,10 @@ static struct {
    uint32_t                 lnb_high;
 } em_device;
 
+#define EM_OLD_DELSYSLIST (((uint32_t)1) << 1)
+#define EM_OLD_APIDISP    (((uint32_t)1) << 2)
+#define EM_HEXDUMP_BUG    (((uint32_t)1) << 3)
+#define EM_OLD_SI_HEADER  (((uint32_t)1) << 4)
 
 /*
  * forward declarations.
@@ -639,6 +645,7 @@ static int parse_logfile(const char * log) {
   sidata_t * sidata = NULL;
   bool delsys_list = false;
   em_device.scantype = SCAN_UNDEFINED;
+  em_device.w_scan_version = em_device.w_scan_flags = 0; // logging w_scan's version.
 
 
   if (!log || !*log) {
@@ -658,6 +665,28 @@ static int parse_logfile(const char * log) {
      bool is_tp=false;
      line_no++;
 
+     // --- get logging w_scan's version -------------------------------------------------------------------------------
+     if (!em_device.w_scan_version) {
+        sscanf(line, "w_scan version %u (compiled for DVB API 5.xx)", &em_device.w_scan_version);
+        EM_INFO("detected w_scan version %u\n", em_device.w_scan_version);
+        if (em_device.w_scan_version && (em_device.w_scan_version < 20140614)) {
+           EM_INFO("using flag EM_OLD_DELSYSLIST\n");
+           em_device.w_scan_flags |= EM_OLD_DELSYSLIST;
+           }
+        if (em_device.w_scan_version && (em_device.w_scan_version < 20140529)) {
+           EM_INFO("using flag EM_OLD_SI_HEADER\n");
+           em_device.w_scan_flags |= EM_OLD_SI_HEADER;
+           }
+        if (em_device.w_scan_version && (em_device.w_scan_version < 20140423)) {
+           EM_INFO("using flag EM_OLD_APIDISP\n");
+           em_device.w_scan_flags |= EM_OLD_APIDISP;
+           EM_INFO("using flag EM_OLD_APIDISP\n");
+           em_device.w_scan_flags |= EM_HEXDUMP_BUG;
+           }
+        continue;
+        }
+     // --- end logging w_scan's version -------------------------------------------------------------------------------
+
      // --- get scan type ----------------------------------------------------------------------------------------------
      if (em_device.scantype == SCAN_UNDEFINED) {
         if (strstr(line, "scan type")) {
@@ -681,7 +710,12 @@ static int parse_logfile(const char * log) {
 
         // used DVB API
         if (strstr(line, "Using DVB API ")) {
-           sscanf(line, "Using DVB API %u.%u", &em_api.major, &em_api.minor);
+           if (em_device.w_scan_flags & EM_OLD_APIDISP) {
+              sscanf(line, "Using DVB API %x.%x", &em_api.major, &em_api.minor);
+              }
+           else {
+              sscanf(line, "Using DVB API %u.%u", &em_api.major, &em_api.minor);
+              }
            continue;
            }
 
@@ -755,6 +789,45 @@ static int parse_logfile(const char * log) {
            fatal("unsupported frontend type, cannot parse '%s'\n", line);  
         }
 
+     if (em_device.w_scan_flags & EM_OLD_DELSYSLIST) {
+        EM_INFO("%d: lookup oldstyle delsys hex array\n", line_no);
+        if (strstr(line, "=====================") == NULL) {
+           info("skip line %d: '%s'\n", line_no, line);
+           }
+        else {
+           int len = 0;
+           unsigned tmp, args[16];
+           //EM_INFO("lookup oldstyle delsys hex array: started\n");
+
+           while(fgets(line, 256, logfile) != NULL) {
+              EM_INFO("checking line '%s'", line);
+              line_no++;
+              if (strstr(line, "	======================"))
+                 continue;
+              if (!len) {
+                 sscanf(line, "	len = %d", &len);
+                 continue;
+                 }
+              if (len) {
+                 int i;
+                 int nitems = sscanf(line, "	0x%X: %2X %2X %2X %2X %2X %2X %2X %2X %2X %2X %2X %2X %2X %2X %2X %2X :",
+                               &tmp,
+                               &args[0], &args[1], &args[2], &args[3], &args[4], &args[5], &args[6], &args[7],
+                               &args[8], &args[9], &args[10], &args[11], &args[12], &args[13], &args[14], &args[15]);
+                 EM_INFO("nitems = %d\n", nitems);
+                 if (!nitems)
+                    continue;
+                 for(i=0; i<len; i++)
+                    em_device.delsystems[em_device.ndelsystems++] = (fe_delivery_system_t) args[i];
+                 //for(i=0; i<em_device.ndelsystems; i++)
+                 //   info("delsys %d\n", em_device.delsystems[i]);
+                 break;
+                 }
+              }
+           em_device.w_scan_flags &= ~EM_OLD_DELSYSLIST;
+           }
+        continue;
+        }
      if ((p = strstr(line, "   check ")) != NULL) {
         delsys_list=true;
         continue;
@@ -785,6 +858,7 @@ static int parse_logfile(const char * log) {
            delsys_list = false;
         }
 
+
      if (dev_props != 2) continue; // continue only after frontend reading.
      // --- end of dvb device ------------------------------------------------------------------------------------------
 
@@ -792,6 +866,13 @@ static int parse_logfile(const char * log) {
      // --- we tuned to a new transponder. all si data belongs to this new tp ------------------------------------------
      if (strncmp(line, "        signal ok:	", 19) == 0) is_tp=true;  // '        signal ok:	<FOOBAR>'
      if (strncmp(line, "tune to: "            ,  9) == 0) is_tp=true;  // 'tune to: <FOOBAR>'
+     if (strncmp(line, "signal ok:", 10) == 0) {
+        if (fgets(line, 256, logfile) != NULL) {
+           *line=':';
+           }
+        line_no++;
+        is_tp=true;
+        }
      if (is_tp) {
         char * p = strchr(line, ':'); p++;
         while(isspace(*p)) p++;
@@ -810,6 +891,44 @@ static int parse_logfile(const char * log) {
      if ((p = strstr(line, "SDT(act")) != NULL)          { table_id = TABLE_SDT_ACT; parse_intro(table_id, p, &transport_stream_id,0);  pid = PID_SDT_BAT_ST; continue; }
      if ((p = strstr(line, "SDT(oth")) != NULL)          { table_id = TABLE_SDT_OTH; parse_intro(table_id, p, &transport_stream_id,0);  pid = PID_SDT_BAT_ST; continue; }
      if ((p = strstr(line, "PMT ")) != NULL)             { table_id = TABLE_PMT;     parse_intro(table_id, p, &pmt_pid, &service_id);   pid = pmt_pid;        continue; }
+     if ((em_device.w_scan_flags & EM_OLD_SI_HEADER) && !strncmp(line, "parse_section", 13)) {
+        unsigned args[9];
+        int nargs, tmp;
+//                            parse_section:1376: pid 0x10 tid 0x40 table_id_ext 0x0056, 2/3 (version 16)
+//                            parse_section:1376: pid 17 (0x11), tid 66 (0x42), table_id_ext 30 (0x001e), section_number 0, last_section_number 0, version 3\n" 
+        nargs = sscanf(line, "parse_section:%d: pid %x tid %x table_id_ext %x, %i/%i (version %i)",//",
+               &tmp,&args[0],&args[1],&args[2],&args[3],&args[4],&args[5]);//);
+        if (nargs != 7)
+           nargs = sscanf(line, "parse_section:%d: pid %d (%x), tid %d (%x), table_id_ext %d (%x), section_number %i, last_section_number %i, version %i\n",
+               &tmp,&args[0],&args[1],&args[2],&args[3],&args[4],&args[5],&args[6],&args[7],&args[8]);
+        //if (nargs) info("found %d args---------\n", nargs);
+        if ((nargs == 7) || (nargs == 10)) {
+           EM_INFO("found table. nargs = %d\n", nargs);
+           table_id = (nargs == 7) ? (int)args[1]: (nargs == 10)? (int)args[2]: table_id;
+           switch(table_id) {
+              case TABLE_PAT    :
+                   transport_stream_id = (nargs == 7) ? (int)args[2]: (nargs == 10)? (int)args[4]: transport_stream_id;
+                   break; 
+              case TABLE_NIT_ACT:
+              case TABLE_NIT_OTH:
+                   network_id = (nargs == 7) ? (int)args[2]: (nargs == 10)? (int)args[4]: network_id;
+                   break;
+              case TABLE_SDT_ACT:
+              case TABLE_SDT_OTH:
+                   transport_stream_id = (nargs == 7) ? (int)args[2]: (nargs == 10)? (int)args[4]: transport_stream_id;
+                   break;
+              case TABLE_PMT    :
+                   pmt_pid = ((nargs == 7) || (nargs == 10))? (int)args[0]: pmt_pid;
+                   service_id = (nargs == 7) ? (int)args[2]: (nargs == 10)? (int)args[4]: service_id;
+                   break;
+              default:
+                   info("invalid table id %d\n", table_id);          
+              }
+           if (fgets(line, 256, logfile) != NULL) { EM_INFO("next: %s\n", line); } line_no++; //"NIT (act" 
+           if (fgets(line, 256, logfile) != NULL) { EM_INFO("next: %s\n", line); } line_no++; //"	===================== parse_"
+           if (fgets(line, 256, logfile) != NULL) { EM_INFO("next: %s\n", line); } line_no++; //"	len = "
+           }
+        }
 
      if (strstr(line, "========================================================================")) {
         table_id = -1;
@@ -914,21 +1033,33 @@ static int parse_logfile(const char * log) {
               for(i=0; i < nitems-1; i++)
                  sidata->buf[sidata->len++] = args[i];
               if (len < 1) {
-               //int v = verbosity;
-               //verbosity = 5;
-               //hexdump(table_name(sidata->table_id, &sidata->buf[0], sidata->len);
-               //verbosity = v;
-               //char b[256];
-               //print_transponder(b, &sidata->t);
-               //EM_INFO("add: %6d %-10s pid=%-3d, table_id_ext=%-5d, ONID=%-5d, NID=%-5d, TSID=%-5d, SID=%-5d (%s)\n", \
-               //     freq_scale(em_device.frequency, 1e-3),                                                       \
-               //     table_name(sidata->table_id),                                                                \
-               //     sidata->pid,                                                                                 \
-               //     sidata->table_id_ext,                                                                        \
-               //     sidata->original_network_id,                                                                 \
-               //     sidata->network_id,                                                                          \
-               //     sidata->transport_stream_id,                                                                 \
-               //     sidata->service_id, b);
+                 //info("line %d\n", line_no);
+                 //switch(table_id) {
+                 //   case TABLE_PAT:
+                 //      info("PAT (xxxx:xxxx:%u)\n", transport_stream_id);
+                 //      break;
+                 //   case TABLE_NIT_ACT:
+                 //   case TABLE_NIT_OTH:
+                 //      info("%s: (xxxx:%u:xxxx)\n", table_id == 0x40?"NIT(act)":"NIT(oth)", network_id);
+                 //      break;
+                 //   case TABLE_SDT_ACT:
+                 //   case TABLE_SDT_OTH:
+                 //      info("SDT(%s TS, transport_stream_id %d (0x%04x) )\n", table_id == 0x42 ? "actual":"other",
+                 //          transport_stream_id, transport_stream_id);
+                 //      break;
+                 //   case TABLE_PMT:
+                 //      info("PMT %d (0x%04x) for service %d (0x%04x)\n", pid, pid, service_id, service_id);
+                 //      break;
+                 //   default:
+                 //      info("??? unknown table_id %d\n", table_id);
+                 //   }
+                 if (em_device.w_scan_flags & EM_HEXDUMP_BUG) {
+                    // each sections hexdump misses two bytes, because of bug in older versions. :(
+                    // those are really lost in logfile && not recoverable.
+                    sidata->buf[sidata->len++] = 0;
+                    sidata->buf[sidata->len++] = 0;
+                    }
+                 //hexdump("sidata", &sidata->buf[0], sidata->len);
                  AddItem(em_sidata, sidata);
                  sidata = NULL;
                  }
diff --git a/satellites.dat b/satellites.dat
index 133cb27..9ba79a9 100644
--- a/satellites.dat
+++ b/satellites.dat
@@ -59,11 +59,11 @@ E(__S180E0)
 
 
 /******************************************************************************
- * S172.0 EAST (Region: ASIA)
+ * S172.0 EAST (Region: ASIA), Eutelsat 172A
  * --autogenerated-- ; 20120520_1801
  *****************************************************************************/
 B(__S172E0)
-{5, 3916 , 0, 3330 , 3 , 0, 0 },              // GE 23 HOPE CHANNEL INTERN 11 ;   0.0 bps; NID=1132 ; TID=0    ; 
+{5, 3916 , 0, 3330 , 3 , 0, 0 },              // HOPE CHANNEL INTERN 11 ;   0.0 bps; NID=1132 ; TID=0    ; 
 E(__S172E0)
 
 
@@ -1574,6 +1574,14 @@ E(__S49E0)
 
 
 /******************************************************************************
+ * S48.0 EAST (Region: EUROPE)
+ * --autogenerated-- ; 20150525_1609
+ *****************************************************************************/
+B(__S48E0)
+{5, 11293, 1,27500 , 5 , 0, 0 },              // AFGHANSAT 1               2  ;   0.0Mbps; NID=0 ; TID=0 ;  
+E(__S48E0)
+
+/******************************************************************************
  * S45.0 EAST (Region: EUROPE)
  * --autogenerated-- ; 20120517_1301
  * 1. OK --wk--
@@ -1796,21 +1804,14 @@ E(__S36E0)
 
 /******************************************************************************
  * S33.0 EAST (Region: EUROPE)
- * --autogenerated-- ; 20120517_1301 
- * 1. OK --wk--
- *       removed 10980V,10984V,11111H,11123H,11134H,11136H,11139V,11162H,11181H,
- *               11181V,11513H,11513V,11555H,11555V,11637H,11642H,11667H,11679V,
- *               12522V,12647V,
+ * --autogenerated-- ; 20150525_1644
  *****************************************************************************/
 B(__S33E0)
-{5, 11084, 0, 1100 , 7 , 0, 0 },              // EUTELSAT 33A              0  ;   1.8Mbps; NID=65535; TID=1    ; 
-{5, 11105, 0, 2441 , 2 , 0, 0 },              // EUTELSAT 33A              0  ;   2.2Mbps; NID=0    ; TID=9100 ; 
-{5, 11471, 1, 27500, 5 , 0, 0 },              // EUTELSAT 33A              0  ;   0.0 bps; NID=0    ; TID=0    ; 
-{5, 11472, 0, 27500, 5 , 0, 0 },              // EUTELSAT 33A              0  ;   0.0 bps; NID=0    ; TID=0    ; 
-{5, 11596, 0, 27500, 5 , 0, 0 },              // EUTELSAT 33A              0  ;   0.0 bps; NID=0    ; TID=0    ; 
-{5, 11603, 1, 15710, 3 , 0, 0 },              // EUTELSAT 33A              0  ;  21.7Mbps; NID=829  ; TID=100  ; 
-{6, 11649, 1, 10098, 10, 3, 0 },              // EUTELSAT 33A              0  ;  11.7Mbps; NID=830  ; TID=30500; 
-{6, 12719, 1, 16666, 3 , 3, 9 },              // EUTELSAT 33A              0  ;  24.9Mbps; NID=8808 ; TID=61441; 
+{6, 10975, 0, 30000, 11, 0, 0 },              // EUTELSAT 33B              0  ;   0.0 bps; NID=0    ; TID=0    ;
+{6, 11429, 1, 10098, 10, 3, 0 },              // EUTELSAT 33B              0  ;   0.0 bps; NID=0    ; TID=0    ;
+{5, 11565, 0, 15710, 1 , 0, 0 },              // EUTELSAT 33B              0  ;   0.0 bps; NID=0    ; TID=0    ;
+{6, 12630, 1,  2400, 10, 3, 9 },              // EUTELSAT 33B              0  ;   0.0 bps; NID=126  ; TID=30600;
+{6, 12722, 1, 16730, 3 , 3, 0 },              // EUTELSAT 33A              0  ;  24.9Mbps; NID=8808 ; TID=61441;
 E(__S33E0)
 
 
@@ -2021,7 +2022,7 @@ E(__S26E0)
 /******************************************************************************
  * S25.5 EAST (Region: EUROPE)
  * --autogenerated-- ; 20120517_1301
- * 1. OK --wk--
+ * Eutelsat 25B
  *****************************************************************************/
 B(__S25E5)
 {5, 10996, 1, 2532 , 3 , 0, 0 },              // EUTELSAT 25A              124;   3.5Mbps; NID=65535; TID=1    ; 
@@ -2090,7 +2091,7 @@ E(__S23E5)
  *               11449V,11473H,11513H,11544H,11567V,11596H,11600V,11671H,
  *               11691H,12692H
  *****************************************************************************/
-B(__S21E6)
+B(__S21E5)
 {5, 10971, 1, 2170 , 3 , 0, 0 },              // EUTELSAT 21A              0  ;   3.0Mbps; NID=65535; TID=1    ; 
 {5, 10977, 1, 1447 , 3 , 0, 0 },              // EUTELSAT 21A              0  ;   2.0Mbps; NID=3330 ; TID=333  ; 
 {6, 10986, 0, 1600 , 11, 3, 0 },              // EUTELSAT 21A              0  ;   2.9Mbps; NID=65535; TID=1    ; 
@@ -2107,7 +2108,7 @@ B(__S21E6)
 {5, 11651, 1, 15710, 3 , 0, 0 },              // EUTELSAT 21A              0  ;  21.7Mbps; NID=4369 ; TID=1    ; 
 {5, 11669, 1, 2480 , 7 , 0, 0 },              // EUTELSAT 21A              0  ;  96.5Kbps; NID=65535; TID=1    ; 
 {5, 12517, 1, 2894 , 3 , 0, 0 },              // EUTELSAT 21A              0  ;   4.0Mbps; NID=0    ; TID=0    ; 
-E(__S21E6)
+E(__S21E5)
 
 
 /******************************************************************************
@@ -2553,59 +2554,99 @@ E(__S7E0)
 
 /******************************************************************************
  * S4.8 EAST (Region: EUROPE)
- * --autogenerated-- ; 20120517_1301
- * 1. OK. --wk--
- * NOTE: removed 12265H,12680H,12690H,12698H,12718V,12725V
+ * --autogenerated-- ; 20150101_1459
+ * O.Salonen; w_scan-20150101; ./w_scan -fs -D1c -s S4E8 -v -v -v
  *****************************************************************************/
 B(__S4E8)
-{5, 11727, 0, 27500, 5 , 0, 0 },              // ASTRA 4A                  0  ;  42.2Mbps; NID=86   ; TID=30   ; 
-{5, 11747, 1, 27500, 3 , 0, 0 },              // ASTRA 4A                  0  ;  38.0Mbps; NID=86   ; TID=10   ; 
-{5, 11766, 0, 27500, 3 , 0, 0 },              // ASTRA 4A                  3  ;  38.0Mbps; NID=85   ; TID=12   ; 
-{5, 11785, 1, 27500, 3 , 0, 0 },              // ASTRA 4A                  0  ;  38.0Mbps; NID=86   ; TID=11   ; 
-{5, 11804, 0, 27500, 3 , 0, 0 },              // ASTRA 4A                  0  ;  38.0Mbps; NID=86   ; TID=8    ; 
-{5, 11823, 1, 27500, 3 , 0, 0 },              // ASTRA 4A                  0  ;  38.0Mbps; NID=86   ; TID=9    ; 
-{5, 11843, 0, 27500, 3 , 0, 0 },              // ASTRA 4A                  0  ;  38.0Mbps; NID=85   ; TID=13   ; 
-{5, 11862, 1, 27500, 3 , 0, 0 },              // ASTRA 4A                  0  ;  38.0Mbps; NID=86   ; TID=21   ; 
-{5, 11881, 0, 27500, 3 , 0, 0 },              // ASTRA 4A                  0  ;  38.0Mbps; NID=86   ; TID=7    ; 
-{5, 11900, 1, 27500, 3 , 0, 0 },              // ASTRA 4A                  0  ;  38.0Mbps; NID=85   ; TID=18   ; 
-{5, 11919, 0, 27500, 3 , 0, 0 },              // ASTRA 4A                  0  ;  38.0Mbps; NID=86   ; TID=24   ; 
-{5, 11938, 1, 27500, 3 , 0, 0 },              // ASTRA 4A                  0  ;  38.0Mbps; NID=86   ; TID=22   ; 
-{5, 11958, 0, 27500, 3 , 0, 0 },              // ASTRA 4A                  0  ;  38.0Mbps; NID=85   ; TID=14   ; 
-{5, 11977, 1, 27500, 3 , 0, 0 },              // ASTRA 4A                  0  ;  38.0Mbps; NID=86   ; TID=4    ; 
-{5, 11996, 0, 27500, 3 , 0, 0 },              // ASTRA 4A                  0  ;  38.0Mbps; NID=86   ; TID=6    ; 
-{5, 12015, 1, 27500, 5 , 0, 0 },              // ASTRA 4A                  0  ;  42.2Mbps; NID=86   ; TID=28   ; 
-{5, 12034, 0, 27500, 3 , 0, 0 },              // ASTRA 4A                  0  ;  38.0Mbps; NID=86   ; TID=5    ; 
-{5, 12054, 1, 27500, 3 , 0, 0 },              // ASTRA 4A                  0  ;  38.0Mbps; NID=86   ; TID=3    ; 
-{5, 12073, 0, 27500, 3 , 0, 0 },              // ASTRA 4A                  15 ;  38.0Mbps; NID=85   ; TID=15   ; 
-{5, 12092, 1, 27500, 3 , 0, 0 },              // ASTRA 4A                  0  ;  38.0Mbps; NID=86   ; TID=23   ; 
-{5, 12111, 0, 27500, 5 , 0, 0 },              // ASTRA 4A                  0  ;  42.2Mbps; NID=65535; TID=1    ; 
-{5, 12130, 1, 27500, 3 , 0, 0 },              // ASTRA 4A                  0  ;  38.0Mbps; NID=85   ; TID=16   ; 
-{5, 12149, 0, 27500, 3 , 0, 0 },              // ASTRA 4A                  0  ;  38.0Mbps; NID=1    ; TID=201  ; 
-{6, 12169, 1, 27500, 3 , 3, 9 },              // ASTRA 4A                  0  ;  61.3Mbps; NID=68   ; TID=24   ; 
-{6, 12188, 0, 27500, 3 , 3, 9 },              // ASTRA 4A                  0  ;  59.9Mbps; NID=86   ; TID=33   ; 
-{6, 12207, 1, 27500, 3 , 3, 9 },              // ASTRA 4A                  0  ;  61.3Mbps; NID=68   ; TID=26   ; 
-{5, 12226, 0, 25540, 7 , 0, 0 },              // ASTRA 4A                  0  ;  41.2Mbps; NID=94   ; TID=1    ; 
-{5, 12245, 1, 27500, 3 , 0, 0 },              // ASTRA 4A                  0  ;  38.0Mbps; NID=85   ; TID=52   ; 
-{5, 12265, 0, 27500, 3 , 0, 0 },              // ASTRA 4A                  0  ;  42.2Mbps; NID=1    ; TID=1    ; 
-{5, 12284, 1, 27500, 3 , 0, 0 },              // ASTRA 4A                  0  ;  38.0Mbps; NID=85   ; TID=17   ; 
-{5, 12303, 0, 25547, 7 , 0, 0 },              // ASTRA 4A                  0  ;  41.2Mbps; NID=0    ; TID=0    ; 
-{5, 12322, 1, 27500, 7 , 0, 0 },              // ASTRA 4A                  0  ;  44.4Mbps; NID=94   ; TID=1    ; 
-{6, 12341, 0, 27500, 3 , 3, 9 },              // ASTRA 4A                  0  ;  59.9Mbps; NID=86   ; TID=32   ; 
-{5, 12360, 1, 27500, 3 , 0, 0 },              // ASTRA 4A                  0  ;  38.0Mbps; NID=366  ; TID=256  ; 
-{5, 12380, 0, 27500, 3 , 0, 0 },              // ASTRA 4A                  0  ;  38.0Mbps; NID=85   ; TID=2    ; 
-{6, 12399, 1, 27500, 3 , 3, 9 },              // ASTRA 4A                  0  ;  59.9Mbps; NID=86   ; TID=25   ; 
-{5, 12418, 0, 27500, 3 , 0, 0 },              // ASTRA 4A                  0  ;  38.0Mbps; NID=1    ; TID=101  ; 
-{6, 12437, 1, 27500, 3 , 3, 9 },              // ASTRA 4A                  0  ;  59.9Mbps; NID=86   ; TID=27   ; 
-{6, 12456, 0, 27500, 3 , 3, 9 },              // ASTRA 4A                  0  ;  59.9Mbps; NID=86   ; TID=31   ; 
-{5, 12476, 1, 27500, 3 , 0, 0 },              // ASTRA 4A                  0  ;  38.0Mbps; NID=86   ; TID=26   ; 
-{5, 12608, 0, 27500, 3 , 0, 0 },              // ASTRA 4A                  0  ;  38.0Mbps; NID=86   ; TID=29   ; 
-{5, 12637, 0, 14465, 3 , 0, 0 },              // ASTRA 4A                  0  ;  20.0Mbps; NID=86   ; TID=20   ; 
-{5, 12672, 0, 3300 , 3 , 0, 0 },              // ASTRA 4A                  0  ;   4.6Mbps; NID=1    ; TID=1    ; 
-{6, 12682, 1, 1111 , 2 , 3, 9 },              // ASTRA 4A                  0  ;   2.8Mbps; NID=21845; TID=43690; 
-{5, 12687, 1, 6667 , 5 , 0, 0 },              // ASTRA 4A                  0  ;  10.2Mbps; NID=2052 ; TID=256  ; 
-{5, 12693, 1, 3333 , 5 , 0, 0 },              // ASTRA 4A                  0  ;   5.1Mbps; NID=177  ; TID=176  ; 
-{5, 12703, 1, 2963 , 3 , 0, 0 },              // ASTRA 4A                  0  ;   4.1Mbps; NID=235  ; TID=100  ; 
-{5, 12713, 0, 2450 , 7 , 0, 0 },              // ASTRA 4A                  0  ;   3.9Mbps; NID=65535; TID=1    ;
+{5, 10723, 0, 29900, 9 , 3, 6 },              // ASTRA 4A && SES 5            ; (318  , 68   ,11100)
+{5, 10759, 0, 30000, 9 , 3, 6 },              // ASTRA 4A && SES 5            ; (3    , 68   ,1    )
+{5, 10796, 1, 27500, 9 , 3, 6 },              // ASTRA 4A && SES 5            ; (318  , 68   ,11400)
+{5, 10806, 0, 30000, 9 , 3, 6 },              // ASTRA 4A && SES 5            ; (1    , 68   ,20   )
+{5, 10912, 0, 22330, 9 , 3, 6 },              // ASTRA 4A && SES 5            ; (4369 , 68   ,21   )
+{5, 10955, 1, 27500, 9 , 3, 6 },              // ASTRA 4A && SES 5            ; (318  , 68   ,201  )
+{5, 10971, 0, 27500, 3 , 0, 0 },              // ASTRA 4A && SES 5            ; (318  , 86   ,10971)
+{6, 10993, 1, 27500, 9 , 3, 9 },              // ASTRA 4A && SES 5            ; (318  , 68   ,401  )
+{5, 11013, 0, 27500, 3 , 0, 0 },              // ASTRA 4A && SES 5            ; (100  , 86   ,4688 )
+{5, 11034, 1, 27500, 9 , 3, 6 },              // ASTRA 4A && SES 5            ; (318  , 68   ,12600)
+{6, 11096, 0, 29900, 9 , 3, 9 },              // ASTRA 4A && SES 5            ; (318  , 68   ,12900)
+{5, 11117, 1, 27500, 9 , 3, 6 },              // ASTRA 4A && SES 5            ; (318  , 68   ,13000)
+{5, 11137, 0, 27500, 3 , 0, 0 },              // ASTRA 4A && SES 5            ; (318  , 86   ,13100)
+{5, 11158, 1, 27500, 9 , 3, 6 },              // ASTRA 4A && SES 5            ; (113  , 68   ,13200)
+{5, 11240, 1, 27500, 9 , 3, 6 },              // ASTRA 4A && SES 5            ; (318  , 68   ,200  )
+{5, 11252, 0, 03600, 9 , 3, 6 },              // ASTRA 4A && SES 5            ; (2    , 68   ,2    )
+{6, 11265, 0, 30000, 3 , 0, 9 },              // ASTRA 4A && SES 5            ; (86   , 86   ,34   )
+{6, 11265, 1, 30000, 3 , 0, 9 },              // ASTRA 4A && SES 5            ; (86   , 86   ,33   )
+{6, 11278, 1, 27500, 9 , 3, 9 },              // ASTRA 4A && SES 5            ; (318  , 68   ,400  )
+{6, 11305, 0, 30000, 3 , 0, 9 },              // ASTRA 4A && SES 5            ; (86   , 86   ,35   )
+{6, 11305, 1, 30000, 3 , 0, 9 },              // ASTRA 4A && SES 5            ; (86   , 86   ,32   )
+{6, 11345, 0, 30000, 3 , 0, 9 },              // ASTRA 4A && SES 5            ; (86   , 86   ,36   )
+{6, 11345, 1, 30000, 3 , 0, 9 },              // ASTRA 4A && SES 5            ; (86   , 86   ,25   )
+{6, 11385, 0, 30000, 3 , 0, 9 },              // ASTRA 4A && SES 5            ; (86   , 86   ,38   )
+{6, 11385, 1, 30000, 3 , 0, 9 },              // ASTRA 4A && SES 5            ; (86   , 86   ,31   )
+{5, 11389, 0, 27500, 9 , 3, 6 },              // ASTRA 4A && SES 5            ; (1    , 68   ,1    )
+{5, 11395, 0, 27500, 9 , 3, 6 },              // ASTRA 4A && SES 5            ; (1    , 68   ,2    )
+{5, 11411, 0, 27500, 9 , 3, 6 },              // ASTRA 4A && SES 5            ; (318  , 68   ,1100 )
+{5, 11488, 0, 27500, 3 , 0, 0 },              // ASTRA 4A && SES 5            ; (318  , 94   ,1500 )
+{5, 11604, 0, 27500, 9 , 3, 6 },              // ASTRA 4A && SES 5            ; (318  , 68   ,15500)
+{5, 11610, 0, 03600, 9 , 3, 6 },              // ASTRA 4A && SES 5            ; (2    , 68   ,1    )
+{5, 11623, 1, 27500, 9 , 3, 6 },              // ASTRA 4A && SES 5            ; (318  , 68   ,15600)
+{5, 11642, 0, 27500, 9 , 3, 6 },              // ASTRA 4A && SES 5            ; (318  , 68   ,15700)
+{6, 11654, 0, 02000, 9 , 3, 0 },              // ASTRA 4A && SES 5            ; (4660 , 68   ,1    )
+{6, 11662, 1, 27500, 9 , 3, 9 },              // ASTRA 4A && SES 5            ; (318  , 68   ,15800)
+{6, 11681, 0, 27500, 9 , 3, 9 },              // ASTRA 4A && SES 5            ; (319  , 68   ,15900)
+{5, 11727, 0, 27500, 5 , 0, 0 },              // ASTRA 4A && SES 5            ; (86   , 86   ,30   )
+{5, 11727, 1, 27500, 9 , 3, 6 },              // ASTRA 4A && SES 5            ; (1    , 68   ,5000 )
+{5, 11766, 0, 27500, 3 , 0, 0 },              // ASTRA 4A && SES 5            ; (85   , 86   ,12   )
+{5, 11785, 1, 27500, 3 , 0, 0 },              // ASTRA 4A && SES 5            ; (86   , 86   ,11   )
+{5, 11804, 0, 27500, 3 , 0, 0 },              // ASTRA 4A && SES 5            ; (86   , 86   ,8    )
+{5, 11804, 1, 27500, 3 , 0, 0 },              // ASTRA 4A && SES 5            ; (318  , 86   ,5400 )
+{5, 11823, 1, 27500, 3 , 0, 0 },              // ASTRA 4A && SES 5            ; (86   , 86   ,9    )
+{5, 11843, 0, 27500, 3 , 0, 0 },              // ASTRA 4A && SES 5            ; (85   , 86   ,13   )
+{5, 11862, 1, 27500, 3 , 0, 0 },              // ASTRA 4A && SES 5            ; (86   , 86   ,21   )
+{5, 11881, 0, 27500, 3 , 0, 0 },              // ASTRA 4A && SES 5            ; (86   , 86   ,7    )
+{5, 11900, 1, 27500, 3 , 0, 0 },              // ASTRA 4A && SES 5            ; (85   , 86   ,18   )
+{5, 11919, 0, 27500, 3 , 0, 0 },              // ASTRA 4A && SES 5            ; (86   , 86   ,24   )
+{5, 11938, 1, 27500, 3 , 0, 0 },              // ASTRA 4A && SES 5            ; (86   , 86   ,22   )
+{5, 11958, 0, 27500, 3 , 0, 0 },              // ASTRA 4A && SES 5            ; (85   , 86   ,14   )
+{5, 11977, 1, 27500, 3 , 0, 0 },              // ASTRA 4A && SES 5            ; (86   , 86   ,4    )
+{5, 11996, 0, 27500, 3 , 0, 0 },              // ASTRA 4A && SES 5            ; (86   , 86   ,6    )
+{6, 12015, 0, 27500, 9 , 3, 9 },              // ASTRA 4A && SES 5            ; (156  , 68   ,6500 )
+{5, 12015, 1, 27500, 5 , 0, 0 },              // ASTRA 4A && SES 5            ; (86   , 86   ,28   )
+{5, 12034, 0, 27500, 3 , 0, 0 },              // ASTRA 4A && SES 5            ; (86   , 86   ,5    )
+{6, 12034, 1, 27500, 9 , 3, 9 },              // ASTRA 4A && SES 5            ; (158  , 68   ,6600 )
+{5, 12054, 1, 27500, 3 , 0, 0 },              // ASTRA 4A && SES 5            ; (86   , 86   ,3    )
+{6, 12071, 0, 27500, 9 , 3, 9 },              // ASTRA 4A && SES 5            ; (85   , 85   ,42   )
+{5, 12073, 0, 27500, 3 , 0, 0 },              // ASTRA 4A && SES 5            ; (85   , 86   ,15   )
+{5, 12092, 1, 27500, 3 , 0, 0 },              // ASTRA 4A && SES 5            ; (86   , 86   ,23   )
+{5, 12130, 0, 27500, 9 , 3, 6 },              // ASTRA 4A && SES 5            ; (318  , 68   ,7100 )
+{5, 12130, 1, 27500, 3 , 0, 0 },              // ASTRA 4A && SES 5            ; (85   , 68   ,16   )
+{5, 12149, 0, 27500, 3 , 0, 0 },              // ASTRA 4A && SES 5            ; (1    , 1    ,201  )
+{5, 12149, 1, 27500, 9 , 3, 6 },              // ASTRA 4A && SES 5            ; (318  , 68   ,7200 )
+{6, 12168, 1, 27500, 3 , 1, 9 },              // ASTRA 4A && SES 5            ; (68   , 68   ,24   )
+{6, 12206, 1, 30000, 3 , 0, 9 },              // ASTRA 4A && SES 5            ; (68   , 86   ,26   )
+{5, 12207, 0, 27500, 9 , 3, 6 },              // ASTRA 4A && SES 5            ; (318  , 68   ,1    )
+{5, 12245, 0, 27500, 9 , 3, 6 },              // ASTRA 4A && SES 5            ; (318  , 68   ,7700 )
+{5, 12245, 1, 27500, 3 , 0, 0 },              // ASTRA 4A && SES 5            ; (85   , 86   ,52   )
+{5, 12265, 0, 27500, 9 , 3, 6 },              // ASTRA 4A && SES 5            ; (366  , 68   ,256  )
+{5, 12284, 1, 27500, 3 , 0, 0 },              // ASTRA 4A && SES 5            ; (85   , 86   ,17   )
+{5, 12303, 0, 25547, 7 , 0, 0 },              // ASTRA 4A && SES 5            ; (1    , 1    ,0    )
+{5, 12322, 0, 27500, 9 , 3, 6 },              // ASTRA 4A && SES 5            ; (318  , 68   ,8100 )
+{5, 12322, 1, 27500, 7 , 0, 0 },              // ASTRA 4A && SES 5            ; (94   , 94   ,1    )
+{5, 12380, 0, 27500, 3 , 0, 0 },              // ASTRA 4A && SES 5            ; (85   , 86   ,2    )
+{5, 12399, 1, 27500, 3 , 0, 0 },              // ASTRA 4A && SES 5            ; (85   , 85   ,19   )
+{5, 12417, 1, 27500, 9 , 3, 6 },              // ASTRA 4A && SES 5            ; (85   , 68   ,20   )
+{5, 12418, 0, 27500, 3 , 0, 0 },              // ASTRA 4A && SES 5            ; (1    , 1    ,101  )
+{6, 12437, 1, 27500, 3 , 0, 9 },              // ASTRA 4A && SES 5            ; (86   , 86   ,27   )
+{6, 12456, 0, 27500, 3 , 0, 9 },              // ASTRA 4A && SES 5            ; (86   , 86   ,37   )
+{6, 12476, 0, 29900, 9 , 3, 9 },              // ASTRA 4A && SES 5            ; (318  , 68   ,8900 )
+{5, 12476, 1, 27500, 3 , 0, 0 },              // ASTRA 4A && SES 5            ; (86   , 86   ,26   )
+{5, 12520, 1, 27500, 9 , 3, 6 },              // ASTRA 4A && SES 5            ; (318  , 68   ,9000 )
+{5, 12597, 1, 27500, 9 , 3, 6 },              // ASTRA 4A && SES 5            ; (318  , 68   ,9400 )
+{5, 12609, 0, 27500, 3 , 0, 0 },              // ASTRA 4A && SES 5            ; (86   , 86   ,29   )
+{5, 12637, 0, 14468, 3 , 0, 0 },              // ASTRA 4A && SES 5            ; (86   , 86   ,20   )
+{5, 12670, 0, 02600, 9 , 3, 6 },              // ASTRA 4A && SES 5            ; (85   , 68   ,1    )
+{5, 12692, 0, 27500, 9 , 3, 6 },              // ASTRA 4A && SES 5            ; (319  , 68   ,9900 )
+{5, 12731, 1, 15300, 9 , 3, 6 },              // ASTRA 4A && SES 5            ; (8192 , 68   ,4096 )
 E(__S4E8)
 
 
@@ -3005,13 +3046,12 @@ E(__S18W0)
 
 /******************************************************************************
  * S20.0 WEST (Region: ATLANTIC)
- * --autogenerated-- ; 20120517_1301
- * 1. OK. --wk--
+ * 20150525_1742
+ * NSS 7 moved from 22W to 20W to replace NSS 5
  *****************************************************************************/
 B(__S20W0)
-{5, 3913 , 3, 8950 , 3 , 0, 0 },              // NSS 5                     23 ;  11.0Mbps; NID=1    ; TID=1    ; 
-{5, 3983 , 3, 25000, 3 , 0, 0 },              // NSS 5                     24 ;  34.6Mbps; NID=1    ; TID=201  ; 
-{6, 4159 , 2, 3034 , 1 , 3, 0 },              // NSS 5                     88 ;   2.9Mbps; NID=1    ; TID=1    ; 
+{6, 4129 , 3, 15405, 1 , 0, 0 },              // NSS 7                     8  ;   0.0 bps; NID=0    ; TID=0    ;   
+{5, 15585, 0, 2200 , 1 , 0, 0 },              // NSS 7                     7  ;   0.0Mbps; NID=0    ; TID=0    ;
 E(__S20W0)
 
 
@@ -4600,6 +4640,7 @@ S100E5,
  S53E0,
  S52E5,
  S49E0,
+ S48E0,
  S45E0,
  S42E0,
  S40E0,
@@ -4613,7 +4654,7 @@ S100E5,
  S26E0,
  S25E5,
  S23E5,
- S21E6,
+ S21E5,
  S20E0,
  S19E2,
  S16E0,
@@ -4691,140 +4732,141 @@ S177W0,
  *****************************************************************************/
 
 struct cSat sat_list[] = {
-/** pos *** id *** long satellite name ***************************** items **************** item_count ************ we_flag * orbit * rotor * vdrid */
-{"S180E0", S180E0, "180.0 east Intelsat 18"                       , __S180E0,    SAT_TRANSPONDER_COUNT(__S180E0),   EAST_FLAG, 0x1800, -1, "S180E"  }, // 20120520: new
-{"S172E0", S172E0, "172.0 east GE 23"                             , __S172E0,    SAT_TRANSPONDER_COUNT(__S172E0),   EAST_FLAG, 0x1720, -1, "S172E"  }, // 20120520: new
-{"S169E0", S169E0, "169.0 east Intelsat 5"                        , __S169E0,    SAT_TRANSPONDER_COUNT(__S169E0),   EAST_FLAG, 0x1690, -1, "S169E"  }, // 20120520: new
-{"S166E0", S166E0, "166.0 east Intelsat 8"                        , __S166E0,    SAT_TRANSPONDER_COUNT(__S166E0),   EAST_FLAG, 0x1660, -1, "S166E"  },
-{"S162E0", S162E0, "162.0 east Superbird B2"                      , __S162E0,    SAT_TRANSPONDER_COUNT(__S162E0),   EAST_FLAG, 0x1620, -1, "S162E"  }, // 20120520: new
-{"S160E0", S160E0, "160.0 east Optus D1"                          , __S160E0,    SAT_TRANSPONDER_COUNT(__S160E0),   EAST_FLAG, 0x1600, -1, "S160E"  },
-{"S156E0", S156E0, "156.0 east Optus C1/D3"                       , __S156E0,    SAT_TRANSPONDER_COUNT(__S156E0),   EAST_FLAG, 0x1560, -1, "S156E"  },
-{"S154E0", S154E0, "154.0 east JCSAT 2A"                          , __S154E0,    SAT_TRANSPONDER_COUNT(__S154E0),   EAST_FLAG, 0x1540, -1, "S154E"  }, // 20120520: new
-{"S152E0", S152E0, "152.0 east Optus D2"                          , __S152E0,    SAT_TRANSPONDER_COUNT(__S152E0),   EAST_FLAG, 0x1520, -1, "S152E"  },
-{"S144E0", S144E0, "144.0 east Superbird C2"                      , __S144E0,    SAT_TRANSPONDER_COUNT(__S144E0),   EAST_FLAG, 0x1440, -1, "S144E"  }, // 20120520: new
-{"S140E0", S140E0, "140.0 east Express AM3"                       , __S140E0,    SAT_TRANSPONDER_COUNT(__S140E0),   EAST_FLAG, 0x1400, -1, "S140E"  }, // 20120520: id && name changed.
-{"S138E0", S138E0, "134.0 east Telstar 18"                        , __S138E0,    SAT_TRANSPONDER_COUNT(__S138E0),   EAST_FLAG, 0x1380, -1, "S138E"  }, // 20120520: new
-{"S134E0", S134E0, "134.0 east Apstar 6"                          , __S134E0,    SAT_TRANSPONDER_COUNT(__S134E0),   EAST_FLAG, 0x1340, -1, "S134E"  }, // 20120520: new
-{"S132E0", S132E0, "132.0 east Vinasat 1 / JCSAT 5A"              , __S132E0,    SAT_TRANSPONDER_COUNT(__S132E0),   EAST_FLAG, 0x1320, -1, "S132E"  }, // 20120520: new
-{"S128E0", S128E0, "128.0 east JCSAT 3A"                          , __S128E0,    SAT_TRANSPONDER_COUNT(__S128E0),   EAST_FLAG, 0x1280, -1, "S128E"  }, // 20120520: new
-{"S125E0", S125E0, "125.0 east ChinaSat 6A"                       , __S125E0,    SAT_TRANSPONDER_COUNT(__S125E0),   EAST_FLAG, 0x1250, -1, "S125E"  }, // 20120520: new
-{"S124E0", S124E0, "124.0 east JCSAT 4A"                          , __S124E0,    SAT_TRANSPONDER_COUNT(__S124E0),   EAST_FLAG, 0x1240, -1, "S124E"  }, // 20120520: new
-{"S122E2", S122E2, "122.2 east AsiaSat 4"                         , __S122E2,    SAT_TRANSPONDER_COUNT(__S122E2),   EAST_FLAG, 0x1222, -1, "S122.2E"}, // 20120520: new
-{"S118E0", S118E0, "118.0 east Telkom 2"                          , __S118E0,    SAT_TRANSPONDER_COUNT(__S118E0),   EAST_FLAG, 0x1180, -1, "S118E"  }, // 20120520: new
-{"S116E0", S116E0, "116.0 east Koreasat 6 / ABS 7"                , __S116E0,    SAT_TRANSPONDER_COUNT(__S116E0),   EAST_FLAG, 0x1160, -1, "S116E"  }, // 20120520: new
-{"S115E5", S115E5, "115.5 east ChinaSat 6B"                       , __S115E5,    SAT_TRANSPONDER_COUNT(__S115E5),   EAST_FLAG, 0x1155, -1, "S115.5E"}, // 20120520: new
-{"S113E0", S113E0, "113.0 east Koreasat 5 / Palapa D"             , __S113E0,    SAT_TRANSPONDER_COUNT(__S113E0),   EAST_FLAG, 0x1130, -1, "S113E"  }, // 20120520: new
-{"S110E5", S110E5, "110.5 east ChinaSat 10"                       , __S110E5,    SAT_TRANSPONDER_COUNT(__S110E5),   EAST_FLAG, 0x1105, -1, "S110.5E"}, // 20120520: new
-{"S110E0", S110E0, "110.0 east NSat 110 / BSat 2C/3A / JCSat 110R", __S110E0,    SAT_TRANSPONDER_COUNT(__S110E0),   EAST_FLAG, 0x1100, -1, "S110E"  }, // 20120520: new
-{"S108E2", S108E2, "108.2 east Telkom 1 / NSS 11 / SES 7"         , __S108E2,    SAT_TRANSPONDER_COUNT(__S108E2),   EAST_FLAG, 0x1082, -1, "S108.2E"}, // 20120520: id && name changed.
-{"S105E5", S105E5, "105.5 east AsiaSat 3S"                        , __S105E5,    SAT_TRANSPONDER_COUNT(__S105E5),   EAST_FLAG, 0x1055, -1, "S105.5E"}, // 20120520: id changed. 
-{"S103E0", S103E0, "103.0 east Express A2"                        , __S103E0,    SAT_TRANSPONDER_COUNT(__S103E0),   EAST_FLAG, 0x1030, -1, "S103E"  }, // 20120520: new 
-{"S100E5", S100E5, "100.5 east AsiaSat 5"                         , __S100E5,    SAT_TRANSPONDER_COUNT(__S100E5),   EAST_FLAG, 0x1005, -1, "S100.5E"}, // 20120520: id && name changed.
-{ "S96E5",  S96E5,  "96.5 east Express AM33"                      ,  __S96E5,    SAT_TRANSPONDER_COUNT( __S96E5),   EAST_FLAG,  0x965, -1, "S96.5E" }, // 20120520: id changed.
-{ "S95E0",  S95E0,  "95.0 east NSS 6"                             ,  __S95E0,    SAT_TRANSPONDER_COUNT( __S95E0),   EAST_FLAG,  0x950, -1, "S95E"   }, // 20120520: id changed.
-{ "S93E5",  S93E5,  "93.5 east Insat 3A/4B"                       ,  __S93E5,    SAT_TRANSPONDER_COUNT( __S93E5),   EAST_FLAG,  0x935, -1, "S93.5E" }, // 20120520: id changed.
-{ "S91E5",  S91E5,  "91.5 east Measat 3 / 3A"                     ,  __S91E5,    SAT_TRANSPONDER_COUNT( __S91E5),   EAST_FLAG,  0x915, -1, "S91.5E" }, // 20120520: id changed.
-{ "S90E0",  S90E0,  "90.0 east Yamal 201"                         ,  __S90E0,    SAT_TRANSPONDER_COUNT( __S90E0),   EAST_FLAG,  0x900, -1, "S90E"   }, // 20120520: id changed.
-{ "S88E0",  S88E0,  "88.0 east ST 2"                              ,  __S88E0,    SAT_TRANSPONDER_COUNT( __S88E0),   EAST_FLAG,  0x880, -1, "S88E"   }, // 20120520: id && name changed.
-{ "S87E5",  S87E5,  "87.5 east ChinaSat 5A"                       ,  __S87E5,    SAT_TRANSPONDER_COUNT( __S87E5),   EAST_FLAG,  0x875, -1, "S87.5E" }, // 20120520: id && name changed.
-{ "S86E5",  S86E5,  "86.5 east KazSat 2"                          ,  __S86E5,    SAT_TRANSPONDER_COUNT( __S86E5),   EAST_FLAG,  0x865, -1, "S86.5E" }, // 20120520: new
-{ "S85E0",  S85E0,  "85.0 east Horisons 2 / Intelsat 15"          ,  __S85E0,    SAT_TRANSPONDER_COUNT( __S85E0),   EAST_FLAG,  0x850, -1, "S85E"   }, // 20120520: new
-{ "S83E0",  S83E0,  "83.0 east Insat 2E/4A"                       ,  __S83E0,    SAT_TRANSPONDER_COUNT( __S83E0),   EAST_FLAG,  0x830, -1, "S83E"   }, // 20120517: id changed.
-{ "S78E5",  S78E5,  "78.5 east Thaicom 2/5"                       ,  __S78E5,    SAT_TRANSPONDER_COUNT( __S78E5),   EAST_FLAG,  0x785, -1, "S78.5E" },
-{ "S76E5",  S76E5,  "76.5 east Telstar 10 (Apstar 2R)"            ,  __S76E5,    SAT_TRANSPONDER_COUNT( __S76E5),   EAST_FLAG,  0x765, -1, "S76.5E" }, // 20120517: id changed.
-{ "S75E0",  S75E0,  "75.0 east ABS 1"                             ,  __S75E0,    SAT_TRANSPONDER_COUNT( __S75E0),   EAST_FLAG,  0x750, -1, "S75E"   }, // 20120517: id changed.
-{ "S70E5",  S70E5,  "70.5 east Eutelsat W5"                       ,  __S70E5,    SAT_TRANSPONDER_COUNT( __S70E5),   EAST_FLAG,  0x705, -1, "S70.5E" },
-{ "S68E5",  S68E5,  "68.5 east Intelsat 7/10"                     ,  __S68E5,    SAT_TRANSPONDER_COUNT( __S68E5),   EAST_FLAG,  0x685, -1, "S68.5E" }, // 20120517: id changed.
-{ "S66E0",  S66E0,  "66.0 east Intelsat 17"                       ,  __S66E0,    SAT_TRANSPONDER_COUNT( __S66E0),   EAST_FLAG,  0x660, -1, "S66E"   }, // new 20120517
-{ "S64E2",  S64E2,  "64.2 east Intelsat 906"                      ,  __S64E2,    SAT_TRANSPONDER_COUNT( __S64E2),   EAST_FLAG,  0x642, -1, "S64E"   },
-{ "S62E0",  S62E0,  "62.0 east Intelsat 902"                      ,  __S62E0,    SAT_TRANSPONDER_COUNT( __S62E0),   EAST_FLAG,  0x620, -1, "S62E"   }, // 20120517: id changed.
-{ "S60E0",  S60E0,  "60.0 east Intelsat 904"                      ,  __S60E0,    SAT_TRANSPONDER_COUNT( __S60E0),   EAST_FLAG,  0x600, -1, "S60E"   }, // 20120517: id changed.
-{ "S57E0",  S57E0,  "57.0 east NSS 12"                            ,  __S57E0,    SAT_TRANSPONDER_COUNT( __S57E0),   EAST_FLAG,  0x570, -1, "S57E"   },
-{ "S56E0",  S56E0,  "56.0 east Bonum 1"                           ,  __S56E0,    SAT_TRANSPONDER_COUNT( __S56E0),   EAST_FLAG,  0x560, -1, "S56E"   }, // 20120517: id changed.
-{ "S53E0",  S53E0,  "53.0 east Express AM22"                      ,  __S53E0,    SAT_TRANSPONDER_COUNT( __S53E0),   EAST_FLAG,  0x530, -1, "S53E"   },
-{ "S52E5",  S52E5,  "52.5 east Yahsat 1A"                         ,  __S52E5,    SAT_TRANSPONDER_COUNT( __S52E5),   EAST_FLAG,  0x525, -1, "S52.5E" },
-{ "S49E0",  S49E0,  "49.0 east Yamal 202"                         ,  __S49E0,    SAT_TRANSPONDER_COUNT( __S49E0),   EAST_FLAG,  0x490, -1, "S49E"   },
-{ "S45E0",  S45E0,  "45.0 east Intelsat 12"                       ,  __S45E0,    SAT_TRANSPONDER_COUNT( __S45E0),   EAST_FLAG,  0x450, -1, "S45E"   },
-{ "S42E0",  S42E0,  "42.0 east Turksat 2A/3A"                     ,  __S42E0,    SAT_TRANSPONDER_COUNT( __S42E0),   EAST_FLAG,  0x420, -1, "S42E"   },
-{ "S40E0",  S40E0,  "40.0 east Express AM1"                       ,  __S40E0,    SAT_TRANSPONDER_COUNT( __S40E0),   EAST_FLAG,  0x400, -1, "S40E"   }, // 20120517: id changed.
-{ "S39E0",  S39E0,  "39.0 east Hellas Sat 2"                      ,  __S39E0,    SAT_TRANSPONDER_COUNT( __S39E0),   EAST_FLAG,  0x390, -1, "S39E"   },
-{ "S38E0",  S38E0,  "38.0 east Paksat 1"                          ,  __S38E0,    SAT_TRANSPONDER_COUNT( __S38E0),   EAST_FLAG,  0x380, -1, "S38E"   },
-{ "S36E0",  S36E0,  "36.0 east Eutelsat W4/W7"                    ,  __S36E0,    SAT_TRANSPONDER_COUNT( __S36E0),   EAST_FLAG,  0x360, -1, "S36E"   }, // old id: S35E9
-{ "S33E0",  S33E0,  "33.0 east Eurobird 3"                        ,  __S33E0,    SAT_TRANSPONDER_COUNT( __S33E0),   EAST_FLAG,  0x330, -1, "S33E"   },
-{ "S31E5",  S31E5,  "31.5 east Astra 5A/1D"                       ,  __S31E5,    SAT_TRANSPONDER_COUNT( __S31E5),   EAST_FLAG,  0x315, -1, "S31.5E" },
-{ "S30E5",  S30E5,  "30.5 east Arabsat 5A"                        ,  __S30E5,    SAT_TRANSPONDER_COUNT( __S30E5),   EAST_FLAG,  0x305, -1, "S30.5E" }, // new 20120517
-{ "S28E2",  S28E2,  "28.2 east Astra 2A/B/C/D + EuroBird 1 28.5"  ,  __S28E2,    SAT_TRANSPONDER_COUNT( __S28E2),   EAST_FLAG,  0x282, -1, "S28.2E" }, // 20120517: merged 28.2 && 28.5
-{ "S26E0",  S26E0,  "26.X east Badr C/3/4/6"                      ,  __S26E0,    SAT_TRANSPONDER_COUNT( __S26E0),   EAST_FLAG,  0x260, -1, "S26E"   }, // 20120517: id changed.
-{ "S25E5",  S25E5,  "25.5 east Eurobird 2"                        ,  __S25E5,    SAT_TRANSPONDER_COUNT( __S25E5),   EAST_FLAG,  0x255, -1, "S25.5E" },
-{ "S23E5",  S23E5,  "23.5 east Astra 1E/3A"                       ,  __S23E5,    SAT_TRANSPONDER_COUNT( __S23E5),   EAST_FLAG,  0x235, -1, "S23.5E" },
-{ "S21E6",  S21E6,  "21.6 east Eutelsat W6"                       ,  __S21E6,    SAT_TRANSPONDER_COUNT( __S21E6),   EAST_FLAG,  0x216, -1, "S21.6E" },
-{ "S20E0",  S20E0,  "20.0 east Arabsat 5C"                        ,  __S20E0,    SAT_TRANSPONDER_COUNT( __S20E0),   EAST_FLAG,  0x200, -1, "S20E"   }, // new 20120517
-{ "S19E2",  S19E2,  "19.2 east Astra 1F/1G/1H/1KR/1L"             ,  __S19E2,    SAT_TRANSPONDER_COUNT( __S19E2),   EAST_FLAG,  0x192, -1, "S19.2E" },
-{ "S16E0",  S16E0,  "16.0 east Eutelsat W2"                       ,  __S16E0,    SAT_TRANSPONDER_COUNT( __S16E0),   EAST_FLAG,  0x160, -1, "S16E"   },
-{ "S13E0",  S13E0,  "13.0 east Hotbird 6/7A/8"                    ,  __S13E0,    SAT_TRANSPONDER_COUNT( __S13E0),   EAST_FLAG,  0x130, -1, "S13E"   },
-{ "S10E0",  S10E0,  "10.0 east Eutelsat W1"                       ,  __S10E0,    SAT_TRANSPONDER_COUNT( __S10E0),   EAST_FLAG,  0x100, -1, "S10E"   },
-{  "S9E0",   S9E0,   "9.0 east Eurobird 9"                        ,  __S9E0,     SAT_TRANSPONDER_COUNT(  __S9E0),   EAST_FLAG,   0x90, -1, "S9E"    },
-{  "S7E0",   S7E0,   "7.0 east Eutelsat W3A"                      ,  __S7E0,     SAT_TRANSPONDER_COUNT(  __S7E0),   EAST_FLAG,   0x70, -1, "S7E"    },
-{  "S4E8",   S4E8,   "4.8 east Sirius"                            ,  __S4E8,     SAT_TRANSPONDER_COUNT(  __S4E8),   EAST_FLAG,   0x48, -1, "S4.8E"  },
-{  "S3E0",   S3E0,   "3.0 east Eutelsat 3A/3C, Rascom 1R"         ,  __S3E0,     SAT_TRANSPONDER_COUNT(  __S3E0),   EAST_FLAG,   0x30, -1, "S3E"    }, // new 20120517
-{  "S0W8",   S0W8,   "0.8 west Thor 3/5 & Intelsat 10-02"         ,  __S0W8,     SAT_TRANSPONDER_COUNT(  __S0W8),   WEST_FLAG,    0x8, -1, "S1W"    },
-{  "S4W0",   S4W0,   "4.0 west Amos 1/2/3"                        ,  __S4W0,     SAT_TRANSPONDER_COUNT(  __S4W0),   WEST_FLAG,   0x40, -1, "S4W"    },
-{  "S5W0",   S5W0,   "5.0 west Atlantic Bird 3/ Eutelsat 5A"      ,  __S5W0,     SAT_TRANSPONDER_COUNT(  __S5W0),   WEST_FLAG,   0x50, -1, "S5W"    }, // 20120517: id changed.
-{  "S7W0",   S7W0,   "7.0 west Nilesat 101/102 & Atlantic Bird 4" ,  __S7W0,     SAT_TRANSPONDER_COUNT(  __S7W0),   WEST_FLAG,  0x700, -1, "S7W"    },
-{  "S8W0",   S8W0,   "8.0 west Atlantic Bird 2"                   ,  __S8W0,     SAT_TRANSPONDER_COUNT(  __S8W0),   WEST_FLAG,  0x800, -1, "S8W"    },
-{ "S11W0",  S11W0,  "11.0 west Express AM44"                      ,  __S11W0,    SAT_TRANSPONDER_COUNT( __S11W0),   WEST_FLAG,  0x110, -1, "S11W"   }, // 20120517: id changed.
-{ "S12W5",  S12W5,  "12.5 west Atlantic Bird 1"                   ,  __S12W5,    SAT_TRANSPONDER_COUNT( __S12W5),   WEST_FLAG,  0x125, -1, "S12.5W" },
-{ "S14W0",  S14W0,  "14.0 west Express A4"                        ,  __S14W0,    SAT_TRANSPONDER_COUNT( __S14W0),   WEST_FLAG,  0x140, -1, "S14W"   },
-{ "S15W0",  S15W0,  "15.0 west Telstar 12"                        ,  __S15W0,    SAT_TRANSPONDER_COUNT( __S15W0),   WEST_FLAG,  0x150, -1, "S15W"   },
-{ "S18W0",  S18W0,  "18.0 west Intelsat 901"                      ,  __S18W0,    SAT_TRANSPONDER_COUNT( __S18W0),   WEST_FLAG,  0x180, -1, "S18W"   }, // 20120517: id changed.
-{ "S20W0",  S20W0,  "20.0 west NSS 5"                             ,  __S20W0,    SAT_TRANSPONDER_COUNT( __S20W0),   WEST_FLAG,  0x200, -1, "S20W"   },
-{ "S22W0",  S22W0,  "22.0 west NSS 7"                             ,  __S22W0,    SAT_TRANSPONDER_COUNT( __S22W0),   WEST_FLAG,  0x220, -1, "S22W"   },
-{ "S24W5",  S24W5,  "24.5 west Intelsat 905"                      ,  __S24W5,    SAT_TRANSPONDER_COUNT( __S24W5),   WEST_FLAG,  0x245, -1, "S24.5W" }, // 20120517: id changed.
-{ "S27W5",  S27W5,  "27.X west Intelsat 907"                      ,  __S27W5,    SAT_TRANSPONDER_COUNT( __S27W5),   WEST_FLAG,  0x275, -1, "S27.5W" }, // 20120517: id changed.
-{ "S30W0",  S30W0,  "30.0 west Hispasat 1C/1D"                    ,  __S30W0,    SAT_TRANSPONDER_COUNT( __S30W0),   WEST_FLAG,  0x300, -1, "S30W"   },
-{ "S31W5",  S31W5,  "31.5 west Intelsat 25"                       ,  __S31W5,    SAT_TRANSPONDER_COUNT( __S31W5),   WEST_FLAG,  0x315, -1, "S31.5W" }, // 20120517: new 
-{ "S34W5",  S34W5,  "34.5 west Intelsat 903"                      ,  __S34W5,    SAT_TRANSPONDER_COUNT( __S34W5),   WEST_FLAG,  0x345, -1, "S34.5W" }, // 20120517: new
-{ "S37W5",  S37W5,  "37.5 west NSS 10 / Telstar 11N"              ,  __S37W5,    SAT_TRANSPONDER_COUNT( __S37W5),   WEST_FLAG,  0x375, -1, "S37.5W" }, // 20120517: new
-{ "S40W5",  S40W5,  "40.5 west NSS 806"                           ,  __S40W5,    SAT_TRANSPONDER_COUNT( __S40W5),   WEST_FLAG,  0x405, -1, "S40.5W" }, // 20120517: new
-{ "S43W0",  S43W0,  "43.0 west Intelsat 11"                       ,  __S43W0,    SAT_TRANSPONDER_COUNT( __S43W0),   WEST_FLAG,  0x430, -1, "S43W"   }, // 20120517: new
-{ "S45W0",  S45W0,  "45.0 west Intelsat 14"                       ,  __S45W0,    SAT_TRANSPONDER_COUNT( __S45W0),   WEST_FLAG,  0x450, -1, "S45W"   }, // 20120517: new
-{ "S50W0",  S50W0,  "50.0 west Intelsat 1R"                       ,  __S50W0,    SAT_TRANSPONDER_COUNT( __S50W0),   WEST_FLAG,  0x500, -1, "S50W"   }, // 20120517: new
-{ "S53W0",  S53W0,  "53.0 west Intelsat 707"                      ,  __S53W0,    SAT_TRANSPONDER_COUNT( __S53W0),   WEST_FLAG,  0x530, -1, "S53W"   }, // 20120517: new
-{ "S55W5",  S55W5,  "55.5 west Intelsat 805"                      ,  __S55W5,    SAT_TRANSPONDER_COUNT( __S55W5),   WEST_FLAG,  0x555, -1, "S55.5W" }, // 20120517: new
-{ "S58W0",  S58W0,  "58.0 west Intelsat 9/16"                     ,  __S58W0,    SAT_TRANSPONDER_COUNT( __S58W0),   WEST_FLAG,  0x580, -1, "S58W"   }, // 20120517: new
-{ "S63W0",  S63W0,  "63.0 west Telstar 14R"                       ,  __S63W0,    SAT_TRANSPONDER_COUNT( __S63W0),   WEST_FLAG,  0x630, -1, "S63W"   }, // 20120520: new
-{ "S65W0",  S65W0,  "65.0 west Star One C1"                       ,  __S65W0,    SAT_TRANSPONDER_COUNT( __S65W0),   WEST_FLAG,  0x650, -1, "S65W"   }, // 20120520: new
-{ "S70W0",  S70W0,  "70.0 west Star One C2"                       ,  __S70W0,    SAT_TRANSPONDER_COUNT( __S70W0),   WEST_FLAG,  0x700, -1, "S70W"   }, // 20120520: new
-{ "S72W0",  S72W0,  "72.0 west AMC 6"                             ,  __S72W0,    SAT_TRANSPONDER_COUNT( __S72W0),   WEST_FLAG,  0x720, -1, "S72W"   }, // 20120520: new
-{ "S78W0",  S78W0,  "78.0 west SIMON BOLIVAR"                     ,  __S78W0,    SAT_TRANSPONDER_COUNT( __S78W0),   WEST_FLAG,  0x780, -1, "S78W"   }, // 20120520: new
-{ "S83W0",  S83W0,  "83.0 west AMC 9"                             ,  __S83W0,    SAT_TRANSPONDER_COUNT( __S83W0),   WEST_FLAG,  0x830, -1, "S83W"   }, // 20120520: new
-{ "S84W0",  S84W0,  "84.0 west Brasilsat B4"                      ,  __S84W0,    SAT_TRANSPONDER_COUNT( __S84W0),   WEST_FLAG,  0x840, -1, "S84W"   }, // 20120520: new
-{ "S85W0",  S85W0,  "85.0 west AMC 16"                            ,  __S85W0,    SAT_TRANSPONDER_COUNT( __S85W0),   WEST_FLAG,  0x850, -1, "S85W"   }, // 20120520: new
-{ "S87W0",  S87W0,  "87.0 west SES 2"                             ,  __S87W0,    SAT_TRANSPONDER_COUNT( __S87W0),   WEST_FLAG,  0x870, -1, "S87W"   }, // 20120520: new
-{ "S89W0",  S89W0,  "89.0 west Galaxy 28"                         ,  __S89W0,    SAT_TRANSPONDER_COUNT( __S89W0),   WEST_FLAG,  0x890, -1, "S89W"   }, // 20120520: new
-{ "S91W0",  S91W0,  "95.0 west Nimiq 1"                           ,  __S91W0,    SAT_TRANSPONDER_COUNT( __S91W0),   WEST_FLAG,  0x910, -1, "S91W"   }, // 20120520: new
-{ "S93W1",  S93W1,  "93.1 west Galaxy 25"                         ,  __S93W1,    SAT_TRANSPONDER_COUNT( __S93W1),   WEST_FLAG,  0x931, -1, "S93.1W" }, // 20120520: new
-{ "S95W0",  S95W0,  "95.0 west Galaxy 3C"                         ,  __S95W0,    SAT_TRANSPONDER_COUNT( __S95W0),   WEST_FLAG,  0x950, -1, "S95W"   }, // 20120520: new
-{ "S97W0",  S97W0,  "97.0 west Galaxy 19"                         ,  __S97W0,    SAT_TRANSPONDER_COUNT( __S97W0),   WEST_FLAG,  0x970, -1, "S97W"   }, // 20120520: id && name changed
-{ "S99W2",  S99W2,  "99.2 west Galaxy 16 / Spaceway 2"            ,  __S99W2,    SAT_TRANSPONDER_COUNT( __S99W2),   WEST_FLAG,  0x992, -1, "S99W2"  }, // 20120520: new
-{"S101W0", S101W0, "101.0 west SES 1"                             , __S101W0,    SAT_TRANSPONDER_COUNT(__S101W0),   WEST_FLAG, 0x1010, -1,"S101W"   }, // 20120520: new
-{"S103W0", S103W0, "103.0 west AMC 1"                             , __S103W0,    SAT_TRANSPONDER_COUNT(__S103W0),   WEST_FLAG, 0x1030, -1,"S103W"   }, // 20120520: new
-{"S105W0", S105W0, "105.0 west AMC 15/18"                         , __S105W0,    SAT_TRANSPONDER_COUNT(__S105W0),   WEST_FLAG, 0x1050, -1,"S105W"   }, // 20120520: new
-{"S107W3", S107W3, "107.3 west Anik F1/F1R"                       , __S107W3,    SAT_TRANSPONDER_COUNT(__S107W3),   WEST_FLAG, 0x1073, -1,"S107.3W" }, // 20120520: new
-{"S111W1", S111W1, "111.1 west Anik F2"                           , __S111W1,    SAT_TRANSPONDER_COUNT(__S111W1),   WEST_FLAG, 0x1111, -1,"S111.1W" }, // 20120520: new
-{"S113W0", S113W0, "113.0 west SatMex 6"                          , __S113W0,    SAT_TRANSPONDER_COUNT(__S113W0),   WEST_FLAG, 0x1130, -1,"S113W"   }, // 20120520: new
-{"S116W8", S116W8, "116.8 west SatMex 5"                          , __S116W8,    SAT_TRANSPONDER_COUNT(__S116W8),   WEST_FLAG, 0x1168, -1,"S116.8W" }, // 20120520: new
-{"S119W0", S119W0, "119.0 west Anik F3"                           , __S119W0,    SAT_TRANSPONDER_COUNT(__S119W0),   WEST_FLAG, 0x1190, -1,"S119W"   }, // 20120520: new
-{"S121W0", S121W0, "121.0 west Echostar 9 / Galaxy 23"            , __S121W0,    SAT_TRANSPONDER_COUNT(__S121W0),   WEST_FLAG, 0x1210, -1,"S121W"   }, // 20120520: new
-{"S123W0", S123W0, "123.0 west Galaxy 18"                         , __S123W0,    SAT_TRANSPONDER_COUNT(__S123W0),   WEST_FLAG, 0x1230, -1,"S123W"   }, // 20120520: new
-{"S125W0", S125W0, "125.0 west Galaxy 14 / AMC 21"                , __S125W0,    SAT_TRANSPONDER_COUNT(__S125W0),   WEST_FLAG, 0x1250, -1,"S125W"   }, // 20120520: new
-{"S127W0", S127W0, "127.0 west Galaxy 13 / Horizons 1"            , __S127W0,    SAT_TRANSPONDER_COUNT(__S127W0),   WEST_FLAG, 0x1270, -1,"S127W"   }, // 20120520: new
-{"S131W0", S131W0, "131.0 west AMC 11"                            , __S131W0,    SAT_TRANSPONDER_COUNT(__S131W0),   WEST_FLAG, 0x1310, -1,"S131W"   }, // 20120520: new
-{"S133W0", S133W0, "133.0 west Galaxy 15"                         , __S133W0,    SAT_TRANSPONDER_COUNT(__S133W0),   WEST_FLAG, 0x1330, -1,"S133W"   }, // 20120520: new
-{"S135W0", S135W0, "135.0 west AMC 10"                            , __S135W0,    SAT_TRANSPONDER_COUNT(__S135W0),   WEST_FLAG, 0x1350, -1,"S135W"   }, // 20120520: new
-{"S137W0", S137W0, "135.0 west AMC 7"                             , __S137W0,    SAT_TRANSPONDER_COUNT(__S137W0),   WEST_FLAG, 0x1370, -1,"S137W"   }, // 20120520: new
-{"S139W0", S139W0, "135.0 west AMC 8"                             , __S139W0,    SAT_TRANSPONDER_COUNT(__S139W0),   WEST_FLAG, 0x1390, -1,"S139W"   }, // 20120520: new
-{"S177W0", S177W0, "177.0 west NSS 9"                             , __S177W0,    SAT_TRANSPONDER_COUNT(__S177W0),   WEST_FLAG, 0x1770, -1,"S177W"   }, // 20120520: new
+/** pos *** id *** long satellite name ***************************** items ************ item_count ********** we_flag * orbit * rotor * vdrid * skew */
+{"S180E0", S180E0, "180.0 east Intelsat 18"                       , __S180E0, SAT_TRANSPONDER_COUNT(__S180E0), EAST_FLAG, 0x1800, -1, "S180E"  , 0    }, // 20120520: new
+{"S172E0", S172E0, "172.0 east Eutelsat 172A"                     , __S172E0, SAT_TRANSPONDER_COUNT(__S172E0), EAST_FLAG, 0x1720, -1, "S172E"  , 0.000}, // 20150525: name + offset
+{"S169E0", S169E0, "169.0 east Intelsat 5"                        , __S169E0, SAT_TRANSPONDER_COUNT(__S169E0), EAST_FLAG, 0x1690, -1, "S169E"  , 0    }, // 20120520: new
+{"S166E0", S166E0, "166.0 east Intelsat 8"                        , __S166E0, SAT_TRANSPONDER_COUNT(__S166E0), EAST_FLAG, 0x1660, -1, "S166E"  , 0    },
+{"S162E0", S162E0, "162.0 east Superbird B2"                      , __S162E0, SAT_TRANSPONDER_COUNT(__S162E0), EAST_FLAG, 0x1620, -1, "S162E"  , 0    }, // 20120520: new
+{"S160E0", S160E0, "160.0 east Optus D1"                          , __S160E0, SAT_TRANSPONDER_COUNT(__S160E0), EAST_FLAG, 0x1600, -1, "S160E"  , 0    },
+{"S156E0", S156E0, "156.0 east Optus C1/D3"                       , __S156E0, SAT_TRANSPONDER_COUNT(__S156E0), EAST_FLAG, 0x1560, -1, "S156E"  , 0    },
+{"S154E0", S154E0, "154.0 east JCSAT 2A"                          , __S154E0, SAT_TRANSPONDER_COUNT(__S154E0), EAST_FLAG, 0x1540, -1, "S154E"  , 0    }, // 20120520: new
+{"S152E0", S152E0, "152.0 east Optus D2"                          , __S152E0, SAT_TRANSPONDER_COUNT(__S152E0), EAST_FLAG, 0x1520, -1, "S152E"  , 0.0  },
+{"S144E0", S144E0, "144.0 east Superbird C2"                      , __S144E0, SAT_TRANSPONDER_COUNT(__S144E0), EAST_FLAG, 0x1440, -1, "S144E"  , 0.0  }, // 20120520: new
+{"S140E0", S140E0, "140.0 east Express AM3"                       , __S140E0, SAT_TRANSPONDER_COUNT(__S140E0), EAST_FLAG, 0x1400, -1, "S140E"  , 0.0  }, // 20120520: id && name changed.
+{"S138E0", S138E0, "134.0 east Telstar 18"                        , __S138E0, SAT_TRANSPONDER_COUNT(__S138E0), EAST_FLAG, 0x1380, -1, "S138E"  , 0.0  }, // 20120520: new
+{"S134E0", S134E0, "134.0 east Apstar 6"                          , __S134E0, SAT_TRANSPONDER_COUNT(__S134E0), EAST_FLAG, 0x1340, -1, "S134E"  , 0.0  }, // 20120520: new
+{"S132E0", S132E0, "132.0 east Vinasat 1 / JCSAT 5A"              , __S132E0, SAT_TRANSPONDER_COUNT(__S132E0), EAST_FLAG, 0x1320, -1, "S132E"  , 0.0  }, // 20120520: new
+{"S128E0", S128E0, "128.0 east JCSAT 3A"                          , __S128E0, SAT_TRANSPONDER_COUNT(__S128E0), EAST_FLAG, 0x1280, -1, "S128E"  , 0.0  }, // 20120520: new
+{"S125E0", S125E0, "125.0 east ChinaSat 6A"                       , __S125E0, SAT_TRANSPONDER_COUNT(__S125E0), EAST_FLAG, 0x1250, -1, "S125E"  , 0.0  }, // 20120520: new
+{"S124E0", S124E0, "124.0 east JCSAT 4A"                          , __S124E0, SAT_TRANSPONDER_COUNT(__S124E0), EAST_FLAG, 0x1240, -1, "S124E"  , 0.0  }, // 20120520: new
+{"S122E2", S122E2, "122.2 east AsiaSat 4"                         , __S122E2, SAT_TRANSPONDER_COUNT(__S122E2), EAST_FLAG, 0x1222, -1, "S122.2E", 0.0  }, // 20120520: new
+{"S118E0", S118E0, "118.0 east Telkom 2"                          , __S118E0, SAT_TRANSPONDER_COUNT(__S118E0), EAST_FLAG, 0x1180, -1, "S118E"  , 0.0  }, // 20120520: new
+{"S116E0", S116E0, "116.0 east Koreasat 6 / ABS 7"                , __S116E0, SAT_TRANSPONDER_COUNT(__S116E0), EAST_FLAG, 0x1160, -1, "S116E"  , 0.0  }, // 20120520: new
+{"S115E5", S115E5, "115.5 east ChinaSat 6B"                       , __S115E5, SAT_TRANSPONDER_COUNT(__S115E5), EAST_FLAG, 0x1155, -1, "S115.5E", 0.0  }, // 20120520: new
+{"S113E0", S113E0, "113.0 east Koreasat 5 / Palapa D"             , __S113E0, SAT_TRANSPONDER_COUNT(__S113E0), EAST_FLAG, 0x1130, -1, "S113E"  , 0.0  }, // 20120520: new
+{"S110E5", S110E5, "110.5 east ChinaSat 10"                       , __S110E5, SAT_TRANSPONDER_COUNT(__S110E5), EAST_FLAG, 0x1105, -1, "S110.5E", 0.0  }, // 20120520: new
+{"S110E0", S110E0, "110.0 east NSat 110 / BSat 2C/3A / JCSat 110R", __S110E0, SAT_TRANSPONDER_COUNT(__S110E0), EAST_FLAG, 0x1100, -1, "S110E"  , 0.0  }, // 20120520: new
+{"S108E2", S108E2, "108.2 east Telkom 1 / NSS 11 / SES 7"         , __S108E2, SAT_TRANSPONDER_COUNT(__S108E2), EAST_FLAG, 0x1082, -1, "S108.2E", 0.0  }, // 20120520: id && name changed.
+{"S105E5", S105E5, "105.5 east AsiaSat 3S"                        , __S105E5, SAT_TRANSPONDER_COUNT(__S105E5), EAST_FLAG, 0x1055, -1, "S105.5E", 0.0  }, // 20120520: id changed. 
+{"S103E0", S103E0, "103.0 east Express A2"                        , __S103E0, SAT_TRANSPONDER_COUNT(__S103E0), EAST_FLAG, 0x1030, -1, "S103E"  , 0.0  }, // 20120520: new 
+{"S100E5", S100E5, "100.5 east AsiaSat 5"                         , __S100E5, SAT_TRANSPONDER_COUNT(__S100E5), EAST_FLAG, 0x1005, -1, "S100.5E", 0.0  }, // 20120520: id && name changed.
+{ "S96E5",  S96E5,  "96.5 east Express AM33"                      ,  __S96E5, SAT_TRANSPONDER_COUNT( __S96E5), EAST_FLAG,  0x965, -1, "S96.5E" , 0.0  }, // 20120520: id changed.
+{ "S95E0",  S95E0,  "95.0 east NSS 6"                             ,  __S95E0, SAT_TRANSPONDER_COUNT( __S95E0), EAST_FLAG,  0x950, -1, "S95E"   , 0.0  }, // 20120520: id changed.
+{ "S93E5",  S93E5,  "93.5 east Insat 3A/4B"                       ,  __S93E5, SAT_TRANSPONDER_COUNT( __S93E5), EAST_FLAG,  0x935, -1, "S93.5E" , 0.0  }, // 20120520: id changed.
+{ "S91E5",  S91E5,  "91.5 east Measat 3 / 3A"                     ,  __S91E5, SAT_TRANSPONDER_COUNT( __S91E5), EAST_FLAG,  0x915, -1, "S91.5E" , 0.0  }, // 20120520: id changed.
+{ "S90E0",  S90E0,  "90.0 east Yamal 201"                         ,  __S90E0, SAT_TRANSPONDER_COUNT( __S90E0), EAST_FLAG,  0x900, -1, "S90E"   , 0.0  }, // 20120520: id changed.
+{ "S88E0",  S88E0,  "88.0 east ST 2"                              ,  __S88E0, SAT_TRANSPONDER_COUNT( __S88E0), EAST_FLAG,  0x880, -1, "S88E"   , 0.0  }, // 20120520: id && name changed.
+{ "S87E5",  S87E5,  "87.5 east ChinaSat 5A"                       ,  __S87E5, SAT_TRANSPONDER_COUNT( __S87E5), EAST_FLAG,  0x875, -1, "S87.5E" , 0.0  }, // 20120520: id && name changed.
+{ "S86E5",  S86E5,  "86.5 east KazSat 2"                          ,  __S86E5, SAT_TRANSPONDER_COUNT( __S86E5), EAST_FLAG,  0x865, -1, "S86.5E" , 0.0  }, // 20120520: new
+{ "S85E0",  S85E0,  "85.0 east Horisons 2 / Intelsat 15"          ,  __S85E0, SAT_TRANSPONDER_COUNT( __S85E0), EAST_FLAG,  0x850, -1, "S85E"   , 0.0  }, // 20120520: new
+{ "S83E0",  S83E0,  "83.0 east Insat 2E/4A"                       ,  __S83E0, SAT_TRANSPONDER_COUNT( __S83E0), EAST_FLAG,  0x830, -1, "S83E"   , 0.0  }, // 20120517: id changed.
+{ "S78E5",  S78E5,  "78.5 east Thaicom 2/5"                       ,  __S78E5, SAT_TRANSPONDER_COUNT( __S78E5), EAST_FLAG,  0x785, -1, "S78.5E" , 0.0  },
+{ "S76E5",  S76E5,  "76.5 east Telstar 10 (Apstar 2R)"            ,  __S76E5, SAT_TRANSPONDER_COUNT( __S76E5), EAST_FLAG,  0x765, -1, "S76.5E" , 0.0  }, // 20120517: id changed.
+{ "S75E0",  S75E0,  "75.0 east ABS-2"                             ,  __S75E0, SAT_TRANSPONDER_COUNT( __S75E0), EAST_FLAG,  0x750, -1, "S75E"   , 0.0  }, // 20150525: name
+{ "S70E5",  S70E5,  "70.5 east Eutelsat 70B"                      ,  __S70E5, SAT_TRANSPONDER_COUNT( __S70E5), EAST_FLAG,  0x705, -1, "S70.5E" , 3.535}, // 20150525: name + offset
+{ "S68E5",  S68E5,  "68.5 east Intelsat 20"                       ,  __S68E5, SAT_TRANSPONDER_COUNT( __S68E5), EAST_FLAG,  0x685, -1, "S68.5E" , 0    }, // 20150225: name
+{ "S66E0",  S66E0,  "66.0 east Intelsat 17"                       ,  __S66E0, SAT_TRANSPONDER_COUNT( __S66E0), EAST_FLAG,  0x660, -1, "S66E"   , 0    }, // new 20120517
+{ "S64E2",  S64E2,  "64.2 east Intelsat 906"                      ,  __S64E2, SAT_TRANSPONDER_COUNT( __S64E2), EAST_FLAG,  0x642, -1, "S64E"   , 0    },
+{ "S62E0",  S62E0,  "62.0 east Intelsat 902"                      ,  __S62E0, SAT_TRANSPONDER_COUNT( __S62E0), EAST_FLAG,  0x620, -1, "S62E"   , 0    }, // 20120517: id changed.
+{ "S60E0",  S60E0,  "60.0 east Intelsat 904"                      ,  __S60E0, SAT_TRANSPONDER_COUNT( __S60E0), EAST_FLAG,  0x600, -1, "S60E"   , 0    }, // 20120517: id changed.
+{ "S57E0",  S57E0,  "57.0 east NSS 12"                            ,  __S57E0, SAT_TRANSPONDER_COUNT( __S57E0), EAST_FLAG,  0x570, -1, "S57E"   , 0    },
+{ "S56E0",  S56E0,  "56.0 east Bonum 1"                           ,  __S56E0, SAT_TRANSPONDER_COUNT( __S56E0), EAST_FLAG,  0x560, -1, "S56E"   , 0    }, // 20120517: id changed.
+{ "S53E0",  S53E0,  "53.0 east Express AM22"                      ,  __S53E0, SAT_TRANSPONDER_COUNT( __S53E0), EAST_FLAG,  0x530, -1, "S53E"   , 0.000}, // 20150525: name + offset
+{ "S52E5",  S52E5,  "52.5 east Yahsat 1A"                         ,  __S52E5, SAT_TRANSPONDER_COUNT( __S52E5), EAST_FLAG,  0x525, -1, "S52.5E" , 0    },
+{ "S49E0",  S49E0,  "49.0 east Yamal 202"                         ,  __S49E0, SAT_TRANSPONDER_COUNT( __S49E0), EAST_FLAG,  0x490, -1, "S49E"   , 0    },
+{ "S48E0",  S48E0,  "48.0 east Eutelsat 48D/Afghansat 1"          ,  __S48E0, SAT_TRANSPONDER_COUNT( __S48E0), EAST_FLAG,  0x480, -1, "S48E"   , 3.535}, // 20150525: new + name + offset
+{ "S45E0",  S45E0,  "45.0 east Intelsat 12"                       ,  __S45E0, SAT_TRANSPONDER_COUNT( __S45E0), EAST_FLAG,  0x450, -1, "S45E"   , 0    },
+{ "S42E0",  S42E0,  "42.0 east Turksat 2A/3A/4A"                  ,  __S42E0, SAT_TRANSPONDER_COUNT( __S42E0), EAST_FLAG,  0x420, -1, "S42E"   , 0    }, // 20150525: name
+{ "S40E0",  S40E0,  "40.0 east Express AM7"                       ,  __S40E0, SAT_TRANSPONDER_COUNT( __S40E0), EAST_FLAG,  0x400, -1, "S40E"   , 0    }, // 20150525: name
+{ "S39E0",  S39E0,  "39.0 east Hellas Sat 2"                      ,  __S39E0, SAT_TRANSPONDER_COUNT( __S39E0), EAST_FLAG,  0x390, -1, "S39E"   , 0    },
+{ "S38E0",  S38E0,  "38.0 east Paksat 1R"                         ,  __S38E0, SAT_TRANSPONDER_COUNT( __S38E0), EAST_FLAG,  0x380, -1, "S38E"   , 0    }, // 20150525: name
+{ "S36E0",  S36E0,  "36.0 east Eutelsat 36A/36B"                  ,  __S36E0, SAT_TRANSPONDER_COUNT( __S36E0), EAST_FLAG,  0x360, -1, "S36E"   , 3.535}, // 20150525: name + offset
+{ "S33E0",  S33E0,  "33.0 east Eutelsat 33B"                      ,  __S33E0, SAT_TRANSPONDER_COUNT( __S33E0), EAST_FLAG,  0x330, -1, "S33E"   , 3.535}, // 20150525: Eurobird3 -> Eutelsat 31A; put Eutelsat 33B here.
+{ "S31E5",  S31E5,  "31.5 east Astra 5B"                          ,  __S31E5, SAT_TRANSPONDER_COUNT( __S31E5), EAST_FLAG,  0x315, -1, "S31.5E" , 0    }, // 20150525: name
+{ "S30E5",  S30E5,  "30.5 east Arabsat 5A"                        ,  __S30E5, SAT_TRANSPONDER_COUNT( __S30E5), EAST_FLAG,  0x305, -1, "S30.5E" , 0    }, // new 20120517
+{ "S28E2",  S28E2,  "28.2 east Astra 2E/F + Eutelsat 28A"         ,  __S28E2, SAT_TRANSPONDER_COUNT( __S28E2), EAST_FLAG,  0x282, -1, "S28.2E" , 3.535}, // 20150525: name + offset
+{ "S26E0",  S26E0,  "26.X east Badr 4/5/6"                        ,  __S26E0, SAT_TRANSPONDER_COUNT( __S26E0), EAST_FLAG,  0x260, -1, "S26E"   , 0    }, // 20150525: name
+{ "S25E5",  S25E5,  "25.5 east Eutelsat 25B"                      ,  __S25E5, SAT_TRANSPONDER_COUNT( __S25E5), EAST_FLAG,  0x255, -1, "S25.5E" , 3.535},
+{ "S23E5",  S23E5,  "23.5 east Astra 3B"                          ,  __S23E5, SAT_TRANSPONDER_COUNT( __S23E5), EAST_FLAG,  0x235, -1, "S23.5E" , 0    }, // 20150525: name
+{ "S21E5",  S21E5,  "21.5 east Eutelsat 21B"                      ,  __S21E5, SAT_TRANSPONDER_COUNT( __S21E5), EAST_FLAG,  0x216, -1, "S21.6E" , 3.535}, // 20150525: name + offset
+{ "S20E0",  S20E0,  "20.0 east Arabsat 5C"                        ,  __S20E0, SAT_TRANSPONDER_COUNT( __S20E0), EAST_FLAG,  0x200, -1, "S20E"   , 0    }, // new 20120517
+{ "S19E2",  S19E2,  "19.2 east Astra 1KR/1L/1N/1M"                ,  __S19E2, SAT_TRANSPONDER_COUNT( __S19E2), EAST_FLAG,  0x192, -1, "S19.2E" , 7.000}, // 20150525: name + offset
+{ "S16E0",  S16E0,  "16.0 east Eutelsat 16A"                      ,  __S16E0, SAT_TRANSPONDER_COUNT( __S16E0), EAST_FLAG,  0x160, -1, "S16E"   , 3.535}, // 20150525: name + offset
+{ "S13E0",  S13E0,  "13.0 east Hotbird 13B/13C/13D"               ,  __S13E0, SAT_TRANSPONDER_COUNT( __S13E0), EAST_FLAG,  0x130, -1, "S13E"   , 0    }, // 20150525: name
+{ "S10E0",  S10E0,  "10.0 east Eutelsat 10A"                      ,  __S10E0, SAT_TRANSPONDER_COUNT( __S10E0), EAST_FLAG,  0x100, -1, "S10E"   , 3.535}, // 20150525: name + offset
+{  "S9E0",   S9E0,   "9.0 east Eutelsat 9A"                       ,  __S9E0,  SAT_TRANSPONDER_COUNT(  __S9E0), EAST_FLAG,   0x90, -1, "S9E"    , 3.535}, // 20150525: name + offset
+{  "S7E0",   S7E0,   "7.0 east Eutelsat 7A"                       ,  __S7E0,  SAT_TRANSPONDER_COUNT(  __S7E0), EAST_FLAG,   0x70, -1, "S7E"    , 3.535}, // 20150525: name + offset
+{  "S4E8",   S4E8,   "4.8 east SES 5/Astra 4A"                    ,  __S4E8,  SAT_TRANSPONDER_COUNT(  __S4E8), EAST_FLAG,   0x48, -1, "S4.8E"  , 0    }, // 20150525: name
+{  "S3E0",   S3E0,   "3.0 east Eutelsat 3B, Rascom QAF 1R"        ,  __S3E0,  SAT_TRANSPONDER_COUNT(  __S3E0), EAST_FLAG,   0x30, -1, "S3E"    , 3.535}, // 20150525: name + offset
+{  "S0W8",   S0W8,   "0.8 west Thor 5/6 & Intelsat 10-02"         ,  __S0W8,  SAT_TRANSPONDER_COUNT(  __S0W8), WEST_FLAG,    0x8, -1, "S1W"    , 0    }, // 20150525: name
+{  "S4W0",   S4W0,   "4.0 west Amos 2/3"                          ,  __S4W0,  SAT_TRANSPONDER_COUNT(  __S4W0), WEST_FLAG,   0x40, -1, "S4W"    , 0    }, // 20150525: name
+{  "S5W0",   S5W0,   "5.0 west Eutelsat 5 West A"                 ,  __S5W0,  SAT_TRANSPONDER_COUNT(  __S5W0), WEST_FLAG,   0x50, -1, "S5W"    , 0.000}, // 20150525: name + offset
+{  "S7W0",   S7W0,   "7.0 west Nilesat 201 & Eutelsat 7 West A"   ,  __S7W0,  SAT_TRANSPONDER_COUNT(  __S7W0), WEST_FLAG,  0x700, -1, "S7W"    , 3.535}, // 20150525: name + offset
+{  "S8W0",   S8W0,   "8.0 west Eutelsat 8 West A/D"               ,  __S8W0,  SAT_TRANSPONDER_COUNT(  __S8W0), WEST_FLAG,  0x800, -1, "S8W"    , 3.535}, // 20150525: name + offset
+{ "S11W0",  S11W0,  "11.0 west Express AM44"                      ,  __S11W0, SAT_TRANSPONDER_COUNT( __S11W0), WEST_FLAG,  0x110, -1, "S11W"   , 0    }, // 20120517: id changed.
+{ "S12W5",  S12W5,  "12.5 west Eutelsat 12 West A"                ,  __S12W5, SAT_TRANSPONDER_COUNT( __S12W5), WEST_FLAG,  0x125, -1, "S12.5W" , 3.535}, // 20150525: name + offset
+{ "S14W0",  S14W0,  "14.0 west Express A4"                        ,  __S14W0, SAT_TRANSPONDER_COUNT( __S14W0), WEST_FLAG,  0x140, -1, "S14W"   , 0    },
+{ "S15W0",  S15W0,  "15.0 west Telstar 12"                        ,  __S15W0, SAT_TRANSPONDER_COUNT( __S15W0), WEST_FLAG,  0x150, -1, "S15W"   , 0.000}, // 20150525: offset
+{ "S18W0",  S18W0,  "18.0 west Intelsat 901"                      ,  __S18W0, SAT_TRANSPONDER_COUNT( __S18W0), WEST_FLAG,  0x180, -1, "S18W"   , 0    }, // 20120517: id changed.
+{ "S20W0",  S20W0,  "20.0 west NSS 7"                             ,  __S20W0, SAT_TRANSPONDER_COUNT( __S20W0), WEST_FLAG,  0x200, -1, "S20W"   , 0    }, // 20150525: name
+{ "S22W0",  S22W0,  "22.0 west SES 4"                             ,  __S22W0, SAT_TRANSPONDER_COUNT( __S22W0), WEST_FLAG,  0x220, -1, "S22W"   , 0    }, // 20150525: name, as NSS7 22W->20W
+{ "S24W5",  S24W5,  "24.5 west Intelsat 905"                      ,  __S24W5, SAT_TRANSPONDER_COUNT( __S24W5), WEST_FLAG,  0x245, -1, "S24.5W" , 0    }, // 20120517: id changed.
+{ "S27W5",  S27W5,  "27.X west Intelsat 907"                      ,  __S27W5, SAT_TRANSPONDER_COUNT( __S27W5), WEST_FLAG,  0x275, -1, "S27.5W" , 0    }, // 20120517: id changed.
+{ "S30W0",  S30W0,  "30.0 west Hispasat 1D/1E"                    ,  __S30W0, SAT_TRANSPONDER_COUNT( __S30W0), WEST_FLAG,  0x300, -1, "S30W"   , 0    }, // 20150525: name
+{ "S31W5",  S31W5,  "31.5 west Intelsat 25"                       ,  __S31W5, SAT_TRANSPONDER_COUNT( __S31W5), WEST_FLAG,  0x315, -1, "S31.5W" , 0    }, // 20120517: new 
+{ "S34W5",  S34W5,  "34.5 west Intelsat 903"                      ,  __S34W5, SAT_TRANSPONDER_COUNT( __S34W5), WEST_FLAG,  0x345, -1, "S34.5W" , 0    }, // 20120517: new
+{ "S37W5",  S37W5,  "37.5 west NSS 10 / Telstar 11N"              ,  __S37W5, SAT_TRANSPONDER_COUNT( __S37W5), WEST_FLAG,  0x375, -1, "S37.5W" , 0    }, // 20120517: new
+{ "S40W5",  S40W5,  "40.5 west NSS 806"                           ,  __S40W5, SAT_TRANSPONDER_COUNT( __S40W5), WEST_FLAG,  0x405, -1, "S40.5W" , 0    }, // 20120517: new
+{ "S43W0",  S43W0,  "43.0 west Intelsat 11"                       ,  __S43W0, SAT_TRANSPONDER_COUNT( __S43W0), WEST_FLAG,  0x430, -1, "S43W"   , 0    }, // 20120517: new
+{ "S45W0",  S45W0,  "45.0 west Intelsat 14"                       ,  __S45W0, SAT_TRANSPONDER_COUNT( __S45W0), WEST_FLAG,  0x450, -1, "S45W"   , 0    }, // 20120517: new
+{ "S50W0",  S50W0,  "50.0 west Intelsat 1R"                       ,  __S50W0, SAT_TRANSPONDER_COUNT( __S50W0), WEST_FLAG,  0x500, -1, "S50W"   , 0    }, // 20120517: new
+{ "S53W0",  S53W0,  "53.0 west Intelsat 707"                      ,  __S53W0, SAT_TRANSPONDER_COUNT( __S53W0), WEST_FLAG,  0x530, -1, "S53W"   , 0    }, // 20120517: new
+{ "S55W5",  S55W5,  "55.5 west Intelsat 805"                      ,  __S55W5, SAT_TRANSPONDER_COUNT( __S55W5), WEST_FLAG,  0x555, -1, "S55.5W" , 0    }, // 20120517: new
+{ "S58W0",  S58W0,  "58.0 west Intelsat 9/16"                     ,  __S58W0, SAT_TRANSPONDER_COUNT( __S58W0), WEST_FLAG,  0x580, -1, "S58W"   , 0    }, // 20120517: new
+{ "S63W0",  S63W0,  "63.0 west Telstar 14R"                       ,  __S63W0, SAT_TRANSPONDER_COUNT( __S63W0), WEST_FLAG,  0x630, -1, "S63W"   , 0    }, // 20120520: new
+{ "S65W0",  S65W0,  "65.0 west Star One C1"                       ,  __S65W0, SAT_TRANSPONDER_COUNT( __S65W0), WEST_FLAG,  0x650, -1, "S65W"   , 0    }, // 20120520: new
+{ "S70W0",  S70W0,  "70.0 west Star One C2"                       ,  __S70W0, SAT_TRANSPONDER_COUNT( __S70W0), WEST_FLAG,  0x700, -1, "S70W"   , 0    }, // 20120520: new
+{ "S72W0",  S72W0,  "72.0 west AMC 6"                             ,  __S72W0, SAT_TRANSPONDER_COUNT( __S72W0), WEST_FLAG,  0x720, -1, "S72W"   , 0    }, // 20120520: new
+{ "S78W0",  S78W0,  "78.0 west SIMON BOLIVAR"                     ,  __S78W0, SAT_TRANSPONDER_COUNT( __S78W0), WEST_FLAG,  0x780, -1, "S78W"   , 0    }, // 20120520: new
+{ "S83W0",  S83W0,  "83.0 west AMC 9"                             ,  __S83W0, SAT_TRANSPONDER_COUNT( __S83W0), WEST_FLAG,  0x830, -1, "S83W"   , 0    }, // 20120520: new
+{ "S84W0",  S84W0,  "84.0 west Brasilsat B4"                      ,  __S84W0, SAT_TRANSPONDER_COUNT( __S84W0), WEST_FLAG,  0x840, -1, "S84W"   , 0    }, // 20120520: new
+{ "S85W0",  S85W0,  "85.0 west AMC 16"                            ,  __S85W0, SAT_TRANSPONDER_COUNT( __S85W0), WEST_FLAG,  0x850, -1, "S85W"   , 0    }, // 20120520: new
+{ "S87W0",  S87W0,  "87.0 west SES 2"                             ,  __S87W0, SAT_TRANSPONDER_COUNT( __S87W0), WEST_FLAG,  0x870, -1, "S87W"   , 0    }, // 20120520: new
+{ "S89W0",  S89W0,  "89.0 west Galaxy 28"                         ,  __S89W0, SAT_TRANSPONDER_COUNT( __S89W0), WEST_FLAG,  0x890, -1, "S89W"   , 0    }, // 20120520: new
+{ "S91W0",  S91W0,  "95.0 west Nimiq 1"                           ,  __S91W0, SAT_TRANSPONDER_COUNT( __S91W0), WEST_FLAG,  0x910, -1, "S91W"   , 0    }, // 20120520: new
+{ "S93W1",  S93W1,  "93.1 west Galaxy 25"                         ,  __S93W1, SAT_TRANSPONDER_COUNT( __S93W1), WEST_FLAG,  0x931, -1, "S93.1W" , 0    }, // 20120520: new
+{ "S95W0",  S95W0,  "95.0 west Galaxy 3C"                         ,  __S95W0, SAT_TRANSPONDER_COUNT( __S95W0), WEST_FLAG,  0x950, -1, "S95W"   , 0    }, // 20120520: new
+{ "S97W0",  S97W0,  "97.0 west Galaxy 19"                         ,  __S97W0, SAT_TRANSPONDER_COUNT( __S97W0), WEST_FLAG,  0x970, -1, "S97W"   , 0    }, // 20120520: id && name changed
+{ "S99W2",  S99W2,  "99.2 west Galaxy 16 / Spaceway 2"            ,  __S99W2, SAT_TRANSPONDER_COUNT( __S99W2), WEST_FLAG,  0x992, -1, "S99W2"  , 0    }, // 20120520: new
+{"S101W0", S101W0, "101.0 west SES 1"                             , __S101W0, SAT_TRANSPONDER_COUNT(__S101W0), WEST_FLAG, 0x1010, -1,"S101W"   , 0    }, // 20120520: new
+{"S103W0", S103W0, "103.0 west AMC 1"                             , __S103W0, SAT_TRANSPONDER_COUNT(__S103W0), WEST_FLAG, 0x1030, -1,"S103W"   , 0    }, // 20120520: new
+{"S105W0", S105W0, "105.0 west AMC 15/18"                         , __S105W0, SAT_TRANSPONDER_COUNT(__S105W0), WEST_FLAG, 0x1050, -1,"S105W"   , 0    }, // 20120520: new
+{"S107W3", S107W3, "107.3 west Anik F1/F1R"                       , __S107W3, SAT_TRANSPONDER_COUNT(__S107W3), WEST_FLAG, 0x1073, -1,"S107.3W" , 0    }, // 20120520: new
+{"S111W1", S111W1, "111.1 west Anik F2"                           , __S111W1, SAT_TRANSPONDER_COUNT(__S111W1), WEST_FLAG, 0x1111, -1,"S111.1W" , 0    }, // 20120520: new
+{"S113W0", S113W0, "113.0 west SatMex 6"                          , __S113W0, SAT_TRANSPONDER_COUNT(__S113W0), WEST_FLAG, 0x1130, -1,"S113W"   , 0    }, // 20120520: new
+{"S116W8", S116W8, "116.8 west SatMex 5"                          , __S116W8, SAT_TRANSPONDER_COUNT(__S116W8), WEST_FLAG, 0x1168, -1,"S116.8W" , 0    }, // 20120520: new
+{"S119W0", S119W0, "119.0 west Anik F3"                           , __S119W0, SAT_TRANSPONDER_COUNT(__S119W0), WEST_FLAG, 0x1190, -1,"S119W"   , 0    }, // 20120520: new
+{"S121W0", S121W0, "121.0 west Echostar 9 / Galaxy 23"            , __S121W0, SAT_TRANSPONDER_COUNT(__S121W0), WEST_FLAG, 0x1210, -1,"S121W"   , 0    }, // 20120520: new
+{"S123W0", S123W0, "123.0 west Galaxy 18"                         , __S123W0, SAT_TRANSPONDER_COUNT(__S123W0), WEST_FLAG, 0x1230, -1,"S123W"   , 0    }, // 20120520: new
+{"S125W0", S125W0, "125.0 west Galaxy 14 / AMC 21"                , __S125W0, SAT_TRANSPONDER_COUNT(__S125W0), WEST_FLAG, 0x1250, -1,"S125W"   , 0    }, // 20120520: new
+{"S127W0", S127W0, "127.0 west Galaxy 13 / Horizons 1"            , __S127W0, SAT_TRANSPONDER_COUNT(__S127W0), WEST_FLAG, 0x1270, -1,"S127W"   , 0    }, // 20120520: new
+{"S131W0", S131W0, "131.0 west AMC 11"                            , __S131W0, SAT_TRANSPONDER_COUNT(__S131W0), WEST_FLAG, 0x1310, -1,"S131W"   , 0    }, // 20120520: new
+{"S133W0", S133W0, "133.0 west Galaxy 15"                         , __S133W0, SAT_TRANSPONDER_COUNT(__S133W0), WEST_FLAG, 0x1330, -1,"S133W"   , 0    }, // 20120520: new
+{"S135W0", S135W0, "135.0 west AMC 10"                            , __S135W0, SAT_TRANSPONDER_COUNT(__S135W0), WEST_FLAG, 0x1350, -1,"S135W"   , 0    }, // 20120520: new
+{"S137W0", S137W0, "135.0 west AMC 7"                             , __S137W0, SAT_TRANSPONDER_COUNT(__S137W0), WEST_FLAG, 0x1370, -1,"S137W"   , 0    }, // 20120520: new
+{"S139W0", S139W0, "135.0 west AMC 8"                             , __S139W0, SAT_TRANSPONDER_COUNT(__S139W0), WEST_FLAG, 0x1390, -1,"S139W"   , 0    }, // 20120520: new
+{"S177W0", S177W0, "177.0 west NSS 9"                             , __S177W0, SAT_TRANSPONDER_COUNT(__S177W0), WEST_FLAG, 0x1770, -1,"S177W"   , 0    }, // 20120520: new
 };
 
 /******************************************************************************
diff --git a/satellites.h b/satellites.h
index 5b48d52..35e2851 100644
--- a/satellites.h
+++ b/satellites.h
@@ -73,6 +73,7 @@ struct cSat {
         const uint16_t                 orbital_position;
         int                            rotor_position;     // Note: *not* const
         const char                     * source_id;        // VDR sources.conf
+        const int                      skew;
 };
 #define SAT_COUNT(x) (sizeof(x)/sizeof(struct cSat))
 
diff --git a/scan.c b/scan.c
index ac97e42..9d569cb 100644
--- a/scan.c
+++ b/scan.c
@@ -132,6 +132,7 @@ static struct scr scr_config = {                // 20140101: DVB-S/S2, satellite
 
 struct timespec start_time = { 0, 0 };
 
+static bool bandwidth_auto                              = true;
 static enum fe_spectral_inversion caps_inversion        = INVERSION_AUTO;
 static enum fe_code_rate caps_fec                       = FEC_AUTO;
 static enum fe_modulation caps_qam                      = QAM_AUTO;
@@ -154,7 +155,6 @@ enum __output_format {
 };
 static enum __output_format output_format = OUTPUT_VDR;
 
-
 cList _scanned_transponders, * scanned_transponders = &_scanned_transponders;
 cList _new_transponders, * new_transponders = &_new_transponders;
 static struct transponder * current_tp;
@@ -175,21 +175,19 @@ struct transponder * alloc_transponder(uint32_t frequency, uint8_t type, uint8_t
   struct transponder * t = calloc(1, sizeof(* t));
   bool   known = false;
   char   name[20];
-  struct frequency_item * freq_item;
+  struct cell* cell;
 
   t->source = 0;
   t->frequency = frequency;
   t->locks_with_params = false;
 
   // save current freq to alternative list of freqs.
-  sprintf(name, "freqs_%u", frequency);
-  t->frequencies = &(t->_frequencies);
-  NewList(t->frequencies, name);
-  freq_item = calloc(1, sizeof(struct frequency_item));
-  freq_item->frequency = frequency;
-  freq_item->transposers = &(freq_item->_transposers);
-  NewList(freq_item->transposers, "transposers");
-  AddItem(t->frequencies, freq_item);
+  sprintf(name, "cells_%u", frequency);
+  t->cells = &(t->_cells);
+  NewList(t->cells, name);
+  cell = calloc(1, sizeof(struct cell));
+  cell->center_frequencies[cell->num_center_frequencies++] = frequency;
+  AddItem(t->cells, cell);
 
   sprintf(name, "services_%u", frequency);
   t->services = &(t->_services);
@@ -371,6 +369,7 @@ static struct transponder * find_transponder_by_freq(struct transponder * tn) {
      if ((flags.scantype == SCAN_SATELLITE) && (t->polarization != tn->polarization))
         continue;
      if (is_nearly_same_frequency(t->frequency,tn->frequency,tn->type)) {
+        print_transponder(buffer, t);
         verbose("          -> found 'scanned_transponders(%.3u)'  %s\n", t->index, buffer);
         free(buffer);
         return t;
@@ -381,6 +380,7 @@ static struct transponder * find_transponder_by_freq(struct transponder * tn) {
      if ((flags.scantype == SCAN_SATELLITE) && (t->polarization != tn->polarization))
         continue;
      if (is_nearly_same_frequency(t->frequency,tn->frequency,tn->type)) {
+        print_transponder(buffer, t);
         verbose("          -> found 'new_transponders(%.3u)'  %s\n", t->index, buffer);
         free(buffer);
         return t;
@@ -408,37 +408,25 @@ static struct transponder * find_transponder(uint16_t original_network_id, uint1
 
   if (original_network_id != 0) {
      for(t = scanned_transponders->first; t; t = t->next) {
-        if ((t->original_network_id == original_network_id) && (t->transport_stream_id == transport_stream_id)) {
+        if ((t->original_network_id == original_network_id) &&
+            (t->transport_stream_id == transport_stream_id) &&
+            (t->network_id == network_id)) {
            print_transponder(buf, t);
-           verbose("          -> found 'scanned_transponders(%.3u)'  %s\n", t->index, buf);
+           verbose("          -> found 'scanned_transponders(%.3u)'  %s (line %d)\n", t->index, buf, __LINE__);
            return t;
            }
         }
      for(t = new_transponders->first; t; t = t->next) {
-        if ((t->original_network_id == original_network_id) && (t->transport_stream_id == transport_stream_id)) {
+        if ((t->original_network_id == original_network_id) &&
+            (t->transport_stream_id == transport_stream_id) &&
+            (t->network_id == network_id)) {
            print_transponder(buf, t);
-           verbose("          -> found 'new_transponders(%.3u)'  %s\n", t->index, buf);
+           verbose("          -> found 'new_transponders(%.3u)'  %s (line %d)\n", t->index, buf, __LINE__);
            return t;
            }
         }
      }
 
-  if (network_id != 0) {
-     for(t = scanned_transponders->first; t; t = t->next) {
-        if ((t->network_id == network_id) && (t->transport_stream_id == transport_stream_id)) {
-           print_transponder(buf, t);
-           verbose("          -> found 'scanned_transponders(%.3u)'  %s\n", t->index, buf);
-           return t;
-           }
-        }
-     for(t = new_transponders->first; t; t = t->next) {
-        if ((t->network_id == network_id) && (t->transport_stream_id == transport_stream_id)) {
-           print_transponder(buf, t);
-           verbose("          -> found 'new_transponders(%.3u)'  %s\n", t->index, buf);
-           return t;
-           }
-        }
-     }
   verbose("          -> not found.\n");
   return NULL;
 }
@@ -549,10 +537,32 @@ void  list_transponders() {
   verbose("          =============================================================\n");
 }
 
+static void copy_duplicate_tp(struct transponder * t, struct transponder * t2) {
+  if ((t->type == SCAN_TERRESTRIAL) && !t->frequency)
+     t->frequency = t2->frequency;
+
+  if (t->original_network_id == 0)
+     t->original_network_id = t2->original_network_id;
+
+  if ((!t->source) && ((t2->source >> 8) == TABLE_NIT_ACT)) {
+     // t is guessed, but t2 from nit act
+     uint32_t f = t->frequency;
+     copy_fe_params(t, t2);
+     if (!t->frequency && f) {
+        // copy_fe_params overwrote t->freq with '0' from t2.
+        t->frequency = f;
+        }
+     }
+  // enshure that current_tp points to valid tp.
+  if (current_tp == t2)
+     current_tp = t;  
+}
+
 void check_duplicate_transponders() {
   struct transponder * t, * t2;
   char buf[128];
 
+
   verbose("          %s()\n", __FUNCTION__);
   for(t = scanned_transponders->first; t; t = t->next) {
      for(t2 = t->next; t2; t2 = t2->next) {
@@ -564,12 +574,9 @@ void check_duplicate_transponders() {
            continue;
         if (t->transport_stream_id != t2->transport_stream_id)
            continue;
-        if ((t->type == SCAN_TERRESTRIAL) && !t->frequency)
-           t->frequency = t2->frequency;
-        if (current_tp == t2)
-           current_tp = t;
+        copy_duplicate_tp(t,t2);
         print_transponder(buf, t2);
-        verbose("          DELETING DUPLICATE TRANSPONDER %s(%.3u): %s\n", scanned_transponders->name, t2->index, buf);
+        verbose("          DELETING DUPLICATE TRANSPONDER %s(%.3u): %s (line:%d)\n", scanned_transponders->name, t2->index, buf, __LINE__);
         DeleteItem(scanned_transponders,t2);
         return;
         }
@@ -582,12 +589,9 @@ void check_duplicate_transponders() {
            continue;
         if (t->transport_stream_id != t2->transport_stream_id)
            continue;
-        if ((t->type == SCAN_TERRESTRIAL) && !t->frequency)
-           t->frequency = t2->frequency;
-        if (current_tp == t2)
-           current_tp = t;
+        copy_duplicate_tp(t,t2);
         print_transponder(buf, t2);
-        verbose("          DELETING DUPLICATE TRANSPONDER %s(%.3u): %s\n", new_transponders->name, t2->index, buf);
+        verbose("          DELETING DUPLICATE TRANSPONDER %s(%.3u): %s (line:%d)\n", new_transponders->name, t2->index, buf, __LINE__);
         DeleteItem(new_transponders,t2);
         return;
         }
@@ -602,25 +606,20 @@ void check_duplicate_transponders() {
            continue;
         if (t->transport_stream_id != t2->transport_stream_id)
            continue;
-        if ((t->type == SCAN_TERRESTRIAL) && !t->frequency)
-           t->frequency = t2->frequency;
-        if (current_tp == t2)
-           current_tp = t;
+        copy_duplicate_tp(t,t2);
         print_transponder(buf, t2);
-        verbose("          DELETING DUPLICATE TRANSPONDER %s(%.3u): %s\n", new_transponders->name, t2->index, buf);
+        verbose("          DELETING DUPLICATE TRANSPONDER %s(%.3u): %s (line:%d)\n", new_transponders->name, t2->index, buf, __LINE__);
         DeleteItem(new_transponders,t2);
         return;
         }
      }
 }
 
-
 static void copy_transponder(struct transponder * dest, struct transponder * source) {
   struct service * s, * sd;
-  struct frequency_item * p, * p1;
+  struct cell * p/*, * p1*/;
 
   copy_fe_params(dest, source);
-
   dest->network_PID          = source->network_PID;
   dest->network_id           = source->network_id;
   dest->original_network_id  = source->original_network_id;
@@ -634,37 +633,31 @@ static void copy_transponder(struct transponder * dest, struct transponder * sou
      dest->network_name = (char *) calloc(strlen(source->network_name) + 1, 1);
      memcpy(dest->network_name, source->network_name, strlen(source->network_name));
      }
+  dest->cells = &(dest->_cells);  
+  ClearList(dest->cells);
 
-  dest->frequencies = &(dest->_frequencies);  
-  for(p = (dest->frequencies)->first; p; p = p->next)
-     ClearList(p->transposers);
-  ClearList(dest->frequencies); 
-
-  for(p = (source->frequencies)->first; p; p = p->next) {
-     struct frequency_item * p2, * p3;
-     p1 = calloc(1, sizeof(*p1));
-     p1->transposers = &(p1->_transposers);
-     NewList(p1->transposers, "transposers");
-     p1->frequency = p->frequency;
-     p1->cell_id   = p->cell_id;
-     for(p2 = (p->transposers)->first; p2; p2 = p2->next) {
-        p3 = calloc(1, sizeof(*p3));
-        p3->transposers = &(p3->_transposers);
-        NewList(p3->transposers, "dont_use");
-        p3->frequency = p2->frequency;
-        p3->cell_id   = p2->cell_id;
-        AddItem(p1->transposers, p3);        
+  for(p = (source->cells)->first; p; p = p->next) {
+     struct cell* p1;
+     int i;
+     p1 = calloc(1, sizeof(struct cell));
+     AddItem(dest->cells, p1);
+     for(i = 0; i < 6; i++)
+        p1->center_frequencies[i] = p->center_frequencies[i];
+     p1->num_center_frequencies = p->num_center_frequencies;
+     p1->cell_id = p->cell_id;
+
+     for(i = 0; i < 16; i++) {
+        p1->transposers[i].cell_id_extension = p->transposers[i].cell_id_extension;
+        p1->transposers[i].transposer_frequency = p->transposers[i].transposer_frequency;     
         }
-     AddItem(dest->frequencies, p1);
+     p1->num_transposers = p->num_transposers;
      }
-
   dest->services = &(dest->_services);
   ClearList(dest->services);
-
   // be shure that we take all services from source to dest.
   for(s = (source->services)->first; s; s = s->next) {
-     sd = calloc(1, sizeof(*sd));
-     memcpy(sd, s, sizeof(*sd));
+     sd = calloc(1, sizeof(struct service));
+     memcpy(sd, s, sizeof(struct service));
      sd->priv = NULL;
      sd->prev = NULL;
      sd->next = NULL;
@@ -827,14 +820,12 @@ static void parse_descriptors(enum table_id t, const unsigned char * buf, int de
                 switch (buf[2]) { // descriptor_tag_extension;
                    // see descriptors.h: _extended_descriptors && 300468v011101p 6.4
                    case C2_delivery_system_descriptor:
-                        if ((scantype == SCAN_CABLE) && ((t == TABLE_NIT_ACT) || (t == TABLE_NIT_OTH)) &&
-                            (fe_info.caps & FE_CAN_2G_MODULATION)) {
+                        if ((scantype == SCAN_CABLE) && ((t == TABLE_NIT_ACT) || (t == TABLE_NIT_OTH))) {
                            parse_C2_delivery_system_descriptor(buf, data, caps_inversion);
                            }
                         break;
                    case T2_delivery_system_descriptor:
-                        if ((scantype == SCAN_TERRESTRIAL) && ((t == TABLE_NIT_ACT) || (t == TABLE_NIT_OTH)) &&
-                            (fe_info.caps & FE_CAN_2G_MODULATION)) {
+                        if ((scantype == SCAN_TERRESTRIAL) && ((t == TABLE_NIT_ACT) || (t == TABLE_NIT_OTH))) {
                            parse_T2_delivery_system_descriptor(buf, data, caps_inversion);
                            }
                         break;
@@ -928,16 +919,21 @@ em_static void parse_pat(const unsigned char * buf, uint16_t section_length, uin
   hexdump(__FUNCTION__, buf, section_length);
 
   if (current_tp->transport_stream_id != transport_stream_id) {
-     char buffer[128];
-     print_transponder(buffer, current_tp);
-     info("        %s : updating transport_stream_id: -> (%u:%u:%u)\n",
-         buffer,
-         current_tp->original_network_id,
-         current_tp->network_id,
-         transport_stream_id);
-     current_tp->transport_stream_id = transport_stream_id;
-     check_duplicate_transponders();
-     if (verbosity > 1) list_transponders();
+     if (current_tp->type == SCAN_TERRESTRIAL) {
+        char buffer[128];
+        print_transponder(buffer, current_tp);
+        info("        %s : updating transport_stream_id: -> (%u:%u:%u)\n",
+            buffer,
+            current_tp->original_network_id,
+            current_tp->network_id,
+            transport_stream_id);
+        current_tp->transport_stream_id = transport_stream_id;
+        check_duplicate_transponders();
+        if (verbosity > 1) list_transponders();
+        }
+     else if (current_tp->transport_stream_id)
+        verbose("unexpected transport_stream_id %d, expected %d\n",
+                transport_stream_id, current_tp->transport_stream_id);
      }
 
   while(section_length > 0) {
@@ -1223,6 +1219,7 @@ em_static void parse_pmt(const unsigned char * buf, uint16_t section_length, uin
 em_static void parse_nit(const unsigned char * buf, uint16_t section_length, uint8_t table_id, uint16_t network_id, uint32_t section_flags) {
   char buffer[128];
   int descriptors_loop_len = ((buf[0] & 0x0f) << 8) | buf[1];
+  bool update_pids;
 
   verbose("%s: (xxxx:%u:xxxx)\n", table_id == 0x40?"NIT(act)":"NIT(oth)", network_id);
   hexdump(__FUNCTION__, buf, section_length);
@@ -1262,24 +1259,7 @@ em_static void parse_nit(const unsigned char * buf, uint16_t section_length, uin
         break;
         }
 
-   //if (section_flags & SECTION_FLAG_INITIAL) {
-     if (table_id == TABLE_NIT_ACT) {
-        // first lookup of this transponders NIT
-        // - high prio: try to find tp by ts_id && update nid, onid
-        // - low  prio: find other tp's
-      //t = current_tp->transport_stream_id == transport_stream_id ? current_tp : NULL;
-        t = find_transponder(0, network_id, transport_stream_id);
-        if (t != NULL) {
-           if (t->original_network_id != original_network_id) {
-              print_transponder(buffer, t);
-              info("        %s : updating original_network_id -> (%u:%u:%u)\n",
-                  buffer, original_network_id, t->network_id, t->transport_stream_id);
-              t->original_network_id = original_network_id;
-              if (verbosity > 1) list_transponders();
-              }
-           }
-        }
-
+     update_pids = false;
      memset(&tn, 0, sizeof(tn));
      tn.type                = current_tp->type;
      tn.network_PID         = current_tp->network_PID;
@@ -1290,8 +1270,8 @@ em_static void parse_nit(const unsigned char * buf, uint16_t section_length, uin
 
      tn.services = &tn._services;
      NewList(tn.services, "tn_services");
-     tn.frequencies = &tn._frequencies;
-     NewList(tn.frequencies, "tn_frequencies");
+     tn.cells = &tn._cells;
+     NewList(tn.cells, "tn_cells");
 
      if ((current_tp->original_network_id == original_network_id) &&
          (current_tp->transport_stream_id == transport_stream_id) &&
@@ -1304,13 +1284,41 @@ em_static void parse_nit(const unsigned char * buf, uint16_t section_length, uin
      tn.source |= table_id << 8;
      
      t = find_transponder(original_network_id, network_id, transport_stream_id);      // try to find tp by transport_stream_id;
+     if (t == NULL) {
+        if ((t = find_transponder_by_freq(&tn))) {
+           print_transponder(buffer, t);
+           info("        already known: (%s), but not found by pids\n", buffer);
+           update_pids = true;
+           }
+        }
 
      if (t != NULL) {
         // this transponder is already known. Should we update its informations?
         if (tn.other_frequency_flag)
             tn.frequency = t->frequency;
+        if (t->locks_with_params && !tn.bandwidth)
+            tn.bandwidth = t->bandwidth; 
         if (table_id == TABLE_NIT_ACT) {
            // only nit_actual should update transponders, too much garbage in satellite nit_other.
+           if (update_pids) {
+              update_pids = false;
+              // 300468: The combination of original_network_id and transport_stream_id allow each TS to be uniquely 
+              //         identified throughout the application area of the present document.
+              //         Any sections of the NIT which describe the actual network (that is, the network of which
+              //         the TS containing the NIT is a part) shall have the table_id 0x40. (TABLE_NIT_ACT)
+              if ((t->original_network_id != original_network_id) ||
+                  (t->network_id != network_id) ||
+                  (t->transport_stream_id != transport_stream_id)) {
+                 print_transponder(buffer, t);
+                 info("        %s : updating tp ids -> (%u:%u:%u)\n",
+                     buffer, original_network_id, network_id, transport_stream_id);
+                 t->original_network_id = original_network_id;
+                 t->network_id = network_id;
+                 t->transport_stream_id = transport_stream_id;
+                 if (verbosity > 1) list_transponders();
+                 check_duplicate_transponders();
+                 }
+              }
            if (is_different_transponder_deep_scan(t, &tn, 0) && ((! t->locks_with_params) || is_auto_params(t))) { // || t->source != tn.source) {
               /* some of the informations is still set to AUTO */
               print_transponder(buffer, t);
@@ -1318,14 +1326,14 @@ em_static void parse_nit(const unsigned char * buf, uint16_t section_length, uin
               copy_transponder(t, &tn);
               print_transponder(buffer, t);
               info("        to (%s) 0x%.4X\n", buffer, t->source);
-              if (t->frequencies->count > 0) {
-                 struct frequency_item * fi, * tr;
-                 for(fi = t->frequencies->first; fi; fi = fi->next) {
-                    verbose("           cell id %u, freq = %u\n", fi->cell_id, fi->frequency);
-                    if (fi->transposers->count > 0) {
-                       for(tr = fi->transposers->first; tr; tr = fi->next) {
-                          verbose("              transposer = %u\n", tr->frequency);
-                          }
+              if (t->cells->count > 0) {
+                 struct cell* fi;
+                 for(fi = (t->cells)->first; fi; fi = fi->next) {
+                    int n;
+                    for(n = 0; n < fi->num_center_frequencies; n++)
+                       verbose("             cell%d: center_frequency%u\n", fi->cell_id, fi->center_frequencies[n]);
+                    for(n = 0; n < fi->num_transposers; n++) {
+                       verbose("                transposer%d transposer_frequency%u\n", n, fi->transposers[n].transposer_frequency);
                        }
                     }
                  }
@@ -1336,9 +1344,9 @@ em_static void parse_nit(const unsigned char * buf, uint16_t section_length, uin
      else {
         // we could not find the transponder by freq and fe_type. probably a new one - so adding it to scan list
         if (flags.add_frequencies > 0 && (tn.type == flags.scantype)) {
-           if (find_transponder_by_freq(&tn)) {
-              print_transponder(buffer, &tn);
-              info("        already known: (%s), but not found by pids\n", buffer);
+           if ((t = find_transponder_by_freq(&tn))) {
+              print_transponder(buffer, t);
+              info("        unexpected: already known tp (%s), but not found by pids\n", buffer);
               }
            else {
               t = alloc_transponder(tn.frequency, tn.type, tn.polarization);
@@ -1347,17 +1355,18 @@ em_static void parse_nit(const unsigned char * buf, uint16_t section_length, uin
                  t->pilot = PILOT_AUTO;
               print_transponder(buffer, t);
               info("        new transponder: (%s) 0x%.4X\n", buffer, t->source);
-              if (t->frequencies->count > 0) {
-                 struct frequency_item * fi, * tr;
-                 for(fi = t->frequencies->first; fi; fi = fi->next) {
-                    verbose("           cell id %u, freq = %u\n", fi->cell_id, fi->frequency);
-                    if (fi->transposers->count > 0) {
-                       for(tr = fi->transposers->first; tr; tr = fi->next) {
-                          verbose("              transposer = %u\n", tr->frequency);
-                          }
+              if (t->cells->count > 0) {
+                 struct cell* fi;
+                 for(fi = (t->cells)->first; fi; fi = fi->next) {
+                    int n;
+                    for(n = 0; n < fi->num_center_frequencies; n++)
+                       verbose("             cell%d: center_frequency%u\n", fi->cell_id, fi->center_frequencies[n]);
+                    for(n = 0; n < fi->num_transposers; n++) {
+                       verbose("                transposer%d transposer_frequency%u\n", n, fi->transposers[n].transposer_frequency);
                        }
                     }
                  }
+              check_duplicate_transponders();
               if (verbosity > 1) list_transponders();
               }
            }
@@ -2070,19 +2079,19 @@ static int set_frontend(int frontend_fd, struct transponder * t) {
 
   // if (mem_is_zero(&t->param, sizeof(struct tuning_parameters)))
   //    return -1;
-
   switch(flags.api_version) {
      case 0x0500 ... 0x05FF:
-        //debug("%s: using DVB API %u.%u\n",
-        //  __FUNCTION__,
-        // flags.api_version >> 8,
-        // flags.api_version & 0xFF);
-
-        /* some 'shortcut' here :-)) --wk 20090324 */
+        #ifdef HWDBG
+        #define set_cmd_sequence(_cmd, _data)   cmds[sequence_len].cmd = _cmd; \
+                                                cmds[sequence_len].u.data = _data; \
+                                                cmdseq.num = ++sequence_len; \
+                                                info("%s:%d: %-40s = %d\n", __FUNCTION__,__LINE__, \
+                                                      property_name(_cmd), _data)
+        #else
         #define set_cmd_sequence(_cmd, _data)   cmds[sequence_len].cmd = _cmd; \
                                                 cmds[sequence_len].u.data = _data; \
                                                 cmdseq.num = ++sequence_len
-
+        #endif
         set_cmd_sequence(DTV_CLEAR, DTV_UNDEFINED);
         switch(t->type) {
            case SCAN_SATELLITE:
@@ -2250,7 +2259,7 @@ static int __tune_to_transponder(int frontend_fd, struct transponder * t, int v)
      t->locks_with_params = true;
      return 0;
      }
-  t->locks_with_params = false;
+
  
   if (v > 0)
      info("----------no signal----------\n");
@@ -2258,7 +2267,7 @@ static int __tune_to_transponder(int frontend_fd, struct transponder * t, int v)
      info("\n");
   
   t->last_tuning_failed = 1;
-  t->locks_with_params = 1;
+  t->locks_with_params = false;
 
   /* tuning didnt work, retry with auto. */
   if (t->delsys != SYS_DVBS2) t->modulation = QAM_AUTO;
@@ -2282,6 +2291,8 @@ static int tune_to_transponder(int frontend_fd, struct transponder * t) {
      }
 
   for(st = scanned_transponders->first; st; st = st->next) {
+     if ((flags.scantype == SCAN_SATELLITE) && (t->polarization != st->polarization))
+        continue;
      if (is_nearly_same_frequency(st->frequency,t->frequency,t->type)) {
         known = true;
         break;
@@ -2317,15 +2328,15 @@ static int tune_to_next_transponder(int frontend_fd) {
      if (t->frequency && (tune_to_transponder(frontend_fd, t) == 0))
         return 0;
 
-     if (t->other_frequency_flag && ((t->frequencies)->count > 0)) {
-        while(i < (t->frequencies)->count) {
-           struct transponder * test = NULL;
-           struct frequency_item * next = GetItem(t->frequencies, i++);
+     if (t->other_frequency_flag && ((t->cells)->count > 0)) {
+        while(i < (t->cells)->count) {
+           struct transponder* test = NULL;
+           struct cell* next = GetItem(t->cells, i++);
 
            if (next == NULL)
               continue; // GetItem may return NULL; dont want to segfault here.
 
-           t->frequency = next->frequency;
+           t->frequency = next->center_frequencies[0];
            j = 0;
            test = find_transponder_by_freq(t);
            if ((test != NULL) && !(IsMember(scanned_transponders, test))) {
@@ -2334,9 +2345,8 @@ static int tune_to_next_transponder(int frontend_fd) {
                  return 0;
 
               }
-           while(j < (next->transposers)->count) {
-              struct frequency_item * transposer = GetItem(next->transposers, j++);
-              t->frequency = transposer->frequency;
+           while(j < next->num_transposers) {
+              t->frequency = next->transposers[j].transposer_frequency;
               test = find_transponder_by_freq(t);
               if ((test != NULL) && !(IsMember(scanned_transponders, test))) {
                  info("retrying with transposer_frequency = %u\n", t->frequency);
@@ -2527,8 +2537,10 @@ static int initial_tune(int frontend_fd, int tuning_data) {
         // disable qam loop, disable symbolrate loop
         modulation_min=modulation_max=0;
         dvbc_symbolrate_min=dvbc_symbolrate_max=0;
+        // enable legacy delsys loop.
+        delsys_min = delsysloop_min(0, this_channellist);
         // enable T2 loop.
-        delsys_max = 1;
+        delsys_max = delsysloop_max(0, this_channellist);
         break;
      case SCAN_CABLE:
         // if choosen srate is too high for channellist's bandwidth,
@@ -3979,6 +3991,14 @@ int main(int argc, char ** argv) {
            info("FEC_AUTO not supported, trying FEC_NONE.\n");
            caps_fec=FEC_NONE;
            }
+        if (fe_info.caps & FE_CAN_BANDWIDTH_AUTO) {
+           info("BANDWIDTH_AUTO\n");
+           bandwidth_auto = true;
+           }
+        else {
+           info("BANDWIDTH_AUTO not supported, trying 6/7/8 MHz.\n");
+           bandwidth_auto = false;
+           }
         if (fe_info.frequency_min == 0 || fe_info.frequency_max == 0) {
            info("This dvb driver is *buggy*: the frequency limits are undefined - please report to linuxtv.org\n");
            fe_info.frequency_min = 177500000; fe_info.frequency_max = 858000000;
diff --git a/si_types.h b/si_types.h
index c3b8987..e20b9bd 100644
--- a/si_types.h
+++ b/si_types.h
@@ -120,27 +120,36 @@ struct service {
 /* transponder type.
  ******************************************************************************/
 
-struct frequency_item {
+struct transposer {
+  uint8_t  cell_id_extension;
+  uint32_t transposer_frequency;
+};
+
+struct cell {
   /*----------------------------*/
   void *   prev;
   void *   next;
   uint32_t index;
   /*----------------------------*/
-  pList transposers;
-  cList _transposers;
   uint16_t cell_id;
-  uint32_t frequency;
+
+  // if TFS: up to 6 RF freqs.
+  int num_center_frequencies;
+  uint32_t center_frequencies[6];
+
+  int num_transposers;
+  struct transposer transposers[16];
 };
 
 struct transponder {
   /*----------------------------*/
-  void *   prev;                 
-  void *   next;                 
-  uint32_t index;                 
-  pList  services;                 
+  void *   prev;
+  void *   next;
+  uint32_t index;
+  pList  services;
   cList _services;
-  pList frequencies;  /* DVB-T/T2 */
-  cList _frequencies;                 
+  pList cells;  /* DVB-T/T2 */
+  cList _cells;
   /*----------------------------- starting from here copied by 'copy_fe_params' ------------------------------------------*/
   /* NOTE: 'frequency' needs to be first item - dont touch!                                                               */
   uint32_t frequency;                                        /* unit Hz, except satellite: kHz                      1..4  */
diff --git a/tools.c b/tools.c
index 55dd9b7..25a752c 100644
--- a/tools.c
+++ b/tools.c
@@ -41,7 +41,7 @@ int verbosity = 2;      // need signed -> use of fatal()
  * new implementation of double linked list since 20140118.
  *
  ******************************************************************************/
-// #define LIST_DEBUG 1
+//#define LIST_DEBUG 1
 
 #ifdef LIST_DEBUG
 #define dbg(s...) info(s)
@@ -80,7 +80,7 @@ int alphabetically(void * a, void * b, int ascending) {
 #endif
 
 // initializes a list before first use
-void NewList(pList list, const char * name) {
+void NewList(pList const list, const char * name) {
   dbg("%s %d: list:'%s'\n", __FUNCTION__,__LINE__,name);
   list->first   = NULL;
   list->last    = NULL;
@@ -109,7 +109,6 @@ void ClearList(pList list) {
   pItem p = list->last;
 
   while (p != NULL) {
-     list->count--;
      list->last=p->prev;
      free(p);
      p=list->last;
@@ -118,6 +117,7 @@ void ClearList(pList list) {
         }
      }
   list->first=NULL;
+  list->count=0;  
   list->lock=false;
   report(list);
 }
@@ -589,6 +589,82 @@ const char * delivery_system_name(int delsys) {
      }
 }
 
+const char * property_name(int property) {
+  switch(property) {
+     case DTV_UNDEFINED                      : return "DTV_UNDEFINED";
+     case DTV_TUNE                           : return "DTV_TUNE";
+     case DTV_CLEAR                          : return "DTV_CLEAR";
+     case DTV_FREQUENCY                      : return "DTV_FREQUENCY";
+     case DTV_MODULATION                     : return "DTV_MODULATION";
+     case DTV_BANDWIDTH_HZ                   : return "DTV_BANDWIDTH_HZ";
+     case DTV_INVERSION                      : return "DTV_INVERSION";
+     case DTV_DISEQC_MASTER                  : return "DTV_DISEQC_MASTER";
+     case DTV_SYMBOL_RATE                    : return "DTV_SYMBOL_RATE";
+     case DTV_INNER_FEC                      : return "DTV_INNER_FEC";
+     case DTV_VOLTAGE                        : return "DTV_VOLTAGE";
+     case DTV_TONE                           : return "DTV_TONE";
+     case DTV_PILOT                          : return "DTV_PILOT";
+     case DTV_ROLLOFF                        : return "DTV_ROLLOFF";
+     case DTV_DISEQC_SLAVE_REPLY             : return "DTV_DISEQC_SLAVE_REPLY";
+     case DTV_FE_CAPABILITY_COUNT            : return "DTV_FE_CAPABILITY_COUNT";
+     case DTV_FE_CAPABILITY                  : return "DTV_FE_CAPABILITY";
+     case DTV_DELIVERY_SYSTEM                : return "DTV_DELIVERY_SYSTEM";
+     case DTV_ISDBT_PARTIAL_RECEPTION        : return "DTV_ISDBT_PARTIAL_RECEPTION";
+     case DTV_ISDBT_SOUND_BROADCASTING       : return "DTV_ISDBT_SOUND_BROADCASTING";
+     case DTV_ISDBT_SB_SUBCHANNEL_ID         : return "DTV_ISDBT_SB_SUBCHANNEL_ID";
+     case DTV_ISDBT_SB_SEGMENT_IDX           : return "DTV_ISDBT_SB_SEGMENT_IDX";
+     case DTV_ISDBT_SB_SEGMENT_COUNT         : return "DTV_ISDBT_SB_SEGMENT_COUNT";
+     case DTV_ISDBT_LAYERA_FEC               : return "DTV_ISDBT_LAYERA_FEC";
+     case DTV_ISDBT_LAYERA_MODULATION        : return "DTV_ISDBT_LAYERA_MODULATION";
+     case DTV_ISDBT_LAYERA_SEGMENT_COUNT     : return "DTV_ISDBT_LAYERA_SEGMENT_COUNT";
+     case DTV_ISDBT_LAYERA_TIME_INTERLEAVING : return "DTV_ISDBT_LAYERA_TIME_INTERLEAVING";
+     case DTV_ISDBT_LAYERB_FEC               : return "DTV_ISDBT_LAYERB_FEC";
+     case DTV_ISDBT_LAYERB_MODULATION        : return "DTV_ISDBT_LAYERB_MODULATION";
+     case DTV_ISDBT_LAYERB_SEGMENT_COUNT     : return "DTV_ISDBT_LAYERB_SEGMENT_COUNT";
+     case DTV_ISDBT_LAYERB_TIME_INTERLEAVING : return "DTV_ISDBT_LAYERB_TIME_INTERLEAVING";
+     case DTV_ISDBT_LAYERC_FEC               : return "DTV_ISDBT_LAYERC_FEC";
+     case DTV_ISDBT_LAYERC_MODULATION        : return "DTV_ISDBT_LAYERC_MODULATION";
+     case DTV_ISDBT_LAYERC_SEGMENT_COUNT     : return "DTV_ISDBT_LAYERC_SEGMENT_COUNT";
+     case DTV_ISDBT_LAYERC_TIME_INTERLEAVING : return "DTV_ISDBT_LAYERC_TIME_INTERLEAVING";
+     case DTV_API_VERSION                    : return "DTV_API_VERSION";
+     case DTV_CODE_RATE_HP                   : return "DTV_CODE_RATE_HP";
+     case DTV_CODE_RATE_LP                   : return "DTV_CODE_RATE_LP";
+     case DTV_GUARD_INTERVAL                 : return "DTV_GUARD_INTERVAL";
+     case DTV_TRANSMISSION_MODE              : return "DTV_TRANSMISSION_MODE";
+     case DTV_HIERARCHY                      : return "DTV_HIERARCHY";
+     case DTV_ISDBT_LAYER_ENABLED            : return "DTV_ISDBT_LAYER_ENABLED";
+     case DTV_STREAM_ID                      : return "DTV_STREAM_ID";
+     case DTV_DVBT2_PLP_ID_LEGACY            : return "DTV_DVBT2_PLP_ID_LEGACY";
+     case DTV_ENUM_DELSYS                    : return "DTV_ENUM_DELSYS";
+     case DTV_ATSCMH_FIC_VER                 : return "DTV_ATSCMH_FIC_VER";
+     case DTV_ATSCMH_PARADE_ID               : return "DTV_ATSCMH_PARADE_ID";
+     case DTV_ATSCMH_NOG                     : return "DTV_ATSCMH_NOG";
+     case DTV_ATSCMH_TNOG                    : return "DTV_ATSCMH_TNOG";
+     case DTV_ATSCMH_SGN                     : return "DTV_ATSCMH_SGN";
+     case DTV_ATSCMH_PRC                     : return "DTV_ATSCMH_PRC";
+     case DTV_ATSCMH_RS_FRAME_MODE           : return "DTV_ATSCMH_RS_FRAME_MODE";
+     case DTV_ATSCMH_RS_FRAME_ENSEMBLE       : return "DTV_ATSCMH_RS_FRAME_ENSEMBLE";
+     case DTV_ATSCMH_RS_CODE_MODE_PRI        : return "DTV_ATSCMH_RS_CODE_MODE_PRI";
+     case DTV_ATSCMH_RS_CODE_MODE_SEC        : return "DTV_ATSCMH_RS_CODE_MODE_SEC";
+     case DTV_ATSCMH_SCCC_BLOCK_MODE         : return "DTV_ATSCMH_SCCC_BLOCK_MODE";
+     case DTV_ATSCMH_SCCC_CODE_MODE_A        : return "DTV_ATSCMH_SCCC_CODE_MODE_A";
+     case DTV_ATSCMH_SCCC_CODE_MODE_B        : return "DTV_ATSCMH_SCCC_CODE_MODE_B";
+     case DTV_ATSCMH_SCCC_CODE_MODE_C        : return "DTV_ATSCMH_SCCC_CODE_MODE_C";
+     case DTV_ATSCMH_SCCC_CODE_MODE_D        : return "DTV_ATSCMH_SCCC_CODE_MODE_D";
+     case DTV_INTERLEAVING                   : return "DTV_INTERLEAVING";
+     case DTV_LNA                            : return "DTV_LNA";
+     case DTV_STAT_SIGNAL_STRENGTH           : return "DTV_STAT_SIGNAL_STRENGTH";
+     case DTV_STAT_CNR                       : return "DTV_STAT_CNR";
+     case DTV_STAT_PRE_ERROR_BIT_COUNT       : return "DTV_STAT_PRE_ERROR_BIT_COUNT";
+     case DTV_STAT_PRE_TOTAL_BIT_COUNT       : return "DTV_STAT_PRE_TOTAL_BIT_COUNT";
+     case DTV_STAT_POST_ERROR_BIT_COUNT      : return "DTV_STAT_POST_ERROR_BIT_COUNT";
+     case DTV_STAT_POST_TOTAL_BIT_COUNT      : return "DTV_STAT_POST_TOTAL_BIT_COUNT";
+     case DTV_STAT_ERROR_BLOCK_COUNT         : return "DTV_STAT_ERROR_BLOCK_COUNT";
+     case DTV_STAT_TOTAL_BLOCK_COUNT         : return "DTV_STAT_TOTAL_BLOCK_COUNT";
+     default                                 : return "(unknown dtv property)";
+     }
+}
+
 const char * bool_name(bool t) {
   if (t == false) return "false";
   return "true";
diff --git a/tools.h b/tools.h
index 30bb74e..62fff09 100644
--- a/tools.h
+++ b/tools.h
@@ -89,6 +89,7 @@ const char * guard_interval_name(int guard_interval);
 const char * hierarchy_name(int hierarchy);
 const char * interleaving_name(int interleaving);
 const char * delivery_system_name(int delsys);
+const char * property_name(int property);
 const char * bool_name(bool t);
 uint32_t freq_scale(uint32_t freq, double scale);
 
@@ -116,7 +117,7 @@ typedef struct {
    uint32_t index;
    } cItem, * pItem;
 
-void   NewList(pList list, const char * name);
+void   NewList(pList const list, const char * name);
 void   ClearList(pList list);
 void   SortList(pList list, cmp_func compare);
 void   AddItem(pList list, void * item);
diff --git a/version.h b/version.h
index deda43b..16661b5 100644
--- a/version.h
+++ b/version.h
@@ -1,6 +1,6 @@
 /* AUTOMATICALLY GENERATED - DO NOT EDIT MANUALLY */
 #ifndef W_SCAN_VERSION_H
 #define W_SCAN_VERSION_H
-uint version=20141122;
+uint version=20161022;
 #endif
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-vdr-dvb/w-scan.git



More information about the pkg-vdr-dvb-changes mailing list