aboutsummaryrefslogtreecommitdiff
path: root/src/core/internal_network/emu_net_state.h
blob: d16f1830a6337d5427b06f105f80eaaa36c84a74 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later

#pragma once
#include <atomic>
#include <common/socket_types.h>
#include <mutex>

namespace Network {

struct EmuNetState {

    static EmuNetState& Get();

    EmuNetState(const EmuNetState&) = delete;
    EmuNetState& operator=(const EmuNetState&) = delete;
    EmuNetState(EmuNetState&&) = delete;
    EmuNetState& operator=(EmuNetState&&) = delete;

    std::atomic<bool> wifi_enabled{true};
    std::atomic<bool> ethernet_enabled{true};

    std::mutex mtx;
    bool connected = false;
    bool via_wifi = false;
    char ssid[20] = {};
    u8 bars = 0;
    bool secure = false;
    IPv4Address ip{}, mask{}, gw{};

private:
    EmuNetState() = default;
};

void RefreshFromHost();
u8 QualityToBars(u8 quality);

} // namespace Network