--- drivers/atmodem/ssn.c | 6 +--- include/ssn.h | 9 +++---- plugins/calypso.c | 1 - plugins/g1.c | 1 - plugins/huawei.c | 1 - plugins/ifx.c | 1 - plugins/isiusb.c | 1 - plugins/linktop.c | 1 - plugins/n900.c | 1 - plugins/phonesim.c | 1 - plugins/ste.c | 1 - plugins/tc65.c | 1 - plugins/u8500.c | 1 - plugins/wavecom.c | 1 - src/ssn.c | 59 +++++++++++++++---------------------------------- 15 files changed, 24 insertions(+), 62 deletions(-)
diff --git a/drivers/atmodem/ssn.c b/drivers/atmodem/ssn.c index b7a9df4..c927bf1 100644 --- a/drivers/atmodem/ssn.c +++ b/drivers/atmodem/ssn.c @@ -56,7 +56,7 @@ static void cssi_notify(GAtResult *result, gpointer user_data) if (!g_at_result_iter_next_number(&iter, &index)) index = 0; - ofono_ssn_cssi_notify(ssn, code1, index); + ofono_ssn_mo_notify(ssn, code1, index); } static void cssu_notify(GAtResult *result, gpointer user_data) @@ -93,7 +93,7 @@ static void cssu_notify(GAtResult *result, gpointer user_data) return; out: - ofono_ssn_cssu_notify(ssn, code2, index, &ph); + ofono_ssn_mt_notify(ssn, code2, index, &ph); } static void at_ssn_initialized(gboolean ok, GAtResult *result, @@ -104,8 +104,6 @@ static void at_ssn_initialized(gboolean ok, GAtResult *result, g_at_chat_register(chat, "+CSSI:", cssi_notify, FALSE, ssn, NULL); g_at_chat_register(chat, "+CSSU:", cssu_notify, FALSE, ssn, NULL); - - ofono_ssn_register(ssn); } static int at_ssn_probe(struct ofono_ssn *ssn, unsigned int vendor, diff --git a/include/ssn.h b/include/ssn.h index d640cad..c8f3e0b 100644 --- a/include/ssn.h +++ b/include/ssn.h @@ -37,19 +37,18 @@ struct ofono_ssn_driver { }; /* SSN notifications (CSSI and CSSU). */ -void ofono_ssn_cssi_notify(struct ofono_ssn *ssn, int code, int index); -void ofono_ssn_cssu_notify(struct ofono_ssn *ssn, int code, int index, +void ofono_ssn_mo_notify(struct ofono_ssn *ssn, int code, int index); +void ofono_ssn_mt_notify(struct ofono_ssn *ssn, int code, int index, const struct ofono_phone_number *number); int ofono_ssn_driver_register(const struct ofono_ssn_driver *d); void ofono_ssn_driver_unregister(const struct ofono_ssn_driver *d); -struct ofono_ssn *ofono_ssn_create(struct ofono_modem *modem, +struct ofono_ssn *ofono_ssn_new(struct ofono_modem *modem, unsigned int vendor, const char *driver, void *data); -void ofono_ssn_register(struct ofono_ssn *ssn); -void ofono_ssn_remove(struct ofono_ssn *ssn); +void ofono_ssn_free(struct ofono_ssn *ssn); void ofono_ssn_set_data(struct ofono_ssn *ssn, void *data); void *ofono_ssn_get_data(struct ofono_ssn *ssn); diff --git a/plugins/calypso.c b/plugins/calypso.c index 0e29256..9c1b449 100644 --- a/plugins/calypso.c +++ b/plugins/calypso.c @@ -534,7 +534,6 @@ static void calypso_post_sim(struct ofono_modem *modem) data->dlcs[NETREG_DLC]); ofono_call_meter_create(modem, 0, "atmodem", data->dlcs[AUX_DLC]); ofono_call_barring_create(modem, 0, "atmodem", data->dlcs[AUX_DLC]); - ofono_ssn_create(modem, 0, "atmodem", data->dlcs[AUX_DLC]); ofono_call_volume_create(modem, 0, "atmodem", data->dlcs[AUX_DLC]); mw = ofono_message_waiting_create(modem); diff --git a/plugins/g1.c b/plugins/g1.c index 22bacdc..bccde13 100644 --- a/plugins/g1.c +++ b/plugins/g1.c @@ -184,7 +184,6 @@ static void g1_post_sim(struct ofono_modem *modem) ofono_netreg_create(modem, 0, "atmodem", chat); ofono_call_meter_create(modem, 0, "atmodem", chat); ofono_call_barring_create(modem, 0, "atmodem", chat); - ofono_ssn_create(modem, 0, "atmodem", chat); ofono_sms_create(modem, OFONO_VENDOR_QUALCOMM_MSM, "atmodem", chat); ofono_phonebook_create(modem, 0, "atmodem", chat); diff --git a/plugins/huawei.c b/plugins/huawei.c index 6f05677..5be5247 100644 --- a/plugins/huawei.c +++ b/plugins/huawei.c @@ -685,7 +685,6 @@ static void huawei_post_online(struct ofono_modem *modem) ofono_call_forwarding_create(modem, 0, "atmodem", data->pcui); ofono_call_settings_create(modem, 0, "atmodem", data->pcui); ofono_call_barring_create(modem, 0, "atmodem", data->pcui); - ofono_ssn_create(modem, 0, "atmodem", data->pcui); mw = ofono_message_waiting_create(modem); if (mw) diff --git a/plugins/ifx.c b/plugins/ifx.c index 527a8c4..16a2326 100644 --- a/plugins/ifx.c +++ b/plugins/ifx.c @@ -717,7 +717,6 @@ static void ifx_post_online(struct ofono_modem *modem) ofono_cbs_create(modem, 0, "atmodem", data->dlcs[AUX_DLC]); ofono_ussd_create(modem, 0, "atmodem", data->dlcs[AUX_DLC]); - ofono_ssn_create(modem, 0, "atmodem", data->dlcs[AUX_DLC]); ofono_call_settings_create(modem, 0, "atmodem", data->dlcs[AUX_DLC]); ofono_call_meter_create(modem, 0, "atmodem", data->dlcs[AUX_DLC]); ofono_call_barring_create(modem, 0, "atmodem", data->dlcs[AUX_DLC]); diff --git a/plugins/isiusb.c b/plugins/isiusb.c index c036604..a5edf72 100644 --- a/plugins/isiusb.c +++ b/plugins/isiusb.c @@ -428,7 +428,6 @@ static void isiusb_post_online(struct ofono_modem *modem) ofono_netreg_create(modem, 0, "wgmodem2.5", isi->modem); ofono_sms_create(modem, 0, "isimodem", isi->modem); ofono_cbs_create(modem, 0, "isimodem", isi->modem); - ofono_ssn_create(modem, 0, "isimodem", isi->modem); ofono_ussd_create(modem, 0, "isimodem", isi->modem); ofono_call_settings_create(modem, 0, "isimodem", isi->modem); ofono_call_barring_create(modem, 0, "isimodem", isi->modem); diff --git a/plugins/linktop.c b/plugins/linktop.c index 2fb3896..59367d4 100644 --- a/plugins/linktop.c +++ b/plugins/linktop.c @@ -313,7 +313,6 @@ static void linktop_post_online(struct ofono_modem *modem) ofono_netreg_create(modem, OFONO_VENDOR_MBM, "atmodem", data->control); ofono_call_meter_create(modem, 0, "atmodem", data->control); ofono_call_barring_create(modem, 0, "atmodem", data->control); - ofono_ssn_create(modem, 0, "atmodem", data->control); ofono_call_volume_create(modem, 0, "atmodem", data->control); ofono_cbs_create(modem, 0, "atmodem", data->control); diff --git a/plugins/n900.c b/plugins/n900.c index c685266..0c92d8d 100644 --- a/plugins/n900.c +++ b/plugins/n900.c @@ -509,7 +509,6 @@ static void n900_post_online(struct ofono_modem *modem) ofono_netreg_create(modem, 0, "isimodem", isi->modem); ofono_sms_create(modem, 0, "isimodem", isi->modem); ofono_cbs_create(modem, 0, "isimodem", isi->modem); - ofono_ssn_create(modem, 0, "isimodem", isi->modem); ofono_ussd_create(modem, 0, "isimodem", isi->modem); ofono_call_settings_create(modem, 0, "isimodem", isi->modem); ofono_call_barring_create(modem, 0, "isimodem", isi->modem); diff --git a/plugins/phonesim.c b/plugins/phonesim.c index 2b36fe0..9beb04e 100644 --- a/plugins/phonesim.c +++ b/plugins/phonesim.c @@ -651,7 +651,6 @@ static void phonesim_post_online(struct ofono_modem *modem) ofono_call_meter_create(modem, 0, "atmodem", data->chat); ofono_call_barring_create(modem, 0, "atmodem", data->chat); - ofono_ssn_create(modem, 0, "atmodem", data->chat); ofono_call_volume_create(modem, 0, "atmodem", data->chat); if (!data->calypso) diff --git a/plugins/ste.c b/plugins/ste.c index b786571..bcfd33d 100644 --- a/plugins/ste.c +++ b/plugins/ste.c @@ -430,7 +430,6 @@ static void ste_post_online(struct ofono_modem *modem) ofono_netreg_create(modem, OFONO_VENDOR_MBM, "atmodem", data->chat); ofono_call_meter_create(modem, 0, "atmodem", data->chat); ofono_call_barring_create(modem, 0, "atmodem", data->chat); - ofono_ssn_create(modem, 0, "atmodem", data->chat); ofono_call_volume_create(modem, 0, "atmodem", data->chat); ofono_cbs_create(modem, 0, "atmodem", data->chat); diff --git a/plugins/tc65.c b/plugins/tc65.c index f58f33d..e9d6e90 100644 --- a/plugins/tc65.c +++ b/plugins/tc65.c @@ -208,7 +208,6 @@ static void tc65_post_online(struct ofono_modem *modem) ofono_netreg_create(modem, 0, "atmodem", chat); ofono_call_meter_create(modem, 0, "atmodem", chat); ofono_call_barring_create(modem, 0, "atmodem", chat); - ofono_ssn_create(modem, 0, "atmodem", chat); gprs = ofono_gprs_create(modem, 0, "atmodem", chat); gc = ofono_gprs_context_create(modem, 0, "atmodem", chat); diff --git a/plugins/u8500.c b/plugins/u8500.c index eb142b4..c46670f 100644 --- a/plugins/u8500.c +++ b/plugins/u8500.c @@ -460,7 +460,6 @@ static void u8500_post_online(struct ofono_modem *modem) ofono_netreg_create(modem, 0, "wgmodem2.5", isi->modem); ofono_sms_create(modem, 0, "isimodem", isi->modem); ofono_cbs_create(modem, 0, "isimodem", isi->modem); - ofono_ssn_create(modem, 0, "isimodem", isi->modem); ofono_ussd_create(modem, 0, "isimodem", isi->modem); ofono_call_settings_create(modem, 0, "isimodem", isi->modem); ofono_call_barring_create(modem, 0, "isimodem", isi->modem); diff --git a/plugins/wavecom.c b/plugins/wavecom.c index cb55f85..cd9c85e 100644 --- a/plugins/wavecom.c +++ b/plugins/wavecom.c @@ -156,7 +156,6 @@ static void wavecom_post_sim(struct ofono_modem *modem) ofono_netreg_create(modem, 0, "atmodem", chat); ofono_call_meter_create(modem, 0, "atmodem", chat); ofono_call_barring_create(modem, 0, "atmodem", chat); - ofono_ssn_create(modem, 0, "atmodem", chat); ofono_sms_create(modem, 0, "atmodem", chat); ofono_phonebook_create(modem, 0, "atmodem", chat); diff --git a/src/ssn.c b/src/ssn.c index 64c94b7..ee48fba 100644 --- a/src/ssn.c +++ b/src/ssn.c @@ -45,7 +45,6 @@ struct ofono_ssn { struct ofono_watchlist *mt_handler_list; const struct ofono_ssn_driver *driver; void *driver_data; - struct ofono_atom *atom; }; static unsigned int add_ssn_handler(struct ofono_watchlist *watchlist, @@ -112,7 +111,7 @@ gboolean __ofono_ssn_mt_watch_remove(struct ofono_ssn *ssn, unsigned int id) return __ofono_watchlist_remove_item(ssn->mt_handler_list, id); } -void ofono_ssn_cssi_notify(struct ofono_ssn *ssn, int code1, int index) +void ofono_ssn_mo_notify(struct ofono_ssn *ssn, int code1, int index) { struct ssn_handler *h; GSList *l; @@ -127,7 +126,7 @@ void ofono_ssn_cssi_notify(struct ofono_ssn *ssn, int code1, int index) } } -void ofono_ssn_cssu_notify(struct ofono_ssn *ssn, int code2, int index, +void ofono_ssn_mt_notify(struct ofono_ssn *ssn, int code2, int index, const struct ofono_phone_number *ph) { struct ssn_handler *h; @@ -162,33 +161,7 @@ void ofono_ssn_driver_unregister(const struct ofono_ssn_driver *d) g_drivers = g_slist_remove(g_drivers, (void *) d); } -static void ssn_unregister(struct ofono_atom *atom) -{ - struct ofono_ssn *ssn = __ofono_atom_get_data(atom); - - __ofono_watchlist_free(ssn->mo_handler_list); - ssn->mo_handler_list = NULL; - - __ofono_watchlist_free(ssn->mt_handler_list); - ssn->mt_handler_list = NULL; -} - -static void ssn_remove(struct ofono_atom *atom) -{ - struct ofono_ssn *ssn = __ofono_atom_get_data(atom); - - DBG("atom: %p", atom); - - if (ssn == NULL) - return; - - if (ssn->driver && ssn->driver->remove) - ssn->driver->remove(ssn); - - g_free(ssn); -} - -struct ofono_ssn *ofono_ssn_create(struct ofono_modem *modem, +struct ofono_ssn *ofono_ssn_new(struct ofono_modem *modem, unsigned int vendor, const char *driver, void *data) @@ -204,9 +177,6 @@ struct ofono_ssn *ofono_ssn_create(struct ofono_modem *modem, if (ssn == NULL) return NULL; - ssn->atom = __ofono_modem_add_atom(modem, OFONO_ATOM_TYPE_SSN, - ssn_remove, ssn); - for (l = g_drivers; l; l = l->next) { const struct ofono_ssn_driver *drv = l->data; @@ -220,20 +190,27 @@ struct ofono_ssn *ofono_ssn_create(struct ofono_modem *modem, break; } - return ssn; -} - -void ofono_ssn_register(struct ofono_ssn *ssn) -{ ssn->mo_handler_list = __ofono_watchlist_new(g_free); ssn->mt_handler_list = __ofono_watchlist_new(g_free); - __ofono_atom_register(ssn->atom, ssn_unregister); + return ssn; } -void ofono_ssn_remove(struct ofono_ssn *ssn) +void ofono_ssn_free(struct ofono_ssn *ssn) { - __ofono_atom_free(ssn->atom); + if (ssn == NULL) + return; + + if (ssn->driver && ssn->driver->remove) + ssn->driver->remove(ssn); + + __ofono_watchlist_free(ssn->mo_handler_list); + ssn->mo_handler_list = NULL; + + __ofono_watchlist_free(ssn->mt_handler_list); + ssn->mt_handler_list = NULL; + + g_free(ssn); } void ofono_ssn_set_data(struct ofono_ssn *ssn, void *data) -- 1.7.0.4 _______________________________________________ ofono mailing list ofono@ofono.org http://lists.ofono.org/listinfo/ofono