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