1 / 24

Symbian Programming Overview

Symbian Programming Overview How to program Cellphone? Limited to Series 60 phones Java MidP 2.0 (see wiki, forums) compile offline and load limited API C++ full API non-standard C++ Python -- coming soon Getting App onto Phone Compile application into .app

paul2
Download Presentation

Symbian Programming Overview

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Symbian Programming Overview

  2. How to program Cellphone? • Limited to Series 60 phones • Java MidP 2.0 (see wiki, forums) • compile offline and load • limited API • C++ • full API • non-standard C++ • Python -- coming soon

  3. Getting App onto Phone • Compile application into .app • Create package file (.pkg) • resources files, libraries • including a digitally signed certificate -- authentication -- and author’s key (.cer and .key) • Installation file (.sis) via makesis tool • Transfer to phone via email or bluetooth and then user installs

  4. Overview of Symbian • Symbian is a company that produces an operating system • Originally developed for handheld Psion and called Epoc Operating System • Symbian is 40% owned by Nokia, partly owned by Sony Ericson, partly owned by Psion, and others • Require 70% agreement to make basic changes

  5. A little history • Started in early days of C++ • Goal to be • real-time • small footprint • small touch-screen • integrated • secure & reliable

  6. Biggest Security Flaws • Applications must be certified • If not certified, user choice to continue • Applications either GUI or Server • a server app can easily hide • File system not fully exposed to user • File system has no access control lists • despite kernel/user execution, • any application can do anything • Application can control all keys

  7. Biggest Programming Issue • System may run for years • Persistent state across power downs • addressbook application may never terminate • Small memory leaks accumulate over time • Must write perfect leak-free code! • unachievable goal • try anyway

  8. Why will there be Memory Leaks • No garbage collection • No memory protection • no page tables • No “try”, “throw”, “catch” • operating systems calls • trap harness and leave • Silly naming conventions

  9. Keep track of all allocated objects • Always keep live pointer to anything allocated in heap • can use pointer to deallocate • extra care when constructing compound classes • Deallocate after use

  10. Stacks • Objects allocated at top of stack • Top of stack disappears when procedure returns • Cannot construct objects on stack since they maybe constructed in procedure • Objects go in heap • No reference counts on objects

  11. Heap allocation • Within one procedure: • Allocate pointer to heap object • Allocate (construct) object on heap • Use object • Deallocate object on heap • Deallocate pointer to heap object

  12. Pointer to object not on stack • If pointer is on stack, what happens when there is an exception? • may pop out several levels of stack • Need to put objects on different type of stack • one that does not disappear during exception • keep pointers in heap on “cleanup stack”

  13. Cleanup Stack • Cleanup Stack resides in heap • what if Construct causes exception? • Class* self = new(ELeave) Class(aInt) • CleanupStack::PushL(self) • self->Construct(aObj); • CleanupStack::Pop(self);

  14. Exception Handling • On exception, cleanup stack is popped and objects are removed. • (always check for null pointers) • Exceptions may be handled far back in time of program execution

  15. In the days before “try” • TRAPD(error, callExampleL() ); • void CreateObject() { • Object* obj = new (ELeave) Object • Trapd is a trap harness • It calls proceedure callExample() • Normal return, TRAPD continues • Exception, has error set to code

  16. Throwing exceptions • User::Leave() • of allocation runs out of memory in a • new(ELeave)

  17. Descriptors • TBuf • TBufC • HBufC • TPtr • TPtrC

  18. Active Scheduler • Non-preemptive scheduler • Create a scheduler • Post wait for event(s) • Return to scheduler • Handle event

  19. O2S How it helps you • Overcome firewalls • Overcome IP address, Dynamic DNS • do not have to program in the names of all services & devices • Publish and subscribe facility • HUB is useful resource • Python based • UI independence

  20. O2S Planner • Better support for publish-subscribe • Easier to piece together application • Better Human support

  21. More on O2S • Branch in O2S CVS directory • easier to ask for help • Name stuff based on group name • can easily find each other

  22. Eye-toy • Playstation 2 game • Camera watches user • Identify body outline, especially hands and head • Hands punch virtual characters • Head hits balloon or soccer ball

  23. Mosquito

More Related