Ersa Wearable Platform
Embedded smartwatch firmware and application framework
Loading...
Searching...
No Matches
network_manager.h
Go to the documentation of this file.
1#pragma once
2
3#include "ersa/common/types.h"
5#include "ersa/hal/wifi.h"
6#include <stdint.h>
7#include <stddef.h>
8
9namespace ersa {
10namespace services {
11
12class NetworkManager;
13
15public:
19 explicit NetworkHandle(NetworkManager* mgr);
22
23 NetworkHandle(const NetworkHandle&) = delete;
25
27 NetworkHandle(NetworkHandle&& other) noexcept;
29 NetworkHandle& operator=(NetworkHandle&& other) noexcept;
30
32 bool isValid() const { return active_; }
34 void release();
35
36private:
38 bool active_{false};
39};
40
50public:
53 hal::IWifiRadio* wifi = nullptr);
54
58 void tick(uint32_t currentUptimeMs);
59
63 void acquire();
65 void release();
66
68 bool isConnected() const;
70 bool isConnecting() const;
72 size_t getActiveHandleCount() const;
73
75 static NetworkManager& instance();
78
79private:
82 size_t activeHandles_{0};
83 bool connected_{false};
84 bool connecting_{false};
85 uint32_t lastActivityMs_{0};
86};
87
88} // namespace services
89} // namespace ersa
Definition types.h:52
Definition event_bus.h:48
static EventBus & instance()
Definition event_bus.cpp:10
Definition wifi.h:21
Definition network_manager.h:14
bool active_
Definition network_manager.h:38
NetworkHandle(const NetworkHandle &)=delete
NetworkHandle & operator=(const NetworkHandle &)=delete
~NetworkHandle()
Definition network_manager.cpp:19
NetworkManager * mgr_
Definition network_manager.h:37
bool isValid() const
Return whether this handle currently owns a network lease.
Definition network_manager.h:32
void release()
Release this handle's network lease.
Definition network_manager.cpp:40
Definition network_manager.h:49
static void setInstance(NetworkManager *instance)
Install the process-wide network manager.
Definition network_manager.cpp:52
size_t activeHandles_
Definition network_manager.h:82
static NetworkManager & instance()
Return the installed process-wide network manager.
Definition network_manager.cpp:48
hal::IWifiRadio * wifi_
Definition network_manager.h:81
bool isConnecting() const
Return whether a station connection is being established.
Definition network_manager.cpp:110
void acquire()
Definition network_manager.cpp:70
Result< void > init()
Definition network_manager.cpp:59
size_t getActiveHandleCount() const
Return the number of active network leases.
Definition network_manager.cpp:114
bool connecting_
Definition network_manager.h:84
events::EventBus & bus_
Definition network_manager.h:80
void release()
Definition network_manager.cpp:86
bool isConnected() const
Return whether station networking is connected.
Definition network_manager.cpp:101
uint32_t lastActivityMs_
Definition network_manager.h:85
bool connected_
Definition network_manager.h:83
void tick(uint32_t currentUptimeMs)
Definition network_manager.cpp:118
NetworkHandle requestInternet()
Definition network_manager.cpp:66
Definition application.h:10