1c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// 2c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// Copyright (C) 2015 The Android Open Source Project 3c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// 4c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// Licensed under the Apache License, Version 2.0 (the "License"); 5c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// you may not use this file except in compliance with the License. 6c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// You may obtain a copy of the License at 7c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// 8c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// http://www.apache.org/licenses/LICENSE-2.0 9c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// 10c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// Unless required by applicable law or agreed to in writing, software 11c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// distributed under the License is distributed on an "AS IS" BASIS, 12c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// See the License for the specific language governing permissions and 14c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// limitations under the License. 15c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// 1628af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu 1728af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu#include "shill/dbus/chromeos_mm1_modem_proxy.h" 1828af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu 1928af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu#include <memory> 2028af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu#include <tuple> 2128af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu 2228af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu#include "shill/cellular/cellular_error.h" 2328af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu#include "shill/logging.h" 2428af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu 2528af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiuusing std::string; 2628af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu 2728af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiunamespace shill { 2828af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu 2928af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiunamespace Logging { 3028af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiustatic auto kModuleLogScope = ScopeLogger::kDBus; 3128af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiustatic string ObjectID(const dbus::ObjectPath* p) { return p->value(); } 3228af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu} // namespace Logging 3328af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu 3428af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiunamespace mm1 { 3528af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu 3628af1076aac4eb4ec574081198e657cbf3f8f489Peter QiuChromeosModemProxy::ChromeosModemProxy(const scoped_refptr<dbus::Bus>& bus, 3728af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu const string& path, 3828af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu const string& service) 3928af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu : proxy_( 4028af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu new org::freedesktop::ModemManager1::ModemProxy( 4128af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu bus, service, dbus::ObjectPath(path))) { 4228af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu // Register signal handlers. 4328af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu proxy_->RegisterStateChangedSignalHandler( 4428af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu base::Bind(&ChromeosModemProxy::StateChanged, 4528af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu weak_factory_.GetWeakPtr()), 4628af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu base::Bind(&ChromeosModemProxy::OnSignalConnected, 4728af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu weak_factory_.GetWeakPtr())); 4828af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu} 4928af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu 5028af1076aac4eb4ec574081198e657cbf3f8f489Peter QiuChromeosModemProxy::~ChromeosModemProxy() {} 5128af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu 5228af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiuvoid ChromeosModemProxy::Enable(bool enable, 5328af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu Error* error, 5428af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu const ResultCallback& callback, 5528af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu int timeout) { 5628af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu SLOG(&proxy_->GetObjectPath(), 2) << __func__ << ": " << enable; 5728af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu proxy_->EnableAsync(enable, 5828af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu base::Bind(&ChromeosModemProxy::OnOperationSuccess, 5928af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu weak_factory_.GetWeakPtr(), 6028af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu callback, 6128af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu __func__), 6228af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu base::Bind(&ChromeosModemProxy::OnOperationFailure, 6328af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu weak_factory_.GetWeakPtr(), 6428af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu callback, 6528af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu __func__)); 6628af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu} 6728af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu 6828af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiuvoid ChromeosModemProxy::CreateBearer( 6928af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu const KeyValueStore& properties, 7028af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu Error* error, 7128af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu const RpcIdentifierCallback& callback, 7228af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu int timeout) { 7328af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu SLOG(&proxy_->GetObjectPath(), 2) << __func__; 7403e6719bae1e0903d94853b896673a033196bcf5Alex Vakulenko brillo::VariantDictionary properties_dict; 7528af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu KeyValueStore::ConvertToVariantDictionary(properties, &properties_dict); 7628af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu proxy_->CreateBearerAsync( 7728af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu properties_dict, 7828af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu base::Bind(&ChromeosModemProxy::OnCreateBearerSuccess, 7928af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu weak_factory_.GetWeakPtr(), 8028af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu callback), 8128af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu base::Bind(&ChromeosModemProxy::OnCreateBearerFailure, 8228af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu weak_factory_.GetWeakPtr(), 8328af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu callback)); 8428af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu} 8528af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu 8628af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiuvoid ChromeosModemProxy::DeleteBearer(const string& bearer, 8728af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu Error* error, 8828af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu const ResultCallback& callback, 8928af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu int timeout) { 9028af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu SLOG(&proxy_->GetObjectPath(), 2) << __func__ << ": " << bearer; 9128af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu proxy_->DeleteBearerAsync(dbus::ObjectPath(bearer), 9228af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu base::Bind(&ChromeosModemProxy::OnOperationSuccess, 9328af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu weak_factory_.GetWeakPtr(), 9428af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu callback, 9528af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu __func__), 9628af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu base::Bind(&ChromeosModemProxy::OnOperationFailure, 9728af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu weak_factory_.GetWeakPtr(), 9828af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu callback, 9928af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu __func__)); 10028af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu} 10128af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu 10228af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiuvoid ChromeosModemProxy::Reset(Error* error, 10328af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu const ResultCallback& callback, 10428af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu int timeout) { 10528af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu SLOG(&proxy_->GetObjectPath(), 2) << __func__; 10628af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu proxy_->ResetAsync(base::Bind(&ChromeosModemProxy::OnOperationSuccess, 10728af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu weak_factory_.GetWeakPtr(), 10828af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu callback, 10928af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu __func__), 11028af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu base::Bind(&ChromeosModemProxy::OnOperationFailure, 11128af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu weak_factory_.GetWeakPtr(), 11228af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu callback, 11328af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu __func__)); 11428af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu} 11528af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu 11628af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiuvoid ChromeosModemProxy::FactoryReset(const std::string& code, 11728af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu Error* error, 11828af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu const ResultCallback& callback, 11928af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu int timeout) { 12028af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu SLOG(&proxy_->GetObjectPath(), 2) << __func__; 12128af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu proxy_->FactoryResetAsync(code, 12228af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu base::Bind(&ChromeosModemProxy::OnOperationSuccess, 12328af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu weak_factory_.GetWeakPtr(), 12428af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu callback, 12528af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu __func__), 12628af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu base::Bind(&ChromeosModemProxy::OnOperationFailure, 12728af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu weak_factory_.GetWeakPtr(), 12828af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu callback, 12928af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu __func__)); 13028af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu} 13128af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu 13228af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiuvoid ChromeosModemProxy::SetCurrentCapabilities(uint32_t capabilities, 13328af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu Error* error, 13428af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu const ResultCallback& callback, 13528af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu int timeout) { 13628af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu SLOG(&proxy_->GetObjectPath(), 2) << __func__ << ": " << capabilities; 13728af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu proxy_->SetCurrentCapabilitiesAsync( 13828af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu capabilities, 13928af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu base::Bind(&ChromeosModemProxy::OnOperationSuccess, 14028af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu weak_factory_.GetWeakPtr(), 14128af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu callback, 14228af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu __func__), 14328af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu base::Bind(&ChromeosModemProxy::OnOperationFailure, 14428af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu weak_factory_.GetWeakPtr(), 14528af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu callback, 14628af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu __func__)); 14728af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu} 14828af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu 14928af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiuvoid ChromeosModemProxy::SetCurrentModes(uint32_t allowed_modes, 15028af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu uint32_t preferred_mode, 15128af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu Error* error, 15228af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu const ResultCallback& callback, 15328af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu int timeout) { 15428af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu SLOG(&proxy_->GetObjectPath(), 2) << __func__ << ": " << allowed_modes 15528af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu << " " << preferred_mode; 15628af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu std::tuple<uint32_t, uint32_t> modes { allowed_modes, preferred_mode }; 15728af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu proxy_->SetCurrentModesAsync( 15828af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu modes, 15928af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu base::Bind(&ChromeosModemProxy::OnOperationSuccess, 16028af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu weak_factory_.GetWeakPtr(), 16128af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu callback, 16228af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu __func__), 16328af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu base::Bind(&ChromeosModemProxy::OnOperationFailure, 16428af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu weak_factory_.GetWeakPtr(), 16528af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu callback, 16628af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu __func__)); 16728af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu} 16828af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu 16928af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiuvoid ChromeosModemProxy::SetCurrentBands(const std::vector<uint32_t>& bands, 17028af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu Error* error, 17128af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu const ResultCallback& callback, 17228af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu int timeout) { 17328af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu SLOG(&proxy_->GetObjectPath(), 2) << __func__; 17428af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu proxy_->SetCurrentBandsAsync( 17528af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu bands, 17628af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu base::Bind(&ChromeosModemProxy::OnOperationSuccess, 17728af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu weak_factory_.GetWeakPtr(), 17828af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu callback, 17928af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu __func__), 18028af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu base::Bind(&ChromeosModemProxy::OnOperationFailure, 18128af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu weak_factory_.GetWeakPtr(), 18228af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu callback, 18328af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu __func__)); 18428af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu} 18528af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu 18628af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiuvoid ChromeosModemProxy::Command(const std::string& cmd, 18728af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu uint32_t user_timeout, 18828af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu Error* error, 18928af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu const StringCallback& callback, 19028af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu int timeout) { 19128af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu SLOG(&proxy_->GetObjectPath(), 2) << __func__ << ": " << cmd; 19228af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu proxy_->CommandAsync(cmd, 19328af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu user_timeout, 19428af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu base::Bind(&ChromeosModemProxy::OnCommandSuccess, 19528af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu weak_factory_.GetWeakPtr(), 19628af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu callback), 19728af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu base::Bind(&ChromeosModemProxy::OnCommandFailure, 19828af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu weak_factory_.GetWeakPtr(), 19928af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu callback)); 20028af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu} 20128af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu 20228af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiuvoid ChromeosModemProxy::SetPowerState(uint32_t power_state, 20328af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu Error* error, 20428af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu const ResultCallback& callback, 20528af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu int timeout) { 20628af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu SLOG(&proxy_->GetObjectPath(), 2) << __func__ << ": " << power_state; 20728af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu proxy_->SetPowerStateAsync( 20828af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu power_state, 20928af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu base::Bind(&ChromeosModemProxy::OnOperationSuccess, 21028af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu weak_factory_.GetWeakPtr(), 21128af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu callback, 21228af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu __func__), 21328af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu base::Bind(&ChromeosModemProxy::OnOperationFailure, 21428af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu weak_factory_.GetWeakPtr(), 21528af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu callback, 21628af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu __func__)); 21728af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu} 21828af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu 21928af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiuvoid ChromeosModemProxy::StateChanged( 22028af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu int32_t old, int32_t _new, uint32_t reason) { 22128af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu SLOG(&proxy_->GetObjectPath(), 2) << __func__; 22228af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu if (state_changed_callback_.is_null()) { 22328af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu return; 22428af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu } 22528af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu state_changed_callback_.Run(old, _new, reason); 22628af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu} 22728af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu 22828af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiuvoid ChromeosModemProxy::OnCreateBearerSuccess( 22928af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu const RpcIdentifierCallback& callback, const dbus::ObjectPath& path) { 23028af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu SLOG(&proxy_->GetObjectPath(), 2) << __func__ << ": " << path.value(); 23128af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu callback.Run(path.value(), Error()); 23228af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu} 23328af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu 23428af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiuvoid ChromeosModemProxy::OnCreateBearerFailure( 23503e6719bae1e0903d94853b896673a033196bcf5Alex Vakulenko const RpcIdentifierCallback& callback, brillo::Error* dbus_error) { 23628af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu SLOG(&proxy_->GetObjectPath(), 2) << __func__; 23728af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu Error error; 23828af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu CellularError::FromMM1ChromeosDBusError(dbus_error, &error); 23928af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu callback.Run("", error); 24028af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu} 24128af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu 24228af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiuvoid ChromeosModemProxy::OnCommandSuccess(const StringCallback& callback, 24328af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu const string& response) { 24428af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu SLOG(&proxy_->GetObjectPath(), 2) << __func__ << ": " << response; 24528af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu callback.Run(response, Error()); 24628af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu} 24728af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu 24828af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiuvoid ChromeosModemProxy::OnCommandFailure(const StringCallback& callback, 24903e6719bae1e0903d94853b896673a033196bcf5Alex Vakulenko brillo::Error* dbus_error) { 25028af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu SLOG(&proxy_->GetObjectPath(), 2) << __func__; 25128af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu Error error; 25228af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu CellularError::FromMM1ChromeosDBusError(dbus_error, &error); 25328af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu callback.Run("", error); 25428af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu} 25528af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu 25628af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiuvoid ChromeosModemProxy::OnOperationSuccess(const ResultCallback& callback, 25728af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu const string& operation) { 25828af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu SLOG(&proxy_->GetObjectPath(), 2) << __func__ << ": " << operation; 25928af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu callback.Run(Error()); 26028af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu} 26128af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu 26228af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiuvoid ChromeosModemProxy::OnOperationFailure(const ResultCallback& callback, 26328af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu const string& operation, 26403e6719bae1e0903d94853b896673a033196bcf5Alex Vakulenko brillo::Error* dbus_error) { 26528af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu SLOG(&proxy_->GetObjectPath(), 2) << __func__ << ": " << operation; 26628af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu Error error; 26728af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu CellularError::FromMM1ChromeosDBusError(dbus_error, &error); 26828af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu callback.Run(error); 26928af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu} 27028af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu 27128af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiuvoid ChromeosModemProxy::OnSignalConnected( 27228af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu const string& interface_name, const string& signal_name, bool success) { 27328af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu SLOG(&proxy_->GetObjectPath(), 2) << __func__ 27428af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu << "interface: " << interface_name 27528af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu << " signal: " << signal_name << "success: " << success; 27628af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu if (!success) { 27728af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu LOG(ERROR) << "Failed to connect signal " << signal_name 27828af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu << " to interface " << interface_name; 27928af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu } 28028af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu} 28128af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu 28228af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu} // namespace mm1 28328af1076aac4eb4ec574081198e657cbf3f8f489Peter Qiu} // namespace shill 284