Giter VIP home page Giter VIP logo

calepd's Introduction

Hi there ๐Ÿ‘‹

  • ๐Ÿ”ญ Iโ€™m currently working on making hardware PCB adapters
  • ๐ŸŒฑ Learning more C, C++ and Symfony framework UX Live (PHP 8)
  • ๐Ÿ‘ฏ Looking to collaborate on interesting embedded products and funding open source libraries that make our work easier
  • ๐Ÿ’ฌ Ask me about eink controllers and Espressif chips (epdiy open source epaper controller)
  • ๐Ÿ“ซ How to reach me: martin AT cale.es
  • ๐Ÿ’ญ If you want to generate dynamic images for your displays try CALE.es

martinberlin GitHub stats

calepd's People

Contributors

martinberlin avatar meibao-real avatar thebitguru avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

calepd's Issues

Open for collaboration

This project is open to any external collaboration. Coding/ testing or even ideas about architecture are always welcome.

This is are my current Epaper displays for testing:

  • Waveshare 7.5 800x480 (Given to Carlos my partner in this project)
  • Good display 5.83" | GDEW0583T7 b/w/r 600x448 (Only 3 Color Red/Black/White)
  • Good display 4.2" | GDEW042T2 b/w 400x300
  • Good display 2.13 b/w gdeh0213b73 (Used in TTGO)
  • Good display 2.7 b/w gdew027w3 (TTGO T5S)

Update: New models are only going to appear on the mother project wiki, only after being tested will land here

https://github.com/martinberlin/cale-idf/wiki

Just leave your comments and ideas if you are interested to participate in this project.
Please add your test epapers in case you have any that is not on the list and you are interested on having the class added to CalEPD ESP-IDF Component.

Using the Driver with C coded Program

Hello Martin,
I got some an issue at using the Driver with an C coded Program.
First issue is that you will need to force C++ Compile of the include header gdew075T7.h and others.
The second issue is that there is a wrapper needed to access the functions from the C Code.
Can you please support.
Thanks

Grayscale support in gdew042t2Grays is no longer working

Hi, Martin,

I noticed that the latest gdew042t2Grays.cpp breaks the grayscale support for the display. The following block that forces mono mode (also the default mode) displays the "Starting..." text.

    display.init(false);
    display.setMonoMode(true);
    display.fillScreen(EPD_BLACK);
    display.setTextColor(EPD_WHITE);
    display.drawString(130, 200, "Starting...");
    display.update();

But when I disable the mono mode (i.e., enable grayscale) then it doesn't display anything. Note that I didn't even change the colors in this case to keep it simple.

    display.init(false);
    display.setMonoMode(false);
    display.fillScreen(EPD_BLACK);
    display.setTextColor(EPD_WHITE);
    display.drawString(130, 200, "Starting...");
    display.update();

Note that in the above code display is a very simple wrapper for Gdew042t2Grays that only adds additional functions.

Any ideas on what might be going on here? Here is the datasheet for reference.

Inkplate 6

I'd like to try out the library with an Inkplate 6 - if memory serves, you mentioned in CALE that you already support it, right? Any chance of hints for the necessary settings?

Grayscale in Good Display GDEW042t2

Thank you very much for creating this library! I am working with the Good Display gdew042t2 which supports four gray scales, but I noticed that the library doesn't seem to think that's the case (i.e., it assumes it black and white only). Is that the case or am I misunderstanding something?

Build errors Adafruit-GFX WString.cpp: PGM_P, memcpy_P, strlen_P not declared in this scope

Hello, thanks for the great effort of helping us ESP users use E-Ink displays to save energy and produce sustainable projects โ™ฅ!

At the moment I'm trying to get a hello-eink application to build but failing at Adadruit-GFX Library issues. The display of choice is this small 2.7Inch Waveshare e-Paper HAT.

lib/Adafruit-GFX-Library/Adafruit-GFX-Library-ESP-IDF/glcdfont.c:9:28: error: 'font' defined but not used [-Werror=unused-const-variable=]
 static const unsigned char font[] = {
                            ^~~~
cc1.exe: some warnings being treated as errors
Compiling .pio\build\esp32dev\libe2f\CalEPD\epd.o
Compiling .pio\build\esp32dev\libe2f\CalEPD\epd7color.o
lib/Adafruit-GFX-Library/Adafruit-GFX-Library-ESP-IDF/WString.cpp: In member function 'String& String::copy(const __FlashStringHelper*, unsigned int)':
lib/Adafruit-GFX-Library/Adafruit-GFX-Library-ESP-IDF/WString.cpp:225:26: error: 'PGM_P' was not declared in this scope
     memcpy_P(wbuffer(), (PGM_P)pstr, length + 1); // We know wbuffer() cannot ever be in PROGMEM, so memcpy safe here
                          ^~~~~
lib/Adafruit-GFX-Library/Adafruit-GFX-Library-ESP-IDF/WString.cpp:225:5: error: 'memcpy_P' was not declared in this scope
     memcpy_P(wbuffer(), (PGM_P)pstr, length + 1); // We know wbuffer() cannot ever be in PROGMEM, so memcpy safe here
     ^~~~~~~~
lib/Adafruit-GFX-Library/Adafruit-GFX-Library-ESP-IDF/WString.cpp:225:5: note: suggested alternative: 'memcpy'
     memcpy_P(wbuffer(), (PGM_P)pstr, length + 1); // We know wbuffer() cannot ever be in PROGMEM, so memcpy safe here
     ^~~~~~~~
     memcpy
...

My current setup is just a plain PlatformIO project using an ESP32Devkit board with custom libraries built using submodules of your two repos.

CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/esp32dev.html
PLATFORM: Espressif 32 (3.4.0) > Espressif ESP32 Dev Module
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash

Dependency Graph
|-- <calepd> 1.0.0
|   |-- <adafruit-gfx-library-esp-idf> 1.0.0

PACKAGES:
 - framework-espidf 3.40301.0 (4.3.1)
 - tool-cmake 3.16.4
 - tool-esptoolpy 1.30100.210531 (3.1.0)
 - tool-idf 1.0.1
 - tool-mconf 1.4060000.20190628 (406.0.0)
 - tool-ninja 1.9.0
 - toolchain-esp32ulp 1.22851.191205 (2.28.51)
 - toolchain-riscv32-esp 8.4.0+2021r1
 - toolchain-xtensa-esp32 8.4.0+2021r1
 - toolchain-xtensa-esp32s2 8.4.0+2021r1

Basically the issue seems that required dependencies are missing (PGM_P, memcpy_P).
Could it be that there are additional setup steps missing?

Unable to get the display working

Dear all,

After the successfull implementation using arduino studio I would like to move to ESP-IDF.

I have following hardware:

ESP32 SKU 15823
Waveshare 800ร—480, 7.5inch E-Ink raw display SKU 15823

I use VSCode with ESP-IDF Plugin. I am able to compile and flash the project and does not have any exception in the output while executing the test code on the ESP32 (see below), though I dont see any output on the screen. Do you have a hint what else shall I check? May be some additional driver / SPI configuration has to be adopted?

'
I (312) spi_flash: flash io: dio
CalEPD component version 1.0.6
Gdew075T7() constructor injects IO and extends Adafruit_GFX(800,480) Pix Buffer[48000]

Available heap after Epd bootstrap:133776
I (331) cpu_start: Starting scheduler on PRO CPU.
I (0) cpu_start: Starting scheduler on APP CPU.
CalEPD version: 1.0.6
EpdSPI started at frequency: 4000000
Sending a 48000 bytes buffer via SPI
'

`#include <stdio.h>
#include "sdkconfig.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_system.h"
#include "esp_spi_flash.h"
#include <Gdew075T7.h>
#include <Fonts/ubuntu/Ubuntu_M18pt8b.h>

EpdSpi io;
Gdew075T7 display(io);

extern "C" {
void app_main(void);
}

void delay(uint32_t millis) { vTaskDelay(millis / portTICK_PERIOD_MS); }

void app_main(void)
{

printf("CalEPD version: %s\n", CALEPD_VERSION);
// Test Epd class
display.init(false);

//display.setRotation(2);
//display.update();return;
//delay(1000);

uint8_t rectW = display.width()/4; // For 11 is 37.

uint16_t foregroundColor = EPD_WHITE;
// First does not work
display.fillScreen(EPD_BLACK);
display.update();

//return;
display.fillScreen(EPD_WHITE);
uint16_t firstBlock = display.width()/4;
display.fillRect( 1,1,rectW, firstBlock,foregroundColor);
display.fillRect(rectW,1,rectW, firstBlock,EPD_WHITE);
display.fillRect(rectW2,1,rectW,firstBlock,foregroundColor);
display.fillRect(rectW
3,1,rectW-2,firstBlock,EPD_WHITE);

display.fillRect( 1,firstBlock,rectW,firstBlock,EPD_BLACK);
display.fillRect(rectW,firstBlock,rectW,firstBlock,foregroundColor);
display.fillRect(rectW2,firstBlock,rectW,firstBlock,EPD_BLACK);
display.fillRect(rectW
3,firstBlock,rectW-2,firstBlock,foregroundColor);

display.setCursor(display.width()/2-130,display.height()-90);
display.setTextColor(EPD_WHITE);
display.setFont(&Ubuntu_M18pt8b);
display.println("BERLIN");
display.setTextColor(EPD_BLACK);
display.println("demo-epaper.cpp full update is done!");
display.update();
// Leave the epaper White ready for storage
// delay(2000);
// display.fillScreen(EPD_WHITE);
display.update();
return;

}
`

Any way to integrate CalEPD to standard ESP32 project written on C lang?

Hey there, thanks for all the work you've done, it's great library and Wiki is amazing!

I managed to build your component in C++ enviroment, ran demos and tryied different API calls with no problems.

However, I had no success in integration with my project, which was designed in C language from the start (as most ESP32 code base actually is).

I tried to switch my project to cpp but it throwing a lot of problems related to esp-idf, it's obvious that I miss something.
And I know, that's it's kinda dumb to post such issue, but maybe you had experience in integration of this lib to native c project and we could figure it out to clear out for somebody and make a new wiki page.

My ESP-IDF version is 4.4.2. I probably could not share the whole sources, but maybe I could replicate this problem with another project, of cource if it's worth trying and you interested.

Here some links, that I refered to:

  1. https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/cplusplus.html#cplusplus-exceptions
  2. https://isocpp.org/wiki/faq/mixing-c-and-cpp
  3. https://esp32.com/viewtopic.php?t=13186

And log seems to be something like this:

C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:124:34: error: conflicting declaration of C function 'constexpr timer_intr_t operator~(timer_intr_t)'
 FORCE_INLINE_ATTR constexpr TYPE operator~ (TYPE a) { return (TYPE)~(INT_TYPE)a; } \
                                  ^~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:136:29: note: in expansion of macro 'FLAG_ATTR_IMPL'
 #define FLAG_ATTR_U32(TYPE) FLAG_ATTR_IMPL(TYPE, uint32_t)
                             ^~~~~~~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:137:19: note: in expansion of macro 'FLAG_ATTR_U32'
 #define FLAG_ATTR FLAG_ATTR_U32
                   ^~~~~~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/hal/include/hal/timer_types.h:80:1: note: in expansion of macro 'FLAG_ATTR'
 FLAG_ATTR(timer_intr_t)
 ^~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:124:34: note: previous declaration 'constexpr spi_event_t operator~(spi_event_t)'
 FORCE_INLINE_ATTR constexpr TYPE operator~ (TYPE a) { return (TYPE)~(INT_TYPE)a; } \
                                  ^~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:136:29: note: in expansion of macro 'FLAG_ATTR_IMPL'
 #define FLAG_ATTR_U32(TYPE) FLAG_ATTR_IMPL(TYPE, uint32_t)
                             ^~~~~~~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:137:19: note: in expansion of macro 'FLAG_ATTR_U32'
 #define FLAG_ATTR FLAG_ATTR_U32
                   ^~~~~~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/hal/include/hal/spi_types.h:47:1: note: in expansion of macro 'FLAG_ATTR'
 FLAG_ATTR(spi_event_t)
 ^~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:125:34: error: conflicting declaration of C function 'constexpr timer_intr_t operator|(timer_intr_t, timer_intr_t)'
 FORCE_INLINE_ATTR constexpr TYPE operator| (TYPE a, TYPE b) { return (TYPE)((INT_TYPE)a | (INT_TYPE)b); } \
                                  ^~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:136:29: note: in expansion of macro 'FLAG_ATTR_IMPL'
 #define FLAG_ATTR_U32(TYPE) FLAG_ATTR_IMPL(TYPE, uint32_t)
                             ^~~~~~~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:137:19: note: in expansion of macro 'FLAG_ATTR_U32'
 #define FLAG_ATTR FLAG_ATTR_U32
                   ^~~~~~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/hal/include/hal/timer_types.h:80:1: note: in expansion of macro 'FLAG_ATTR'
 FLAG_ATTR(timer_intr_t)
 ^~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:125:34: note: previous declaration 'constexpr spi_event_t operator|(spi_event_t, spi_event_t)'
 FORCE_INLINE_ATTR constexpr TYPE operator| (TYPE a, TYPE b) { return (TYPE)((INT_TYPE)a | (INT_TYPE)b); } \
                                  ^~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:136:29: note: in expansion of macro 'FLAG_ATTR_IMPL'
 #define FLAG_ATTR_U32(TYPE) FLAG_ATTR_IMPL(TYPE, uint32_t)
                             ^~~~~~~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:137:19: note: in expansion of macro 'FLAG_ATTR_U32'
 #define FLAG_ATTR FLAG_ATTR_U32
                   ^~~~~~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/hal/include/hal/spi_types.h:47:1: note: in expansion of macro 'FLAG_ATTR'
 FLAG_ATTR(spi_event_t)
 ^~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:126:34: error: conflicting declaration of C function 'constexpr timer_intr_t operator&(timer_intr_t, timer_intr_t)'
 FORCE_INLINE_ATTR constexpr TYPE operator& (TYPE a, TYPE b) { return (TYPE)((INT_TYPE)a & (INT_TYPE)b); } \
                                  ^~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:136:29: note: in expansion of macro 'FLAG_ATTR_IMPL'
 #define FLAG_ATTR_U32(TYPE) FLAG_ATTR_IMPL(TYPE, uint32_t)
                             ^~~~~~~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:137:19: note: in expansion of macro 'FLAG_ATTR_U32'
 #define FLAG_ATTR FLAG_ATTR_U32
                   ^~~~~~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/hal/include/hal/timer_types.h:80:1: note: in expansion of macro 'FLAG_ATTR'
 FLAG_ATTR(timer_intr_t)
 ^~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:126:34: note: previous declaration 'constexpr spi_event_t operator&(spi_event_t, spi_event_t)'
 FORCE_INLINE_ATTR constexpr TYPE operator& (TYPE a, TYPE b) { return (TYPE)((INT_TYPE)a & (INT_TYPE)b); } \
                                  ^~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:136:29: note: in expansion of macro 'FLAG_ATTR_IMPL'
 #define FLAG_ATTR_U32(TYPE) FLAG_ATTR_IMPL(TYPE, uint32_t)
                             ^~~~~~~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:137:19: note: in expansion of macro 'FLAG_ATTR_U32'
 #define FLAG_ATTR FLAG_ATTR_U32
                   ^~~~~~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/hal/include/hal/spi_types.h:47:1: note: in expansion of macro 'FLAG_ATTR'
 FLAG_ATTR(spi_event_t)
 ^~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:127:34: error: conflicting declaration of C function 'constexpr timer_intr_t operator^(timer_intr_t, timer_intr_t)'
 FORCE_INLINE_ATTR constexpr TYPE operator^ (TYPE a, TYPE b) { return (TYPE)((INT_TYPE)a ^ (INT_TYPE)b); } \
                                  ^~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:136:29: note: in expansion of macro 'FLAG_ATTR_IMPL'
 #define FLAG_ATTR_U32(TYPE) FLAG_ATTR_IMPL(TYPE, uint32_t)
                             ^~~~~~~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:137:19: note: in expansion of macro 'FLAG_ATTR_U32'
 #define FLAG_ATTR FLAG_ATTR_U32
                   ^~~~~~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/hal/include/hal/timer_types.h:80:1: note: in expansion of macro 'FLAG_ATTR'
 FLAG_ATTR(timer_intr_t)
 ^~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:127:34: note: previous declaration 'constexpr spi_event_t operator^(spi_event_t, spi_event_t)'
 FORCE_INLINE_ATTR constexpr TYPE operator^ (TYPE a, TYPE b) { return (TYPE)((INT_TYPE)a ^ (INT_TYPE)b); } \
                                  ^~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:136:29: note: in expansion of macro 'FLAG_ATTR_IMPL'
 #define FLAG_ATTR_U32(TYPE) FLAG_ATTR_IMPL(TYPE, uint32_t)
                             ^~~~~~~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:137:19: note: in expansion of macro 'FLAG_ATTR_U32'
 #define FLAG_ATTR FLAG_ATTR_U32
                   ^~~~~~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/hal/include/hal/spi_types.h:47:1: note: in expansion of macro 'FLAG_ATTR'
 FLAG_ATTR(spi_event_t)
 ^~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:128:34: error: conflicting declaration of C function 'constexpr timer_intr_t operator>>(timer_intr_t, int)'
 FORCE_INLINE_ATTR constexpr TYPE operator>> (TYPE a, int b) { return (TYPE)((INT_TYPE)a >> b); } \
                                  ^~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:136:29: note: in expansion of macro 'FLAG_ATTR_IMPL'
 #define FLAG_ATTR_U32(TYPE) FLAG_ATTR_IMPL(TYPE, uint32_t)
                             ^~~~~~~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:137:19: note: in expansion of macro 'FLAG_ATTR_U32'
 #define FLAG_ATTR FLAG_ATTR_U32
                   ^~~~~~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/hal/include/hal/timer_types.h:80:1: note: in expansion of macro 'FLAG_ATTR'
 FLAG_ATTR(timer_intr_t)
 ^~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:128:34: note: previous declaration 'constexpr spi_event_t operator>>(spi_event_t, int)'
 FORCE_INLINE_ATTR constexpr TYPE operator>> (TYPE a, int b) { return (TYPE)((INT_TYPE)a >> b); } \
                                  ^~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:136:29: note: in expansion of macro 'FLAG_ATTR_IMPL'
 #define FLAG_ATTR_U32(TYPE) FLAG_ATTR_IMPL(TYPE, uint32_t)
                             ^~~~~~~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:137:19: note: in expansion of macro 'FLAG_ATTR_U32'
 #define FLAG_ATTR FLAG_ATTR_U32
                   ^~~~~~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/hal/include/hal/spi_types.h:47:1: note: in expansion of macro 'FLAG_ATTR'
 FLAG_ATTR(spi_event_t)
 ^~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:129:34: error: conflicting declaration of C function 'constexpr timer_intr_t operator<<(timer_intr_t, int)'
 FORCE_INLINE_ATTR constexpr TYPE operator<< (TYPE a, int b) { return (TYPE)((INT_TYPE)a << b); } \
                                  ^~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:136:29: note: in expansion of macro 'FLAG_ATTR_IMPL'
 #define FLAG_ATTR_U32(TYPE) FLAG_ATTR_IMPL(TYPE, uint32_t)
                             ^~~~~~~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:137:19: note: in expansion of macro 'FLAG_ATTR_U32'
 #define FLAG_ATTR FLAG_ATTR_U32
                   ^~~~~~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/hal/include/hal/timer_types.h:80:1: note: in expansion of macro 'FLAG_ATTR'
 FLAG_ATTR(timer_intr_t)
 ^~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:129:34: note: previous declaration 'constexpr spi_event_t operator<<(spi_event_t, int)'
 FORCE_INLINE_ATTR constexpr TYPE operator<< (TYPE a, int b) { return (TYPE)((INT_TYPE)a << b); } \
                                  ^~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:136:29: note: in expansion of macro 'FLAG_ATTR_IMPL'
 #define FLAG_ATTR_U32(TYPE) FLAG_ATTR_IMPL(TYPE, uint32_t)
                             ^~~~~~~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:137:19: note: in expansion of macro 'FLAG_ATTR_U32'
 #define FLAG_ATTR FLAG_ATTR_U32
                   ^~~~~~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/hal/include/hal/spi_types.h:47:1: note: in expansion of macro 'FLAG_ATTR'
 FLAG_ATTR(spi_event_t)
 ^~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:130:25: error: conflicting declaration of C function 'timer_intr_t& operator|=(timer_intr_t&, timer_intr_t)'
 FORCE_INLINE_ATTR TYPE& operator|=(TYPE& a, TYPE b) { a = a | b; return a; } \
                         ^~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:136:29: note: in expansion of macro 'FLAG_ATTR_IMPL'
 #define FLAG_ATTR_U32(TYPE) FLAG_ATTR_IMPL(TYPE, uint32_t)
                             ^~~~~~~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:137:19: note: in expansion of macro 'FLAG_ATTR_U32'
 #define FLAG_ATTR FLAG_ATTR_U32
                   ^~~~~~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/hal/include/hal/timer_types.h:80:1: note: in expansion of macro 'FLAG_ATTR'
 FLAG_ATTR(timer_intr_t)
 ^~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:130:25: note: previous declaration 'spi_event_t& operator|=(spi_event_t&, spi_event_t)'
 FORCE_INLINE_ATTR TYPE& operator|=(TYPE& a, TYPE b) { a = a | b; return a; } \
                         ^~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:136:29: note: in expansion of macro 'FLAG_ATTR_IMPL'
 #define FLAG_ATTR_U32(TYPE) FLAG_ATTR_IMPL(TYPE, uint32_t)
                             ^~~~~~~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:137:19: note: in expansion of macro 'FLAG_ATTR_U32'
 #define FLAG_ATTR FLAG_ATTR_U32
                   ^~~~~~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/hal/include/hal/spi_types.h:47:1: note: in expansion of macro 'FLAG_ATTR'
 FLAG_ATTR(spi_event_t)
 ^~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:131:25: error: conflicting declaration of C function 'timer_intr_t& operator&=(timer_intr_t&, timer_intr_t)'
 FORCE_INLINE_ATTR TYPE& operator&=(TYPE& a, TYPE b) { a = a & b; return a; } \
                         ^~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:136:29: note: in expansion of macro 'FLAG_ATTR_IMPL'
 #define FLAG_ATTR_U32(TYPE) FLAG_ATTR_IMPL(TYPE, uint32_t)
                             ^~~~~~~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:137:19: note: in expansion of macro 'FLAG_ATTR_U32'
 #define FLAG_ATTR FLAG_ATTR_U32
                   ^~~~~~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/hal/include/hal/timer_types.h:80:1: note: in expansion of macro 'FLAG_ATTR'
 FLAG_ATTR(timer_intr_t)
 ^~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:131:25: note: previous declaration 'spi_event_t& operator&=(spi_event_t&, spi_event_t)'
 FORCE_INLINE_ATTR TYPE& operator&=(TYPE& a, TYPE b) { a = a & b; return a; } \
                         ^~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:136:29: note: in expansion of macro 'FLAG_ATTR_IMPL'
 #define FLAG_ATTR_U32(TYPE) FLAG_ATTR_IMPL(TYPE, uint32_t)
                             ^~~~~~~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:137:19: note: in expansion of macro 'FLAG_ATTR_U32'
 #define FLAG_ATTR FLAG_ATTR_U32
                   ^~~~~~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/hal/include/hal/spi_types.h:47:1: note: in expansion of macro 'FLAG_ATTR'
 FLAG_ATTR(spi_event_t)
 ^~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:132:25: error: conflicting declaration of C function 'timer_intr_t& operator^=(timer_intr_t&, timer_intr_t)'
 FORCE_INLINE_ATTR TYPE& operator^=(TYPE& a, TYPE b) { a = a ^ b; return a; } \
                         ^~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:136:29: note: in expansion of macro 'FLAG_ATTR_IMPL'
 #define FLAG_ATTR_U32(TYPE) FLAG_ATTR_IMPL(TYPE, uint32_t)
                             ^~~~~~~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:137:19: note: in expansion of macro 'FLAG_ATTR_U32'
 #define FLAG_ATTR FLAG_ATTR_U32
                   ^~~~~~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/hal/include/hal/timer_types.h:80:1: note: in expansion of macro 'FLAG_ATTR'
 FLAG_ATTR(timer_intr_t)
 ^~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:132:25: note: previous declaration 'spi_event_t& operator^=(spi_event_t&, spi_event_t)'
 FORCE_INLINE_ATTR TYPE& operator^=(TYPE& a, TYPE b) { a = a ^ b; return a; } \
                         ^~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:136:29: note: in expansion of macro 'FLAG_ATTR_IMPL'
 #define FLAG_ATTR_U32(TYPE) FLAG_ATTR_IMPL(TYPE, uint32_t)
                             ^~~~~~~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:137:19: note: in expansion of macro 'FLAG_ATTR_U32'
 #define FLAG_ATTR FLAG_ATTR_U32
                   ^~~~~~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/hal/include/hal/spi_types.h:47:1: note: in expansion of macro 'FLAG_ATTR'
 FLAG_ATTR(spi_event_t)
 ^~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:133:25: error: conflicting declaration of C function 'timer_intr_t& operator>>=(timer_intr_t&, int)'
 FORCE_INLINE_ATTR TYPE& operator>>=(TYPE& a, int b) { a >>= b; return a; } \
                         ^~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:136:29: note: in expansion of macro 'FLAG_ATTR_IMPL'
 #define FLAG_ATTR_U32(TYPE) FLAG_ATTR_IMPL(TYPE, uint32_t)
                             ^~~~~~~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:137:19: note: in expansion of macro 'FLAG_ATTR_U32'
 #define FLAG_ATTR FLAG_ATTR_U32
                   ^~~~~~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/hal/include/hal/timer_types.h:80:1: note: in expansion of macro 'FLAG_ATTR'
 FLAG_ATTR(timer_intr_t)
 ^~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:133:25: note: previous declaration 'spi_event_t& operator>>=(spi_event_t&, int)'
 FORCE_INLINE_ATTR TYPE& operator>>=(TYPE& a, int b) { a >>= b; return a; } \
                         ^~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:136:29: note: in expansion of macro 'FLAG_ATTR_IMPL'
 #define FLAG_ATTR_U32(TYPE) FLAG_ATTR_IMPL(TYPE, uint32_t)
                             ^~~~~~~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:137:19: note: in expansion of macro 'FLAG_ATTR_U32'
 #define FLAG_ATTR FLAG_ATTR_U32
                   ^~~~~~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/hal/include/hal/spi_types.h:47:1: note: in expansion of macro 'FLAG_ATTR'
 FLAG_ATTR(spi_event_t)
 ^~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:134:25: error: conflicting declaration of C function 'timer_intr_t& operator<<=(timer_intr_t&, int)'
 FORCE_INLINE_ATTR TYPE& operator<<=(TYPE& a, int b) { a <<= b; return a; }
                         ^~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:136:29: note: in expansion of macro 'FLAG_ATTR_IMPL'
 #define FLAG_ATTR_U32(TYPE) FLAG_ATTR_IMPL(TYPE, uint32_t)
                             ^~~~~~~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:137:19: note: in expansion of macro 'FLAG_ATTR_U32'
 #define FLAG_ATTR FLAG_ATTR_U32
                   ^~~~~~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/hal/include/hal/timer_types.h:80:1: note: in expansion of macro 'FLAG_ATTR'
 FLAG_ATTR(timer_intr_t)
 ^~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:134:25: note: previous declaration 'spi_event_t& operator<<=(spi_event_t&, int)'
 FORCE_INLINE_ATTR TYPE& operator<<=(TYPE& a, int b) { a <<= b; return a; }
                         ^~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:136:29: note: in expansion of macro 'FLAG_ATTR_IMPL'
 #define FLAG_ATTR_U32(TYPE) FLAG_ATTR_IMPL(TYPE, uint32_t)
                             ^~~~~~~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/esp_common/include/esp_attr.h:137:19: note: in expansion of macro 'FLAG_ATTR_U32'
 #define FLAG_ATTR FLAG_ATTR_U32
                   ^~~~~~~~~~~~~
C:/Espressif/frameworks/esp-idf-v4.4.2/components/hal/include/hal/spi_types.h:47:1: note: in expansion of macro 'FLAG_ATTR'
 FLAG_ATTR(spi_event_t)
 ^~~~~~~~~
C:/Projects/InventoryTrackingSystem/FW/InterfaceBoard/main/main.cpp: In function 'void app_main()':
C:/Projects/InventoryTrackingSystem/FW/InterfaceBoard/main/main.cpp:116:29: error: invalid conversion from 'esp_err_t (*)(void*)' {aka 'int (*)(void*)'} to 'TaskFunction_t' {aka 'void (*)(void*)'} [-fpermissive]
     xTaskCreatePinnedToCore(&Buzzer_MainTask,     "Buzzer_MainTask",        2048,   (void*)(&xBuzzerCmdQueue),      1, NULL, 1);
                             ^~~~~~~~~~~~~~~~
In file included from C:/Projects/InventoryTrackingSystem/FW/InterfaceBoard/main/main.cpp:6:
C:/Espressif/frameworks/esp-idf-v4.4.2/components/freertos/include/freertos/task.h:344:56: note:   initializing argument 1 of 'BaseType_t xTaskCreatePinnedToCore(TaskFunction_t, const char*, uint32_t, void*, UBaseType_t, void**, BaseType_t)'
     BaseType_t xTaskCreatePinnedToCore( TaskFunction_t pvTaskCode,
                                         ~~~~~~~~~~~~~~~^~~~~~~~~~
C:/Projects/InventoryTrackingSystem/FW/InterfaceBoard/main/main.cpp:117:29: error: invalid conversion from 'esp_err_t (*)(void*)' {aka 'int (*)(void*)'} to 'TaskFunction_t' {aka 'void (*)(void*)'} [-fpermissive]
     xTaskCreatePinnedToCore(&RgbHandler_MainTask,       "RgbHandler_MainTask",          2048,   (void*)(&xRgbCmdQueue),         5, NULL, 1);
                             ^~~~~~~~~~~~~~~~~~~~
In file included from C:/Projects/InventoryTrackingSystem/FW/InterfaceBoard/main/main.cpp:6:
C:/Espressif/frameworks/esp-idf-v4.4.2/components/freertos/include/freertos/task.h:344:56: note:   initializing argument 1 of 'BaseType_t xTaskCreatePinnedToCore(TaskFunction_t, const char*, uint32_t, void*, UBaseType_t, void**, BaseType_t)'
     BaseType_t xTaskCreatePinnedToCore( TaskFunction_t pvTaskCode,
                                         ~~~~~~~~~~~~~~~^~~~~~~~~~
ninja: build stopped: subcommand failed.
ninja failed with exit code 1

3 Wire SPI

Hi!
The https://www.good-display.com/product/285.html display I'm using supports 3-wire SPI where the D/#C is not needed. Instead the D/#C is the first bit of transfer indicating data/command. Does this component support this? I couldn't find anything hinting on this when looking briefly, but I might be missing something. Otherwise I can look into supporting this (if/when I have time at some point).

Missing driver component in ESP IDF v5?

Hi, @martinberlin!

I am starting to get back into my project. I saw that ESP IDF v5 requires explicitly including the driver component, which I didn't see in the CMakeList. How did you get around this without including the driver component? Without that, I get the following error.

In file included from components/CalEPD/epdspi.cpp:2:
components/CalEPD/include/epdspi.h:2:10: fatal error: driver/spi_master.h: No such file or directory
    2 | #include "driver/spi_master.h"
      |          ^~~~~~~~~~~~~~~~~~~~~
compilation terminated.

Question about Adafruit GFX Dependency

Hi Martin,

I want use the library to write an existing byte array of pixel data to the 7.5inch 480 * 800 display from Waveshare on the ESP32.
(I am creating the byte array server-side and then downloading it on the ESP32.)

Since I already have the pre-rendered pixels, do I still need the Adafruit GFX dependency? Or can I use CalEPD without it?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.