Académique Documents
Professionnel Documents
Culture Documents
dtude
Client VoIP/SIP RATP
Encadr par :
Sbastien LERICHE
Laurent BERNARD
Yves PREMEL-CABIC
Alaeddine MESBAHI
Shuting WANG
Contenu
1.
Contexte .......................................................................................................................................... 4
2.
Besoins utilisateurs...................................................................................................................... 5
b.
3.
4.
5.
6.
7.
b.
c.
d.
PJSIP:.......................................................................................................................................... 18
e.
f.
g.
8.
9.
ii.
iii.
b.
10.
Comptes..................................................................................................................................... 30
i.
ii.
iii.
a.
b.
c.
d.
e.
11.
12.
Conclusion ................................................................................................................................. 37
1. Contexte
La RATP souhaite mettre la disposition de ses usagers mobilit rduite des outils leur facilitant
lutilisation du rseau ferr dle de France. Dans le cadre de cette politique de modernisation, une
mission tudie la faisabilit de la mise en place dun service permettant une personne mobilit
rduite dtablir une communication vocale rapidement et simplement avec un agent de la RATP
pour quil puisse lui venir en aide.
Cette communication sera tablie partir du tlphone mobile de lusager travers le rseau sans fil
dploy au sein de la station RATP et par consquent sans passer par le rseau GSM/3G dun
oprateur.
Ce service a pour vocation dtre propos sur des smartphones supportant linstallation
dapplications tierces, comme liPhone dApple ou les terminaux utilisant lOS libre Android de
Google, et ncessitera la mise en uvre de diffrentes technologies gravitant autour de la voix sur
IP.
La solution sans fil cible dans cette tude est la technologie WiFi.
Optionnel :
a. Besoins utilisateurs
Ce chapitre dcrit les besoins utilisateurs concernant lapplication Client SIP.
BU-1 Mise en place une interface graphique
Lapplication doit avoir une interface graphique daccueil, qui a deux fonctions principales : Appel et
Raccroche.
BU-2 Fonction Initialisation
Lapplication doit avoir une fonction dinitialisation, qui permet de configure et initialiser logiciel.
BU-3 Fonction Ajout un compte
Lapplication doit avoir une fonction dajouter un compte SIP, le nom dutilisateur, le Domain et le
mot de passe.
BU-4 Fonction Appel
Lapplication doit avoir une fonction dappeler qui permet de raliser une communication vocale.
BU-5 Fonction Raccroche
Lapplication doit avoir une fonction draccrocher qui permet de terminer la communication vocale.
BU-6 Fonction Destruction
Lapplication doit avoir une fonction de purger lespace utilise.
Andoid
Le dveloppement dapplications pour Android se fait en Java. Java est un puissant langage orient
objet, utilis trs largement dans le monde du dveloppement.
Le dveloppement dapplications Android est possible aussi bien sur Eclipse, que sur Apache Ant ou
JDK. Cest pourquoi le dveloppement dapplications Android est possible aussi bien sur Windows
que sur Linux ou Mac.
Aprs la comparaison, nous avons choisi Android comme support dapplication.
4. Client SIP
Plusieurs clients SIP sur android ont t compars 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 davoir 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 exprimental open-source pour les framework 3GPP IMS/LTE
la fois pour les systmes embarqu (Android, Windws Mobile, Symbian, iPhone, ) et les postes de
travail (Windows XP/Vista/7, MAC OS X, GNU Linux, ).
Limplmentation SIP est base 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 trs impressionnant de fonctionnalits orient IMS :
IMS-AKA (RFC 3310, 3GPP TS 33.203, 35.205, 35.206, 35.207, 35.208 and 35.909)
SigComp (RFC 3320, 3485, 4077, 4464, 4465, 4896, 5049, 5112 and 1951)
IPSec
MMTel (UNI)
RTP/RTCP
...
Protocole supports :
SIP/SigComp
SDP
RTP/RTCP
DNS (RFC 1034, 1035, 3401, 3402, 3403, 3404, 3596, 2035, 2671, and 2782)
aSIP
Le projet aSIP dont le but tait de dvelopper la pile SIP pour android est inactif depuis des annes
(15 septembre 2008). Le code du projet est toujours disponible sur le site de google code, sauf que
quaucune documentation nest disponible, et personne nanime le projet.
Linphone
Lentreprise Linphone propose une varit de client SIP open-source sur plusieurs plateformes (Linux,
Windows, Android, ). Son client VoIP fonctionnant sur wifi et 3G est trs stable et suit une ligne de
dveloppement fixe.
Nous avons cependant eu normment de difficults pour avoir des informations sur le
fonctionnement interne ou sur la documentation du projet. La mailing list [linphone-developpers]
sert principalement annoncer les nouvelles fonctionnalits et les trains dvolution du projet.
SipDroid
Sipdroid est un client VOIP open-source donnant la possibilit de passer et de recevoir des appels
tlphoniques par Internet en utilisant un compte SIP.
Le projet SIPDroid est trs actif avec une communaut de dveloppeurs assez large. SIPDroid ne
sinsprie dans son dveloppement daucun projets externes, ce qui oblige tout refaire depuis le
dbut.
Le forum ddi au projet est trs 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 loutil. Aucune documentation
naborde les aspects techniques du dveloppement.
Dun point de vue qualit sonore et ergonomie, malgr les avances qua ralises loutil depuis ses
dbuts, lapplication reste difficile manipuler, et la qualit sonore est trs mauvaise.
CSIPSimple
CSIPsimple est un nouveau projet compar son concurrent SIPDroid. Le principal avantage de cet
outil est sa qualit sonore du fait quil se base sur une librairie SIP externe ddie aux systmes
embarqus.
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 trs mature, la documentation est de
trs bonne qualit et le cycle de dveloppement est trs stable.
CSIPSimple tant dans ses dbuts, le code reste relativement simple compar SIPDroid.
CSIPSimple bnficie dune excellente qualit sonore, et reste trs facile manipuler et configurer.
Le fichier main.xml gr le modle dinterface. Aprs avoir bien compris la structure de ce fichier,
nous avons chang le style de linterface :
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 linterface :
Ceci est linterface du prototype finale. Le bouton Hangup a t supprim, et une nouvelle activit
est charge au moment de lappel. Cette activit rappelle ltat de la communication (En appel, En
conversation, ).
Dans ce schma :
1.
2.
3.
4.
5.
4. Transmission de
lappel
5. Appel
accept
1. Demande ladresse
2.
IP Distribution de ladresse
IP3. Appel du Agence
6.
Appel
RATP
accept
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.
Aprs avoir consacr plusieurs semaines de travailler dessus, nous avons constat quil tait trs
difficile de reconstruire le processus des communications SIP partir Voidroid pour les raisons
suivantes :
-
Nous avons donc dcid dutiliser CSipSimple et de modifier son code natif. Nous avons modifi deux
parties du code source du CSipSimple principalement : Appel SIP et Comptes
CSipSimple
Appel
classique
Appel sip
Configuration
Mdia
Comptes
Rseau
a. Appel SIP
Dans la classe SipHome.java qui gre la page daccueil, plusieurs Tabs sont disponibles. En
appuyant sur chaque tab, vous pouvez accder la vue qui y correspond.
-
Vue Tl :
CSipSimple a deux interfaces dans la vue Tl , Linterface Numro et linterface SIP Adress .
En prenant comme argument le numro de tlphone ou ladresses SIP, on peut appeler le client en
appuyant sur le bouton appel .
-
Vue Appels :
CSipSimple
HandiRATP
AccountList.java
Dans notre cas, nous avons dfini un compte par dfaut avec lURI usager@Adresse IP, pendant
lutilisation dHandiRATP, ce compte est utilis pour appeler et recevoir.
d. PJSIP:
PJSIP est une librairie SIP open-source sous licence GPL, dont la principale caractristique est la
performance et lempreinte digitale trs petite et trs adapte pour les systmes embarqus. La
libraire est crite en C afin de garantir le niveau de performance et dvolutivit requis.
En plus de la vocation de servir pour des systmes embarqus, la libraire PJSIP permet de crer des
applications avec des stacks protocolaire trs performant. Elle a dailleurs t utilis dans plusieurs
client SIP. Pour nen citer que quelques un :
CSIPSimple
Yass
Siphon
PuppySIP
dbut de lancement de lapplication. Ce choix darchitecture permet des gains de performance allant
30 plus rapide avec certaine configuration.
Abstraction du systme dexploitation : PJSIP est capable de faire abstraction des fonctionnalits
suivantes du systme dexploitation, souvent non portable entre systme dexploitation :
Threads
Thread Local Storage.
Mutexes.
Semaphores.
Atomic Variables
Critical sections.
Lock Objects
Event Object.
Time Data Type and Manipulation.
High Resolution Timestamp
etc.
8. Diagramme de squence
Quand le client lance lapplication HandiRATP , elle sera initialise premirement, ensuite elle
attend des actions. Si le client appuie sur Botton Call , lapplication va lancer la fonction Appel,
nous allons spcifier laction Appel en diagramme de squence :
h HandiRATP
pj pjsua
Lancer lapplication
Lancer lappel
Terminer lappel
destroy()
Nous nous sommes inspir des sources de lapplication VoiDroid , et les libraires de CSipSimple
pour ce projet :
Pjsua.destroy()
Created = false
Creating = false
Retourner ;
Fin si
Ajouter Tansport UDP
Status = pjsua.start()
Si stauts nest pas 1 alors
Pjsua.destroy ()
Created = false
Creating = false
Retourner
Fin si
Created = true
Creating = false
Fin si
: int
: pj_str_t // adresse SIP cible
= pjsua.call_make_call (status, adresse)
Status
h HandiRATP
pj pjsua
Action appel
=
R
f
>0
fS
Status=pjsua_verify_sip_url( url)
>0
Raccroche
Status : int
Adress : pj_str_t // adresse SIP cible
Status = pjsua.call_hangup_all (status, adresse)
Pjsua.destroy();
Return Status
9. Spcifications techniques
Lobjet du prsent chapitre est de dtailler les spcifications techniques pour lapplication android
HandiRATP.
Ce document est destin :
- Aux enseignants
- Aux tudiants qui poursuivront le dveloppement de lapplication
- A la RATP
HandiRATP se base sur le code source de CSipSimple. Ci-dessous larchitecture de ce dernier :
Nous avons modifi deux parties du code source du CSipSimple : Appel SIP et Comptes. Nous avons
galement modifi les options de rsolution DNS de loutil. Ce rapport dtaillera les modifications et
changements apportes.
a. Appel SIP
i. Cration dun vue
Dans rpertoire res/layout , se trouve le fichier main.xml dcrivant le style de la page
daccueil :
TextView
ImageView
Botton
b. Comptes
i. Gestion automatique des comptes au dmarrage de lapplication
Aprs le lancement de CSipSimple, lactivit Comptes est lance dans le cas o cest le premier
dmarrage de lapplication, sinon, HandiRATP dsactive cette activit.
Res/xml: prefs_network.xml
Fichier prefs_network.xml gre lactivation de loption DNS SRV sur linterface graphique (Cocher
ou pas) ; preferenceWraper.java gre pour sa part la vraie configuration relle de cette option.
10.
Tests
Ceci sont les principaux jalons sur lesquels nous avons travaill durant les phases de tes :
Qualit de voix
CSipSimple
Code Java
HandiRATP
Etablissement
de la connexion
(Appel
10.0.0.x)
Rsolution DNS
(Appel
agent@ratp.fr)
Prototype
a. Environnement de test
Lenvironnement de test qui a t mis notre disposition se compose des briques suivantes :
-
Toutes les briques logicielles utilises sont issues du monde opensource et requiert un effort de
configuration relativement important.
Sur le serveur DHCP, il faut indiquer le bloc IP gr, les adresses du serveur DNS, du gateway et le
mask du bloc IP.
Le serveur DNS est responsable (master) du domaine ratp.fr, et rfrence ladresse du serveur SIP
(sip.ratp.fr).
Le serveur SIP est en charge de lenregistrement des agents de la RATP, dans notre cas,
agent@ratp.fr .
Un softphone SIP est install sur une des machines de test, et permet de simuler le poste du client de
lagent de la RATP.
11.
12.
Conclusion
Nous esprons que ce rapport fournit une ide claire sur le fonctionnement dHandiRATP, et sur les
diffrentes modifications appliques CSIPSimple.
La section spcification technique dtaille le fonctionnement de lapplication, 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 limportance de
lenvironnement de test, en passant par le tlphone mobile, la borne wifi jusquau serveur. Il est
primordial que toutes ces briques soient oprationnelles, car il est souvent impossible de dterminer
la cause de plusieurs difficults et problmes de connexion et de communication que nous avons
constate.
Nous tenons finalement remercier tous nos encadrants pour leurs soutien et leurs aide prcieuse,
que sans, sera projet naurait certainement pas pu aboutir sa fin.