diff --git a/codecs-sync-design.md b/codecs-sync-design.md index c88864efb2400437c8bb452a2483194d4ebc66a9..8603d208de8ef84af8796e29b78aaa687bdff4ac 100644 --- a/codecs-sync-design.md +++ b/codecs-sync-design.md @@ -6,14 +6,19 @@ sequenceDiagram participant A as dectmngr participant B as voicemngr participant C as chan-voicemngr + participant D as shared memory alt is fxs Note over B: update out_request_cap with fxs cap <br/> --------------------------------------------------- + B->>D: Write out_request_cap else is dect Note over A: update out_request_cap with enpt cap <br/> ----------------------------------------------------- + A->>D: Write out_request_cap A->>B: new call end B->>C: init call - Note over C: chan_voicemngr_start_calling<br/>/chan_voicemngr_new: <br/> sem_wait() <br/> Read out_request_cap from shared memory <br/> sem_post() <br/> update cap and continue with outgoing process <br/> ------------------------------------------------------------------ + Note over C: chan_voicemngr_start_calling<br/>/chan_voicemngr_new: <br/> Read out_request_cap from shared memory <br/> -------------------------------------------------------------- + D->>C: Read out_request_cap + Note over C: chan_voicemngr_start_calling<br/>/chan_voicemngr_new: <br/> update cap and continue with outgoing process <br/> ------------------------------------------------------------------ ``` #### incoming calls @@ -23,20 +28,34 @@ sequenceDiagram participant B as chan-voicemngr participant C as voicemngr participant D as dectmngr + participant E as shared memory Note left of A : Incoming call Note over A: incoming codec offer negotiation with pjsip cap <br/> and keep the list <br/>which used for calling chan_voicemngr <br/> ------------------------------------------------------------------ A->>B: chan_voicemngr_new(..., codec_list) - Note over B: chan_voicemngr_new: <br/> sem_wait() <br/> Read extension_cap from shared memory <br/> update in_request_cap to shared memory <br/> sem_post() <br/> update cap and continue with incoming process <br/> hangup chan if no shared cap <br/> ------------------------------------------------------------------ - B->>A: cap update and continue with incoming process - A->>C: indicate RINGING - alt is fxs answered - Note over C: update answered_cap <br/> combined with <br/> in_request_cap and fxs cap <br/> ---------------------------------------- - else is dect answered - Note over D: update answered_cap <br/> combined with <br/> in_request_cap and enpt cap <br/> ------------------------------------------ + Note over B: chan_voicemngr_new: <br/> Read extension_cap from shared memory <br/> ----------------------------------------------------------- + E->>B: Read extension_cap + alt no avaliable cap in extension_cap + Note over B: hangup chan if no shared cap <br/> ------------------------------------------- + else incoming cap avaliable in extension_cap + Note over B: update in_request_cap to shared memory <br/> update cap and continue with incoming process <br/> ------------------------------------------------------------------ + B->>E: Write in_request_cap + B->>A: cap update and continue with incoming process + A->>C: indicate RINGING + alt fxs answered + Note over C: update answered_cap <br/> combined with <br/> in_request_cap and fxs cap <br/> ---------------------------------------- + E->>C: Read in_request_cap + C->>E: Write answered_cap + else dect answered + Note over D: update answered_cap <br/> combined with <br/> in_request_cap and enpt cap <br/> ------------------------------------------ + E->>D: Read in_request_cap + D->>E: Write answered_cap + D->>C: Answered/OFFHOOK + end + C->>A: Answered + Note over A: pjsip/res_pjsip_sdp_rtp.c: <br/> update cap with answered_cap. <br/> -------------------------------------------- + E->>A: Read answered_cap + Note left of A: 200OK end - C->>A: Answered - Note over A: pjsip/res_pjsip_sdp_rtp.c: <br/> update cap with answered_cap. <br/> -------------------------------------------- - Note left of A: 200OK ``` ### Tasks need to be done