blob: 926a0263b5d1ecb2ab6dc7c6ab1377f924461e87 [file] [log] [blame]
// Copyright 2018 The Fuchsia 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 GARNET_DRIVERS_WLAN_REALTEK_RTL88XX_RTL8821C_DEVICE_H_
#define GARNET_DRIVERS_WLAN_REALTEK_RTL88XX_RTL8821C_DEVICE_H_
#include <memory>
#include "bus.h"
#include "device.h"
#include "wlan_mac.h"
namespace wlan {
namespace rtl88xx {
// This implementation of the Device interface supports the Realtek 8821C chipset.
class Rtl8821cDevice : public Device {
public:
// Factory function for Rtl8821cDevice instances.
static zx_status_t Create(std::unique_ptr<Bus> bus, std::unique_ptr<Device>* device);
~Rtl8821cDevice() override;
// Device implementation.
zx_status_t CreateWlanMac(zx_device_t* parent_device, WlanMac** wlan_mac) override;
private:
Rtl8821cDevice();
Rtl8821cDevice(const Rtl8821cDevice& other) = delete;
Rtl8821cDevice(Rtl8821cDevice&& other) = delete;
Rtl8821cDevice& operator=(Rtl8821cDevice other) = delete;
// Halmac-style configuration functions.
zx_status_t PreInitSystemCfg88xx();
std::unique_ptr<Bus> bus_;
};
} // namespace rtl88xx
} // namespace wlan
#endif // GARNET_DRIVERS_WLAN_REALTEK_RTL88XX_RTL8821C_DEVICE_H_