20#define USTD_FEATURE_MEM_512B 512
22#define USTD_FEATURE_MEM_2K 2048
24#define USTD_FEATURE_MEM_8K 8192
26#define USTD_FEATURE_MEM_32K 32768
28#define USTD_FEATURE_MEM_128K 131072
30#define USTD_FEATURE_MEM_512K 524288
32#define USTD_FEATURE_MEM_1M 1048576
65#if !defined(DONT_USE_FEATURE_COMPATIBILITY)
66#if defined(__USE_OLD_FS__)
67#define USTD_FEATURE_FS_FORCE_SPIFFS
68#pragma message("Please use USTD_OPTION_FS_FORCE_SPIFFS instead of __USE_OLD_FS__")
70#if defined(__USE_SPIFFS_FS__)
71#pragma message("Please use USTD_OPTION_FS_FORCE_SPIFFS instead of __USE_SPIFFS_FS__")
73#if defined(__USE_LITTLE_FS__)
74#pragma message("Please do not use __USE_LITTLEFS__")
80#if defined(__ATTINY__)
81#if defined(KNOWN_PLATFORM)
82#error "Platform already defined"
84#define KNOWN_PLATFORM 1
85#define USTD_FEATURE_MEMORY 512
86#define USTD_FEATURE_EEPROM
88#include <SoftwareSerial.h>
93#if defined(KNOWN_PLATFORM)
94#error "Platform already defined"
96#define KNOWN_PLATFORM 1
97#define USTD_FEATURE_MEMORY 2048
98#define USTD_FEATURE_EEPROM
105#if defined(__ATMEGA__)
106#if defined(KNOWN_PLATFORM)
107#error "Platform already defined"
109#define KNOWN_PLATFORM 1
110#define USTD_FEATURE_MEMORY 8192
111#define USTD_FEATURE_EEPROM
118#if defined(__FEATHER_M0__)
119#if defined(KNOWN_PLATFORM)
120#error "Platform already defined"
122#define KNOWN_PLATFORM 1
123#define USTD_FEATURE_MEMORY 32768
129#if defined(__RP2040__)
130#if defined(KNOWN_PLATFORM)
131#error "Platform already defined"
133#define KNOWN_PLATFORM 1
134#define USTD_FEATURE_MEMORY 264000
135#define USTD_FEATURE_SUPPORTS_NEW_OPERATOR
136#include "pico/stdlib.h"
143#if defined(__BLUEPILL__)
144#if defined(KNOWN_PLATFORM)
145#error "Platform already defined"
147#define KNOWN_PLATFORM 1
148#define USTD_FEATURE_MEMORY 20480
149#define USTD_FEATURE_SUPPORTS_NEW_OPERATOR
155#if defined(__NRF52__)
156#if defined(KNOWN_PLATFORM)
157#error "Platform already defined"
159#define KNOWN_PLATFORM 1
160#define USTD_FEATURE_MEMORY 65536
166#if defined(__ESP__) && !defined(__ESP32__) && !defined(__ESP32DEV__)
167#if defined(KNOWN_PLATFORM)
168#error "Platform already defined"
170#define KNOWN_PLATFORM 1
171#define USTD_FEATURE_MEMORY 80000
172#include <ESP8266WiFi.h>
173#define USTD_FEATURE_NETWORK
176#include <coredecls.h>
177#define USTD_FEATURE_SYSTEMCLOCK
178#define USTD_FEATURE_CLK_READ
179#define USTD_FEATURE_CLK_SET
180#if !defined(USTD_OPTION_FS_FORCE_NO_FS)
181#define USTD_FEATURE_FILESYSTEM
183#if defined(USTD_OPTION_FS_FORCE_SPIFFS)
185#define USTD_FEATURE_FS_SPIFFS
187#define USTD_FEATURE_FS_LITTLEFS
194#if defined(__BLACKPILL__)
195#if defined(KNOWN_PLATFORM)
196#error "Platform already defined"
198#define KNOWN_PLATFORM 1
199#define USTD_FEATURE_MEMORY 128000
200#define USTD_FEATURE_SUPPORTS_NEW_OPERATOR
206#if defined(__FEATHER_M4__)
207#if defined(KNOWN_PLATFORM)
208#error "Platform already defined"
210#define KNOWN_PLATFORM 1
211#define USTD_FEATURE_MEMORY 192000
217#if defined(__NANOBLE__)
218#if defined(KNOWN_PLATFORM)
219#error "Platform already defined"
221#define KNOWN_PLATFORM 1
222#define USTD_FEATURE_MEMORY 256000
223#define USTD_FEATURE_SUPPORTS_NEW_OPERATOR
229#if defined(__TEENSY40__)
230#if defined(KNOWN_PLATFORM)
231#error "Platform already defined"
233#define KNOWN_PLATFORM 1
234#define USTD_FEATURE_MEMORY 512000
235#define USTD_FEATURE_SUPPORTS_NEW_OPERATOR
241#if defined(__ESP32__) || defined(__ESP32DEV__) || defined(__ESP32_RISC__)
242#if defined(KNOWN_PLATFORM)
243#error "Platform already defined"
245#define KNOWN_PLATFORM 1
252#define USTD_FEATURE_SUPPORTS_NEW_OPERATOR
253#define USTD_OPTION_FS_FORCE_LITTLEFS
257#define USTD_FEATURE_MEMORY 320000
259#define USTD_FEATURE_NETWORK
262#define USTD_FEATURE_SYSTEMCLOCK
263#define USTD_FEATURE_CLK_READ
264#define USTD_FEATURE_CLK_SET
265#if !defined(USTD_OPTION_FS_FORCE_NO_FS)
266#define USTD_FEATURE_FILESYSTEM
268#if !defined(USTD_OPTION_FS_FORCE_LITTLEFS)
270#define USTD_FEATURE_FS_SPIFFS
273#define USTD_FEATURE_FS_LITTLEFS
280#if defined(__MAIXBIT__)
281#if defined(KNOWN_PLATFORM)
282#error "Platform already defined"
284#define KNOWN_PLATFORM 1
286#define USTD_FEATURE_MEMORY 6000000
291#if !defined(DONT_USE_FEATURE_COMPATIBILITY)
292#if defined(USTD_FEATURE_FS_LITTLEFS)
293#define __USE_LITTLEFS__
295#if defined(USTD_FEATURE_FS_SPIFFS)
296#define __USE_SPIFFS_FS__
297#define __USE_OLD_FS__
303#if defined(__RP_PICO__)
306typedef std::string String;
307inline unsigned long micros() {
310inline unsigned long millis() {
311 return time_us_64() / 1000;
316#if defined(__linux__) || defined(__APPLE__)
317#if defined(KNOWN_PLATFORM)
318#error "Platform already defined"
320#define KNOWN_PLATFORM 1
321#define USTD_FEATURE_MEMORY 1048576
333#define USTD_FEATURE_NETWORK
334#define USTD_FEATURE_FILESYSTEM
335#define USTD_FEATURE_SYSTEMCLOCK
336#define USTD_FEATURE_CLK_READ
337#define USTD_FEATURE_CLK_SET
349typedef std::string String;
351inline unsigned long micros() {
353 gettimeofday(&tv,
nullptr);
355 tu = (tv.tv_sec % 1000L) * 1000000L + tv.tv_usec;
358inline unsigned long millis() {
360 gettimeofday(&tv,
nullptr);
362 tm = (tv.tv_sec % 1000000L) * 1000L + tv.tv_usec / 1000L;
370 void begin(
unsigned long baud) {
373 std::cout << std::endl;
376 void println(String s) {
377 std::cout << s << std::endl;
379 void println(
const char *sz) {
380 std::cout << sz << std::endl;
382 void println(uint8_t b) {
383 std::cout << b << std::endl;
385 void println(
int l) {
386 std::cout << l << std::endl;
388 void println(
unsigned long l) {
389 std::cout << l << std::endl;
391 void println(
double d) {
392 std::cout << d << std::endl;
395 void print(String s) {
398 void print(
const char *sz) {
401 void print(uint8_t b) {
407 void print(
unsigned long l) {
410 void print(
double d) {
442#if defined(__ARDUINO__) || defined(__ARM__)
443#define USTD_FEATURE_FREE_MEMORY
447extern "C" char *sbrk(
int incr);
449extern char *__brkval;
452inline int freeMemory() {
455 return &top -
reinterpret_cast<char *
>(sbrk(0));
456#elif defined(CORE_TEENSY) || (ARDUINO > 103 && ARDUINO != 151)
457 return &top - __brkval;
459 return __brkval ? &top - __brkval : &top - __malloc_heap_start;
462#elif defined(__ESP__)
463#define USTD_FEATURE_FREE_MEMORY
464inline int freeMemory() {
465 return (
int)ESP.getFreeHeap();
467#elif defined(__UNIXOID__)
468#define USTD_FEATURE_FREE_MEMORY
470inline int freeMemory() {
471 long pages = sysconf(_SC_PHYS_PAGES);
472 long page_size = sysconf(_SC_PAGE_SIZE);
473 long long memfree = pages * page_size;
474 if (memfree > INT_MAX) {
484#define DBG_INIT(f) Serial.begin(f)
486#define DBG(f) Serial.println(f)
487#define DBGP(f) Serial.print(f)
488#define DBGF(...) Serial.printf(__VA_ARGS__)
489#if USE_SERIAL_DBG > 1
490#define DBG2(f) Serial.println(f)
491#define DBGP2(f) Serial.print(f)
492#if USE_SERIAL_DBG > 2
493#define DBG3(f) Serial.println(f)
494#define DBGP3(f) Serial.print(f)
521#define UINT_MAX (65535)
524#ifndef KNOWN_PLATFORM
525#error Unkown platform. Please use a platform define, e.g. __ATMEGA__, __ESP__, __linux__, __APPLE__. Check https: