Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Using 'make log' to enable logging

This GOAL core module provides functions to output data via an output channel like UART or Ethernet. The data can be divided into the following categories, named logging levels:

  • error messages

  • warning messages

  • information messages

  • debug messages

For each logging level this module provides an output function:

Table: Logging level output functions

Logging level

Output function

Error

goal_logErr()

Warning

goal_logWarn()

Information

goal_logInfo()

Debug

goal_logDbg()


The escape sequences \n and \r are filtered out from the before being send out through the channel.
The output channel is configured by the compiler-defines GOAL_CONFIG_LOGGING_TARET_RAW and GOAL_CONFIG_LOGGING_TARGET_SYSLOG.
GOAL provides generic format descriptors to output data to make printf-like format specifiers portable compared to the architecture and compilers. The GOAL format descriptors are initialized architecture-specific in …\goal\plat\arch\common\goal_arch_common.h. The following format descriptors are available: FMT_d32, FMT_i32, FMT_u32, FMT_x32, FMT_d64, FMT_i64, FMT_u64, FMT_x64, FMT_size_t, FMT_ptr and FMT_ptrdiff. FMT_ptr represents a pointer address. FMT_ptrdiff represents a difference of two pointer addresses.


Example: The actual position value of data type int32_t shall be printed as information:

Code Block
languagec
goal_logInfo("actual position: "FMT_i32" inc", (int32_t) actPosVal); 


The logging functionality is available after the state GOAL_FSA_INIT_GOAL.
It is recommended only to enable logging during development as it can have a serious impact on the runtime behavior.

  • GOAL files:

    • goal_log.[h,c]

  • example:

    • …\goal\appl\task_lock

Configuration

You can activate the logging by typing make log in the corresponding project directory. The project can then be build using make or make gen_project.

Code Block
languagebash
user:~/goal$ cd projects/goal_eip/opener/01_simple_io/gcc
user:~/goal/projects/goal_eip/opener/01_simple_io/gcc$ make log
logging to target raw enabled

The command will add the compiler-defines below to the goal_config.h.

Code Block
languagebash
#define GOAL_CONFIG_LOGGING 1
#define GOAL_CONFIG_LOGGING_TARGET_RAW 1

The following compiler-defines are available to configure the logging:

  • GOAL_CONFIG_LOGGING:

    • 0: logging is switched off for the complete GOAL system (default)

    • 1: logging is switched on and the logging can be used by other GOAL components

  • GOAL_CONFIG_LOGGING_TARGET_RAW:

    • 0: no board-specific output channel is available (default)

    • 1: the board-specific output channel is used, most likely UART

      • The board-specific function goal_targetMsgRaw() must be available.

      • GOAL_CONFIG_LOGGING_TARGET_RAW_INSTANT (in addition to GOAL_CONFIG_LOGGING_TARGET_RAW)

        • 0: log messages are stored in a ring buffer
          (+ small influence on realtime behavior of the device)
          (- messages might be dropped)
          (- if device crashes, last messages will not be printed)

        • 1: log messages are directly printed via goal_targetMsgRaw()
          (- big influence on realtime behavior of the device)
          (+ no messages are lost, because they are immediately printed)
          (+ messages are printed right after they have been created)

  • GOAL_CONFIG_LOGGING_TARGET_SYSLOG:

    • 0: no output via a Ethernet channel (default)

    • 1: output via the Ethernet channel as broadcast Ethernet frame, e.g. to indicate the frame by Wireshark

Platform API

Table: goal_targetMsgRaw()

Prototype

void goal_targetMsgRaw(const char *str, unsigned int len)

Description

This indication function transmits a raw message.

Parameters


Str

raw message

Len

length of the raw message in bytes

Return values

None

Category

Optional

Condition

compiler-define GOAL_CONFIG_LOGGING_TARGET_RAW must be set to 1

Table of Contents
code