From: =?unknown-8bit?q?Fr=C3=A9d=C3=A9ric?= Danis <frederic.danis@linux.intel.com>
To: ofono@ofono.org
Subject: [PATCH v2] phonesim: add support of +CBC
Date: Fri, 08 Jul 2011 15:29:20 +0200 [thread overview]
Message-ID: <1310131760-5611-1-git-send-email-frederic.danis@linux.intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 3482 bytes --]
PTS test TP/PSI/BV-03-I [Transfer Battery Level Indication] needs to
change battery level and check that the battery level indication is
received at the HF.
So add support for +CBC in phonesim plugin, and force update of the
battery indicator on HFP AG Emulator registration.
---
plugins/phonesim.c | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 64 insertions(+), 0 deletions(-)
diff --git a/plugins/phonesim.c b/plugins/phonesim.c
index f49c13a..3a64e2c 100644
--- a/plugins/phonesim.c
+++ b/plugins/phonesim.c
@@ -64,6 +64,8 @@
#include <drivers/atmodem/sim-poll.h>
#include <drivers/atmodem/atutil.h>
+#include "ofono.h"
+
static const char *none_prefix[] = { NULL };
static const char *ptty_prefix[] = { "+PTTY:", NULL };
static int next_iface = 0;
@@ -73,6 +75,8 @@ struct phonesim_data {
GAtChat *chat;
gboolean calypso;
gboolean use_mux;
+ unsigned int hfp_watch;
+ int batt_level;
};
struct gprs_context_data {
@@ -419,6 +423,43 @@ static void crst_notify(GAtResult *result, gpointer user_data)
g_idle_add(phonesim_reset, user_data);
}
+static void emulator_battery_cb(struct ofono_atom *atom, void *data)
+{
+ struct ofono_emulator *em = __ofono_atom_get_data(atom);
+ int val = 0;
+
+ if (GPOINTER_TO_INT(data) > 0)
+ val = (GPOINTER_TO_INT(data) - 1) / 20 + 1;
+
+ ofono_emulator_set_indicator(em, OFONO_EMULATOR_IND_BATTERY, val);
+}
+
+static void cbc_notify(GAtResult *result, gpointer user_data)
+{
+ struct ofono_modem *modem = user_data;
+ struct phonesim_data *data = ofono_modem_get_data(modem);
+ GAtResultIter iter;
+ int status;
+ int level;
+
+ g_at_result_iter_init(&iter, result);
+ if (!g_at_result_iter_next(&iter, "+CBC:"))
+ return;
+
+ if (!g_at_result_iter_next_number(&iter, &status))
+ return;
+
+ if (!g_at_result_iter_next_number(&iter, &level))
+ return;
+
+ data->batt_level = level;
+
+ __ofono_modem_foreach_registered_atom(modem,
+ OFONO_ATOM_TYPE_EMULATOR_HFP,
+ emulator_battery_cb,
+ GUINT_TO_POINTER(level));
+}
+
static void phonesim_disconnected(gpointer user_data)
{
struct ofono_modem *modem = user_data;
@@ -481,6 +522,18 @@ static void mux_setup(GAtMux *mux, gpointer user_data)
cfun_set_on_cb, modem, NULL);
}
+static void emulator_hfp_watch(struct ofono_atom *atom,
+ enum ofono_atom_watch_condition cond,
+ void *user_data)
+{
+ struct phonesim_data *data = user_data;
+
+ if (cond != OFONO_ATOM_WATCH_CONDITION_REGISTERED)
+ return;
+
+ emulator_battery_cb(atom, GUINT_TO_POINTER(data->batt_level));
+}
+
static int phonesim_enable(struct ofono_modem *modem)
{
struct phonesim_data *data = ofono_modem_get_data(modem);
@@ -574,6 +627,15 @@ static int phonesim_enable(struct ofono_modem *modem)
g_at_chat_register(data->chat, "+CRST:",
crst_notify, FALSE, modem, NULL);
+ g_at_chat_register(data->chat, "+CBC:",
+ cbc_notify, FALSE, modem, NULL);
+
+ g_at_chat_send(data->chat, "AT+CBC", none_prefix, NULL, NULL, NULL);
+
+ data->hfp_watch = __ofono_modem_add_atom_watch(modem,
+ OFONO_ATOM_TYPE_EMULATOR_HFP,
+ emulator_hfp_watch, data, NULL);
+
return 0;
}
@@ -612,6 +674,8 @@ static int phonesim_disable(struct ofono_modem *modem)
DBG("%p", modem);
+ __ofono_modem_remove_atom_watch(modem, data->hfp_watch);
+
g_at_chat_unref(data->chat);
data->chat = NULL;
--
1.7.1
next reply other threads:[~2011-07-08 13:29 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-07-08 13:29 =?unknown-8bit?q?Fr=C3=A9d=C3=A9ric?= Danis [this message]
2011-07-08 18:25 ` [PATCH v2] phonesim: add support of +CBC Denis Kenzior
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1310131760-5611-1-git-send-email-frederic.danis@linux.intel.com \
--to=frederic.danis@linux.intel.com \
--cc=ofono@ofono.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.