MakerLabs ACM
network_manager.h
Go to the documentation of this file.
1 /*
2  * Copyright Paul Reimer, 2018
3  *
4  * This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 Unported License.
5  * To view a copy of this license, visit
6  * https://creativecommons.org/licenses/by-nc-sa/4.0/
7  * or send a letter to
8  * Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA.
9  */
10 
11 #pragma once
12 
13 #include "network_manager_generated.h"
14 
15 #include "freertos/FreeRTOS.h"
16 #include "freertos/event_groups.h"
17 
18 #include "lwip/ip4_addr.h"
19 
20 #include "esp_event.h"
21 
22 namespace NetworkManager {
23 
25 {
26  ip4_addr_t ip;
27  ip4_addr_t gw;
28  ip4_addr_t netmask;
29 };
30 
31 auto wait_for_network(const EventBits_t bits, const TickType_t ticks_to_wait)
32  -> EventBits_t;
33 
34 auto set_network(const EventBits_t bits)
35  -> EventBits_t;
36 
37 auto reset_network(const EventBits_t bits)
38  -> EventBits_t;
39 
42 
43 auto get_wifi_connection_rssi(const size_t samples)
44  -> int;
45 
46 auto event_handler(void* ctx, system_event_t* event)
47  -> esp_err_t;
48 
49 // The event group allows multiple bits for each event,
50 // but we only care about one event - are we connected
51 // to the AP with an IP?
52 constexpr int NETWORK_IS_CONNECTED = (1<<0);
53 constexpr int NETWORK_IS_CONNECTED_IPV4 = (1<<1);
54 constexpr int NETWORK_IS_CONNECTED_IPV6 = (1<<2);
55 constexpr int NETWORK_TIME_AVAILABLE = (1<<3);
56 
57 } // namespace NetworkManager
auto reset_network(const EventBits_t bits) -> EventBits_t
Definition: network_manager.cpp:48
constexpr int NETWORK_TIME_AVAILABLE
Definition: network_manager.h:55
constexpr int NETWORK_IS_CONNECTED_IPV4
Definition: network_manager.h:53
constexpr int NETWORK_IS_CONNECTED_IPV6
Definition: network_manager.h:54
ip4_addr_t gw
Definition: network_manager.h:27
constexpr int NETWORK_IS_CONNECTED
Definition: network_manager.h:52
ip4_addr_t netmask
Definition: network_manager.h:28
ip4_addr_t ip
Definition: network_manager.h:26
auto get_wifi_connection_rssi(const size_t samples) -> int
Definition: network_manager.cpp:60
Definition: network_manager.h:24
auto wait_for_network(const EventBits_t bits, const TickType_t ticks_to_wait) -> EventBits_t
Definition: network_manager.cpp:30
auto event_handler(void *ctx, system_event_t *event) -> esp_err_t
Definition: network_manager.cpp:86
Definition: mdns_actor.cpp:25
auto set_network(const EventBits_t bits) -> EventBits_t
Definition: network_manager.cpp:42
auto get_network_details() -> NetworkInterfaceDetails
Definition: network_manager.cpp:54