iceramodem: Read supported bands as part of radio settings
authorMarcel Holtmann <marcel@holtmann.org>
Fri, 25 May 2012 18:54:21 +0000 (20:54 +0200)
committerMarcel Holtmann <marcel@holtmann.org>
Fri, 25 May 2012 18:54:21 +0000 (20:54 +0200)
drivers/iceramodem/radio-settings.c

index 83b9b8c..d76e545 100644 (file)
@@ -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)
 {