1.2.5.1 How the Library Works

The Debug System Service provides APIs for the application developer to send formatted or unformatted messages to a system console.

Abstraction Model

sys_debug_abstraction_model

The console core layer_provides a POSIX-like read/write API to applications and middleware libraries to send and receive data to and from the console device.

Data and message buffering, along with the details of the data transfer are contained within the console device and peripheral library (PLIB) layers

Working Flow

Debug Messages and Error Reporting

The following macros are available to output debug and error messages. The default implementation of these macros resolves to nothing by the preprocessor. This is to allow the developer to leave debug messaging in the released code without impacting code size or performance. Typically, the developer would define SYS_DEBUG_USE_CONSOLE macro through MHC configuration for debug builds, to map these macros to appropriate debug service implementation.

  • SYS_DEBUG_MESSAGE(level, message) prints a debug message to the console device if the global error level is equal to or lower than that specified by the "level" argument

  • SYS_DEBUG_PRINT(level, fmt, ...) prints formatted messages to the console if the global error level is equal to or lower than that specified by the "level" argument. The message formatting is the same as printf

Changing the System Error Level

Two functions are provided to manipulate the global system error level at runtime. This may be useful when you want to increase the debug verbosity for a particular section of code, but not for the entire program

  • SYS_DEBUG_ErrorLevelGet() returns the current global system error level

  • SYS_DEBUG_ErrorLevelSet(level) sets the current global system error level