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// 16f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiu 17f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiu#include "shill/dbus/chromeos_modem_gobi_proxy.h" 18f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiu 19f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiu#include <memory> 20f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiu 21f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiu#include <base/bind.h> 22f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiu 23f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiu#include "shill/cellular/cellular_error.h" 24f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiu#include "shill/error.h" 25f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiu#include "shill/logging.h" 26f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiu 27f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiuusing std::string; 28f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiu 29f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiunamespace shill { 30f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiu 31f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiunamespace Logging { 32f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiustatic auto kModuleLogScope = ScopeLogger::kDBus; 33f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiustatic string ObjectID(const dbus::ObjectPath* p) { return p->value(); } 34f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiu} // namespace Logging 35f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiu 36f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter QiuChromeosModemGobiProxy::ChromeosModemGobiProxy( 37f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiu const scoped_refptr<dbus::Bus>& bus, 38f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiu const string& path, 39f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiu const string& service) 40f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiu : proxy_( 41f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiu new org::chromium::ModemManager::Modem::GobiProxy( 42f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiu bus, service, dbus::ObjectPath(path))) {} 43f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiu 44f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter QiuChromeosModemGobiProxy::~ChromeosModemGobiProxy() {} 45f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiu 46f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiuvoid ChromeosModemGobiProxy::SetCarrier(const string& carrier, 47f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiu Error* error, 48f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiu const ResultCallback& callback, 49f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiu int timeout) { 50f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiu SLOG(&proxy_->GetObjectPath(), 2) << __func__ << ": " << carrier; 51f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiu proxy_->SetCarrierAsync( 52f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiu carrier, 53f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiu base::Bind(&ChromeosModemGobiProxy::OnSetCarrierSuccess, 54f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiu weak_factory_.GetWeakPtr(), 55f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiu callback), 56f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiu base::Bind(&ChromeosModemGobiProxy::OnSetCarrierFailure, 57f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiu weak_factory_.GetWeakPtr(), 58f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiu callback)); 59f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiu} 60f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiu 61f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiuvoid ChromeosModemGobiProxy::OnSetCarrierSuccess( 62f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiu const ResultCallback& callback) { 63f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiu SLOG(&proxy_->GetObjectPath(), 2) << __func__; 64f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiu callback.Run(Error()); 65f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiu} 66f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiu 67f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiuvoid ChromeosModemGobiProxy::OnSetCarrierFailure( 6803e6719bae1e0903d94853b896673a033196bcf5Alex Vakulenko const ResultCallback& callback, brillo::Error* dbus_error) { 69f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiu SLOG(&proxy_->GetObjectPath(), 2) << __func__; 70f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiu Error error; 71f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiu CellularError::FromChromeosDBusError(dbus_error, &error); 72f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiu callback.Run(error); 73f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiu} 74f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiu 75f576f1b61ac8514adffd5ef6d44f8b0aa00ab979Peter Qiu} // namespace shill 76