summaryrefslogtreecommitdiffstats
path: root/src/call-forwarding.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/call-forwarding.c')
-rw-r--r--src/call-forwarding.c61
1 files changed, 29 insertions, 32 deletions
diff --git a/src/call-forwarding.c b/src/call-forwarding.c
index 7b940be0..9cb378c7 100644
--- a/src/call-forwarding.c
+++ b/src/call-forwarding.c
@@ -122,8 +122,8 @@ static void cf_cond_list_print(GSList *list)
ofono_debug("CF Condition status: %d, class: %d, number: %s,"
" number_type: %d, time: %d",
- cond->status, cond->cls, cond->phone_number,
- cond->number_type, cond->time);
+ cond->status, cond->cls, cond->phone_number.number,
+ cond->phone_number.type, cond->time);
}
}
@@ -241,8 +241,7 @@ static void set_new_cond_list(struct ofono_modem *modem, int type, GSList *list)
continue;
timeout = lc->time;
- number = phone_number_to_string(lc->phone_number,
- lc->number_type);
+ number = phone_number_to_string(&lc->phone_number);
sprintf(attr, "%s%s", bearer_class_to_string(lc->cls),
cf_type_lut[type]);
@@ -256,8 +255,9 @@ static void set_new_cond_list(struct ofono_modem *modem, int type, GSList *list)
if (o) { /* On the old list, must be active */
oc = o->data;
- if (oc->number_type != lc->number_type ||
- strcmp(oc->phone_number, lc->phone_number))
+ if (oc->phone_number.type != lc->phone_number.type ||
+ strcmp(oc->phone_number.number,
+ lc->phone_number.number))
dbus_gsm_signal_property_changed(conn,
modem->path,
CALL_FORWARDING_INTERFACE,
@@ -276,8 +276,7 @@ static void set_new_cond_list(struct ofono_modem *modem, int type, GSList *list)
g_free(o->data);
old = g_slist_remove(old, o->data);
} else {
- number = phone_number_to_string(lc->phone_number,
- lc->number_type);
+ number = phone_number_to_string(&lc->phone_number);
dbus_gsm_signal_property_changed(conn, modem->path,
CALL_FORWARDING_INTERFACE,
@@ -365,8 +364,7 @@ static void property_append_cf_conditions(DBusMessageIter *dict,
continue;
}
- number = phone_number_to_string(cf->phone_number,
- cf->number_type);
+ number = phone_number_to_string(&cf->phone_number);
property_append_cf_condition(dict, i, postfix, number,
cf->time);
@@ -581,26 +579,27 @@ static void set_property_callback(const struct ofono_error *error, void *data)
static DBusMessage *set_property_request(struct ofono_modem *modem,
DBusMessage *msg,
int type, int cls,
- const char *number,
- int number_type, int timeout)
+ struct ofono_phone_number *ph,
+ int timeout)
{
struct call_forwarding_data *cf = modem->call_forwarding;
- if (number[0] != '\0' && cf->ops->registration == NULL)
+ if (ph->number[0] != '\0' && cf->ops->registration == NULL)
return dbus_gsm_not_implemented(msg);
- if (number[0] == '\0' && cf->ops->erasure == NULL)
+ if (ph->number[0] == '\0' && cf->ops->erasure == NULL)
return dbus_gsm_not_implemented(msg);
cf->pending = dbus_message_ref(msg);
cf->query_next = type;
cf->query_end = type;
- ofono_debug("Farming off request, will be erasure: %d", number[0] == 0);
+ ofono_debug("Farming off request, will be erasure: %d",
+ ph->number[0] == '\0');
- if (number[0] != '\0')
- cf->ops->registration(modem, type, cls, number, number_type,
- timeout, set_property_callback, modem);
+ if (ph->number[0] != '\0')
+ cf->ops->registration(modem, type, cls, ph, timeout,
+ set_property_callback, modem);
else
cf->ops->erasure(modem, type, cls, set_property_callback, modem);
@@ -660,13 +659,15 @@ static DBusMessage *cf_set_property(DBusConnection *conn, DBusMessage *msg,
c = l->data;
return set_property_request(modem, msg, type, cls,
- c->phone_number,
- c->number_type, timeout);
+ &c->phone_number, timeout);
} else if (cf_condition_enabled_property(cf, property, &type, &cls)) {
+ struct ofono_phone_number ph;
const char *number;
- int number_type;
int timeout;
+ ph.number[0] = '\0';
+ ph.type = 129;
+
if (dbus_message_iter_get_arg_type(&var) != DBUS_TYPE_STRING)
return dbus_gsm_invalid_args(msg);
@@ -676,14 +677,12 @@ static DBusMessage *cf_set_property(DBusConnection *conn, DBusMessage *msg,
return dbus_gsm_invalid_format(msg);
if (number[0] != '\0')
- string_to_phone_number(number, &number_type, &number);
- else
- number_type = 129;
+ string_to_phone_number(number, &ph);
timeout = cf_find_timeout(cf->cf_conditions[type], cls);
- return set_property_request(modem, msg, type, cls, number,
- number_type, timeout);
+ return set_property_request(modem, msg, type, cls, &ph,
+ timeout);
}
return dbus_gsm_invalid_args(msg);
@@ -929,8 +928,7 @@ static gboolean cf_ss_control(struct ofono_modem *modem, int type, const char *s
int timeout = DEFAULT_NO_REPLY_TIMEOUT;
int cf_type;
DBusMessage *reply;
- const char *number;
- int number_type;
+ struct ofono_phone_number ph;
void *operation;
/* Before we do anything, make sure we're actually initialized */
@@ -1083,10 +1081,9 @@ static gboolean cf_ss_control(struct ofono_modem *modem, int type, const char *s
switch (cf->ss_req->ss_type) {
case SS_CONTROL_TYPE_REGISTRATION:
- string_to_phone_number(sia, &number_type, &number);
- cf->ops->registration(modem, cf_type, cls, number, number_type,
- timeout, cf_ss_control_callback,
- modem);
+ string_to_phone_number(sia, &ph);
+ cf->ops->registration(modem, cf_type, cls, &ph, timeout,
+ cf_ss_control_callback, modem);
break;
case SS_CONTROL_TYPE_ACTIVATION:
cf->ops->activation(modem, cf_type, cls, cf_ss_control_callback,