summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2012-05-25 20:54:21 +0200
committerMarcel Holtmann <marcel@holtmann.org>2012-05-25 20:54:21 +0200
commita5897668849819b71dd069a94fadae7a09374727 (patch)
treefc8476e47271a10e821647ed9c4a993a1dc5a198
parent359f790c77c9e817ed30e7807c9d2dd9c84e5399 (diff)
downloadofono-a5897668849819b71dd069a94fadae7a09374727.tar.bz2
iceramodem: Read supported bands as part of radio settings
-rw-r--r--drivers/iceramodem/radio-settings.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/drivers/iceramodem/radio-settings.c b/drivers/iceramodem/radio-settings.c
index 83b9b8c9..d76e5458 100644
--- a/drivers/iceramodem/radio-settings.c
+++ b/drivers/iceramodem/radio-settings.c
@@ -41,6 +41,7 @@
#include "iceramodem.h"
static const char *none_prefix[] = { NULL };
+static const char *ipbm_prefix[] = { "%IPBM:", NULL };
static const char *ipsys_prefix[] = { "%IPSYS:", NULL };
struct radio_settings_data {
@@ -155,7 +156,7 @@ error:
g_free(cbd);
}
-static void ipsys_support_cb(gboolean ok, GAtResult *result, gpointer user_data)
+static void ipbm_support_cb(gboolean ok, GAtResult *result, gpointer user_data)
{
struct ofono_radio_settings *rs = user_data;
@@ -167,6 +168,20 @@ static void ipsys_support_cb(gboolean ok, GAtResult *result, gpointer user_data)
ofono_radio_settings_register(rs);
}
+static void ipsys_support_cb(gboolean ok, GAtResult *result, gpointer user_data)
+{
+ struct ofono_radio_settings *rs = user_data;
+ struct radio_settings_data *rsd = ofono_radio_settings_get_data(rs);
+
+ if (!ok) {
+ ofono_radio_settings_remove(rs);
+ return;
+ }
+
+ g_at_chat_send(rsd->chat, "AT%IPBM=?", ipbm_prefix,
+ ipbm_support_cb, rs, NULL);
+}
+
static int icera_radio_settings_probe(struct ofono_radio_settings *rs,
unsigned int vendor, void *data)
{