hsw-nbt 1.2.0
OPTIGA Authenticate NBT Host Library for C
Data Fields | Related Symbols
ifx_logger_t Struct Reference

Generic Logger object used to decapsulate concrete implementation from interface. More...

#include <infineon/ifx-logger.h>

Data Fields

ifx_logger_log_callback_t _log
 Private logging function for concrete implementation.
 
ifx_logger_set_level_callback_t _set_level
 Private function to set log level.
 
ifx_logger_destroy_callback_t _destructor
 Private destructor if further cleanup is necessary.
 
ifx_log_level _level
 Private member for minimum log level used for filtering messages.
 
void * _data
 Private member for generic logger data as void*.
 

Related Symbols

(Note that these are not member symbols.)

ifx_status_t ifx_apdu_protocol_log (const ifx_logger_t *logger, const char *source, ifx_log_level level, const char *msg, const ifx_apdu_t *apdu)
 Extension of ifx_logger_log() for logging APDU objects.
 
ifx_status_t ifx_apdu_protocol_log_response (const ifx_logger_t *logger, const char *source, ifx_log_level level, const char *msg, const ifx_apdu_response_t *response)
 Extension of ifx_logger_log() for logging APDU response objects.
 
ifx_status_t ifx_logger_initialize (ifx_logger_t *self)
 Initializes Logger object by setting all members to valid (but potentially unusable) values.
 
ifx_status_t ifx_logger_log (const ifx_logger_t *self, const char *source, ifx_log_level level, const char *formatter,...)
 Log formatted message.
 
ifx_status_t ifx_logger_log_bytes (const ifx_logger_t *self, const char *source, ifx_log_level level, const char *msg, const uint8_t *data, size_t data_len, const char *delimiter)
 Extension of ifx_logger_log() for logging byte arrays.
 
ifx_status_t ifx_logger_set_level (ifx_logger_t *self, ifx_log_level level)
 All messages with level lower than level shall be discarded by the logger.
 
void ifx_logger_destroy (ifx_logger_t *self)
 Frees memory associated with Logger object (but not object itself).
 
void ifx_logger_set_default (ifx_logger_t *logger)
 Sets default Logger to be used.
 

Detailed Description

Generic Logger object used to decapsulate concrete implementation from interface.

Definition at line 248 of file ifx-logger.h.

Friends And Related Symbol Documentation

◆ ifx_apdu_protocol_log()

ifx_status_t ifx_apdu_protocol_log ( const ifx_logger_t * logger,
const char * source,
ifx_log_level level,
const char * msg,
const ifx_apdu_t * apdu )
related

Extension of ifx_logger_log() for logging APDU objects.

ifx_apdu_t apdu = {
.cla = 0x00u,
.ins = 0xA4u
.p1 = 0x04u,
.p2 = 0x00u
};
ifx_apdu_protocol_log(&logger, TAG, IFX_LOG_INFO, "Sending: ", &apdu);
// Sending: 00 A4 04 00
@ IFX_LOG_INFO
Information that help trace the program's normal execution flow.
Definition ifx-logger.h:67
Data storage for APDU fields.
Definition ifx-apdu.h:89
uint8_t cla
APDU instruction class.
Definition ifx-apdu.h:93
ifx_status_t ifx_apdu_protocol_log(const ifx_logger_t *logger, const char *source, ifx_log_level level, const char *msg, const ifx_apdu_t *apdu)
Extension of ifx_logger_log() for logging APDU objects.
Parameters
[in]loggerLogger object holding concrete implementation.
[in]sourceString with information where the log originated from.
[in]levelifx_log_level of message (used for filtering).
[in]msgOptional message to be prepended to APDU (might be NULL ).
[in]apduAPDU to be logged.
Returns
ifx_status_t IFX_SUCCESS if successful, any other value in case of error.

◆ ifx_apdu_protocol_log_response()

ifx_status_t ifx_apdu_protocol_log_response ( const ifx_logger_t * logger,
const char * source,
ifx_log_level level,
const char * msg,
const ifx_apdu_response_t * response )
related

Extension of ifx_logger_log() for logging APDU response objects.

ifx_apdu_response_t response = {
.sw = 0x9000u
};
ifx_apdu_protocol_log_response(&logger, TAG, IFX_LOG_INFO, "Received: ",
&response);
// Received: 90 00
Data storage struct for APDU response information.
Definition ifx-apdu.h:130
uint16_t sw
APDU response status word.
Definition ifx-apdu.h:144
ifx_status_t ifx_apdu_protocol_log_response(const ifx_logger_t *logger, const char *source, ifx_log_level level, const char *msg, const ifx_apdu_response_t *response)
Extension of ifx_logger_log() for logging APDU response objects.
Parameters
[in]loggerLogger object holding concrete implementation.
[in]sourceString with information where the log originated from.
[in]levelifx_log_level of message (used for filtering).
[in]msgOptional message to be prepended to APDU response (might be NULL ).
[in]responseifx_apdu_response_t to be logged.
Returns
ifx_status_t IFX_SUCCESS if successful, any other value in case of error.

◆ ifx_logger_destroy()

void ifx_logger_destroy ( ifx_logger_t * self)
related

Frees memory associated with Logger object (but not object itself).

Logger objects might contain data that needs to be released (e.g. open file handles). Users would need to know the concrete type based on the used implementation. This would negate all benefits of having a generic interface. Calling this function will ensure that all dynamically allocated members have been freed.

Parameters
[in]selfLogger object whose data shall be freed.

◆ ifx_logger_initialize()

ifx_status_t ifx_logger_initialize ( ifx_logger_t * self)
related

Initializes Logger object by setting all members to valid (but potentially unusable) values.

Concrete implementations can call this function to ensure all members are set to their correct default values before populating the required fields.

Parameters
[in]selfLogger object to be initialized.
Returns
ifx_status_t IFX_SUCCESS if successful, any other value in case of error.

◆ ifx_logger_log()

ifx_status_t ifx_logger_log ( const ifx_logger_t * self,
const char * source,
ifx_log_level level,
const char * formatter,
... )
related

Log formatted message.

Uses printf syntax for message formatting.

"example",
"The answer to life, the universe, and everything is: %d",
42)
ifx_status_t ifx_logger_log(const ifx_logger_t *self, const char *source, ifx_log_level level, const char *formatter,...)
Log formatted message.
Parameters
[in]selfLogger object holding concrete implementation. Use ifx_logger_default to use default logger set via ifx_logger_set_default().
[in]sourceString with information where the log originated from.
[in]levelifx_log_level of message (used for filtering).
[in]formatterFormat string (printf syntax).
[in]...String format arguments (printf syntax).
Returns
ifx_status_t IFX_SUCCESS if successful, any other value in case of error.

◆ ifx_logger_log_bytes()

ifx_status_t ifx_logger_log_bytes ( const ifx_logger_t * self,
const char * source,
ifx_log_level level,
const char * msg,
const uint8_t * data,
size_t data_len,
const char * delimiter )
related

Extension of ifx_logger_log() for logging byte arrays.

uint8_t data[] = {0x01u, 0x02u, 0x03u, 0x04u};
size_t data_len = sizeof(data);
ifx_logger_log_bytes(&logger, TAG, IFX_LOG_INFO, ">> ", data, data_len, "
");
// >> 01 02 03 04
ifx_status_t ifx_logger_log_bytes(const ifx_logger_t *self, const char *source, ifx_log_level level, const char *msg, const uint8_t *data, size_t data_len, const char *delimiter)
Extension of ifx_logger_log() for logging byte arrays.
Parameters
[in]selfLogger object holding concrete implementation. Use ifx_logger_default to use default logger set via ifx_logger_set_default().
[in]sourceString with information where the log originated from.
[in]levelifx_log_level of message (used for filtering).
[in]msgOptional message to be prepended to byte array (might be NULL).
[in]dataData to be logged.
[in]data_lenNumber of bytes in data.
[in]delimiterDelimiter to be used between bytes (might be NULL for empty string).
Returns
ifx_status_t IFX_SUCCESS if successful, any other value in case of error.

◆ ifx_logger_set_default()

void ifx_logger_set_default ( ifx_logger_t * logger)
related

Sets default Logger to be used.

Libraries that cannot keep track of the desired logger themselves can call ifx_logger_log() (or any variation thereof) with the logger parameter set to ifx_logger_default to use the Logger given to this function.

Parameters
[in]loggerDefault logger instance to be used.

◆ ifx_logger_set_level()

ifx_status_t ifx_logger_set_level ( ifx_logger_t * self,
ifx_log_level level )
related

All messages with level lower than level shall be discarded by the logger.

Parameters
[in]selfLogger object to set log level for.
[in]levelMinimum log level of interest.
Returns
ifx_status_t IFX_SUCCESS if successful, any other value in case of error.

Field Documentation

◆ _data

void* ifx_logger_t::_data

Private member for generic logger data as void*.

Only used internally, do NOT set manually. Might be NULL.

Definition at line 292 of file ifx-logger.h.

◆ _destructor

ifx_logger_destroy_callback_t ifx_logger_t::_destructor

Private destructor if further cleanup is necessary.

Set by implementation's initialization function, do NOT set manually. ifx_logger_destroy(ifx_logger_t*) will call free() for Logger._data . If any further cleanup is necessary implement it in this function. Otherwise use NULL.

Definition at line 277 of file ifx-logger.h.

◆ _level

ifx_log_level ifx_logger_t::_level

Private member for minimum log level used for filtering messages.

Set by ifx_logger_set_level(ifx_logger_t*, ifx_log_level), do NOT set manually.

Definition at line 285 of file ifx-logger.h.

◆ _log

ifx_logger_log_callback_t ifx_logger_t::_log

Private logging function for concrete implementation.

Set by implementation's initialization function, do NOT set manually!

Definition at line 256 of file ifx-logger.h.

◆ _set_level

ifx_logger_set_level_callback_t ifx_logger_t::_set_level

Private function to set log level.

Set by implementation's initialization function, do NOT set manually. By default ifx_logger_set_level() will simply update Logger._level. If further logic is required implementations can set this function to a more complex setter. If no custom setter is required use NULL.

Definition at line 267 of file ifx-logger.h.


The documentation for this struct was generated from the following files: