<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-7439968566182916943</atom:id><lastBuildDate>Sun, 08 Sep 2024 02:59:28 +0000</lastBuildDate><category>Application Backup</category><category>Backup and Restore</category><category>Symbian OS</category><title>Celluleus - Cellular Nucleus</title><description></description><link>http://celluleus.blogspot.com/</link><managingEditor>noreply@blogger.com (Unknown)</managingEditor><generator>Blogger</generator><openSearch:totalResults>20</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7439968566182916943.post-22634259559959741</guid><pubDate>Mon, 06 Jul 2009 09:50:00 +0000</pubDate><atom:updated>2009-07-06T02:52:48.361-07:00</atom:updated><title>running server all the time !!!</title><description>Do you want to run your process all the time until its been closed explicitly by an applicaiton.&lt;br /&gt;&lt;br /&gt;Its simple to do..&lt;br /&gt;&lt;br /&gt;DO NOT STOP YOUR ACTIVE SCHEDULER UNTIL YOU KILL YOUR PROCESS !!!&lt;br /&gt;&lt;br /&gt;Implement your Decrementsessions function as follows,&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;    iSessionCount--;&lt;br /&gt;    if ( aShutDown )&lt;br /&gt;        {&lt;br /&gt;        CActiveScheduler::Stop();&lt;br /&gt;        }&lt;br /&gt;    }</description><link>http://celluleus.blogspot.com/2009/07/running-server-all-time.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7439968566182916943.post-437058742325615472</guid><pubDate>Thu, 28 May 2009 09:30:00 +0000</pubDate><atom:updated>2009-05-28T02:38:11.651-07:00</atom:updated><title>Full Screen S60 Application:</title><description>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1bc5GoN4YYVkLpiYrhdGtEIAmaOipcBkKgiv7F59OZM6qR-eh-uwbRZDEhovsgv9s73cBttYCs3HRxDaPq3aN63XYcFS5R_LT2036OjTv-c2KeQ7__bFlmWK96-PXPAOhMtm45F8hvZNw/s1600-h/gui.JPG&quot;&gt;&lt;img style=&quot;margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 305px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1bc5GoN4YYVkLpiYrhdGtEIAmaOipcBkKgiv7F59OZM6qR-eh-uwbRZDEhovsgv9s73cBttYCs3HRxDaPq3aN63XYcFS5R_LT2036OjTv-c2KeQ7__bFlmWK96-PXPAOhMtm45F8hvZNw/s320/gui.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5340806763220928066&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;To let your application to use the full screen, please add the following line in your Appview class.&lt;br /&gt;&lt;br /&gt;  &lt;span style=&quot;font-style: italic;&quot;&gt;SetExtentToWholeScreen(); &lt;br /&gt;&lt;/span&gt;&lt;br /&gt;This is a public API in ccoecontrol. So, any CCoeControl class can use this. After adding this line, your application will not be having any control pane or status pane.  &lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Note: &lt;/span&gt;This code is tested on S60 5th edition and in portrait mode</description><link>http://celluleus.blogspot.com/2009/05/full-screen-s60-application.html</link><author>noreply@blogger.com (Unknown)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1bc5GoN4YYVkLpiYrhdGtEIAmaOipcBkKgiv7F59OZM6qR-eh-uwbRZDEhovsgv9s73cBttYCs3HRxDaPq3aN63XYcFS5R_LT2036OjTv-c2KeQ7__bFlmWK96-PXPAOhMtm45F8hvZNw/s72-c/gui.JPG" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7439968566182916943.post-346303046738118945</guid><pubDate>Sun, 29 Mar 2009 09:26:00 +0000</pubDate><atom:updated>2009-03-29T02:27:56.643-07:00</atom:updated><title>Installing Qt on S60</title><description>1. Install needed IDE and SDKs&lt;br /&gt;&lt;br /&gt;      Make sure you have the following installed:&lt;br /&gt;          * Carbide.c++ v2.0.0 or higher&lt;br /&gt;          * S60 Platform SDK 3rd Edition FP1 or higher&lt;br /&gt;          * Open C/C++ for S60 3rd Edition (automatically included in 3.2 and higher)&lt;br /&gt;&lt;br /&gt;      These instructions assume the above tools are installed and that the enviroment variables for your compiler are set correctly.&lt;br /&gt;&lt;br /&gt;      Note: Users of S60 Platform SDK 3rd Edition FP1 also need special updates. The update can be found here.&lt;br /&gt;&lt;br /&gt;      Note: The wsini.ini provided with the S60 Platform SDK 5th Edition v0.9 needs to be updated for correct font rendering in the emulator. The update can be found here.&lt;br /&gt;   2. Install Qt&lt;br /&gt;&lt;br /&gt;      Uncompress the package into the directory you want Qt installed, e.g. C:\Qt\4.5.0-garden.&lt;br /&gt;&lt;br /&gt;      Note: Qt must be installed on the same drive as the S60 SDK you are using, and the install path must not contain any spaces.&lt;br /&gt;   3. Environment variables&lt;br /&gt;&lt;br /&gt;      In order to build and use Qt, the PATH environment variable needs to be extended:&lt;br /&gt;&lt;br /&gt;       PATH               - to locate qmake, moc and other Qt tools&lt;br /&gt;&lt;br /&gt;      This is done by adding c:\Qt\4.5.0-garden\bin to the PATH variable.&lt;br /&gt;&lt;br /&gt;      On Windows the PATH can be extended by navigating to &quot;Control Panel-&gt;System-&gt;Advanced-&gt;Environment variables&quot;.&lt;br /&gt;&lt;br /&gt;      In addition, you must configure the environment for use with the S60 emulator. This is done by locating the Carbide.c++ submenu on the Start menu, and choosing &quot;Configure environment for WINSCW command line&quot;.&lt;br /&gt;   4. Configure Qt&lt;br /&gt;&lt;br /&gt;      To configure Qt for S60, do:&lt;br /&gt;&lt;br /&gt;       cd \Qt\4.5.0-garden&lt;br /&gt;       configure -platform win32-mwc -xplatform symbian-abld&lt;br /&gt;&lt;br /&gt;      For other options, type configure -help to get a list of all available options.&lt;br /&gt;   5. Build Qt&lt;br /&gt;&lt;br /&gt;      The Qt libraries comes pre-built for real devices. If you are using a 3.x S60 SDK, install qts60binaries\3.x\qtlibs-4.5.0-garden.exe into the S60 SDK root directory. For example: C:\Symbian\9.2\S60_3rd_FP1_2\ If you are using a 5.0 S60 SDK, install qts60binaries\5.0\qtlibs-4.5.0-garden.exe into the S60 SDK root directory. For example: C:\S60\devices\S60_5th_Edition_SDK_v0.9\&lt;br /&gt;&lt;br /&gt;      To build Qt for the emulator, type:&lt;br /&gt;&lt;br /&gt;       make debug-winscw&lt;br /&gt;&lt;br /&gt;      Congratulations, Qt is now ready to use.&lt;br /&gt;   6. Running Qt demos&lt;br /&gt;&lt;br /&gt;      We&#39;ve included a subset of the Qt demos in this package for you to try out. An excellent starting point is the &quot;fluidlauncher&quot; demo. To run the demo on a real device, you first have to install the Qt libraries on the device. For 3.x devices install qts60binaries\3.x\qt_libs_armv5_udeb.sisx For 5.0 devices install qts60binaries\5.0\qt_libs_armv5_udeb.sisx included in this package to the device. Then type:&lt;br /&gt;&lt;br /&gt;       cd examples&lt;br /&gt;       make debug-gcce&lt;br /&gt;       cd ..\demos&lt;br /&gt;&lt;br /&gt;       make debug-gcce&lt;br /&gt;       cd embedded\fluidlauncher&lt;br /&gt;       createpackage -i fluidlauncher_gcce_udeb.pkg&lt;br /&gt;&lt;br /&gt;      This will create a self-signed fluidlauncher_gcce_udeb.sisx and install it to your device.&lt;br /&gt;&lt;br /&gt;      Note: You can specify your own certificate and key files as additional parameters to createpackage if default ones are not suitable.&lt;br /&gt;&lt;br /&gt;      To run the demos on the emulator simply run:&lt;br /&gt;&lt;br /&gt;       make run&lt;br /&gt;&lt;br /&gt;      Or, if you need to supply arguments to the program, navigate to %EPOCROOT%\Epoc32\release\winscw\udeb\ and start any of the Qt demos located there, for example:&lt;br /&gt;&lt;br /&gt;       wiggly.exe -small-screen&lt;br /&gt;&lt;br /&gt;      For more information about building and running Qt programs on S60, see S60 - Introduction to using Qt.&lt;br /&gt;&lt;br /&gt;      We hope you will enjoy using Qt.</description><link>http://celluleus.blogspot.com/2009/03/installing-qt-on-s60.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7439968566182916943.post-7985745489497060465</guid><pubDate>Sat, 28 Mar 2009 20:43:00 +0000</pubDate><atom:updated>2009-03-28T13:47:02.583-07:00</atom:updated><title>Configuring Carbide for Qt</title><description>Carbide.c++ 2.0 does not automatically locate your Qt installation so you need to tell it where Qt is installed. You can do this through the Carbide.c++ preferences. From the main menu choose Window &gt; Preferences. In the preferences dialog, choose Qt. Then clickAdd.... A new dialog will open and there you can enter the Qt version name, the bin path and the include path. See the following image for an example.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglnbQyevjERPrwudgR31w-u2Z-2KlEZXsKJC03-oOMu6CuSdwdSrmrZ7c-uY5MnyduQHSXemVsDIEF9L2vLWnrk7N_Pei6NLZomDUdzEj1cpqKTM2nbfWaYWX_UZMH7JG57V-tWeq5YgUH/s1600-h/carbideforqt.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 289px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglnbQyevjERPrwudgR31w-u2Z-2KlEZXsKJC03-oOMu6CuSdwdSrmrZ7c-uY5MnyduQHSXemVsDIEF9L2vLWnrk7N_Pei6NLZomDUdzEj1cpqKTM2nbfWaYWX_UZMH7JG57V-tWeq5YgUH/s320/carbideforqt.png&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5318342734879821186&quot; /&gt;&lt;/a&gt;</description><link>http://celluleus.blogspot.com/2009/03/configuring-carbide-for-qt.html</link><author>noreply@blogger.com (Unknown)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglnbQyevjERPrwudgR31w-u2Z-2KlEZXsKJC03-oOMu6CuSdwdSrmrZ7c-uY5MnyduQHSXemVsDIEF9L2vLWnrk7N_Pei6NLZomDUdzEj1cpqKTM2nbfWaYWX_UZMH7JG57V-tWeq5YgUH/s72-c/carbideforqt.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7439968566182916943.post-973827688929535144</guid><pubDate>Fri, 27 Feb 2009 10:36:00 +0000</pubDate><atom:updated>2009-02-27T02:40:30.057-08:00</atom:updated><title>Hook Logger Setup</title><description>&lt;span style=&quot;font-weight: bold;&quot;&gt;HookLogger&lt;/span&gt;&lt;br /&gt;It is one of the most time consuming task for developers to find memory leaks in their code. If your application happens to panic on exit with some memory leak, then sometimes it is a hard work to find the wrong piece of code with code analysis. HookLogger is a great emulator tool by Symbian that helps finding the leak fast.&lt;br /&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Install&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br /&gt;*Read carefully*&lt;br&gt;&lt;/br&gt;&lt;br /&gt;* Latest version can be download from nokia website also&lt;br&gt;&lt;/br&gt;&lt;br /&gt;* Install HookLogger to path *without* spaces (c:\s60\hooklogger). Hooklogger must be installed to the same drive as SDK.&lt;br&gt;&lt;/br&gt;&lt;br /&gt;* In DOS prompt, do following:&lt;br&gt;&lt;/br&gt;&lt;br /&gt;** cd \utils\hooklogger&lt;br&gt;&lt;/br&gt;&lt;br /&gt;** type SetupHooks.cmd devicename&lt;br&gt;&lt;/br&gt;&lt;br /&gt; devicename can be found, by typing devices in the command prompt&lt;br&gt;&lt;/br&gt;&lt;br /&gt; My device is S60_5th_Edition_SDK_v0.9:com.nokia.s60&lt;br&gt;&lt;/br&gt;&lt;br /&gt;* On successful hooklogger setup you will get the following information in the command prompt&lt;br&gt;&lt;/br&gt;&lt;br /&gt; Setting up hooks in &quot;C:\S60\devices\S60_5th_Edition_SDK_v0.9\epoc32\release\WINSCW\UDEB&quot;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;      1 file(s) copied.&lt;br&gt;&lt;/br&gt;&lt;br /&gt; Setup euser.dll to load EUserParasite_EKA2.dll, original preserved as euser.orig.dll.&lt;br&gt;&lt;/br&gt;&lt;br /&gt; Run SetupHooks with --r to restore it&lt;br&gt;&lt;/br&gt;&lt;br /&gt;* Once you are done with the usage of hooklogger you just restore your euser.dll by typing&lt;br&gt;&lt;/br&gt;&lt;br /&gt;SetupHooks.cmd --r devicename&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Running the Program with hooklogger&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;* Open the hooklogger&lt;br&gt;&lt;/br&gt;&lt;br /&gt;* Select filters tab&lt;br&gt;&lt;/br&gt;&lt;br /&gt;* click &quot;Browse for exe&quot;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;* select the application to be monitored&lt;br&gt;&lt;/br&gt;&lt;br /&gt;* Make sure you have selected  &quot;include only checked&quot;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;* Now launch your application&lt;br&gt;&lt;/br&gt;&lt;br /&gt;* Once the emulator is launched you can see the hooklogger heading is changed to your application executable&#39;s directory&lt;br&gt;&lt;/br&gt;&lt;br /&gt;* Run your application, do some operation and close it&lt;br&gt;&lt;/br&gt;&lt;br /&gt;* Now in hook logger, you can select heap tab.&lt;br&gt;&lt;/br&gt;&lt;br /&gt;* Say list all and it shows all the heap allocations&lt;br&gt;&lt;/br&gt;&lt;br /&gt;* If you double click on any of the entry it shows the callstack of that allocation&lt;br&gt;&lt;/br&gt;&lt;br /&gt;* This will be useful to find out the memory leaks (alloc panics)&lt;br&gt;&lt;/br&gt;</description><link>http://celluleus.blogspot.com/2009/02/hook-logger-setup.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7439968566182916943.post-6450907069642282126</guid><pubDate>Tue, 26 Aug 2008 18:56:00 +0000</pubDate><atom:updated>2008-08-26T14:02:19.073-07:00</atom:updated><title>Nokia N85 - The definitive entertainment package</title><description>Espoo, Finland - Nokia today unveiled the Nokia N85, the latest Nokia Nseries multimedia computer made to set new standards for mobile entertainment, gaming and sharing. Along with an eye-catching 2.6&quot; OLED screen and smooth, sleek finish, the Nokia N85 redefines the mobile experience. It boasts N-Gage gaming, music with in-built FM transmitter, 5 megapixel camera with Carl Zeiss optics and geotagging capabilities, three month integrated license for turn-by-turn voice navigation and high-speed connectivity, all in one device. The Nokia N85 is expected to begin shipping in October 2008 with an estimated retail price of EUR 450, before taxes and subsidies.&lt;br /&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt; &lt;br /&gt;&quot;The Nokia N85 was created to be more than the sum of its parts, offering a complete mobile entertainment package designed for connecting, sharing and discovering,&quot; said Juha-Pekka Sipponen, Director, Nokia Nseries. &quot;The iconic Nokia Nseries dual slider design has evolved to become smaller and sleeker while integrating the newest features and services to deliver the best mobile experience to date.&quot;&lt;br /&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt; &lt;br /&gt;With a strong lineup of multimedia features, the Nokia N85 is taking the world of mobile convergence to the next level. Gaming, photos, navigation and music blend together with the newest Ovi and third party services via 3.5G HSDPA and Wi-Fi connectivity to make discovering and sharing experiences quick and seamless.  &lt;br /&gt;&lt;br&gt;&lt;/br&gt; &lt;br /&gt;&lt;br /&gt;&lt;p style=&quot;center;&quot;&gt;&lt;img class=&quot;alignnone size-medium wp-image-4389&quot; src=&quot;http://hugin.info/3009/R/1246097/269332.jpg&quot; alt=&quot;&quot; width=&quot;170&quot; height=&quot;113&quot; /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br&gt; &lt;/br&gt;&lt;br /&gt;A demo of the &lt;a href=&quot;http://justamp.blogspot.com/search/label/Nokia?max-results=3&quot;&gt;Nokia&lt;/a&gt; N85, showing off some of the features.&lt;br /&gt;&lt;br /&gt;&lt;object width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/re2xjepbSqk&amp;hl=en&amp;fs=1&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/re2xjepbSqk&amp;hl=en&amp;fs=1&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Engage and interact &lt;/b&gt;&lt;br /&gt;The Nokia N85 is pre-loaded with at least 10 made-for-mobile N-Gage gaming titles that jump off of the screen thanks to the dazzling OLED display and a voucher to activate one full game license. Dedicated gaming keys light up when the device is in landscape gaming mode to further enhance the action-packed experience.  &lt;br /&gt;&lt;br&gt;&lt;/br&gt; &lt;br /&gt;A state-of-the-art 5 megapixel camera with Carl Zeiss optics and bright dual LED flash captures clear, sharp images as well as DVD-quality videos at 30 frames per second. Combined with A-GPS it is possible to geotag favorite pictures to see where each photo was taken using the Nokia Maps application or online sites such as Share on Ovi or Flickr. &lt;br /&gt;&lt;br&gt;&lt;/br&gt; &lt;br /&gt;Each Nokia N85 comes with an 8 GB microSD card, up to 30 hours of music playback time and its high-fidelity sound means favorite tracks can be enjoyed virtually anywhere. Build a personal music collection from the millions of tracks and playlists available from the Nokia Music Store or other online music vendors, or synchronize PC and mobile music libraries via USB cable. Alternatively, consumers can enjoy RDS radio or a wide selection of stations via the internet. The 3.5 mm audio jack makes connecting a top-quality headset simple and an in-built FM transmitter lets the Nokia N85 play wirelessly through a car or home stereo to really crank up the sound.&lt;br /&gt;&lt;br&gt;&lt;/br&gt; &lt;br /&gt;While it comes out of the box with a multitude of powerful functionality, the pre-loaded Nokia Download! application makes the Nokia N85 truly customizable by offering a wide range of bespoke content. This includes an outstanding selection of world-class branded entertainment content, the latest in mobile gaming and dynamic applications so users can really make their device their own.</description><link>http://celluleus.blogspot.com/2008/08/nokia-n85-definitive-entertainment.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7439968566182916943.post-7226951272767897858</guid><pubDate>Tue, 26 Aug 2008 18:50:00 +0000</pubDate><atom:updated>2008-08-26T14:03:37.671-07:00</atom:updated><title>Nokia N79 - Powerful fusion of technology and style</title><description>Aug 26, 2008 Espoo, Finland - Nokia today unveiled the Nokia N79, the latest addition to the Nokia Nseries range that combines intelligent and customizable design with a fully-loaded multimedia computer. Behind its sleek exterior, the Nokia N79 is a technology powerhouse. It offers a full range of multimedia experiences including integrated navigation, music with FM transmitter, high-speed connectivity, superior web browsing, at least 10 pre-loaded N-Gage games and an advanced 5 megapixel camera with Carl Zeiss optics. The Nokia N79 is expected to begin shipping in October 2008, with an estimated retail price of EUR 350, before taxes and subsidies.&lt;br /&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt; &lt;br /&gt;&quot;The Nokia N79 packs cutting-edge technology into a compact design - a characteristic of the iconic Nseries - that allows people to discover, create and share their passions with others,&quot; said Juha Kokkonen, Director, Nokia Nseries. &quot;It has been designed for those who want a device that is as appealing as it is powerful and comes with interchangeable covers that have automatically matching screen themes. This balance of performance and style means that it is a powerful and defining step forward from the popular and very successful Nokia N72 and Nokia N73.&quot;&lt;br /&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;Perfect for the style conscious, the Nokia N79 comes with Xpress-on smart covers that are available in five cool colors: Light Sea Blue, Espresso Brown, Olive Green, White and Coral Red. A combination of three of these comes with each Nokia N79.&lt;br /&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;The convergence of photos, music and navigation in the Nokia N79 combines with high-speed 3.5G HSDPA and Wi-Fi to make it quick and easy to share experiences on websites, blogs or online communities.&lt;br /&gt; &lt;br /&gt;&lt;p style=&quot;center;&quot;&gt;&lt;img class=&quot;alignnone size-medium wp-image-4389&quot; src=&quot;http://hugin.info/3009/R/1246096/269331.jpg&quot; alt=&quot;&quot; width=&quot;113&quot; height=&quot;170&quot; /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;A demo of the Nokia N79, showing off some features.&lt;br /&gt;&lt;br /&gt;&lt;object width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/cmMIGIVXxso&amp;hl=en&amp;fs=1&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/cmMIGIVXxso&amp;hl=en&amp;fs=1&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;Experience new discoveries &lt;br /&gt;The innovative technology packed into this colorful offering means that accessing a rich pool of services to further enhance individual experiences is seamless. Log on to online communities like Friendster, Flickr or YouTube or click through to Nokia services such as the Nokia Music Store, N-Gage, Nokia Maps and Share on Ovi, an online service that enables consumers to share personal pictures and videos from their mobile devices. &lt;br /&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;The 5 megapixel camera with Carl Zeiss optics, dual LED flash and video light captures sharp, clear images and video that can be edited immediately, without the need for a PC. Images can also be geotagged to specific locations. What&#39;s more, the Nokia N79 comes packaged with a 4 GB microSD memory card that makes it possible to store around 3,000 songs, approximately 2,500 pictures and up to four hours of DVD-quality video clips that can be organized by albums or tags and uploaded directly to Share on Ovi or third party services. The addition of a sliding lens cover helps protect the top-quality lens when not in use. &lt;br /&gt;&lt;br&gt;&lt;/br&gt; &lt;br /&gt;Nokia Maps makes it easy to explore and navigate new surroundings by accessing more than 15 million points of interest (POI). In-built A-GPS providing turn-by-turn navigation - for walking or driving - comes with a three month integrated license on the Nokia N79.&lt;br /&gt;&lt;br&gt;&lt;/br&gt; &lt;br /&gt;A Friendster widget will also be made available for the Nokia N79 via the WidSets service. This will allow people to browse Friendster friends&#39; profiles, view and post shoutouts, upload pictures taken with their handset, and browse their own and friends&#39; photo albums. All this enables more effective communication with friends while away from a computer using the Nokia N79. New users can even register for Friendster directly on their device via a link to Friendster&#39;s mobile site (m.friendster.com), create an account, and instantly begin participating in the Friendster global community.&lt;br /&gt;&lt;br&gt;&lt;/br&gt; &lt;br /&gt;To ensure each device is as distinctive as its user, customizable features are available at the Nokia Download! store, a one stop personalization shop, already embedded in Nokia Nseries devices. It lets consumers create a unique experience for themselves by offering easy access to a multitude of popular ringtones, branded entertainment content, the latest in mobile gaming and dynamic applications for personalizing mobile devices to the user&#39;s own preferences.</description><link>http://celluleus.blogspot.com/2008/08/nokia-n79-powerful-fusion-of-technology.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7439968566182916943.post-3208901822257673961</guid><pubDate>Tue, 26 Aug 2008 12:48:00 +0000</pubDate><atom:updated>2008-08-26T05:51:14.586-07:00</atom:updated><title>LG KC910</title><description>LG has announced the LG KC910, the successor to the LG KU990 Viewty, and competition to the newly announced Sony Ericsson C905 and Samsung INNOV8. This GSM Quadband phone has an 8-megapixel camera that supports auto focus and has a Xenon flash module.&lt;br /&gt;&lt;br /&gt;&lt;p style=&quot;center;&quot;&gt;&lt;img class=&quot;alignnone size-medium wp-image-4389&quot; src=&quot;http://www.phonemag.com/blog/wp-content/uploads/2008/08/lg-kc910-1.jpg&quot; alt=&quot;&quot; width=&quot;420&quot; height=&quot;342&quot; /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;With a 3-inch touch screen at 240 x 400 resolution and three buttons below the screen, this phone is designed for both form and function. It also supports video recording with 30 fps in VGA resolution. Or, you can crank it up a notch for 120 fps in QVGA resolution.&lt;br /&gt;&lt;br /&gt;Other features are thought to be GPS, Bluetooth, WiFi, multiple codec support and more. The device is only 14 mm thick and will be released sometime in October.</description><link>http://celluleus.blogspot.com/2008/08/lg-kc910.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7439968566182916943.post-843975437033698578</guid><pubDate>Sat, 26 Jul 2008 01:59:00 +0000</pubDate><atom:updated>2008-07-26T00:17:06.986-07:00</atom:updated><title>OO Design Principles and Patterns</title><description>&lt;strong&gt;Principle 1:&lt;/strong&gt; “Encapsulate what varies”&lt;br&gt;&lt;/br&gt;&lt;br /&gt;Identify the aspects of yours application that vary and separate them from what stays the same. This principle helps to make the future changes without affecting the code that doesn’t vary.&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Principle 2: &lt;/strong&gt;“Program to an Interface, not an Implementation”&lt;br&gt;&lt;/br&gt;&lt;br /&gt;This will decouple the class implementation from the class that uses them. So, the clients may not need to know the complete implementation.&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Principle 3:&lt;/strong&gt; “Favour Composition over Inheritance”&lt;br&gt;&lt;/br&gt;&lt;br /&gt;This principle lets you change behaviour at runtime.&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Principle 4:&lt;/strong&gt; “Strive for loosely coupled designs between objects that interact”&lt;br&gt;&lt;/br&gt;&lt;br /&gt;Loosely coupled designs allow us to build flexible OO systems that can handle change because they minimize the interdependency between objects.&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Principle 5:&lt;/strong&gt; “Classes should be open for extension, but closed for modification&lt;br&gt;&lt;/br&gt;&lt;br /&gt;Modifying existing code will always lead to introduce new bugs. Design your classes in such a way that they would be easily extended to incorporate new behaviour without modifying the existing code.&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Principle 6:&lt;/strong&gt; “Dependency Inversion Principle – Depend upon Abstractions. Do not depend upon Concrete classes”&lt;br&gt;&lt;/br&gt;&lt;br /&gt;This principle suggests that high-level components should not depend on our low-level components. Rather both should depend on abstractions.&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Principle 7: &lt;/strong&gt;“Principle of least knowledge – talk only to your immediate friends”&lt;br&gt;&lt;/br&gt;&lt;br /&gt;It means when you are designing a system, for any object, be careful of the number o f classes it interacts with and also how it comes to interact with those classes. This principle prevents us from creating designs that have a large number of classes coupled together so that changes in one part of the system cascade to other parts.&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Principle 8: &lt;/strong&gt;“A class should have only one reason to change”&lt;br /&gt;&lt;br&gt;&lt;/br&gt;This principle guides us to assign each responsibility to one class, and only one class.&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br /&gt;Please get the details about various design patterns &lt;a href=&quot;http://www.megaupload.com/?d=PMBR3M8V&quot;&gt;here&lt;/a&gt;</description><link>http://celluleus.blogspot.com/2008/07/oo-design-principles-and-patterns.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7439968566182916943.post-8565633358447221012</guid><pubDate>Fri, 30 May 2008 10:52:00 +0000</pubDate><atom:updated>2008-05-30T04:06:03.579-07:00</atom:updated><title>Symbian Developer Network C++ Code Clinic</title><description>Jo Stichbury opens the code clinic to dispense more advice about Symbian C++. &lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br /&gt;A new Code Clinic will be published on the first Friday of every month.&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br /&gt;In this month’s clinic she examines the cause of two panics that occur when the cleanup stack is used with classes that use mixin inheritance.&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br /&gt;Got a Symbian C++ problem? Send it to the Code Doctor at &lt;a href=&quot;mailto:sdn@symbian.com?subject=Code Clinic&quot;&gt;sdn@symbian.com&lt;/a&gt;.&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br /&gt;Problems used will receive a complementary copy of the Symbian Press book Developing Software for Symbian OS, Second Edition.&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br /&gt;visit &lt;a href=&quot;http://developer.symbian.com/main/learning/code_clinic/&quot;&gt;http://developer.symbian.com/main/learning/code_clinic/&lt;/a&gt;</description><link>http://celluleus.blogspot.com/2008/05/symbian-developer-network-c-code-clinic.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7439968566182916943.post-4727479132180330279</guid><pubDate>Fri, 23 May 2008 10:03:00 +0000</pubDate><atom:updated>2008-05-23T08:26:55.997-07:00</atom:updated><title>Interfacing UART in Symbian</title><description>Accessing any port in symbian needs the following steps&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Load physical DD&lt;/li&gt;&lt;li&gt;Load logical DD&lt;/li&gt;&lt;li&gt;Connect to RCommServer&lt;/li&gt;&lt;li&gt;Connect RComm client to Server&lt;/li&gt;&lt;li&gt;Load the specific port module (.CSY file)&lt;/li&gt;&lt;li&gt;Configure and Open&lt;/li&gt;&lt;li&gt;Do the operation&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Here is a piece of code explains how to interface with UART in symbian&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;TInt err = User::LoadPhysicalDevice(PDD_NAME);&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;    if (err != KErrNone &amp;amp;&amp;amp; err != KErrAlreadyExists)&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        {&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;         RDebug::Printf(&quot;Loading of Physical drive failed\n&quot;);&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        User::Leave(err);&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        }&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;    &lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;    // Load the logical device driver.&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;     err = User::LoadLogicalDevice(LDD_NAME);&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;     if (err != KErrNone &amp;amp;&amp;amp; err != KErrAlreadyExists)&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;     {&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;         RDebug::Printf(&quot;Loading of Logical drive failed\n&quot;);&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;         User::Leave(err);&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;     }&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;     &lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;     &lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;#if 1 //!defined (__WINS__)&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;     // Start the comms server process&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;     err = StartC32();&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;     if (err != KErrNone &amp;amp;&amp;amp; err != KErrAlreadyExists)&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;     {&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;     RDebug::Printf(&quot;StartC32 failed\n&quot;);&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;     User::Leave(err);&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;     }&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;#endif&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;     // Connect to the Serial comms server.&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;     User::LeaveIfError(iCommServer.Connect());&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;     RDebug::Printf(&quot;Success: CommServer connect\n&quot;); &lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;     // Load the CSY module.&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;     User::LeaveIfError(iCommServer.LoadCommModule(RS232));&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;     RDebug::Printf(&quot;Success: CommServer RS232 Loading\n&quot;);&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;     &lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;     TInt numPorts;&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;     User::LeaveIfError(iCommServer.NumPorts (numPorts));&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;     RDebug::Printf(&quot;Success: CommServer returned number of ports &amp;amp; the number of ports = %d&quot;, numPorts);&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;     //we are really only interested in using the CSY that we&#39;ve&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        // just loaded up ourselves. We could find out its portInfo by&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        // comparing the moduleName returned by the version of GetPortInfo we&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        // just used to the name of the CSY we loaded, but there&#39;s a better&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        // version of GetPortInfo we can use, which just takes the name of a CSY&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        // as a parameter. We&#39;d expect to find this informtion is an exact &lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        // duplicate of the indexed portInfo for the last loaded CSY&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        // Our example code will use the lowest possible port (why not?)&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;     TSerialInfo portInfo;&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;     &lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;     TBuf16 &lt;&gt; moduleName;&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        for (TInt index=0 ; index &lt;&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;            {&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;             User::LeaveIfError(iCommServer.GetPortInfo (index, moduleName, portInfo));&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;             RDebug::Print(_L(&quot;module name = %S&quot;), &amp;amp;moduleName);&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;             RDebug::Print(_L(&quot;Port name = %S&quot;), &amp;amp;(portInfo.iName));&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;                RDebug::Print(_L(&quot;Port Description = %S&quot;), &amp;amp;(portInfo.iDescription));&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;                RDebug::Printf(&quot;Port high unit = %d&quot;, portInfo.iHighUnit);&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;                RDebug::Printf(&quot;Port Low unit = %d&quot;, portInfo.iLowUnit);&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;            }&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;     User::LeaveIfError(iCommServer.GetPortInfo (RS232, portInfo));&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;     RDebug::Printf(&quot;Success: CommServer returned port information \n&quot;);&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;     &lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;     RDebug::Print(_L(&quot;Port name = %S&quot;), &amp;amp;(portInfo.iName));&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;     RDebug::Print(_L(&quot;Port Description = %S&quot;), &amp;amp;(portInfo.iDescription));&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;     RDebug::Printf(&quot;Port high unit = %d&quot;, portInfo.iHighUnit);&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;     RDebug::Printf(&quot;Port Low unit = %d&quot;, portInfo.iLowUnit);&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;     &lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;     &lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;     // Now let&#39;s use a few Symbian OS functions to construct a descriptor for the&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        // name of the lowest port our CSY supports -&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        // The name can be as long as a TSerialInfo.iName plus a&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        // couple of colons and digits&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        TBuf16 &lt;&gt; portName; // declare an empty descriptor buffer&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        portName.Num (portInfo.iLowUnit);    // put in the port number in ASCII&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        portName.Insert (0, KColons);    // stick in a couple of colons&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        portName.Insert (0, portInfo.iName); // and lead off with the iName&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        // and at last we can open the first serial port,which we do here in exclusive mode&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        RComm commPort;&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        User::LeaveIfError(commPort.Open (iCommServer, portName, ECommExclusive));&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        RDebug::Printf(&quot;Success: Commport Open\n&quot;);&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        // Now we can configure our serial port&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        // we want to run it at 115200 bps 8 bits no parity (why not?)&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        // so maybe we ought to get of its capabilities and check it can&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        // do what we want before going ahead&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        TCommCaps ourCapabilities;&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        commPort.Caps (ourCapabilities);&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        if (((ourCapabilities ().iRate &amp;amp; KCapsBps115200) == 0) ||&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;             ((ourCapabilities ().iDataBits &amp;amp; KCapsData8) == 0) ||&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;             ((ourCapabilities ().iStopBits &amp;amp; KCapsStop1) == 0) ||&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;             ((ourCapabilities ().iParity &amp;amp; KCapsParityNone) == 0))&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;            User::Leave (KErrNotSupported);&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        TCommConfig portSettings;&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        commPort.Config (portSettings);&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        portSettings ().iRate = EBps115200;&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        portSettings ().iParity = EParityNone;&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        portSettings ().iDataBits = EData8;&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        portSettings ().iStopBits = EStop1;&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        // as well as the physical characteristics, we need to set various logical ones&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        // to do with handshaking, behaviour of reads and writes and so so&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        portSettings ().iFifo = EFifoEnable;&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        &lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        //portSettings ().iHandshake = (KConfigObeyCTS | KConfigFreeRTS); // for cts/rts&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        &lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        portSettings ().iHandshake = (KConfigObeyXoff | KConfigSendXoff); // for xon/xoff&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        &lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;//        portSettings ().iHandshake = KConfigFailDSR;  &lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        &lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        portSettings ().iTerminator[0] = 10;&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        portSettings ().iTerminatorCount = 1;        // so that we terminate a read on each line feed arrives&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        User::LeaveIfError(commPort.SetConfig (portSettings));&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        RDebug::Printf(&quot;Success: Commport Config\n&quot;);&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        // now turn on DTR and RTS, and set our buffer size&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        commPort.SetSignals (KSignalDTR, 0);&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        commPort.SetSignals (KSignalRTS, 0);&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        TInt curlenth = commPort.ReceiveBufferLength ();&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        commPort.SetReceiveBufferLength (4096);&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        curlenth = commPort.ReceiveBufferLength ();&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        &lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        const TTimeIntervalMicroSeconds32 KTimeOut(4000000);&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        TRequestStatus stat;&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        commPort.Write (stat, KTimeOut, (TDesC8&amp;amp;)KFileName);&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        User::WaitForRequest (stat);&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        err = stat.Int ();&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        if (err != KErrNone) // Write has failed for some reason&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;            {&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;            RDebug::Printf(&quot;Failure: Commport Write and the reason is %d\n&quot;, err);&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;            //Failed&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;            }&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;            &lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;            RDebug::Printf(&quot;Success: Commport Write\n&quot;);&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;           TBuf8 &lt;&gt; localInputBuffer;&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;           localInputBuffer.FillZ();&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        TRequestStatus readStat;&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        //Reading the written buffer&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        commPort.Read (readStat, localInputBuffer, 20);&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        User::WaitForRequest(readStat);&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        User::LeaveIfError (readStat.Int ());&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        RDebug::Printf(&quot;Success: Commport Read\n&quot;);&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        &lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        RDebug::Print(_L(&quot;Read buffer is %S&quot;), &amp;amp;localInputBuffer);&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        commPort.Close ();&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;        iCommServer.Close ();&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;/span&gt;&lt;br&gt;&lt;/br&gt;</description><link>http://celluleus.blogspot.com/2008/05/interfacing-uart-in-symbian.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7439968566182916943.post-6762845849876614269</guid><pubDate>Wed, 21 May 2008 07:09:00 +0000</pubDate><atom:updated>2008-05-21T00:13:27.574-07:00</atom:updated><title>Enabling Logs for Emulator</title><description>Quite Simple !!!&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Open \epoc32\data\epoc.ini&lt;/li&gt;&lt;li&gt;make LogToDebugger to 1 &amp;amp; save&lt;/li&gt;&lt;li&gt;You can find your log file epocwind.out in windows temproary directory&lt;/li&gt;&lt;li&gt;you can type %temp% in the address bar of explorer to reach the temproary directory.&lt;/li&gt;&lt;/ol&gt;</description><link>http://celluleus.blogspot.com/2008/05/enabling-logs-for-emulator.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7439968566182916943.post-8046274187116420925</guid><pubDate>Tue, 20 May 2008 12:15:00 +0000</pubDate><atom:updated>2008-05-20T05:21:29.933-07:00</atom:updated><title>Self signing your symbian application</title><description>&lt;strong&gt;Target Apps:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Application doesn&#39;t require other than basic capabilities, include LocalServices, NetworkServices, ReadUserData, UserEnvironment and WriteUserData&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Creating Certificates:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&quot;makekeys -cert -password World123 -len 1024 -dname &quot;CN=World User OU=Development OR=WorldCompany CO=FI EM=World@test.com&quot; WorldKey.key WorldCert.cer&quot; - Execute this command in windows command prompt from sis directory &lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Signing Application&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;signsis HelloWorld_unsigned.sis HelloWorld_signed.sis WorldCert.cer WorldKey.key World123&lt;br&gt;&lt;/br&gt;</description><link>http://celluleus.blogspot.com/2008/05/self-signing-your-symbian-application.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7439968566182916943.post-8344865869245086944</guid><pubDate>Fri, 16 May 2008 13:35:00 +0000</pubDate><atom:updated>2008-05-16T06:42:14.328-07:00</atom:updated><title>Symbian OS Stacks</title><description>Symbian OS stacks are fixed in size. They are allocated during the creation of a thread and they do not grow. Once the stack is exhausted there is no dynamic capability for extension&lt;br /&gt;&lt;br /&gt;Symbian OS stacks exist both User and Kernel side.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;User-side stack:&lt;/span&gt;&lt;br /&gt;They are used as temporary scratch storage inside functions or methods. The stack typically grows and shrinks wildly as the thread executes instructions.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Kernal-side Stack:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In EKA2, each thread also has a kernel-side stack, called the supervisor stack. This stack is used for:&lt;br /&gt;&lt;br /&gt;a)executive calls&lt;br /&gt;&lt;br /&gt;b)if a hardware interrupt occurs whilst the thread is running and the interrupt queues IDFCs and/or DFCs&lt;br /&gt;&lt;br /&gt;c)rescheduling. A reschedule always occurs as a result of the current thread calling the scheduler. Inside the scheduler, the current thread’s register state is saved on its supervisor stack and the final stack pointer value is saved in the thread control block. Then the stack pointer is loaded using the new thread’s saved stack pointer value and its register state is restored from the stack (which is now the new thread’s supervisor stack).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Chunk Size:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The minimum amount of RAM required by a stack for a given thread is one page (4kb)&lt;br /&gt;&lt;br /&gt;Currently, the default amount of RAM allocated for the thread’s stack is 8kb. Can be changed using EPOCSTACKSIZE keyword in mmp file&lt;br /&gt;&lt;br /&gt;But the maximum size for a thread is 64 KB&lt;br /&gt;&lt;br /&gt;And maximum size for a process is 2 MB&lt;br /&gt;&lt;br /&gt;stacks are seperated using guard with in a chunck</description><link>http://celluleus.blogspot.com/2008/05/symbian-os-stacks.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7439968566182916943.post-2320548017684797122</guid><pubDate>Fri, 16 May 2008 11:28:00 +0000</pubDate><atom:updated>2008-05-16T05:11:04.270-07:00</atom:updated><title>Symbian OS Heaps</title><description>&lt;span style=&quot;;font-family:times new roman;font-size:100%;&quot;  &gt;Each Symbian application the default Symbian OS RHeap implementation.&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br /&gt;Symbian OS heaps are implemented using a chunk. A chunk is a wrapper around a collection of pages of memory. The minimum size for a chunk is one page of RAM and this is typically 4 KB.&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;;font-family:times new roman;font-size:100%;&quot;  &gt;&lt;br /&gt;&lt;span lang=&quot;EN-GB&quot;&gt;When a process is created, a default heap is created for the main thread of execution within that process.  And this heap has maximum size that a process is allowed to grow in the usage of RAM.  If it goes beyond that  upper limit, memory allocation will fail with KErrNoMemory.&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Process Startup:&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;/span&gt;When the main thread starts&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;;font-family:times new roman;font-size:100%;&quot;  &gt;, Symbian OS E32 Process startup framework creates a chunk in which the heap for the process will live.&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br /&gt;&lt;span lang=&quot;EN-GB&quot;&gt;if your process is called “ProA”, your thread is called “Thr1”, then full name associated with your heap chunk is “ProA::Thr1::$HEAP.”&lt;/span&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br /&gt;Once the chunk is created by the kernel and is mapped into the process , an RHeap object is then allocated in-place at the start of the chunk. Then the heap object is configured with the sizing information from the E32 image header. This object is used to find out the sizes of allocated and unallocated in a chunk / Heap.&lt;/span&gt;&lt;p class=&quot;00BodyText&quot;  style=&quot;margin-bottom: 0.0001pt;font-family:times new roman;&quot;&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;Symbian OS process heaps can be extended using some slack spaces by adding some free cells at the end of the chunk.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;br&gt;&lt;/br&gt;</description><link>http://celluleus.blogspot.com/2008/05/symbian-os-heaps.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7439968566182916943.post-3040816119944832965</guid><pubDate>Thu, 15 May 2008 13:58:00 +0000</pubDate><atom:updated>2008-05-15T07:01:57.602-07:00</atom:updated><title>TTL ( Time-To-Live)</title><description>&lt;p&gt;Time-to-live (TTL) is a value in an Internet Protocol (&lt;a href=&quot;http://searchunifiedcommunications.techtarget.com/sDefinition/0,,sid186_gci214031,00.html&quot; class=&quot;inline&quot;&gt;IP&lt;/a&gt;) &lt;a href=&quot;http://searchnetworking.techtarget.com/sDefinition/0,,sid7_gci212736,00.html&quot; class=&quot;inline&quot;&gt;packet&lt;/a&gt; that tells a network &lt;a href=&quot;http://searchnetworking.techtarget.com/sDefinition/0,,sid7_gci212924,00.html&quot; class=&quot;inline&quot;&gt;router&lt;/a&gt; whether or not the packet has been in the network too long and should be discarded.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;For a number of reasons, packets may not get delivered to their destination in a reasonable length of time. For example, a combination of incorrect routing tables could cause a packet to loop endlessly. A solution is to discard the packet after a certain time and send a message to the originator, who can decide whether to resend the packet.&lt;/p&gt;&lt;p&gt; The initial TTL value is set, usually by a system &lt;a href=&quot;http://whatis.techtarget.com/definition/0,,sid9_gci211923,00.html&quot; class=&quot;inline&quot;&gt;default&lt;/a&gt;, in an 8-&lt;a href=&quot;http://searchcio-midmarket.techtarget.com/sDefinition/0,,sid183_gci213816,00.html&quot; class=&quot;inline&quot;&gt;binary digit&lt;/a&gt; field of the packet header. The original idea of TTL was that it would specify a certain time span in seconds that, when exhausted, would cause the packet to be discarded. Since each router is required to subtract at least one count from the TTL field, the count is usually used to mean the number of router &lt;a href=&quot;http://searchcio-midmarket.techtarget.com/sDefinition/0,,sid183_gci212253,00.html&quot; class=&quot;inline&quot;&gt;hop&lt;/a&gt;s the packet is allowed before it must be discarded. Each router that receives a packet subtracts one from the count in the TTL field. When the count reaches zero, the router detecting it discards the packet and sends an Internet Control Message Protocol (&lt;a href=&quot;http://searchnetworking.techtarget.com/sDefinition/0,,sid7_gci214012,00.html&quot; class=&quot;inline&quot;&gt;ICMP&lt;/a&gt;) message back to the originating host.&lt;/p&gt;&lt;p&gt;The default Windows 95/98 TTL value is 32 hops. Some users recommend changing this to 128 if you have difficulty reaching certain sites. &lt;/p&gt;&lt;p&gt;The &lt;a href=&quot;http://searchnetworking.techtarget.com/sDefinition/0,,sid7_gci214297,00.html&quot; class=&quot;inline&quot;&gt;ping&lt;/a&gt; and the &lt;a href=&quot;http://searchcio-midmarket.techtarget.com/sDefinition/0,,sid183_gci213209,00.html&quot; class=&quot;inline&quot;&gt;traceroute&lt;/a&gt; utilities both make use of the TTL value to attempt to reach a given host computer or to trace a route to that host. Traceroute intentionally sends a packet with a low TTL value so that it will be discarded by each successive router in the destination path. The time between sending the packet and receiving back the ICMP message that it was discarded is used to calculate each successive hop travel time. &lt;/p&gt;&lt;p&gt;Using the &lt;a href=&quot;http://searchnetworking.techtarget.com/sDefinition/0,,sid7_gci212610,00.html&quot; class=&quot;inline&quot;&gt;multicast&lt;/a&gt; IP protocol, the TTL value indicates the scope or range in which a packet may be forwarded.  By convention:&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;sl&gt;&lt;li&gt;0 is restricted to the same host&lt;/li&gt;&lt;li&gt;1 is restricted to the same &lt;a href=&quot;http://searchnetworking.techtarget.com/sDefinition/0,,sid7_gci213065,00.html&quot; class=&quot;inline&quot;&gt;subnet&lt;/a&gt;&lt;/li&gt;&lt;li&gt;32 is restricted to the same site&lt;/li&gt;&lt;li&gt;64 is restricted to the same region&lt;/li&gt;&lt;li&gt;128 is restricted to the same continent&lt;/li&gt;&lt;li&gt;255 is unrestricted&lt;/li&gt;&lt;/sl&gt;&lt;/p&gt;&lt;p&gt;Courtesy:  searchnetworking.techtarget.com&lt;br /&gt;&lt;/p&gt;</description><link>http://celluleus.blogspot.com/2008/05/ttl-time-to-live.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7439968566182916943.post-1211687552825388154</guid><pubDate>Thu, 15 May 2008 11:04:00 +0000</pubDate><atom:updated>2008-05-15T04:06:38.363-07:00</atom:updated><title>RFC&#39;s</title><description>&lt;span style=&quot;font-weight: bold;&quot;&gt;SDP: Session Description Protocol&lt;/span&gt;&lt;br /&gt;           &lt;a href=&quot;http://www.faqs.org/rfcs/rfc4566.html&quot;&gt;http://www.faqs.org/rfcs/rfc4566.html&lt;/a&gt;</description><link>http://celluleus.blogspot.com/2008/05/rfcs.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7439968566182916943.post-4537009840596129931</guid><pubDate>Sat, 03 May 2008 06:43:00 +0000</pubDate><atom:updated>2008-05-02T23:50:24.715-07:00</atom:updated><title>APP_REGISTRATION_INFO</title><description>&lt;font style=&quot;font-weight: bold;&quot; face=&quot;lucida grande&quot;&gt;The registration file&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;font face=&quot;lucida grande&quot;&gt;All applications must provide a registration file. &lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font face=&quot;lucida grande&quot;&gt;A registration file is a standard Symbian OS compiled resource file (.rsc). The .rss file used to build the registration file should be named AppName_reg.rss and contain at least the following lines: &lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font style=&quot;font-style: italic;&quot; face=&quot;lucida grande&quot;&gt;#include appinfo.rh&lt;/font&gt;&lt;br /&gt;&lt;font style=&quot;font-style: italic;&quot; face=&quot;lucida grande&quot;&gt;UID2 KUidAppRegistrationResourceFile &lt;/font&gt;&lt;br /&gt;&lt;font style=&quot;font-style: italic;&quot; face=&quot;lucida grande&quot;&gt;UID3 0x01000000 // application UID &lt;/font&gt;&lt;br /&gt;&lt;font style=&quot;font-style: italic;&quot; face=&quot;lucida grande&quot;&gt;RESOURCE APP_REGISTRATION_INFO&lt;/font&gt;&lt;br /&gt;&lt;font style=&quot;font-style: italic;&quot; face=&quot;lucida grande&quot;&gt;    {&lt;/font&gt;&lt;br /&gt;&lt;font style=&quot;font-style: italic;&quot; face=&quot;lucida grande&quot;&gt;    app_file=&quot;AppName&quot;; // filename of application binary (minus extension)&lt;/font&gt;&lt;br /&gt;&lt;font style=&quot;font-style: italic;&quot; face=&quot;lucida grande&quot;&gt;    }&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font face=&quot;lucida grande&quot;&gt;To build the registration file, add the following lines to the application&#39;s MMP file: &lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font style=&quot;font-style: italic;&quot; face=&quot;lucida grande&quot;&gt;START RESOURCE AppName_reg.rss &lt;/font&gt;&lt;br /&gt;&lt;font style=&quot;font-style: italic;&quot; face=&quot;lucida grande&quot;&gt;TARGETPATH      \private\10003a3f\apps  //Dont think 10003a3f is the uid of the app. &lt;/font&gt;&lt;br /&gt;&lt;font style=&quot;font-style: italic;&quot; face=&quot;lucida grande&quot;&gt;END&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font face=&quot;lucida grande&quot;&gt;The _reg filename suffix is used as a naming convention only and is not mandatory. &lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font face=&quot;lucida grande&quot;&gt;Note that any lines in the MMP file that are used to build an AIF file should be removed. &lt;/font&gt;</description><link>http://celluleus.blogspot.com/2008/05/appregistrationinfo.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7439968566182916943.post-1459814722121580286</guid><pubDate>Tue, 04 Mar 2008 20:53:00 +0000</pubDate><atom:updated>2008-03-05T13:32:21.971-08:00</atom:updated><title>Implementing Active backup</title><description>Yeah.. Its would be really good if you understood the idea / concept behind the backup &amp;amp; Restore.&lt;br /&gt;&lt;br /&gt;If not please refer to my previous post on &quot;Backup &amp;amp; Restore&quot;&lt;br /&gt;&lt;br /&gt;Now its time to code your application / process to interact with Symbian Backup Engine (SBE). That is implementing active backup for your application.&lt;br /&gt;&lt;br /&gt;Before that let me explain few more things.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Backup Listener:&lt;/strong&gt;&lt;br /&gt;You must have a listener class which listens to the events from SBE. It should be an Active Obeject and it should implement MActiveBackupDataClient&lt;br /&gt;class CMyBackupListener : public CActive, public conn::MActiveBackupDataClient&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Signaling from SBE to Listener:&lt;br /&gt;&lt;/strong&gt;The signalling method provided to inform processes that a backup or restore is taking place is via the publish-and-subscribe API. The publish-and-subscribe server maintains a list of subscribers expressing an interest in the backup and restore flag. Any published changes to this flag by the backup and restore engine results in all subscribers being notified. The flag provides information on whether a backup or restore operation is in progress, whether a backup is base or incremental and whether the operation is full or partial. Subscribing to the flag is done via RProperty, which must be used in conjunction with an active object to be notified when the value changes.&lt;br /&gt;The following key and category values should be used (these are defined in epoc32\include\connect\sbdefs.h):&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Category : &lt;/strong&gt;KUidSystemCategoryValue&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Key : &lt;/strong&gt;KUidBackupRestoreKey&lt;br /&gt;&lt;br /&gt;The following code fragment demonstrates this:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;#include RProperty iProperty;&lt;br /&gt;iProperty.Attach(KUidSystemCategory, KUidBackupRestoreKey);&lt;br /&gt;CActiveScheduler::Add(this);&lt;br /&gt;iStatus = KRequestPending;&lt;br /&gt;iProperty.Subscribe(iStatus);&lt;br /&gt;SetActive(); // In CMyBackupListener::RunL, you will get the notification&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;Yep. You got a notification from SBE that its going to backup the data. How to make connection with SBE then?&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Connecting to SBE: &lt;/strong&gt;&lt;br /&gt;Once you got the notification from SBE, then make a connection as follows&lt;br /&gt;&lt;br /&gt;&lt;em&gt;iConn = conn::CActiveBackupClient::NewL(this); // Listener is again the observer for this&lt;br /&gt;iConn -&gt;ConfirmReadyForBURL(KErrNone);&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;yes.. we initimated SBE that we are ready for backup.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Hereafter you will start getting events from SBE to backup and restore. Its up to the application writer, what data to be backed up and what not to be. Because its active backup method &lt;br /&gt;&lt;br /&gt;If its passive, it would have been already mentioned in the backup registration file and the fact is that the data owning process need not to be run at that time.&lt;br /&gt;&lt;br /&gt;As you know the active backup expects the data owning processes need to be run. So, a question should flash in your mind here.&lt;br /&gt;&lt;br /&gt;“Where did we mention which process to be expected to run?”&lt;br /&gt;&lt;br /&gt;Yeah.. Here is the answer&lt;br /&gt;&lt;br /&gt;It should be mentioned in the backup registration file. The following is the syntax of that.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;xml version=&quot;1.0&quot; standalone=&quot;yes&quot;?&lt;br /&gt;backup_registration&lt;br /&gt;active_backup process_name = &quot;Myprocess&quot; requires_delay_to_prepare_data = &quot;yes&quot;&lt;br /&gt;backup_registration&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;&lt;strong&gt;Conclusion:&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;When your phone is connected to PC, the SBE from backup software signals all the processes that are registered for the backup process. (obviously by referring the backup registration files )&lt;br /&gt;&lt;br /&gt;On receiving those events, the process creates a connection (CActiveBackupClient)&lt;br /&gt;&lt;br /&gt;Then Processes receive events from SBE and they backups the data they wish. The same way as restore.</description><link>http://celluleus.blogspot.com/2008/03/implementing-active-backup.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7439968566182916943.post-1295895896507093736</guid><pubDate>Mon, 03 Mar 2008 13:11:00 +0000</pubDate><atom:updated>2008-03-05T22:18:45.972-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Application Backup</category><category domain="http://www.blogger.com/atom/ns#">Backup and Restore</category><category domain="http://www.blogger.com/atom/ns#">Symbian OS</category><title>&quot;Backup &amp; Restore&quot; for symbian OS applications</title><description>&lt;span style=&quot;font-family:georgia;&quot;&gt;Do you want to upgrade your phone? Then what about your existing application data? Ok. Lets take a backup of them and upgrade your phone. &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:georgia;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:georgia;&quot;&gt;Symbian OS includes software to carry out backup and restore operations to and from a connected PC. In order to do this, the applications should be made aware of backup and restore. &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:georgia;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style=&quot;font-family:georgia;&quot;&gt;Make your application &quot;Intelligent&quot; &lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style=&quot;font-family:georgia;&quot;&gt;Before making your application aware of the backup and restore, Determine the following: &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:georgia;&quot;&gt;1. What are the contents to be backed up? &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:georgia;&quot;&gt;Private data? yes. ok. Do you wish to backup the complete private directory or specific files? &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:georgia;&quot;&gt;Public data? yes. Then where its located? &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:georgia;&quot;&gt;Do you want to backup system directory?&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:georgia;&quot;&gt;2. Do you want to use Active backup or passive method? &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:georgia;&quot;&gt;Have you got the answers for this? If yes, then write them up in a file. Yes that is called &quot;backup registration file&quot; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:georgia;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:georgia;&quot;&gt;Wait... wait.. Tell me onething.. Are you clear with the concept of backup and restore?? Nope?? Then read the below paragraphs :) &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:georgia;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style=&quot;font-family:georgia;&quot;&gt;Backup Operation &lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style=&quot;font-family:georgia;&quot;&gt;Hi dudes (processes in the phone) I am Mr.backup. I want to store all of your data&#39;s safely. Could you please let me do my job? &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:georgia;&quot;&gt;Ok Mr.Backup... we are all releasing our resources for the time being, you copy our data into PC :) &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:georgia;&quot;&gt;Yes.. A backup operation needs to read files so processes must relinquish exclusive-locks on files but can retain read-locks (although in practice many processes just relinquish all locks for the sake of safety and simplicity). In order for a backup operation to take place, applications and servers must flush any pending updates to files and allow all files to be read (but cached data can be retained as backup will not alter data files). When the backup has taken place, servers and applications can re-take file locks and carry on. &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:georgia;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style=&quot;font-family:georgia;&quot;&gt;Restore Operation &lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style=&quot;font-family:georgia;&quot;&gt;A restore operation requires exclusive access to files so processes must relinquish all locks on files. In order for a restore operation to take place, applications and servers must discard all cached data and allow files to be written or overwritten. When the restore has taken place, servers and applications must reload their data from files that can be expected to have changed. &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:georgia;&quot;&gt;Hopefully it better explained about the resposibilities of the application / process, when backup &amp;amp; restore takes place. &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:georgia;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:georgia;&quot;&gt;Now lets see what is active and passive ways of backup.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:georgia;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:georgia;&quot;&gt;There are two ways of backing up private data: &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:georgia;&quot;&gt;1. &lt;strong&gt;Active backup &lt;/strong&gt;of private data. In this model, the process which owns the data, registers with the secure backup engine using a &lt;strong&gt;registration file&lt;/strong&gt;. The secure backup engine will start any process registered for active backup if not already started. The data owning process then responds to a central signal when a backup or restore operation takes place and actively provides its private data to or receives it from the secure backup engine. This requires that the data-owning process include &lt;strong&gt;specific code to take part &lt;/strong&gt;in backup and restore operations, and that it must be running when a backup or restore takes place. In this model the data-owning process registers with the secure backup engine but exercises complete control of which data is backed up and restored. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family:georgia;&quot;&gt;2. &lt;strong&gt;Passive backup &lt;/strong&gt;of private data. In this model, the process which owns the data, registers with the secure backup engine using a &lt;strong&gt;registration file &lt;/strong&gt;and records whether executables, private files or directories of private files should be backed up. The data-owning process then releases file locks for private files in the same way as for public files (described above) and the files are backed up by the secure backup engine (which has the required capability to access private data files belonging to other processes). &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:georgia;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:georgia;&quot;&gt;Now lets concentrate on Backup_registration.xml file format&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:georgia;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:georgia;&quot;&gt;&lt;strong&gt;Basic application backup&lt;/strong&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:georgia;&quot;&gt;The following represent the minimum you have to do for the backup of your application. Write a backup_registration.xml file as shown below&lt;please&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:georgia;&quot;&gt;&lt;em&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;xml version=&quot;1.0&quot; standalone=&quot;yes&quot;&lt;br /&gt;backup_registration&lt;br /&gt;system_backup&lt;br /&gt;restore requires_reboot=&quot;no&quot;&lt;br /&gt;backup_registration&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;em&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;strong&gt;add it into your pkg file: &lt;/strong&gt;&lt;br /&gt;&lt;em&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&quot;backup_registration.xml&quot;-&quot;!:\private\\backup_registration.xml&quot; &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Adding private data into the backup &lt;/strong&gt;&lt;br /&gt;Another common requirement would be to save the content of your private directory (located in \private\). This is done by adding the following declaration in your backup_registration.xml file&lt;br /&gt;&lt;em&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;passive_backup&lt;br /&gt;include_directory name=&quot;\&quot;&lt;br /&gt;passive_backup&lt;br /&gt;&lt;/span&gt;&lt;/em&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;/span&gt;&lt;br /&gt;You can also decide to save all your private directory but a &#39;nobackup&#39; subdirectory:&lt;br /&gt;&lt;em&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;passive_backup&lt;br /&gt;include_directory name=&quot;\&quot;&lt;br /&gt;exclude name = &quot;\nobackup\&quot;&lt;br /&gt;include_directory&lt;br /&gt;passive_backup&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/em&gt;You may also prefer to specify files instead of directories:&lt;br /&gt;&lt;em&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;include_file name=&quot;important.dat&quot;&lt;br /&gt;include_file name=&quot;me_too.dat&quot; &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/em&gt;&lt;strong&gt;Adding public data into the backup &lt;/strong&gt;&lt;br /&gt;In the paragraph above, the &quot;\&quot; directory is referring to your application private directory. So how to save data when they are located outside of your private area ? This is done by simply using another xml tag. Replace by and the path will be relative to the root directory of the phone file system (you don&#39;t need to specify the drive):&lt;br /&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;em&gt;public_backup&lt;br /&gt;include_directory name=&quot;C:\MyData&quot;&lt;br /&gt;public_backup&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;em&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;Okay.. The blog is increasing in length. I will stop here. Hope its somewhat useful to understand the idea behind the backup &amp;amp; Restore. I will give the complete details, how to use symbian backup engine in your code to make your application aware of backup &amp;amp; Restore.&lt;br /&gt;&lt;br /&gt;Bye for now. Comments are welcome. That will help me to put my points correctly as this is my first ever blog :)&lt;br /&gt;&lt;span style=&quot;font-family:georgia;&quot;&gt;&lt;em&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;include_directory name=&quot;C:\MyData&quot;&gt;&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;</description><link>http://celluleus.blogspot.com/2008/03/backup-restore-for-symbian-os.html</link><author>noreply@blogger.com (Unknown)</author><thr:total>0</thr:total></item></channel></rss>