The F′ framework uses asserts to perform run-time checks for software errors. They are a method for verifying conditions that should be true unless there is a software or processor error. Assert.hpp defines macros to declare an assertion in C++ code. CAssert.hpp defines macros to declare an assertion in C code.
The definition for the framework assert is found in Fw/Types/Assert.hpp.
The user calls the FW_ASSERT(cond, arg1, ...)
macro with up to six arguments. The
arguments can consist of any basic types shown below.
-
I8 8-bit signed integer
-
U8 8-bit unsigned integer
-
I16 16-bit signed integer
-
U16 16-bit unsigned integer
-
I32 32-bit signed integer
-
U32 32-bit unsigned integer
-
F32 32-bit IEEE floating point number (float)
-
F64 64-bit floating point number (double)
-
I64 64-bit signed integer
-
U64 64-bit unsigned integer
-
bool C++ Boolean type
These types are used in XML specifications. Note that not all types are available on all processor architectures. The types that are available is a configurable feature of the architecture and is typically set by compiler arguments.
The assert can be configured in the following ways:
-
FW_ASSERT_LEVEL Sets the level or reporting for the asserts.
-
FW_NO_ASSERT Shows the asserts turned off. The code to check the condition is not compiled. Some developers prefer this once the code has been tested to regain some processing performance.
-
FW_FILEID_ASSERT Identifies an integer value for the file where the assert occurs (as opposed to __FILE__). It saves code space since no file name is stored.
-
FW_FILENAME_ASSERT Identifies which file the assert occurred in. (The __FILE__ macro is used.)
-
-
FW_ASSERT_TEXT_SIZE Identifies the size of the buffer used to store the text of the assert.
By default, when FW_ASSERT is called the framework prints a message (location of and arguments to the macro), and then calls the C assert() function. The framework also provides a function that allows the registration of a user-defined handler. The handler is registerAssertHook and can be found in FwAssert.hpp. The assert hook is called with a string representing the text of the assert. The user implements a derived class that implements the reportAssert() pure virtual method, and does whatever project-specific logic is required.
When formatting an assert message use the default message line hash or name, and argument approach.
When outputting the assert message use the default Fw::Logger. Force the Fw::Logger default to printf for systems with print f.
Actually asserts (action of assert).