Skip to content

Commit 6f90a67

Browse files
committed
ci: fix
fix ci Signed-off-by: Simen S. Røstad <simen.rostad@nordicsemi.no>
1 parent c57f3d2 commit 6f90a67

File tree

3 files changed

+95
-98
lines changed

3 files changed

+95
-98
lines changed

app/src/common/message_channel.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ struct configuration {
7575
bool update_interval_present;
7676
};
7777

78-
#define MSG_TO_CONFIGURATION(_msg) ((const struct configuration *)_msg)
78+
#define MSG_TO_CONFIGURATION(_msg) (*(const struct configuration *)_msg)
7979

8080
ZBUS_CHAN_DECLARE(
8181
CONFIG_CHAN,

app/src/main.c

+87-90
Original file line numberDiff line numberDiff line change
@@ -27,17 +27,23 @@
2727

2828
#if defined(CONFIG_APP_POWER)
2929
#include "power.h"
30-
#define BAT_MSG_SIZE sizeof(struct power_msg)
30+
#define POWER_MSG_SIZE sizeof(struct power_msg)
3131
#else
32-
#define BAT_MSG_SIZE 0
32+
#define POWER_MSG_SIZE 0
3333
#endif /* CONFIG_APP_POWER */
3434

3535
/* Register log module */
3636
LOG_MODULE_REGISTER(main, CONFIG_APP_LOG_LEVEL);
3737

3838
#define MAX_MSG_SIZE (MAX(sizeof(struct configuration), \
3939
MAX(sizeof(struct cloud_payload), \
40-
MAX(sizeof(struct network_msg), BAT_MSG_SIZE))))
40+
/* Button channel payload size */ \
41+
MAX(sizeof(uint8_t), \
42+
/* Timer channel payload size */ \
43+
MAX(sizeof(int), \
44+
MAX(sizeof(enum fota_msg_type), \
45+
MAX(sizeof(enum location_msg_type), \
46+
MAX(sizeof(struct network_msg), POWER_MSG_SIZE))))))))
4147

4248
/* Register subscriber */
4349
ZBUS_MSG_SUBSCRIBER_DEFINE(main_subscriber);
@@ -134,23 +140,8 @@ struct main_state {
134140
/* Trigger interval */
135141
uint64_t interval_sec;
136142

137-
/* Button number */
138-
uint8_t button_number;
139-
140-
/* Time available */
141-
enum time_status time_status;
142-
143-
/* Cloud status */
144-
enum cloud_msg_type status;
145-
146-
/* FOTA status */
147-
enum fota_msg_type fota_status;
148-
149-
/* Network status */
150-
enum network_msg_type network_status;
151-
152-
/* Location status */
153-
enum location_msg_type location_status;
143+
/* Cloud connection status */
144+
bool connected;
154145
};
155146

156147
/* Construct state table */
@@ -327,9 +318,7 @@ static void running_entry(void *o)
327318

328319
LOG_DBG("%s", __func__);
329320

330-
if (state_object->status == CLOUD_CONNECTED_READY_TO_SEND ||
331-
state_object->status == CLOUD_PAYLOAD_JSON ||
332-
state_object->status == CLOUD_POLL_SHADOW) {
321+
if (state_object->connected) {
333322
smf_set_state(SMF_CTX(state_object), &states[STATE_TRIGGERING]);
334323
return;
335324
}
@@ -341,10 +330,13 @@ static void running_run(void *o)
341330
{
342331
const struct main_state *state_object = (const struct main_state *)o;
343332

344-
if (state_object->chan == &FOTA_CHAN &&
345-
state_object->fota_status == FOTA_DOWNLOADING_UPDATE) {
346-
smf_set_state(SMF_CTX(state_object), &states[STATE_FOTA]);
347-
return;
333+
if (state_object->chan == &FOTA_CHAN) {
334+
enum fota_msg_type msg = MSG_TO_FOTA_TYPE(state_object->msg_buf);
335+
336+
if (msg == FOTA_DOWNLOADING_UPDATE) {
337+
smf_set_state(SMF_CTX(state_object), &states[STATE_FOTA]);
338+
return;
339+
}
348340
}
349341
}
350342

@@ -382,12 +374,16 @@ static void idle_entry(void *o)
382374

383375
static void idle_run(void *o)
384376
{
385-
const struct main_state *state_object = (const struct main_state *)o;
377+
struct main_state *state_object = o;
386378

387-
if ((state_object->chan == &CLOUD_CHAN) &&
388-
(state_object->status == CLOUD_CONNECTED_READY_TO_SEND)) {
389-
smf_set_state(SMF_CTX(state_object), &states[STATE_TRIGGERING]);
390-
return;
379+
if (state_object->chan == &CLOUD_CHAN) {
380+
struct cloud_msg msg = MSG_TO_CLOUD_MSG(state_object->msg_buf);
381+
382+
if (msg.type == CLOUD_CONNECTED_READY_TO_SEND) {
383+
state_object->connected = true;
384+
smf_set_state(SMF_CTX(state_object), &states[STATE_TRIGGERING]);
385+
return;
386+
}
391387
}
392388
}
393389

@@ -425,19 +421,30 @@ static void triggering_entry(void *o)
425421

426422
static void triggering_run(void *o)
427423
{
428-
const struct main_state *state_object = (const struct main_state *)o;
424+
struct main_state *state_object = o;
429425

430-
if ((state_object->chan == &CLOUD_CHAN) &&
431-
((state_object->status == CLOUD_CONNECTED_PAUSED) ||
432-
(state_object->status == CLOUD_DISCONNECTED))) {
433-
smf_set_state(SMF_CTX(state_object), &states[STATE_IDLE]);
434-
return;
426+
if ((state_object->chan == &CLOUD_CHAN)) {
427+
struct cloud_msg msg = MSG_TO_CLOUD_MSG(state_object->msg_buf);
428+
429+
if ((msg.type == CLOUD_CONNECTED_PAUSED) ||
430+
(msg.type == CLOUD_DISCONNECTED)) {
431+
state_object->connected = false;
432+
smf_set_state(SMF_CTX(state_object), &states[STATE_IDLE]);
433+
return;
434+
}
435435
}
436436

437437
if (state_object->chan == &CONFIG_CHAN) {
438-
LOG_DBG("Configuration update, new interval: %lld", state_object->interval_sec);
439-
k_work_reschedule(&trigger_work, K_SECONDS(state_object->interval_sec));
440-
return;
438+
struct configuration config = MSG_TO_CONFIGURATION(state_object->msg_buf);
439+
440+
if (config.config_present) {
441+
LOG_DBG("Configuration update, new interval: %lld", config.update_interval);
442+
443+
state_object->interval_sec = config.update_interval;
444+
445+
k_work_reschedule(&trigger_work, K_SECONDS(state_object->interval_sec));
446+
return;
447+
}
441448
}
442449
}
443450

@@ -464,10 +471,13 @@ static void requesting_location_run(void *o)
464471
{
465472
const struct main_state *state_object = (const struct main_state *)o;
466473

467-
if (state_object->chan == &LOCATION_CHAN &&
468-
(state_object->location_status == LOCATION_SEARCH_DONE)) {
469-
smf_set_state(SMF_CTX(state_object), &states[STATE_REQUESTING_SENSORS_AND_POLLING]);
470-
return;
474+
if (state_object->chan == &LOCATION_CHAN) {
475+
enum location_msg_type msg = MSG_TO_LOCATION_TYPE(state_object->msg_buf);
476+
477+
if (msg == LOCATION_SEARCH_DONE) {
478+
smf_set_state(SMF_CTX(state_object), &states[STATE_REQUESTING_SENSORS_AND_POLLING]);
479+
return;
480+
}
471481
}
472482

473483
if (state_object->chan == &BUTTON_CHAN) {
@@ -531,7 +541,9 @@ static void fota_run(void *o)
531541
const struct main_state *state_object = (const struct main_state *)o;
532542

533543
if (state_object->chan == &FOTA_CHAN) {
534-
switch (state_object->fota_status) {
544+
enum fota_msg_type msg = MSG_TO_FOTA_TYPE(state_object->msg_buf);
545+
546+
switch (msg) {
535547
case FOTA_DOWNLOAD_CANCELED:
536548
__fallthrough;
537549
case FOTA_DOWNLOAD_TIMED_OUT:
@@ -553,7 +565,9 @@ static void fota_downloading_run(void *o)
553565
const struct main_state *state_object = (const struct main_state *)o;
554566

555567
if (state_object->chan == &FOTA_CHAN) {
556-
switch (state_object->fota_status) {
568+
enum fota_msg_type msg = MSG_TO_FOTA_TYPE(state_object->msg_buf);
569+
570+
switch (msg) {
557571
case FOTA_SUCCESS_REBOOT_NEEDED:
558572
smf_set_state(SMF_CTX(state_object),
559573
&states[STATE_FOTA_NETWORK_DISCONNECT]);
@@ -592,10 +606,13 @@ static void fota_network_disconnect_run(void *o)
592606
{
593607
const struct main_state *state_object = (const struct main_state *)o;
594608

595-
if (state_object->chan == &NETWORK_CHAN &&
596-
state_object->network_status == NETWORK_DISCONNECTED) {
597-
smf_set_state(SMF_CTX(state_object), &states[STATE_FOTA_REBOOTING]);
598-
return;
609+
if (state_object->chan == &NETWORK_CHAN) {
610+
struct network_msg msg = MSG_TO_NETWORK_MSG(state_object->msg_buf);
611+
612+
if (msg.type == NETWORK_DISCONNECTED) {
613+
smf_set_state(SMF_CTX(state_object), &states[STATE_FOTA_REBOOTING]);
614+
return;
615+
}
599616
}
600617
}
601618

@@ -623,22 +640,28 @@ static void fota_applying_image_run(void *o)
623640
{
624641
const struct main_state *state_object = (const struct main_state *)o;
625642

626-
if (state_object->chan == &NETWORK_CHAN &&
627-
state_object->network_status == NETWORK_DISCONNECTED) {
643+
if (state_object->chan == &NETWORK_CHAN) {
644+
struct network_msg msg = MSG_TO_NETWORK_MSG(state_object->msg_buf);
628645

629-
int err;
630-
enum fota_msg_type msg = FOTA_IMAGE_APPLY;
646+
if (msg.type == NETWORK_DISCONNECTED) {
631647

632-
err = zbus_chan_pub(&FOTA_CHAN, &msg, K_SECONDS(1));
633-
if (err) {
634-
LOG_ERR("zbus_chan_pub, error: %d", err);
635-
SEND_FATAL_ERROR();
648+
int err;
649+
enum fota_msg_type msg = FOTA_IMAGE_APPLY;
650+
651+
err = zbus_chan_pub(&FOTA_CHAN, &msg, K_SECONDS(1));
652+
if (err) {
653+
LOG_ERR("zbus_chan_pub, error: %d", err);
654+
SEND_FATAL_ERROR();
655+
}
636656
}
637657

638-
} else if (state_object->chan == &FOTA_CHAN &&
639-
state_object->fota_status == FOTA_SUCCESS_REBOOT_NEEDED) {
640-
smf_set_state(SMF_CTX(state_object), &states[STATE_FOTA_REBOOTING]);
641-
return;
658+
} else if (state_object->chan == &FOTA_CHAN) {
659+
enum fota_msg_type msg = MSG_TO_FOTA_TYPE(state_object->msg_buf);
660+
661+
if (msg == FOTA_SUCCESS_REBOOT_NEEDED) {
662+
smf_set_state(SMF_CTX(state_object), &states[STATE_FOTA_REBOOTING]);
663+
return;
664+
}
642665
}
643666
}
644667

@@ -669,7 +692,7 @@ int main(void)
669692
const uint32_t execution_time_ms =
670693
(CONFIG_APP_MSG_PROCESSING_TIMEOUT_SECONDS * MSEC_PER_SEC);
671694
const k_timeout_t zbus_wait_ms = K_MSEC(wdt_timeout_ms - execution_time_ms);
672-
struct main_state main_state;
695+
struct main_state main_state = { 0 };
673696

674697
main_state.interval_sec = CONFIG_APP_MODULE_TRIGGER_TIMEOUT_SECONDS;
675698

@@ -699,32 +722,6 @@ int main(void)
699722
return err;
700723
}
701724

702-
/* Copy corresponding data to the state object depending on the incoming channel */
703-
if (&CONFIG_CHAN == main_state.chan) {
704-
const struct configuration *config = zbus_chan_const_msg(main_state.chan);
705-
706-
if (config->update_interval_present) {
707-
main_state.interval_sec = config->update_interval;
708-
}
709-
} else if (&CLOUD_CHAN == main_state.chan) {
710-
const struct cloud_msg *cloud_msg = zbus_chan_const_msg(main_state.chan);
711-
712-
main_state.status = cloud_msg->type;
713-
} else if (&FOTA_CHAN == main_state.chan) {
714-
const enum fota_msg_type *status = zbus_chan_const_msg(main_state.chan);
715-
716-
main_state.fota_status = *status;
717-
} else if (&NETWORK_CHAN == main_state.chan) {
718-
const struct network_msg *msg = zbus_chan_const_msg(main_state.chan);
719-
720-
main_state.network_status = msg->type;
721-
} else if (&LOCATION_CHAN == main_state.chan) {
722-
const enum location_msg_type *msg = zbus_chan_const_msg(main_state.chan);
723-
724-
main_state.location_status = *msg;
725-
}
726-
727-
/* State object updated, run SMF */
728725
err = smf_run_state(SMF_CTX(&main_state));
729726
if (err) {
730727
LOG_ERR("smf_run_state(), error: %d", err);

app/src/modules/fota/fota.c

+7-7
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ enum fota_module_state {
6262
/* The module is waiting for the event FOTA_IMAGE_APPLY to apply the image */
6363
STATE_WAITING_FOR_IMAGE_APPLY,
6464
/* The FOTA module is waiting for a reboot */
65-
STATE_REBOOT_NEEDED,
65+
STATE_REBOOT_PENDING,
6666
/* The FOTA module is canceling the job */
6767
STATE_CANCELING,
6868
};
@@ -100,7 +100,7 @@ static void state_downloading_update_run(void *o);
100100
static void state_waiting_for_image_apply_entry(void *o);
101101
static void state_waiting_for_image_apply_run(void *o);
102102

103-
static void state_reboot_needed_entry(void *o);
103+
static void state_reboot_pending_entry(void *o);
104104

105105
static void state_canceling_entry(void *o);
106106
static void state_canceling_run(void *o);
@@ -136,8 +136,8 @@ static const struct smf_state states[] = {
136136
NULL,
137137
&states[STATE_RUNNING],
138138
NULL),
139-
[STATE_REBOOT_NEEDED] =
140-
SMF_CREATE_STATE(state_reboot_needed_entry,
139+
[STATE_REBOOT_PENDING] =
140+
SMF_CREATE_STATE(state_reboot_pending_entry,
141141
NULL,
142142
NULL,
143143
&states[STATE_RUNNING],
@@ -375,7 +375,7 @@ static void state_downloading_update_run(void *o)
375375
&states[STATE_WAITING_FOR_IMAGE_APPLY]);
376376
break;
377377
case FOTA_SUCCESS_REBOOT_NEEDED:
378-
smf_set_state(SMF_CTX(state_object), &states[STATE_REBOOT_NEEDED]);
378+
smf_set_state(SMF_CTX(state_object), &states[STATE_REBOOT_PENDING]);
379379
break;
380380
case FOTA_DOWNLOAD_CANCELED:
381381
__fallthrough;
@@ -421,7 +421,7 @@ static void state_waiting_for_image_apply_run(void *o)
421421

422422
break;
423423
case FOTA_SUCCESS_REBOOT_NEEDED:
424-
smf_set_state(SMF_CTX(state_object), &states[STATE_REBOOT_NEEDED]);
424+
smf_set_state(SMF_CTX(state_object), &states[STATE_REBOOT_PENDING]);
425425
break;
426426
default:
427427
/* Don't care */
@@ -430,7 +430,7 @@ static void state_waiting_for_image_apply_run(void *o)
430430
}
431431
}
432432

433-
static void state_reboot_needed_entry(void *o)
433+
static void state_reboot_pending_entry(void *o)
434434
{
435435
ARG_UNUSED(o);
436436

0 commit comments

Comments
 (0)