supla-device
Loading...
Searching...
No Matches
config.h
1/*
2 Copyright (C) AC SOFTWARE SP. Z O.O.
3
4 This program is free software; you can redistribute it and/or
5 modify it under the terms of the GNU General Public License
6 as published by the Free Software Foundation; either version 2
7 of the License, or (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17*/
18
19#ifndef SRC_SUPLA_STORAGE_CONFIG_H_
20#define SRC_SUPLA_STORAGE_CONFIG_H_
21
22#include <supla/device/device_mode.h>
23#include <stddef.h>
24#include <stdint.h>
25
26#define SUPLA_CONFIG_MAX_KEY_SIZE 16
27
28#define MAX_SSID_SIZE 33 // actual SSID should be at most 32 bytes
29 // but we add here extra byte for null
30 // termination
31#define MAX_WIFI_PASSWORD_SIZE 64
32#define MQTT_CLIENTID_MAX_SIZE 23
33#define MQTT_USERNAME_MAX_SIZE 256
34#define MQTT_PASSWORD_MAX_SIZE 256
35#define SUPLA_AES_KEY_SIZE 32
36
37namespace Supla {
38
39class Config {
40 public:
41 Config();
42 virtual ~Config();
43 virtual bool init() = 0;
44 virtual void removeAll() = 0;
45 virtual bool isMinimalConfigReady(bool showLogs = true);
46 virtual bool isConfigModeSupported();
47
48 // Override this method and setup all default value if needed
49 virtual void initDefaultDeviceConfig();
50
51 // Generic getters and setters
52 virtual bool setString(const char* key, const char* value) = 0;
53 virtual bool getString(const char* key, char* value, size_t maxSize) = 0;
54 virtual int getStringSize(const char* key) = 0;
55
56 virtual bool setBlob(const char* key, const char* value, size_t blobSize) = 0;
57 virtual bool getBlob(const char* key, char* value, size_t blobSize) = 0;
58
59 virtual bool getInt8(const char* key, int8_t* result) = 0;
60 virtual bool getUInt8(const char* key, uint8_t* result) = 0;
61 virtual bool getInt32(const char* key, int32_t* result) = 0;
62 virtual bool getUInt32(const char* key, uint32_t* result) = 0;
63
64 virtual bool setInt8(const char* key, const int8_t value) = 0;
65 virtual bool setUInt8(const char* key, const uint8_t value) = 0;
66 virtual bool setInt32(const char* key, const int32_t value) = 0;
67 virtual bool setUInt32(const char* key, const uint32_t value) = 0;
68 virtual bool eraseKey(const char* key) = 0;
69
70 static void generateKey(char *, int, const char *);
71
72 virtual void commit();
73 virtual void saveWithDelay(uint32_t delayMs);
74 virtual void saveIfNeeded();
75
76 // Device generic config
77 virtual bool generateGuidAndAuthkey();
78 virtual bool setDeviceName(const char* name);
79 virtual bool setDeviceMode(enum Supla::DeviceMode mode);
80 virtual bool setGUID(const char* guid);
81 virtual bool getDeviceName(char* result);
82 virtual enum Supla::DeviceMode getDeviceMode();
83 virtual bool getGUID(char* result);
84 virtual bool getSwUpdateServer(char* url);
85 virtual bool isSwUpdateSkipCert();
86 virtual bool isSwUpdateBeta();
87 virtual bool setSwUpdateSkipCert(bool skipCert);
88 virtual bool setSwUpdateServer(const char* url);
89 virtual bool setSwUpdateBeta(bool enabled);
90 virtual bool getCustomCA(char* result, int maxSize);
91 virtual int getCustomCASize();
92 virtual bool setCustomCA(const char* customCA);
93 virtual bool getAESKey(char* result);
94
95 // Supla protocol config
96 virtual bool setSuplaCommProtocolEnabled(bool enabled);
97 virtual bool setSuplaServer(const char* server);
98 virtual bool setSuplaServerPort(int32_t port);
99 virtual bool setEmail(const char* email);
100 virtual bool setAuthKey(const char* authkey);
101 virtual bool isSuplaCommProtocolEnabled();
102 virtual bool getSuplaServer(char* result);
103 virtual int32_t getSuplaServerPort();
104 virtual bool getEmail(char* result);
105 virtual bool getAuthKey(char* result);
106
107 // MQTT protocol config
108 virtual bool setMqttCommProtocolEnabled(bool enabled);
109 virtual bool setMqttServer(const char* server);
110 virtual bool setMqttServerPort(int32_t port);
111 virtual bool setMqttUser(const char* user);
112 virtual bool setMqttPassword(const char* password);
113 virtual bool setMqttQos(int32_t qos);
114 virtual bool isMqttCommProtocolEnabled();
115 virtual bool setMqttTlsEnabled(bool enabled);
116 virtual bool isMqttTlsEnabled();
117 virtual bool setMqttAuthEnabled(bool enabled);
118 virtual bool isMqttAuthEnabled();
119 virtual bool setMqttRetainEnabled(bool enabled);
120 virtual bool isMqttRetainEnabled();
121 virtual bool getMqttServer(char* result);
122 virtual int32_t getMqttServerPort();
123 virtual bool getMqttUser(char* result);
124 virtual bool getMqttPassword(char* result);
125 virtual int32_t getMqttQos();
126 virtual bool setMqttPrefix(const char* prefix);
127 virtual bool getMqttPrefix(char* result);
128
129 // WiFi config
130 virtual bool setWiFiSSID(const char* ssid);
131 virtual bool setWiFiPassword(const char* password);
132 virtual bool setAltWiFiSSID(const char* ssid);
133 virtual bool setAltWiFiPassword(const char* password);
134 virtual bool getWiFiSSID(char* result);
135 virtual bool getWiFiPassword(char* result);
136 virtual bool getAltWiFiSSID(char* result);
137 virtual bool getAltWiFiPassword(char* result);
138
139 virtual bool isDeviceConfigChangeFlagSet();
140 virtual bool isDeviceConfigChangeReadyToSend();
141 virtual bool setDeviceConfigChangeFlag();
142 virtual bool clearDeviceConfigChangeFlag();
143
144 virtual bool setChannelConfigChangeFlag(int channelNo, int configType = 0);
145 virtual bool clearChannelConfigChangeFlag(int channelNo, int configType = 0);
146 virtual bool isChannelConfigChangeFlagSet(int channelNo, int configType = 0);
147
148 protected:
149 virtual int getBlobSize(const char* key) = 0;
150 uint32_t saveDelayTimestamp = 0;
151 uint32_t deviceConfigUpdateDelayTimestamp = 0;
152 uint32_t saveDelayMs = 0;
153 int8_t deviceConfigChangeFlag = -1;
154};
155}; // namespace Supla
156
157#endif // SRC_SUPLA_STORAGE_CONFIG_H_