diff options
author | Matthias P. Braendli <matthias.braendli@mpb.li> | 2019-08-21 10:11:35 +0200 |
---|---|---|
committer | Matthias P. Braendli <matthias.braendli@mpb.li> | 2019-08-21 10:11:35 +0200 |
commit | 86ea8cd8b8b5af7917db28ae30cfb2d2886868fe (patch) | |
tree | 7222d8e077dd2155eecac68b8c78330bcfe5dc80 /src/ClockTAI.h | |
parent | 86fbf91f7323a2c5626a357b8414b15e20c19c9e (diff) | |
parent | 5ee85c4ac41337e383eb1a735bc05f1e5d46a98f (diff) | |
download | dabmux-86ea8cd8b8b5af7917db28ae30cfb2d2886868fe.tar.gz dabmux-86ea8cd8b8b5af7917db28ae30cfb2d2886868fe.tar.bz2 dabmux-86ea8cd8b8b5af7917db28ae30cfb2d2886868fe.zip |
Merge branch 'ediInput' into next
Diffstat (limited to 'src/ClockTAI.h')
-rw-r--r-- | src/ClockTAI.h | 102 |
1 files changed, 0 insertions, 102 deletions
diff --git a/src/ClockTAI.h b/src/ClockTAI.h deleted file mode 100644 index 4b3c2ff..0000000 --- a/src/ClockTAI.h +++ /dev/null @@ -1,102 +0,0 @@ -/* - Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, - 2011, 2012 Her Majesty the Queen in Right of Canada (Communications - Research Center Canada) - - Copyright (C) 2019 - Matthias P. Braendli, matthias.braendli@mpb.li - - http://www.opendigitalradio.org - */ -/* - This file is part of ODR-DabMux. - - ODR-DabMux is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as - published by the Free Software Foundation, either version 3 of the - License, or (at your option) any later version. - - ODR-DabMux is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with ODR-DabMux. If not, see <http://www.gnu.org/licenses/>. -*/ - -/* The EDI output needs TAI clock, according to ETSI TS 102 693 Annex F - * "EDI Timestamps". This module can set the local CLOCK_TAI clock by - * setting the TAI-UTC offset using adjtimex. - * - * This functionality requires Linux 3.10 (30 Jun 2013) or newer. - */ - -#pragma once - -#include <stdint.h> -#include <stdlib.h> -#include <sstream> -#include <chrono> -#include <future> -#include <mutex> -#include <string> -#include <vector> -#include "RemoteControl.h" - -// EDI needs to know UTC-TAI, but doesn't need the CLOCK_TAI to be set. -// We can keep this code, maybe for future use -#define SUPPORT_SETTING_CLOCK_TAI 0 - -/* Loads, parses and represents TAI-UTC offset information from the IETF bulletin */ -class ClockTAI : public RemoteControllable { - public: - ClockTAI(const std::vector<std::string>& bulletin_urls); - - // Fetch the bulletin from the IETF website and return the current - // TAI-UTC offset. - // Throws runtime_error on failure. - int get_offset(void); - -#if SUPPORT_SETTING_CLOCK_TAI - // Update the local TAI clock according to the TAI-UTC offset - // return 0 on success - int update_local_tai_clock(int offset); -#endif - - private: - class download_failed {}; - - // Either retrieve the bulletin from the cache or if necessarly - // download it, and calculate the TAI-UTC offset. - // Returns the offset or throws download_failed or a range_error - // if the offset is out of bounds. - int get_valid_offset(void); - - // Download of new bulletin is done asynchronously - std::future<int> m_offset_future; - - // Protect all data members, as RC functions are in another thread - mutable std::mutex m_data_mutex; - - // The currently used TAI-UTC offset - int m_offset = 0; - int m_offset_valid = false; - - std::vector<std::string> m_bulletin_urls; - - std::string m_bulletin; - std::chrono::system_clock::time_point m_bulletin_download_time; - - // Update the cache file with the current m_bulletin - void update_cache(const char* cache_filename); - - - /* Remote control */ - virtual void set_parameter(const std::string& parameter, - const std::string& value); - - /* Getting a parameter always returns a string. */ - virtual const std::string get_parameter(const std::string& parameter) const; -}; - |