Symbian Programming Overview. 6.893 Spring 2004: Symbian Larry Rudolph How to program Cellphone?...

Post on 21-Jan-2016

223 views 0 download

Tags:

Transcript of Symbian Programming Overview. 6.893 Spring 2004: Symbian Larry Rudolph How to program Cellphone?...

Symbian Programming

Overview

6.893 Spring 2004: Symbian Larry Rudolph

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

6.893 Spring 2004: Symbian Larry Rudolph

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

6.893 Spring 2004: Symbian Larry Rudolph

Overview of SymbianSymbian 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

6.893 Spring 2004: Symbian Larry Rudolph

A little history

Started in early days of C++

Goal to be

real-time

small footprint

small touch-screen

integrated

secure & reliable

6.893 Spring 2004: Symbian Larry Rudolph

Biggest Security Flaws

Applications must be certifiedIf not certified, user choice to continueApplications either GUI or Server

a server app can easily hideFile system not fully exposed to userFile system has no access control lists

despite kernel/user execution, any application can do anything

Application can control all keys

6.893 Spring 2004: Symbian Larry Rudolph

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

6.893 Spring 2004: Symbian Larry Rudolph

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

6.893 Spring 2004: Symbian Larry Rudolph

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

6.893 Spring 2004: Symbian Larry Rudolph

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

6.893 Spring 2004: Symbian Larry Rudolph

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

6.893 Spring 2004: Symbian Larry Rudolph

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”

6.893 Spring 2004: Symbian Larry Rudolph

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

6.893 Spring 2004: Symbian Larry Rudolph

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

6.893 Spring 2004: Symbian Larry Rudolph

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

6.893 Spring 2004: Symbian Larry Rudolph

Throwing exceptions

User::Leave()

of allocation runs out of memory in a

new(ELeave)

6.893 Spring 2004: Symbian Larry Rudolph

Descriptors

TBuf

TBufC

HBufC

TPtr

TPtrC

6.893 Spring 2004: Symbian Larry Rudolph

Active Scheduler

Non-preemptive scheduler

Create a scheduler

Post wait for event(s)

Return to scheduler

Handle event

6.893 Spring 2004: Symbian Larry Rudolph

6.893 Spring 2004: Symbian Larry Rudolph

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

6.893 Spring 2004: Symbian Larry Rudolph

O2S Planner

Better support for publish-subscribe

Easier to piece together application

Better Human support

6.893 Spring 2004: Symbian Larry Rudolph

More on O2S

Branch in O2S CVS directory

easier to ask for help

Name stuff based on group name

can easily find each other

6.893 Spring 2004: Symbian Larry Rudolph

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

6.893 Spring 2004: Symbian Larry Rudolph

Mosquito