-
-
Notifications
You must be signed in to change notification settings - Fork 265
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
v2.7 (and probably earlier) not compatible with older ESP cores (2.4.2 / 2.7.4) #586
Comments
I just don't have the personal bandwith to be backward compatible when things change in cores, so to use older cores requires that you use older library versions or branch and make the changes to a local version yourself. |
Yes understand. Well i am going to see if i can mange to get the latest version to compile with an older core, while maintaining compatibility. |
My suggestion is to add a compatibility file (ex: Esp8266_Core_Comp.h) that you include all these things into, then inside add the statements like you mentioned inside. Then in every esp8266 specific method .h file in neopixelbus, include this header file.
|
Seriously ? Look i am just trying to get it to work, Adding the IRAM_ATTR was easy enough, removing the [[maybe unused]] also didn't cause any issue, but within the bitbangmethod there are IRAM_ATTR in a cpp file which are being ignored and were moved to a 'C' file to prevent that, well that is a bit beyond me though. When i just remove the reference to the .h file and remove the .cpp file, but now a cryptic message shows up |
keep documenting what you find, it will help reduce the effort for me when I can find the time to try to solve this. |
Yeah no worries, well i got it sorted, and it works for core 2.4.2, but basically i think it is the same for any core before 3.0.0
` public: ` |
I have the same problems:
Generic ESP8266 module On latest OSX version. It also doesnt work in the arduino web editor. |
Edit: Works fine after updating the esp8266 arduino library! |
When Compiling with v2.7 for Generic ESP8266 using core 2.4.2 I get a whole heap of error messages. When using ESP core 3.0.2 these are not there and everything compiles just fine.
While using an older version of Neopixelbus (don't know which one actually couldn't retrieve that info somehow) these do not show up.
`Arduino: 1.8.19 (Windows 10), Board: "Generic ESP8266 Module, 80 MHz, Flash, ck, 26 MHz, 40MHz, QIO, 512K (no SPIFFS), 2, v2 Lower Memory, Disabled, None, Only Sketch, 115200"
In file included from C:\Arduino Files\Sketches\libraries\NeoPixelBus-master\src/internal/NeoEsp8266DmaMethod.h:34:0,
C:\Arduino Files\Sketches\libraries\NeoPixelBus-master\src/internal/NeoEsp8266I2sMethodCore.h:105:17: error: variable or field 'IRAM_ATTR' declared void
C:\Arduino Files\Sketches\libraries\NeoPixelBus-master\src/internal/NeoEsp8266I2sMethodCore.h:105:17: error: expected ';' at end of member declaration
C:\Arduino Files\Sketches\libraries\NeoPixelBus-master\src/internal/NeoEsp8266I2sMethodCore.h:105:43: error: ISO C++ forbids declaration of 'i2s_slc_isr' with no type [-fpermissive]
In file included from C:\Users\Rishi\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2\cores\esp8266/pgmspace.h:10:0,
C:\Arduino Files\Sketches\libraries\NeoPixelBus-master\src/internal/NeoEsp8266I2sMethodCore.h: In member function 'void NeoEsp8266I2sMethodCore::InitializeI2s(uint32_t, uint32_t)':
C:\Users\Rishi\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2/tools/sdk/include/ets_sys.h:170:54: error: invalid use of member function (did you forget the '()' ?)
C:\Arduino Files\Sketches\libraries\NeoPixelBus-master\src/internal/NeoEsp8266I2sMethodCore.h:269:9: note: in expansion of macro 'ETS_SLC_INTR_ATTACH'
In file included from C:\Arduino Files\Sketches\libraries\NeoPixelBus-master\src/NeoPixelBus.h:105:0,
C:\Arduino Files\Sketches\libraries\NeoPixelBus-master\src/internal/NeoEsp8266DmaMethod.h: At global scope:
C:\Arduino Files\Sketches\libraries\NeoPixelBus-master\src/internal/NeoEsp8266DmaMethod.h:214:29: error: expected unqualified-id before '[' token
C:\Arduino Files\Sketches\libraries\NeoPixelBus-master\src/internal/NeoEsp8266DmaMethod.h:214:29: error: expected ')' before '[' token
C:\Arduino Files\Sketches\libraries\NeoPixelBus-master\src/internal/NeoEsp8266DmaMethod.h:251:10: error: variable or field 'IRAM_ATTR' declared void
C:\Arduino Files\Sketches\libraries\NeoPixelBus-master\src/internal/NeoEsp8266DmaMethod.h:251:10: error: expected ';' at end of member declaration
C:\Arduino Files\Sketches\libraries\NeoPixelBus-master\src/internal/NeoEsp8266DmaMethod.h:251:31: error: ISO C++ forbids declaration of 'Update' with no type [-fpermissive]
In file included from C:\Arduino Files\Sketches\libraries\NeoPixelBus-master\src/NeoPixelBus.h:106:0,
C:\Arduino Files\Sketches\libraries\NeoPixelBus-master\src/internal/NeoEsp8266I2sDmx512Method.h:151:35: error: expected unqualified-id before '[' token
C:\Arduino Files\Sketches\libraries\NeoPixelBus-master\src/internal/NeoEsp8266I2sDmx512Method.h:151:35: error: expected ')' before '[' token
In file included from C:\Arduino Files\Sketches\libraries\NeoPixelBus-master\src/NeoPixelBus.h:106:0,
C:\Arduino Files\Sketches\libraries\NeoPixelBus-master\src/internal/NeoEsp8266I2sDmx512Method.h:188:10: error: variable or field 'IRAM_ATTR' declared void
C:\Arduino Files\Sketches\libraries\NeoPixelBus-master\src/internal/NeoEsp8266I2sDmx512Method.h:188:10: error: expected ';' at end of member declaration
C:\Arduino Files\Sketches\libraries\NeoPixelBus-master\src/internal/NeoEsp8266I2sDmx512Method.h:188:31: error: ISO C++ forbids declaration of 'Update' with no type [-fpermissive]
In file included from C:\Arduino Files\Sketches\libraries\NeoPixelBus-master\src/NeoPixelBus.h:107:0,
C:\Arduino Files\Sketches\libraries\NeoPixelBus-master\src/internal/NeoEsp8266UartMethod.h:40:27: error: 'IRAM_ATTR' declared as an 'inline' field
C:\Arduino Files\Sketches\libraries\NeoPixelBus-master\src/internal/NeoEsp8266UartMethod.h:40:27: error: expected ';' at end of member declaration
C:\Arduino Files\Sketches\libraries\NeoPixelBus-master\src/internal/NeoEsp8266UartMethod.h:40:68: error: ISO C++ forbids declaration of 'GetTxFifoLength' with no type [-fpermissive]
C:\Arduino Files\Sketches\libraries\NeoPixelBus-master\src/internal/NeoEsp8266UartMethod.h:45:24: error: variable or field 'IRAM_ATTR' declared void
C:\Arduino Files\Sketches\libraries\NeoPixelBus-master\src/internal/NeoEsp8266UartMethod.h:45:24: error: expected ';' at end of member declaration
C:\Arduino Files\Sketches\libraries\NeoPixelBus-master\src/internal/NeoEsp8266UartMethod.h:45:72: error: ISO C++ forbids declaration of 'Enqueue' with no type [-fpermissive]
C:\Arduino Files\Sketches\libraries\NeoPixelBus-master\src/internal/NeoEsp8266UartMethod.h:50:36: error: expected ';' at end of member declaration
C:\Arduino Files\Sketches\libraries\NeoPixelBus-master\src/internal/NeoEsp8266UartMethod.h:50:36: error: redeclaration of 'const volatile uint8_t* NeoEsp8266UartContext::IRAM_ATTR'
C:\Arduino Files\Sketches\libraries\NeoPixelBus-master\src/internal/NeoEsp8266UartMethod.h:40:27: note: previous declaration 'uint8_t NeoEsp8266UartContext::IRAM_ATTR'
C:\Arduino Files\Sketches\libraries\NeoPixelBus-master\src/internal/NeoEsp8266UartMethod.h:52:36: error: ISO C++ forbids declaration of 'FillUartFifo' with no type [-fpermissive]
C:\Arduino Files\Sketches\libraries\NeoPixelBus-master\src/internal/NeoEsp8266UartMethod.h:82:17: error: variable or field 'IRAM_ATTR' declared void
C:\Arduino Files\Sketches\libraries\NeoPixelBus-master\src/internal/NeoEsp8266UartMethod.h:82:17: error: expected ';' at end of member declaration
C:\Arduino Files\Sketches\libraries\NeoPixelBus-master\src/internal/NeoEsp8266UartMethod.h:82:64: error: ISO C++ forbids declaration of 'Isr' with no type [-fpermissive]
C:\Arduino Files\Sketches\libraries\NeoPixelBus-master\src/internal/NeoEsp8266UartMethod.h:244:10: error: variable or field 'IRAM_ATTR' declared void
C:\Arduino Files\Sketches\libraries\NeoPixelBus-master\src/internal/NeoEsp8266UartMethod.h:244:10: error: expected ';' at end of member declaration
C:\Arduino Files\Sketches\libraries\NeoPixelBus-master\src/internal/NeoEsp8266UartMethod.h:244:65: error: ISO C++ forbids declaration of 'InitializeUart' with no type [-fpermissive]
In file included from C:\Arduino Files\Sketches\ESP_Sketches\DumbSeq\DumbSeq_v113\DumbSeq_v113.ino:7:0:
C:\Arduino Files\Sketches\libraries\NeoPixelBus-master\src/NeoPixelBus.h: In instantiation of 'NeoPixelBus<T_COLOR_FEATURE, T_METHOD>::NeoPixelBus(uint16_t, uint8_t) [with T_COLOR_FEATURE = NeoRgbFeature; T_METHOD = NeoEsp8266I2sDmx512MethodBase; uint16_t = short unsigned int; uint8_t = unsigned char]':
C:\Arduino Files\Sketches\ESP_Sketches\DumbSeq\DumbSeq_v113\DumbSeq_v113.ino:79:72: required from here
C:\Arduino Files\Sketches\libraries\NeoPixelBus-master\src/NeoPixelBus.h:143:92: error: no matching function for call to 'NeoEsp8266I2sDmx512MethodBase::NeoEsp8266I2sDmx512MethodBase(uint8_t&, uint16_t&, const size_t&, const size_t&)'
C:\Arduino Files\Sketches\libraries\NeoPixelBus-master\src/NeoPixelBus.h:143:92: note: candidates are:
In file included from C:\Arduino Files\Sketches\libraries\NeoPixelBus-master\src/NeoPixelBus.h:106:0,
C:\Arduino Files\Sketches\libraries\NeoPixelBus-master\src/internal/NeoEsp8266I2sDmx512Method.h:123:5: note: NeoEsp8266I2sDmx512MethodBase<T_SPEED>::NeoEsp8266I2sDmx512MethodBase(uint16_t, size_t, size_t) [with T_SPEED = NeoEsp8266I2sDmx512Speed; uint16_t = short unsigned int; size_t = unsigned int]
C:\Arduino Files\Sketches\libraries\NeoPixelBus-master\src/internal/NeoEsp8266I2sDmx512Method.h:123:5: note: candidate expects 3 arguments, 4 provided
C:\Arduino Files\Sketches\libraries\NeoPixelBus-master\src/internal/NeoEsp8266I2sDmx512Method.h:118:34: note: constexpr NeoEsp8266I2sDmx512MethodBase::NeoEsp8266I2sDmx512MethodBase(const NeoEsp8266I2sDmx512MethodBase&)
template class NeoEsp8266I2sDmx512MethodBase : NeoEsp8266I2sMethodCore
C:\Arduino Files\Sketches\libraries\NeoPixelBus-master\src/internal/NeoEsp8266I2sDmx512Method.h:118:34: note: candidate expects 1 argument, 4 provided
exit status 1
Error compiling for board Generic ESP8266 Module.
`
Some appear to be related to IRAM_ATTR which is undefined in the older cores, but there are also some other which don't make much sense to me.
Anyway as said using an older Neopixelbus version with the older cores works.
Using Neopixelbus 2.7 only works with core 3.0.2 (maybe a few more but that is what i tested)
The text was updated successfully, but these errors were encountered: