appCORE SDK
The appCORE SDK consists of the following major sections.
Section 1 - core*() Functions
Functions in the core* section are used to configure appCORE features and
initialize and de-initialize appCORE. Configuration is handled by the Specification
Data Type (SDT) coreSPEC_t or via a configuration file.
Section 2 - coreApp*() Functions
Functions in the coreApp* section are related to the the user's application. Functions are
provided to start and stop the application, and to dispatch or forward messages to the
application's main Serial Dispatch Queue. In the normal appCORE process, the main thread
is parked waiting for the application thread to exit. The coreAppWaitOnStop() function is
used for this. This function provides a local command console if enabled.
Section 3 - coreThread*() Functions
Functions in the coreThead* section are used to manage threads in an appCORE system.
Functions are provided to start and stop threads, join with threads, dispatch or forward messages
to a thread's Serial Dispatch Queue, and to allow an external thread to attach and detach
to the appCORE framework. Network sockets may be added and removed from a thread that has
been created with Input/Output handler functions.
Section 4 - coreMulticore*() Functions
The coreMulticore* functions are used to start and stop a multicore processing element,
and dispatch or forward application messages to a multicore processing element. The multicore
processing element extends the standard appCORE thread configuration to include a Message-To-Processor
Core router function. The Multicore element allows messages to be routed to specific cores if required.
Section 5 - coreMsg*() Functions
The message functions are used to manipulate appCORE messages. Functions are available to create,
duplicate, free, and broadcast messages, to set and clear message flags, and to transmit and receive
messages over sockets.
Section 6 - coreTimer*() Functions
appCORE timers are message based and use Thread Specific Callback (TSC) functions.
Functions are available to start and cancel timers. Timers can be canceled at any time.
Section 7 - core[Request|Response]*() Functions
The request/response function pairs provide the mechanism to dispatch a message to a Serial Dispatch
Queue thread and wait for the response. The response can either be a status value (unsigned int) or an
appCORE message. This powerful facility allows the creation of process wide server threads.
Section 8 - coreLog*() Functions
appCORE has event reporting for normal operations and extensive thread aware logging and trace support
for debugging. There is a single function, coreSyslog() for event reporting. How coreSyslog() operates is
configured via the coreSPEC_t SDT passed to the coreInit() function. The remaining functions
are concerned with debug tracing and the control of trace zones and levels.
Section 9 - coreConfig*() Functions
The configuration interface is used to access the file based parameters. The name of the configuration
file is configured via the coreSPEC_t SDT passed to the coreInit() function. The configuration operates
on Name-Value pairs. The configuration file is a simple text file.
Section 10 - coreNet*() Functions
appCORE's networking subsystem implements a complete client server and communications architecture. This
subsystem utilizes appCORE's Thread Specific Callbacks (TSC) to enable user code to avoid any threading
or network socket issues. Functions are provided to configure appCORE to listen for and accept incoming
connections, initiate outbound connections and exchange data with optional flow control.
Section 11 - coreMap*() Functions
appCORE provides an implementation of a map. This is the same map internal appCORE uses and it makes use of the
Small Container Library (SCL-1.0.2) by Douglas Jerome.