Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 4.0

...

Functional

...

Requirements

...

Use

...

case

...

1:

...

}
No Format
(A) Calling T.38 endpoint <-->
  (B) Channel Driver 1<-->
    (C) Asterisk Core <-->
   (D) T.38 Gateway Object <-->
  (E) Channel Driver 2<-->
(F) Called T.30 endpoint
{noformat}

{
Wiki Markup
{graphviz}
digraph G {
"Calling T.38 Endpoint" -> "Channel Driver 1";
"Channel Driver 1" -> "Calling T.38 Endpoint";

subgraph cluster_1 {
    style=filled;
    label = "Asterisk";
    "Channel Driver 1" -> "Asterisk Core";
    "Asterisk Core" -> "Channel Driver 1";

    "Asterisk Core" -> "T.38 Gateway Object";
    "T.38 Gateway Object" -> "Asterisk Core";

    "T.38 Gateway Object" -> "Channel Driver 2";
    "Channel Driver 2" -> "T.38 Gateway Object";
}

"Channel Driver 2" -> "Called T.30 Endpoint";
"Called T.30 Endpoint" -> "Channel Driver 2";
}
{graphviz}

In

...

this

...

use

...

case,

...

the

...

calling

...

endpoint

...

is

...

T.38

...

equipped

...

and

...

the

...

called

...

endpoint

...

is

...

not

...

(supports

...

T.30

...

only);

...

in

...

addition,

...

the

...

calling

...

endpoint

...

is

...

properly

...

configured

...

to

...

not

...

initiate

...

T.38

...

re-INVITEs

...

itself,

...

but

...

relies

...

on

...

the

...

receiving

...

gateway

...

(Asterisk+T.38

...

Gateway)

...

to

...

do

...

so.

...

during

...

call

...

setup,

...

called

...

endpoint

...

is

...

ringing,

...

gateway

...

does

...

nothing

...

when

...

called

...

endpoint

...

has

...

answered,

...

gateway

...

listens

...

for

...

FAX

...

preamble

...

(using

...

V.21

...

detector)

...

generated

...

by

...

called

...

endpoint

...

if

...

preamble

...

is

...

not

...

detected

...

after

...

15

...

seconds

...

from

...

call

...

answer,

...

gateway

...

removes

...

itself

...

from

...

the

...

audio

...

path

...

(this

...

may

...

need

...

to

...

be

...

optional)

...

if

...

preamble

...

is

...

detected,

...

gateway

...

mutes

...

audio

...

path

...

in

...

both

...

directions

...

(generating

...

silence

...

towards

...

both

...

endpoints).

...

gateway

...

waits

...

one

...

second,

...

then

...

constructs

...

T.38

...

negotiation

...

request

...

as

...

a

...

control

...

frame,

...

using

...

parameters

...

previously

...

set

...

via

...

FAXOPT()

...

dialplan

...

function,

...

and

...

sends

...

control

...

frame

...

to

...

core

...

if

...

T.38

...

negotiation

...

fails

...

(times

...

out,

...

or

...

is

...

rejected),

...

gateway

...

removes

...

itself

...

from

...

the

...

audio

...

path

...

(thus

...

clearing

...

the

...

'mute'

...

state

...

in

...

both

...


directions)

...

if

...

T.38

...

negotiation

...

succeeds

...

(request

...

is

...

accepted),

...

gateway

...

constructs

...

T.38

...

session

...

in

...

FAX

...

stack,

...

feeds

...

it

...

negotiated

...

parameters,

...

and

...

starts

...


session;

...

if

...

this

...

fails,

...

gateway

...

causes

...

channel(s)

...

to

...

be

...

hung

...

up

...

and

...

reports

...

appropriate

...

errors

...

while

...

T.38

...

session

...

is

...

active,

...

gateway

...

receives

...

T.38

...

media

...

frames

...

from

...

calling

...

endpoint

...

and

...

passes

...

them

...

to

...

FAX

...

stack;

...

gateway

...

receives

...

T.38

...


media

...

frames

...

from

...

FAX

...

stack

...

and

...

sends

...

them

...

to

...

calling

...

endpoint.

...

gateway

...

also

...

receives

...

audio

...

frames

...

from

...

called

...

endpoint

...

and

...

passes

...

them

...

to

...

FAX

...


stack,

...

and

...

receives

...

audio

...

frames

...

from

...

FAX

...

stack

...

and

...

sends

...

them

...

to

...

called

...

endpoint

...

when

...

T.38

...

session

...

is

...

complete,

...

gateway

...

sends

...

T.38

...

negotiation

...

request

...

to

...

revert

...

to

...

audio

...

mode

...

if

...

audio

...

mode

...

reversion

...

fails,

...

gateway

...

causes

...

channel(s)

...

to

...

be

...

hung

...

up

...

if

...

audio

...

mode

...

reversion

...

succeeds,

...

gateway

...

removes

...

itself

...

from

...

audio

...

path

Use case 2:

No Format
(A) Calling T.38 endpoint <-->
  (B) Channel Driver 1 <-->
    (C) Asterisk Core <-->
   (D) T.38 Gateway Object <-->
  (E) Channel Driver 2 <-->
(F) Called T.30 endpoint
{noformat}

{
Wiki Markup
{graphviz}
digraph G {
"Calling T.38 Endpoint" -> "Channel Driver 1";
"Channel Driver 1" -> "Calling T.38 Endpoint";

subgraph cluster_1 {
    style=filled;
    label = "Asterisk";
    "Channel Driver 1" -> "Asterisk Core";
    "Asterisk Core" -> "Channel Driver 1";

    "Asterisk Core" -> "T.38 Gateway Object";
    "T.38 Gateway Object" -> "Asterisk Core";

    "T.38 Gateway Object" -> "Channel Driver 2";
    "Channel Driver 2" -> "T.38 Gateway Object";
}

"Channel Driver 2" -> "Called T.30 Endpoint";
"Called T.30 Endpoint" -> "Channel Driver 2";
}
{graphviz}


In

...

this

...

use

...

case,

...

the

...

calling

...

endpoint

...

is

...

T.38

...

equipped

...

and

...

the

...

called

...

endpoint

...

is

...

not

...

(supports

...

T.30

...

only);

...

in

...

addition,

...

the

...

calling

...

endpoint

...


is

...

improperly

...

configured

...

to

...

initiate

...

T.38

...

re-INVITEs

...

itself,

...

not

...

waiting

...

for

...

the

...

receiving

...

gateway

...

to

...

do

...

so.

...

during

...

call

...

setup,

...

called

...

endpoint

...

is

...

ringing,

...

gateway

...

does

...

nothing

...

when

...

called

...

endpoint

...

has

...

answered,

...

gateway

...

listens

...

for

...

FAX

...

preamble

...

(using

...

V.21

...

detector)

...

generated

...

by

...

called

...

endpoint

...

if

...

preamble

...

is

...

not

...

detected

...

after

...

15

...

seconds

...

from

...

call

...

answer,

...

gateway

...

removes

...

itself

...

from

...

the

...

audio

...

path

...

(this

...

may

...

need

...

to

...

be

...

optional)

...

if

...

preamble

...

is

...

detected,

...

gateway

...

mutes

...

audio

...

path

...

in

...

both

...

directions

...

(generating

...

silence

...

towards

...

both

...

endpoints).

...

gateway

...

waits

...

one

...

second,

...


and

...

during

...

this

...

time

...

a

...

T.38

...

negotiation

...

request

...

is

...

received

...

from

...

the

...

calling

...

endpoint;

...

gateway

...

processes

...

this

...

request

...

using

...

parameters

...


previously

...

set

...

using

...

FAXOPT()

...

dialplan

...

function

...

if

...

the

...

T.38

...

negotiation

...

request

...

cannot

...

be

...

accepted,

...

gateway

...

sends

...

a

...

T.38

...

negotiation

...

failure

...

response,

...

and

...

removes

...

itself

...

from

...

the

...

audio

...

path

...


(thus

...

clearing

...

the

...

'mute'

...

state

...

in

...

both

...

directions)

...

if

...

T.38

...

negotiation

...

succeeds

...

(request

...

can

...

be

...

accepted),

...

gateway

...

sends

...

a

...

T.38

...

negotiation

...

success

...

response,

...

constructs

...

T.38

...

session

...

in

...

FAX

...

stack,

...


feeds

...

it

...

negotiated

...

parameters,

...

and

...

starts

...

session;

...

if

...

this

...

fails,

...

gateway

...

causes

...

channel(s)

...

to

...

be

...

hung

...

up

...

and

...

reports

...

appropriate

...

errors

...

while

...

T.38

...

session

...

is

...

active,

...

gateway

...

receives

...

T.38

...

media

...

frames

...

from

...

calling

...

endpoint

...

and

...

passes

...

them

...

to

...

FAX

...

stack;

...

gateway

...

receives

...

T.38

...

media

...

frames

...

from

...

FAX

...

stack

...

and

...

sends

...

them

...

to

...

calling

...

endpoint.

...

gateway

...

also

...

receives

...

audio

...

frames

...

from

...

called

...

endpoint

...

and

...

passes

...

them

...

to

...

FAX

...


stack,

...

and

...

receives

...

audio

...

frames

...

from

...

FAX

...

stack

...

and

...

sends

...

them

...

to

...

called

...

endpoint

...

when

...

T.38

...

session

...

is

...

complete,

...

gateway

...

sends

...

T.38

...

negotiation

...

request

...

to

...

revert

...

to

...

audio

...

mode

...

(this

...

may

...

be

...

received

...

from

...

calling

...

endpoint

...

first,

...


though)

...

if

...

audio

...

mode

...

reversion

...

fails,

...

gateway

...

causes

...

channel(s)

...

to

...

be

...

hung

...

up

...

if

...

audio

...

mode

...

reversion

...

succeeds,

...

gateway

...

removes

...

itself

...

from

...

audio

...

path

...

Use

...

case

...

3:

...

}
No Format
(A) Calling T.30 endpoint <-->
  (B) Channel Driver 1 <-->
    (C) Asterisk Core <-->
   (D) T.38 Gateway Object <-->
  (E) Channel Driver 2 <-->
(F) Called T.38 endpoint
{noformat}

{
Wiki Markup
{graphviz}
digraph G {
"Calling T.30 Endpoint" -> "Channel Driver 1";
"Channel Driver 1" -> "Calling T.30 Endpoint";

subgraph cluster_1 {
    style=filled;
    label = "Asterisk";
    "Channel Driver 1" -> "Asterisk Core";
    "Asterisk Core" -> "Channel Driver 1";

    "Asterisk Core" -> "T.38 Gateway Object";
    "T.38 Gateway Object" -> "Asterisk Core";

    "T.38 Gateway Object" -> "Channel Driver 2";
    "Channel Driver 2" -> "T.38 Gateway Object";
}

"Channel Driver 2" -> "Called T.38 Endpoint";
"Called T.38 Endpoint" -> "Channel Driver 2";
}
{graphviz}


In

...

this

...

use

...

case,

...

the

...

calling

...

endpoint

...

is

...

not

...

T.38

...

equipped

...

but

...

the

...

called

...

endpoint

...

is.

...

In

...

addition,

...

the

...

called

...

endpoint

...

is

...

improperly

...

configured

...

to

...

rely

...

on

...

the

...

calling

...

endpoint

...

to

...

initiate

...

T.38

...

re-INVITEs.

...

during

...

call

...

setup,

...

called

...

endpoint

...

is

...

ringing,

...

gateway

...

does

...

nothing

...

when

...

called

...

endpoint

...

has

...

answered,

...

gateway

...

listens

...

for

...

FAX

...

preamble

...

(using

...

V.21

...

detector)

...

generated

...

by

...

called

...

endpoint

...

if

...

preamble

...

is

...

not

...

detected

...

after

...

15

...

seconds

...

from

...

call

...

answer,

...

gateway

...

removes

...

itself

...

from

...

the

...

audio

...

path

...

(this

...

may

...

need

...

to

...

be

...

optional)

...

if

...

preamble

...

is

...

detected,

...

gateway

...

mutes

...

audio

...

path

...

in

...

both

...

directions

...

(generating

...

silence

...

towards

...

both

...

endpoints).

...

gateway

...

waits

...

one

...

second,

...

then

...

constructs

...

T.38

...

negotiation

...

request

...

as

...

a

...

control

...

frame,

...

using

...

parameters

...

previously

...

set

...

via

...

FAXOPT()

...

dialplan

...

function,

...

and

...

sends

...

control

...

frame

...

to

...

called

...

endpoint

...

if

...

T.38

...

negotiation

...

fails

...

(times

...

out,

...

or

...

is

...

rejected),

...

gateway

...

removes

...

itself

...

from

...

the

...

audio

...

path

...

(thus

...

clearing

...

the

...

'mute'

...

state

...

in

...

both

...


directions)

...

if

...

T.38

...

negotiation

...

succeeds

...

(request

...

is

...

accepted),

...

gateway

...

constructs

...

T.38

...

session

...

in

...

FAX

...

stack,

...

feeds

...

it

...

negotiated

...

parameters,

...

and

...

starts

...


session;

...

if

...

this

...

fails,

...

gateway

...

causes

...

channel(s)

...

to

...

be

...

hung

...

up

...

and

...

reports

...

appropriate

...

errors

...

while

...

T.38

...

session

...

is

...

active,

...

gateway

...

receives

...

T.38

...

media

...

frames

...

from

...

called

...

endpoint

...

and

...

passes

...

them

...

to

...

FAX

...

stack;

...

gateway

...

receives

...

T.38

...


media

...

frames

...

from

...

FAX

...

stack

...

and

...

sends

...

them

...

to

...

called

...

endpoint.

...

gateway

...

also

...

receives

...

audio

...

frames

...

from

...

calling

...

endpoint

...

and

...

passes

...

them

...

to

...

FAX

...


stack,

...

and

...

receives

...

audio

...

frames

...

from

...

FAX

...

stack

...

and

...

sends

...

them

...

to

...

calling

...

endpoint

...

when

...

T.38

...

session

...

is

...

complete,

...

gateway

...

sends

...

T.38

...

negotiation

...

request

...

to

...

revert

...

to

...

audio

...

mode

...

if

...

audio

...

mode

...

reversion

...

fails,

...

gateway

...

causes

...

channel(s)

...

to

...

be

...

hung

...

up

...

if

...

audio

...

mode

...

reversion

...

succeeds,

...

gateway

...

removes

...

itself

...

from

...

audio

...

path

Use case 4:

No Format
(A) Calling T.30 endpoint <-->
  (B) Channel Driver 1 <-->
    (C) Asterisk Core <-->
   (D) T.38 Gateway Object <-->
  (E) Channel Driver 2 <-->
(F) Called T.38 endpoint
{noformat}


{
Wiki Markup
{graphviz}
digraph G {
"Calling T.30 Endpoint" -> "Channel Driver 1";
"Channel Driver 1" -> "Calling T.30 Endpoint";

subgraph cluster_1 {
    style=filled;
    label = "Asterisk";
    "Channel Driver 1" -> "Asterisk Core";
    "Asterisk Core" -> "Channel Driver 1";

    "Asterisk Core" -> "T.38 Gateway Object";
    "T.38 Gateway Object" -> "Asterisk Core";

    "T.38 Gateway Object" -> "Channel Driver 2";
    "Channel Driver 2" -> "T.38 Gateway Object";
}

"Channel Driver 2" -> "Called T.38 Endpoint";
"Called T.38 Endpoint" -> "Channel Driver 2";
}
{graphviz}


In

...

this

...

use

...

case,

...

the

...

calling

...

endpoint

...

is

...

not

...

T.38

...

equipped

...

but

...

the

...

called

...

endpoint

...

is.

...

In

...

addition,

...

the

...

called

...

endpoint

...

is

...

properly

...

configured

...

to

...

initiate

...

T.38

...

re-INVITEs

...

itself.

...

during

...

call

...

setup,

...

called

...

endpoint

...

is

...

ringing,

...

gateway

...

does

...

nothing

...

when

...

called

...

endpoint

...

has

...

answered,

...

gateway

...

listens

...

for

...

FAX

...

preamble

...

(using

...

V.21

...

detector)

...

generated

...

by

...

called

...

endpoint

...

if

...

preamble

...

is

...

not

...

detected

...

after

...

15

...

seconds

...

from

...

call

...

answer,

...

gateway

...

removes

...

itself

...

from

...

the

...

audio

...

path

...

(this

...

may

...

need

...

to

...

be

...

optional)

...

if

...

preamble

...

is

...

detected,

...

gateway

...

mutes

...

audio

...

path

...

in

...

both

...

directions

...

(generating

...

silence

...

towards

...

both

...

endpoints).

...

gateway

...

waits

...

one

...

second,

...

and

...

during

...

this

...

time

...

a

...

T.38

...

negotiation

...

request

...

is

...

received

...

from

...

the

...

called

...

endpoint;

...

gateway

...

processes

...

this

...

request

...

using

...

parameters

...

previously

...

set

...

using

...

FAXOPT()

...

dialplan

...

function

...

if

...

the

...

T.38

...

negotiation

...

request

...

cannot

...

be

...

accepted,

...

gateway

...

sends

...

a

...

T.38

...

negotiation

...

failure

...

response,

...

and

...

removes

...

itself

...

from

...

the

...

audio

...

path

...


(thus

...

clearing

...

the

...

'mute'

...

state

...

in

...

both

...

directions)

...

if

...

T.38

...

negotiation

...

succeeds

...

(request

...

can

...

be

...

accepted),

...

gateway

...

sends

...

a

...

T.38

...

negotiation

...

success

...

response,

...

constructs

...

T.38

...

session

...

in

...

FAX

...

stack,

...


feeds

...

it

...

negotiated

...

parameters,

...

and

...

starts

...

session;

...

if

...

this

...

fails,

...

gateway

...

causes

...

channel(s)

...

to

...

be

...

hung

...

up

...

and

...

reports

...

appropriate

...

errors

...

while

...

T.38

...

session

...

is

...

active,

...

gateway

...

receives

...

T.38

...

media

...

frames

...

from

...

called

...

endpoint

...

and

...

passes

...

them

...

to

...

FAX

...

stack;

...

gateway

...

receives

...

T.38

...


media

...

frames

...

from

...

FAX

...

stack

...

and

...

sends

...

them

...

to

...

called

...

endpoint.

...

gateway

...

also

...

receives

...

audio

...

frames

...

from

...

calling

...

endpoint

...

and

...

passes

...

them

...

to

...

FAX

...


stack,

...

and

...

receives

...

audio

...

frames

...

from

...

FAX

...

stack

...

and

...

sends

...

them

...

to

...

calling

...

endpoint

...

when

...

T.38

...

session

...

is

...

complete,

...

gateway

...

sends

...

T.38

...

negotiation

...

request

...

to

...

revert

...

to

...

audio

...

mode

...

if

...

audio

...

mode

...

reversion

...

fails,

...

gateway

...

causes

...

channel(s)

...

to

...

be

...

hung

...

up

...

if

...

audio

...

mode

...

reversion

...

succeeds,

...

gateway

...

removes

...

itself

...

from

...

audio

...

path