Modbus Vault v1.0
Loading...
Searching...
No Matches
telemetry_pipeline.c File Reference

Implementation of the telemetry pipeline. More...

#include "telemetry_pipeline.h"
#include "debug_pins.h"
#include "esp_log.h"
#include "event_bus.h"
#include "freertos/FreeRTOS.h"
#include "freertos/queue.h"
#include "freertos/task.h"
#include "runtime_tasks.h"
#include "serializer.h"
Include dependency graph for telemetry_pipeline.c:

Macros

#define TELEMETRY_PIPELINE_RAW_FRAME_QUEUE_LENGTH   (32U)
 

Functions

static void telemetry_pipeline_task (void *parameters_void_ptr)
 Telemetry pipeline task serialize raw frames.
 
static void telemetry_pipeline_stop_task (void)
 Stop telemetry pipeline task.
 
bool telemetry_pipeline_init (modbus_analyzer_config_t *analyzer_config_ptr, void(*record_ready_cb)(const telemetry_pipeline_record_t *))
 Initiate telemetry pipeline.
 
void telemetry_pipeline_enqueue_raw_frame (const modbus_analyzer_frame_t *raw_frame_ptr)
 Enqueue raw frame.
 
void telemetry_pipeline_deinit (void)
 Deinitialize telemetry pipeline.
 

Variables

static const char * TAG = "TELEMETRY_PIPELINE"
 
static TaskHandle_t telemetry_pipeline_task_handle = NULL
 
static QueueHandle_t raw_frame_queue = NULL
 
void(* record_ready_callback )(const telemetry_pipeline_record_t *) = NULL
 
static modbus_analyzer_t analyzer
 
runtime_task_config_t telemetry_pipeline_task_config
 

Detailed Description

Implementation of the telemetry pipeline.

Author
Abanoub Salah
  • Initialize modbus analyzer instance
  • On ready raw frame modbus analyzer enqueue frame
  • Telemetry pipeline task continuously serialize raw frames queue and calls registered callback function

Macro Definition Documentation

◆ TELEMETRY_PIPELINE_RAW_FRAME_QUEUE_LENGTH

#define TELEMETRY_PIPELINE_RAW_FRAME_QUEUE_LENGTH   (32U)

Frame queue length

Function Documentation

◆ telemetry_pipeline_enqueue_raw_frame()

void telemetry_pipeline_enqueue_raw_frame ( const modbus_analyzer_frame_t raw_frame_ptr)

Enqueue raw frame.

Parameters
raw_frame_ptrPointer to raw frame
Here is the caller graph for this function:

◆ telemetry_pipeline_init()

bool telemetry_pipeline_init ( modbus_analyzer_config_t analyzer_config_ptr,
void(*)(const telemetry_pipeline_record_t *)  record_ready_cb 
)

Initiate telemetry pipeline.

Initiate a modbus analyzer instance and create serialized queue

Parameters
analyzer_config_ptrPointer to Modbus analyzer configuration structure
record_ready_cbCallback on record ready
Returns
true if initiate success false otherwise
Here is the call graph for this function:
Here is the caller graph for this function:

◆ telemetry_pipeline_task()

static void telemetry_pipeline_task ( void *  parameters_void_ptr)
static

Telemetry pipeline task serialize raw frames.

Telemetry pipeline task serialize raw frames and calls registered callback function

Parameters
parameters_void_ptr
Here is the call graph for this function:

Variable Documentation

◆ analyzer

modbus_analyzer_t analyzer
static

Modbus Analyzer instance

◆ raw_frame_queue

QueueHandle_t raw_frame_queue = NULL
static

Telemetry Pipeline queue handle

◆ record_ready_callback

void(* record_ready_callback) (const telemetry_pipeline_record_t *) ( const telemetry_pipeline_record_t ) = NULL

On record ready callback function

◆ TAG

const char* TAG = "TELEMETRY_PIPELINE"
static

Telemetry Pipeline TAG name

◆ telemetry_pipeline_task_config

runtime_task_config_t telemetry_pipeline_task_config
Initial value:
.arg = NULL,
static TaskHandle_t telemetry_pipeline_task_handle
Definition telemetry_pipeline.c:31
static void telemetry_pipeline_stop_task(void)
Stop telemetry pipeline task.
Definition telemetry_pipeline.c:95
static void telemetry_pipeline_task(void *parameters_void_ptr)
Telemetry pipeline task serialize raw frames.
Definition telemetry_pipeline.c:47
#define TELEMETRY_PIPELINE_TASK_NAME
Definition telemetry_pipeline.h:16
#define TELEMETRY_PIPELINE_TASK_CPU_AFFINITY
Definition telemetry_pipeline.h:19
#define TELEMETRY_PIPELINE_TASK_STACK_DEPTH
Definition telemetry_pipeline.h:17
#define TELEMETRY_PIPELINE_TASK_PRIORITY
Definition telemetry_pipeline.h:18

Telemetry Pipeline task configuration structure

◆ telemetry_pipeline_task_handle

TaskHandle_t telemetry_pipeline_task_handle = NULL
static

Telemetry Pipeline task handle