iface-modem: new `State' property, bound to the one in the MmGDbusModem skeleton

This commit is contained in:
Aleksander Morgado
2011-11-22 18:01:09 +01:00
parent 48babcf976
commit ca15a10629
2 changed files with 38 additions and 1 deletions

View File

@@ -17,6 +17,7 @@
#include <ModemManager.h>
#include <mm-gdbus-modem.h>
#include <mm-enums-types.h>
#include <mm-errors-types.h>
#include "mm-iface-modem.h"
@@ -151,7 +152,26 @@ set_lock_status (MMIfaceModem *self,
MmGdbusModem *skeleton,
MMModemLock lock)
{
MMModemLock old_lock;
old_lock = mm_gdbus_modem_get_unlock_required (skeleton);
mm_gdbus_modem_set_unlock_required (skeleton, lock);
if (lock == MM_MODEM_LOCK_NONE) {
if (old_lock != MM_MODEM_LOCK_NONE) {
/* Notify transition from UNKNOWN/LOCKED to DISABLED */
g_object_set (self,
MM_IFACE_MODEM_STATE, MM_MODEM_STATE_DISABLED,
NULL);
}
} else {
if (old_lock == MM_MODEM_LOCK_UNKNOWN) {
/* Notify transition from UNKNOWN to LOCKED */
g_object_set (self,
MM_IFACE_MODEM_STATE, MM_MODEM_STATE_LOCKED,
NULL);
}
}
}
MMModemLock
@@ -803,10 +823,12 @@ mm_iface_modem_initialize (MMIfaceModem *self,
case INTERFACE_STATUS_INITIALIZED:
case INTERFACE_STATUS_SHUTDOWN: {
MmGdbusModem *skeleton = NULL;
MMModemState modem_state = MM_MODEM_STATE_UNKNOWN;
/* Did we already create it? */
g_object_get (self,
MM_IFACE_MODEM_DBUS_SKELETON, &skeleton,
MM_IFACE_MODEM_STATE, &modem_state,
NULL);
if (!skeleton) {
skeleton = mm_gdbus_modem_skeleton_new ();
@@ -834,7 +856,12 @@ mm_iface_modem_initialize (MMIfaceModem *self,
mm_gdbus_modem_set_preferred_mode (skeleton, MM_MODEM_MODE_NONE);
mm_gdbus_modem_set_supported_bands (skeleton, MM_MODEM_BAND_UNKNOWN);
mm_gdbus_modem_set_allowed_bands (skeleton, MM_MODEM_BAND_ANY);
mm_gdbus_modem_set_state (skeleton, MM_MODEM_STATE_UNKNOWN);
/* Bind our State property */
mm_gdbus_modem_set_state (skeleton, modem_state);
g_object_bind_property (self, MM_IFACE_MODEM_STATE,
skeleton, "state",
G_BINDING_DEFAULT);
/* Keep a reference to it */
g_object_set (self,
@@ -910,6 +937,15 @@ iface_modem_init (gpointer g_iface)
MM_GDBUS_TYPE_MODEM_SKELETON,
G_PARAM_READWRITE));
g_object_interface_install_property
(g_iface,
g_param_spec_enum (MM_IFACE_MODEM_STATE,
"State",
"State of the modem",
MM_TYPE_MODEM_STATE,
MM_MODEM_STATE_UNKNOWN,
G_PARAM_READWRITE));
initialized = TRUE;
}

View File

@@ -25,6 +25,7 @@
#define MM_IFACE_MODEM_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), MM_TYPE_IFACE_MODEM, MMIfaceModem))
#define MM_IFACE_MODEM_DBUS_SKELETON "iface-modem-dbus-skeleton"
#define MM_IFACE_MODEM_STATE "iface-modem-state"
typedef struct _MMIfaceModem MMIfaceModem;