blob: 6dc1642590bf187734c8b0ebb46a68189ccbd59a [file] [log] [blame]
// 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.
#ifndef WIMAX_MANAGER_GDM_DRIVER_H_
#define WIMAX_MANAGER_GDM_DRIVER_H_
extern "C" {
#include <gct/gctapi.h>
} // extern "C"
#include <stdint.h>
#include <memory>
#include <vector>
#include <base/macros.h>
#include <base/memory/weak_ptr.h>
#include "wimax_manager/driver.h"
#include "wimax_manager/network.h"
namespace wimax_manager {
class GdmDevice;
class Manager;
class GdmDriver : public Driver, public base::SupportsWeakPtr<GdmDriver> {
public:
explicit GdmDriver(Manager* manager);
~GdmDriver() override;
bool Initialize() override;
bool Finalize() override;
bool GetDevices(std::vector<std::unique_ptr<Device>>* devices) override;
bool OpenDevice(GdmDevice* device);
bool CloseDevice(GdmDevice* device);
bool GetDeviceStatus(GdmDevice* device);
bool GetDeviceRFInfo(GdmDevice* device);
bool SetDeviceEAPParameters(GdmDevice* device,
GCT_API_EAP_PARAM* eap_parameters);
bool AutoSelectProfileForDevice(GdmDevice* device);
bool PowerOnDeviceRF(GdmDevice* device);
bool PowerOffDeviceRF(GdmDevice* device);
bool SetScanInterval(GdmDevice* device, uint32_t interval);
bool GetNetworksForDevice(GdmDevice* device,
std::vector<NetworkRefPtr>* networks);
bool ConnectDeviceToNetwork(GdmDevice* device, const Network& network);
bool DisconnectDeviceFromNetwork(GdmDevice* device);
private:
bool CreateInitialDirectories() const;
GDEV_ID GetDeviceId(const GdmDevice* device) const;
APIHAND api_handle_;
DISALLOW_COPY_AND_ASSIGN(GdmDriver);
};
} // namespace wimax_manager
#endif // WIMAX_MANAGER_GDM_DRIVER_H_