15#error We should not get here!
30#define PI 3.14159265359f
42#define INPUT_PULLUP 0x2
59 virtual size_t write(uint8_t ch) {
64 virtual size_t write(
const char* str) {
65 return write((
const uint8_t*)str, strlen(str));
68 virtual size_t write(
const char* buffer,
size_t size) {
69 return write((
const uint8_t*)buffer, size);
72 virtual size_t print(
const char* msg) {
73 int result = strlen(msg);
74 return write(msg, result);
77 virtual size_t println(
const char* msg =
"") {
78 int result = print(msg);
83 virtual size_t println(
float number) {
85 snprintf(buffer, 120,
"%f", number);
86 return println(buffer);
89 virtual size_t print(
float number) {
91 snprintf(buffer, 120,
"%f", number);
95 virtual size_t print(
int number) {
97 snprintf(buffer, 80,
"%d", number);
105 snprintf(result, 3,
"%c", c);
106 return print(result);
108 snprintf(result, 3,
"%x", c);
109 return print(result);
115 return print(value, fmt) + println();
120 virtual size_t write(
const uint8_t* data,
size_t len) {
121 if (data ==
nullptr)
return 0;
122 for (
size_t j = 0; j < len; j++) {
140 virtual size_t readBytes(uint8_t* data,
size_t len) {
return 0; }
142 virtual int read() {
return -1; }
143 virtual int peek() {
return -1; }
144 virtual void setTimeout(
size_t timeoutMs) {}
145 size_t readBytesUntil(
char terminator,
char* buffer,
size_t length) {
146 for (
size_t j = 0; j < length; j++) {
148 if (val == -1)
return j - 1;
149 if (val == terminator)
return j;
154 size_t readBytesUntil(
char terminator, uint8_t* buffer,
size_t length) {
155 return readBytesUntil(terminator, (
char*)buffer, length);
159 operator bool() {
return true; }
165 virtual int read(uint8_t* buffer,
size_t len) {
return 0; };
166 virtual int read() {
return 0; };
168 bool connect(
const char* ip,
int port) {
return false; }
169 virtual operator bool() {
return false; }
174 size_t write(uint8_t ch)
override {
return putchar(ch); }
175 virtual operator bool() {
return true; }
176 bool begin(
long baudrate,
int config = 0) {
return true; }
182inline long map(
long x,
long in_min,
long in_max,
long out_min,
long out_max) {
183 return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
186#if defined(ESP32_CMAKE)
188#include "driver/gpio.h"
189#include "freertos/FreeRTOS.h"
190#include "freertos/FreeRTOSConfig.h"
193#define IS_GPIO(pin) (pin >= 0)
194#define GPIO_TO_INT(pin) pin
195#define GPIO_TO_STR(pin) std::to_string(pin).c_str()
201 printf(
"digitalRead:%d\n", pin);
202 return gpio_get_level((gpio_num_t)pin);
206 gpio_set_level((gpio_num_t)pin, value);
209inline void pinMode(digital_pin_t pin,
int mode) {
210 gpio_num_t gpio_pin = (gpio_num_t)pin;
211 printf(
"pinMode(%d,%d)\n", pin, mode);
213 gpio_reset_pin(gpio_pin);
216 gpio_set_direction(gpio_pin, GPIO_MODE_INPUT);
219 gpio_set_direction(gpio_pin, GPIO_MODE_OUTPUT);
222 gpio_set_direction(gpio_pin, GPIO_MODE_INPUT);
223 gpio_set_pull_mode(gpio_pin, GPIO_PULLUP_ONLY);
226 gpio_set_direction(gpio_pin, GPIO_MODE_INPUT_OUTPUT);
231inline void delay(uint32_t ms) { vTaskDelay(ms / portTICK_PERIOD_MS); }
232inline void yield() { taskYIELD(); }
233inline uint32_t
millis() {
return (xTaskGetTickCount() * portTICK_PERIOD_MS); }
236 return xTaskGetTickCount() * portTICK_PERIOD_MS * 1000;
240#define DESKTOP_MILLIS_DEFINED
244#if defined(IS_ZEPHYR)
245#include <zephyr/drivers/gpio.h>
247#define DESKTOP_MILLIS_DEFINED
248#define IS_GPIO(pin) (pin.port != nullptr)
249#define GPIO_TO_INT(pin) pin.pin
250#define GPIO_TO_STR(pin) std::to_string(GPIO_TO_INT(pin)).c_str()
251#define ZLOGE(...) printk(__VA_ARGS__)
273 return (
a.port ==
b.port) && (
a.pin ==
b.pin);
284 ZLOGE(
"GPIO pin not ready");
309 ZLOGE(
"Failed to configure GPIO pin: %d",
rc);
315 ZLOGE(
"GPIO pin not ready");
320 ZLOGE(
"Failed to write GPIO pin: %d",
rc);
326 ZLOGE(
"GPIO pin not ready");
332 ZLOGE(
"Failed to read GPIO pin: %d",
rc);
#define INPUT
Definition Arduino.h:34
#define OUTPUT
Definition Arduino.h:38
#define INPUT_PULLUP
Definition Arduino.h:42
static HardwareSerial Serial
Definition Arduino.h:179
long map(long x, long in_min, long in_max, long out_min, long out_max)
Maps input to output values.
Definition Arduino.h:182
PrintCharFmt
Definition Arduino.h:54
@ DEC
Definition Arduino.h:54
@ HEX
Definition Arduino.h:54
#define ZLOGE(...)
Definition Arduino.h:251
bool connect(const char *ip, int port)
Definition Arduino.h:168
bool connected()
Definition Arduino.h:167
virtual int read(uint8_t *buffer, size_t len)
Definition Arduino.h:165
void stop()
Definition Arduino.h:164
virtual int read()
Definition Arduino.h:166
size_t write(uint8_t ch) override
Definition Arduino.h:174
bool begin(long baudrate, int config=0)
Definition Arduino.h:176
virtual int availableForWrite()
Definition Arduino.h:128
virtual size_t write(const uint8_t *data, size_t len)
Definition Arduino.h:120
int _timeout
Definition Arduino.h:133
virtual void flush()
Definition Arduino.h:130
virtual size_t readBytes(uint8_t *data, size_t len)
Definition Arduino.h:140
virtual int available()
Definition Arduino.h:139
virtual ~Stream()=default