|
| 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 | + |
| 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 | + |
| 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 | + |
| 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 | +} |
0 commit comments