/*
* (c) Copyright, Real-Time Innovations, 2002-2024.
* All rights reserved.
*
* No duplications, whole or partial, manual or electronic, may be made
* without express written permission. Any such copies, or
* revisions thereof, must display this notice unaltered.
* This code contains trade secrets of Real-Time Innovations, Inc.
*/
#ifndef clock_log_h
#define clock_log_h
#include "log/log_common.h"
#include "clock/clock_dll.h"
#ifdef __cplusplus
extern "C" {
#endif
/** @internal \file
* \brief clock module documentation top level
*/
/** @internal \mainpage
*
* An application may use multiple clocks if they are synchronized so that
* MT safe monotonicity (but NOT strict monotonicity) can be guaranteed.
*
* RTI supplies clocks that conform to this \ref RTIClockClass interface:
*
* - \ref RTISystemClockClass and
*
- \ref RTIHighResolutionClockClass
*
*/
/** @internal \defgroup RTIClockModule Clock
* \ingroup RTI
* @brief pluggable clock interface and RTI provided clocks.
*/
/** @internal \defgroup RTIClockLogClass RTIClockLog
* \ingroup RTIClockModule
*/
/** @internal NOTE: When a new submodule is added to clock module, it must be
* given a number and entered here. Because of the use of this id for logging,
* there are 16 submodule id's: 0x1000, 0x2000,...
* ..., 0xF000.
* It is suggested we put the modules here in an order that
* respects their dependencies: modules with a lower number
* cannot depend on modules with a higher number.
*/
#define SUBMODULE_CLOCK_SYSTEM (0x1000)
#define SUBMODULE_CLOCK_HIGH_RESOLUTION (0x2000)
#define SUBMODULE_CLOCK_MONOTONIC (0x3000)
#define SUBMODULE_INFRASTRUCTURE (0x4000)
/** @internal \ingroup RTIClockLogClass
* @brief turn on logging for only the system clock.
*/
#define RTI_CLOCK_SUBMODULE_MASK_SYSTEM (0x0001)
/** @internal \ingroup RTIClockLogClass
* @brief turn on logging for only the high resolution clock.
*/
#define RTI_CLOCK_SUBMODULE_MASK_HIGH_RESOLUTION (0x0002)
/** @internal \ingroup RTIClockLogClass
* @brief turn on logging for only the monotonic clock.
*/
#define RTI_CLOCK_SUBMODULE_MASK_MONOTONIC (0x0004)
/** @internal \ingroup RTIClockLogClass
* @brief turn on logging for only infrastructure
*/
#define RTI_CLOCK_SUBMODULE_MASK_INFRASTRUCTURE (0x0008)
/** @internal \ingroup RTIClockLogClass
* @brief turn on logging for all clock submodules.
*/
#define RTI_CLOCK_SUBMODULE_MASK_ALL RTI_LOG_SUBMODULE_MASK_ALL
/** @internal \ingroup RTIClockLogClass
* @brief clock->getTime() failed.
* @see RTIClockTimeGetFunction
*/
extern RTIClockDllVariable const struct RTILogMessage
RTI_CLOCK_LOG_GET_TIME_FAILURE;
/** @internal \ingroup RTIClockLogClass
* @brief RTIClock_getTimeOverhead() failed.
*/
extern RTIClockDllVariable const struct RTILogMessage
RTI_CLOCK_LOG_GET_TIME_OVERHEAD_FAILURE;
/** @internal \ingroup RTIClockLogClass
* @brief RTIClock_getSpinPerMicrosecond() fail.
*/
extern RTIClockDllVariable const struct RTILogMessage
RTI_CLOCK_LOG_GET_SPIN_PER_MICROSECOND_FAILURE;
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* clock_log_h */