| // Copyright (c) 2012 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "wimax_manager/device.h" |
| |
| #include <base/logging.h> |
| |
| #include "wimax_manager/device_dbus_adaptor.h" |
| |
| using std::string; |
| |
| namespace wimax_manager { |
| |
| namespace { |
| |
| const size_t kMACAddressLength = 6; |
| const size_t kBaseStationIdLength = 6; |
| |
| // Default time interval, in seconds, between network scans. |
| const int kDefaultNetworkScanIntervalInSeconds = 10; |
| |
| // Default time interval, in seconds, between status updates. |
| const int kDefaultStatusUpdateIntervalInSeconds = 10; |
| |
| string GetDeviceStatusDescription(DeviceStatus device_status) { |
| switch (device_status) { |
| case kDeviceStatusUninitialized: |
| return "Uninitialized"; |
| case kDeviceStatusDisabled: |
| return "Disabled"; |
| case kDeviceStatusReady: |
| return "Ready"; |
| case kDeviceStatusScanning: |
| return "Scanning"; |
| case kDeviceStatusConnecting: |
| return "Connecting"; |
| case kDeviceStatusConnected: |
| return "Connected"; |
| } |
| return "Unknown"; |
| } |
| |
| } // namespace |
| |
| Device::Device(Manager *manager, uint8_t index, const string &name) |
| : manager_(manager), |
| index_(index), |
| name_(name), |
| mac_address_(kMACAddressLength), |
| base_station_id_(kBaseStationIdLength), |
| frequency_(0), |
| network_scan_interval_(kDefaultNetworkScanIntervalInSeconds), |
| status_update_interval_(kDefaultStatusUpdateIntervalInSeconds), |
| status_(kDeviceStatusUninitialized) { |
| } |
| |
| void Device::UpdateNetworks() { |
| dbus_adaptor()->UpdateNetworks(); |
| } |
| |
| void Device::UpdateRFInfo() { |
| dbus_adaptor()->UpdateRFInfo(); |
| } |
| |
| void Device::SetNetworkScanInterval(uint32_t network_scan_interval) { |
| if (network_scan_interval_ != network_scan_interval) { |
| network_scan_interval_ = network_scan_interval; |
| UpdateNetworkScanInterval(network_scan_interval); |
| } |
| } |
| |
| void Device::SetStatusUpdateInterval(uint32_t status_update_interval) { |
| if (status_update_interval_ != status_update_interval) { |
| status_update_interval_ = status_update_interval; |
| UpdateStatusUpdateInterval(status_update_interval); |
| } |
| } |
| |
| void Device::SetMACAddress(const ByteIdentifier &mac_address) { |
| mac_address_.CopyFrom(mac_address); |
| if (dbus_adaptor()) |
| dbus_adaptor()->UpdateMACAddress(); |
| } |
| |
| void Device::SetBaseStationId(const ByteIdentifier &base_station_id) { |
| base_station_id_.CopyFrom(base_station_id); |
| } |
| |
| void Device::SetStatus(DeviceStatus status) { |
| if (status_ != status) { |
| LOG(INFO) << "Device status changed from " |
| << GetDeviceStatusDescription(status_) << " to " |
| << GetDeviceStatusDescription(status); |
| status_ = status; |
| dbus_adaptor()->UpdateStatus(); |
| } |
| } |
| |
| } // namespace wimax_manager |