Roboruka
Knihovna pro obsluhu RoboRuky.
_librk_wifi.h
1#pragma once
2
3#include <mutex>
4#include <string.h>
5
6#ifndef RK_DISABLE_BLE
7#include <BLEServer.h>
8#else
9class BLECharacteristicCallbacks {
10};
11typedef void BLECharacteristic;
12typedef int Status;
13#endif
14
15#include "roboruka.h"
16
17namespace rk {
18
19class WiFi;
20
21class WiFi : public BLECharacteristicCallbacks {
22public:
23 WiFi();
24 virtual ~WiFi();
25
26 void init(const rkConfig& cfg);
27
28 void disableBle();
29
30 virtual void onRead(BLECharacteristic*) {}
31 virtual void onNotify(BLECharacteristic*) {}
32 virtual void onStatus(BLECharacteristic*, Status, uint32_t) {}
33
34 virtual void onWrite(BLECharacteristic* chr);
35
36private:
37 struct Config {
38 Config();
39 Config(bool station_mode_, const rkConfig& cfg);
40
41 std::string format() const;
42 bool parse(const std::string& saved_data);
43
44 bool load();
45 void save() const;
46
47 bool station_mode;
48 std::string name;
49 std::string password;
50 uint8_t channel;
51 };
52
53 void setupWifi(const Config& cfg);
54
55#ifndef RK_DISABLE_BLE
56 void setupBle(const rkConfig& cfg, const Config& wifiCfg);
57
58 void scheduleIpUpdateLocked();
59 bool updateIpChar();
60
61 bool m_ip_update_running;
62 BLECharacteristic* m_ip_char;
63
64 uint32_t m_battery_level;
65
66 bool m_ble_running;
67 BLEServer* m_server;
68 std::vector<BLEService*> m_services;
69 std::vector<BLECharacteristic*> m_chars;
70#endif
71
72 std::mutex m_mutex;
73 bool m_esp_wifi_started;
74 char m_ssid[32];
75};
76};
Nastavení SW pro Roboruku.
Definition: roboruka.h:62