Sentinel
Loading...
Searching...
No Matches
threadsafe_serial.h
Go to the documentation of this file.
1
7
8#ifndef THREADSAFE_SERIAL_H
9#define THREADSAFE_SERIAL_H
10
11#include <Arduino.h>
12#include <freertos/FreeRTOS.h>
13#include <freertos/semphr.h>
14
15extern SemaphoreHandle_t serialMutex;
16
17void safePrint(const char* message);
18void safePrint(const String& message);
19void safePrintln(const char* message);
20void safePrintln(const String& message);
21void safePrintf(const char* format, ...);
22
23
34template<typename T>
35void safePrint(const T& value) {
36 if (xSemaphoreTake(serialMutex, pdMS_TO_TICKS(1000)) == pdTRUE) {
37 Serial.print(value);
38 xSemaphoreGive(serialMutex);
39 }
40}
41
51template<typename T>
52void safePrintln(const T& value) {
53 if (xSemaphoreTake(serialMutex, pdMS_TO_TICKS(1000)) == pdTRUE) {
54 Serial.println(value);
55 xSemaphoreGive(serialMutex);
56 }
57}
58
59#endif
SemaphoreHandle_t serialMutex
Serial mutex for thread-safe printing.
Definition main.cpp:35
void safePrintf(const char *format,...)
Thread-safe printf function for serial output.
Definition threadsafe_serial.cpp:78
void safePrint(const char *message)
Thread-safe print functions for serial output.
Definition threadsafe_serial.cpp:17
void safePrintln(const char *message)
Thread-safe println functions for serial output.
Definition threadsafe_serial.cpp:47