diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/DabMultiplexer.cpp | 28 | ||||
| -rw-r--r-- | src/DabMultiplexer.h | 6 | 
2 files changed, 18 insertions, 16 deletions
diff --git a/src/DabMultiplexer.cpp b/src/DabMultiplexer.cpp index ec29211..fe7b156 100644 --- a/src/DabMultiplexer.cpp +++ b/src/DabMultiplexer.cpp @@ -105,14 +105,14 @@ void DabMultiplexer::prepare(bool require_tai_clock)       */      using Sec = chrono::seconds;      const auto now = chrono::system_clock::now(); -    edi_time = chrono::system_clock::to_time_t(chrono::time_point_cast<Sec>(now)); +    m_edi_time = chrono::system_clock::to_time_t(chrono::time_point_cast<Sec>(now));      auto offset = now - chrono::time_point_cast<Sec>(now);      if (offset >= chrono::seconds(1)) {          throw std::logic_error("Invalid startup offset calculation for TIST! " +                  to_string(chrono::duration_cast<chrono::milliseconds>(offset).count()) +                  " ms");      } -    timestamp = 0; +    m_timestamp = 0;      while (offset >= chrono::milliseconds(24)) {          increment_timestamp();          offset -= chrono::milliseconds(24); @@ -361,10 +361,10 @@ void DabMultiplexer::prepare_data_inputs()  void DabMultiplexer::increment_timestamp()  { -    timestamp += 24 << 14; // Shift 24ms by 14 to Timestamp level 2 -    if (timestamp > 0xf9FFff) { -        timestamp -= 0xfa0000; // Substract 16384000, corresponding to one second -        edi_time += 1; +    m_timestamp += 24 << 14; // Shift 24ms by 14 to Timestamp level 2 +    if (m_timestamp > 0xf9FFff) { +        m_timestamp -= 0xfa0000; // Substract 16384000, corresponding to one second +        m_edi_time += 1;      }  } @@ -399,6 +399,8 @@ void DabMultiplexer::mux_frame(std::vector<std::shared_ptr<DabOutput> >& outputs      }      update_dab_time(); +    const auto edi_time = m_edi_time + m_tist_offset; +      // Initialise the ETI frame      memset(etiFrame, 0, 6144); @@ -523,11 +525,11 @@ void DabMultiplexer::mux_frame(std::vector<std::shared_ptr<DabOutput> >& outputs      if (fc->FP == 0) {          // update the latched time only when FP==0 to ensure MNSC encodes          // a consistent time -        edi_time_latched_for_mnsc = edi_time + m_tist_offset; +        m_edi_time_latched_for_mnsc = edi_time;      }      struct tm time_tm; -    gmtime_r(&edi_time_latched_for_mnsc, &time_tm); +    gmtime_r(&m_edi_time_latched_for_mnsc, &time_tm);      switch (fc->FP & 0x3) {          case 0:              { @@ -592,7 +594,7 @@ void DabMultiplexer::mux_frame(std::vector<std::shared_ptr<DabOutput> >& outputs          int sizeSubchannel = subchannel->getSizeByte();          // no need to check enableTist because we always increment the timestamp          int result = subchannel->readFrame(&etiFrame[index], -                        sizeSubchannel, edi_time + m_tist_offset, tai_utc_offset, timestamp); +                        sizeSubchannel, edi_time, tai_utc_offset, m_timestamp);          if (result < 0) {              etiLog.log(info, @@ -637,8 +639,8 @@ void DabMultiplexer::mux_frame(std::vector<std::shared_ptr<DabOutput> >& outputs      bool enableTist = m_pt.get("general.tist", false);      if (enableTist) { -        tist->TIST = htonl(timestamp) | 0xff; -        edi_tagDETI.tsta = timestamp & 0xffffff; +        tist->TIST = htonl(m_timestamp) | 0xff; +        edi_tagDETI.tsta = m_timestamp & 0xffffff;      }      else {          tist->TIST = htonl(0xffffff) | 0xff; @@ -646,7 +648,7 @@ void DabMultiplexer::mux_frame(std::vector<std::shared_ptr<DabOutput> >& outputs      }      if (tist_enabled and m_tai_clock_required) { -        edi_tagDETI.set_edi_time(edi_time + m_tist_offset, tai_utc_offset); +        edi_tagDETI.set_edi_time(edi_time, tai_utc_offset);          edi_tagDETI.atstf = true;          for (auto output : outputs) { @@ -728,7 +730,7 @@ void DabMultiplexer::mux_frame(std::vector<std::shared_ptr<DabOutput> >& outputs          if (enableTist) {              etiLog.log(info, "ETI frame number %i Timestamp: %d + %f",                      currentFrame, edi_time, -                    (timestamp & 0xFFFFFF) / 16384000.0); +                    (m_timestamp & 0xFFFFFF) / 16384000.0);          }          else {              etiLog.log(info, "ETI frame number %i Time: %d, no TIST", diff --git a/src/DabMultiplexer.h b/src/DabMultiplexer.h index 56a8dde..8a2795b 100644 --- a/src/DabMultiplexer.h +++ b/src/DabMultiplexer.h @@ -82,9 +82,9 @@ class DabMultiplexer : public RemoteControllable {          boost::property_tree::ptree m_pt; -        unsigned timestamp = 0; -        std::time_t edi_time; -        std::time_t edi_time_latched_for_mnsc; +        uint32_t m_timestamp = 0; +        std::time_t m_edi_time; +        std::time_t m_edi_time_latched_for_mnsc;          edi::configuration_t edi_conf;          std::shared_ptr<edi::Sender> edi_sender;  | 
