GIRA / PhysicalBits

A web-based programming environment for educational robotics that supports live coding and autonomy using a hybrid blocks/text programming language.
https://gira.github.io/PhysicalBits/
MIT License
19 stars 5 forks source link

esp8266/NodeMCU: 'E2END' was not declared in this scope #73

Open drzraf opened 5 months ago

drzraf commented 5 months ago

I'm trying to compile and upload the firmware from Arduino IDE to an IdeaSpark esp8266 (NodeMCU 1.0 (ESP-12E Module)) device (not sure if it's supported in the first place).

First problem encountered:

In file included from /arduino/physicalbits-0.5.1/firmware/UziFirmware/EEPROMReader.h:4,
                 from /arduino/physicalbits-0.5.1/firmware/UziFirmware/EEPROMWearLevelingReader.h:4,
                 from /arduino/physicalbits-0.5.1/firmware/UziFirmware/EEPROMWearLevelingReader.cpp:1:
/arduino/physicalbits-0.5.1/firmware/UziFirmware/EEPROMWearLevelingReader.cpp: In member function 'int16 EEPROMWearLevelingReader::findPosition()':
/arduino/physicalbits-0.5.1/firmware/UziFirmware/EEPROMUtils.h:7:24: error: 'E2END' was not declared in this scope
    7 | #define EEPROM_SIZE   (E2END + 1)
      |                        ^~~~~
/arduino/physicalbits-0.5.1/firmware/UziFirmware/EEPROMWearLevelingReader.cpp:51:17: note: in expansion of macro 'EEPROM_SIZE'
   51 |  while (count < EEPROM_SIZE && reader.peek() == EEPROM_END_MARK)
      |                 ^~~~~~~~~~~
/arduino/physicalbits-0.5.1/firmware/UziFirmware/EEPROMUtils.h:7:24: error: 'E2END' was not declared in this scope
    7 | #define EEPROM_SIZE   (E2END + 1)
      |                        ^~~~~
/arduino/physicalbits-0.5.1/firmware/UziFirmware/EEPROMWearLevelingReader.cpp:60:18: note: in expansion of macro 'EEPROM_SIZE'
   60 |  while (count <= EEPROM_SIZE)
      |                  ^~~~~~~~~~~
/arduino/physicalbits-0.5.1/firmware/UziFirmware/EEPROMUtils.h:7:24: error: 'E2END' was not declared in this scope
    7 | #define EEPROM_SIZE   (E2END + 1)
      |                        ^~~~~
/arduino/physicalbits-0.5.1/firmware/UziFirmware/EEPROMWearLevelingReader.cpp:85:18: note: in expansion of macro 'EEPROM_SIZE'
   85 |  while (count <= EEPROM_SIZE)
      |                  ^~~~~~~~~~~
In file included from /arduino/physicalbits-0.5.1/firmware/UziFirmware/EEPROMReader.h:4,
                 from /arduino/physicalbits-0.5.1/firmware/UziFirmware/EEPROMReader.cpp:2:
/arduino/physicalbits-0.5.1/firmware/UziFirmware/EEPROMReader.cpp: In member function 'void EEPROMReader::incrementPosition()':
/arduino/physicalbits-0.5.1/firmware/UziFirmware/EEPROMUtils.h:7:24: error: 'E2END' was not declared in this scope
    7 | #define EEPROM_SIZE   (E2END + 1)
      |                        ^~~~~
/arduino/physicalbits-0.5.1/firmware/UziFirmware/EEPROMReader.cpp:16:43: note: in expansion of macro 'EEPROM_SIZE'
   16 |  position = positive_modulo(position + 1, EEPROM_SIZE);
      |                                           ^~~~~~~~~~~
/arduino/physicalbits-0.5.1/firmware/UziFirmware/EEPROMReader.cpp: In member function 'void EEPROMReader::decrementPosition()':
/arduino/physicalbits-0.5.1/firmware/UziFirmware/EEPROMUtils.h:7:24: error: 'E2END' was not declared in this scope
    7 | #define EEPROM_SIZE   (E2END + 1)
      |                        ^~~~~
/arduino/physicalbits-0.5.1/firmware/UziFirmware/EEPROMReader.cpp:21:43: note: in expansion of macro 'EEPROM_SIZE'
   21 |  position = positive_modulo(position - 1, EEPROM_SIZE);
      |                                           ^~~~~~~~~~~
In file included from /arduino/physicalbits-0.5.1/firmware/UziFirmware/EEPROMReader.h:4,
                 from /arduino/physicalbits-0.5.1/firmware/UziFirmware/EEPROMWearLevelingWriter.h:3,
                 from /arduino/physicalbits-0.5.1/firmware/UziFirmware/EEPROMWearLevelingWriter.cpp:1:
/arduino/physicalbits-0.5.1/firmware/UziFirmware/EEPROMWearLevelingWriter.cpp: In member function 'int16 EEPROMWearLevelingWriter::findPosition()':
/arduino/physicalbits-0.5.1/firmware/UziFirmware/EEPROMUtils.h:7:24: error: 'E2END' was not declared in this scope
    7 | #define EEPROM_SIZE   (E2END + 1)
      |                        ^~~~~
/arduino/physicalbits-0.5.1/firmware/UziFirmware/EEPROMWearLevelingWriter.cpp:65:17: note: in expansion of macro 'EEPROM_SIZE'
   65 |  while (count < EEPROM_SIZE && reader.peek() == EEPROM_END_MARK)
      |                 ^~~~~~~~~~~
/arduino/physicalbits-0.5.1/firmware/UziFirmware/EEPROMUtils.h:7:24: error: 'E2END' was not declared in this scope
    7 | #define EEPROM_SIZE   (E2END + 1)
      |                        ^~~~~
/arduino/physicalbits-0.5.1/firmware/UziFirmware/EEPROMWearLevelingWriter.cpp:74:18: note: in expansion of macro 'EEPROM_SIZE'
   74 |  while (count <= EEPROM_SIZE)
      |                  ^~~~~~~~~~~
In file included from /arduino/physicalbits-0.5.1/firmware/UziFirmware/EEPROMWriter.h:3,
                 from /arduino/physicalbits-0.5.1/firmware/UziFirmware/EEPROMWriter.cpp:2:
/arduino/physicalbits-0.5.1/firmware/UziFirmware/EEPROMWriter.cpp: In member function 'void EEPROMWriter::incrementPosition()':
/arduino/physicalbits-0.5.1/firmware/UziFirmware/EEPROMUtils.h:7:24: error: 'E2END' was not declared in this scope
    7 | #define EEPROM_SIZE   (E2END + 1)
      |                        ^~~~~
/arduino/physicalbits-0.5.1/firmware/UziFirmware/EEPROMWriter.cpp:16:43: note: in expansion of macro 'EEPROM_SIZE'
   16 |  position = positive_modulo(position + 1, EEPROM_SIZE);
      |                                           ^~~~~~~~~~~

exit status 1

Compilation error: 'E2END' was not declared in this scope

Is the reliance upon E2END correct and an expectation for every board or is to avr-centric? Is this attempt a dead-end or something that could realistically be overcome?

RichoM commented 5 months ago

I haven't tried compiling for ESP8266 yet, only Arduino. I don't expect it to be very hard, but some libraries might need replacements.

Regarding E2END, I don't think we should rely too heavy on it. Maybe we should have some configuration file to define constants such as these for boards that don't have them.

I don't have a lot of time right now, but I think I have an ESP8266 lying around somewhere. It would be nice to support it. If I can take some time off work I'll try compiling for it in the following days. Let me know if you advance any further, though...