[RFC 3/3] STE-plugin: Adding STE plugin

Denis Kenzior denkenz at gmail.com
Tue Feb 2 15:20:45 PST 2010


Hi Sjur,

> Hi Denis.
> 
> We have done some testing with the STE modem for call termination, and this
>  is the result:
> 
> TC |Call #1 | Call #2 | Call #3  | Command   | Result
> ---|--------------------------------------------------------------------
> 1  |ACTIVE  | ACTIVE  | ..       | ATH         | call 1, 2 terminated
> 2  |ACTIVE  | ACTIVE  | ..       | AT+CHUP     | call 1, 2 terminated
> 3  |ACTIVE  | ACTIVE  | HELD     | ATH         | call 1, 2 terminated
> 4  |ACTIVE  | ACTIVE  | HELD     | AT+CHUP     | call 1, 2 terminated
> 5  |ACTIVE  | ACTIVE  | HELD     | AT+CHLD=0;H | call 1, 2 and 3 terminated
> 6  |ACTIVE  | ACTIVE  | WAITING  | ATH         | call 1, 2 terminated
> 7  |ACTIVE  | ACTIVE  | WAITING  | AT+CHUP     | call 1, 2 terminated
> 8  |ACTIVE  | HELD    | WAITING  | CHLD=0      | call 3 terminated,
> 9  |ACTIVE  | HELD    | WAITING  | ATH         | call 1 terminated
> 10 |ACTIVE  | HELD    | WAITING  | AT+CHUP     | call 1 terminated
> 11 |HELD    | HELD    | ACTIVE   | AT+CHLD=0   | call 1, 2 terminated
> 12 |HELD    | HELD    | ACTIVE   | AT+CHLD=0;H | call 1, 2 and 3 terminated
> 13 |HELD    | DIALING | ..       | ATH         | call 2 (MO) terminated
> 14 |HELD    | DIALING | ..       | CHUP        | call 2 (MO) terminated
> 15 |HELD    | DIALING | ..       | AT+CHLD=12  | call 2 (MO) NOT terminated
> 16 |HELD    | WAITING | ..       | AT+CHLD=0   | call 2 terminated
> 17 |HELD    | ..      | ..       | ATH         | call 1 NOT terminated

Great table, makes it very easy to see what is going on.  It looks like STE 
modems treat ATH and CHUP as only affecting dialing/alerting/active calls and 
incoming calls, not held calls or waiting calls.

> > The standards are quite clear here, the WAITING call always takes
> > precedence and thus only the WAITING call is affected. Can you check
> > that STE modems do indeed get this wrong?  If the modem is standards
> > compliant, oFono does the right thing here.
> 
> STE is standard compliant, only the WAITING call is terminated with
>  AT+CHLD=0. (TC 8)

Excellent, I would have been surprised if STE behaved otherwise :)

> 
> >> c) If you have an call on hold and initiate a new call, but want to
> >> terminate the newly initiated call (DIALING), then this call cannot
> >> be terminated with CHLD=1X, but you would have to use ATH (or
> >> possible CHUP).
> >
> > Yes, so this is the case that we do need to take care of in the core.
> > Most
> > modems let us get away with sending release_specific up to this point.
> 
> For the STE modem, calls in state DIALING and ALERTING will have to be
>  terminated with ATH or AT+CHUP, AT+CHLD=1x does not work. This means that
>  the current implementation, using release_specific (and thus AT+CHLD=1x)
>  will not work.

Yep, so please critique my earlier suggestion of splitting up hangup into two 
methods: hangup_all and hangup_active.  Modem drivers will need to provide one 
or the other or both.

The core can then use the hangup_active (if available) in those cases where 
release_specific might not work.  The condition for hangup_active will be that 
it does not affect held or waiting calls.  For ST-E the hangup_active 
implementation will simply be +CHUP.  For modems that do not have this 
available we will fall back to release_specific and assume that on those 
CHLD=1X or equivalent can affect dialing/alerting calls.

hangup_all can also be used for cases where we loop release_specific over all 
active/dialing/alerting/held/incoming calls.  For ST-E the hangup_all 
implementation might be +CHUP;CHLD=1n;...;+CHLD=1m where n, m, etc are ids of 
the HELD calls.  We should not hangup waiting calls to be compliant with 
section 6.5.5.1 of 3GPP 22.030: "Entering END	-	Releases the subscriber from 
all calls (except a possible waiting call)."

If this sounds OK then I will work on implementing the logic in the next few 
days.

Regards,
-Denis


More information about the ofono mailing list