Go to the documentation of this file.
5 #ifndef CCF_COMMON_BASE_HPP_H_
6 #define CCF_COMMON_BASE_HPP_H_
8 #include <fmt/format.h>
10 #include <boost/exception/diagnostic_information.hpp>
13 #include <core/utils/base/base.hpp>
14 #include <core/utils/system/system.hpp>
15 #include <core/utils/time/time.hpp>
16 #include <core/utils/conversion/conversion.hpp>
17 #include <utils/bat/config.hpp>
42 constexpr
auto OFF =
"OFF";
45 constexpr
auto WARN =
"WARN";
46 constexpr
auto INFO =
"INFO";
55 static std::map<std::string, LogLevel> s_log_level_str_to_nb_map =
62 return s_log_level_str_to_nb_map[log_level];
64 throw std::runtime_error(
"Invalid log level given: " + log_level);
69 static std::map<LogLevel, std::string> s_log_level_nb_to_str_map =
75 return s_log_level_nb_to_str_map[log_level];
87 const std::string
DB_DELIM = std::string(utils::bat::CONFIG_DB_DELIMITER);
134 const std::string& sender_thread_name,
135 const std::string& receiver_thread_name,
136 const std::string& data);
140 const double time_out,
147 std::string& sum_state,
148 std::string& sum_substate);
186 std::string m_class_name;
191 const std::string&
object,
192 const std::string& location);
232 return DataTypes::BYTE;
234 return DataTypes::INT16;
236 return DataTypes::UINT16;
238 return DataTypes::INT32;
240 return DataTypes::FLOAT;
242 return DataTypes::INT64;
244 return DataTypes::DOUBLE;
246 return DataTypes::INVALID;
253 case DataTypes::BYTE:
256 case DataTypes::INT16:
257 return Bitpix::INT16;
259 case DataTypes::UINT16:
260 return Bitpix::UINT16;
262 case DataTypes::INT32:
263 return Bitpix::INT32;
265 case DataTypes::FLOAT:
266 return Bitpix::FLOAT;
268 case DataTypes::DOUBLE:
272 return Bitpix::UNKNOWN;
285 ACTIVE = recif::RecStatusNames::Active,
286 COMPLETED = recif::RecStatusNames::Completed,
287 STOPPED = recif::RecStatusNames::Stopped,
288 ABORTED = recif::RecStatusNames::Aborted,
289 FAILED = recif::RecStatusNames::Failed,
290 UNDEFINED = recif::RecStatusNames::Undefined
295 const recif::RecStatusNames rec_status = recif::RecStatusNames::Undefined);
298 void CopyRecStatusObj(
const std::shared_ptr<recif::RecStatus>& src_rec_status_obj,
299 const std::shared_ptr<recif::RecStatus>& trg_rec_status_obj);
438 std::string
BuildKey(
const std::vector<std::string>& elements);
441 std::vector<std::string>
SplitKey(
const std::string& key);
447 char thread_name[32];
448 pthread_getname_np(pthread_self(), thread_name, 32);
453 #define CCFLOC (std::string(__FILE__) + ":" + std::to_string(__LINE__) + ":" + \
454 std::string(__FUNCTION__) + ":" + CcfThreadName())
455 #define CCFL0C (std::string(__FILE__) + ":" + std::to_string(__LINE__) + ":" + \
456 std::string(__FUNCTION__) + ":" + CcfThreadName() + ": ")
461 const std::string& msg) {
462 fmt::print(
"{}:{}#> {}\n", core::utils::time::IsoTimeNow(), location, msg);
467 #define INFO_LOG_GUARD if (ccf::Base::GetLogLevel() >= ccf::LogLevel::INFO)
470 #define DEBUG_LOG_GUARD if (ccf::Base::GetLogLevel() >= ccf::LogLevel::DEBUG)
473 #define DEBUG2_LOG_GUARD if (ccf::Base::GetLogLevel() >= ccf::LogLevel::DEBUG2)
476 #define DEBUG3_LOG_GUARD if (ccf::Base::GetLogLevel() >= ccf::LogLevel::DEBUG3)
501 #define CCFTHROW(msg) throw rad::Exception(CCFLOC + ": " + msg)
503 #endif // CCF_COMMON_BASE_HPP_H_
constexpr auto META_KEY_CAM_MODEL
Definition: base.hpp:109
Class to be used as parent all CCF classes.
Definition: base.hpp:151
const std::string DB_NODE_SM_STATE
Definition: base.hpp:94
constexpr auto CFG_KEY_ADDRESS
Definition: base.hpp:328
constexpr auto SETUP_KEY_TYPE
Definition: base.hpp:389
constexpr auto ERROR
Definition: base.hpp:44
constexpr auto CFG_KEY_IMAGE_DIR
Definition: base.hpp:334
constexpr auto CFG_KEY_OUPUT_QUEUE_SIZE
Definition: base.hpp:346
constexpr auto IFW_VERSION
Version of IFW.
Definition: base.hpp:82
constexpr auto SETUP_KEY_FORMAT
Definition: base.hpp:376
constexpr auto CFG_KEY_METADATA_MAP
Definition: base.hpp:341
constexpr auto SETUP_KEY_BIN_X
Definition: base.hpp:371
constexpr auto SETUP_KEY_MAX_RATE
Definition: base.hpp:379
void 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.
Definition: base.cpp:36
constexpr auto PUB_STAT_NAME_FAILED
Definition: base.hpp:427
constexpr auto META_KEY_EXPO_RATE
Definition: base.hpp:100
std::string CcfThreadName()
Return thread name allocated.
Definition: base.hpp:446
std::string StatusToStr(ccf::Status status)
Convert the status from number to string.
Definition: base.cpp:124
constexpr auto CFG_KEY_MANUFACTURER
Definition: base.hpp:337
static ccf::LogLevel GetLogLevel()
Return the current CCF log level.
Definition: base.cpp:84
constexpr auto CFG_KEY_PROPERTIES
Definition: base.hpp:349
PubType
A Publisher may be Recording or Not-Recording. A Recording Publisher publishes data into files.
Definition: base.hpp:277
constexpr auto CFG_KEY_PROTOCOL
Definition: base.hpp:350
constexpr auto CFG_KEY_REC_HIST_EXP
Definition: base.hpp:353
void 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.
Definition: base.cpp:53
constexpr auto STATE_ON_NOT_OP_READY
Definition: base.hpp:117
constexpr auto CFG_KEY_PIPELINE
Definition: base.hpp:348
void DecomposeSmStatus(const std::string &sm_state, std::string &sum_state, std::string &sum_substate)
Definition: base.cpp:184
constexpr auto CFG_KEY_SIMULATION
Definition: base.hpp:357
constexpr auto SETUP_KEY_ADDRESS
Definition: base.hpp:369
void SetLogger(log4cplus::Logger &logger)
Set reference to logger used in this context.
Definition: base.cpp:92
static void SetLogLevel(const ccf::LogLevel log_level)
Set the log level.
Definition: base.cpp:79
constexpr auto SETUP_KEY_FRAME_RATE_LIMIT
Definition: base.hpp:378
constexpr auto CFG_KEY_NAME
Definition: base.hpp:343
constexpr auto PUB_STAT_NAME_STOPPED
Definition: base.hpp:425
constexpr auto META_KEY_CAM_TYPE
Definition: base.hpp:111
constexpr auto STATE_ON_OP_IDLE
Definition: base.hpp:118
constexpr auto SETUP_KEY_MAX_SHIFT
Definition: base.hpp:380
constexpr auto SETUP_KEY_NB
Definition: base.hpp:384
constexpr auto META_KEY_EXPO_TIME
Definition: base.hpp:101
constexpr auto CFG_KEY_ALLOW_FRAME_SKIPPING
Definition: base.hpp:329
constexpr auto META_KEY_CAM_NAME
Definition: base.hpp:107
constexpr auto EXPO_MODE_FINITE
Definition: base.hpp:398
Base()
Definition: base.cpp:63
constexpr auto META_KEY_EXPO_WIN_STARTX
Definition: base.hpp:104
constexpr auto OFF
Definition: base.hpp:42
constexpr auto CFG_KEY_ADAPTER
Definition: base.hpp:327
~Base()
Definition: base.cpp:67
constexpr auto CFG_KEY_RESOLUTION
Definition: base.hpp:355
constexpr auto FAILURE
Definition: base.hpp:209
constexpr auto SIM_TYPE_PATTERN1_STR
Definition: base.hpp:418
constexpr auto NO_VALUE
Definition: base.hpp:84
constexpr auto TRACE
Definition: base.hpp:50
constexpr auto SETUP_KEY_ENABLED
Definition: base.hpp:374
constexpr auto CFG_KEY_RECIPES
Definition: base.hpp:352
constexpr auto CFG_KEY_MAPPING
Definition: base.hpp:338
SimType
Simulation type.
Definition: base.hpp:410
constexpr auto PUB_STAT_NAME_COMPLETED
Definition: base.hpp:424
constexpr auto SETUP_KEY_FRAME_RATE
Definition: base.hpp:377
constexpr auto SETUP_KEY_MAX_SIZE
Definition: base.hpp:382
IFW CTD Multiprocessing Toolkit Manager class.
Definition: manager.hpp:21
const std::string & GetClassName() const
Return the allocated name of the class.
Definition: base.cpp:69
constexpr auto META_KEY_CAM_ID
Definition: base.hpp:108
void CcfDebug(const std::string &location, const std::string &msg)
Definition: base.hpp:460
constexpr auto STATE_ON_OP_ACQ_REC
Definition: base.hpp:121
constexpr auto EXPO_MODE_CONTINUOUS
Definition: base.hpp:399
Status
General status variable.
Definition: base.hpp:201
constexpr auto INFO
Definition: base.hpp:46
HwStatus
HW status values.
Definition: base.hpp:195
constexpr auto CFG_KEY_MAX_RESOLUTION
Definition: base.hpp:340
constexpr auto SETUP_KEY_DELAY
Definition: base.hpp:373
PubStatus
Defines the various possible states of a Data Publisher.
Definition: base.hpp:284
constexpr auto META_KEY_EXPO_WIN_BINX
Definition: base.hpp:102
constexpr auto CFG_KEY_ID
Definition: base.hpp:333
LogLevel LogLevelToNb(const std::string &log_level)
Definition: base.hpp:54
constexpr auto SETUP_KEY_BASENAME
Definition: base.hpp:370
constexpr auto CFG_NODE_TASKS
Definition: base.hpp:325
constexpr auto CFG_KEY_PERIOD
Definition: base.hpp:347
constexpr auto SETUP_KEY_MODE
Definition: base.hpp:383
constexpr auto STATE_ON_OP_ACQ
Definition: base.hpp:119
std::string PubStatusNameToStr(PubStatus pub_status_nb)
Publisher status, number representation to string.
Definition: base.cpp:132
ThreadType
Definition: base.hpp:124
constexpr auto SETUP_KEY_WIN_HEIGHT
Definition: base.hpp:393
ProcStatus
Possible states for a Processing Recipe defined.
Definition: base.hpp:302
constexpr auto CFG_NODE_SERVER
Definition: base.hpp:324
constexpr auto SETUP_KEY_MAX_SHIFT_PR_FRAME
Definition: base.hpp:381
constexpr auto CFG_KEY_VALUE
Definition: base.hpp:360
constexpr auto SETUP_NODE_SIM
Definition: base.hpp:367
constexpr auto PUB_STAT_NAME_ABORTED
Definition: base.hpp:426
constexpr auto SETUP_KEY_NOISE
Definition: base.hpp:386
static ccf::mptk::Manager & Mptk()
Return reference to internal MPTK instance (singleton).
Definition: base.hpp:155
void 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.
Definition: base.cpp:167
Definition: appBase.cpp:8
Bitpix
CCF image data types. Based on the values defined for BITPIX in the FITS standard.
Definition: base.hpp:216
log4cplus::Logger m_logger
Definition: base.hpp:181
IFW CTD Multiprocessing Toolkit Message class.
Definition: message.hpp:19
DataTypes BitpixToDataType(const Bitpix bitpix)
Converts the FITS BITPIX value into a data type.
Definition: base.hpp:229
constexpr auto SETUP_KEY_WIN_START_Y
Definition: base.hpp:391
constexpr auto CFG_KEY_ALLOW_LOST_FRAMES
Definition: base.hpp:330
constexpr auto CFG_KEY_NB_OF_SAMPLES
Definition: base.hpp:345
constexpr auto CFG_KEY_INIT_SETUP
Definition: base.hpp:335
constexpr auto CFG_NODE_RECORDING
Definition: base.hpp:323
constexpr auto FATAL
Definition: base.hpp:43
constexpr auto CFG_KEY_NAMES
Definition: base.hpp:344
constexpr auto SETUP_KEY_BIN_Y
Definition: base.hpp:372
constexpr auto DEBUG3
Definition: base.hpp:49
constexpr auto SETUP_KEY_PORT
Definition: base.hpp:387
constexpr auto META_KEY_EXPO_WIN_BINY
Definition: base.hpp:103
constexpr auto EXPO_MODE_INACTIVE
Definition: base.hpp:400
constexpr auto STATE_ON_NOT_OP_NOT_READY
Definition: base.hpp:116
constexpr auto DEBUG2
Definition: base.hpp:48
constexpr auto CFG_KEY_SDK
Definition: base.hpp:356
constexpr auto DEBUG
Definition: base.hpp:47
void ResetRecStatusObj(std::shared_ptr< recif::RecStatus > &rec_status_obj, const recif::RecStatusNames rec_status)
Reset the members of the Recording Status Object.
Definition: base.cpp:149
std::string LogLevelToString(const LogLevel log_level)
Definition: base.hpp:68
constexpr auto WARN
Definition: base.hpp:45
constexpr auto CFG_KEY_MAX_RATE
Definition: base.hpp:339
constexpr auto SETUP_KEY_WIN_START_X
Definition: base.hpp:390
LogLevel
Log levels defined for CCF; adds two debugging levels: DEBUG2, DEBUG3.
Definition: base.hpp:26
constexpr auto SIM_TYPE_FILE_STR
Definition: base.hpp:417
ExpoMode
Exposure modes.
Definition: base.hpp:312
constexpr auto CFG_KEY_WIDTH
Definition: base.hpp:361
constexpr auto PUB_STAT_NAME_UNDEFINED
Definition: base.hpp:428
const std::string DB_NODE_SM_STATUS_STATE
Definition: base.hpp:90
constexpr auto CFG_NODE_MONITORING
Definition: base.hpp:321
const std::string DB_DELIM
Definition: base.hpp:87
constexpr auto META_KEY_SYSTEM
Definition: base.hpp:106
constexpr auto CFG_KEY_SIM_ADDRESS
Definition: base.hpp:358
constexpr auto CFG_NODE_PROCESSING
Definition: base.hpp:322
constexpr auto META_KEY_EXPO_WIN_STARTY
Definition: base.hpp:105
constexpr auto CFG_KEY_DEVICES
Definition: base.hpp:331
constexpr auto CFG_KEY_MODEL
Definition: base.hpp:342
constexpr auto META_KEY_CAM_CHIPMODEL
Definition: base.hpp:110
ExpoMode ExpoModeToNb(const std::string &expo_mode)
Convert exposure mode from number representation to string.
Definition: base.cpp:96
constexpr auto CFG_KEY_PUBLISHERS
Definition: base.hpp:351
constexpr auto REC_ID_PREFIX
Definition: base.hpp:404
constexpr auto PUB_STAT_NAME_ACTIVE
Definition: base.hpp:423
constexpr auto SETUP_KEY_FILE
Definition: base.hpp:375
constexpr auto SETUP_KEY_WIN_WIDTH
Definition: base.hpp:392
constexpr auto CFG_KEY_HEIGHT
Definition: base.hpp:332
std::string RecStatusNameToStr(recif::RecStatusNames rec_status_nb)
Recording Status name, number to string representation.
Definition: base.cpp:144
log4cplus::Logger & Loggger()
Return reference to logger used in this context.
Definition: base.cpp:88
const std::string DB_NODE_SM_STATUS_SUBSTATE
Definition: base.hpp:92
constexpr auto CFG_KEY_REC_HIST_SIZE
Definition: base.hpp:354
constexpr auto STATE_ON_OP_ACQ_NOT_REC
Definition: base.hpp:120
constexpr auto CFG_KEY_INPUT_QUEUE_SIZE
Definition: base.hpp:336
DataTypes
Definition: dataType.hpp:46
bool 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.
Definition: base.cpp:45
constexpr auto CCF_VERSION
Version of CCF.
Definition: base.hpp:79
constexpr auto SETUP_KEY_RATE
Definition: base.hpp:385
constexpr auto SUCCESS
Definition: base.hpp:208
constexpr auto CFG_NODE_ACQUISITION
Definition: base.hpp:320
constexpr auto CFG_KEY_TYPE
Definition: base.hpp:359
std::string BuildKey(const std::vector< std::string > &elements)
Build a concatenated key from a number of elements (<el1>.<el2.>...).
Definition: base.cpp:218
constexpr auto SETUP_NODE_EXPO
Definition: base.hpp:366
constexpr auto SETUP_KEY_TIME
Definition: base.hpp:388
std::vector< std::string > SplitKey(const std::string &key)
Split up a concatenated key.
Definition: base.cpp:222
log4cplus::Logger & Logger()
Definition: base.cpp:9
void SetClassName(const std::string &class_name)
Set the name of the class in question.
Definition: base.cpp:74