[PATCH 0/1] Avoid timeout too quickly in PPP handshaking
by Zhenhua Zhang
Hi,
The patch is to increase the Max-Failure count for NAKs in IPCP handshaking. It is inspired by the similar implementation in pppd. Our PPP server uses IPCP NAKs to stall until acquiring the client IP address from DHCP server, so we need to increase the max failure count (default is 5) in IPCP handshaking.
Thanks,
Zhenhua
12 years, 1 month
[PATCH 0/1] Avoid timeout too quickly in PPP handshaking
by Zhenhua Zhang
Hi,
The patch is to increase the Max-Failure count for NAKs in IPCP handshaking. It is inspired by the similar implementation in pppd. Our PPP server uses IPCP NAKs to stall until acquiring the client IP address from DHCP server, so we need to increase the max failure count (default is 5) in IPCP handshaking.
Thanks,
Zhenhua
12 years, 1 month
[PATCH] Add init phonesim stk support
by Yang Gu
---
Makefile.am | 28 ++--
drivers/phonesimmodem/phonesimmodem.c | 48 +++++
drivers/phonesimmodem/phonesimmodem.h | 26 +++
drivers/phonesimmodem/stk.c | 316 +++++++++++++++++++++++++++++++++
plugins/phonesim.c | 2 +-
5 files changed, 408 insertions(+), 12 deletions(-)
create mode 100644 drivers/phonesimmodem/phonesimmodem.c
create mode 100644 drivers/phonesimmodem/phonesimmodem.h
create mode 100644 drivers/phonesimmodem/stk.c
diff --git a/Makefile.am b/Makefile.am
index 24aa886..0548038 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -158,12 +158,6 @@ builtin_sources += $(gatchat_sources) \
drivers/atmodem/gprs.c \
drivers/atmodem/gprs-context.c
-builtin_modules += nwmodem
-builtin_sources += drivers/atmodem/atutil.h \
- drivers/nwmodem/nwmodem.h \
- drivers/nwmodem/nwmodem.c \
- drivers/nwmodem/radio-settings.c
-
builtin_modules += calypsomodem
builtin_sources += drivers/atmodem/atutil.h \
drivers/calypsomodem/calypsomodem.h \
@@ -178,6 +172,13 @@ builtin_sources += drivers/atmodem/atutil.h \
drivers/hfpmodem/network-registration.c \
drivers/hfpmodem/call-volume.c
+builtin_modules += hsomodem
+builtin_sources += drivers/atmodem/atutil.h \
+ drivers/hsomodem/hsomodem.h \
+ drivers/hsomodem/hsomodem.c \
+ drivers/hsomodem/gprs-context.c \
+ drivers/hsomodem/radio-settings.c
+
builtin_modules += mbmmodem
builtin_sources += drivers/atmodem/atutil.h \
drivers/mbmmodem/mbmmodem.h \
@@ -185,12 +186,17 @@ builtin_sources += drivers/atmodem/atutil.h \
drivers/mbmmodem/gprs-context.c \
drivers/mbmmodem/stk.c
-builtin_modules += hsomodem
+builtin_modules += nwmodem
builtin_sources += drivers/atmodem/atutil.h \
- drivers/hsomodem/hsomodem.h \
- drivers/hsomodem/hsomodem.c \
- drivers/hsomodem/gprs-context.c \
- drivers/hsomodem/radio-settings.c
+ drivers/nwmodem/nwmodem.h \
+ drivers/nwmodem/nwmodem.c \
+ drivers/nwmodem/radio-settings.c
+
+builtin_modules += phonesimmodem
+builtin_sources += drivers/atmodem/atutil.h \
+ drivers/phonesimmodem/phonesimmodem.h \
+ drivers/phonesimmodem/phonesimmodem.c \
+ drivers/phonesimmodem/stk.c
builtin_modules += stemodem
builtin_sources += drivers/atmodem/atutil.h \
diff --git a/drivers/phonesimmodem/phonesimmodem.c b/drivers/phonesimmodem/phonesimmodem.c
new file mode 100644
index 0000000..86a2f05
--- /dev/null
+++ b/drivers/phonesimmodem/phonesimmodem.c
@@ -0,0 +1,48 @@
+/*
+ *
+ * oFono - Open Source Telephony
+ *
+ * Copyright (C) 2008-2010 Intel Corporation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <glib.h>
+#include <gatchat.h>
+
+#define OFONO_API_SUBJECT_TO_CHANGE
+#include <ofono/plugin.h>
+#include <ofono/types.h>
+
+#include "phonesimmodem.h"
+
+static int phonesimmodem_init(void)
+{
+ phonesim_stk_init();
+
+ return 0;
+}
+
+static void phonesimmodem_exit(void)
+{
+ phonesim_stk_exit();
+}
+
+OFONO_PLUGIN_DEFINE(phonesimmodem, "Phonesim modem driver", VERSION,
+ OFONO_PLUGIN_PRIORITY_DEFAULT, phonesimmodem_init, phonesimmodem_exit)
diff --git a/drivers/phonesimmodem/phonesimmodem.h b/drivers/phonesimmodem/phonesimmodem.h
new file mode 100644
index 0000000..2e81712
--- /dev/null
+++ b/drivers/phonesimmodem/phonesimmodem.h
@@ -0,0 +1,26 @@
+/*
+ *
+ * oFono - Open Source Telephony
+ *
+ * Copyright (C) 2008-2010 Intel Corporation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+#include <drivers/atmodem/atutil.h>
+
+extern void phonesim_stk_init();
+extern void phonesim_stk_exit();
+
diff --git a/drivers/phonesimmodem/stk.c b/drivers/phonesimmodem/stk.c
new file mode 100644
index 0000000..2cdac4c
--- /dev/null
+++ b/drivers/phonesimmodem/stk.c
@@ -0,0 +1,316 @@
+/*
+ *
+ * oFono - Open Source Telephony
+ *
+ * Copyright (C) 2008-2010 Intel Corporation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#define _GNU_SOURCE
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+#include <glib.h>
+
+#include <ofono/log.h>
+#include <ofono/modem.h>
+#include <ofono/stk.h>
+
+#include "gatchat.h"
+#include "gatresult.h"
+
+#include "phonesimmodem.h"
+
+struct stk_data {
+ GAtChat *chat;
+};
+
+static const char *csim_prefix[] = { "+CSIM:", NULL };
+
+static void phonesim_csim_envelope_cb(gboolean ok, GAtResult *result,
+ gpointer user_data)
+{
+ struct cb_data *cbd = user_data;
+ GAtResultIter iter;
+ ofono_stk_envelope_cb_t cb = cbd->cb;
+ struct ofono_error error;
+ const guint8 *response;
+ gint rlen, len;
+
+ decode_at_error(&error, g_at_result_final_response(result));
+
+ if (!ok)
+ goto error;
+
+ g_at_result_iter_init(&iter, result);
+
+ if (!g_at_result_iter_next(&iter, "+CSIM:"))
+ goto error;
+
+ if (!g_at_result_iter_next_number(&iter, &rlen))
+ goto error;
+
+ if (!g_at_result_iter_next_hexstring(&iter, &response, &len))
+ goto error;
+
+ if (rlen != len * 2 || len < 2)
+ goto error;
+
+ if (response[len - 2] != 0x90 && response[len - 2] != 0x91)
+ goto error;
+
+ if (response[len - 2] == 0x90 && response[len - 1] != 0)
+ goto error;
+
+ DBG("csim_envelope_cb: %i", len);
+
+ cb(&error, response, len - 2, cbd->data);
+ return;
+
+error:
+ CALLBACK_WITH_FAILURE(cb, NULL, 0, cbd->data);
+}
+
+static void phonesim_stk_envelope(struct ofono_stk *stk, int length,
+ const unsigned char *command,
+ ofono_stk_envelope_cb_t cb, void *data)
+{
+ struct stk_data *sd = ofono_stk_get_data(stk);
+ struct cb_data *cbd = cb_data_new(cb, data);
+ char *buf = g_try_new(char, 64 + length * 2);
+ int len, ret;
+
+ if (!cbd || !buf)
+ goto error;
+
+ len = sprintf(buf, "AT+CSIM=%i,A0C20000%02hhX",
+ 12 + length * 2, length);
+
+ for (; length; length--)
+ len += sprintf(buf + len, "%02hhX", *command++);
+
+ len += sprintf(buf + len, "FF");
+
+ ret = g_at_chat_send(sd->chat, buf, csim_prefix,
+ phonesim_csim_envelope_cb, cbd, g_free);
+
+ g_free(buf);
+ buf = NULL;
+
+ if (ret > 0)
+ return;
+
+error:
+ if (buf)
+ g_free(buf);
+
+ if (cbd)
+ g_free(cbd);
+
+ CALLBACK_WITH_FAILURE(cb, NULL, 0, data);
+}
+
+static void phonesim_csim_terminal_response_cb(gboolean ok, GAtResult *result,
+ gpointer user_data)
+{
+ struct cb_data *cbd = user_data;
+ GAtResultIter iter;
+ ofono_stk_generic_cb_t cb = cbd->cb;
+ struct ofono_error error;
+ const guint8 *response;
+ gint rlen, len;
+
+ decode_at_error(&error, g_at_result_final_response(result));
+
+ if (!ok)
+ goto error;
+
+ g_at_result_iter_init(&iter, result);
+
+ if (!g_at_result_iter_next(&iter, "+CSIM:"))
+ goto error;
+
+ if (!g_at_result_iter_next_number(&iter, &rlen))
+ goto error;
+
+ if (!g_at_result_iter_next_hexstring(&iter, &response, &len))
+ goto error;
+
+ if (rlen != len * 2 || len < 2)
+ goto error;
+
+ if (response[len - 2] != 0x90 && response[len - 2] != 0x91)
+ goto error;
+
+ if (response[len - 2] == 0x90 && response[len - 1] != 0)
+ goto error;
+
+ DBG("csim_terminal_response_cb: %i", len);
+
+ cb(&error, cbd->data);
+ return;
+
+error:
+ CALLBACK_WITH_FAILURE(cb, cbd->data);
+}
+
+static void phonesim_stk_terminal_response(struct ofono_stk *stk, int length,
+ const unsigned char *value,
+ ofono_stk_generic_cb_t cb,
+ void *data)
+{
+ struct stk_data *sd = ofono_stk_get_data(stk);
+ struct cb_data *cbd = cb_data_new(cb, data);
+ char *buf = g_try_new(char, 64 + length * 2);
+ int len, ret;
+
+ if (!cbd || !buf)
+ goto error;
+
+ len = sprintf(buf, "AT+CSIM=%i,A0140000%02hhX",
+ 10 + length * 2, length);
+
+ for (; length; length--)
+ len += sprintf(buf + len, "%02hhX", *value++);
+
+ ret = g_at_chat_send(sd->chat, buf, csim_prefix,
+ phonesim_csim_terminal_response_cb, cbd, g_free);
+
+ g_free(buf);
+ buf = NULL;
+
+ if (ret > 0)
+ return;
+
+error:
+ if (cbd)
+ g_free(cbd);
+
+ CALLBACK_WITH_FAILURE(cb, data);
+}
+
+static void fetch_cb(gboolean ok, GAtResult *result,
+ gpointer user_data)
+{
+ struct ofono_stk *stk = user_data;
+ GAtResultIter iter;
+ const guint8 *response;
+ gint rlen, len;
+
+ if (!ok)
+ return;
+
+ g_at_result_iter_init(&iter, result);
+
+ if (!g_at_result_iter_next(&iter, "+CSIM:"))
+ return;
+
+ if (!g_at_result_iter_next_number(&iter, &rlen))
+ return;
+
+ if (!g_at_result_iter_next_hexstring(&iter, &response, &len))
+ return;
+
+ if (rlen != len * 2 || len < 2)
+ return;
+
+ /* Check that SW1 indicates success */
+ if (response[len - 2] != 0x90 && response[len - 2] != 0x91)
+ return;
+
+ if (response[len - 2] == 0x90 && response[len - 1] != 0)
+ return;
+
+ ofono_stk_proactive_command_notify(stk, len - 2, response);
+}
+
+static void tcmd_notify(GAtResult *result, gpointer user_data)
+{
+ struct ofono_stk *stk = user_data;
+ struct stk_data *data = ofono_stk_get_data(stk);
+ GAtResultIter iter;
+ int length;
+ char buf[64];
+
+ g_at_result_iter_init(&iter, result);
+
+ if (!g_at_result_iter_next(&iter, "*TCMD:"))
+ return;
+
+ if (!g_at_result_iter_next_number(&iter, &length))
+ return;
+
+ snprintf(buf, sizeof(buf), "AT+CSIM=10,A0120000%02hhX", length);
+ g_at_chat_send(data->chat, buf, csim_prefix, fetch_cb, stk, NULL);
+}
+
+static gboolean phonesim_stk_register(gpointer user)
+{
+ struct ofono_stk *stk = user;
+ struct stk_data *data = ofono_stk_get_data(stk);
+
+ g_at_chat_register(data->chat, "*TCMD", tcmd_notify, FALSE, stk, NULL);
+ ofono_stk_register(stk);
+
+ return FALSE;
+}
+
+static int phonesim_stk_probe(struct ofono_stk *stk, unsigned int vendor,
+ void *data)
+{
+ GAtChat *chat = data;
+ struct stk_data *sd;
+
+ sd = g_new0(struct stk_data, 1);
+ sd->chat = chat;
+
+ ofono_stk_set_data(stk, sd);
+ g_idle_add(phonesim_stk_register, stk);
+
+ return 0;
+}
+
+static void phonesim_stk_remove(struct ofono_stk *stk)
+{
+ struct stk_data *sd = ofono_stk_get_data(stk);
+
+ ofono_stk_set_data(stk, NULL);
+
+ g_free(sd);
+}
+
+static struct ofono_stk_driver driver = {
+ .name = "phonesimmodem",
+ .probe = phonesim_stk_probe,
+ .remove = phonesim_stk_remove,
+ .envelope = phonesim_stk_envelope,
+ .terminal_response = phonesim_stk_terminal_response,
+};
+
+void phonesim_stk_init()
+{
+ ofono_stk_driver_register(&driver);
+}
+
+void phonesim_stk_exit()
+{
+ ofono_stk_driver_unregister(&driver);
+}
diff --git a/plugins/phonesim.c b/plugins/phonesim.c
index d0cd7f3..86e50a9 100644
--- a/plugins/phonesim.c
+++ b/plugins/phonesim.c
@@ -289,7 +289,7 @@ static void phonesim_pre_sim(struct ofono_modem *modem)
else
ofono_voicecall_create(modem, 0, "atmodem", data->chat);
- ofono_stk_create(modem, 0, "atmodem", data->chat);
+ ofono_stk_create(modem, 0, "phonesimmodem", data->chat);
if (sim)
ofono_sim_inserted_notify(sim, TRUE);
--
1.7.0.4
12 years, 1 month
[PATCH 0/1] To fix Huawei GPRS context issue
by Zhenhua Zhang
Hi,
Today I tested GPRS connection on Huawei E1552 modem and found similar issues on EM770W before. After I activate/deactivate GPRS contexts several times, the Ubuntu system is totally crashed with Caps lock blinkig. If I recreate the whole GPRS atom, the problem is gone.
To Kalle, have you meet the same case on E1552?
Thanks.
Zhenhua
12 years, 1 month
[0/15] Implement DUN server in oFono
by Zhenhua Zhang
This series are based on the previous 6 patches "Add oFono DUN emulator" sent on July 5th. It implements the main functionality of DUN server and interact with GPRS atom to create DUN context. You can use gatchat/test-emulator to create a pseudo terminal and then use gsmdial to create a DUN client connection.
Best regards,
Zhenhua
12 years, 1 month
[PATCH 1/2] Support option --disable-optimization
by Yang Gu
---
configure.ac | 7 +++++++
1 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/configure.ac b/configure.ac
index 887c91a..a85fda3 100644
--- a/configure.ac
+++ b/configure.ac
@@ -14,6 +14,13 @@ PKG_PROG_PKG_CONFIG
AC_PROG_CXX
AC_PROG_INSTALL
+AC_ARG_ENABLE(optimization, AC_HELP_STRING([--disable-optimization],
+ [disable code optimization through compiler]), [
+ if (test "${enableval}" = "no"); then
+ CXXFLAGS="$CXXFLAGS -O0"
+ fi
+])
+
PKG_CHECK_MODULES(QT, QtCore QtGui QtXml QtNetwork, dummy=yes,
AC_MSG_ERROR(Qt is required))
AC_SUBST(QT_CFLAGS)
--
1.7.0.4
12 years, 1 month
[PATCH 1/3] hfp: create modem for new devices paired on runtime
by Gustavo F. Padovan
It listens the Paired property to create a modem to the recently paired
devices. It also renames added_watch to adapter_watch, a more proper
name.
---
plugins/hfp.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 57 insertions(+), 5 deletions(-)
diff --git a/plugins/hfp.c b/plugins/hfp.c
index 981b05b..3e41342 100644
--- a/plugins/hfp.c
+++ b/plugins/hfp.c
@@ -66,6 +66,7 @@ static const char *cmer_prefix[] = { "+CMER:", NULL };
static const char *chld_prefix[] = { "+CHLD:", NULL };
static DBusConnection *connection;
+static GHashTable *uuid_hash = NULL;
static void hfp_debug(const char *str, void *user_data)
{
@@ -427,6 +428,7 @@ static int hfp_create_modem(const char *device)
{
struct ofono_modem *modem;
struct hfp_data *data;
+ const char *path;
ofono_info("Using device: %s", device);
@@ -451,6 +453,9 @@ static int hfp_create_modem(const char *device)
ofono_modem_set_data(modem, data);
ofono_modem_register(modem);
+ path = ofono_modem_get_path(modem);
+ g_hash_table_insert(uuid_hash, g_strdup(device), g_strdup(path));
+
return 0;
free:
@@ -465,6 +470,9 @@ static void parse_uuids(DBusMessageIter *i, const char *device)
DBusMessageIter variant, ai;
const char *value;
+ if (g_hash_table_lookup(uuid_hash, device))
+ return;
+
dbus_message_iter_recurse(i, &variant);
dbus_message_iter_recurse(&variant, &ai);
@@ -624,6 +632,33 @@ static gboolean adapter_added(DBusConnection *connection, DBusMessage *message,
return TRUE;
}
+static gboolean uuid_emitted(DBusConnection *connection, DBusMessage *message,
+ void *user_data)
+{
+ const char *device, *property;
+ DBusMessageIter iter;
+
+ dbus_message_iter_init(message, &iter);
+
+ if (dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_STRING)
+ return FALSE;
+
+ dbus_message_iter_get_basic(&iter, &property);
+ if (g_str_equal(property, "UUIDs") == FALSE)
+ return TRUE;
+
+ if (!dbus_message_iter_next(&iter))
+ return FALSE;
+
+ if (dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_VARIANT)
+ return FALSE;
+
+ device = dbus_message_get_path(message);
+ parse_uuids(&iter, device);
+
+ return TRUE;
+}
+
static void list_adapters_cb(DBusPendingCall *call, gpointer user_data)
{
DBusError err;
@@ -725,6 +760,8 @@ static void hfp_remove(struct ofono_modem *modem)
hfp_unregister_ofono_handsfree(modem);
+ g_hash_table_remove(uuid_hash, data->handsfree_path);
+
g_free(data->handsfree_path);
g_free(data);
@@ -798,7 +835,8 @@ static struct ofono_modem_driver hfp_driver = {
.post_sim = hfp_post_sim,
};
-static guint added_watch;
+static guint adapter_watch;
+static guint uuid_watch;
static int hfp_init(void)
{
@@ -809,12 +847,21 @@ static int hfp_init(void)
connection = ofono_dbus_get_connection();
- added_watch = g_dbus_add_signal_watch(connection, NULL, NULL,
+ adapter_watch = g_dbus_add_signal_watch(connection, NULL, NULL,
BLUEZ_MANAGER_INTERFACE,
"AdapterAdded",
adapter_added, NULL, NULL);
- if (added_watch == 0) {
+ uuid_watch = g_dbus_add_signal_watch(connection, NULL, NULL,
+ BLUEZ_DEVICE_INTERFACE,
+ "PropertyChanged",
+ uuid_emitted, NULL, NULL);
+
+
+ uuid_hash = g_hash_table_new_full(g_str_hash, g_str_equal,
+ g_free, g_free);
+
+ if (adapter_watch == 0 || uuid_watch == 0) {
err = -EIO;
goto remove;
}
@@ -828,7 +875,9 @@ static int hfp_init(void)
return 0;
remove:
- g_dbus_remove_watch(connection, added_watch);
+ g_dbus_remove_watch(connection, adapter_watch);
+ g_dbus_remove_watch(connection, uuid_watch);
+ g_hash_table_destroy(uuid_hash);
dbus_connection_unref(connection);
@@ -837,9 +886,12 @@ remove:
static void hfp_exit(void)
{
- g_dbus_remove_watch(connection, added_watch);
+ g_dbus_remove_watch(connection, adapter_watch);
+ g_dbus_remove_watch(connection, uuid_watch);
ofono_modem_driver_unregister(&hfp_driver);
+
+ g_hash_table_destroy(uuid_hash);
}
OFONO_PLUGIN_DEFINE(hfp, "Hands-Free Profile Plugins", VERSION,
--
1.6.4.4
12 years, 1 month
FYI: Emergency calls with MBM modem
by Pekka Pessi
Hi all,
I just did some emergency calls in our lab with the Ericsson MBM modem
(3507g). The modem firmware has the voice calls enabled, even while
there is no audio input/output from the modem (as far as I know).
Main results are:
- emergency calls are not possible in offline mode (CFUN=4), ATD112;
returns NO DIALTONE
- emergency calls can be made without SIM card (but they require AT+CFUN=1)
- most MBM modem functionality (AT+COPS, AT+CLCC does not work without SIM card)
- emergency calls cannot be handled with usual AT+CHLD commands (e.g.,
AT+CHLD=11 does not hang up emergency calls)
(ofono cannot hangup emergency call and it does not notice when it ends)
- emergency call gets number "112" and type 128 (unknown type of
number and numbering plan)
Please find attached log. I first made call to 99999 (an ordinary
service number within our lab network) then 118 (non-existing service
number) then 112 (emergency call).
The emergency call was terminated by callee around 02:58:52 (as you
can see, modem indicates it with +CIEV=8,0).
--
Pekka.Pessi mail at nokia.com
12 years, 1 month
[PATCH 1/2] Voicecall gaps.
by Pekka.Pessi@nokia.com
From: Pekka Pessi <Pekka.Pessi(a)nokia.com>
Missing voicecall functionality pieces from tp-ring point-of-view.
---
TODO | 27 +++++++++++++++++++++++++++
1 files changed, 27 insertions(+), 0 deletions(-)
diff --git a/TODO b/TODO
index 470d4a6..fc539a7 100644
--- a/TODO
+++ b/TODO
@@ -265,6 +265,33 @@ Supplementary Services
Complexity: C8
+Voicecall
+=========
+
+- Supplementary service notifications on remote party actions:
+ - call has been put on hold (+CSSU: 2)
+ - call has been retrieved (+CSSU: 3), and
+ - joining call to a multiparty conference (+CSSU: 4)
+
+ Priority: Medium
+ Complexity: C1
+ Owner: Pekka Pessi <pekka.pessi(a)nokia.com>
+
+- Dial strings. Include CLIR prefixes and 2nd stage dial strings in the
+ DialString call property. Add dialstring accessor method to C API.
+
+ Priority: Medium
+
+- Provide feedback of sent DTMF tones. Emit SendingTones signal if modem can
+ provide approximate starting and stopping times for DTMF tones. Signal
+ argument contains a string of DTMF tones to be sent, or empty string when
+ all tones has been sent.
+
+ Priority: Medium
+ Complexity: C2
+ Owner: Pekka Pessi <pekka.pessi(a)nokia.com>
+
+
Miscellaneous
=============
--
1.7.0.4
12 years, 1 month