Add vendor flag capability to ussd
authorDenis Kenzior <denis.kenzior@intel.com>
Tue, 1 Sep 2009 23:00:58 +0000 (18:00 -0500)
committerDenis Kenzior <denkenz@gmail.com>
Tue, 1 Sep 2009 23:14:58 +0000 (18:14 -0500)
drivers/atmodem/ussd.c
drivers/isimodem/isimodem.c
drivers/isimodem/ussd.c
include/ussd.h
plugins/generic_at.c
src/ussd.c

index 49801f7..3f454b1 100644 (file)
@@ -143,8 +143,11 @@ static gboolean at_ussd_register(gpointer user)
        return FALSE;
 }
 
-static int at_ussd_probe(struct ofono_ussd *ussd)
+static int at_ussd_probe(struct ofono_ussd *ussd, int vendor, void *data)
 {
+       GAtChat *chat = data;
+
+       ofono_ussd_set_data(ussd, chat);
        g_idle_add(at_ussd_register, ussd);
 
        return 0;
index 77c1a89..ba8ca6f 100644 (file)
@@ -156,7 +156,7 @@ static int isi_modem_populate(struct ofono_modem *modem)
        ofono_sms_create(isi->modem, 0, "isi", isi->idx);
        ofono_sim_create(isi->modem, 0, "isi", isi->idx);
        ofono_ssn_create(isi->modem, 0, "isi", isi->idx);
-       ofono_ussd_create(isi->modem, "isi", isi->idx);
+       ofono_ussd_create(isi->modem, 0, "isi", isi->idx);
        ofono_call_forwarding_create(isi->modem, 0, "isi", isi->idx);
        ofono_call_settings_create(isi->modem, 0, "isi", isi->idx);
        ofono_call_barring_create(isi->modem, 0, "isi", isi->idx);
index e2cbd60..4ba70fc 100644 (file)
@@ -58,9 +58,9 @@ static void isi_cancel(struct ofono_ussd *ussd,
 {
 }
 
-static int isi_ussd_probe(struct ofono_ussd *ussd)
+static int isi_ussd_probe(struct ofono_ussd *ussd, int vendor, void *user)
 {
-       GIsiModem *idx = ofono_ussd_get_data(ussd);
+       GIsiModem *idx = user;
        struct ussd_data *data = g_try_new0(struct ussd_data, 1);
 
        if (!data)
index dd961b8..feb20ce 100644 (file)
@@ -34,7 +34,7 @@ typedef void (*ofono_ussd_cb_t)(const struct ofono_error *error, void *data);
 
 struct ofono_ussd_driver {
        const char *name;
-       int (*probe)(struct ofono_ussd *ussd);
+       int (*probe)(struct ofono_ussd *ussd, int vendor, void *data);
        int (*remove)(struct ofono_ussd *ussd);
        void (*request)(struct ofono_ussd *ussd, const char *str,
                                ofono_ussd_cb_t, void *data);
@@ -47,7 +47,7 @@ void ofono_ussd_notify(struct ofono_ussd *ussd, int status, const char *str);
 int ofono_ussd_driver_register(const struct ofono_ussd_driver *d);
 void ofono_ussd_driver_unregister(const struct ofono_ussd_driver *d);
 
-struct ofono_ussd *ofono_ussd_create(struct ofono_modem *modem,
+struct ofono_ussd *ofono_ussd_create(struct ofono_modem *modem, int vendor,
                                        const char *driver, void *data);
 
 void ofono_ussd_register(struct ofono_ussd *ussd);
index 1ac35ff..d7b0504 100644 (file)
@@ -510,7 +510,7 @@ static int generic_at_populate(struct ofono_modem *modem)
        struct ofono_message_waiting *mw;
 
        ofono_devinfo_create(modem, 0, "generic_at", chat);
-       ofono_ussd_create(modem, "generic_at", chat);
+       ofono_ussd_create(modem, 0, "generic_at", chat);
        ofono_sim_create(modem, 0, "generic_at", chat);
        ofono_call_forwarding_create(modem, 0, "generic_at", chat);
        ofono_call_settings_create(modem, 0, "generic_at", chat);
index 33f8774..8c29f70 100644 (file)
@@ -522,6 +522,7 @@ static void ussd_remove(struct ofono_atom *atom)
 }
 
 struct ofono_ussd *ofono_ussd_create(struct ofono_modem *modem,
+                                       int vendor,
                                        const char *driver,
                                        void *data)
 {
@@ -536,7 +537,6 @@ struct ofono_ussd *ofono_ussd_create(struct ofono_modem *modem,
        if (ussd == NULL)
                return NULL;
 
-       ussd->driver_data = data;
        ussd->atom = __ofono_modem_add_atom(modem, OFONO_ATOM_TYPE_USSD,
                                                ussd_remove, ussd);
 
@@ -546,7 +546,7 @@ struct ofono_ussd *ofono_ussd_create(struct ofono_modem *modem,
                if (g_strcmp0(drv->name, driver))
                        continue;
 
-               if (drv->probe(ussd) < 0)
+               if (drv->probe(ussd, vendor, data) < 0)
                        continue;
 
                ussd->driver = drv;