#ifndef CORE_INTERNAL_MEDIUMS_MEDIUMS_H_ #define CORE_INTERNAL_MEDIUMS_MEDIUMS_H_ #include "core/internal/mediums/ble.h" #include "core/internal/mediums/ble_v2.h" #include "core/internal/mediums/bluetooth_classic.h" #include "core/internal/mediums/bluetooth_radio.h" #include "core/internal/mediums/wifi_lan.h" #include "platform/ptr.h" namespace location { namespace nearby { namespace connections { // Facilitates convenient and reliable usage of various wireless mediums. template class Mediums { public: Mediums(); // Reverts all the mediums to their original state. ~Mediums(); // Returns a handle to the Bluetooth radio. Ptr > bluetoothRadio() const; // Returns a handle to the Bluetooth Classic medium. Ptr > bluetoothClassic() const; // Returns a handle to the Bluetooth Low Energy (BLE) medium. Ptr > ble() const; // Returns a handle to V2 of the Bluetooth Low Energy (BLE) medium. Ptr > bleV2() const; // Returns a handle to the Wifi-Lan medium. Ptr > wifi_lan() const; private: // The order of declaration is critical for both construction and // destruction. // // 1) Construction: The individual mediums have a dependency on the // corresponding radio, so the radio must be initialized first. // // 2) Destruction: The individual mediums should be shut down before the // corresponding radio. ScopedPtr > > bluetooth_radio_; ScopedPtr > > bluetooth_classic_; ScopedPtr > > ble_; ScopedPtr > > ble_v2_; ScopedPtr > > wifi_lan_; }; } // namespace connections } // namespace nearby } // namespace location #include "core/internal/mediums/mediums.cc" #endif // CORE_INTERNAL_MEDIUMS_MEDIUMS_H_