module xdc.runtime.LoggerCallback

A logger that passes events to a user supplied callback function

C synopsis target-domain sourced in xdc/runtime/LoggerCallback.xdc
#include <xdc/runtime/LoggerCallback.h>
Functions
Void
UArg 
LoggerCallback_defaultCreate// Default create function (always returns 0)(UArg); // linked as extern xdc_runtime_LoggerCallback_defaultCreate
Void 
LoggerCallback_defaultOutput// Default output function (always does nothing)(UArg,Log_EventRec*,Int); // linked as extern xdc_runtime_LoggerCallback_defaultOutput
Void
Void
Void
Functions common to all ILogger modules
Bool 
Bool 
Void 
Void 
Void 
Void 
Void 
LoggerCallback_write8// Process a log event with up to 8 arguments(LoggerCallback_Handle handle, Log_Event evt, Types_ModuleId mid, IArg a1, IArg a2, IArg a3, IArg a4, IArg a5, IArg a6, IArg a7, IArg a8);
Functions common to all target instances
Functions common to all target modules
Typedefs
typedef UArg 
typedef struct
typedef Void 
typedef struct
typedef struct
Constants
 
EXAMPLES
Configuration example: The following XDC configuration statements create a logger instance, plug in the user defined functions, assign it as the default logger for all modules, and enable USER1 logging in all modules of the package my.pkg. See the Diags.setMaskMeta() function for details on specifying the module names.
  var Defaults = xdc.useModule('xdc.runtime.Defaults');
  var Diags = xdc.useModule('xdc.runtime.Diags');
  var LoggerCallback = xdc.useModule('xdc.runtime.LoggerCallback');
  LoggerCallback.outputFxn = "&userOutputFunc";
  LoggerCallback.createInstFxn = "&userCreateInstFunc";

  var loggerParams = new Logger.Params();
  loggerParams.arg = 1;
  Defaults.common$.logger = LoggerCallback.create(loggerParams);
  Diags.setMaskMeta("my.pkg.%", Diags.USER1, Diags.RUNTIME_ON);
 
typedef LoggerCallback_CreateInstFxn

Logger instance create callback function signature

C synopsis target-domain
typedef UArg (*LoggerCallback_CreateInstFxn)(UArg);
 
DETAILS
LoggerCallback.arg is passed as an argument to this function. The return value from this function will be passed as an argument to the outputFxn. In case of multiple LoggerCallback instances, the return value can be used in outputFxn` to differentiate among the instances.
 
typedef LoggerCallback_OutputFxn

Character output callback function signature

C synopsis target-domain
typedef Void (*LoggerCallback_OutputFxn)(UArg,Log_EventRec*,Int);
 
DETAILS
The first argument is the parameter returned by the call to createInstFxn. The second argument is a pointer to Log.EventRec record. The third argument is the number of arguments inLog.EventRec
Note: Only evt and arg fields in Log_EventRec record are filled and passed to the user supplied function.
 
config LoggerCallback_createInstFxn  // module-wide

User supplied logger instance create function

C synopsis target-domain
extern const LoggerCallback_CreateInstFxn LoggerCallback_createInstFxn;
 
DETAILS
This function is called when the LoggerCallback.create is called.
By default, this function is configured with a default create function. The default create function always returns 0.
 
config LoggerCallback_outputFxn  // module-wide

User supplied character callback function

C synopsis target-domain
extern const LoggerCallback_OutputFxn LoggerCallback_outputFxn;
 
DETAILS
This function is called when the Log module needs to output an event. e.g. Log.write4() or Log.print2()
By default, this function is configured with a default output function. The default function does nothing and returns.
 
extern LoggerCallback_defaultCreate

Default create function (always returns 0)

C synopsis target-domain
UArg LoggerCallback_defaultCreate(UArg); // linked as extern xdc_runtime_LoggerCallback_defaultCreate
 
 
extern LoggerCallback_defaultOutput

Default output function (always does nothing)

C synopsis target-domain
Void LoggerCallback_defaultOutput(UArg,Log_EventRec*,Int); // linked as extern xdc_runtime_LoggerCallback_defaultOutput
 
Module-Wide Built-Ins

C synopsis target-domain
Types_ModuleId LoggerCallback_Module_id();
// Get this module's unique id
 
Bool LoggerCallback_Module_startupDone();
// Test if this module has completed startup
 
IHeap_Handle LoggerCallback_Module_heap();
// The heap from which this module allocates memory
 
Bool LoggerCallback_Module_hasMask();
// Test whether this module has a diagnostics mask
 
Bits16 LoggerCallback_Module_getMask();
// Returns the diagnostics mask for this module
 
Void LoggerCallback_Module_setMask(Bits16 mask);
// Set the diagnostics mask for this module
Instance Object Types

C synopsis target-domain
typedef struct LoggerCallback_Object LoggerCallback_Object;
// Opaque internal representation of an instance object
 
typedef LoggerCallback_Object *LoggerCallback_Handle;
// Client reference to an instance object
 
typedef struct LoggerCallback_Struct LoggerCallback_Struct;
// Opaque client structure large enough to hold an instance object
 
LoggerCallback_Handle LoggerCallback_handle(LoggerCallback_Struct *structP);
// Convert this instance structure pointer into an instance handle
 
LoggerCallback_Struct *LoggerCallback_struct(LoggerCallback_Handle handle);
// Convert this instance handle into an instance structure pointer
Instance Config Parameters

C synopsis target-domain
typedef struct LoggerCallback_Params {
// Instance config-params structure
    IInstance_Params *instance;
    // Common per-instance configs
    UArg arg;
    // User supplied argument for the user supplied create function
} LoggerCallback_Params;
 
Void LoggerCallback_Params_init(LoggerCallback_Params *params);
// Initialize this config-params structure with supplier-specified defaults before instance creation
 
config LoggerCallback_Params.arg  // instance

User supplied argument for the user supplied create function

C synopsis target-domain
      ...
    UArg arg;
 
DETAILS
This user supplied argument will be passed back as an argument to the createInstFxn function. It can be used by the LoggerCallback.createInstFxn function at runtime to differentiate between the multiple logger instances configured in the user config script.
The user can skip configuring this argument. In such a case, the default value 0 will be passed back as an argument to the createInstFxn function.
Runtime Instance Creation

C synopsis target-domain
LoggerCallback_Handle LoggerCallback_create(const LoggerCallback_Params *params, Error_Block *eb);
// Allocate and initialize a new instance object and return its handle
 
Void LoggerCallback_construct(LoggerCallback_Struct *structP, const LoggerCallback_Params *params);
// Initialize a new instance object inside the provided structure
ARGUMENTS
params — per-instance config params, or NULL to select default values (target-domain only)
eb — active error-handling block, or NULL to select default policy (target-domain only)
Instance Deletion

C synopsis target-domain
Void LoggerCallback_delete(LoggerCallback_Handle *handleP);
// Finalize and free this previously allocated instance object, setting the referenced handle to NULL
 
Void LoggerCallback_destruct(LoggerCallback_Struct *structP);
// Finalize the instance object inside the provided structure
 
LoggerCallback_disable()  // instance

Disable a log

C synopsis target-domain
Bool LoggerCallback_disable(LoggerCallback_Handle handle);
 
ARGUMENTS
handle — handle of a previously-created LoggerCallback instance object
DETAILS
Events written to a disabled log are silently discarded.
RETURNS
The function returns the state of the log (TRUE if enabled, FALSE if disabled) before the call. This return value allows clients to restore the previous state. Note: not thread safe.
 
LoggerCallback_enable()  // instance

Enable a log

C synopsis target-domain
Bool LoggerCallback_enable(LoggerCallback_Handle handle);
 
ARGUMENTS
handle — handle of a previously-created LoggerCallback instance object
RETURNS
The function returns the state of the log (TRUE if enabled, FALSE if disabled) before the call. This return value allows clients to restore the previous state. Note: not thread safe.
 
LoggerCallback_write0()  // instance

Process a log event with 0 arguments

C synopsis target-domain
Void LoggerCallback_write0(LoggerCallback_Handle handle, Log_Event evt, Types_ModuleId mid);
 
ARGUMENTS
handle — handle of a previously-created LoggerCallback instance object
DETAILS
Same as write4 except with 0 arguments rather than 4.
SEE
 
LoggerCallback_write1()  // instance

Process a log event with 1 arguments

C synopsis target-domain
Void LoggerCallback_write1(LoggerCallback_Handle handle, Log_Event evt, Types_ModuleId mid, IArg a1);
 
ARGUMENTS
handle — handle of a previously-created LoggerCallback instance object
DETAILS
Same as write4 except with 1 arguments rather than 4.
SEE
 
LoggerCallback_write2()  // instance

Process a log event with 2 arguments

C synopsis target-domain
Void LoggerCallback_write2(LoggerCallback_Handle handle, Log_Event evt, Types_ModuleId mid, IArg a1, IArg a2);
 
ARGUMENTS
handle — handle of a previously-created LoggerCallback instance object
DETAILS
Same as write4 except with 2 arguments rather than 4.
SEE
 
LoggerCallback_write4()  // instance

Process a log event with up to 4 arguments

C synopsis target-domain
Void LoggerCallback_write4(LoggerCallback_Handle handle, Log_Event evt, Types_ModuleId mid, IArg a1, IArg a2, IArg a3, IArg a4);
 
ARGUMENTS
handle — handle of a previously-created LoggerCallback instance object
evt — event to be logged
mid — module ID of the module which logged the event
a1 — arbitrary argument passed by caller
DETAILS
The evt argument is of type Log.Event, which encodes the Log.EventId, the Diags.Mask, and the Diags.EventLevel of the event. The event ID can be obtained via Types.getEventId(evt), the Diags mask can be obtained via Diags.getMask(evt), and the event level can be obtained via Diags.getLevel(evt).
The modId argument is the module ID of the module that logged the event.
The event information can be used by the logger to handle different events specially. For example, the event ID can be used to compare against other known Log.Events.
      if (Log_getEventId(MY_EVENT) == Log_getEventId(evt)) {
          :
      }
The Diags mask and event level can be used for filtering of events based on event level (see IFilterLogger), or even routing events to separate loggers based on diags category (see, for example, LoggerBuf.statusLogger).
The Diags mask and event level are useful for handling the event, but are generally not recorded by the logger because they are not needed in decoding and displaying the event. A more suitable value to record is a Types.Event, which encodes the event ID and module ID. For example, the Log.EventRec type stores a Types.Event in its record definition. A Types.Event can be created using the Types.makeEvent API given the event ID and module ID.
The event ID value of 0 is used to indicate an event triggered by a call to one of the Log_print[0-6] methods. These methods take a format string rather than a Log_Event argument and, as a result, the event ID encoded in evt is 0 and the parameter a1 is the format string.
Non-zero event IDs can also be used to access the msg string associated with the Log.EventDesc that originally defined the Log event.
      Log_EventId id = Log_getEventId(evt));
      if (id != 0) {
          String msg = Text_ropeText(id);
          System_aprintf(msg, a1, a2, a3, a4);
      }
This works because an event's ID is simply an offset into a table of characters (maintained by the Text module) containing the event's msg string.
The arguments a1, a2, etc. are parameters that are to be interpreted according to the message format string associated with evt.
SEE
 
LoggerCallback_write8()  // instance

Process a log event with up to 8 arguments

C synopsis target-domain
Void LoggerCallback_write8(LoggerCallback_Handle handle, Log_Event evt, Types_ModuleId mid, IArg a1, IArg a2, IArg a3, IArg a4, IArg a5, IArg a6, IArg a7, IArg a8);
 
ARGUMENTS
handle — handle of a previously-created LoggerCallback instance object
DETAILS
Same as write4 except with 8 arguments rather than 4.
SEE
Instance Convertors

C synopsis target-domain
ILogger_Handle LoggerCallback_Handle_upCast(LoggerCallback_Handle handle);
// unconditionally move one level up the inheritance hierarchy
 
LoggerCallback_Handle LoggerCallback_Handle_downCast(ILogger_Handle handle);
// conditionally move one level down the inheritance hierarchy; NULL upon failure
Instance Built-Ins

C synopsis target-domain
Int LoggerCallback_Object_count();
// The number of statically-created instance objects
 
LoggerCallback_Handle LoggerCallback_Object_get(LoggerCallback_Object *array, Int i);
// The handle of the i-th statically-created instance object (array == NULL)
 
LoggerCallback_Handle LoggerCallback_Object_first();
// The handle of the first dynamically-created instance object, or NULL
 
LoggerCallback_Handle LoggerCallback_Object_next(LoggerCallback_Handle handle);
// The handle of the next dynamically-created instance object, or NULL
 
IHeap_Handle LoggerCallback_Object_heap();
// The heap used to allocate dynamically-created instance objects
 
Types_Label *LoggerCallback_Handle_label(LoggerCallback_Handle handle, Types_Label *buf);
// The label associated with this instance object
 
String LoggerCallback_Handle_name(LoggerCallback_Handle handle);
// The name of this instance object
 
Configuration settings sourced in xdc/runtime/LoggerCallback.xdc
var LoggerCallback = xdc.useModule('xdc.runtime.LoggerCallback');
module-wide config parameters
    LoggerCallback.createInstFxn// User supplied logger instance create function = UArg(*)(UArg) "&xdc_runtime_LoggerCallback_defaultCreate";
    LoggerCallback.outputFxn// User supplied character callback function = Void(*)(UArg,Log.EventRec*,Int) "&xdc_runtime_LoggerCallback_defaultOutput";
 
module-wide functions
per-instance config parameters
    var params = new LoggerCallback.Params// Instance config-params object;
per-instance creation
    var inst = LoggerCallback.create// Create an instance-object(params);
 
 
config LoggerCallback.createInstFxn  // module-wide

User supplied logger instance create function

Configuration settings
LoggerCallback.createInstFxn = UArg(*)(UArg) "&xdc_runtime_LoggerCallback_defaultCreate";
 
DETAILS
This function is called when the LoggerCallback.create is called.
By default, this function is configured with a default create function. The default create function always returns 0.
C SYNOPSIS
 
config LoggerCallback.outputFxn  // module-wide

User supplied character callback function

Configuration settings
LoggerCallback.outputFxn = Void(*)(UArg,Log.EventRec*,Int) "&xdc_runtime_LoggerCallback_defaultOutput";
 
DETAILS
This function is called when the Log module needs to output an event. e.g. Log.write4() or Log.print2()
By default, this function is configured with a default output function. The default function does nothing and returns.
C SYNOPSIS
 
metaonly config LoggerCallback.common$  // module-wide

Common module configuration parameters

Configuration settings
LoggerCallback.common$ = Types.Common$ undefined;
 
DETAILS
All modules have this configuration parameter. Its name contains the '$' character to ensure it does not conflict with configuration parameters declared by the module. This allows new configuration parameters to be added in the future without any chance of breaking existing modules.
 
metaonly LoggerCallback.getMetaArgs()  // module-wide

Returns any meta data needed to support RTA

Configuration settings
LoggerCallback.getMetaArgs(Any inst, Any instNum) returns Any
 
DETAILS
This meta data should be returned in the form of a structure which can be converted into XML. This data is added to the RTA XML file during the application's configuration, and can be accessed later through the xdc.rta.MetaData module.
The MetaData is returned per instance of the ILogger module. The instance object is passed to the function as the first argument.
The second argument is the index of the instance in the list of the ILogger's static instances.
Instance Config Parameters

Configuration settings
var params = new LoggerCallback.Params;
// Instance config-params object
    params.arg = UArg 0;
    // User supplied argument for the user supplied create function
 
config LoggerCallback.Params.arg  // instance

User supplied argument for the user supplied create function

Configuration settings
var params = new LoggerCallback.Params;
  ...
params.arg = UArg 0;
 
DETAILS
This user supplied argument will be passed back as an argument to the createInstFxn function. It can be used by the LoggerCallback.createInstFxn function at runtime to differentiate between the multiple logger instances configured in the user config script.
The user can skip configuring this argument. In such a case, the default value 0 will be passed back as an argument to the createInstFxn function.
C SYNOPSIS
Static Instance Creation

Configuration settings
var params = new LoggerCallback.Params;
// Allocate instance config-params
params.config =   ...
// Assign individual configs
 
var inst = LoggerCallback.create(params);
// Create an instance-object
ARGUMENTS
params — per-instance config params, or NULL to select default values (target-domain only)
eb — active error-handling block, or NULL to select default policy (target-domain only)
generated on Thu, 25 May 2017 22:12:14 GMT