48 lines
1010 B
C++
48 lines
1010 B
C++
#include "sender_task.h"
|
|
#include "sampler_task.h"
|
|
#include "ringbuf.h"
|
|
|
|
#include <stdio.h>
|
|
#include <time.h>
|
|
|
|
extern "C" {
|
|
#include "freertos/FreeRTOS.h"
|
|
#include "freertos/task.h"
|
|
}
|
|
|
|
static uint32_t msg_id = 1;
|
|
|
|
static void sender_task(void *arg) {
|
|
int data[RINGBUF_SIZE];
|
|
|
|
while (1) {
|
|
vTaskDelay(pdMS_TO_TICKS(1000)); // 1 Гц
|
|
|
|
ringbuf_t *rb = sampler_get_buffer();
|
|
ringbuf_copy(rb, data);
|
|
|
|
time_t now = time(NULL);
|
|
|
|
// формируем JSON
|
|
printf("{\"v\":1,\"t\":\"t\",\"id\":%lu,\"ts\":%lld,\"d\":1,\"p\":{",
|
|
(unsigned long)msg_id++, (long long)now);
|
|
printf("\"m\":\"v\",\"s\":\"adc35\",\"u\":\"raw\",\"v\":[");
|
|
|
|
for (int i = 0; i < RINGBUF_SIZE; i++) {
|
|
printf("[%d,%d]%s", i, data[i], (i < RINGBUF_SIZE - 1) ? "," : "");
|
|
}
|
|
|
|
printf("]}}\n");
|
|
}
|
|
}
|
|
|
|
void sender_task_start() {
|
|
xTaskCreate(
|
|
sender_task,
|
|
"sender",
|
|
4096,
|
|
NULL,
|
|
5,
|
|
NULL
|
|
);
|
|
} |