Hi Philippe,
On 12/06/2017 09:35 AM, Philippe De Swert wrote:
When dialing the last called number we also want to use the caller id (clir)
settings that are currently used.
---
doc/voicecallmanager-api.txt | 2 +-
drivers/hfpmodem/voicecall.c | 4 ++--
include/voicecall.h | 3 ++-
src/voicecall.c | 18 ++++++++++++++----
4 files changed, 19 insertions(+), 8 deletions(-)
This patch really needs to be broken up into 4. See HACKING,
'Submitting patches'.
diff --git a/doc/voicecallmanager-api.txt b/doc/voicecallmanager-api.txt
index 7aeb81f7..f82a0a10 100644
--- a/doc/voicecallmanager-api.txt
+++ b/doc/voicecallmanager-api.txt
@@ -59,7 +59,7 @@ Methods dict GetProperties()
[service].Error.NotImplemented
[service].Error.Failed
- object DialLast()
+ object DialLast(string hide_callerid)
Initiates a new outgoing call to the last dialled number.
diff --git a/drivers/hfpmodem/voicecall.c b/drivers/hfpmodem/voicecall.c
index 1e0489c2..a32a3242 100644
--- a/drivers/hfpmodem/voicecall.c
+++ b/drivers/hfpmodem/voicecall.c
@@ -405,8 +405,8 @@ static void hfp_dial(struct ofono_voicecall *vc,
CALLBACK_WITH_FAILURE(cb, data);
}
-static void hfp_dial_last(struct ofono_voicecall *vc, ofono_voicecall_cb_t cb,
- void *data)
+static void hfp_dial_last(struct ofono_voicecall *vc, enum ofono_clir_option
clir,
+ ofono_voicecall_cb_t cb, void *data)
{
struct voicecall_data *vd = ofono_voicecall_get_data(vc);
struct cb_data *cbd = cb_data_new(cb, data);
It doesn't look like you actually implementing the CLIR modifier in the
driver? E.g. the 'I' or 'i' suffix business.
I think last time I played with this half the AG implementations didn't
support the CLIR parameter anyway.
diff --git a/include/voicecall.h b/include/voicecall.h
index 6871a6b5..79a64bb4 100644
--- a/include/voicecall.h
+++ b/include/voicecall.h
@@ -64,7 +64,8 @@ struct ofono_voicecall_driver {
/* Dials the last number again, this handles the hfp profile last number
* dialing with the +BLDN AT command
*/
- void (*dial_last)(struct ofono_voicecall *vc, ofono_voicecall_cb_t cb,
void *data);
+ void (*dial_last)(struct ofono_voicecall *vc, enum ofono_clir_option
clir,
+ ofono_voicecall_cb_t cb, void *data);
/* Answers an incoming call, this usually corresponds to ATA */
void (*answer)(struct ofono_voicecall *vc,
ofono_voicecall_cb_t cb, void *data);
diff --git a/src/voicecall.c b/src/voicecall.c
index cd9182a1..9f323c6e 100644
--- a/src/voicecall.c
+++ b/src/voicecall.c
@@ -1605,7 +1605,7 @@ error:
__ofono_error_failed(vc->pending));
}
-static int voicecall_dial_last(struct ofono_voicecall *vc,
+static int voicecall_dial_last(struct ofono_voicecall *vc, enum
ofono_clir_option clir,
ofono_voicecall_cb_t cb, void *data)
{
struct ofono_modem *modem = __ofono_atom_get_modem(vc->atom);
@@ -1629,7 +1629,7 @@ static int voicecall_dial_last(struct ofono_voicecall *vc,
if (voicecalls_have_active(vc) && voicecalls_have_held(vc))
return -EBUSY;
- vc->driver->dial_last(vc, cb, vc);
+ vc->driver->dial_last(vc, clir, cb, vc);
return 0;
}
@@ -1638,14 +1638,23 @@ static DBusMessage *manager_dial_last(DBusConnection
*conn,
DBusMessage *msg, void *data)
{
struct ofono_voicecall *vc = data;
+ const char *clirstr;
+ enum ofono_clir_option clir;
int err;
if (vc->pending || vc->dial_req || vc->pending_em)
return __ofono_error_busy(msg);
+ if (dbus_message_get_args(msg, NULL, DBUS_TYPE_STRING, &clirstr,
+ DBUS_TYPE_INVALID) == FALSE)
+ return __ofono_error_invalid_args(msg);
+
+ if (clir_string_to_clir(clirstr, &clir) == FALSE)
+ return __ofono_error_invalid_format(msg);
+
vc->pending = dbus_message_ref(msg);
- err = voicecall_dial_last(vc, manager_dial_last_callback, vc);
+ err = voicecall_dial_last(vc, clir, manager_dial_last_callback, vc);
if (err >= 0)
return NULL;
@@ -2223,7 +2232,8 @@ static const GDBusMethodTable manager_methods[] = {
GDBUS_ARGS({ "number", "s" }, { "hide_callerid", "s" }),
GDBUS_ARGS({ "path", "o" }),
manager_dial) },
- { GDBUS_ASYNC_METHOD("DialLast", NULL, NULL, manager_dial_last)},
+ { GDBUS_ASYNC_METHOD("DialLast",
+ GDBUS_ARGS({ "hide_callerid", "s" }), NULL, manager_dial_last)},
{ GDBUS_ASYNC_METHOD("Transfer", NULL, NULL, manager_transfer) },
{ GDBUS_ASYNC_METHOD("SwapCalls", NULL, NULL, manager_swap_calls) },
{ GDBUS_ASYNC_METHOD("ReleaseAndAnswer", NULL, NULL,
Regards,
-Denis
_______________________________________________
ofono mailing list
[email protected]
https://lists.ofono.org/mailman/listinfo/ofono