symbian programming overview l.
Skip this Video
Loading SlideShow in 5 Seconds..
Symbian Programming Overview PowerPoint Presentation
Download Presentation
Symbian Programming Overview

Loading in 2 Seconds...

  share
play fullscreen
1 / 24
Download Presentation

Symbian Programming Overview - PowerPoint PPT Presentation

paul2
452 Views
Download Presentation

Symbian Programming Overview

- - - - - - - - - - - - - - - - - - - - - - - - - - - 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