shill: Connect the device on start when the modem is already connected.
BUG=chromium-os:18727
TEST=unit tests, tested on device
Change-Id: I9657cfd4423fa17c2f34973df5880db520a8662c
Reviewed-on: http://gerrit.chromium.org/gerrit/5584
Tested-by: Darin Petkov <petkov@chromium.org>
Reviewed-by: Chris Masone <cmasone@chromium.org>
diff --git a/modem.cc b/modem.cc
index 37d52fd..58cab52 100644
--- a/modem.cc
+++ b/modem.cc
@@ -20,6 +20,7 @@
// TODO(petkov): Consider generating these in mm/mm-modem.h.
const char Modem::kPropertyLinkName[] = "Device";
const char Modem::kPropertyIPMethod[] = "IpMethod";
+const char Modem::kPropertyState[] = "State";
const char Modem::kPropertyType[] = "Type";
const char Modem::kPropertyUnlockRequired[] = "UnlockRequired";
const char Modem::kPropertyUnlockRetries[] = "UnlockRetries";
@@ -98,8 +99,6 @@
return;
}
- // TODO(petkov): Handle the "State" property?
-
LOG(INFO) << "Creating a cellular device on link " << link_name
<< " interface index " << interface_index << ".";
device_ = new Cellular(control_interface_,
@@ -110,7 +109,10 @@
type,
owner_,
path_);
- manager_->device_info()->RegisterDevice(device_);
+
+ uint32 modem_state = Cellular::kModemStateUnknown;
+ DBusProperties::GetUint32(properties, kPropertyState, &modem_state);
+ device_->set_modem_state(static_cast<Cellular::ModemState>(modem_state));
string unlock_required;
if (DBusProperties::GetString(
@@ -121,6 +123,8 @@
&unlock_retries);
// TODO(petkov): Set these properties on the device instance.
}
+
+ manager_->device_info()->RegisterDevice(device_);
}
void Modem::OnDBusPropertiesChanged(