-
Notifications
You must be signed in to change notification settings - Fork 2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Sys Runtime Configuration Registry #19895
base: master
Are you sure you want to change the base?
Changes from 22 commits
6aa217a
a12ae66
55be440
cc16efb
f38a736
cd6cd1b
e04a3c5
23ad414
8df46ed
b5ebf73
c559924
99aa25f
786f823
63562cd
47dd545
54e5f9a
502e658
d858212
52f0169
35abb4a
52d208d
40a98a7
3fa904b
efc7a94
111d73c
7b046d0
0674a1a
bf1438d
2f84e38
587d504
ba1d4c4
a70d725
49be2f9
8b00112
938b2b8
7129ca1
34a70b4
749d51a
4d40b09
75842a4
7f42945
f1cbcf5
5675174
845bf27
423d209
bdfc315
9d8da13
66a8e2b
1828302
2d88670
fb8e41e
671acff
f2b82ee
b668ccb
06adb07
0d91422
f7e4008
4a9c124
f9d8c3e
9444fe8
4f9283c
3614909
265043f
491733a
3b3734f
4e28f6a
6820c2b
3dfcd91
e8424e9
74b0a34
c252ad2
909b2f1
2f6eaad
e58fb66
57682a1
dc430db
8c9bbae
d548e02
130d1b5
3204ad6
38c6dc1
95e3ea2
b61abb0
49e643a
3e638c1
f0d6792
50f08d4
9289095
28bad94
b57f297
f74ed61
77937f8
c7d840e
082d89d
82b088a
b73f712
64bfdd9
714e7a3
68a0716
3bd0c7b
1438aa7
b0d8b3b
fc599ed
2de13de
b7577c6
0410dbd
ba4533d
f233a27
8999642
958157c
305fc97
a927ce3
500e7ef
91006b6
fd87b09
d9a7f68
f68fbb1
6102a76
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
# name of the application | ||
APPLICATION = registry_example_cli | ||
|
||
# If no BOARD is found in the environment, use this default: | ||
BOARD ?= native | ||
|
||
# This has to be the absolute path to the RIOT base directory: | ||
RIOTBASE ?= $(CURDIR)/../.. | ||
|
||
# required modules | ||
USEMODULE += shell | ||
USEMODULE += shell_cmds_default | ||
|
||
USEMODULE += littlefs2 | ||
USEMODULE += mtd | ||
|
||
USEMODULE += registry_string_path | ||
USEMODULE += registry_storage_vfs | ||
USEMODULE += registry_namespace_sys_rgb_led | ||
USEMODULE += registry_namespace_tests_full | ||
USEMODULE += registry_namespace_tests_nested | ||
|
||
# Comment this out to disable code in RIOT that does safety checking | ||
# which is not needed in a production environment but helps in the | ||
# development process: | ||
DEVELHELP ?= 1 | ||
|
||
# Change this to 0 show compiler invocation lines by default: | ||
QUIET ?= 1 | ||
|
||
include $(RIOTBASE)/Makefile.include |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,127 @@ | ||
/* | ||
* Copyright (C) 2023 HAW Hamburg | ||
* | ||
* This file is subject to the terms and conditions of the GNU Lesser | ||
* General Public License v2.1. See the file LICENSE in the top level | ||
* directory for more details. | ||
*/ | ||
|
||
/** | ||
* @ingroup examples | ||
* @{ | ||
* | ||
* @file | ||
* @brief RIOT Registry example application | ||
* | ||
* @author Lasse Rosenow <[email protected]> | ||
* | ||
* @} | ||
*/ | ||
|
||
#include <string.h> | ||
#include <stdio.h> | ||
|
||
#include "msg.h" | ||
#include "shell.h" | ||
#include "board.h" | ||
#include "mtd.h" | ||
#include "vfs.h" | ||
#include "fs/littlefs2_fs.h" | ||
#include "registry.h" | ||
#include "registry/namespace/sys.h" | ||
#include "registry/namespace/sys/rgb_led.h" | ||
#include "registry/storage.h" | ||
#include "registry/string_path.h" | ||
#include "registry/namespace/tests.h" | ||
#include "registry/namespace/tests/nested.h" | ||
|
||
int rgb_led_instance_0_commit_cb(const registry_commit_cb_scope_t scope, | ||
const registry_group_or_parameter_id_t *group_or_parameter_id, | ||
const void *context) | ||
{ | ||
(void)scope; | ||
(void)context; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. As this is an example, why not show how the parameters There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. For the registry cli the There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Apart from that this should be fixed |
||
printf("RGB instance commit_cb was executed on "); | ||
|
||
if (group_or_parameter_id != NULL) { | ||
printf("param: %d", *group_or_parameter_id); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. How about also printing the value of the committed parameter here? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Done |
||
} | ||
else { | ||
printf("whole instance"); | ||
} | ||
|
||
printf("\n"); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. No separate call needed, the There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Fixed |
||
|
||
return 0; | ||
} | ||
|
||
registry_sys_rgb_led_instance_t rgb_led_instance_0_data = { | ||
.red = 0, | ||
.green = 255, | ||
.blue = 70, | ||
}; | ||
registry_instance_t rgb_led_instance_0 = { | ||
.name = "rgb-0", | ||
.data = &rgb_led_instance_0_data, | ||
.commit_cb = &rgb_led_instance_0_commit_cb, | ||
}; | ||
|
||
registry_sys_rgb_led_instance_t rgb_led_instance_1_data = { | ||
.red = 90, | ||
.green = 4, | ||
.blue = 0, | ||
}; | ||
registry_instance_t rgb_led_instance_1 = { | ||
.name = "rgb-1", | ||
.data = &rgb_led_instance_1_data, | ||
.commit_cb = &rgb_led_instance_0_commit_cb, | ||
}; | ||
|
||
static littlefs2_desc_t fs_desc = { | ||
.lock = MUTEX_INIT, | ||
}; | ||
|
||
static vfs_mount_t _vfs_mount = { | ||
.fs = &littlefs2_file_system, | ||
.mount_point = "/sda", | ||
.private_data = &fs_desc, | ||
}; | ||
|
||
static registry_storage_instance_t vfs_instance = { | ||
.storage = ®istry_storage_vfs, | ||
.data = &_vfs_mount, | ||
}; | ||
|
||
REGISTRY_ADD_STORAGE_SOURCE(vfs_instance); | ||
REGISTRY_SET_STORAGE_DESTINATION(vfs_instance); | ||
|
||
static registry_tests_nested_instance_t test_nested_instance_data = { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It is a bit unclear what this is meant to show. Some more explicit and verbose documentation would help to not leave room for different interpretations of self-explaining code. Its an example after all. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I added some comments to explain more in the whole example. |
||
.parameter = 9, | ||
.group_parameter = 5, | ||
}; | ||
|
||
static registry_instance_t test_nested_instance = { | ||
.name = "instance-1", | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. is there a more speaking name for this? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I removed this instance, because it uses a schema that I want to move to the unit test folder. |
||
.data = &test_nested_instance_data, | ||
.commit_cb = NULL, | ||
}; | ||
|
||
int main(void) | ||
{ | ||
registry_init(); | ||
|
||
/* init schemas */ | ||
registry_add_schema_instance(®istry_sys_rgb_led, &rgb_led_instance_0); | ||
registry_add_schema_instance(®istry_sys_rgb_led, &rgb_led_instance_1); | ||
registry_add_schema_instance(®istry_tests_nested, &test_nested_instance); | ||
|
||
/* init storage */ | ||
#if IS_USED(MODULE_LITTLEFS2) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Nit: since the registry is a user of the storage I'd move the storage init before the registry init, even if it isn' strictly required (yet). But maybe that's just me :) There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Done :) |
||
fs_desc.dev = MTD_0; | ||
#endif | ||
|
||
/* init and run CLI */ | ||
char line_buf[SHELL_DEFAULT_BUFSIZE]; | ||
shell_run(NULL, line_buf, sizeof(line_buf)); | ||
return 0; | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
# name of the application | ||
APPLICATION = registry_example_core | ||
|
||
# If no BOARD is found in the environment, use this default: | ||
BOARD ?= native | ||
|
||
# This has to be the absolute path to the RIOT base directory: | ||
RIOTBASE ?= $(CURDIR)/../.. | ||
|
||
# required modules | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. For an example it doesn't hurt to say what is the reason for enabling a specific module. That it is required for the example is obvious, but what is the exact effect related to enabling this module? I.e., "Activate the namespace /sys/board/led/", "Enable the default registry configurations for the board led" or something like that. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Done |
||
USEMODULE += registry_namespace_sys_board_led | ||
USEMODULE += ztimer_msec | ||
|
||
# Comment this out to disable code in RIOT that does safety checking | ||
# which is not needed in a production environment but helps in the | ||
# development process: | ||
DEVELHELP ?= 1 | ||
|
||
# Change this to 0 show compiler invocation lines by default: | ||
QUIET ?= 1 | ||
|
||
include $(RIOTBASE)/Makefile.include |
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -0,0 +1,107 @@ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
/* | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
* Copyright (C) 2023 HAW Hamburg | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
* | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
* This file is subject to the terms and conditions of the GNU Lesser | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
* General Public License v2.1. See the file LICENSE in the top level | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
* directory for more details. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
*/ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
/** | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
* @ingroup examples | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
* @{ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
* | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
* @file | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
* @brief RIOT Registry example application | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. As there is another registry example the description could be more specific to "registry core" or "led". Also, a few short sentences (below this brief field) would be nice to wrap up the example functionality. Alternatively/additionally a thorough README.md is always appreciated to understand what the example does and how to use it. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Done |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
* | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
* @author Lasse Rosenow <[email protected]> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
* | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
* @} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
*/ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#include <string.h> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#include <stdio.h> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#include <unistd.h> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#include "periph_cpu.h" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#include "led.h" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. In theory There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I did have some problems when building for |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#include "board.h" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#include "registry.h" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#include "registry/namespace/sys.h" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#include "registry/namespace/sys/board_led.h" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#include "ztimer.h" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
int board_led_instance_0_commit_cb(const registry_commit_cb_scope_t scope, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
const registry_group_or_parameter_id_t *group_or_parameter_id, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
const void *context); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
/* This belongs into the BOARD or Driver for example */ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
registry_sys_board_led_instance_t board_led_instance_0_data = { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
.enabled = 0, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
registry_instance_t board_led_instance = { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
.data = &board_led_instance_0_data, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
.commit_cb = &board_led_instance_0_commit_cb, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
int board_led_instance_0_commit_cb(const registry_commit_cb_scope_t scope, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
const registry_group_or_parameter_id_t *group_or_parameter_id, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
const void *context) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
{ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(void)scope; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(void)context; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if (group_or_parameter_id != NULL) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if (*group_or_parameter_id == REGISTRY_SYS_BOARD_LED_ENABLED) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
/* The Driver owns the board_led data instance, so we can just get our value from there */ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
bool led_state = board_led_instance_0_data.enabled; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
/* Turn the LED on or off depending on the led_state */ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if (led_state == true) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
/* This is the commit_cb function of instance 0, so we toggle LED 0 as well */ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
LED_ON(0); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} else { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
LED_OFF(0); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
else { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
/* The whole instance got committed in one go, so apply all parameters (BOARD_LED has only one anyways)*/ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
bool led_state = board_led_instance_0_data.enabled; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if (led_state == true) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
LED_ON(0); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} else { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
LED_OFF(0); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This can be simplified because both cases do the same. If you explicitly want to showcase the difference between instance and param commits I propose to extend the example case to a scenario where both cases actually differ.
Suggested change
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Done |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return 0; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
/* This belongs into our main application */ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
int main(void) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
{ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
registry_init(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
/* init schemas */ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
registry_add_schema_instance(®istry_sys_board_led, &board_led_instance); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
bool board_led_enabled = false; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
while (true) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
/* Invert the BOARD LED, to make it turn on and off on each subsequent cycle */ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
board_led_enabled = !board_led_enabled; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
/* Set new registry value */ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
registry_set(&board_led_instance, ®istry_sys_board_led_enabled, &board_led_enabled, sizeof(board_led_enabled)); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
/* Apply the registry value to change the LED state (calls the commit_cb function implemented by the BOARD for example)*/ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The commit function that is called in this case is not implemented by the board and is actually defined in this file. I assume you wanted to hint that this could be implemented within board code in the future. I'd just stick to what the example actually does and leave that aspect to more general documentation. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Done |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
registry_commit_parameter(&board_led_instance, ®istry_sys_board_led_enabled); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
/* Sleep for 1 second and then do it again*/ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ztimer_sleep(ZTIMER_MSEC, 1000); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return 0; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
the name includes
ìnstance_0
here, even though it is used for 0 and 1.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I agree I should correct this example
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I decided to just rename it and added some explanation as to why both use the same function.