Skip to content

Commit cb1cada

Browse files
app: remove TRIGGER_MODE_CHAN
TRIGGER_MODE_CHAN is a relic from the past, remove. Signed-off-by: Giacomo Dematteis <giacomo.dematteis@nordicsemi.no>
1 parent efb04fb commit cb1cada

File tree

5 files changed

+15
-165
lines changed

5 files changed

+15
-165
lines changed

app/src/common/message_channel.c

-8
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,6 @@ ZBUS_CHAN_DEFINE(TRIGGER_CHAN,
1818
ZBUS_MSG_INIT(0)
1919
);
2020

21-
ZBUS_CHAN_DEFINE(TRIGGER_MODE_CHAN,
22-
enum trigger_mode,
23-
NULL,
24-
NULL,
25-
ZBUS_OBSERVERS_EMPTY,
26-
ZBUS_MSG_INIT(0)
27-
);
28-
2921
ZBUS_CHAN_DEFINE(FOTA_STATUS_CHAN,
3022
enum fota_status,
3123
NULL,

app/src/common/message_channel.h

-6
Original file line numberDiff line numberDiff line change
@@ -185,11 +185,6 @@ enum trigger_type {
185185

186186
#define MSG_TO_TRIGGER_TYPE(_msg) (*(const enum trigger_type *)_msg)
187187

188-
enum trigger_mode {
189-
TRIGGER_MODE_POLL = 0x1,
190-
TRIGGER_MODE_NORMAL,
191-
};
192-
193188
enum time_status {
194189
TIME_AVAILABLE = 0x1,
195190
};
@@ -254,7 +249,6 @@ ZBUS_CHAN_DECLARE(
254249
NETWORK_CHAN,
255250
TIME_CHAN,
256251
TRIGGER_CHAN,
257-
TRIGGER_MODE_CHAN,
258252
LOCATION_CHAN
259253
);
260254

app/src/modules/app/app.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ static const struct smf_state states[] = {
8787
)
8888
};
8989

90-
/* State ovject for the app module.
90+
/* State object for the app module.
9191
* Used to transfer data between state changes.
9292
*/
9393
static struct state_object {

app/src/modules/led/led.c

+14-112
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ ZBUS_LISTENER_DEFINE(led, led_callback);
2727
ZBUS_CHAN_ADD_OBS(ERROR_CHAN, led, 0);
2828
ZBUS_CHAN_ADD_OBS(CONFIG_CHAN, led, 0);
2929
ZBUS_CHAN_ADD_OBS(NETWORK_CHAN, led, 0);
30-
ZBUS_CHAN_ADD_OBS(TRIGGER_MODE_CHAN, led, 0);
3130
ZBUS_CHAN_ADD_OBS(LOCATION_CHAN, led, 0);
3231

3332
/* Zephyr SMF states */
@@ -37,10 +36,6 @@ enum state {
3736
STATE_LED_SET,
3837
/* Sub-state to STATE_RUNNING */
3938
STATE_LED_NOT_SET,
40-
/* Sub-state to STATE_LED_NOT_SET */
41-
STATE_POLL,
42-
/* Sub-state to STATE_LED_NOT_SET */
43-
STATE_NORMAL,
4439
STATE_ERROR,
4540
};
4641

@@ -73,9 +68,6 @@ struct s_object {
7368
/* This must be first */
7469
struct smf_ctx ctx;
7570

76-
/* Trigger mode */
77-
enum trigger_mode mode;
78-
7971
/* Network status */
8072
enum network_msg_type status;
8173

@@ -240,11 +232,8 @@ static void on_network_disconnected(void)
240232
* - STATE_RUNNING: Initial state, the module is running
241233
* - STATE_LED_SET: LED is configured by the user
242234
* - STATE_LED_NOT_SET: LED is not configured by the user, operational pattern is displayed
243-
* - STATE_POLL: Poll pattern or location search pattern is displayed depending on
244-
the location status
245-
* - STATE_NORMAL: Led is off or location search pattern is displayed depending on
246-
* the location status
247-
* - STATE_ERROR: An error has occured
235+
* (LED off or location search pattern)
236+
* - STATE_ERROR: An error has occurred
248237
*/
249238

250239
/* STATE_RUNNING */
@@ -266,7 +255,6 @@ static void running_run(void *o)
266255
}
267256

268257
if (&NETWORK_CHAN == user_object->chan && user_object->status == NETWORK_CONNECTED) {
269-
270258
/* If the network is connected, we just reenter the same state */
271259
smf_set_state(SMF_CTX(user_object), &states[STATE_RUNNING]);
272260
return;
@@ -299,67 +287,44 @@ static void led_set_running(void *o)
299287

300288
if ((&CONFIG_CHAN == user_object->chan) &&
301289
is_rgb_off(user_object->red, user_object->green, user_object->blue)) {
302-
303-
if (user_object->mode == TRIGGER_MODE_NORMAL) {
304-
smf_set_state(SMF_CTX(user_object), &states[STATE_NORMAL]);
305-
return;
306-
} else if (user_object->mode == TRIGGER_MODE_POLL) {
307-
smf_set_state(SMF_CTX(user_object), &states[STATE_POLL]);
308-
return;
309-
}
310-
}
311-
312-
if ((&CONFIG_CHAN == user_object->chan) &&
313-
!is_rgb_off(user_object->red, user_object->green, user_object->blue)) {
314-
315-
smf_set_state(SMF_CTX(user_object), &states[STATE_LED_SET]);
290+
smf_set_state(SMF_CTX(user_object), &states[STATE_LED_NOT_SET]);
316291
return;
317292
}
318-
}
319-
320-
/* STATE_LED_NOT_SET */
321-
322-
static void led_not_set_running(void *o)
323-
{
324-
struct s_object *user_object = o;
325-
326-
LOG_DBG("led_not_set_running");
327293

328294
if ((&CONFIG_CHAN == user_object->chan) &&
329295
!is_rgb_off(user_object->red, user_object->green, user_object->blue)) {
330-
331296
smf_set_state(SMF_CTX(user_object), &states[STATE_LED_SET]);
332297
return;
333298
}
334299
}
335300

336-
/* STATE_POLL */
301+
/* STATE_LED_NOT_SET */
337302

338-
static void poll_entry(void *o)
303+
static void led_not_set_entry(void *o)
339304
{
340305
ARG_UNUSED(o);
341306

342-
LOG_DBG("poll_entry");
307+
LOG_DBG("led_not_set_entry");
343308

344309
transition_list_clear();
345-
transition_list_append(LED_POLL_MODE, HOLD_FOREVER, 0, 0, 0);
310+
transition_list_append(LED_OFF, HOLD_FOREVER, 0, 0, 0);
346311

347312
k_work_reschedule(&led_pattern_update_work, K_NO_WAIT);
348313
}
349314

350-
static void poll_running(void *o)
315+
static void led_not_set_running(void *o)
351316
{
352317
struct s_object *user_object = o;
353318

354-
LOG_DBG("poll_running");
319+
LOG_DBG("led_not_set_running");
355320

356-
if ((&TRIGGER_MODE_CHAN == user_object->chan) && user_object->mode == TRIGGER_MODE_NORMAL) {
357-
smf_set_state(SMF_CTX(user_object), &states[STATE_NORMAL]);
321+
if ((&CONFIG_CHAN == user_object->chan) &&
322+
!is_rgb_off(user_object->red, user_object->green, user_object->blue)) {
323+
smf_set_state(SMF_CTX(user_object), &states[STATE_LED_SET]);
358324
return;
359325
}
360326

361327
if ((&LOCATION_CHAN == user_object->chan) && user_object->location_status == LOCATION_SEARCH_STARTED) {
362-
363328
transition_list_clear();
364329
transition_list_append(LED_LOCATION_SEARCHING, HOLD_FOREVER, 0, 0, 0);
365330

@@ -368,51 +333,12 @@ static void poll_running(void *o)
368333
}
369334

370335
if ((&LOCATION_CHAN == user_object->chan) && user_object->location_status == LOCATION_SEARCH_DONE) {
371-
372-
smf_set_state(SMF_CTX(user_object), &states[STATE_POLL]);
373-
return;
374-
}
375-
}
376-
377-
/* STATE_NORMAL */
378-
379-
static void normal_entry(void *o)
380-
{
381-
ARG_UNUSED(o);
382-
383-
LOG_DBG("normal_entry");
384-
385-
transition_list_clear();
386-
transition_list_append(LED_OFF, HOLD_FOREVER, 0, 0, 0);
387-
388-
k_work_reschedule(&led_pattern_update_work, K_NO_WAIT);
389-
}
390-
391-
static void normal_running(void *o)
392-
{
393-
struct s_object *user_object = o;
394-
395-
LOG_DBG("normal_running");
396-
397-
if ((&TRIGGER_MODE_CHAN == user_object->chan) && user_object->mode == TRIGGER_MODE_POLL) {
398-
smf_set_state(SMF_CTX(user_object), &states[STATE_POLL]);
399-
return;
400-
}
401-
402-
if ((&LOCATION_CHAN == user_object->chan) && user_object->location_status == LOCATION_SEARCH_STARTED) {
403-
404336
transition_list_clear();
405-
transition_list_append(LED_LOCATION_SEARCHING, HOLD_FOREVER, 0, 0, 0);
337+
transition_list_append(LED_OFF, HOLD_FOREVER, 0, 0, 0);
406338

407339
k_work_reschedule(&led_pattern_update_work, K_NO_WAIT);
408340
return;
409341
}
410-
411-
if ((&LOCATION_CHAN == user_object->chan) && user_object->location_status == LOCATION_SEARCH_DONE) {
412-
413-
smf_set_state(SMF_CTX(user_object), &states[STATE_NORMAL]);
414-
return;
415-
}
416342
}
417343

418344
/* STATE_ERROR */
@@ -449,24 +375,10 @@ static const struct smf_state states[] = {
449375
NULL
450376
),
451377
[STATE_LED_NOT_SET] = SMF_CREATE_STATE(
452-
NULL,
378+
led_not_set_entry,
453379
led_not_set_running,
454380
NULL,
455381
&states[STATE_RUNNING],
456-
&states[STATE_NORMAL]
457-
),
458-
[STATE_POLL] = SMF_CREATE_STATE(
459-
poll_entry,
460-
poll_running,
461-
NULL,
462-
&states[STATE_LED_NOT_SET],
463-
NULL
464-
),
465-
[STATE_NORMAL] = SMF_CREATE_STATE(
466-
normal_entry,
467-
normal_running,
468-
NULL,
469-
&states[STATE_LED_NOT_SET],
470382
NULL
471383
),
472384
[STATE_ERROR] = SMF_CREATE_STATE(
@@ -487,27 +399,18 @@ void led_callback(const struct zbus_channel *chan)
487399
state_object.chan = chan;
488400

489401
/* Update the state object with the message received on the channel */
490-
if (&TRIGGER_MODE_CHAN == chan) {
491-
const enum trigger_mode *mode = zbus_chan_const_msg(chan);
492-
493-
state_object.mode = *mode;
494-
}
495-
496402
if (&NETWORK_CHAN == chan) {
497403
const struct network_msg *msg = zbus_chan_const_msg(chan);
498-
499404
state_object.status = msg->type;
500405
}
501406

502407
if (&LOCATION_CHAN == chan) {
503408
const enum location_status *status = zbus_chan_const_msg(chan);
504-
505409
state_object.location_status = *status;
506410
}
507411

508412
if (&CONFIG_CHAN == chan) {
509413
/* Get LED configuration from channel. */
510-
511414
const struct configuration *config = zbus_chan_const_msg(chan);
512415

513416
if (config->led_present == false) {
@@ -549,7 +452,6 @@ void led_callback(const struct zbus_channel *chan)
549452
static int led_init(void)
550453
{
551454
smf_set_initial(SMF_CTX(&state_object), &states[STATE_RUNNING]);
552-
553455
return 0;
554456
}
555457

app/src/modules/shell/shell.c

-38
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,6 @@ static K_WORK_DELAYABLE_DEFINE(uart_enable_work, &uart_enable_handler);
4242
/* Register subscriber */
4343
ZBUS_MSG_SUBSCRIBER_DEFINE(shell);
4444

45-
/* Observe channels */
46-
ZBUS_CHAN_ADD_OBS(TRIGGER_MODE_CHAN, shell, 0);
47-
4845
enum zbus_test_type {
4946
PING,
5047
};
@@ -256,48 +253,13 @@ static void task_wdt_callback(int channel_id, void *user_data)
256253
*/
257254
static int handle_message(const struct zbus_channel *chan, uint8_t *msg_buf)
258255
{
259-
int err;
260-
261256
if (&ZBUS_TEST_CHAN == chan) {
262257
enum zbus_test_type test_type = *(enum zbus_test_type *)msg_buf;
263258

264259
if (test_type == PING) {
265260
LOG_INF("pong");
266261
}
267262
}
268-
else if (&TRIGGER_MODE_CHAN == chan) {
269-
if (!uart_pm_enabled) {
270-
// UART power management is disabled; keep UARTs active for debugging
271-
return 0;
272-
}
273-
enum pm_device_state shell_uart_power_state;
274-
275-
if (!device_is_ready(shell_uart_dev)) {
276-
LOG_INF("Shell UART device not ready");
277-
return 0;
278-
}
279-
err = pm_device_state_get(shell_uart_dev, &shell_uart_power_state);
280-
if (err) {
281-
LOG_ERR("Failed to assess shell UART power state, pm_device_state_get: %d.",
282-
err);
283-
return 0;
284-
}
285-
286-
const enum trigger_mode mode = *(enum trigger_mode *)msg_buf;
287-
if (mode == TRIGGER_MODE_POLL) {
288-
// start uart if not already on
289-
if (shell_uart_power_state != PM_DEVICE_STATE_ACTIVE) {
290-
k_work_schedule(&uart_enable_work, K_NO_WAIT);
291-
}
292-
}
293-
else if (mode == TRIGGER_MODE_NORMAL) {
294-
// stop uart if not already off
295-
if (shell_uart_power_state != PM_DEVICE_STATE_SUSPENDED) {
296-
LOG_DBG("Disabling UARTs\n");
297-
k_work_schedule(&uart_disable_work, K_SECONDS(5));
298-
}
299-
}
300-
}
301263

302264
return 0;
303265
}

0 commit comments

Comments
 (0)