F´ Flight Software - C/C++ Documentation
A framework for building embedded system applications to NASA flight quality standards.
RawTime.hpp
Go to the documentation of this file.
1 // ======================================================================
2 // \title Os/RawTime.hpp
3 // \brief public Os::RawTime interface and alias
4 //
5 // This header aggregates all definitions needed to use Os::RawTime:
6 // the interface, the configured alias, and the concrete delegate type.
7 //
8 // WARNING — include order is load-bearing. Do not reorder.
9 //
10 // The dependency constraints are:
11 //
12 // 1. config/OsDelegateRawTime.hpp (CFG) defines the Os::RawTime type alias by
13 // forward-declaring a link-time delegate (e.g. DelegateRawTime) or directly
14 // aliasing a concrete implementation (e.g. Va416x0Os::TimerRawTime).
15 // Must not include Os OSAL headers (they aren't yet defined).
16 // Should only be included in Os/RawTimeInterface.hpp.
17 //
18 // 2. Os/RawTimeInterface.hpp (IF) needs the Os::RawTime alias in its
19 // method signatures, so it includes CFG first. It then defines
20 // RawTimeHandle and RawTimeInterface.
21 //
22 // 3. OS_RAW_TIME_HEADER (IMPL) is defined by CFG and points to the concrete
23 // implementation header. If using delegation, this points to
24 // Os/DelegateRawTime.hpp. If using compile-time selection, it points
25 // directly to a platform-specific implementation (e.g. TimerRawTime.hpp).
26 //
27 // RawTimeInterface.hpp must precede OS_RAW_TIME_HEADER here,
28 // and CFG must never include either of them (that would form a cycle).
29 // ======================================================================
30 #ifndef OS_RAWTIME_HPP_
31 #define OS_RAWTIME_HPP_
32 
33 #include "Os/RawTimeInterface.hpp"
34 
35 // Validate that OS_RAW_TIME_HEADER was defined by config/OsDelegateRawTime.hpp
36 #ifndef OS_RAW_TIME_HEADER
37 #error "OS_RAW_TIME_HEADER must be defined in config/OsDelegateRawTime.hpp"
38 #endif
39 
40 #include OS_RAW_TIME_HEADER
41 
42 #endif // OS_RAWTIME_HPP_