supla-device
Loading...
Searching...
No Matches
remote_device_config.h
1// SPDX-FileCopyrightText: AC SOFTWARE SP. Z O.O.
2// SPDX-License-Identifier: GPL-2.0-or-later
3
4#ifndef SRC_SUPLA_DEVICE_REMOTE_DEVICE_CONFIG_H_
5#define SRC_SUPLA_DEVICE_REMOTE_DEVICE_CONFIG_H_
6
7#include <supla-common/proto.h>
8#include <supla/protocol/supla_srpc.h>
9#include <supla/modbus/modbus_configurator.h>
10#include <supla/device/input_activation_config.h>
11#include <supla/device/thermal_protection_config.h>
12
13namespace Supla {
14
15enum class HomeScreenContent {
16 HOME_SCREEN_OFF,
17 HOME_SCREEN_TEMPERATURE,
18 HOME_SCREEN_TEMPERATURE_HUMIDITY,
19 HOME_SCREEN_TIME,
20 HOME_SCREEN_TIME_DATE,
21 HOME_SCREEN_TEMPERATURE_TIME,
22 HOME_SCREEN_MAIN_AND_AUX_TEMPERATURE,
23 HOME_SCREEN_MODE_OR_TEMPERATURE,
24};
25
26namespace Device {
27
29 public:
30 // Registers config field. Register each field separately (only single bit
31 // value are accepted)
32 static void RegisterConfigField(uint64_t fieldBit);
33 // Configures screen saver available modes. Set all available modes
34 // in single call (this method overwrites previous values)
35 static void SetHomeScreenContentAvailable(uint64_t allValues);
36 static uint64_t GetHomeScreenContentAvailable();
37 static enum HomeScreenContent HomeScreenContentBitToEnum(uint64_t fieldBit);
38 static uint64_t HomeScreenEnumToBit(enum HomeScreenContent type);
39 static uint64_t HomeScreenIntToBit(int mode);
40 static void SetModbusProperties(
41 const Supla::Modbus::ConfigProperties &modbusProperties);
42 static void SetThermalProtectionProperties(
43 const ThermalProtectionProperties &properties);
44 static void SetInputActivationProperties(
45 const InputActivationProperties &properties);
46 static void ClearResendAttemptsCounter();
47#ifdef SUPLA_TEST
48 static uint64_t GetRegisteredConfigFieldsForTests();
49 static void SetRegisteredConfigFieldsForTests(uint64_t fields);
50 static InputActivationProperties GetInputActivationPropertiesForTests();
51 static void SetInputActivationPropertiesForTests(
52 const InputActivationProperties &properties);
53#endif
54
55 explicit RemoteDeviceConfig(bool firstDeviceConfigAfterRegistration = false);
56 virtual ~RemoteDeviceConfig();
57
58 void processConfig(TSDS_SetDeviceConfig *config);
59
60 uint8_t getResultCode() const;
61 bool isEndFlagReceived() const;
62 bool isSetDeviceConfigRequired() const;
63 // returns false when it failed to build cfg message
64 bool fillSetDeviceConfig(TSDS_SetDeviceConfig *config) const;
65 void handleSetDeviceConfigResult(TSDS_SetDeviceConfigResult *result);
66
67 private:
68 void processStatusLedConfig(uint64_t fieldBit,
70 void processPowerStatusLedConfig(uint64_t fieldBit,
72 void processScreenBrightnessConfig(uint64_t fieldBit,
74 void processButtonVolumeConfig(uint64_t fieldBit,
76 void processHomeScreenContentConfig(uint64_t fieldBit,
78 void processHomeScreenDelayConfig(uint64_t fieldBit,
80 void processAutomaticTimeSyncConfig(uint64_t fieldBit,
82 void processDisableUserInterfaceConfig(
83 uint64_t fieldBit, TDeviceConfig_DisableUserInterface *config);
84 void processHomeScreenDelayTypeConfig(
85 uint64_t fieldBit, TDeviceConfig_HomeScreenOffDelayType *config);
86 void processModbusConfig(uint64_t fieldBit, TDeviceConfig_Modbus *config);
87 void processThermalProtectionConfig(
88 uint64_t fieldBit, TDeviceConfig_ThermalProtection *config);
89 void processInputActivationConfig(
90 uint64_t fieldBit, TDeviceConfig_InputActivation *config);
91 void processFirmwareUpdateConfig(
92 uint64_t fieldBit, TDeviceConfig_FirmwareUpdate *config);
93
94 void fillStatusLedConfig(TDeviceConfig_StatusLed *config) const;
95 void fillPowerStatusLedConfig(TDeviceConfig_PowerStatusLed *config) const;
96 void fillScreenBrightnessConfig(TDeviceConfig_ScreenBrightness *config) const;
97 void fillButtonVolumeConfig(TDeviceConfig_ButtonVolume *config) const;
98 void fillHomeScreenContentConfig(
100 void fillHomeScreenDelayConfig(
102 void fillAutomaticTimeSyncConfig(
103 TDeviceConfig_AutomaticTimeSync *config) const;
104 void fillDisableUserInterfaceConfig(
106 void fillHomeScreenDelayTypeConfig(
108 void fillModbusConfig(TDeviceConfig_Modbus *config) const;
109 void fillThermalProtectionConfig(
110 TDeviceConfig_ThermalProtection *config) const;
111 void fillInputActivationConfig(
112 TDeviceConfig_InputActivation *config) const;
113 void fillFirmwareUpdateConfig(TDeviceConfig_FirmwareUpdate *config) const;
114
115 bool endFlagReceived = false;
116 uint8_t resultCode = 255;
117 int messageCounter = 0;
118 bool firstDeviceConfigAfterRegistration = false;
119 uint64_t requireSetDeviceConfigFields = 0;
120
121 static uint64_t fieldBitsUsedByDevice;
122 static uint64_t homeScreenContentAvailable;
123 static Supla::Modbus::ConfigProperties modbusProperties;
124 static ThermalProtectionProperties thermalProtectionProperties;
125 static InputActivationProperties inputActivationProperties;
126 static uint8_t resendAttempts;
127};
128
129} // namespace Device
130} // namespace Supla
131
132#endif // SRC_SUPLA_DEVICE_REMOTE_DEVICE_CONFIG_H_
Definition remote_device_config.h:28
Definition input_activation_config.h:27
Definition thermal_protection_config.h:28
Definition modbus_configurator.h:49
Definition proto.h:2964
Definition proto.h:2951
Definition proto.h:2955
Definition proto.h:3082
Definition proto.h:2990
Definition proto.h:2969
Definition proto.h:3099
Definition proto.h:3061
Definition proto.h:2941
Definition proto.h:2945
Definition proto.h:2937
Definition proto.h:3087
Definition proto.h:2903
Definition proto.h:2891