Skip to content
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

Error in esp8266 and platformio #116

Closed
psinetron opened this issue Sep 24, 2019 · 7 comments
Closed

Error in esp8266 and platformio #116

psinetron opened this issue Sep 24, 2019 · 7 comments

Comments

@psinetron
Copy link

psinetron commented Sep 24, 2019

Hi!. I don't understand but library not working witk platformio
I use:
platform io
esp8266
software serial is 5.3.0
and I have an error:

`In file included from .pio\libdeps\esp12e\EspSoftwareSerial_ID168\src/SoftwareSerial.h:27:0,
                 from .pio\libdeps\esp12e\EspSoftwareSerial_ID168\src\SoftwareSerial.cpp:23:
.pio\libdeps\esp12e\EspSoftwareSerial_ID168\src/circular_queue/circular_queue.h:145:8: error: expected ';' at end of member declaration
     T& IRAM_ATTR pushpeek()
        ^
.pio\libdeps\esp12e\EspSoftwareSerial_ID168\src/circular_queue/circular_queue.h:145:27: error: ISO C++ forbids declaration of 'pushpeek' with no type [-fpermissive]
     T& IRAM_ATTR pushpeek()
                           ^
.pio\libdeps\esp12e\EspSoftwareSerial_ID168\src/circular_queue/circular_queue.h:157:10: error: expected ';' at end of member declaration
     bool IRAM_ATTR push();
          ^
.pio\libdeps\esp12e\EspSoftwareSerial_ID168\src/circular_queue/circular_queue.h:157:10: error: redeclaration of 'bool circular_queue<T>::IRAM_ATTR'
.pio\libdeps\esp12e\EspSoftwareSerial_ID168\src/circular_queue/circular_queue.h:145:8: note: previous declaration 'T& circular_queue<T>::IRAM_ATTR'
     T& IRAM_ATTR pushpeek()
        ^
.pio\libdeps\esp12e\EspSoftwareSerial_ID168\src/circular_queue/circular_queue.h:157:25: error: ISO C++ forbids declaration of 'push' with no type [-fpermissive]
     bool IRAM_ATTR push();
                         ^
.pio\libdeps\esp12e\EspSoftwareSerial_ID168\src/circular_queue/circular_queue.h:164:10: error: expected ';' at end of member declaration
     bool IRAM_ATTR push(T&& val);
          ^
.pio\libdeps\esp12e\EspSoftwareSerial_ID168\src/circular_queue/circular_queue.h:164:10: error: redeclaration of 'bool circular_queue<T>::IRAM_ATTR'
.pio\libdeps\esp12e\EspSoftwareSerial_ID168\src/circular_queue/circular_queue.h:145:8: note: previous declaration 'T& circular_queue<T>::IRAM_ATTR'
     T& IRAM_ATTR pushpeek()
        ^
.pio\libdeps\esp12e\EspSoftwareSerial_ID168\src/circular_queue/circular_queue.h:164:32: error: ISO C++ forbids declaration of 'push' with no type [-fpermissive]
     bool IRAM_ATTR push(T&& val);
                                ^
.pio\libdeps\esp12e\EspSoftwareSerial_ID168\src/circular_queue/circular_queue.h:171:10: error: expected ';' at end of member declaration
     bool IRAM_ATTR push(const T& val)
          ^
.pio\libdeps\esp12e\EspSoftwareSerial_ID168\src/circular_queue/circular_queue.h:171:10: error: redeclaration of 'bool circular_queue<T>::IRAM_ATTR'
.pio\libdeps\esp12e\EspSoftwareSerial_ID168\src/circular_queue/circular_queue.h:145:8: note: previous declaration 'T& circular_queue<T>::IRAM_ATTR'
     T& IRAM_ATTR pushpeek()
        ^
.pio\libdeps\esp12e\EspSoftwareSerial_ID168\src/circular_queue/circular_queue.h:171:37: error: ISO C++ forbids declaration of 'push' with no type [-fpermissive]
     bool IRAM_ATTR push(const T& val)
                                     ^
.pio\libdeps\esp12e\EspSoftwareSerial_ID168\src/circular_queue/circular_queue.h:253:16: error: expected initializer before 'circular_queue'
 bool IRAM_ATTR circular_queue<T>::push()
                ^
.pio\libdeps\esp12e\EspSoftwareSerial_ID168\src/circular_queue/circular_queue.h:268:16: error: expected initializer before 'circular_queue'
 bool IRAM_ATTR circular_queue<T>::push(T&& val)
                ^
In file included from .pio\libdeps\esp12e\EspSoftwareSerial_ID168\src/SoftwareSerial.h:27:0,
                 from src\main.cpp:6:
.pio\libdeps\esp12e\EspSoftwareSerial_ID168\src/circular_queue/circular_queue.h:145:8: error: expected ';' at end of member declaration
     T& IRAM_ATTR pushpeek()
        ^
.pio\libdeps\esp12e\EspSoftwareSerial_ID168\src/circular_queue/circular_queue.h:145:27: error: ISO C++ forbids declaration of 'pushpeek' with no type [-fpermissive]
     T& IRAM_ATTR pushpeek()
                           ^
.pio\libdeps\esp12e\EspSoftwareSerial_ID168\src/circular_queue/circular_queue.h:157:10: error: expected ';' at end of member declaration
     bool IRAM_ATTR push();
          ^
.pio\libdeps\esp12e\EspSoftwareSerial_ID168\src/circular_queue/circular_queue.h:157:10: error: redeclaration of 'bool circular_queue<T>::IRAM_ATTR'
.pio\libdeps\esp12e\EspSoftwareSerial_ID168\src/circular_queue/circular_queue.h:145:8: note: previous declaration 'T& circular_queue<T>::IRAM_ATTR'
     T& IRAM_ATTR pushpeek()
        ^
.pio\libdeps\esp12e\EspSoftwareSerial_ID168\src/circular_queue/circular_queue.h:157:25: error: ISO C++ forbids declaration of 'push' with no type [-fpermissive]
     bool IRAM_ATTR push();
                         ^
.pio\libdeps\esp12e\EspSoftwareSerial_ID168\src/circular_queue/circular_queue.h:164:10: error: expected ';' at end of member declaration
     bool IRAM_ATTR push(T&& val);
          ^
.pio\libdeps\esp12e\EspSoftwareSerial_ID168\src/circular_queue/circular_queue.h:164:10: error: redeclaration of 'bool circular_queue<T>::IRAM_ATTR'
.pio\libdeps\esp12e\EspSoftwareSerial_ID168\src/circular_queue/circular_queue.h:145:8: note: previous declaration 'T& circular_queue<T>::IRAM_ATTR'
     T& IRAM_ATTR pushpeek()
        ^
.pio\libdeps\esp12e\EspSoftwareSerial_ID168\src/circular_queue/circular_queue.h:164:32: error: ISO C++ forbids declaration of 'push' with no type [-fpermissive]
     bool IRAM_ATTR push(T&& val);
                                ^
.pio\libdeps\esp12e\EspSoftwareSerial_ID168\src/circular_queue/circular_queue.h:171:10: error: expected ';' at end of member declaration
     bool IRAM_ATTR push(const T& val)
          ^
.pio\libdeps\esp12e\EspSoftwareSerial_ID168\src/circular_queue/circular_queue.h:171:10: error: redeclaration of 'bool circular_queue<T>::IRAM_ATTR'
.pio\libdeps\esp12e\EspSoftwareSerial_ID168\src/circular_queue/circular_queue.h:145:8: note: previous declaration 'T& circular_queue<T>::IRAM_ATTR'
     T& IRAM_ATTR pushpeek()
        ^
.pio\libdeps\esp12e\EspSoftwareSerial_ID168\src/circular_queue/circular_queue.h:171:37: error: ISO C++ forbids declaration of 'push' with no type [-fpermissive]
     bool IRAM_ATTR push(const T& val)
                                     ^
.pio\libdeps\esp12e\EspSoftwareSerial_ID168\src/circular_queue/circular_queue.h:253:16: error: expected initializer before 'circular_queue'
 bool IRAM_ATTR circular_queue<T>::push()
                ^
.pio\libdeps\esp12e\EspSoftwareSerial_ID168\src/circular_queue/circular_queue.h:268:16: error: expected initializer before 'circular_queue'
 bool IRAM_ATTR circular_queue<T>::push(T&& val)
                ^
.pio\libdeps\esp12e\EspSoftwareSerial_ID168\src\SoftwareSerial.cpp: In member function 'void SoftwareSerial::enableRx(bool)':
.pio\libdeps\esp12e\EspSoftwareSerial_ID168\src\SoftwareSerial.cpp:140:121: error: 'attachInterruptArg' was not declared in this scope
             attachInterruptArg(digitalPinToInterrupt(m_rxPin), reinterpret_cast<void (*)(void*)>(rxBitISR), this, CHANGE);

 ^
In file included from .pio\libdeps\esp12e\EspSoftwareSerial_ID168\src/SoftwareSerial.h:27:0,
                 from .pio\libdeps\esp12e\EspSoftwareSerial_ID168\src\SoftwareSerial.cpp:23:
.pio\libdeps\esp12e\EspSoftwareSerial_ID168\src/circular_queue/circular_queue.h: In instantiation of 'circular_queue<T>::circular_queue(size_t) [with T = unsigned char; size_t = unsigned int]':
.pio\libdeps\esp12e\EspSoftwareSerial_ID168\src\SoftwareSerial.cpp:58:122:   required from here
.pio\libdeps\esp12e\EspSoftwareSerial_ID168\src/circular_queue/circular_queue.h:62:5: error: uninitialized reference member 'circular_queue<unsigned char>::IRAM_ATTR' [-fpermissive]
     circular_queue(const size_t capacity) : m_bufSize(capacity + 1), m_buffer(new T[m_bufSize])
     ^
.pio\libdeps\esp12e\EspSoftwareSerial_ID168\src/circular_queue/circular_queue.h: In instantiation of 'circular_queue<T>::circular_queue(size_t) [with T = unsigned int; size_t = unsigned int]':
.pio\libdeps\esp12e\EspSoftwareSerial_ID168\src\SoftwareSerial.cpp:60:170:   required from here
.pio\libdeps\esp12e\EspSoftwareSerial_ID168\src/circular_queue/circular_queue.h:62:5: error: uninitialized reference member 'circular_queue<unsigned int>::IRAM_ATTR' [-fpermissive]
src\main.cpp:96:33: error: no matching function for call to 'SoftwareSerial::SoftwareSerial(int, int, bool, int)'
 SoftwareSerial ss(5,10,false,128);
                                 ^
src\main.cpp:96:33: note: candidate is:
In file included from src\main.cpp:6:0:
.pio\libdeps\esp12e\EspSoftwareSerial_ID168\src/SoftwareSerial.h:47:5: note: SoftwareSerial::SoftwareSerial()
     SoftwareSerial();
     ^
.pio\libdeps\esp12e\EspSoftwareSerial_ID168\src/SoftwareSerial.h:47:5: note:   candidate expects 0 arguments, 4 provided
src\main.cpp: In function 'void setup()':
src\main.cpp:101:16: error: no matching function for call to 'SoftwareSerial::begin(int)'
   ss.begin(9600);
                ^
src\main.cpp:101:16: note: candidate is:
In file included from src\main.cpp:6:0:
.pio\libdeps\esp12e\EspSoftwareSerial_ID168\src/SoftwareSerial.h:51:10: note: void SoftwareSerial::begin(uint32_t, int8_t, int8_t, SoftwareSerialConfig, bool, int, int)
     void begin(uint32_t baud, int8_t rxPin, int8_t txPin = -1,
          ^
.pio\libdeps\esp12e\EspSoftwareSerial_ID168\src/SoftwareSerial.h:51:10: note:   candidate expects 7 arguments, 1 provided
*** [.pio\build\esp12e\src\main.cpp.o] Error 1
*** [.pio\build\esp12e\lib435\EspSoftwareSerial_ID168\SoftwareSerial.cpp.o] Error 1`

I have seen issue #103 but it not help me

@nvicchi
Copy link

nvicchi commented Sep 25, 2019

Check ESp8266 reboot when receiving data #108

@kross222
Copy link

@psinetron remove ESP8266 and espSoftwareSerial and then install again.

@psinetron
Copy link
Author

reinstall not helped.
It work on ArduinoIDE but not working on PlatformIO for visual studio. Why?

@nvicchi
Copy link

nvicchi commented Sep 26, 2019

Did you checked #108? Had all the same problems. You must update ESP8266 toolchain directly from github and after that do the same with the espsoftwareserial to version 5.3.0.
With the ESP8266 2.5.2 wont work out of the box. There are dependencies that are not fitted.

@psinetron
Copy link
Author

Ok. I set latest ESP8266 library and 5.3.0 softwareserial

[env:esp12e]
platform = https://github.com/platformio/platform-espressif8266.git
board = esp12e
framework = arduino


lib_deps =
     # Using library Id
     168

     # Using library Name
     EspSoftwareSerial
     EspSoftwareSerial@>=5.3.0

Whats wrong?

@psinetron
Copy link
Author

psinetron commented Sep 27, 2019

I changed esp8266 platform to 1.8.0 (It Arduino core to 2.4.2) It not working again. Help me guys.
I use windows.
platformio.ini for example:

[env:esp12e]
platform = espressif8266@1.8.0
board = esp12e
framework = arduino
lib_deps =
     # Using library Id
     168

     # Using library Name
     EspSoftwareSerial@5.3.0

Ok. I edit 37 stroke of circular_queue.h:
#if !defined(ESP32) && !defined(ESP8266)

#define ICACHE_RAM_ATTR
#define IRAM_ATTR
#endif
#define IRAM_ATTR <-- I add this line.

Now I have this error:

.pio\libdeps\esp12e\EspSoftwareSerial_ID168\src\SoftwareSerial.cpp: In member function 'void SoftwareSerial::enableRx(bool)':
.pio\libdeps\esp12e\EspSoftwareSerial_ID168\src\SoftwareSerial.cpp:140:121: error: 'attachInterruptArg' was not declared in this scope
             attachInterruptArg(digitalPinToInterrupt(m_rxPin), reinterpret_cast<void (*)(void*)>(rxBitISR), this, CHANGE);
                                                                                                                         ^
*** [.pio\build\esp12e\lib435\EspSoftwareSerial_ID168\SoftwareSerial.cpp.o] Error 1

But can't find any solytion. I need your help :'(

@dok-net
Copy link
Collaborator

dok-net commented Sep 27, 2019

Please look at Travis CI build of of merging PR esp8266/Arduino#6526 . You'll see that the PlatformIO builds succeeded.

Building some software versions "1.8.0" and "2.4.2" with EspSoftwareSerial 5.3.0 is not a supported combination by my understanding. What you are doing, and what the compiler messages indicate, is a complete mess.

Please check my comments in a similar issue, to the same effect: #115 (comment)

I personally don't use Platformio, never have, don't expect a need to do so in the near future, my hunch is that it uses the same binary package of the Arduino ESP8266 BSPs software as the Arduino board manager, and as such, the correct matching EspSoftwareSerial library version is already included, you should not have a need to install any version separately, in fact, this may be rather harmful. Check the README file of EspSoftwareSerial on how to get updated versions of the software.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants