Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom...

53
Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck

Transcript of Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom...

Page 1: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Vakgroep Informatietechnologie

Deel III: Paradigma’s Software Ontwikkeling

4. Ontwerp van Telecom Services

Prof.Dr.Ir. Filip De Turck

Page 2: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Vakgroep Informatietechnologie

Domotica Telecom Services

Page 3: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Software Ontwikkeling I

Home Use case

Television

Television

Service GatewaySiemens Pylix / Porta

RFID reader

RFID reader

User with tag and PDA

1

Multimedia Content Provider

1

1

Page 4: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Software Ontwikkeling I

Need for User Priorities

Television

Television

RFID reader

RFID reader

User with tag and PDA

2

Multimedia Content Provider

1

2

2

User with tag and PDA

1

User Priority

1 3

2 5

Service GatewaySiemens Pylix / Porta

Home Use Case (with user priorities) :

User Policies are not

supported in OSGi

-> research topic

Page 5: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Software Ontwikkeling I

Need for Service Priorities

User with PDA

Television

Television

Service Gateway

RFID reader

RFID reader

1

Multimedia Content Provider

End user Service

Priority

Video on demand

1

Surveillance 9

User without valid RFiD tag

Home Surveillance

Service

1DANGER

DANGER

Home Use Case (with user priorities) :

Page 6: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Software Ontwikkeling I

User with PDA

Television

Television

Service Gateway

RFID reader

RFID reader

1

Multimedia Content Provider

End user Service

Priority

Video on demand

1

Surveillance 9

User without valid RFiD tag

Home Surveillance

Service

1DANGER

DANGER

Home Use Case (with service priorities) :

Page 7: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Software Ontwikkeling I

Technical realization of user and service policy enforcement

Television

Service Gateway Multimedia Content Provider

End user Service

Priority

Video on demand

1

Surveillance 9

Home Surveillance

Service

UPnP Media Streamer

UPnP Media Render

OSGi Service Gateway

Page 8: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Software Ontwikkeling I

Home networks

Intelligente Router Gateway tot het home netwerk Besturing security systeem

Software + framework Complete afscherming

gebruiker (black box)

Home netwerk Apparaten Protocollen

Vermelde technologieën X10 OSGi

Software

Elektriciteitsnet

X10

USB

Page 9: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Software Ontwikkeling I

X10

Intelligente router

Apparaat

X10 Controller

X10 Module

Lichtnet

opdracht

adres commando Voor mij?

Page 10: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Software Ontwikkeling I

Cross compiling

Makefile

CC=/usr/crossdev/mips/bin/mips-linux-gccLD=/usr/crossdev/mips/bin/mips-linux-ldall: testtest: test.c $(CC) -g -c test.c $(LD) -o test test.o –lc –lx10# $(CC) -static -o test test.c libx10.aclean: rm -f test *.o

Page 11: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Software Ontwikkeling I

Example Code#include <stdio.h>#include "x10_api.h"

void new_error_handler(int code, char *arg, struct x10_status_t *status);

void function_hook(unsigned char house, int unit, int function, int dim_level, struct x10_status_t *status);

int main(int argc,char **argv) { struct x10_status_t *status; int return_code;

/* We open the API */ if(!(status=x10_open("/dev/ttyS0", new_error_handler,

function_hook, 10000000))) { fprintf(stderr,"Could not open the serial port %s !\

n",argv[1]); exit(1); }

printf("\n\nNow turning ON the A5 module ...\n"); return_code = x10_send_cmd('A', 5, X10_CMD_ON, 0, status); printf("x10_send_cmd return code = %d\n",return_code);

x10_close(status);}

Page 12: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Vakgroep Informatietechnologie

Enabling Java-based VoIP backend platformsthrough JVM performance tuning

Page 13: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Software Ontwikkeling I

Outline

Introduction Java 4 Telecom Evaluation Setup Java Virtual Machine

Default behavior Possible Optimizations Optimized Behavior

Results Conclusions

Page 14: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Software Ontwikkeling I

Introduction

Software backend platforms are increasingly popular in VoIP offerings.

Java is currently one of the most popular programming languages for implementing business logic.

Is Java suitable for implementing VoIP and telecom related applications?

Java Application Servers for Telecom related applications are emerging: SIP Servlet JAIN SLEE

Page 15: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Software Ontwikkeling I

Telecom Applications: VoIP

Telecom related applications have very specific requirements Low Latency High Throughput

Example: Softswitch How fast can it set up a call? How many calls can in set up per second?

Java 4 Telecom?

Page 16: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Software Ontwikkeling I

Java Virtual Machine: Features

Java Byte Code is executed by a virtual Machine This makes it platform independent

Java features automatic Memory Management and a Garbage Collector This simplifies the task of the developer

Page 17: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Software Ontwikkeling I

Java Virtual Machine: Problems

Java Byte Code is executed by a virtual Machine This can be a performance penalty

Java features automatic Memory Management and a Garbage Collector This can cause a performance penalty due to

unpredictable behavior of the system.

Page 18: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Software Ontwikkeling I

Evaluation: Proxy 200 benchmark

OK [200]

BYE

ACK

OK [200]

Ringing [180]

Trying [100]Invite

Invite

Ringing [180]

OK [200]

ACK

BYE

OK [200]

Media transfer

Alice Proxy Bob

Measured Time Interval

No Media Session started when

benchmarking

Page 19: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Software Ontwikkeling I

Evaluation Setup: Hardware

Alice

Bob

Proxy

Perform routing

Internet

Dual Opteron1.6Ghz 2GB RAMLinux kernel 2.6

Page 20: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Software Ontwikkeling I

Evaluation Setup: Software

SIP Servlet BEA Weblogic SIP Server

JAIN SLEE Open Cloud Rhino

Benchmark software SIPp (test tool / traffic generator for the SIP

protocol)

Page 21: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Software Ontwikkeling I

SIP Servlet: Architecture

Container basedLife cycle managementManage network listen

points

Very similar to HTTP-Servlet

SIP Protocol SpecificRequest Response

Model Container

JAIN SIP Servlet API

SIP Stack

Application

Ser

vlet

Ser

vlet

ApplicationApplication

Ser

vlet

Ser

vlet

Ser

vlet

Ser

vlet

Application client

SIP Servlet Server

Container

JAIN SIP Servlet API

SIP Stack

Application

Ser

vlet

Ser

vlet

ApplicationApplication

Ser

vlet

Ser

vlet

Ser

vlet

Ser

vlet

Container

JAIN SIP Servlet API

SIP Stack

ApplicationApplication

Ser

vlet

Ser

vlet

ApplicationApplication

Ser

vlet

Ser

vlet

Ser

vlet

Ser

vlet

Ser

vlet

Ser

vlet

Application client

SIP Servlet Server

Page 22: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Software Ontwikkeling I

JAIN SLEE: Architecture

Container basedLife cycle management

Protocol AgnosticResource Adaptors

allow protocols to be “plugged in”

Manage network Listen Points

Event driven and asynchronous

JAIN SLEEContainer

JAIN SLEE SBB API

SIP RA

JAIN SIP

Proxy

SB

B

Act

ivity

ctx

Proxy

SB

B

Act

ivity

ctx

Application

JCC RA

JAIN JCC

JAIN SLEE Server

JAIN SLEEContainer

JAIN SLEE SBB API

SIP RA

JAIN SIP

Proxy

SB

B

Act

ivity

ctx

Proxy

SB

B

Act

ivity

ctx

Application

JCC RA

JAIN JCC JAIN SLEEContainerJAIN SLEEContainer

JAIN SLEE SBB API

SIP RA

JAIN SIP

SIP RA

JAIN SIP

ProxyProxy

SB

B

Act

ivity

ctx

Proxy

SB

B

Act

ivity

ctx

Application

JCC RA

JAIN JCC

JCC RA

JAIN JCC

JAIN SLEE Server

Application client

Page 23: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Software Ontwikkeling I

0 50 100 150 200 2500

20

40

60

80

100

120

140

160

180

200R

espo

nse

time

(ms)

Call Rate (caps)

Response time as a function of call rate and system load

0 50 100 150 200 2500

10

20

30

40

50

60

70

80

90

100

Sys

tem

Loa

d (%

)

Average response time

50th percentile95th percentile

System load

Results: SIP Servlet (default)

25 ms

50 ms

Page 24: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Software Ontwikkeling I

Cause of the problems?

Memory Management and Garbage Collector

Legend

Heap Usage

GC-Time

GC-occurrence

Tenured Gen.

Young Gen.

long lasting GC

heap resizing

low response time

Image created with gcviewer (http://www.tagtraum.com/gcviewer.html)

Page 25: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Software Ontwikkeling I

Solution: Virtual Machine Tuning

Memory Organization

Garbage Collection

Page 26: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Software Ontwikkeling I

Young generation

Tenured generation

Ede

n

Sur

vivo

rS

urvi

vor

Virt

ual

Virt

ual

Virt

ual

Ten

ured

Per

m

Perm generationTiny Survivor Spaces

Virt

ual

Virt

ual

Ten

ured

Per

m

Ede

n

Memory Tuning

Fixed Young Generation Size

Total Heap Size large enough

Other Generation Sizes NOT Fixed

Page 27: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Software Ontwikkeling I

Default

All generations

Parallel &Concurrent

All generations

Concurrent

Only for tenuredgeneration

Parallel

Only for younggeneration

Garbage Collector Tuning

Long GC pauses

Multi-threaded GC

GC partially parallel with Application Execution

Performance implications:More resources are spent on Garbage Collection

Page 28: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Software Ontwikkeling I

Tuning Options

-Xmx512m -XX:MaxNewSize=32m -XX:NewSize=32m

-XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:+CMSIncrementalPacing -XX:CMSIncrementalDutyCycleMin=0 -XX:CMSIncrementalDutyCycle=10

-XX:+UseTLAB

-XX:MaxTenuringThreshold=0 -XX:SurvivorRatio=128

Sizing of the memory

generations

Selection of the Garbage Collector

Allow multi-threaded memory

allocation

Move long living objects to Tenured

Generation

Page 29: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Software Ontwikkeling I

Problems solved?

Legend

Heap Usage

GC-Time

GC-occurrence

Tenured Gen.

Young Gen.

No long lasting GC

No heap resizing

low response time

Image created with gcviewer (http://www.tagtraum.com/gcviewer.html)

Page 30: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Software Ontwikkeling I

Results: SIP Servlet

0 50 100 150 200 2500

20

40

60

80

100

120

140

160

180

200R

espo

nse

time

(ms)

Call Rate (caps)

Response time as a function of call rate and system load

0 50 100 150 200 2500

10

20

30

40

50

60

70

80

90

100

Sys

tem

Loa

d (%

)

Average response time

50th percentile95th percentile

System load

25 ms

50 ms

Higher CPU load

Improved Latencies

Page 31: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Software Ontwikkeling I

Results: JAIN SLEE (untuned)

0 50 100 150 200 2500

20

40

60

80

100

120

140

160

180

200R

espo

nse

time

(ms)

Call Rate (caps)

Response time as a function of call rate and system load

0 50 100 150 200 2500

10

20

30

40

50

60

70

80

90

100

Sys

tem

Loa

d (%

)

Average response time

50th percentile95th percentile

System load

25 ms

50 ms

Page 32: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Software Ontwikkeling I

Results: JAIN SLEE

0 50 100 150 200 2500

20

40

60

80

100

120

140

160

180

200R

espo

nse

time

(ms)

Call Rate (caps)

Response time as a function of call rate and system load

0 50 100 150 200 2500

10

20

30

40

50

60

70

80

90

100

Sys

tem

Loa

d (%

)

Average response time

50th percentile95th percentile

System load

25 ms

50 ms

Page 33: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Software Ontwikkeling I

Conclusions

Java Technologies can simplify the Design and Management of Telecom and VoIP related applications

Java Virtual Machine Tuning can improve the Java Garbage Collection significantly

Java Application Servers combined with appropriate tuning can meet strict Low Latency Requirements

Page 34: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Vakgroep Informatietechnologie

Telecom Services on handheld devices

Page 35: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Software Ontwikkeling I

Handheld devices – different OS

In-house / specificWindows Mobile

Symbian OSEmbedded Linux

Palm OSBlackBerry

Page 36: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Software Ontwikkeling I

Handheld devices – J2ME

Device / Hardware

Native Operating System

Configuration

ProfileOptional

Packages

Vendor-specificclasses

Applications

• modular and scalable architecture

• Configuration: CLDC / CDC

• Profiles: MIDP / FP / P (basis) P

• Mobile phones: MIDP 2.0

CLDC 1.1

“MIDlet (suite)”

• WMA, MMAPI, Bluetooth APIs

• Nokia UI

Page 37: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Software Ontwikkeling I

Handheld devices – J2ME

Development steps for a MIDP application

1. Compilation using an ordinary Java compiler

2. Conversion of the classes to CLDC format (preverification)

3. Creation of the manifest file

4. Packaging into a JAR-file (+ creation of the JAD-file)

5. Installation onto the target device

- through WAP

- through PC-connection (e.g. Nokia’s PC Suite)

SUN’s WTK

IDE Netbeans Mobility Pack

Page 38: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Software Ontwikkeling I

Handheld devices – J2MECode Examples

• Webaccess - through HttpConnection String getViaHttpConnection(String url) throws IOException { HttpConnection c = null; InputStream is = null; StringBuffer str = new StringBuffer(); try { c = (HttpConnection)Connector.open(url); // Getting the InputStream will open the connection and read the HTTP headers.

// They are stored until requested. is = c.openInputStream(); // Get the length and process the data int len = (int)c.getLength(); int ch; while ((ch = is.read()) != -1) { str.append((char)ch); } } finally { if (is != null) is.close(); if (c != null) c.close(); }

Page 39: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Software Ontwikkeling I

Handheld devices – J2MECode Examples

• SIP - JSR 180 “SIP API for J2ME”

- defined as Optional Package

- minimum requirements: CLDC 1.0

public void sendTextMessage(String msg) {

SipClientConnection sc = null;

try {

// open SIP connection

sc = (SipClientConnection) Connector.open("sip:[email protected]:5060");

// initialize SIP request MESSAGE

sc.initRequest("MESSAGE", null);

// set some headers

sc.setHeader("From", "sip:[email protected]");

sc.setHeader("Subject", "testing...");

...

Page 40: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Software Ontwikkeling I

Handheld devices – J2MECode Examples

...// write message bodysc.setHeader("Content-Type", "text/plain");sc.setHeader("Content-Length", Integer.toString(msg.length()));OutputStream os = sc.openContentOutputStream();os.write(msg.getBytes());os.close();// close stream and send the message to the network// wait max 15 seconds for responsesc.receive(15000);// response receivedif(sc.getStatusCode() == 200) {

// handle 200 OK response } else {

// handle other responses } sc.close();

} catch(Exception ex){// handle Exceptions }

}

Page 41: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Software Ontwikkeling I

Handheld devices – J2MECode Examples

Video Service - JSR 135 MMAPI (Mobile Media API)- provides a framework for playing media content - designed to run with any protocol and format

The method below plays a video file the on mobile device:... Player p;VideoControl vc;try {

p = Manager.createPlayer(“rtsp://server/somemovie.mpg");p.realize();// get video controlvc = (VideoControl) p.getControl("VideoControl"); .... p.start();

} catch(IOException ioe) { } catch(MediaException me) { } ...

Note: This will only work on devices which support real time input streams!

Page 42: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Software Ontwikkeling I

Handheld devices -Windows CE

Windows CE = a modular OS that serves as the foundation of several classes of devices

Windows Mobile = a subset of platforms based on Windows CE

- high market share in the PDA market (~50%)

- 2003 - Pocket PC

- Smartphone

- Pocket PC Phone Edition

- 5.0 - Pocket PC

- Smartphone

- Portable Media Center

The Operating System

Page 43: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Software Ontwikkeling I

Handheld devices - Windows CE

Software development

• native code - Visual C++

- high performance

- direct hardware access

- smallest footprint

• managed code through the .NET CF

- Visual Basic and Visual C#

- Rapid Application Development

- No bad pointers or memory leaks

Page 44: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Software Ontwikkeling I

Handheld devices - Windows CE

- subset of the .NET framework

- base class libraries + few additional libraries

- 2 versions : 1.0 (2003 / 2003 SE) & 2.0 (5.0)

.NET Compact Framework

VisualC#

code

VisualC#

code

Visual Basiccode

Visual Basiccode

Compiler

Compiler

Common Intermediate

Language

Common Intermediate

Language

Common Intermediate

Runtime

Common Intermediate

Runtime

01110100101011010101

Common Language Infrastructure

Page 45: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Software Ontwikkeling I

Handheld devices - Windows CECode Examples

• Webaccess - through System.Net.WebClient The following example takes the URI of a resource, retrieves it, and displays the response.

…if (args == null || args.Length == 0) { throw new ApplicationException ("Specify the URI of the resource to retrieve."); } WebClient client = new WebClient ();

// Add a user agent header in case the requested URI contains a query. client.Headers.Add ("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT

5.2; .NET CLR 1.0.3705;)");

Stream data = client.OpenRead (args[0]); StreamReader reader = new StreamReader (data); string s = reader.ReadToEnd (); Console.WriteLine (s); data.Close (); reader.Close (); }…

Page 46: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Software Ontwikkeling I

Handheld devices - Windows CECode Examples

• SIP

• Since Windows CE 4.2 : VoIP TUI is a fully functional, customizable, and extensible suite of common telephony features for users.

• Third party SIP API : http://www.independentsoft.com/

RTC API Core

SIP

Transmission Control Protocol/Internet Protocol (TCP/ IP)

Media Manager

Windows CE .NET VoIP Middleware(incl. VoIPMgr)

DatabasesProvisioners

MS RTP

Windows CE .NET VoIP UIWindows CE .NET User

Application3rd Party User Applications

Point-To-Point Protocol (PPP)

Serial Drivers

Network Driver Interface Specification(NDIS)

Hardware

Page 47: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Software Ontwikkeling I

Handheld devices - Windows CECode Examples

using Independentsoft.Sip;

using Independentsoft.Sip.Sdp;

client = new SipClient("sipdomain.com","Bob","password");

client.ReceiveRequest += new ReceiveRequestEventHandler(OnReceiveRequest);client.ReceiveResponse += new ReceiveResponseEventHandler(OnReceiveResponse);

client.Connect();client.Register("sip:test.com", "sip:[email protected]", "sip:[email protected]");

Console.WriteLine("Send message to Alice or press \"q\" to exit.");string message = "";

while(message != "q"){Console.Write("Bob:");message = Console.ReadLine(); client.SendMessage("sip:[email protected]","sip:[email protected]",message);}

client.Disconnect();}

private static void OnReceiveRequest(object sender, RequestEventArgs e) { client.AcceptRequest(e.Request);

if(e.Request.Method == SipMethod.Message){Console.WriteLine("Alice:"+e.Request.Body);}

Page 48: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Software Ontwikkeling I

Handheld devices - Windows CE

Code Examples• Video service - through e.g. DirectX 9.0 SDK

using Microsoft.DirectX.AudioVideoPlayback;public class MyVideoPlayer : System.Windows.Forms.Form{ ... private void OpenFile() { try { Video ourVideo = new Video("C:\\Example.avi"); ... } } ... }

Page 49: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Software Ontwikkeling I

Handheld devices – Symbian OS

• multitasking OS designed for 2.5G and 3G mobile phones

• very high market share in the smartphone market (~70%)

• the successor of the Epoc OS

• started as version 6.0 and currently into version 9.2

• advanced, open standard OS to its licensees

• (Sony) Ericsson, Nokia, Panasonic, Samsung and Siemens

• software development: J2ME and Symbian C++

The Operating System

Page 50: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Software Ontwikkeling I

Handheld devices – Symbian OS

• ≠ standard C++

• offers highest performance and functionality on Symbian OS

• 4 standardized software frameworks

Resolution (pixels) User Interaction

UIQ 208-240 x 320pen-based

(+ small keyboard)

Series 60 176 x 208 central navigation key

Series 80 / 9200 Series 640 x 200 full keyboard

Series 90 640 x 320 pen-based

Symbian C++

• code not complete portable between the different frameworks ( ~ 80 %)

Page 51: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Software Ontwikkeling I

Handheld devices – Symbian OS

Code Examples

• Webaccess

void CHttpClient::InvokeHttpMethodL(const TDesC8& aUri, RStringF aMethod)    {    ...    TUriParser8 uri;     uri.Parse(aUri);    RHTTPTransaction trans = iSession.OpenTransactionL(uri, *iTransObs, aMethod);    ...    };

- creating a transaction

- opening a session

class CHttpClient : public CBase, ...    {...

private:    RHTTPSession iSession;    ...   };

CHttpClient::CHttpClient()    {...    iSession.OpenL();

    ...}

Page 52: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Software Ontwikkeling I

Handheld devices – Symbian OS

Code Examples

• SIP - Nokia plugin for Series 60, 2nd Edition

- integrated in Series 60 Platform, 3rd Edition (v9.1)

iSIP = CSIP::NewL(KAppUid, *iMySIPObserver); iConnection = CSIPConnection::NewL(*iSIP, KIapIdentifier, *iMyConnectionObserver);

- initiation of the SIP client API

- registration of a SIP user

CleanupStack::PushL(aor);

CSIPAddress* addr = CSIPAddress::DecodeL(_L8("sip:[email protected]"));

CleanupStack::PushL(addr);

CSIPContactHeader* contact = CSIPContactHeader::NewL(addr);

CleanupStack::Pop(addr);

CleanupStack::PushL(contact);

CSIPRefresh* refresh = CSIPRefresh::NewLC(); iRegistration =

CSIPRegistrationBinding::NewL(*iConnection, aor, contact, refresh);

CleanupStack::Pop(3);

Page 53: Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 4. Ontwerp van Telecom Services Prof.Dr.Ir. Filip De Turck.

Software Ontwikkeling I

Handheld devices – Symbian OS

Code Examples• Video service - CVideoPlayerUtility provides a simple interface to

open, play and obtain information from sampled video data. The video data can be supplied either in a file, a descriptor or a URL

- streaming supported ( MVideoLoadingObserver)

class CRMMVideoRenderer : public CBase, public MVideoPlayerUtilityObserver, public MVideoLoadingObserver {private: CVideoPlayerUtility* iVideoPlayerUtility; …}

…iVideoPlayerUtility = CVideoPlayerUtility::NewL( *this, iPriority, iPref, iWindowSession, *iScreenDevice, iDisplayWindowhandle, iDisplayWindowRect, iClipWindowRect )

…// turn on the status reporting for connecting, buffering, and re-bufferingiVideoPlayerUtility->RegisterForVideoLoadingNotification(*this);

…// load a videostreamTRAPD( err, iVideoPlayerUtility->OpenUrlL( iUrl, iIapId, iMimeType, iControllerUid ) ); if ( err != KErrNone ) {

iObserver->ErrorMsg(err);}