diff options
author | Frédéric Danis <frederic.danis@linux.intel.com> | 2011-02-17 18:23:29 +0100 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2011-02-17 11:25:27 -0600 |
commit | afe16ba22a17946374cf5121c7d08e4bcfbd2942 (patch) | |
tree | 4c7a462bc03ddd676039de4acca56655a70cf83f /src | |
parent | de02942e77ade9c8fa382bc2f6d54e225850ab6a (diff) | |
download | ofono-afe16ba22a17946374cf5121c7d08e4bcfbd2942.tar.bz2 |
emulator: always create emulators in offline state
this allows to fix problem when atom created in online state
are destroyed when modem goes to offline state
Diffstat (limited to 'src')
-rw-r--r-- | src/emulator.c | 3 | ||||
-rw-r--r-- | src/modem.c | 14 | ||||
-rw-r--r-- | src/ofono.h | 5 |
3 files changed, 21 insertions, 1 deletions
diff --git a/src/emulator.c b/src/emulator.c index 57449030..101b33d9 100644 --- a/src/emulator.c +++ b/src/emulator.c @@ -115,7 +115,8 @@ struct ofono_emulator *ofono_emulator_create(struct ofono_modem *modem, em->type = type; - em->atom = __ofono_modem_add_atom(modem, atom_t, emulator_remove, em); + em->atom = __ofono_modem_add_atom_offline(modem, atom_t, + emulator_remove, em); return em; } diff --git a/src/modem.c b/src/modem.c index 8567cac4..bf8b0c08 100644 --- a/src/modem.c +++ b/src/modem.c @@ -189,6 +189,20 @@ struct ofono_atom *__ofono_modem_add_atom(struct ofono_modem *modem, return atom; } +struct ofono_atom *__ofono_modem_add_atom_offline(struct ofono_modem *modem, + enum ofono_atom_type type, + void (*destruct)(struct ofono_atom *), + void *data) +{ + struct ofono_atom *atom; + + atom = __ofono_modem_add_atom(modem, type, destruct, data); + + atom->modem_state = MODEM_STATE_OFFLINE; + + return atom; +} + void *__ofono_atom_get_data(struct ofono_atom *atom) { return atom->data; diff --git a/src/ofono.h b/src/ofono.h index f52356e7..9d136845 100644 --- a/src/ofono.h +++ b/src/ofono.h @@ -148,6 +148,11 @@ struct ofono_atom *__ofono_modem_add_atom(struct ofono_modem *modem, void (*destruct)(struct ofono_atom *), void *data); +struct ofono_atom *__ofono_modem_add_atom_offline(struct ofono_modem *modem, + enum ofono_atom_type type, + void (*destruct)(struct ofono_atom *), + void *data); + struct ofono_atom *__ofono_modem_find_atom(struct ofono_modem *modem, enum ofono_atom_type type); |