Files
MuditaOS/module-sys/PhoneModes/Subject.hpp
Piotr Tański 81adfe41ab [EGD-6347] Refactored phone modes handling in applications
PhoneModeObserver doesn't work properly in applications.
Applications have to handle the phone mode changes via AppMgr.
Phone mode and tethering handlers separated.
2021-04-12 14:54:55 +02:00

55 lines
1.5 KiB
C++

// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
#include "Common.hpp"
namespace sys
{
class Service; // Forward declaration
} // namespace sys
namespace sys::phone_modes
{
class Subject
{
public:
explicit Subject(Service *owner);
/**
* Sets phone and tethering modes
* @param _phoneMode Phone mode
* @param _tetheringMode Tethering mode
* @return true if modes changed, false otherwise
*/
bool setMode(PhoneMode _phoneMode, Tethering _tetheringMode);
/**
* Sets the phone mode
* @param mode Phone mode
* @return true if phone mode changed, false otherwise
*/
bool setPhoneMode(PhoneMode mode);
/**
* Sets the tethering mode
* @param mode Tethering mode
* @return true if tethering mode changed, false otherwise
*/
bool setTetheringMode(Tethering mode);
bool isTetheringEnabled() const noexcept;
private:
bool changePhoneMode(PhoneMode mode) noexcept;
void notifyPhoneModeChange();
bool changeTetheringMode(Tethering mode) noexcept;
void notifyTetheringChange();
Service *owner;
PhoneMode phoneMode = PhoneMode::Connected;
Tethering tetheringMode = Tethering::Off;
};
} // namespace sys::phone_modes