Skip to content

Commit 66c7116

Browse files
committed
client: rework apis so that the mender-client registers add-ons and manage them
1 parent 286594c commit 66c7116

File tree

2 files changed

+25
-41
lines changed

2 files changed

+25
-41
lines changed

src/main.c

Lines changed: 24 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,8 @@ static const unsigned char ca_certificate[] = {
5353

5454
#include "mender-client.h"
5555
#include "mender-configure.h"
56-
#include "mender-inventory.h"
5756
#include "mender-flash.h"
57+
#include "mender-inventory.h"
5858
#include "mender-shell.h"
5959
#include "mender-troubleshoot.h"
6060

@@ -126,22 +126,8 @@ authentication_success_cb(void) {
126126

127127
LOG_INF("Mender client authenticated");
128128

129-
/* Activate mender add-ons */
130-
/* The application can activate each add-on depending of the current status of the device */
131-
/* In this example, add-ons are activated has soon as authentication succeeds */
132-
#ifdef CONFIG_MENDER_CLIENT_ADD_ON_CONFIGURE
133-
if (MENDER_OK != (ret = mender_configure_activate())) {
134-
LOG_ERR("Unable to activate configure add-on");
135-
return ret;
136-
}
137-
#endif /* CONFIG_MENDER_CLIENT_ADD_ON_CONFIGURE */
138-
#ifdef CONFIG_MENDER_CLIENT_ADD_ON_INVENTORY
139-
if (MENDER_OK != (ret = mender_inventory_activate())) {
140-
LOG_ERR("Unable to activate inventory add-on");
141-
return ret;
142-
}
143-
#endif /* CONFIG_MENDER_CLIENT_ADD_ON_INVENTORY */
144129
#ifdef CONFIG_MENDER_CLIENT_ADD_ON_TROUBLESHOOT
130+
/* Activate troubleshoot add-on (deactivated by default) */
145131
if (MENDER_OK != (ret = mender_troubleshoot_activate())) {
146132
LOG_ERR("Unable to activate troubleshoot add-on");
147133
return ret;
@@ -150,6 +136,7 @@ authentication_success_cb(void) {
150136

151137
/* Validate the image if it is still pending */
152138
/* Note it is possible to do multiple diagnosic tests before validating the image */
139+
/* In this example, authentication success with the mender-server is enough */
153140
if (MENDER_OK != (ret = mender_flash_confirm_image())) {
154141
LOG_ERR("Unable to validate the image");
155142
return ret;
@@ -169,7 +156,7 @@ authentication_failure_cb(void) {
169156

170157
/* Check if confirmation of the image is still pending */
171158
if (true == mender_flash_is_image_confirmed()) {
172-
LOG_ERR("Mender client authentication failed");
159+
LOG_INF("Mender client authentication failed");
173160
return MENDER_OK;
174161
}
175162

@@ -311,20 +298,24 @@ main(void) {
311298
.config_updated = config_updated_cb,
312299
#endif /* CONFIG_MENDER_CLIENT_CONFIGURE_STORAGE */
313300
};
314-
assert(MENDER_OK == mender_configure_init(&mender_configure_config, &mender_configure_callbacks));
315-
LOG_INF("Mender configure initialized");
301+
assert(MENDER_OK
302+
== mender_client_register_addon(
303+
(mender_addon_instance_t *)&mender_configure_addon_instance, (void *)&mender_configure_config, (void *)&mender_configure_callbacks));
304+
LOG_INF("Mender configure add-on registered");
316305
#endif /* CONFIG_MENDER_CLIENT_ADD_ON_CONFIGURE */
317306
#ifdef CONFIG_MENDER_CLIENT_ADD_ON_INVENTORY
318307
mender_inventory_config_t mender_inventory_config = { .refresh_interval = 0 };
319-
assert(MENDER_OK == mender_inventory_init(&mender_inventory_config));
320-
LOG_INF("Mender inventory initialized");
308+
assert(MENDER_OK == mender_client_register_addon((mender_addon_instance_t *)&mender_inventory_addon_instance, (void *)&mender_inventory_config, NULL));
309+
LOG_INF("Mender inventory add-on registered");
321310
#endif /* CONFIG_MENDER_CLIENT_ADD_ON_INVENTORY */
322311
#ifdef CONFIG_MENDER_CLIENT_ADD_ON_TROUBLESHOOT
323312
mender_troubleshoot_config_t mender_troubleshoot_config = { .healthcheck_interval = 0 };
324313
mender_troubleshoot_callbacks_t mender_troubleshoot_callbacks
325-
= { .shell_begin = mender_shell_begin, .shell_resize = mender_shell_resize, .shell_write = mender_shell_write, .shell_end = mender_shell_end };
326-
assert(MENDER_OK == mender_troubleshoot_init(&mender_troubleshoot_config, &mender_troubleshoot_callbacks));
327-
LOG_INF("Mender troubleshoot initialized");
314+
= { .shell_begin = shell_begin_cb, .shell_resize = shell_resize_cb, .shell_write = shell_write_cb, .shell_end = shell_end_cb };
315+
assert(MENDER_OK
316+
== mender_client_register_addon(
317+
(mender_addon_instance_t *)&mender_troubleshoot_addon_instance, (void *)&mender_troubleshoot_config, (void *)&mender_troubleshoot_callbacks));
318+
LOG_INF("Mender troubleshoot add-on registered");
328319
#endif /* CONFIG_MENDER_CLIENT_ADD_ON_TROUBLESHOOT */
329320

330321
#ifdef CONFIG_MENDER_CLIENT_ADD_ON_CONFIGURE
@@ -355,26 +346,19 @@ main(void) {
355346
}
356347
#endif /* CONFIG_MENDER_CLIENT_ADD_ON_INVENTORY */
357348

349+
/* Finally activate mender client */
350+
if (MENDER_OK != mender_client_activate()) {
351+
LOG_ERR("Unable to activate mender-client");
352+
goto RELEASE;
353+
}
354+
358355
/* Wait for mender-mcu-client events */
359356
k_event_wait_all(&mender_client_events, MENDER_CLIENT_EVENT_RESTART, false, K_FOREVER);
360357

361-
/* Deactivate mender add-ons */
362-
#ifdef CONFIG_MENDER_CLIENT_ADD_ON_TROUBLESHOOT
363-
mender_troubleshoot_deactivate();
364-
#endif /* CONFIG_MENDER_CLIENT_ADD_ON_TROUBLESHOOT */
365-
366-
/* Release mender add-ons */
367-
#ifdef CONFIG_MENDER_CLIENT_ADD_ON_TROUBLESHOOT
368-
mender_troubleshoot_exit();
369-
#endif /* CONFIG_MENDER_CLIENT_ADD_ON_TROUBLESHOOT */
370-
#ifdef CONFIG_MENDER_CLIENT_ADD_ON_INVENTORY
371-
mender_inventory_exit();
372-
#endif /* CONFIG_MENDER_CLIENT_ADD_ON_INVENTORY */
373-
#ifdef CONFIG_MENDER_CLIENT_ADD_ON_CONFIGURE
374-
mender_configure_exit();
375-
#endif /* CONFIG_MENDER_CLIENT_ADD_ON_CONFIGURE */
358+
RELEASE:
376359

377-
/* Release mender-client */
360+
/* Deactivate and release mender-client */
361+
mender_client_deactivate();
378362
mender_client_exit();
379363

380364
/* Restart */

0 commit comments

Comments
 (0)