mirror of git://git.sysmocom.de/ofono
modem: Support modem property "AlwaysOnline"
This can be set by the modem driver to indicate that the device is always in the online state when it is enabled. This is useful for modem drivers that handle both CDMA and GSM devices.
This commit is contained in:
parent
8ce35499cf
commit
0e0eb227f2
20
src/modem.c
20
src/modem.c
|
@ -595,6 +595,17 @@ static gboolean modem_has_sim(struct ofono_modem *modem)
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
static gboolean modem_is_always_online(struct ofono_modem *modem)
|
||||
{
|
||||
if (modem->driver->set_online == NULL)
|
||||
return TRUE;
|
||||
|
||||
if (ofono_modem_get_boolean(modem, "AlwaysOnline") == TRUE)
|
||||
return TRUE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void common_online_cb(const struct ofono_error *error, void *data)
|
||||
{
|
||||
struct ofono_modem *modem = data;
|
||||
|
@ -702,11 +713,8 @@ static void sim_state_watch(enum ofono_sim_state new_state, void *user)
|
|||
case OFONO_SIM_STATE_READY:
|
||||
modem_change_state(modem, MODEM_STATE_OFFLINE);
|
||||
|
||||
/*
|
||||
* If we don't have the set_online method, also proceed
|
||||
* straight to the online state
|
||||
*/
|
||||
if (modem->driver->set_online == NULL)
|
||||
/* Modem is always online, proceed to online state. */
|
||||
if (modem_is_always_online(modem) == TRUE)
|
||||
set_online(modem, TRUE);
|
||||
|
||||
if (modem->online == TRUE)
|
||||
|
@ -745,7 +753,7 @@ static DBusMessage *set_property_online(struct ofono_modem *modem,
|
|||
if (ofono_modem_get_emergency_mode(modem) == TRUE)
|
||||
return __ofono_error_emergency_active(msg);
|
||||
|
||||
if (driver->set_online == NULL)
|
||||
if (modem_is_always_online(modem) == TRUE)
|
||||
return __ofono_error_not_implemented(msg);
|
||||
|
||||
modem->pending = dbus_message_ref(msg);
|
||||
|
|
Loading…
Reference in New Issue