This is an old revision of the document!


Laborator 08. SIP

Creare cont SIP, testare

  • pentru acest laborator este nevoie de telefon personal, sau microfon pentru genymotion
  • creați un cont gratuit pe getonsip.com
  • sunt necesare datele de la “View Profile”, atenție la parola f. lungă
  • se instalează aplicația CSIPsimple din playstore
  • se poate face paste din host în Genymotion cu long press (left click)
  • se creează un contact nou 'testcall', și în loc de număr de telefon se selectează 'Add another field'/Internet Call și se adaugă adresa thetestcall@getonsip.com
  • În agendă, persoana testcall va apărea cu o iconiță SIP, și va fi apelată implicit cu SIP
  • alte adrese de test: 904@mouselike.org, 301@ideasip.com
  • Troubleshooting
    • Registration timeout înseamnă că în NAT/SIP nu se translatează corect adresele interne
    • merge pe RDS/4G
    • SSID-uri care nu crează probleme: ACS-UPB-OPEN, eduroam, Java-ED117
    • SSID-uri cu probleme: change

Activitate de Laborator

Se dorește implementarea unei aplicații Android pe baza unui scheletului. (Aplicație finisată)

1. Într-un proiect nou, cu o singură activitate, se actualizează datele contului SIP din Constants.java. Se configurează butoanele register și unregister astfel: register va demara initializarea stivei SIP cu configure_stack() și sign-in cu initalizeManager(). Acestea inițializează și membrii mEngine și mSipService ai activitătii principale.

2. Se definește RegistrationBroadcastReceiver cu filtrul NgnRegistrationEventArgs.ACTION_REGISTRATION_EVENT pentru a prinde evenimentele legate de înregistrare (signin). Acestea sunt monitorizate în Log, cu Toasts, și într-un câmp din GUI care indică starea curenta (Registered/In Progress…/Unregistered).

3. Se adaugă un câmp EditText care va primi adresa SIP destinație, și două butoane care initiază/opresc apelul. Se crează o sesiune către un număr de test folosind NgnAVSession.createOutgoingSession( NgnEngine.getInstance().getSipService().getSipStack(), NgnMediaType.Audio); Se inițiază apelul cu makeCall, și se oprește cu hangUpCall. Sesiunea este menținuta ca membru al activitătii, deoarece este necesară și pe butoanele de hangUp sau DTMF.

4. Se definește un CallStateReceiver, si filtrul asociat pentru a monitoriza evenimentele legate de apeluri audio NgnInviteEventArgs.ACTION_INVITE_EVENT. Acest receiver monitorizează stările sesiunii audio: INCOMING, INCALL, TERMINATED.

5. Se testează un apel audio către o adresă de test (thetestcall@getonsip.com).

Verificare conversație SIP

  • adb -s 192.168.56.3:5555
  • În Android: tcpdump -s0 -ni eth1 -w /sdcard/DCIM/sip.pcap 'udp'
  • se inițiază apelul, se ascultă greeting, apoi se închide
  • se oprește tcpdump cu Ctrl-C
  • Pe host: adb -s 192.168.56.3:5555 pull /sdcard/DCIM/sip.pcap .
  • wireshark sip.pcap
    • identificați operația REGISTER. Ce port se folosește pentru cerere? Care este adresa serverului?
    • în răspunsul pozitiv la REGISTER, identificați adresele NAT prin care trece conversația
    • identificați invitația. Apar retransmisii?
    • ce fel de voice codec este folosit?
    • ce parametri are fluxul de voce? protocol, dimensiune pachet, rata pachetelor
    • ce adrese se folosesc pentru traficul de voce?
    • cum au fost negociate?

6. Pentru a trimite coduri numerice DTMF se crează un buton și edittext-ul asociat pentru a apela funcția sendDTMF cu valorile întregi 0-9, sau 10 pentru * si 11 pentru #.

Testare handoff (telefon fizic)

  • din păcate, Android nu permite ambele interfețe active (WiFi și 4G) simultan.
  • CSipSimple WiFi ⇔ 4G, este nevoie de Hold/Resume după ce s-a schimbat IP-ul
  • Uneori 4G ⇒ WiFi funcționează cu un click abia perceptibil :-P
  • SipDroid nu face handoff, Hold/Resume are lag
  • Linphone nu face handoff

Aplicație PTT(Push to Talk) si Chat folosind stiva SIP din Android

eim/laboratoare/laborator08.sip.1460113556.txt.gz · Last modified: 2016/04/08 14:05 by dragos.niculescu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0