1 /*
2  * Copyright 2025 NXP
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 #include <zephyr/logging/log.h>
8 LOG_MODULE_REGISTER(sent_sample, LOG_LEVEL_DBG);
9 
10 #include <zephyr/kernel.h>
11 
12 #include <zephyr/drivers/sent/sent.h>
13 
14 #define SENT_NODE          DT_ALIAS(sent0)
15 #define SENT_CHANNEL       1
16 #define SENT_MAX_RX_BUFFER 1
17 
18 struct sent_frame serial_frame[SENT_MAX_RX_BUFFER];
19 struct sent_frame fast_frame[SENT_MAX_RX_BUFFER];
20 
rx_serial_frame_cb(const struct device * dev,uint8_t channel_id,uint32_t num_frame,void * user_data)21 void rx_serial_frame_cb(const struct device *dev, uint8_t channel_id, uint32_t num_frame,
22 			void *user_data)
23 {
24 	if (num_frame == SENT_MAX_RX_BUFFER) {
25 		LOG_INF("Received a frame on channel %d, "
26 			"id: %d, data: 0x%X, timestamp: 0x%X",
27 			channel_id, serial_frame->serial.id, serial_frame->serial.data,
28 			serial_frame->timestamp);
29 	} else {
30 		LOG_INF("Error received on channel %d", channel_id);
31 	}
32 }
33 
rx_fast_frame_cb(const struct device * dev,uint8_t channel_id,uint32_t num_frame,void * user_data)34 void rx_fast_frame_cb(const struct device *dev, uint8_t channel_id, uint32_t num_frame,
35 		      void *user_data)
36 {
37 	if (num_frame == SENT_MAX_RX_BUFFER) {
38 		LOG_INF("Received a frame on channel %d, "
39 			"data nibble 0: 0x%X, "
40 			"data nibble 1: 0x%X, "
41 			"data nibble 2: 0x%X, "
42 			"data nibble 3: 0x%X, "
43 			"data nibble 4: 0x%X, "
44 			"data nibble 5: 0x%X, "
45 			"timestamp: 0x%X",
46 			channel_id, fast_frame->fast.data_nibbles[0],
47 			fast_frame->fast.data_nibbles[1], fast_frame->fast.data_nibbles[2],
48 			fast_frame->fast.data_nibbles[3], fast_frame->fast.data_nibbles[4],
49 			fast_frame->fast.data_nibbles[5], fast_frame->timestamp);
50 	} else {
51 		LOG_INF("Error received on channel %d", channel_id);
52 	}
53 }
54 
55 struct sent_rx_callback_config serial_cb_cfg = {
56 	.callback = rx_serial_frame_cb,
57 	.frame = &serial_frame[0],
58 	.max_num_frame = SENT_MAX_RX_BUFFER,
59 	.user_data = NULL,
60 };
61 
62 struct sent_rx_callback_config fast_cb_cfg = {
63 	.callback = rx_fast_frame_cb,
64 	.frame = &fast_frame[0],
65 	.max_num_frame = SENT_MAX_RX_BUFFER,
66 	.user_data = NULL,
67 };
68 
69 struct sent_rx_callback_configs callback_configs = {
70 	.serial = &serial_cb_cfg,
71 	.fast = &fast_cb_cfg,
72 };
73 
main(void)74 int main(void)
75 {
76 	const struct device *const dev = DEVICE_DT_GET(SENT_NODE);
77 
78 	sent_register_callback(dev, SENT_CHANNEL, callback_configs);
79 
80 	sent_start_listening(dev, SENT_CHANNEL);
81 
82 	while (true) {
83 		/* To receive data */
84 	}
85 
86 	return 0;
87 }
88