Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
co2ampel
ampel-firmware
Commits
c9eaca3f
Commit
c9eaca3f
authored
May 15, 2021
by
Eric Duminil
Browse files
Typed parameters are so much better
parent
29388bab
Changes
1
Hide whitespace changes
Inline
Side-by-side
ampel-firmware/web_server.cpp
View file @
c9eaca3f
...
...
@@ -25,6 +25,7 @@
#endif
#include <IotWebConf.h>
#include <IotWebConfUsing.h> // This loads aliases for easier class names.
#include <IotWebConfTParameter.h>
namespace
config
{
// Values should be defined in config.h
...
...
@@ -65,34 +66,30 @@ namespace web_server {
IotWebConf
*
iotWebConf
;
#define STRING_LEN 128
#define NUMBER_LEN 32
#define STRING_LEN 64
// -- Configuration specific key. The value should be modified if config structure was changed.
const
char
config_version
[]
=
"ampel_test_v1"
;
char
stringParamValue
[
STRING_LEN
];
char
intParamValue
[
NUMBER_LEN
];
char
floatParamValue
[
NUMBER_LEN
];
char
checkboxParamValue
[
STRING_LEN
];
char
chooserParamValue
[
STRING_LEN
];
static
char
chooserValues
[][
STRING_LEN
]
=
{
"red"
,
"blue"
,
"darkYellow"
};
static
char
chooserNames
[][
STRING_LEN
]
=
{
"Red"
,
"Blue"
,
"Dark yellow"
};
IotWebConfTextParameter
stringParam
=
IotWebConfTextParameter
(
"String param"
,
"stringParam"
,
stringParamValue
,
STRING_LEN
);
IotWebConfParameterGroup
group1
=
IotWebConfParameterGroup
(
"group1"
,
""
);
IotWebConfNumberParameter
intParam
=
IotWebConfNumberParameter
(
"Int param"
,
"intParam"
,
intParamValue
,
NUMBER_LEN
,
"20"
,
"1..100"
,
"min='1' max='100' step='1'"
);
const
char
config_version
[]
=
"ampel_test_v3"
;
static
const
char
chooserValues
[][
STRING_LEN
]
=
{
"red"
,
"blue"
,
"darkYellow"
};
static
const
char
chooserNames
[][
STRING_LEN
]
=
{
"Red"
,
"Blue"
,
"Dark yellow"
};
iotwebconf
::
TextTParameter
<
STRING_LEN
>
stringParam
=
iotwebconf
::
Builder
<
iotwebconf
::
TextTParameter
<
STRING_LEN
>>
(
"stringParam"
).
label
(
"String param"
).
build
();
iotwebconf
::
ParameterGroup
group1
=
iotwebconf
::
ParameterGroup
(
"group1"
,
""
);
iotwebconf
::
IntTParameter
<
int16_t
>
intParam
=
iotwebconf
::
Builder
<
iotwebconf
::
IntTParameter
<
int16_t
>>
(
"intParam"
).
label
(
"Int param"
).
defaultValue
(
30
).
min
(
1
).
max
(
100
).
step
(
1
).
placeholder
(
"1..100"
).
build
();
// -- We can add a legend to the separator
IotWebConfParameterGroup
group2
=
IotWebConfParameterGroup
(
"c_factor"
,
"Calibration factor"
);
IotWebConfNumberParameter
floatParam
=
IotWebConfNumberParameter
(
"Float param"
,
"floatParam"
,
floatParamValue
,
NUMBER_LEN
,
NULL
,
"e.g. 23.4"
,
"step='0.1'"
);
IotWebConfCheckboxParameter
checkboxParam
=
IotWebConfCheckboxParameter
(
"Check param"
,
"checkParam"
,
checkboxParamValue
,
STRING_LEN
,
true
);
IotWebConfSelectParameter
chooserParam
=
IotWebConfSelectParameter
(
"Choose param"
,
"chooseParam"
,
chooserParamValue
,
STRING_LEN
,
(
char
*
)
chooserValues
,
(
char
*
)
chooserNames
,
sizeof
(
chooserValues
)
/
STRING_LEN
,
STRING_LEN
);
iotwebconf
::
ParameterGroup
group2
=
iotwebconf
::
ParameterGroup
(
"c_factor"
,
"Calibration factor"
);
iotwebconf
::
FloatTParameter
floatParam
=
iotwebconf
::
Builder
<
iotwebconf
::
FloatTParameter
>
(
"floatParam"
).
label
(
"Float param"
).
defaultValue
(
0.0
).
step
(
0.1
).
placeholder
(
"e.g. 23.4"
).
build
();
iotwebconf
::
CheckboxTParameter
checkboxParam
=
iotwebconf
::
Builder
<
iotwebconf
::
CheckboxTParameter
>
(
"checkParam"
).
label
(
"Check param"
).
defaultValue
(
true
).
build
();
iotwebconf
::
SelectTParameter
<
STRING_LEN
>
chooserParam
=
iotwebconf
::
Builder
<
iotwebconf
::
SelectTParameter
<
STRING_LEN
>>
(
"chooseParam"
).
label
(
"Choose param"
).
optionValues
(
(
const
char
*
)
chooserValues
).
optionNames
((
const
char
*
)
chooserNames
).
optionCount
(
sizeof
(
chooserValues
)
/
STRING_LEN
).
nameLength
(
STRING_LEN
).
build
();
void
update
()
{
iotWebConf
->
doLoop
();
// Listen for HTTP requests from clients
...
...
@@ -170,10 +167,16 @@ namespace web_server {
//TODO: Save LoRaWAN key if possible?
//FIXME: Why does MQTT fail? (on ESP32)
Serial
.
println
(
intParamValue
);
// iotWebConf->loadConfig();
Serial
.
println
(
"<<<<<<<<<<<<<<<"
);
Serial
.
println
(
stringParam
.
value
());
Serial
.
println
(
intParam
.
value
());
Serial
.
println
(
floatParam
.
value
());
iotWebConf
->
init
();
Serial
.
println
(
intParamValue
);
Serial
.
println
(
stringParam
.
value
());
Serial
.
println
(
intParam
.
value
());
Serial
.
println
(
floatParam
.
value
());
Serial
.
println
(
">>>>>>>>>>>>>>>"
);
sensor_console
::
defineCommand
(
"reset_config"
,
[]()
{
Serial
.
println
(
F
(
"Resetting config..."
));
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment