summaryrefslogtreecommitdiffstats
path: root/src/modem.c
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2011-03-30 13:30:01 -0500
committerDenis Kenzior <denkenz@gmail.com>2011-03-30 13:30:01 -0500
commit3e799ce8b443e8eb547df2710329671814297cd4 (patch)
tree095b889e3e90b361b72a3190cc315b6ca4bddd43 /src/modem.c
parent29df90d2b14d37a15d13eaa38f41756ce4cbb675 (diff)
downloadofono-3e799ce8b443e8eb547df2710329671814297cd4.tar.bz2
devinfo: Register the devinfo atom
Diffstat (limited to 'src/modem.c')
-rw-r--r--src/modem.c24
1 files changed, 19 insertions, 5 deletions
diff --git a/src/modem.c b/src/modem.c
index d43059f9..908c7c58 100644
--- a/src/modem.c
+++ b/src/modem.c
@@ -1477,11 +1477,6 @@ static void devinfo_remove(struct ofono_atom *atom)
if (info->driver->remove)
info->driver->remove(info);
- g_free(info->manufacturer);
- g_free(info->model);
- g_free(info->revision);
- g_free(info->serial);
-
g_free(info);
}
@@ -1514,10 +1509,29 @@ struct ofono_devinfo *ofono_devinfo_create(struct ofono_modem *modem,
return info;
}
+static void devinfo_unregister(struct ofono_atom *atom)
+{
+ struct ofono_devinfo *info = __ofono_atom_get_data(atom);
+
+ g_free(info->manufacturer);
+ info->manufacturer = NULL;
+
+ g_free(info->model);
+ info->model = NULL;
+
+ g_free(info->revision);
+ info->revision = NULL;
+
+ g_free(info->serial);
+ info->serial = NULL;
+}
+
void ofono_devinfo_register(struct ofono_devinfo *info)
{
struct ofono_modem *modem = __ofono_atom_get_modem(info->atom);
+ __ofono_atom_register(info->atom, devinfo_unregister);
+
info->dun_watch = __ofono_modem_add_atom_watch(modem,
OFONO_ATOM_TYPE_EMULATOR_DUN,
dun_watch, info, NULL);