ContextLogger2 Codebase Contents

Thu Apr 28 02:26:26 2011

1. Source Code Components

1.1. cxx-cl2-cli-lib/

A Symbian C++ client library for locally controlling the logger process.

This component is entirely Symbian-specific, and presently only Symbian builds of the logger program have a local control interface, implemented based on the Symbian client-server framework.

1.2. daemon/

The logger program.

Can be built both for Symbian and Linux, but the Linux variant has somewhat less functionality. At present support for Linux builds really only exists to allow for some of the functionality to be tested on the PC rather than on mobile.

1.3. epocxplat/

A dynamic library for isolating Symbian platform ABI incompatibilities, so that the same daemon binary can be installed on all supported Symbian devices.

A separate epocxplat DLL is built for each Symbian release, but this fact is hidden by including all the different builds in a single epocxplat SIS file, and by picking a compatible DLL during installation.

1.4. filter-http/

A HTTP filter plugin DLL. The purpose of this plugin is to hook up with the Symbian HTTP framework sessions in order to notify the logger (or another interested process) of any URLs being requested.

We do not know of any public (or private) Symbian API that could be used to directly observe HTTP requests from the logger, and hence the requirement to install this plugin in order for the logger to get notified regarding HTTP requests. If the plugin is not installed, then the logger will not receive said notifications, but there is no harm done otherwise.

As this plugin automatically and intrusively hooks up with all RHTTPSession objects, it requires rather high Symbian platform security capabilities, and hence its use may not always be an option.

1.5. keyevents/

The keyevents libraries (client side and server side), from Jaiku.

You must build this component first if you want to enable the anim-variant of the "keypress" sensor when building the logger program.

This component is entirely Symbian-specific.

1.6. launcher/

This serves as a launcher and "control panel" for the logger and watchdog programs.

With this you can start and stop both the logger and the watchdog, or even forcefully kill them if necessary. You can also find out whether the logger and the watchdog are running. You can also enable/disable the launching of watchdog at device boot time.

This program is primarily intended for developers and advanced users, and is generally not intended to be installed in trials.

This component is entirely Symbian-specific, and implemented in Python for S60. The Miso library is required. For process killing to work, you must grant the PowerMgmt capability to the application.

1.7. lua/

A Symbian port of Lua.

Some of the extras in this component come from the alua project, but primarily this code comes from a recent mainline Lua release, tweaked slightly for Symbian. This code is built in statically to the logger program.

1.8. megasis/

Build scripts for building a SIS file containing multiple components. This is intended to facilitate convenient deployment of the software.

1.9. py-cl2-cli-lib/

A Python for S60 wrapper for the cxx-cl2-cli-lib library.

1.10. qxmpp/

The QXmpp Jabber/XMPP library for Symbian. Builds both for Symbian and Linux. This library is used in implementing the remote control facility of the logger.

Minor customizations have been made, and these are documented in the README-CL2 file.

1.11. shared/

Somewhat general purpose C and C++ code.

Code from here is intended to be built in directly to programs that need it. There are no makefiles for turning this code into a DLL or anything, and some of the code even refers to project defined preprocessor variables.

1.12. sqlite3h/

A Symbian port of SQLite 3.

This code comes from a recent mainline SQLite release, and considerable changes have been made to get the code to work on Symbian. This code is built in statically to Symbian builds of the logger program. Recent versions of the Symbian Platform have SQLite built in (within Symbian SQL), and on such devices one presumably could and should dynamically link against the built-in database code, instead of building in this custom port. Unfortunately it seems that Symbian presently only provides a Symbian-specific interface to the SQL engine (see sqldb.h), and not the standard one, so this may not be possible yet.

1.13. time-spec/

Code for parsing time moment and interval expressions.

Implements a little language for specifying points in time, and time intervals. Presently the former kind of language is used in the logger to specify when to do uploads. The code is built in statically to the logger program. It is likely that the time expressions will eventually be given in Lua, for more code reuse and more expressiveness, but this component is used for now.

Building this component from source requires the Ragel state machine generator.

1.14. tools/

Some build-related tools.

These are generally invoked directly by makefiles as required.

1.15. watchdog/

The logger process watchdog.

This a watchdog program that the system automatically starts up at system boot time. The watchdog program has the sole purpose of starting up the logging client and trying to ensure that it keeps running. The watchdog does this by observing the logger process, and recreating it (after some delay) if it should die. This component should be kept simple to reduce the risk of errors in the watchdog, as there is no one watching the watchdog.

For the on-boot start up to work the executable must have a protected UID and sufficient capabilities.

This component is entirely Symbian-specific.