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