240 likes | 720 Views
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
E N D
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 • 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
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
A little history • Started in early days of C++ • Goal to be • real-time • small footprint • small touch-screen • integrated • secure & reliable
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
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
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
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
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
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
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”
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);
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
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
Throwing exceptions • User::Leave() • of allocation runs out of memory in a • new(ELeave)
Descriptors • TBuf • TBufC • HBufC • TPtr • TPtrC
Active Scheduler • Non-preemptive scheduler • Create a scheduler • Post wait for event(s) • Return to scheduler • Handle event
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
O2S Planner • Better support for publish-subscribe • Easier to piece together application • Better Human support
More on O2S • Branch in O2S CVS directory • easier to ask for help • Name stuff based on group name • can easily find each other
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