#include <stdio.h>
#include <stdint.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/ringbuf.h"
typedef struct
{
uint16_t addr;
uint16_t pid;
float value;
} sensor_t;
static sensor_t sensor_data = {
.addr = 0x0005,
.pid = 0x0056,
.value = 37,
};
// static char tx_item[] = "test_itemdfgsdgdsgsdgsdgsdgsd";
void app_main() {
//Create ring buffer
RingbufHandle_t buf_handle;
buf_handle = xRingbufferCreate(sizeof(sensor_t)*4*1, RINGBUF_TYPE_NOSPLIT);
if (buf_handle == NULL) {
printf("Failed to create ring buffer\n");
}
//Send an item
UBaseType_t res = xRingbufferSend(buf_handle, &sensor_data, sizeof(sensor_t), pdMS_TO_TICKS(1000));
if (res != pdTRUE) {
printf("Failed to send item\n");
}
sensor_data.addr = 0x0005;
sensor_data.pid = 0x0056;
sensor_data.value = 39;
res = xRingbufferSend(buf_handle, &sensor_data, sizeof(sensor_t), pdMS_TO_TICKS(1000));
if (res != pdTRUE) {
printf("Failed to send item\n");
}
//Receive an item from no-split ring buffer
size_t item_size;
sensor_t *item_data = NULL;
item_data = (sensor_t *)xRingbufferReceive(buf_handle, &item_size, pdMS_TO_TICKS(1000));
//Check received item
if (item_data != NULL) {
//Print item
for (int i = 0; i < item_size/sizeof(sensor_t); i++) {
printf("addr: 0x%04x, pid: 0x%04x, value: %.2f\n", item_data[i].addr, item_data[i].pid, item_data[i].value);
}
printf("\n");
//Return Item
vRingbufferReturnItem(buf_handle, (void *)item_data);
} else {
//Failed to receive item
printf("Failed to receive item\n");
}
item_data = (sensor_t *)xRingbufferReceive(buf_handle, &item_size, pdMS_TO_TICKS(1000));
//Check received item
if (item_data != NULL) {
//Print item
for (int i = 0; i < item_size/sizeof(sensor_t); i++) {
printf("addr: 0x%04x, pid: 0x%04x, value: %.2f\n", item_data[i].addr, item_data[i].pid, item_data[i].value);
}
printf("\n");
//Return Item
vRingbufferReturnItem(buf_handle, (void *)item_data);
} else {
//Failed to receive item
printf("Failed to receive item\n");
}
while (true) {
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
}
Loading
esp32-s3-devkitc-1
esp32-s3-devkitc-1