ifw-ccf  3.0.0-pre2
Classes | Namespaces | Macros | Enumerations | Functions | Variables
base.hpp File Reference
#include <fmt/format.h>
#include <boost/exception/diagnostic_information.hpp>
#include <Recif.hpp>
#include <core/utils/base/base.hpp>
#include <core/utils/system/system.hpp>
#include <core/utils/time/time.hpp>
#include <core/utils/conversion/conversion.hpp>
#include <utils/bat/config.hpp>
#include <ccf/mptk/manager.hpp>
#include <ccf/common/dataType.hpp>

Go to the source code of this file.

Classes

class  ccf::Base
 Class to be used as parent all CCF classes. More...
 

Namespaces

 ccf
 
 ccf::loglevel
 

Macros

#define CCFLOC
 Macro generating a location identifier: "<file>:<line>:<function>:<thread>". More...
 
#define CCFL0C
 
#define INFO_LOG_GUARD   if (ccf::Base::GetLogLevel() >= ccf::LogLevel::INFO)
 Guard for INFO logs. Ensures log text is only generated when the given log level is enabled. More...
 
#define DEBUG_LOG_GUARD   if (ccf::Base::GetLogLevel() >= ccf::LogLevel::DEBUG)
 Guard for DEBUG logs. Ensures log text is only generated when the given log level is enabled. More...
 
#define DEBUG2_LOG_GUARD   if (ccf::Base::GetLogLevel() >= ccf::LogLevel::DEBUG2)
 Guard for DEBUG2 logs. Ensures log text is only generated when the given log level is enabled. More...
 
#define DEBUG3_LOG_GUARD   if (ccf::Base::GetLogLevel() >= ccf::LogLevel::DEBUG3)
 Guard for DEBUG3 logs. Ensures log text is only generated when the given log level is enabled. More...
 
#define CCFTHROW(msg)   throw rad::Exception(CCFLOC + ": " + msg)
 Guard for TRACE logs. Ensures log text is only generated when the given log level is enabled. More...
 

Enumerations

enum class  ccf::LogLevel {
  ccf::OFF = 0 , ccf::FATAL = 100 , ccf::ERROR = 200 , ccf::WARN = 300 ,
  ccf::INFO = 400 , ccf::DEBUG = 500 , ccf::DEBUG2 = 501 , ccf::DEBUG3 = 502 ,
  ccf::TRACE = 600 , ccf::NOT_SET = -1
}
 Log levels defined for CCF; adds two debugging levels: DEBUG2, DEBUG3. More...
 

Functions

log4cplus::Logger & ccf::Logger ()
 
std::string CcfThreadName ()
 Return thread name allocated. More...
 
void CcfDebug (const std::string &location, const std::string &msg)
 

Variables

constexpr auto ccf::loglevel::OFF = "OFF"
 
constexpr auto ccf::loglevel::FATAL = "FATAL"
 
constexpr auto ccf::loglevel::ERROR = "ERROR"
 
constexpr auto ccf::loglevel::WARN = "WARN"
 
constexpr auto ccf::loglevel::INFO = "INFO"
 
constexpr auto ccf::loglevel::DEBUG = "DEBUG"
 
constexpr auto ccf::loglevel::DEBUG2 = "DEBUG2"
 
constexpr auto ccf::loglevel::DEBUG3 = "DEBUG3"
 
constexpr auto ccf::loglevel::TRACE = "TRACE"
 
DB state nodes names.
const std::string ccf::DB_DELIM = std::string(utils::bat::CONFIG_DB_DELIMITER)
 
const std::string ccf::DB_NODE_SM_STATUS_STATE
 
const std::string ccf::DB_NODE_SM_STATUS_SUBSTATE
 
const std::string ccf::DB_NODE_SM_STATE
 
Standard metadata keywords.
constexpr auto ccf::META_KEY_EXPO_RATE = "MetaExpoType"
 
constexpr auto ccf::META_KEY_EXPO_TIME = "MetaExpoTime"
 
constexpr auto ccf::META_KEY_EXPO_WIN_BINX = "MetaExpoWinBinX"
 
constexpr auto ccf::META_KEY_EXPO_WIN_BINY = "MetaExpoWinBinY"
 
constexpr auto ccf::META_KEY_EXPO_WIN_STARTX = "MetaExpoWinStartX"
 
constexpr auto ccf::META_KEY_EXPO_WIN_STARTY = "MetaExpoWinStartY"
 
constexpr auto ccf::META_KEY_SYSTEM = "MetaSystem"
 
constexpr auto ccf::META_KEY_CAM_NAME = "MetaCamName"
 
constexpr auto ccf::META_KEY_CAM_ID = "MetaCamId"
 
constexpr auto ccf::META_KEY_CAM_MODEL = "MetaCamModel"
 
constexpr auto ccf::META_KEY_CAM_CHIPMODEL = "MetaCamChipModel"
 
constexpr auto ccf::META_KEY_CAM_TYPE = "MetaCamType"
 
Configuration parameter names.
constexpr auto ccf::CFG_NODE_ACQUISITION = "acquisition"
 
constexpr auto ccf::CFG_NODE_MONITORING = "monitoring"
 
constexpr auto ccf::CFG_NODE_PROCESSING = "processing"
 
constexpr auto ccf::CFG_NODE_RECORDING = "recording"
 
constexpr auto ccf::CFG_NODE_SERVER = "server"
 
constexpr auto ccf::CFG_NODE_TASKS = "tasks"
 
constexpr auto ccf::CFG_KEY_ADAPTER = "adapter"
 
constexpr auto ccf::CFG_KEY_ADDRESS = "address"
 
constexpr auto ccf::CFG_KEY_ALLOW_FRAME_SKIPPING = "allow_frame_skipping"
 
constexpr auto ccf::CFG_KEY_ALLOW_LOST_FRAMES = "allow_lost_frames"
 
constexpr auto ccf::CFG_KEY_DEVICES = "devices"
 
constexpr auto ccf::CFG_KEY_HEIGHT = "height"
 
constexpr auto ccf::CFG_KEY_ID = "id"
 
constexpr auto ccf::CFG_KEY_INIT_SETUP = "init_setup"
 
constexpr auto ccf::CFG_KEY_INPUT_QUEUE_SIZE = "input_queue_size"
 
constexpr auto ccf::CFG_KEY_MANUFACTURER = "manufacturer"
 
constexpr auto ccf::CFG_KEY_MAPPING = "mapping"
 
constexpr auto ccf::CFG_KEY_MAX_RATE = "max_rate"
 
constexpr auto ccf::CFG_KEY_MAX_RESOLUTION = "max_resolution"
 
constexpr auto ccf::CFG_KEY_METADATA_MAP = "metadata_map"
 
constexpr auto ccf::CFG_KEY_MODEL = "model"
 
constexpr auto ccf::CFG_KEY_NAME = "name"
 
constexpr auto ccf::CFG_KEY_NAMES = "names"
 
constexpr auto ccf::CFG_KEY_NB_OF_SAMPLES = "nb_of_samples"
 
constexpr auto ccf::CFG_KEY_OUPUT_QUEUE_SIZE = "output_queue_size"
 
constexpr auto ccf::CFG_KEY_PERIOD = "period"
 
constexpr auto ccf::CFG_KEY_PIPELINE = "pipeline"
 
constexpr auto ccf::CFG_KEY_PROPERTIES = "properties"
 
constexpr auto ccf::CFG_KEY_PROTOCOL = "protocol"
 
constexpr auto ccf::CFG_KEY_PUBLISHERS = "publishers"
 
constexpr auto ccf::CFG_KEY_RECIPES = "recipes"
 
constexpr auto ccf::CFG_KEY_REC_HIST_EXP = "rec_hist_expiration"
 
constexpr auto ccf::CFG_KEY_REC_HIST_SIZE = "rec_hist_size"
 
constexpr auto ccf::CFG_KEY_RESOLUTION = "resolution"
 
constexpr auto ccf::CFG_KEY_SDK = "sdk"
 
constexpr auto ccf::CFG_KEY_SIMULATION = "simulation"
 
constexpr auto ccf::CFG_KEY_SIM_ADDRESS = "sim_address"
 
constexpr auto ccf::CFG_KEY_TYPE = "type"
 
constexpr auto ccf::CFG_KEY_VALUE = "value"
 
constexpr auto ccf::CFG_KEY_WIDTH = "width"
 
constexpr auto ccf::CFG_KEY_WRITE_ON_INIT = "write_on_init"
 
Setup parameter names.
constexpr auto ccf::SETUP_NODE_EXPO = "expo"
 
constexpr auto ccf::SETUP_NODE_SIM = "sim"
 
constexpr auto ccf::SETUP_KEY_ADDRESS = "address"
 
constexpr auto ccf::SETUP_KEY_BASENAME = "basename"
 
constexpr auto ccf::SETUP_KEY_BIN_X = "bin_x"
 
constexpr auto ccf::SETUP_KEY_BIN_Y = "bin_y"
 
constexpr auto ccf::SETUP_KEY_DELAY = "delay"
 
constexpr auto ccf::SETUP_KEY_ENABLED = "enabled"
 
constexpr auto ccf::SETUP_KEY_FILE = "file"
 
constexpr auto ccf::SETUP_KEY_FORMAT = "format"
 
constexpr auto ccf::SETUP_KEY_FRAME_RATE = "frame_rate"
 
constexpr auto ccf::SETUP_KEY_FRAME_RATE_LIMIT = "frame_rate_limit"
 
constexpr auto ccf::SETUP_KEY_MAX_RATE = "max_rate"
 
constexpr auto ccf::SETUP_KEY_MAX_SHIFT = "max_shift"
 
constexpr auto ccf::SETUP_KEY_MAX_SHIFT_PR_FRAME = "max_shift_pr_frame"
 
constexpr auto ccf::SETUP_KEY_MAX_SIZE = "max_size"
 
constexpr auto ccf::SETUP_KEY_MODE = "mode"
 
constexpr auto ccf::SETUP_KEY_NB = "nb"
 
constexpr auto ccf::SETUP_KEY_RATE = "rate"
 
constexpr auto ccf::SETUP_KEY_NOISE = "noise"
 
constexpr auto ccf::SETUP_KEY_PORT = "port"
 
constexpr auto ccf::SETUP_KEY_TIME = "time"
 
constexpr auto ccf::SETUP_KEY_TYPE = "type"
 
constexpr auto ccf::SETUP_KEY_WIN_START_X = "win_start_x"
 
constexpr auto ccf::SETUP_KEY_WIN_START_Y = "win_start_y"
 
constexpr auto ccf::SETUP_KEY_WIN_WIDTH = "win_width"
 
constexpr auto ccf::SETUP_KEY_WIN_HEIGHT = "win_height"
 
Simulation type.
constexpr auto ccf::SIM_TYPE_FILE_STR = "File"
 
constexpr auto ccf::SIM_TYPE_PATTERN1_STR = "Pattern1"
 

States (composite).

enum class  ccf::ThreadType {
  ccf::MONITOR = 1 , ccf::ACQUISITION , ccf::PROCESSING , ccf::PUBLISHER ,
  ccf::UNDEFINED = -1
}
 
enum class  ccf::HwStatus { ccf::NOT_OK = 0 , ccf::OK }
 HW status values. More...
 
enum class  ccf::Status { ccf::FAILURE = 0 , ccf::SUCCESS = 1 }
 General status variable. More...
 
constexpr auto ccf::STATE_ON_NOT_OP_NOT_READY = "On::NotOperational::NotReady"
 
constexpr auto ccf::STATE_ON_NOT_OP_READY = "On::NotOperational::Ready"
 
constexpr auto ccf::STATE_ON_OP_IDLE = "On::Operational::Idle"
 
constexpr auto ccf::STATE_ON_OP_ACQ = "On::Operational::Acquisition"
 
constexpr auto ccf::STATE_ON_OP_ACQ_NOT_REC = "On::Operational::Acquisition::NotRecording"
 
constexpr auto ccf::STATE_ON_OP_ACQ_REC = "On::Operational::Acquisition::Recording"
 
void ccf::SendThrMsg (const std::string &command, const std::string &sender_thread_name, const std::string &receiver_thread_name, const std::string &data)
 Send MPTK message via internal Message Bus. More...
 
bool ccf::ReceiveThrMsg (const std::string &receiver_thread_name, const double time_out, ccf::mptk::Message &message)
 Receive a message from the given thread. Returns true if message received. More...
 
void ccf::DecomposeSmStatus (const std::string &sm_state, std::string &sum_state, std::string &sum_substate)
 
void ccf::AssertPtr (const void *ptr, const std::string &object, const std::string &location)
 Check that pointer is not nullptr and raise rad::exception in case it is. More...
 

Execution status.

enum class  ccf::PubType { ccf::UNDEFINED = -1 , ccf::RECORDING = 1 , ccf::NOT_RECORDING }
 A Publisher may be Recording or Not-Recording. A Recording Publisher publishes data into files. More...
 
enum class  ccf::PubStatus {
  ccf::ACTIVE = recif::RecStatusNames::Active , ccf::COMPLETED = recif::RecStatusNames::Completed , ccf::STOPPED = recif::RecStatusNames::Stopped , ccf::ABORTED = recif::RecStatusNames::Aborted ,
  ccf::FAILED = recif::RecStatusNames::Failed , ccf::UNDEFINED = recif::RecStatusNames::Undefined
}
 Defines the various possible states of a Data Publisher. More...
 
enum class  ccf::ProcStatus {
  ccf::UNDEFINED = -1 , ccf::IDLE = 1 , ccf::PROCESSING = 32 , ccf::FINISHED = 128 ,
  ccf::FAILED = 256
}
 Possible states for a Processing Recipe defined. More...
 
enum class  ccf::ExpoMode { ccf::FINITE = 1 , ccf::CONTINUOUS , ccf::INACTIVE }
 Exposure modes. More...
 
constexpr auto ccf::SUCCESS = "Success"
 
constexpr auto ccf::FAILURE = "Failure"
 
std::string ccf::StatusToStr (ccf::Status status)
 Convert the status from number to string. More...
 
DataTypes ccf::BitpixToDataType (const int8_t bitpix)
 Converts the FITS BITPIX value into a data type. More...
 
void ccf::ResetRecStatusObj (std::shared_ptr< recif::RecStatus > &rec_status_obj, const recif::RecStatusNames rec_status=recif::RecStatusNames::Undefined)
 Reset the members of the Recording Status Object. More...
 
void ccf::CopyRecStatusObj (const std::shared_ptr< recif::RecStatus > &src_rec_status_obj, const std::shared_ptr< recif::RecStatus > &trg_rec_status_obj)
 Cope the members of one Recording Status Object to another. More...
 

Exposure modes.

enum class  ccf::SimType { ccf::FILE = 1 , ccf::PATTERN1 }
 Simulation type. More...
 
constexpr auto ccf::EXPO_MODE_FINITE = "Finite"
 
constexpr auto ccf::EXPO_MODE_CONTINUOUS = "Continuous"
 
constexpr auto ccf::EXPO_MODE_INACTIVE = "Inactive"
 
constexpr auto ccf::REC_ID_PREFIX = "RecId"
 
ExpoMode ccf::ExpoModeToNb (const std::string &expo_mode)
 Convert exposure mode from number representation to string. More...
 

Logging levels literal names.

constexpr auto ccf::CCF_VERSION = "1.2.0"
 Version of CCF. More...
 
constexpr auto ccf::IFW_VERSION = "4.0"
 Version of IFW. More...
 
constexpr auto ccf::NO_VALUE = "__NO__VALUE__"
 
LogLevel ccf::LogLevelToNb (const std::string &log_level)
 
std::string ccf::LogLevelToString (const LogLevel log_level)
 

Publisher Status names.

constexpr auto ccf::PUB_STAT_NAME_ACTIVE = "Active"
 
constexpr auto ccf::PUB_STAT_NAME_COMPLETED = "Completed"
 
constexpr auto ccf::PUB_STAT_NAME_STOPPED = "Stopped"
 
constexpr auto ccf::PUB_STAT_NAME_ABORTED = "Aborted"
 
constexpr auto ccf::PUB_STAT_NAME_FAILED = "Failed"
 
constexpr auto ccf::PUB_STAT_NAME_UNDEFINED = "Undefined"
 
std::string ccf::RecStatusNameToStr (recif::RecStatusNames rec_status_nb)
 Recording Status name, number to string representation. More...
 
std::string ccf::PubStatusNameToStr (PubStatus pub_status_nb)
 Publisher status, number representation to string. More...
 
std::string ccf::BuildKey (const std::vector< std::string > &elements)
 Build a concatenated key from a number of elements (<el1>.<el2.>...). More...
 
std::vector< std::string > ccf::SplitKey (const std::string &key)
 Split up a concatenated key. More...
 

Macro Definition Documentation

◆ CCFL0C

#define CCFL0C
Value:
(std::string(__FILE__) + ":" + std::to_string(__LINE__) + ":" + \
std::string(__FUNCTION__) + ":" + CcfThreadName() + ": ")
std::string CcfThreadName()
Return thread name allocated.
Definition: base.hpp:434

◆ CCFLOC

#define CCFLOC
Value:
(std::string(__FILE__) + ":" + std::to_string(__LINE__) + ":" + \
std::string(__FUNCTION__) + ":" + CcfThreadName())

Macro generating a location identifier: "<file>:<line>:<function>:<thread>".

◆ CCFTHROW

#define CCFTHROW (   msg)    throw rad::Exception(CCFLOC + ": " + msg)

Guard for TRACE logs. Ensures log text is only generated when the given log level is enabled.

ERROR log macro. Includes the location ("CCFLOC") in the log message. WARNING log macro. Includes the location ("CCFLOC") in the log message. INFO log macro. Includes the location ("CCFLOC") in the log message. DEBUG log macro. Includes the location ("CCFLOC") in the log message. DEBUG2 log macro. Includes the location ("CCFLOC") in the log message. DEBUG3 log macro. Includes the location ("CCFLOC") in the log message. Throw a "rad::Exception()". The location ("CCFLOC") for the throw statement is added to the message.

◆ DEBUG2_LOG_GUARD

#define DEBUG2_LOG_GUARD   if (ccf::Base::GetLogLevel() >= ccf::LogLevel::DEBUG2)

Guard for DEBUG2 logs. Ensures log text is only generated when the given log level is enabled.

◆ DEBUG3_LOG_GUARD

#define DEBUG3_LOG_GUARD   if (ccf::Base::GetLogLevel() >= ccf::LogLevel::DEBUG3)

Guard for DEBUG3 logs. Ensures log text is only generated when the given log level is enabled.

◆ DEBUG_LOG_GUARD

#define DEBUG_LOG_GUARD   if (ccf::Base::GetLogLevel() >= ccf::LogLevel::DEBUG)

Guard for DEBUG logs. Ensures log text is only generated when the given log level is enabled.

◆ INFO_LOG_GUARD

#define INFO_LOG_GUARD   if (ccf::Base::GetLogLevel() >= ccf::LogLevel::INFO)

Guard for INFO logs. Ensures log text is only generated when the given log level is enabled.

Function Documentation

◆ CcfDebug()

void CcfDebug ( const std::string &  location,
const std::string &  msg 
)
inline

Used for debugging purposes to print out info to "stdout". It is attempted to flush the "stdout" file descriptor to ensure the message is displayed on "stdout".

◆ CcfThreadName()

std::string CcfThreadName ( )
inline

Return thread name allocated.