Update the isi driver to the new modem driver api

This commit is contained in:
Denis Kenzior 2009-08-21 19:12:27 -05:00
parent 038251eac5
commit b3e6dd8e51
1 changed files with 52 additions and 6 deletions

View File

@ -85,6 +85,7 @@ static void netlink_status_cb(bool up, uint8_t addr, GIsiModem *idx,
if (up) {
char node[128];
if (isi) {
DBG("Modem already registered: (0x%02x)",
@ -96,8 +97,10 @@ static void netlink_status_cb(bool up, uint8_t addr, GIsiModem *idx,
if (!isi)
return;
sprintf(node, "isi%p", idx);
isi->idx = idx;
isi->modem = ofono_modem_register();
isi->modem = ofono_modem_create(node, "isi");
if (!isi->modem) {
g_free(isi);
@ -106,9 +109,9 @@ static void netlink_status_cb(bool up, uint8_t addr, GIsiModem *idx,
g_modems = g_slist_prepend(g_modems, isi);
ofono_devinfo_create(isi->modem, "isi", idx);
ofono_phonebook_create(isi->modem, "isi", idx);
ofono_modem_set_data(isi->modem, isi);
ofono_modem_set_powered(isi->modem, TRUE);
ofono_modem_register(isi->modem);
} else {
if (!isi) {
@ -117,12 +120,51 @@ static void netlink_status_cb(bool up, uint8_t addr, GIsiModem *idx,
return;
}
ofono_modem_unregister(isi->modem);
ofono_modem_remove(isi->modem);
g_modems = g_slist_remove(g_modems, isi);
}
}
static int isi_modem_probe(struct ofono_modem *modem)
{
return 0;
}
static int isi_modem_remove(struct ofono_modem *modem)
{
return 0;
}
static int isi_modem_enable(struct ofono_modem *modem)
{
return 0;
}
static int isi_modem_disable(struct ofono_modem *modem)
{
return 0;
}
static int isi_modem_populate(struct ofono_modem *modem)
{
struct isi_data *isi = ofono_modem_get_data(modem);
ofono_devinfo_create(isi->modem, "isi", isi->idx);
ofono_phonebook_create(isi->modem, "isi", isi->idx);
return 0;
}
static struct ofono_modem_driver driver = {
.name = "isi",
.probe = isi_modem_probe,
.remove = isi_modem_remove,
.enable = isi_modem_enable,
.disable = isi_modem_disable,
.populate = isi_modem_populate,
};
static int isimodem_init(void)
{
link = g_pn_netlink_start(netlink_status_cb, NULL);
@ -130,6 +172,8 @@ static int isimodem_init(void)
isi_devinfo_init();
isi_phonebook_init();
ofono_modem_driver_register(&driver);
return 0;
}
@ -140,7 +184,7 @@ static void isimodem_exit(void)
for (m = g_modems; m; m = m->next) {
struct isi_data *isi = m->data;
ofono_modem_unregister(isi->modem);
ofono_modem_remove(isi->modem);
g_free(isi);
}
@ -152,6 +196,8 @@ static void isimodem_exit(void)
link = NULL;
}
ofono_modem_driver_unregister(&driver);
isi_devinfo_exit();
isi_phonebook_exit();
}