1 /*
2 * Copyright (c) 2022 Rodrigo Peixoto <rodrigopex@gmail.com>
3 * SPDX-License-Identifier: Apache-2.0
4 */
5 #include "messages.h"
6
7 #include <zephyr/logging/log.h>
8 #include <zephyr/zbus/zbus.h>
9 LOG_MODULE_DECLARE(zbus, CONFIG_ZBUS_LOG_LEVEL);
10
11 ZBUS_CHAN_DEFINE(raw_data_chan, struct sensor_msg, NULL, NULL, ZBUS_OBSERVERS_EMPTY,
12 ZBUS_MSG_INIT(.x = 0, .y = 0, .z = 0));
13
14 ZBUS_CHAN_DEFINE(state_chan, bool, NULL, NULL, ZBUS_OBSERVERS(state_change_sub), false);
15
producer_thread(void)16 static void producer_thread(void)
17 {
18 struct sensor_msg acc = {0};
19 uint32_t count = 0;
20
21 while (1) {
22 if (count == 5) {
23 bool change_state = true;
24
25 zbus_chan_pub(&state_chan, &change_state, K_MSEC(200));
26 count = 0;
27 }
28
29 ++acc.x;
30 ++acc.y;
31 ++acc.z;
32
33 LOG_INF(" >-- Raw data fetched");
34
35 zbus_chan_pub(&raw_data_chan, &acc, K_MSEC(200));
36
37 k_msleep(500);
38
39 ++count;
40 }
41 }
42
43 K_THREAD_DEFINE(produce_thread_id, 1024, producer_thread, NULL, NULL, NULL, 3, 0, 0);
44