Hi Jussi,
On 03/18/2011 07:53 AM, Jussi Kangas wrote:
Hi,
On Thu, 2011-03-17 at 17:00 +0200, Denis Kenzior wrote:
> Hi Jussi,
>
>>>
>>> So correct me if I'm wrong, but I don't think we can do that. the
>>> current cf_conditions implementation stores all conditions, which could
>>> be unrelated to voice; and if my interpretation of 22.004 is correct you
>>> can have something like this:
>>>
>>> Activate CFB for all services to Number 1
>>> Activate CFU for Data services to Number 2
>>>
>>> Which results in cf_conditions[CALL_FORWARDING_TYPE_UNCONDITIONAL] not
>>> being NULL and you reporting CFB for voice incorrectly.
>>>
>>> You are probably safer using is_cfu_enabled() function.
>>
>> As far as I know scenario you describe cannot happen with oFono. There
>> is no data related conditions in the call forwarding API. Sure, you can
>> set data forwarding on using SS API, but I don't see how data forwarding
>> states could be shown in call forwarding API when all states in API
>> start with word "voice". Also according to comments in code fax and
data
>> are not supported.
>>
>
> It can. oFono stores _all_ conditions in its lists. However, it
> filters them when reporting the conditions in get_properties or signals.
> This is why is_cfu_enabled function looks the way it does. So a
> scenario like this is fully possible. Not to mention that the CFs are
> queried for all services by default.
All right. I have no access to network that would support data
forwarding or my modem does not support it so I cannot verify this in
practice. But I think problem can be avoided by changing the line
if (cf->cf_conditions[CALL_FORWARDING_TYPE_UNCONDITIONAL] == NULL) {
to
if (!is_cfu_enabled(cf, NULL)) {
Of course little bit optimization would be good to avoid second calling
of this method later in function. Moving the setting of status variable
above these and using it when checked if UNCONDITIONAL is on instead of
is_cfu_enabled seems to be working nicely.
Yes, lets do the optimization since its quite easy.
Regards,
-Denis