From a2b883c27618ef401400dd27cec0f0d191bf4e52 Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 Date: Mon, 31 May 2021 19:46:53 +0200 Subject: [PATCH] Fixes for esp-idf --- CMakeLists.txt | 35 +++++++++++++++ DateStrings.cpp | 112 ++++++++++++++++++++++-------------------------- Time.cpp | 19 +++++--- TimeLib.h | 8 ++-- 4 files changed, 105 insertions(+), 69 deletions(-) create mode 100644 CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..bdd8203 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,35 @@ +set(headers + Time.h + TimeLib.h +) + +set(sources + DateStrings.cpp + Time.cpp +) + +set(dependencies + esp_timer +) + +idf_component_register( + INCLUDE_DIRS + . + SRCS + ${headers} + ${sources} + REQUIRES + ${dependencies} +) + +target_compile_options(${COMPONENT_TARGET} + PUBLIC + -DUSE_FACADE=true + PRIVATE + -fstack-reuse=all + -fstack-protector-all + -Wno-unused-function + -Wno-deprecated-declarations + -Wno-missing-field-initializers + -Wno-parentheses +) diff --git a/DateStrings.cpp b/DateStrings.cpp index 2424678..1fa77fe 100644 --- a/DateStrings.cpp +++ b/DateStrings.cpp @@ -9,15 +9,7 @@ * */ -#include - -// Arduino.h should properly define PROGMEM, PGM_P, strcpy_P, pgm_read_byte, pgm_read_ptr -// But not all platforms define these as they should. If you find a platform needing these -// defined, or if any this becomes unnecessary as platforms improve, please send a pull req. -#if defined(ESP8266) -#undef PROGMEM -#define PROGMEM -#endif +//#include #include "TimeLib.h" @@ -25,73 +17,73 @@ // the short strings for each day or month must be exactly dt_SHORT_STR_LEN #define dt_SHORT_STR_LEN 3 // the length of short strings -static char buffer[dt_MAX_STRING_LEN+1]; // must be big enough for longest string and the terminating null +//static char buffer[dt_MAX_STRING_LEN+1]; // must be big enough for longest string and the terminating null -const char monthStr0[] PROGMEM = ""; -const char monthStr1[] PROGMEM = "January"; -const char monthStr2[] PROGMEM = "February"; -const char monthStr3[] PROGMEM = "March"; -const char monthStr4[] PROGMEM = "April"; -const char monthStr5[] PROGMEM = "May"; -const char monthStr6[] PROGMEM = "June"; -const char monthStr7[] PROGMEM = "July"; -const char monthStr8[] PROGMEM = "August"; -const char monthStr9[] PROGMEM = "September"; -const char monthStr10[] PROGMEM = "October"; -const char monthStr11[] PROGMEM = "November"; -const char monthStr12[] PROGMEM = "December"; +const char monthStr0[] = ""; +const char monthStr1[] = "January"; +const char monthStr2[] = "February"; +const char monthStr3[] = "March"; +const char monthStr4[] = "April"; +const char monthStr5[] = "May"; +const char monthStr6[] = "June"; +const char monthStr7[] = "July"; +const char monthStr8[] = "August"; +const char monthStr9[] = "September"; +const char monthStr10[] = "October"; +const char monthStr11[] = "November"; +const char monthStr12[] = "December"; -const PROGMEM char * const PROGMEM monthNames_P[] = +const char * const monthNames_P[] = { monthStr0,monthStr1,monthStr2,monthStr3,monthStr4,monthStr5,monthStr6, monthStr7,monthStr8,monthStr9,monthStr10,monthStr11,monthStr12 }; -const char monthShortNames_P[] PROGMEM = "ErrJanFebMarAprMayJunJulAugSepOctNovDec"; +const char monthShortNames_P[] = "ErrJanFebMarAprMayJunJulAugSepOctNovDec"; -const char dayStr0[] PROGMEM = "Err"; -const char dayStr1[] PROGMEM = "Sunday"; -const char dayStr2[] PROGMEM = "Monday"; -const char dayStr3[] PROGMEM = "Tuesday"; -const char dayStr4[] PROGMEM = "Wednesday"; -const char dayStr5[] PROGMEM = "Thursday"; -const char dayStr6[] PROGMEM = "Friday"; -const char dayStr7[] PROGMEM = "Saturday"; +const char dayStr0[] = "Err"; +const char dayStr1[] = "Sunday"; +const char dayStr2[] = "Monday"; +const char dayStr3[] = "Tuesday"; +const char dayStr4[] = "Wednesday"; +const char dayStr5[] = "Thursday"; +const char dayStr6[] = "Friday"; +const char dayStr7[] = "Saturday"; -const PROGMEM char * const PROGMEM dayNames_P[] = +const char * const dayNames_P[] = { dayStr0,dayStr1,dayStr2,dayStr3,dayStr4,dayStr5,dayStr6,dayStr7 }; -const char dayShortNames_P[] PROGMEM = "ErrSunMonTueWedThuFriSat"; +const char dayShortNames_P[] = "ErrSunMonTueWedThuFriSat"; /* functions to return date strings */ -char* monthStr(uint8_t month) -{ - strcpy_P(buffer, (PGM_P)pgm_read_ptr(&(monthNames_P[month]))); - return buffer; -} +//char* monthStr(uint8_t month) +//{ +// strcpy_P(buffer, (PGM_P)pgm_read_ptr(&(monthNames_P[month]))); +// return buffer; +//} -char* monthShortStr(uint8_t month) -{ - for (int i=0; i < dt_SHORT_STR_LEN; i++) - buffer[i] = pgm_read_byte(&(monthShortNames_P[i+ (month*dt_SHORT_STR_LEN)])); - buffer[dt_SHORT_STR_LEN] = 0; - return buffer; -} +//char* monthShortStr(uint8_t month) +//{ +// for (int i=0; i < dt_SHORT_STR_LEN; i++) +// buffer[i] = pgm_read_byte(&(monthShortNames_P[i+ (month*dt_SHORT_STR_LEN)])); +// buffer[dt_SHORT_STR_LEN] = 0; +// return buffer; +//} -char* dayStr(uint8_t day) -{ - strcpy_P(buffer, (PGM_P)pgm_read_ptr(&(dayNames_P[day]))); - return buffer; -} +//char* dayStr(uint8_t day) +//{ +// strcpy_P(buffer, (PGM_P)pgm_read_ptr(&(dayNames_P[day]))); +// return buffer; +//} -char* dayShortStr(uint8_t day) -{ - uint8_t index = day*dt_SHORT_STR_LEN; - for (int i=0; i < dt_SHORT_STR_LEN; i++) - buffer[i] = pgm_read_byte(&(dayShortNames_P[index + i])); - buffer[dt_SHORT_STR_LEN] = 0; - return buffer; -} +//char* dayShortStr(uint8_t day) +//{ +// uint8_t index = day*dt_SHORT_STR_LEN; +// for (int i=0; i < dt_SHORT_STR_LEN; i++) +// buffer[i] = pgm_read_byte(&(dayShortNames_P[index + i])); +// buffer[dt_SHORT_STR_LEN] = 0; +// return buffer; +//} diff --git a/Time.cpp b/Time.cpp index 0dcb29f..f79754c 100644 --- a/Time.cpp +++ b/Time.cpp @@ -27,18 +27,27 @@ 1.4 5 Sep 2014 - compatibility with Arduino 1.5.7 */ -#if ARDUINO >= 100 -#include -#else -#include -#endif +//#if ARDUINO >= 100 +//#include +//#else +//#include +//#endif #include "TimeLib.h" +#include + static tmElements_t tm; // a cache of time elements static time_t cacheTime; // the time the cache was updated static uint32_t syncInterval = 300; // time sync will be attempted after this many seconds +namespace { +unsigned long millis() +{ + return esp_timer_get_time() / 1000; +} +} + void refreshCache(time_t t) { if (t != cacheTime) { breakTime(t, tm); diff --git a/TimeLib.h b/TimeLib.h index b587046..0fd5f6c 100644 --- a/TimeLib.h +++ b/TimeLib.h @@ -124,10 +124,10 @@ void adjustTime(long adjustment); /* date strings */ #define dt_MAX_STRING_LEN 9 // length of longest date string (excluding terminating null) -char* monthStr(uint8_t month); -char* dayStr(uint8_t day); -char* monthShortStr(uint8_t month); -char* dayShortStr(uint8_t day); +//char* monthStr(uint8_t month); +//char* dayStr(uint8_t day); +//char* monthShortStr(uint8_t month); +//char* dayShortStr(uint8_t day); /* time sync functions */ timeStatus_t timeStatus(); // indicates if time has been set and recently synchronized