phonesim: Add skeleton of radio settings driver
authorDenis Kenzior <denkenz@gmail.com>
Wed, 10 Dec 2014 04:54:35 +0000 (22:54 -0600)
committerDenis Kenzior <denkenz@gmail.com>
Wed, 10 Dec 2014 17:03:16 +0000 (11:03 -0600)
plugins/phonesim.c

index 5561a05822bd6e623f2ffe3fed22e92fcf07e4af..60a1f4c422ad89bea09770cf4b43b79c44a83df0 100644 (file)
@@ -351,6 +351,41 @@ static void phonesim_ctm_set(struct ofono_ctm *ctm, ofono_bool_t enable,
        g_free(cbd);
 }
 
+static gboolean phonesim_radio_settings_register(gpointer user)
+{
+       struct ofono_radio_settings *rs = user;
+
+       ofono_radio_settings_register(rs);
+
+       return FALSE;
+}
+
+static int phonesim_radio_settings_probe(struct ofono_radio_settings *rs,
+                                       unsigned int vendor, void *data)
+{
+       GAtChat *chat;
+
+       DBG("");
+
+       chat = g_at_chat_clone(data);
+
+       ofono_radio_settings_set_data(rs, chat);
+       g_idle_add(phonesim_radio_settings_register, rs);
+
+       return 0;
+}
+
+static void phonesim_radio_settings_remove(struct ofono_radio_settings *rs)
+{
+       GAtChat *chat = ofono_radio_settings_get_data(rs);
+
+       DBG("");
+
+       ofono_radio_settings_set_data(rs, NULL);
+
+       g_at_chat_unref(chat);
+}
+
 static struct ofono_gprs_context_driver context_driver = {
        .name                   = "phonesim",
        .probe                  = phonesim_context_probe,
@@ -359,6 +394,12 @@ static struct ofono_gprs_context_driver context_driver = {
        .deactivate_primary     = phonesim_deactivate_primary,
 };
 
+static struct ofono_radio_settings_driver radio_settings_driver = {
+       .name           = "phonesim",
+       .probe          = phonesim_radio_settings_probe,
+       .remove         = phonesim_radio_settings_remove,
+};
+
 static struct ofono_ctm_driver ctm_driver = {
        .name                   = "phonesim",
        .probe                  = phonesim_ctm_probe,
@@ -1081,6 +1122,7 @@ static int phonesim_init(void)
 
        ofono_gprs_context_driver_register(&context_driver);
        ofono_ctm_driver_register(&ctm_driver);
+       ofono_radio_settings_driver_register(&radio_settings_driver);
 
        if (conf_override)
                parse_config(conf_override);
@@ -1103,6 +1145,7 @@ static void phonesim_exit(void)
        g_slist_free(modem_list);
        modem_list = NULL;
 
+       ofono_radio_settings_driver_unregister(&radio_settings_driver);
        ofono_ctm_driver_unregister(&ctm_driver);
 
        ofono_gprs_context_driver_unregister(&context_driver);