Below is a list of pointers to some of the more interesting bits of
code in the ContextLogger2 codebase, in the authors' opinion.
The files listed are to the "main" files demonstrating the concept.
Concept |
Description |
Files |
A generic AO that completes immediately |
A Symbian active object (AO) that does nothing but gives the event loop a chance to run before invoking its callback. |
daemon/src/ut_immediate_epoc.cpp, daemon/src/ut_immediate_epoc.hpp |
Catching SMS control messages |
Quietly observing and processing SMS control messages on Symbian. |
daemon/src/kr_sms_trigger_epoc.cpp, daemon/src/kr_sms_trigger_epoc.hpp |
Checking AP types |
Checking whether an access point with a given ID is a modem one (GSM) or not (WLAN). |
daemon/src/epoc-iap.cpp |
Configuring Lua for Symbian |
|
lua/src/luaconf.h |
Configuring SQLite3 for Symbian |
|
sqlite3h/src/sqlite3/sqlite3_config.h |
Double byte string / UTF-8 conversion utilities |
A number of different utility functions for conveniently converting between UTF-8 and the native UTF-16 encoding on Symbian. |
daemon/src/utils_cl2.h, daemon/src/utils_cl2_cxx.cpp |
Flexible error reporting |
A powerful set of functions and macros for handling error reporting for different error (object) types. |
daemon/src/er_errors.c, daemon/src/er_errors.h |
Gzipping files with Crypto++ |
Straightforward gzip file compression with Crypto++. |
daemon/src/ut_compress_cryptopp_gzip.cpp |
Lua based config files |
Implementing a Lua language based configuration file, using a Lua runtime instance for in-memory storage. |
daemon/src/cf_rcfile.cpp, daemon/src/cf_rcfile.h |
Multipart HTTP posting |
Multipart HTTP(S) POSTing using the Symbian HTTP client API. |
daemon/src/up_poster_epoc.cpp, daemon/src/up_poster_epoc.hpp |
Multipart HTTP posting (Qt) |
Multipart HTTP(S) POSTing using the QtNetwork API. |
daemon/src/up_uploader_qt.cpp, daemon/src/up_uploader_qt_private.hpp |
Observing SMS events |
Detecting and getting information about incoming and outgoing SMS messages. |
daemon/src/epoc-smsevent.cpp, daemon/src/ut_sms_epoc.cpp |
Observing call status events |
Detecting phone call status changes and querying for additional information about any call. |
daemon/src/epoc-callstatus.cpp |
Phone number to contact name |
Resolving a phone number to the name of a matching contact on Symbian. |
daemon/src/ut_telno_epoc.cpp |
Portable assertions |
Assertions that are actually visible or logged on Symbian. |
shared/common/assertions.h, shared/common/assertions_cxx.cpp |
Portable logging |
Logging to a file on Symbian, and to console elsewhere. |
shared/common/logging.cpp, shared/common/logging_c.h |
Porting SQLite3 to Symbian |
|
sqlite3h/src/sqlite3/os_symbian.c |
QIODevice input device composing sub-QIODevices |
An abstraction for reading sequentially from multiple QIODevices. |
daemon/src/iodeviceseq_qt.cpp, daemon/src/iodeviceseq_qt.hpp |
QXmpp and Lua based remote control mechanism |
Accepting remote commands via XMPP and executing them using a Lua runtime. |
daemon/src/rk_remokon_qt.cpp, daemon/src/rk_remokon_qt.hpp |
Resolving AP names |
Resolving an access point name to its ID on Symbian. |
daemon/src/epoc-iap.cpp |
Simple file compression |
Straightforward file compression based on (raw) zlib. |
daemon/src/ut_compress_zlib_raw.c |
Timer-based retries on Symbian |
An API that encapsulates logic for repeating failed operations after increasing (and semi-randomized) time intervals. |
daemon/src/ut_retry_epoc.cpp, daemon/src/ut_retry_epoc.hpp |
Tracking application focus on Symbian |
Keeping track of which application has the focus. |
daemon/src/epoc-appfocus.cpp, daemon/src/epoc-appfocus.hpp |
Tracking music playback on Symbian |
Receiving events from the Music player on Symbian. |
daemon/src/epoc-music.cpp, daemon/src/epoc-music.hpp |