* [RFC ssn PATCH 1/4] Supplementary Service Notifications @ 2010-10-08 15:36 Pekka.Pessi 2010-10-08 15:36 ` [RFC ssn PATCH 1/4] ssn: include ssn codes in public API Pekka.Pessi 2010-10-22 17:50 ` [RFC ssn PATCH 1/4] " Denis Kenzior 0 siblings, 2 replies; 7+ messages in thread From: Pekka.Pessi @ 2010-10-08 15:36 UTC (permalink / raw) To: ofono [-- Attachment #1: Type: text/plain, Size: 1628 bytes --] Hello all, I've been working on supplementary service notifications (iow, trying to decipher notifySS usage from 24.080 and related specifications). SSN atom is not used much, so I ended up modifying the current notifier API to include the SSN notification codes as a parameter of the notify function. I also wrote an isimodem driver for the SSNs. As for the D-Bus API, the modifications I propose are in the patch 4. There is no implementation in src/voicecall.c or src/call-forwarding.c, as I'd like to get the D-Bus API agreed first. I'd move the barring notifications to voicecall API, as they just provide additional information on the reason why the call was rejected. IncomingBarringInEffect is not about your barring services but barring services for callee. Most of the CSSI and CSSU indications are no-brainers (once you match the 27.007 language and various bits and pieces from 24.08* specifications) from the API point-of-view but these really require a call ID along with them: - call has been put on hold (+CSSU: 2) - call has been retrieved (+CSSU: 3), and - joining call to a multiparty conference (+CSSU: 4) The problem here is that the AT CSSI/CSSU notifications conveniently strip away indication which call is put on hold, retrieved or joined to a multiparty call. I'd reuse the index with non-CUG codes (as I did in isimodem driver patch) or add an extra call-id parameter to the notifiers. If the driver does not know call-id or there is no call-id for the call, it can pass 0 to the core and let the core to select a convenient victim. --Pekka ^ permalink raw reply [flat|nested] 7+ messages in thread
* [RFC ssn PATCH 1/4] ssn: include ssn codes in public API 2010-10-08 15:36 [RFC ssn PATCH 1/4] Supplementary Service Notifications Pekka.Pessi @ 2010-10-08 15:36 ` Pekka.Pessi 2010-10-08 15:36 ` [RFC ssn PATCH 2/4] ssn: add ssn code argument to ssn notify callbacks Pekka.Pessi 2010-10-22 17:50 ` [RFC ssn PATCH 1/4] " Denis Kenzior 1 sibling, 1 reply; 7+ messages in thread From: Pekka.Pessi @ 2010-10-08 15:36 UTC (permalink / raw) To: ofono [-- Attachment #1: Type: text/plain, Size: 3562 bytes --] From: Pekka Pessi <Pekka.Pessi@nokia.com> Include +CSSI and +CSSU codes in <include/ssn.h> and prefix them with OFONO_. Added CSSU code 10, OFONO_SS_MT_OTHER_CALL_FORWARDED, which is sent to mobile if call was forwarded while mobile was engaged with other call(s). --- include/ssn.h | 29 ++++++++++++++++++++++++++++- src/call-barring.c | 4 ++-- src/common.h | 26 -------------------------- 3 files changed, 30 insertions(+), 29 deletions(-) diff --git a/include/ssn.h b/include/ssn.h index d640cad..4e6d65c 100644 --- a/include/ssn.h +++ b/include/ssn.h @@ -36,8 +36,35 @@ struct ofono_ssn_driver { void (*remove)(struct ofono_ssn *ssn); }; -/* SSN notifications (CSSI and CSSU). */ +/* TS 27.007 Supplementary service notifications +CSSN (CSSI and CSSU) */ +enum ofono_ssn_cssi { + OFONO_SS_MO_UNCONDITIONAL_FORWARDING = 0, + OFONO_SS_MO_CONDITIONAL_FORWARDING = 1, + OFONO_SS_MO_CALL_FORWARDED = 2, + OFONO_SS_MO_CALL_WAITING = 3, + OFONO_SS_MO_CUG_CALL = 4, + OFONO_SS_MO_OUTGOING_BARRING = 5, + OFONO_SS_MO_INCOMING_BARRING = 6, + OFONO_SS_MO_CLIR_SUPPRESSION_REJECTED = 7, + OFONO_SS_MO_CALL_DEFLECTED = 8, +}; + void ofono_ssn_cssi_notify(struct ofono_ssn *ssn, int code, int index); + +enum ofono_ssn_cssu { + OFONO_SS_MT_CALL_FORWARDED = 0, + OFONO_SS_MT_CUG_CALL = 1, + OFONO_SS_MT_VOICECALL_ON_HOLD = 2, + OFONO_SS_MT_VOICECALL_RETRIEVED = 3, + OFONO_SS_MT_MULTIPARTY_VOICECALL = 4, + OFONO_SS_MT_VOICECALL_HOLD_RELEASED = 5, + OFONO_SS_MT_FORWARD_CHECK_SS_MESSAGE = 6, + OFONO_SS_MT_VOICECALL_IN_TRANSFER = 7, + OFONO_SS_MT_VOICECALL_TRANSFERRED = 8, + OFONO_SS_MT_CALL_DEFLECTED = 9, + OFONO_SS_MT_OTHER_CALL_FORWARDED = 10, +}; + void ofono_ssn_cssu_notify(struct ofono_ssn *ssn, int code, int index, const struct ofono_phone_number *number); diff --git a/src/call-barring.c b/src/call-barring.c index f89602e..7a17479 100644 --- a/src/call-barring.c +++ b/src/call-barring.c @@ -1131,11 +1131,11 @@ static void ssn_watch(struct ofono_atom *atom, cb->ssn = __ofono_atom_get_data(atom); cb->incoming_bar_watch = - __ofono_ssn_mo_watch_add(cb->ssn, SS_MO_INCOMING_BARRING, + __ofono_ssn_mo_watch_add(cb->ssn, OFONO_SS_MO_INCOMING_BARRING, call_barring_incoming_enabled_notify, cb, NULL); cb->outgoing_bar_watch = - __ofono_ssn_mo_watch_add(cb->ssn, SS_MO_OUTGOING_BARRING, + __ofono_ssn_mo_watch_add(cb->ssn, OFONO_SS_MO_OUTGOING_BARRING, call_barring_outgoing_enabled_notify, cb, NULL); } diff --git a/src/common.h b/src/common.h index c43e46d..7a148b5 100644 --- a/src/common.h +++ b/src/common.h @@ -89,32 +89,6 @@ enum ss_control_type { SS_CONTROL_TYPE_ERASURE, }; -/* TS 27.007 Supplementary service notifications +CSSN */ -enum ss_cssi { - SS_MO_UNCONDITIONAL_FORWARDING = 0, - SS_MO_CONDITIONAL_FORWARDING = 1, - SS_MO_CALL_FORWARDED = 2, - SS_MO_CALL_WAITING = 3, - SS_MO_CUG_CALL = 4, - SS_MO_OUTGOING_BARRING = 5, - SS_MO_INCOMING_BARRING = 6, - SS_MO_CLIR_SUPPRESSION_REJECTED = 7, - SS_MO_CALL_DEFLECTED = 8, -}; - -enum ss_cssu { - SS_MT_CALL_FORWARDED = 0, - SS_MT_CUG_CALL = 1, - SS_MT_VOICECALL_ON_HOLD = 2, - SS_MT_VOICECALL_RETRIEVED = 3, - SS_MT_MULTIPARTY_VOICECALL = 4, - SS_MT_VOICECALL_HOLD_RELEASED = 5, - SS_MT_FORWARD_CHECK_SS_MESSAGE = 6, - SS_MT_VOICECALL_IN_TRANSFER = 7, - SS_MT_VOICECALL_TRANSFERRED = 8, - SS_MT_CALL_DEFLECTED = 9, -}; - enum pin_type { PIN_TYPE_NONE, PIN_TYPE_PIN, -- 1.7.0.4 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [RFC ssn PATCH 2/4] ssn: add ssn code argument to ssn notify callbacks 2010-10-08 15:36 ` [RFC ssn PATCH 1/4] ssn: include ssn codes in public API Pekka.Pessi @ 2010-10-08 15:36 ` Pekka.Pessi 2010-10-08 15:36 ` [RFC ssn PATCH 3/4] isimodem/ssn: add common notifications Pekka.Pessi 0 siblings, 1 reply; 7+ messages in thread From: Pekka.Pessi @ 2010-10-08 15:36 UTC (permalink / raw) To: ofono [-- Attachment #1: Type: text/plain, Size: 4064 bytes --] From: Pekka Pessi <Pekka.Pessi@nokia.com> Including the ssn code as an argument in notify callbacks allows handling of multiple notifications in single function. --- src/call-barring.c | 33 +++++++++++---------------------- src/ofono.h | 4 ++-- src/ssn.c | 8 ++++++-- 3 files changed, 19 insertions(+), 26 deletions(-) diff --git a/src/call-barring.c b/src/call-barring.c index 7a17479..e2de404 100644 --- a/src/call-barring.c +++ b/src/call-barring.c @@ -993,33 +993,22 @@ static GDBusSignalTable cb_signals[] = { { } }; -static void call_barring_incoming_enabled_notify(int idx, void *userdata) +static void call_barring_notify(int code, int idx, void *userdata) { struct ofono_call_barring *cb = userdata; DBusConnection *conn = ofono_dbus_get_connection(); const char *path = __ofono_atom_get_path(cb->atom); + char const *member; - g_dbus_emit_signal(conn, path, OFONO_CALL_BARRING_INTERFACE, - "IncomingBarringInEffect", DBUS_TYPE_INVALID); -} - -static void call_barring_outgoing_enabled_notify(int idx, void *userdata) -{ - struct ofono_call_barring *cb = userdata; - DBusConnection *conn = ofono_dbus_get_connection(); - const char *path = __ofono_atom_get_path(cb->atom); - DBusMessage *signal; - - signal = dbus_message_new_signal(path, OFONO_CALL_BARRING_INTERFACE, - "OutgoingBarringInEffect"); - - if (!signal) { - ofono_error("Unable to allocate new %s.OutgoingBarringInEffect" - " signal", OFONO_CALL_BARRING_INTERFACE); + if (code == OFONO_SS_MO_INCOMING_BARRING) + member = "IncomingBarringInEffect"; + else if (code == OFONO_SS_MO_OUTGOING_BARRING) + member = "OutgoingBarringInEffect"; + else return; - } - g_dbus_send_message(conn, signal); + g_dbus_emit_signal(conn, path, OFONO_CALL_BARRING_INTERFACE, + member, DBUS_TYPE_INVALID); } int ofono_call_barring_driver_register(const struct ofono_call_barring_driver *d) @@ -1132,11 +1121,11 @@ static void ssn_watch(struct ofono_atom *atom, cb->incoming_bar_watch = __ofono_ssn_mo_watch_add(cb->ssn, OFONO_SS_MO_INCOMING_BARRING, - call_barring_incoming_enabled_notify, cb, NULL); + call_barring_notify, cb, NULL); cb->outgoing_bar_watch = __ofono_ssn_mo_watch_add(cb->ssn, OFONO_SS_MO_OUTGOING_BARRING, - call_barring_outgoing_enabled_notify, cb, NULL); + call_barring_notify, cb, NULL); } static void ussd_watch(struct ofono_atom *atom, diff --git a/src/ofono.h b/src/ofono.h index 6c7f649..1cbc935 100644 --- a/src/ofono.h +++ b/src/ofono.h @@ -243,8 +243,8 @@ void __ofono_cbs_sim_download(struct ofono_stk *stk, const struct cbs *msg); #include <ofono/ssn.h> -typedef void (*ofono_ssn_mo_notify_cb)(int index, void *user); -typedef void (*ofono_ssn_mt_notify_cb)(int index, +typedef void (*ofono_ssn_mo_notify_cb)(int index, int mo_code, void *user); +typedef void (*ofono_ssn_mt_notify_cb)(int index, int mt_code, const struct ofono_phone_number *ph, void *user); diff --git a/src/ssn.c b/src/ssn.c index b886dba..8a4ad70 100644 --- a/src/ssn.c +++ b/src/ssn.c @@ -118,12 +118,14 @@ void ofono_ssn_cssi_notify(struct ofono_ssn *ssn, int code1, int index) GSList *l; ofono_ssn_mo_notify_cb notify; + DBG("ssn %p, code %u, index %u", (void *)ssn, code1, index); + for (l = ssn->mo_handler_list->items; l; l = l->next) { h = l->data; notify = h->item.notify; if (h->code == code1) - notify(index, h->item.notify_data); + notify(index, code1, h->item.notify_data); } } @@ -134,12 +136,14 @@ void ofono_ssn_cssu_notify(struct ofono_ssn *ssn, int code2, int index, GSList *l; ofono_ssn_mt_notify_cb notify; + DBG("ssn %p, code %u, index %u", (void *)ssn, code2, index); + for (l = ssn->mt_handler_list->items; l; l = l->next) { h = l->data; notify = h->item.notify; if (h->code == code2) - notify(index, ph, h->item.notify_data); + notify(index, code2, ph, h->item.notify_data); } } -- 1.7.0.4 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [RFC ssn PATCH 3/4] isimodem/ssn: add common notifications 2010-10-08 15:36 ` [RFC ssn PATCH 2/4] ssn: add ssn code argument to ssn notify callbacks Pekka.Pessi @ 2010-10-08 15:36 ` Pekka.Pessi 2010-10-08 15:36 ` [RFC ssn PATCH 4/4] D-Bus API for Supplementary Service Notifications Pekka.Pessi 0 siblings, 1 reply; 7+ messages in thread From: Pekka.Pessi @ 2010-10-08 15:36 UTC (permalink / raw) To: ofono [-- Attachment #1: Type: text/plain, Size: 7764 bytes --] From: Pekka Pessi <Pekka.Pessi@nokia.com> Add notifications on hold, retrieve, multiparty, call waiting, barrings, and various notifications on call forwarding. Note that driver uses the CUG index parameter to pass call IDs to core. --- drivers/isimodem/call.h | 12 +++ drivers/isimodem/ssn.c | 224 +++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 227 insertions(+), 9 deletions(-) diff --git a/drivers/isimodem/call.h b/drivers/isimodem/call.h index 2901971..9a8ba39 100644 --- a/drivers/isimodem/call.h +++ b/drivers/isimodem/call.h @@ -402,6 +402,18 @@ enum { CALL_DTMF_DISABLE_TONE_IND_SEND = 0x02 }; +enum { + CALL_GSM_SSI_CALL_IS_WAITING = 0x01, + CALL_GSM_SSI_MPTY = 0x02, + CALL_GSM_SSI_CLIR_SUPPR_REJ = 0x04, +}; + +enum { + CALL_GSM_SSN_INCOMING_IS_FWD = 0x01, + CALL_GSM_SSN_INCOMING_FWD = 0x02, + CALL_GSM_SSN_OUTGOING_FWD = 0x04, +}; + #ifdef __cplusplus }; #endif diff --git a/drivers/isimodem/ssn.c b/drivers/isimodem/ssn.c index def3b0c..1e1f659 100644 --- a/drivers/isimodem/ssn.c +++ b/drivers/isimodem/ssn.c @@ -1,7 +1,7 @@ /* * This file is part of oFono - Open Source Telephony * - * Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). + * Copyright (C) 2009-2010 Nokia Corporation and/or its subsidiary(-ies). * * Contact: Aki Niemi <aki.niemi@nokia.com> * @@ -32,42 +32,248 @@ #include <errno.h> #include <glib.h> +#include <arpa/inet.h> #include <gisi/client.h> +#include <gisi/iter.h> #include <ofono/log.h> #include <ofono/modem.h> #include <ofono/ssn.h> #include "isimodem.h" +#include "call.h" +#include "ss.h" -#define PN_SS 0x06 - -struct ssn_data { +struct isi_ssn { GIsiClient *client; }; +static void isi_ssn_ss_code(struct ofono_ssn *ssn, uint16_t ss_code) +{ + int cssi; + + DBG("ss_code=%u", ss_code); + + /* ss-code is MMI code from 22.030 */ + + switch (ss_code) { + case SS_GSM_FORW_UNCONDITIONAL: + case SS_GSM_ALL_FORWARDINGS: + /* 3GPP TS 22.082 clause 1.1.1 */ + cssi = OFONO_SS_MO_UNCONDITIONAL_FORWARDING; + break; + + case SS_GSM_FORW_NO_REPLY: + case SS_GSM_FORW_NO_REACH: + case SS_GSM_FORW_BUSY: + case SS_GSM_ALL_COND_FORWARDINGS: + /* 3GPP TS 22.082 clauses 2.1.1, 3.1.1, 4.1.1 */ + cssi = OFONO_SS_MO_CONDITIONAL_FORWARDING; + break; + + case SS_GSM_BARR_ALL_OUT: + case SS_GSM_OUTGOING_BARR_SERV: + case SS_GSM_BARR_OUT_INTER: + case SS_GSM_BARR_OUT_INTER_EXC_HOME: + /* 3GPP TS 22.088 clause 1.1 */ + cssi = OFONO_SS_MO_OUTGOING_BARRING; + break; + + case SS_GSM_INCOMING_BARR_SERV: + case SS_GSM_BARR_ALL_IN: + case SS_GSM_BARR_ALL_IN_ROAM: + /* 3GPP TS 22.088 clause 2.1 */ + /* Called subscriber has barred incoming calls */ + cssi = OFONO_SS_MO_INCOMING_BARRING; + break; + + default: + return; + } + + ofono_ssn_cssi_notify(ssn, cssi, 0); +} + +static void isi_ssn_ss_notification(struct ofono_ssn *ssn, int id, + uint8_t ss_notification) +{ + int code; + + struct ofono_phone_number number = { }; + + /* See SS-Notification in TS 22.080 clause 4.4.2 */ + + if (ss_notification & (1 << 2)) { + /* "Call is forwarded" indication to A-subscriber */ + /* 3GPP TS 22.082 clauses 1.1.3, 2.1.3, 3.1.3, 4.1.3 */ + code = OFONO_SS_MO_CALL_FORWARDED; + ofono_ssn_cssi_notify(ssn, code, id); + } else if (ss_notification & (1 << 1)) { + /* "Call is forwarded" indication to B subscriber */ + /* 3GPP TS 24.082 clauses 2.1.1, 3.1.1 */ + code = OFONO_SS_MT_OTHER_CALL_FORWARDED; + ofono_ssn_cssu_notify(ssn, code, 0, number); + /* A subscriber address is not relayed to mobile */ + } else if (ss_notification & (1 << 0)) { + /* "Call is forwarded" indication to C subscriber */ + /* 3GPP TS 22.082 clauses 1.1.2, 2.1.2, 3.1.2, 4.1.2 */ + code = OFONO_SS_MT_CALL_FORWARDED; + ofono_ssn_cssu_notify(ssn, code, id, number); + /* The redirecting address is not part of notifySS */ + /* However, it is available in CALL_COMING_IND */ + } +} + +static void isi_ssn_notify_indicator(struct ofono_ssn *ssn, int id, + uint8_t ss_indicators, + struct ofono_phone_number *number) +{ + DBG(""); + + if (ss_indicators & CALL_GSM_SSI_CALL_IS_WAITING) { + ofono_ssn_cssi_notify(ssn, + OFONO_SS_MO_CALL_WAITING, id); + } + + if (ss_indicators & CALL_GSM_SSI_MPTY) { + /* call is connected to multiparty by remote end */ + ofono_ssn_cssu_notify(ssn, + OFONO_SS_MT_MULTIPARTY_VOICECALL, id, number); + } + + if (ss_indicators & CALL_GSM_SSI_CLIR_SUPPR_REJ) { + ofono_ssn_cssi_notify(ssn, + OFONO_SS_MO_CLIR_SUPPRESSION_REJECTED, id); + } +} + +static void isi_ssn_hold_indicator(struct ofono_ssn *ssn, int id, uint8_t hold) +{ + int code; + + struct ofono_phone_number number = { }; + + DBG("CallOnHoldIndication=%u", hold); + + if (hold) + code = OFONO_SS_MT_VOICECALL_ON_HOLD; + else + code = OFONO_SS_MT_VOICECALL_RETRIEVED; + + ofono_ssn_cssu_notify(ssn, code, id, &number); +} + +static void isi_ssn_ind(GIsiClient *client, + void const *restrict data, size_t len, + uint16_t object, void *user) +{ + struct ofono_ssn *ssn = user; + struct { + uint8_t message_id, call_id, sub_blocks; + } const *m = data; + int id; + uint16_t ss_code = 0; + uint8_t ss_notification = 0; + uint8_t ss_indicators; + uint8_t ss_hold; + struct { + int ss_notification; + int ss_status; + int ss_indicators; + int ss_hold; + } got = { }; + GIsiSubBlockIter sb[1]; + + if (len < 3) + return; /* runt */ + + id = m->call_id & 7; + if (id == 0) + return; + + DBG("id %u, len = %zu", id, len); + + for (g_isi_sb_iter_init(sb, data, len, (sizeof *m)); + g_isi_sb_iter_is_valid(sb); + g_isi_sb_iter_next(sb)) { + switch (g_isi_sb_iter_get_id(sb)) { + case CALL_GSM_SS_CODE: + g_isi_sb_iter_get_word(sb, &ss_code, 2); + break; + + case CALL_GSM_SS_STATUS: + got.ss_status = 1; + break; + + case CALL_GSM_SS_NOTIFY: + if (g_isi_sb_iter_get_byte(sb, &ss_notification, 2)) + got.ss_notification = 1; + break; + + case CALL_GSM_SS_NOTIFY_INDICATOR: + if (g_isi_sb_iter_get_byte(sb, &ss_indicators, 2)) + got.ss_indicators = 1; + break; + + case CALL_GSM_SS_HOLD_INDICATOR: + if (g_isi_sb_iter_get_byte(sb, &ss_hold, 2)) + got.ss_hold = 1; + break; + + case CALL_GSM_SS_ECT_INDICATOR: + /* TODO */ + break; + + case CALL_GSM_CUG_INFO: + /* TODO */ + break; + } + } + + if (got.ss_notification) + isi_ssn_ss_notification(ssn, id, ss_notification); + else if (got.ss_status) + isi_ssn_ss_code(ssn, ss_code); + + if (got.ss_indicators) + isi_ssn_notify_indicator(ssn, id, ss_indicators); + + if (got.ss_hold) + isi_ssn_hold_indicator(ssn, id, ss_hold); +} + static int isi_ssn_probe(struct ofono_ssn *ssn, unsigned int vendor, void *user) { - GIsiModem *idx = user; - struct ssn_data *data = g_try_new0(struct ssn_data, 1); + GIsiModem *modem = user; + struct isi_ssn *data; + DBG(""); + + data = g_try_new0(struct isi_ssn, 1); if (!data) return -ENOMEM; - data->client = g_isi_client_create(idx, PN_SS); - if (!data->client) + data->client = g_isi_client_create(modem, PN_CALL); + if (!data->client) { + g_free(data); return -ENOMEM; + } ofono_ssn_set_data(ssn, data); + ofono_ssn_register(ssn); + + g_isi_subscribe(data->client, CALL_GSM_NOTIFICATION_IND, + isi_ssn_ind, ssn); + return 0; } static void isi_ssn_remove(struct ofono_ssn *ssn) { - struct ssn_data *data = ofono_ssn_get_data(ssn); + struct isi_ssn *data = ofono_ssn_get_data(ssn); if (data) { g_isi_client_destroy(data->client); -- 1.7.0.4 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [RFC ssn PATCH 4/4] D-Bus API for Supplementary Service Notifications 2010-10-08 15:36 ` [RFC ssn PATCH 3/4] isimodem/ssn: add common notifications Pekka.Pessi @ 2010-10-08 15:36 ` Pekka.Pessi 2010-10-22 17:47 ` Denis Kenzior 0 siblings, 1 reply; 7+ messages in thread From: Pekka.Pessi @ 2010-10-08 15:36 UTC (permalink / raw) To: ofono [-- Attachment #1: Type: text/plain, Size: 4931 bytes --] From: Pekka Pessi <Pekka.Pessi@nokia.com> --- doc/call-barring-api.txt | 10 ------- doc/call-forwarding-api.txt | 9 +++++++ doc/voicecall-api.txt | 55 +++++++++++++++++++++++++++++++++++++++++- doc/voicecallmanager-api.txt | 5 ++++ 4 files changed, 68 insertions(+), 11 deletions(-) diff --git a/doc/call-barring-api.txt b/doc/call-barring-api.txt index 41ae4b1..1534494 100644 --- a/doc/call-barring-api.txt +++ b/doc/call-barring-api.txt @@ -37,16 +37,6 @@ Signals PropertyChanged(string property, variant value) Signal is emitted whenever a property has changed. The new value is passed as the signal argument. - IncomingBarringInEffect() - - Signal is emitted when a call is made and an - incoming call barring supplementary service is in use. - - OutgoingBarringInEffect() - - Signal is emitted when a call is made and an - outgoing call barring supplementary service is in use. - Properties string VoiceIncoming [readwrite] Contains the value of the barrings for the incoming diff --git a/doc/call-forwarding-api.txt b/doc/call-forwarding-api.txt index 067531a..a97165b 100644 --- a/doc/call-forwarding-api.txt +++ b/doc/call-forwarding-api.txt @@ -26,6 +26,15 @@ Signals PropertyChanged(string property, variant value) Signal is emitted whenever a property has changed. The new value is passed as the signal argument. + ForwardingInEffect(string condition) + + This informational signal is emitted when an outgoing + call is made. It indicates that a voice call + forwarding for incoming calls is in use. Condition can + be either of: + "unconditional" - VoiceUnconditional is active + "conditional" - A conditional rule is active + Properties string VoiceUnconditional [readwrite] Contains the value of the voice unconditional call diff --git a/doc/voicecall-api.txt b/doc/voicecall-api.txt index f0ba316..a6c0b42 100644 --- a/doc/voicecall-api.txt +++ b/doc/voicecall-api.txt @@ -73,6 +73,54 @@ Signals PropertyChanged(string property, variant value) of this signal as optional. This signal will be emitted before the PropertyChanged signal. + JoinedMultiparty() + + Signal is emitted when remote party joins the + call into a multiparty conference. + + Note that there is no corresponding event when + remote party splits call from the multiparty + conference. + + Waiting() + + Signal is emitted when an outgoing call is waiting. + + OutgoingBarred() + + Signal is emitted when caller's outgoing barring + services prevent call from being connected. + + This signal can be emitted while call is being + disconnected or while a recorded announcement is + played. + + IngomingBarred() + + Signal is emitted when callee's incoming barring + services prevent call from being connected. + + This signal can be emitted while call is being + disconnected or while a recorded announcement is + played. + + IncomingRedirected(string) + + Signal is emitted when network indicates that an + incoming call has been redirected. The value + contains the phone number of the party that + redirected the call if available. + + OutgoingRedirected() + + Signal is emitted when an outgoing call has been + redirected. + + CallerIDRestrictionRejected() + + Signal is emitted when caller requested Caller + ID Restriction but network rejects it. + Properties string LineIdentification [readonly] Contains the Line Identification information returned @@ -90,7 +138,7 @@ Properties string LineIdentification [readonly] boolean Multiparty [readonly] Contains the indication if the voice call is part - of a multiparty call or not. + of a multiparty call set up by user or not. Notifications if a call becomes part or leaves a multipart call are sent. @@ -115,6 +163,11 @@ Properties string LineIdentification [readonly] Client applications can use this to infer somewhat reliable call duration information. + boolean OnHold [readonly] + + Contains the indication if the remote party has + put call on hold. + string Information [readonly, optional] Contains information related to the call for the diff --git a/doc/voicecallmanager-api.txt b/doc/voicecallmanager-api.txt index 11af23a..34ed9de 100644 --- a/doc/voicecallmanager-api.txt +++ b/doc/voicecallmanager-api.txt @@ -132,6 +132,11 @@ Signals CallAdded(object path, dict properties) released. The object path is no longer accessible after this signal and only emitted for reference. + IncomingCallForwarded + + This signal is sent when an incoming voice call + has been forwarded by the network. + Properties array{string} EmergencyNumbers Contains the list of emergency numbers recognized -- 1.7.0.4 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [RFC ssn PATCH 4/4] D-Bus API for Supplementary Service Notifications 2010-10-08 15:36 ` [RFC ssn PATCH 4/4] D-Bus API for Supplementary Service Notifications Pekka.Pessi @ 2010-10-22 17:47 ` Denis Kenzior 0 siblings, 0 replies; 7+ messages in thread From: Denis Kenzior @ 2010-10-22 17:47 UTC (permalink / raw) To: ofono [-- Attachment #1: Type: text/plain, Size: 6316 bytes --] Hi Pekka, On 10/08/2010 10:36 AM, Pekka.Pessi(a)nokia.com wrote: > From: Pekka Pessi <Pekka.Pessi@nokia.com> > > --- > doc/call-barring-api.txt | 10 ------- > doc/call-forwarding-api.txt | 9 +++++++ > doc/voicecall-api.txt | 55 +++++++++++++++++++++++++++++++++++++++++- > doc/voicecallmanager-api.txt | 5 ++++ > 4 files changed, 68 insertions(+), 11 deletions(-) > > diff --git a/doc/call-barring-api.txt b/doc/call-barring-api.txt > index 41ae4b1..1534494 100644 > --- a/doc/call-barring-api.txt > +++ b/doc/call-barring-api.txt > @@ -37,16 +37,6 @@ Signals PropertyChanged(string property, variant value) > Signal is emitted whenever a property has changed. > The new value is passed as the signal argument. > > - IncomingBarringInEffect() > - > - Signal is emitted when a call is made and an > - incoming call barring supplementary service is in use. > - > - OutgoingBarringInEffect() > - > - Signal is emitted when a call is made and an > - outgoing call barring supplementary service is in use. > - > Properties string VoiceIncoming [readwrite] > > Contains the value of the barrings for the incoming > diff --git a/doc/call-forwarding-api.txt b/doc/call-forwarding-api.txt > index 067531a..a97165b 100644 > --- a/doc/call-forwarding-api.txt > +++ b/doc/call-forwarding-api.txt > @@ -26,6 +26,15 @@ Signals PropertyChanged(string property, variant value) > Signal is emitted whenever a property has changed. > The new value is passed as the signal argument. > > + ForwardingInEffect(string condition) > + > + This informational signal is emitted when an outgoing > + call is made. It indicates that a voice call > + forwarding for incoming calls is in use. Condition can > + be either of: > + "unconditional" - VoiceUnconditional is active > + "conditional" - A conditional rule is active > + So this maps to CSSI <code1> 0 or 1. Sounds like this belongs on the voicecall interface (or perhaps voicecallmanager) as well. > Properties string VoiceUnconditional [readwrite] > > Contains the value of the voice unconditional call > diff --git a/doc/voicecall-api.txt b/doc/voicecall-api.txt > index f0ba316..a6c0b42 100644 > --- a/doc/voicecall-api.txt > +++ b/doc/voicecall-api.txt > @@ -73,6 +73,54 @@ Signals PropertyChanged(string property, variant value) > of this signal as optional. This signal will be > emitted before the PropertyChanged signal. > > + JoinedMultiparty() > + > + Signal is emitted when remote party joins the > + call into a multiparty conference. > + > + Note that there is no corresponding event when > + remote party splits call from the multiparty > + conference. > + > + Waiting() > + > + Signal is emitted when an outgoing call is waiting. I'm fine with this one, but have you considered putting this on a the voicecallmanager interface? This can only be emitted for dialing / alerting calls, so the scope is inherently known. But I'm fine either way. > + > + OutgoingBarred() > + > + Signal is emitted when caller's outgoing barring > + services prevent call from being connected. > + > + This signal can be emitted while call is being > + disconnected or while a recorded announcement is > + played. > + I'm not so sure about this assessment on AT modems... > + IngomingBarred() > + > + Signal is emitted when callee's incoming barring > + services prevent call from being connected. > + > + This signal can be emitted while call is being > + disconnected or while a recorded announcement is > + played. Please name this RemoteBarred() > + > + IncomingRedirected(string) > + > + Signal is emitted when network indicates that an > + incoming call has been redirected. The value > + contains the phone number of the party that > + redirected the call if available. Why is this one on the voice call interface while IncomingForwarded is on the voicecall manager interface? I assume this refers to an incoming or waiting call being signaled as part of a deflection procedure? > + > + OutgoingRedirected() > + > + Signal is emitted when an outgoing call has been > + redirected. Please stick with our terminology and name this Deflected(). > + > + CallerIDRestrictionRejected() > + > + Signal is emitted when caller requested Caller > + ID Restriction but network rejects it. Again for consistency, please use CallingLineRestrictionRejected() > + > Properties string LineIdentification [readonly] > > Contains the Line Identification information returned > @@ -90,7 +138,7 @@ Properties string LineIdentification [readonly] > boolean Multiparty [readonly] > > Contains the indication if the voice call is part > - of a multiparty call or not. > + of a multiparty call set up by user or not. > > Notifications if a call becomes part or leaves a > multipart call are sent. > @@ -115,6 +163,11 @@ Properties string LineIdentification [readonly] > Client applications can use this to infer somewhat > reliable call duration information. > > + boolean OnHold [readonly] > + > + Contains the indication if the remote party has > + put call on hold. > + I'm not sure you can ever make this work on AT modems. Perhaps making this a signal on the VoiceCallManager interface is better. > string Information [readonly, optional] > > Contains information related to the call for the > diff --git a/doc/voicecallmanager-api.txt b/doc/voicecallmanager-api.txt > index 11af23a..34ed9de 100644 > --- a/doc/voicecallmanager-api.txt > +++ b/doc/voicecallmanager-api.txt > @@ -132,6 +132,11 @@ Signals CallAdded(object path, dict properties) > released. The object path is no longer accessible > after this signal and only emitted for reference. > > + IncomingCallForwarded > + > + This signal is sent when an incoming voice call > + has been forwarded by the network. > + What is this one referring to? Is it a result of a transfer procedure? > Properties array{string} EmergencyNumbers > > Contains the list of emergency numbers recognized Regards, -Denis ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [RFC ssn PATCH 1/4] Supplementary Service Notifications 2010-10-08 15:36 [RFC ssn PATCH 1/4] Supplementary Service Notifications Pekka.Pessi 2010-10-08 15:36 ` [RFC ssn PATCH 1/4] ssn: include ssn codes in public API Pekka.Pessi @ 2010-10-22 17:50 ` Denis Kenzior 1 sibling, 0 replies; 7+ messages in thread From: Denis Kenzior @ 2010-10-22 17:50 UTC (permalink / raw) To: ofono [-- Attachment #1: Type: text/plain, Size: 2456 bytes --] Hi Pekka, Sorry for replying so late. On 10/08/2010 10:36 AM, Pekka.Pessi(a)nokia.com wrote: > Hello all, > > I've been working on supplementary service notifications (iow, trying to > decipher notifySS usage from 24.080 and related specifications). > > SSN atom is not used much, so I ended up modifying the current notifier > API to include the SSN notification codes as a parameter of the notify > function. > > I also wrote an isimodem driver for the SSNs. > > As for the D-Bus API, the modifications I propose are in the patch > 4. There is no implementation in src/voicecall.c or > src/call-forwarding.c, as I'd like to get the D-Bus API agreed first. > > I'd move the barring notifications to voicecall API, as they just > provide additional information on the reason why the call was > rejected. IncomingBarringInEffect is not about your barring services but > barring services for callee. So I pretty much concur with your assessment here and agree we should move these out of the CallBarring interface. > > Most of the CSSI and CSSU indications are no-brainers (once you match > the 27.007 language and various bits and pieces from 24.08* > specifications) from the API point-of-view but these really require a > call ID along with them: Please note that CSSI is considered an intermediate response code to an ATD, and thus can always (well in theory ;) be associated with a dialing / alerting call. > > - call has been put on hold (+CSSU: 2) > - call has been retrieved (+CSSU: 3), and > - joining call to a multiparty conference (+CSSU: 4) > > The problem here is that the AT CSSI/CSSU notifications conveniently > strip away indication which call is put on hold, retrieved or joined to > a multiparty call. I'd reuse the index with non-CUG codes (as I did in > isimodem driver patch) or add an extra call-id parameter to the > notifiers. If the driver does not know call-id or there is no call-id > for the call, it can pass 0 to the core and let the core to select a > convenient victim. The problem is this won't work properly in all cases. I'm pretty much OK with sticking CSSI codes onto the voicecall interface, but CSSU codes might need to remain as signals on the voice call manager without fancy handling. I'm also in favor of getting rid of the SSN atom completely and squashing CSSI / CSSU notifications into the voicecall atom. Regards, -Denis ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2010-10-22 17:50 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2010-10-08 15:36 [RFC ssn PATCH 1/4] Supplementary Service Notifications Pekka.Pessi 2010-10-08 15:36 ` [RFC ssn PATCH 1/4] ssn: include ssn codes in public API Pekka.Pessi 2010-10-08 15:36 ` [RFC ssn PATCH 2/4] ssn: add ssn code argument to ssn notify callbacks Pekka.Pessi 2010-10-08 15:36 ` [RFC ssn PATCH 3/4] isimodem/ssn: add common notifications Pekka.Pessi 2010-10-08 15:36 ` [RFC ssn PATCH 4/4] D-Bus API for Supplementary Service Notifications Pekka.Pessi 2010-10-22 17:47 ` Denis Kenzior 2010-10-22 17:50 ` [RFC ssn PATCH 1/4] " Denis Kenzior
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.