Skip to content

Commit abd5757

Browse files
committed
[Build] Add short compressed build description (#3262)
See #3262 Outputs `Tffff:7:P17:2400:22:(3):10:` Equivalent to: ``` "CONTROLLER_SET_ALL", "NOTIFIER_SET_NONE", "PLUGIN_SET_ONLY_SWITCH", "USES_P001", # Switch "USES_P002", # ADC "USES_P004", # Dallas DS18b20 "USES_P100", # Pulse Counter - DS2423 "USES_C016", # Cache Controller "USES_C018", # TTN/RN2483 "USES_C015", # TTN/RN2483 ``` Still missing Notifier, CPU, flash size. [Build] Fix bit order in build description Fix build issues after merge
1 parent e1e8adb commit abd5757

File tree

5 files changed

+124
-1
lines changed

5 files changed

+124
-1
lines changed
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
#include "ESPEasy_Build_Description.h"
2+
3+
4+
#include "../Globals/CPlugins.h"
5+
#include "../Globals/NPlugins.h"
6+
#include "../Globals/Plugins.h"
7+
8+
xPluginEnumerator::xPluginEnumerator() {}
9+
10+
void xPluginEnumerator::setSize(unsigned int maxID) {
11+
const unsigned int wordSize = (maxID / 16) + 1;
12+
13+
if (_bitmap.size() < wordSize) {
14+
_bitmap.resize(wordSize, 0);
15+
}
16+
}
17+
18+
void xPluginEnumerator::add(unsigned int ID) {
19+
setSize(ID);
20+
unsigned int wordIndex = ID / 16;
21+
unsigned int bitIndex = 15 - (ID % 16);
22+
23+
bitSet(_bitmap[wordIndex], bitIndex);
24+
}
25+
26+
String xPluginEnumerator::getString(char separator) const {
27+
String result;
28+
29+
result.reserve(_bitmap.size() * 5); // 4 HEX characters per 16 bit value + separator
30+
size_t zeroCount = 0;
31+
32+
for (size_t i = 0; i < _bitmap.size(); ++i) {
33+
if (_bitmap[i] == 0) {
34+
++zeroCount;
35+
} else if (zeroCount > 0) {
36+
result += '(';
37+
result += zeroCount;
38+
result += ')';
39+
result += separator;
40+
zeroCount = 0;
41+
}
42+
43+
if (zeroCount == 0) {
44+
result += String(_bitmap[i], HEX);
45+
result += separator;
46+
}
47+
}
48+
return result;
49+
}
50+
51+
String CreateBuildDescription(char separator) {
52+
String result;
53+
54+
{
55+
result += 'T';
56+
xPluginEnumerator cplugins;
57+
const unsigned int size = ProtocolIndex_to_CPlugin_id.size();
58+
cplugins.setSize(size);
59+
60+
for (size_t i = 0; i < size; ++i) {
61+
cplugins.add(ProtocolIndex_to_CPlugin_id[i]);
62+
}
63+
result += cplugins.getString(separator);
64+
}
65+
{
66+
result += 'P';
67+
xPluginEnumerator plugins;
68+
const unsigned int size = DeviceIndex_to_Plugin_id.size();
69+
plugins.setSize(size);
70+
71+
for (size_t i = 0; i < size; ++i) {
72+
plugins.add(DeviceIndex_to_Plugin_id[i]);
73+
}
74+
result += plugins.getString(separator);
75+
}
76+
{
77+
// FIXME TD-er: Right now we don't have a notifierindex to ID vector
78+
79+
/*
80+
result += 'N';
81+
xPluginEnumerator plugins;
82+
const unsigned int size = DeviceIndex_to_Plugin_id.size();
83+
plugins.setSize(size);
84+
for (size_t i = 0; i < size; ++i) {
85+
plugins.add(DeviceIndex_to_Plugin_id[i]);
86+
}
87+
result += plugins.getString(separator);
88+
*/
89+
}
90+
return result;
91+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#ifndef HELPERS_ESPEASY_BUILD_DESCRIPTION_H
2+
#define HELPERS_ESPEASY_BUILD_DESCRIPTION_H
3+
4+
#include <Arduino.h>
5+
#include <vector>
6+
7+
struct xPluginEnumerator {
8+
public:
9+
10+
xPluginEnumerator();
11+
12+
void setSize(unsigned int maxID);
13+
14+
void add(unsigned int ID);
15+
16+
String getString(char separator) const;
17+
18+
private:
19+
20+
std::vector<uint16_t>_bitmap;
21+
};
22+
23+
String CreateBuildDescription(char separator);
24+
25+
26+
#endif // HELPERS_ESPEASY_BUILD_DESCRIPTION_H

src/src/Helpers/StringProvider.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
#include "../Globals/Settings.h"
1717

1818
#include "../Helpers/CompiletimeDefines.h"
19+
#include "../Helpers/ESPEasy_Build_Description.h"
1920
#include "../Helpers/Memory.h"
2021
#include "../Helpers/Scheduler.h"
2122
#include "../Helpers/StringConverter.h"
@@ -108,6 +109,7 @@ String getLabel(LabelType::Enum label) {
108109
case LabelType::BUILD_TIME: return F("Build Time");
109110
case LabelType::BINARY_FILENAME: return F("Binary Filename");
110111
case LabelType::BUILD_PLATFORM: return F("Build Platform");
112+
case LabelType::BUILD_DESCRIPTION: return F("Build Description");
111113
case LabelType::GIT_HEAD: return F("Git HEAD");
112114

113115
case LabelType::SYSLOG_LOG_LEVEL: return F("Syslog Log Level");
@@ -248,6 +250,7 @@ String getValue(LabelType::Enum label) {
248250
case LabelType::BUILD_TIME: return get_build_date() + " " + get_build_time();
249251
case LabelType::BINARY_FILENAME: return get_binary_filename();
250252
case LabelType::BUILD_PLATFORM: return get_build_platform();
253+
case LabelType::BUILD_DESCRIPTION: return CreateBuildDescription(':');
251254
case LabelType::GIT_HEAD: return get_git_head();
252255
case LabelType::SYSLOG_LOG_LEVEL: return getLogLevelDisplayString(Settings.SyslogLevel);
253256
case LabelType::SERIAL_LOG_LEVEL: return getLogLevelDisplayString(getSerialLogLevel());

src/src/Helpers/StringProvider.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ struct LabelType {
8585
BUILD_TIME,
8686
BINARY_FILENAME,
8787
BUILD_PLATFORM,
88+
BUILD_DESCRIPTION,
8889
GIT_HEAD,
8990

9091

@@ -173,4 +174,4 @@ bool tryDownloadFileType(const String & url,
173174
unsigned int filenr = 0);
174175

175176

176-
#endif // STRING_PROVIDER_TYPES_H
177+
#endif // STRING_PROVIDER_TYPES_H

src/src/WebServer/SysInfoPage.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ void handle_sysinfo_json() {
130130
json_prop(F("build_time"), get_build_time());
131131
json_prop(F("filename"), getValue(LabelType::BINARY_FILENAME));
132132
json_prop(F("build_platform"), getValue(LabelType::BUILD_PLATFORM));
133+
json_prop(F("build_description"), getValue(LabelType::BUILD_DESCRIPTION));
133134
json_prop(F("git_head"), getValue(LabelType::GIT_HEAD));
134135
json_close();
135136

@@ -497,6 +498,7 @@ void handle_sysinfo_Firmware() {
497498
addRowLabelValue_copy(LabelType::BUILD_TIME);
498499
addRowLabelValue_copy(LabelType::BINARY_FILENAME);
499500
addRowLabelValue_copy(LabelType::BUILD_PLATFORM);
501+
addRowLabelValue_copy(LabelType::BUILD_DESCRIPTION);
500502
addRowLabelValue_copy(LabelType::GIT_HEAD);
501503
}
502504

0 commit comments

Comments
 (0)