Symbian
A reader requests that the formatting and layout of this book be improved. Good formatting makes a book easier to read and more interesting for readers. See Editing Wikitext for ideas, and WB:FB for examples of good books. Please continue to edit this book and improve formatting, even after this message has been removed. See the discussion page for current progress. |
Welcome to the Symbian book at wikibooks. Originally started by the righteous folks from #symbian on freenode, this book hopes to contain some information about programming in Symbian C++. Mostly about features that aren't documented or are hard to find via digging forums.
Getting Started
If you're just getting started, you're best off reading the Wikipedia article about Symbian. There are lots of very useful links at the bottom of the page containing a great collection of tutorials and examples.
Useful links
Some links you'll need:
- The Symbian Foundation developer website
- Symbian OS error codes on NewLC.com.
- Forum Nokia The biggest Symbian-related discussion forum on the web.
- Symbian Example The collection of stand-alone code examples.
- Forum Nokia Wiki
- Forum Nokia Wiki
- Symbian C++ Google Group
Platforms based on Symbian OS
There are several mobile platforms based on Symbian OS. The most popular ones are Nokia's S60 and UIQ Technology's UIQ. Nokia also has Series 40, which is not a Symbian platform, but is based on Nokia's proprietry closed OS. Series 40 supports J2ME. For more information about J2ME, read the J2ME wikibook.
Nokia's S60, formerly known as Series 60, includes a wide range of phones with varying capabilities. SDKs can be found at Forum Nokia. Especially if you plan to use the newer SDKs you'll need Carbide.vs or Carbide.C++.
UIQ
SonyEricsson owned UIQ, used e.g. by Sony-Ericsson, Motorola and BenQ. SDKs can be found at UIQ.com.
Nokia's Series 80 is the communicator series which includes 9300, 9300i and 9500. SDKs can be found at Forum Nokia. The 9200 -series has a separate SDK.
Series 90
Nokia had Series 90 a while back which consisted of only two products, 7700 and 7710. Only 7710 was actually commercially sold. The SDK for Series 90 couldn't be found on Forum Nokia any more, and Series 90's development has been ceased.
Symbian C++ and OS fundamentals
Symbian OS has a lot of coding and naming conventions. The OS also has its own equivalents for primitive types (mostly typedefs), like TInt
(signed int) and TText16
(unsigned short int), and follows a convention for naming classes, for example CMyComplexClass
, TMySimpleClass
and MMyInterface
.
Symbian OS has certain memory management peculiarities. These include the cleanup stack and the usage of two-phase construction.
Symbian OS doesn't use standard C++ exceptions, but employs its own system known as the leave mechanism. Simply put, this consists of code that can possibly leave (roughly throw) and code that can trap leaves (roughly catch).
Symbian OS' conception of strings are descriptors. These are data structures that can hold any binary data, but are used mostly for storing and manipulating text.
Active Objects provide means for cooperative multitasking. Symbian OS itself supports preemptive multitasking, but Active Objects are usually the suggested method for executing various asynchronous tasks.
Client-server framework
Like some other operating systems, Symbian OS uses resources for given, mostly UI-related, definitions. This section tries to explain how to define resources and use them.
Symbian SDKs
Although each platform provides (or should provide) its own SDK, there are few things in common between them.
Symbian SDK on Unix HOWTO - http://www.koeniglich.de/sdk2unix/symbian_sdk_on_unix.html