ContextLogger2 Source Code Bits of Interest

Sun May 15 15:15:12 2011

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

Tero Hasu