FW: [RFC 3/3] STE-plugin: Adding STE plugin
Sjur Brændeland
sjur.brandeland at stericsson.com
Thu Jan 28 12:19:08 PST 2010
Hi Denis:
Denis Kenzior wrote:
> Hi Sjur,
>
>>> All of this logic needs to go away. The core already handles all of
>>> this, including selection of ATH/CHLD, waiting/held. Please review
>>> src/voicecall.c. If the core logic is not sufficient or does not
>>> properly handle a certain case, then lets see if we can fix the
>>> core first. Drivers should not concern themselves with this stuff.
>>
>> OK, we can remove the state logic, but STE modem cannot terminate
>> calls in state DIALING and ALERTING with CHLD=1X. We need to use ATH
>> (or AT+CHUP) instead.
>
> oFono already takes care of this for single calls (see src/voicecall.c
> voicecall_hangup.) So this is only an issue in the case of three way
> calls, is this what you're referring to here?
Kind of. This is very good, it takes care of the situation with emergency call
which cannot be terminated with CHLD commands.
But I think there are more issues. If I am not mistaken STE-modems have
the following behavior:
CHLD=1X can only terminate call in state ACTIVE or HELD. (I think
this is as STE interprets the standards).
a) If you are in a active call and receives a new incoming call (ALERTING)
and want to reject the new ALERTING call, then STE modem cannot
terminate this call with CHLD=1X. It has to be terminated with CHLD=0
(cause=BUSY) or ATH (possible CHUP).
b) Or you may have the following situation. One call on HOLD,
another ACTIVE call, and then you receive a new incoming call ALERTING.
If you try to terminate the new incoming (ALERTING) call with CHLD=0,
I think you as a side effect will terminate the call on hold as well.
If I am not mistaken ATH (possible CHUP) would be the correct in this
situation for STE modems
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).
>> For now I think we will remove the state logic from
>> ste_release_specific as you suggest. Terminating calls in state
>> DIALING and ALERTING must then be handled by the Core part. The
>> simplest would probably be to use hangup in this case, but I suspect
>> hangup work differently for different modems. So if you cannot use
>> hangup as the general approach, maybe it could be
>> implemented by adding callback functions release_dialing and
>> release_alerting in struct ofono_voicecall_driver. The STE driver
>> could send ATH from release_dialing and release_alerting, other
>> drivers could leave them empty and this could default to use
>> release_specific instead?
What I referred to here was the solution to the situations described above
in a,b,c.
>
> What I have been considering to take care of this case is to add
> end_all and end_all_active callbacks. According to 27.007/22.030 ATH
> should end all calls (active + held) except waiting calls, while
> +CHUP should only end the currently active call. At least on one TI
> modem I tried this works as expected. Do your modems implement the
> same behavior?
No, I don't think so. I think ATH will only terminate one call.
In order to terminate all calls you would probably need to do something
like: AT+CHLD=0;H But I'm not sure this works in all possible scenarios
either...
> If so then we can always use end_all_active for
> dialing/incoming/alerting cases.
>
>>
>>> With this in mind, you might not need to track any state in this
>>> driver at all. See drivers/calypsomodem/voicecall.c for details.
>>> TI's CPI notifications are almost exactly the same as the STE ECAV.
>>
>> The STE ECAV update is giving delta updates on the state information,
>> right now I don't see how we can get the ofono_voicall_notify right
>> without keeping some state information in ecav_notify.
>>
>
> Yes you're right, I was assuming ECAV gives you more information on
> whether the call was released locally or remotely.
>
> Regards,
> -Denis
Finally I'm not in office so I have taken this from top of my head so
I might have got something wrong here.
BR/Sjur
More information about the ofono
mailing list