Skip to content

Commit 92764c2

Browse files
Matthias Akstallermatth-x
authored andcommitted
Add Config write-only option
The "AuthorizationKey" config is specified as write-only and thus, may be updated by the server but not reported through the GetConfiguration option.
1 parent e6b7bc8 commit 92764c2

File tree

3 files changed

+34
-4
lines changed

3 files changed

+34
-4
lines changed

src/MicroOcpp/Core/ConfigurationKeyValue.cpp

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,11 +75,27 @@ bool Configuration::isRebootRequired() {
7575
}
7676

7777
void Configuration::setReadOnly() {
78-
readOnly = true;
78+
if (mutability == Mutability::ReadWrite) {
79+
mutability = Mutability::ReadOnly;
80+
} else {
81+
mutability = Mutability::None;
82+
}
7983
}
8084

8185
bool Configuration::isReadOnly() {
82-
return readOnly;
86+
return mutability == Mutability::ReadOnly;
87+
}
88+
89+
bool Configuration::isReadable() {
90+
return mutability == Mutability::ReadWrite || mutability == Mutability::ReadOnly;
91+
}
92+
93+
void Configuration::setWriteOnly() {
94+
if (mutability == Mutability::ReadWrite) {
95+
mutability = Mutability::WriteOnly;
96+
} else {
97+
mutability = Mutability::None;
98+
}
8399
}
84100

85101
/*

src/MicroOcpp/Core/ConfigurationKeyValue.h

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,15 @@ class Configuration {
3636
revision_t value_revision = 0; //write access counter; used to check if this config has been changed
3737
private:
3838
bool rebootRequired = false;
39-
bool readOnly = false;
39+
40+
enum class Mutability : uint8_t {
41+
ReadWrite,
42+
ReadOnly,
43+
WriteOnly,
44+
None
45+
};
46+
Mutability mutability = Mutability::ReadWrite;
47+
4048
public:
4149
virtual ~Configuration();
4250

@@ -60,6 +68,9 @@ class Configuration {
6068

6169
void setReadOnly();
6270
bool isReadOnly();
71+
bool isReadable();
72+
73+
void setWriteOnly();
6374
};
6475

6576
/*

src/MicroOcpp/Operations/GetConfiguration.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@ std::unique_ptr<JsonDoc> GetConfiguration::createConf(){
4040
MO_DBG_ERR("invalid config");
4141
continue;
4242
}
43+
if (!container->getConfiguration(i)->isReadable()) {
44+
continue;
45+
}
4346
configurations.push_back(container->getConfiguration(i));
4447
}
4548
}
@@ -53,7 +56,7 @@ std::unique_ptr<JsonDoc> GetConfiguration::createConf(){
5356
}
5457
}
5558

56-
if (res) {
59+
if (res && res->isReadable()) {
5760
configurations.push_back(res);
5861
} else {
5962
unknownKeys.push_back(key.c_str());

0 commit comments

Comments
 (0)