37
Rapport de projet fin d’étude Client VoIP/SIP RATP Alaeddine MESBAHI Shuting WANG Encadré par : Sébastien LERICHE Laurent BERNARD Yves PREMEL-CABIC

Rapport de projet fin d’étude - academiepro.com · Rapport de projet fin d’étude Client VoIP/SIP RATP Alaeddine MESBAHI Shuting WANG Encadré par : Sébastien LERICHE Laurent

Embed Size (px)

Citation preview

Rapport de projet fin d’étude Client VoIP/SIP RATP

Alaeddine MESBAHI Shuting WANG

Encadré par :

Sébastien LERICHE

Laurent BERNARD

Yves PREMEL-CABIC

Contenu 1. Contexte .......................................................................................................................................... 4

2. Expression des besoins .................................................................................................................... 4

a. Besoins utilisateurs ...................................................................................................................... 5

b. Propositions de mise en œuvre ................................................................................................... 5

3. Choix d’un système d’exploitation mobile ...................................................................................... 5

4. Client SIP .......................................................................................................................................... 6

5. Propositions d'interfaces graphiques ............................................................................................ 11

6. Interactions SIP entre client et serveur ......................................................................................... 14

7. Architecture technique et fonctionnelle ....................................................................................... 15

a. Appel SIP .................................................................................................................................... 16

b. Ajout d’un compte ..................................................................................................................... 17

c. Java Native Interface: ................................................................................................................ 18

d. PJSIP: .......................................................................................................................................... 18

e. Caractéristique technique de PJSIP : ......................................................................................... 18

f. PJSUA & PJSIP-JNI : .................................................................................................................... 19

g. Une architecture en couche : .................................................................................................... 20

8. Diagramme de séquence ............................................................................................................... 21

9. Spécifications techniques .............................................................................................................. 26

a. Appel SIP .................................................................................................................................... 26

i. Création d’un vue .................................................................................................................. 26

ii. La classe principale « HandiDialer.java » .............................................................................. 27

iii. Intégration la classe « HandiDialer.java » au « SipHome.java » ........................................... 29

b. Comptes..................................................................................................................................... 30

i. Gestion automatique des comptes au démarrage de l’application ...................................... 30

ii. Ajouter d’un compte ............................................................................................................. 30

iii. Résolution DNS ...................................................................................................................... 31

10. Tests........................................................................................................................................... 32

a. Environnement de test .............................................................................................................. 32

b. Test qualité de la voix ................................................................................................................ 33

c. Test communication avec adresse IP ........................................................................................ 33

d. Test avec résolution DNS ........................................................................................................... 34

e. Téléchargement et installation de l’application ........................................................................ 34

11. Planning prévisionnel d'implémentation .................................................................................. 35

12. Conclusion ................................................................................................................................. 37

1. Contexte La RATP souhaite mettre à la disposition de ses usagers à mobilité réduite des outils leur facilitant

l’utilisation du réseau ferré d’île de France. Dans le cadre de cette politique de modernisation, une

mission étudie la faisabilité de la mise en place d’un service permettant à une personne à mobilité

réduite d’établir une communication vocale rapidement et simplement avec un agent de la RATP

pour qu’il puisse lui venir en aide.

Cette communication sera établie à partir du téléphone mobile de l’usager à travers le réseau sans fil

déployé au sein de la station RATP et par conséquent sans passer par le réseau GSM/3G d’un

opérateur.

Ce service a pour vocation d’être proposé sur des smartphones supportant l’installation

d’applications tierces, comme l’iPhone d’Apple ou les terminaux utilisant l’OS libre Android de

Google, et nécessitera la mise en œuvre de différentes technologies gravitant autour de la voix sur

IP.

La solution sans fil ciblée dans cette étude est la technologie WiFi.

2. Expression des besoins Le but du projet est développer une application mobile d’interphonie sur IOS ou Android au-dessus d’une couche WIFI.

Description globale du besoin :

Choix d’un système d’exploitation mobile

Choix d’un client SIP open source existant sur cet OS

Développement d’une application « Interphone » à partir ce client

Tests de l’application sur des serveurs de VoIP (OpenSIPS, Asterisk)

Optionnel :

Implémentation de la partie serveur en se basant sur des briques SIP libres

(OpenSIPS/Asterisk)

Utilisateurs : Equipe projet RATP

a. Besoins utilisateurs Ce chapitre décrit les besoins utilisateurs concernant l’application Client SIP.

BU-1 Mise en place une interface graphique

L’application doit avoir une interface graphique d’accueil, qui a deux fonctions principales : Appel et

Raccroche.

BU-2 Fonction Initialisation

L’application doit avoir une fonction d’initialisation, qui permet de configure et initialiser logiciel.

BU-3 Fonction Ajout un compte

L’application doit avoir une fonction d’ajouter un compte SIP, le nom d’utilisateur, le Domain et le

mot de passe.

BU-4 Fonction Appel

L’application doit avoir une fonction d’appeler qui permet de réaliser une communication vocale.

BU-5 Fonction Raccroche

L’application doit avoir une fonction d’raccrocher qui permet de terminer la communication vocale.

BU-6 Fonction Destruction

L’application doit avoir une fonction de purger l’espace utilisée.

b. Propositions de mise en œuvre Ce scénario consiste à fournir une solution aux besoins utilisateurs cités ci-dessus.

On traitera les parties suivantes :

Interactions SIP entre client et serveur

Choix d’un système d’exploitation mobile

Interface proposée

Choix d’un client SIP open source existant sur cet OS

La description du fonctionnement globale de l’application

3. Choix d’un système d’exploitation mobile Dans cette partie, nous allons comparer les deux systèmes d’exploitation mobiles Android et IOS.

IPhone iOS

L’environnement de développement pour l’iPhone est Xcode. Iphone est basé sur le système MAC OS

ou UNIX, il n’est donc pas compatible avec Windows.

Le développement d’applications pour iPhone OS se fait avec Objective C, une extension du langage

C, orienté objet et réflexif.

Andoid

Le développement d’applications pour Android se fait en Java. Java est un puissant langage orienté objet, utilisé très largement dans le monde du développement.

Le développement d’applications Android est possible aussi bien sur Eclipse, que sur Apache Ant ou JDK. C’est pourquoi le développement d’applications Android est possible aussi bien sur Windows que sur Linux ou Mac.

Après la comparaison, nous avons choisi Android comme support d’application.

4. Client SIP Plusieurs clients SIP sur android ont été comparés sur plusieurs aspects, le but de cette étude

comparative est de choisir le client open-source qui correspond aux besoins du projet, et qui

permettra d’avoir une bonne assise pour la suite du projet.

IMSDroid

IMSDroid est le premier client open-source IMS pour les plateformes android. Le but principal de ce

projet basé sur la plateforme doubango est de proposer un client IMS complet à la communauté

open-source. Doubango est un projet expérimental open-source pour les framework 3GPP IMS/LTE à

la fois pour les systèmes embarqué (Android, Windws Mobile, Symbian, iPhone, …) et les postes de

travail (Windows XP/Vista/7, MAC OS X, GNU Linux, …).

L’implémentation SIP est basée sur le RFC 3261 et 3GPP TS 24.229 Rel-9, ce qui le rend compatible

avec tous les SIP registrar.

Le projet offre un nombre très impressionnant de fonctionnalités orienté IMS :

SIP (RFC 3261, 3GPP TS 24.229 Rel-9)

IMS-AKA (RFC 3310, 3GPP TS 33.203, 35.205, 35.206, 35.207, 35.208 and 35.909)

Private extension headers for 3GPP

IPv4/IPv6 dual stack

UDP, TCP, TLS and SCTP

Service-Route Discovery (RFC 3608)

Proxy-CSCF discovery using DHCPv4/v6 or/and DNS NAPTR

SigComp (RFC 3320, 3485, 4077, 4464, 4465, 4896, 5049, 5112 and 1951)

IPSec

Security Agreement (RFC 3329)

NAT Traversal (STUN, TURN and ICE)

Preconditions (RFC 3312, 4032 and 5027)

SMS over IP (3GPP TS 23.038, 24.040, 24.011, 24.341 and 24.451)

ENUM (RFC 3761)

The tel URI for Telephone Numbers (RFC 3966)

SIP SIMPLE (Presence Subscription/Publication and Pager Mode IM)

MMTel (UNI)

SDP (RFC 3264)

RTP/RTCP

XCAP (RFC 4825)

MSRP (RFC 4975 and 5547)

Audio/Video (AMR, Speex, G.711, GSM, H.264, H.263, Theora...)

...

Protocole supportés :

SIP/SigComp

SDP

RTP/RTCP

XCAP (RFC 4825)

MSRP/MSRPS (RFC 4975 and 5547)

HTTP/HTTPS (RFC 2616 and 2617)

DHCPv4 (RFC 2131)

DHCPv6 (RFC 3315)

DNS (RFC 1034, 1035, 3401, 3402, 3403, 3404, 3596, 2035, 2671, and 2782)

Le projet IMSDroid est un géré bar [email protected] responsable de l’évolution et des versions officielles. Le projet est très actif sur le plan code et la documentation est relativement abondante.

Le projet reste cependant complexe, et propose un nombre très important de fonctionnalités qui ne sont pas en relation avec ce projet.

aSIP

Le projet aSIP dont le but était de développer la pile SIP pour android est inactif depuis des années

(15 septembre 2008). Le code du projet est toujours disponible sur le site de google code, sauf que

qu’aucune documentation n’est disponible, et personne n’anime le projet.

Linphone

L’entreprise Linphone propose une variété de client SIP open-source sur plusieurs plateformes (Linux,

Windows, Android, …). Son client VoIP fonctionnant sur wifi et 3G est très stable et suit une ligne de

développement fixe.

Nous avons cependant eu énormément de difficultés pour avoir des informations sur le

fonctionnement interne ou sur la documentation du projet. La mailing list [linphone-developpers]

sert principalement à annoncer les nouvelles fonctionnalités et les trains d’évolution du projet.

SipDroid

Sipdroid est un client VOIP open-source donnant la possibilité de passer et de recevoir des appels

téléphoniques par Internet en utilisant un compte SIP.

Le projet SIPDroid est très actif avec une communauté de développeurs assez large. SIPDroid ne

s’insprie dans son développement d’aucun projets externes, ce qui oblige à tout refaire depuis le

début.

Le forum dédié au projet est très actif, plus de 1000 message ont été posté, et plus de 30 membre

participe activement à ce projet.

Le code de SIPDroid est assez complexe comparé aux autres projets. De plus la documentation

technique ne couvre que la configuration et la manipulation de l’outil. Aucune documentation

n’aborde les aspects techniques du développement.

D’un point de vue qualité sonore et ergonomie, malgré les avancées qu’a réalisées l’outil depuis ses

débuts, l’application reste difficile à manipuler, et la qualité sonore est très mauvaise.

CSIPSimple

CSIPsimple est un nouveau projet comparé à son concurrent SIPDroid. Le principal avantage de cet

outil est sa qualité sonore du fait qu’il se base sur une librairie SIP externe dédiée aux systèmes

embarqués.

La communauté active sur le projet se compose de 5 membres et la documentation reste assez rare.

Cependant le projet PJSIP sur lequel est basé CSIPSimple est très mature, la documentation est de

très bonne qualité et le cycle de développement est très stable.

CSIPSimple étant dans ses débuts, le code reste relativement simple comparé à SIPDroid.

CSIPSimple bénéficie d’une excellente qualité sonore, et reste très facile à manipuler et configurer.

5. Propositions d'interfaces graphiques RATP a besoin une interface graphique offrant deux fonctionnalités : « appel » et « raccroche ».

Nous nous sommes inspirés du code source d’applications existantes « VoiDroid » dont voici

l’interface de ce logiciel :

Le fichier « main.xml » géré le modèle d’interface. Après avoir bien compris la structure de ce fichier,

nous avons changé le style de l’interface :

1. Nom de logiciel : HandiRATP

2. Un logo de RATP

3. Deux buttons « call » et « Hangup » pour les fonctions « appel » et « raccroche »

Voici une proposition beta de test de l’interface :

Ceci est l’interface du prototype finale. Le bouton Hangup a été supprimé, et une nouvelle activité

est chargée au moment de l’appel. Cette activité rappelle l’état de la communication (En appel, En

conversation, …).

6. Interactions SIP entre client et serveur

Dans ce schéma :

1. Le SmartPhone se connecte au réseau WIFI et demande une adresse IP

2. Le Serveur de l’agence RATP distribue une adresse IP

3. Configuration du Client SIP et appel de l’agentRATP

4. Le Serveur transmet l’appel au Téléphone IP

5. Appel accepté

6. Connexion vocale est en cours

7. Architecture technique et fonctionnelle Nous avons commencé par la manipulation du code Voidroid et la libraire PJSUA, ce qui nous a

permis de bien comprendre le processus des communications SIP.

Après avoir consacré plusieurs semaines de travailler dessus, nous avons constaté qu’il était très

difficile de reconstruire le processus des communications SIP à partir Voidroid pour les raisons

suivantes :

- Voidroid ne fonctionne pas sur mobile

- Les fonctions Voidroid sont incomplètes

Nous avons donc décidé d’utiliser CSipSimple et de modifier son code natif. Nous avons modifié deux

parties du code source du CSipSimple principalement : Appel SIP et Comptes

1. Demande l’adresse IP2. Distribution de l’adresse IP3. Appel du Agence RATP

4. Transmission de l’appel

5. Appel accepté

6. Appel accepté

a. Appel SIP Dans la classe « SipHome.java » qui gère la page d’accueil, plusieurs Tabs sont disponibles. En

appuyant sur chaque tab, vous pouvez accéder à la vue qui y correspond.

- Vue « Tél » :

CSipSimple a deux interfaces dans la vue « Tél », L’interface « Numéro » et l’interface « SIP Adress ».

En prenant comme argument le numéro de téléphone ou l’adresses SIP, on peut appeler le client en

appuyant sur le bouton « appel ».

- Vue « Appels » :

Vue « Appels » se charge d’enregistrer tous les appels dans l’historique.

Dans le cadre de notre application, L’URI SIP est intégré dans l’outil. Nous avons utilisé un fichier XML

« main.xml » se trouvant dans « res/layout/ » pour décrire le style de la page d’accueil d’HandiRATP.

Dans cette vue, le bouton à l’extrémité de l’interface est lié à la même fonction que CSipSimple.

CSipSimple

Appel classique

Appel sip Configuration

Média Réseau

Comptes

b. Ajout d’un compte Quand nous utilisons CSipSimple de façon normale, et afin de créer un compte avec une adresse IP, il

faut se trouver dans le menu « Comptes » et choisir le type de compte « LOCAL », et par la suite

entrer le nom du compte. Ci-dessous est le processus d’ajout d’un compte local dans CSipSimple :

Dans notre cas, nous avons défini un compte par défaut avec l’URI « usager@Adresse IP», pendant

l’utilisation d’HandiRATP, ce compte est utilisé pour appeler et recevoir.

WizardsChooser.java AccountList.java

CSipSimple

HandiRATP

BasePrefsWizards.java (Utilisant le

model du « LOCAL »

c. Java Native Interface: JNI est un framework de programmation permettant à un code Java tournant sur une machine

virtuelle (JVM) d’appeler ou d’être appelé par une application native (Programme ou application

spécifique à un hardware ou un système d’exploitation), des librairies ou une application codé dans

un autre langage (C/C++, assembleur).

d. PJSIP: PJSIP est une librairie SIP open-source sous licence GPL, dont la principale caractéristique est la

performance et l’empreinte digitale très petite et très adaptée pour les systèmes embarqués. La

libraire est écrite en C afin de garantir le niveau de performance et d’évolutivité requis.

En plus de la vocation de servir pour des systèmes embarqués, la libraire PJSIP permet de créer des

applications avec des stacks protocolaire très performant. Elle a d’ailleurs été utilisé dans plusieurs

client SIP. Pour n’en citer que quelques ‘un :

CSIPSimple

Yass

Siphon

PuppySIP

e. Caractéristique technique de PJSIP : Portabilité : PJSIP a été conçu dans le but d’être extrêmement portable et fonctionnant sur plusieurs

plateformes logicielle et matérielles (16 bit, 32 bit, 64 bit, big endian, little endian, multi-proc).

Taille : L’un des point pris en compte lors du développement de PJSIP est la taille très petite de la

libraire afin qu’elle soit adaptée pour les systèmes embarquée avec de forte contrainte d’espace de

stockage.

Performance : PJSIP permet d’avoir les meilleures performances sur la machine hôte, chose que nous

avons constaté lors de nos tests de CSIPSimple et SIPDroid, qui était largement moins performant en

qualité sonore.

Allocation mémoire : Afin d’assurer les performance les plus optimales, PJSIP n’utilise pas la fonction

malloc() pour l’allocation de mémoire, mais puise ses ressources dans un espace mémoire allouée au

début de lancement de l’application. Ce choix d’architecture permet des gains de performance allant

à 30 plus rapide avec certaine configuration.

Abstraction du système d’exploitation : PJSIP est capable de faire abstraction des fonctionnalités suivantes du système d’exploitation, souvent non portable entre système d’exploitation :

Threads Thread Local Storage. Mutexes. Semaphores. Atomic Variables Critical sections. Lock Objects Event Object. Time Data Type and Manipulation. High Resolution Timestamp etc.

f. PJSUA & PJSIP-JNI : PJSUA est théoriquement la couche supérieure de PJSIP. Elle offre un nombre très importants de

fonctions et méthodes dont le but est d’abstraire les couches inférieur (réseau socket, codec, QoS,

…), tout en faisant appel aux méthodes simples, comme l’enregistrement, l’appel, …

PJSUA est la seule partie de PJSIP avec des interfaces JNI. Le projet open-source PJSIP-JNI a été utilisé

par le projet CSIPSimple pour s’interfacer avec PJSIP.

Le projet a appliqué quelques modifications sur le PJSIP-JNI afin de le rendre plus adapté pour

l’environnement android.

g. Une architecture en couche : L’architecture de notre application s’inspire de l’architecture de CSIPSimple. Cette dernière utilise un

interfaçage JNI avec la librairie PJSIP afin de profiter de la puissance et la performance de PJSIP écrite

en C++ tout en gardant le confort la simplicité proposée par la machine virtuelle d’android.

Le fonctionnement de l’application est très simple. La gestion des évènements, l’interface graphique

et l’intelligence de l’application sont toutes dans la partie client écrite en JAVA. Pour faire appel aux

fonctions PJSIP, comme l’enregistrement ou la réalisation d’un appel, le client fait appel aux

interfaces JNI de PJSIP, ou pour être plus précis, de la partie PJSUA de PJSIP. L’interface JNI fait appel

à son tour aux vraies fonctions PJSUA pour réaliser les fonctions d’enregistrement et d’appel.

8. Diagramme de séquence Quand le client lance l’application « HandiRATP », elle sera initialisée premièrement, ensuite elle

attend des actions. Si le client appuie sur Botton « Call », l’application va lancer la fonction Appel,

nous allons spécifier l’action « Appel » en diagramme de séquence :

Nous nous sommes inspiré des sources de l’application « VoiDroid », et les libraires de « CSipSimple »

pour ce projet :

Lancer l’application

h HandiRATP pj pjsua

destroy()

Lancer l’appel

Terminer l’appel

Voici le code de la fonction « OnCreate » de « VoiDroid »:

Ci-dessous les algorithmes des fonctions modifiées:

Initialisation :

Created = false;

Creating = false;

Si Created et Creating sont vrais faire

Status = 0 : Int

Configuration globale

Configuration log

Configuration media

Status=pjsua.initialisation()

Si Status n’est pas 1 alors faire

Pjsua.destroy()

Created = false

Creating = false

Retourner ;

Fin si

Ajouter Tansport UDP

Status = pjsua.start()

Si stauts n’est pas 1 alors

Pjsua.destroy ()

Created = false

Creating = false

Retourner

Fin si

Created = true

Creating = false

Fin si

Ajout un compte SIP

Status=0 : Int

accId = int[1] : int[]

Cfg : pjsua_acc_config

Username : pj_str_t

Domain : pj_str_t

Password : pj_str_t

Data: pjsip_cred_info

Data.setRealm(domain)

Data.setUsername(username)

Data.setData(password)

Cfg.setId(sip:username@domain)

Status = pjsua.acc_add(cfg, accId)

Si status n’est pas 1 alors

acc_id = acid[0];

Fin Si

Retourner status

Appel

Status : int

Adress : pj_str_t // adresse SIP cible

Status = pjsua.call_make_call (status, adresse)

Return Status

Voici le diagramme de séquence de la fonction « Appel » :

Raccroche

Status : int

Adress : pj_str_t // adresse SIP cible

Status = pjsua.call_hangup_all (status, adresse)

Pjsua.destroy();

Return Status

9. Spécifications techniques L’objet du présent chapitre est de détailler les spécifications techniques pour l’application android

HandiRATP.

Ce document est destiné :

- Aux enseignants

- Aux étudiants qui poursuivront le développement de l’application

- A la RATP

HandiRATP se base sur le code source de CSipSimple. Ci-dessous l’architecture de ce dernier :

Nous avons modifié deux parties du code source du CSipSimple : Appel SIP et Comptes. Nous avons

également modifié les options de résolution DNS de l’outil. Ce rapport détaillera les modifications et

changements apportées.

a. Appel SIP

i. Création d’un vue

Dans répertoire « res/layout », se trouve le fichier « main.xml » décrivant le style de la page

d’accueil :

Action appel =

f >0

h HandiRATP pj pjsua

R

Status=pjsua_verify_sip_url( url)

f S >0

ii. La classe principale « HandiDialer.java »

Cette classe est créée à partir d’une classe « Dialer.java », elle permet :

- La création automatique d’un compte automatique (Voir 2.2.2.)

- L’intégration de l’interface « main.xml » dans la classe principale

- L’ajout d’une fonction « placeCall » associée au bouton « Call »

TextView

ImageView

Botton

Dans la classe « HandiRATP », l’identifiant de l’usager et de l’agent RATP « [email protected] » ont été

définis. Pour démarrer un appel, il faut utiliser la fonction « placeCall ». Dans cette fonction, n appel

à la méthode « makeCall » se charge de lancer le service SIP.

iii. Intégration la classe « HandiDialer.java » au « SipHome.java »

b. Comptes

i. Gestion automatique des comptes au démarrage de l’application

Après le lancement de CSipSimple, l’activité Comptes est lancée dans le cas où c’est le premier

démarrage de l’application, sinon, HandiRATP désactive cette activité.

ii. Ajouter d’un compte

Pour créer un compte SIP dans « CSipSimple », il faut procéder de façon manuelle. Nous utilisons

l’identifiant : « usager@Adresse IP » comme URI SIP pour la création du compte. Au lancement de

l’application, le compte est créé automatiquement.

Ce type de compte identifié avec adresse IP est associé au compte « LOCAL », déjà défini dans

« CSipSimple ». D’où l’utilisation de l’identifiant LOCAL dans le WIZARD_ID qui indique le template à

utiliser :

Ensuite le transmettre à une autre activité « BasePrefsWizard », qui aide à créer un compte

« LOCAL »:

La classe « BasePrefsWizard.java » vérifie si compte est déjà créé, sinon procède à sa création :

iii. Résolution DNS

L’architecture réseau se basait sur des requêtes DNS type SRV, conformément à la norme SIP.

L’activation de ce type de résolution DNS est gérée par le HashMap BOOLEAN_PREFS.

Src/utils : preferenceWrapper.java :

Res/xml: prefs_network.xml

Fichier « prefs_network.xml » gère l’activation de l’option DNS SRV sur l’interface graphique (Cocher ou pas) ; « preferenceWraper.java » gère pour sa part la vraie configuration réelle de cette option.

10. Tests Ceci sont les principaux jalons sur lesquels nous avons travaillé durant les phases de tes :

a. Environnement de test L’environnement de test qui a été mis à notre disposition se compose des briques suivantes :

- Une machine virtuelle sous Debian Lenny

- Serveur DHCPDHCP3

- Serveur SIP OpenSIPS

- Serveur DNS BIND9

- Borne wi-fi linksys

- Téléphone samsung sous android v1.6

- Téléphone HTC Hero sous android 2.0

Toutes les briques logicielles utilisées sont issues du monde opensource et requiert un effort de

configuration relativement important.

Sur le serveur DHCP, il faut indiquer le bloc IP géré, les adresses du serveur DNS, du gateway et le

mask du bloc IP.

Le serveur DNS est responsable (master) du domaine ratp.fr, et référence l’adresse du serveur SIP

(sip.ratp.fr).

Le serveur SIP est en charge de l’enregistrement des agents de la RATP, dans notre cas,

« [email protected] ».

Qualité de voix CSipSimple

Code Java HandiRATP

Etablissement de la connexion

(Appel à 10.0.0.x)

Résolution DNS

(Appel à [email protected])

Prototype

Un softphone SIP est installé sur une des machines de test, et permet de simuler le poste du client de

l’agent de la RATP.

b. Test qualité de la voix Le premier test que nous avons effectué dans le cadre de ce projet, est le test de la qualité Voix des

deux softphones CSIPSimple et SipDroid.

L’environnement de test est très simple, en configurant de comptes locaux sur les softphones et en

requêtant le client SIP sur nos machines de test, on était capable de tester, d’une part la facilité de

configurations de ces clients, et deuxièmement

c. Test communication avec adresse IP Ce test a pour but de s’assurer que l’application respectait le échanges SIP, et que les champs

modifiés (SIP URI, Domain_Name) était bien prise en compte.

Nous avons donc pu établir des communications avec un client SIP sur une des machines de test.

Durant ces phases de test, notre application avait un champ spécial pour indiquer l’adresse du client

à contacter, afin de faciliter et simplifier les tests.

d. Test avec résolution DNS Les tests de résolution DNS avaient pour but de s’assurer que l’application effectuait correctement

l’opération de résolution du nom de domaine ratp.fr.

En utilisant un capteur de trafic installé sur le serveur DNS, il était possible d’écouter les requêtes

émises (ou non émises) par l’application HandiRATP.

Comme indiqué dans les chapitres précédents, nous avons constaté plusieurs problèmes de

résolution DNS que nous avons résolu en modifiant le type de requête émises par l’application.

e. Téléchargement et installation de l’application Un des scénarios qui nous a été inspiré M. LERICHE était l’utilisation d’une affiche publicitaire avec un

tag QRCode renvoyant vers le lien de l’application.

11. Planning prévisionnel d'implémentation

12. Conclusion Nous espérons que ce rapport fournit une idée claire sur le fonctionnement d’HandiRATP, et sur les

différentes modifications appliquées à CSIPSimple.

La section spécification technique détaille le fonctionnement de l’application, et a pour but de

faciliter la reprise de ce projet pour de nouvelles évolutions.

Une des points importants que nous avons constaté durant nous travaux, est l’importance de

l’environnement de test, en passant par le téléphone mobile, la borne wifi jusqu’au serveur. Il est

primordial que toutes ces briques soient opérationnelles, car il est souvent impossible de déterminer

la cause de plusieurs difficultés et problèmes de connexion et de communication que nous avons

constatée.

Nous tenons finalement à remercier tous nos encadrants pour leurs soutien et leurs aide précieuse,

que sans, sera projet n’aurait certainement pas pu aboutir à sa fin.