stanleyhuangyc / Freematics

Official source code repository for Freematics
https://freematics.com
428 stars 347 forks source link

Latest v4 DataLogger for Freematics does not compile #41

Closed JonnoFTW closed 6 years ago

JonnoFTW commented 7 years ago

I get the following error when trying to compile from a clean pull of the whole repo (and copying the libraries into ~/Arduino/libraries:

In file included from /home/mack0242/Arduino/libraries/FreematicsONE/FreematicsONE.h:11:0,
                 from /home/CSEM/mack0242/Arduino/libraries/FreematicsONE/FreematicsONE.cpp:15:
/home/mack0242/Arduino/libraries/FreematicsONE/FreematicsSD.h:51:36: error: 'SD_O_RDONLY' was not declared in this scope
   File openNextFile(uint8_t mode = SD_O_RDONLY);
                                    ^
/home/mack0242/Arduino/libraries/FreematicsONE/FreematicsSD.h:23:19: error: 'SD_O_READ' was not declared in this scope
 #define FILE_READ SD_O_READ
                   ^
/home/mack0242/Arduino/libraries/FreematicsONE/FreematicsSD.h:76:50: note: in expansion of macro 'FILE_READ'
   File open(const char *filename, uint8_t mode = FILE_READ);
                                                  ^
/home/mack0242/Arduino/libraries/FreematicsONE/FreematicsSD.h:23:19: error: 'SD_O_READ' was not declared in this scope
 #define FILE_READ SD_O_READ
                   ^
/home/mack0242/Arduino/libraries/FreematicsONE/FreematicsSD.h:77:52: note: in expansion of macro 'FILE_READ'
   File open(const String &filename, uint8_t mode = FILE_READ) { return open( filename.c_str(), mode ); }

Changing FreematicsSd.h

#include <utility/SdFat.h>
#include <utility/SdFatUtil.h>

To

#include "utility/SdFat.h"
#include "utility/SdFatUtil.h"

I get these errors:

/tmp/arduino_build_378569/libraries/FreematicsONE/FreematicsSD.cpp.o (symbol from plugin): In function `SDLib::File::write(unsigned char)':
(.text+0x0): multiple definition of `SDLib::File::write(unsigned char)'
/tmp/arduino_build_378569/libraries/SD/File.cpp.o (symbol from plugin):(.text+0x0): first defined here

Overall, it looks like FreematicsSD has overlaps with the provided SD library. Please rectify this.

JonnoFTW commented 6 years ago

I had to use the libraries in firmware_v4/libraries here:

https://github.com/stanleyhuangyc/Freematics/tree/master/firmware_v4/libraries/FreematicsONE

This fixed the issue.