SparkFun_CCS811_Arduino_Library icon indicating copy to clipboard operation
SparkFun_CCS811_Arduino_Library copied to clipboard

Can't compile on new Arduino SAMD Cores

Open oscgonfer opened this issue 1 year ago • 0 comments

As of new Arduino SAMD Cores >= 1.8.12 (tested), there is a change that doesn't allow to compile this library. Below there is the outcome of the compilation of the basic example while doing so with version 1.8.12 (1.8.13 is the same). We will do a PR as the fix is quite simple.

In file included from /home/oscar/.arduino15/packages/arduino/tools/CMSIS-Atmel/1.2.0/CMSIS/Device/ATMEL/samd21/include/samd21.h:69:0,
                 from /home/oscar/.arduino15/packages/arduino/tools/CMSIS-Atmel/1.2.0/CMSIS/Device/ATMEL/samd.h:105,
                 from /home/oscar/.arduino15/packages/arduino/hardware/samd/1.8.12/cores/arduino/WVariant.h:22,
                 from /home/oscar/.arduino15/packages/arduino/hardware/samd/1.8.12/variants/arduino_zero/variant.h:39,
                 from /home/oscar/.arduino15/packages/arduino/hardware/samd/1.8.12/libraries/Wire/Wire.h:24,
                 from /home/oscar/Arduino/libraries/SparkFun_CCS811_Arduino_Library/src/SparkFunCCS811.h:31,
                 from /home/oscar/Arduino/libraries/SparkFun_CCS811_Arduino_Library/src/SparkFunCCS811.cpp:29:
/home/oscar/.arduino15/packages/arduino/tools/CMSIS-Atmel/1.2.0/CMSIS/Device/ATMEL/samd21/include/samd21g18a.h:226:0: warning: "LITTLE_ENDIAN" redefined
 #define LITTLE_ENDIAN          1
 
In file included from /home/oscar/.arduino15/packages/arduino/tools/arm-none-eabi-gcc/7-2017q4/arm-none-eabi/include/sys/types.h:67:0,
                 from /home/oscar/.arduino15/packages/arduino/tools/arm-none-eabi-gcc/7-2017q4/arm-none-eabi/include/stdio.h:61,
                 from /home/oscar/.arduino15/packages/arduino/hardware/samd/1.8.12/cores/arduino/api/Print.h:22,
                 from /home/oscar/.arduino15/packages/arduino/hardware/samd/1.8.12/cores/arduino/api/Stream.h:25,
                 from /home/oscar/.arduino15/packages/arduino/hardware/samd/1.8.12/cores/arduino/api/HardwareI2C.h:22,
                 from /home/oscar/.arduino15/packages/arduino/hardware/samd/1.8.12/libraries/Wire/Wire.h:23,
                 from /home/oscar/Arduino/libraries/SparkFun_CCS811_Arduino_Library/src/SparkFunCCS811.h:31,
                 from /home/oscar/Arduino/libraries/SparkFun_CCS811_Arduino_Library/src/SparkFunCCS811.cpp:29:
/home/oscar/.arduino15/packages/arduino/tools/arm-none-eabi-gcc/7-2017q4/arm-none-eabi/include/machine/endian.h:17:0: note: this is the location of the previous definition
 #define LITTLE_ENDIAN _LITTLE_ENDIAN
 
In file included from /home/oscar/Arduino/libraries/SparkFun_CCS811_Arduino_Library/src/SparkFunCCS811.cpp:29:0:
/home/oscar/Arduino/libraries/SparkFun_CCS811_Arduino_Library/src/SparkFunCCS811.h:76:28: error: 'TwoWire' has not been declared
  CCS811_Status_e beginCore(TwoWire &wirePort);
                            ^~~~~~~
/home/oscar/Arduino/libraries/SparkFun_CCS811_Arduino_Library/src/SparkFunCCS811.h:96:2: error: 'TwoWire' does not name a type; did you mean 'TwoWire_h'?
  TwoWire *_i2cPort; //The generic connection to user's chosen I2C hardware
  ^~~~~~~
  TwoWire_h
/home/oscar/Arduino/libraries/SparkFun_CCS811_Arduino_Library/src/SparkFunCCS811.h:112:13: error: 'TwoWire' has not been declared
  bool begin(TwoWire &wirePort = Wire);         //Use the Wire hardware by default
             ^~~~~~~
/home/oscar/Arduino/libraries/SparkFun_CCS811_Arduino_Library/src/SparkFunCCS811.h:113:34: error: 'TwoWire' has not been declared
  CCS811_Status_e beginWithStatus(TwoWire &wirePort = Wire);    //Use the Wire hardware by default
                                  ^~~~~~~
/home/oscar/Arduino/libraries/SparkFun_CCS811_Arduino_Library/src/SparkFunCCS811.h:112:33: error: could not convert 'Wire' from 'arduino::TwoWire' to 'int&'
  bool begin(TwoWire &wirePort = Wire);         //Use the Wire hardware by default
                                 ^~~~
/home/oscar/Arduino/libraries/SparkFun_CCS811_Arduino_Library/src/SparkFunCCS811.h:113:54: error: could not convert 'Wire' from 'arduino::TwoWire' to 'int&'
  CCS811_Status_e beginWithStatus(TwoWire &wirePort = Wire);    //Use the Wire hardware by default
                                                      ^~~~
/home/oscar/Arduino/libraries/SparkFun_CCS811_Arduino_Library/src/SparkFunCCS811.cpp:47:29: error: prototype for 'CCS811Core::CCS811_Status_e CCS811Core::beginCore(arduino::TwoWire&)' does not match any in class 'CCS811Core'
 CCS811Core::CCS811_Status_e CCS811Core::beginCore(TwoWire &wirePort)
                             ^~~~~~~~~~
In file included from /home/oscar/Arduino/libraries/SparkFun_CCS811_Arduino_Library/src/SparkFunCCS811.cpp:29:0:
/home/oscar/Arduino/libraries/SparkFun_CCS811_Arduino_Library/src/SparkFunCCS811.h:76:18: error: candidate is: CCS811Core::CCS811_Status_e CCS811Core::beginCore(int&)
  CCS811_Status_e beginCore(TwoWire &wirePort);
                  ^~~~~~~~~
/home/oscar/Arduino/libraries/SparkFun_CCS811_Arduino_Library/src/SparkFunCCS811.cpp: In member function 'CCS811Core::CCS811_Status_e CCS811Core::readRegister(uint8_t, uint8_t*)':
/home/oscar/Arduino/libraries/SparkFun_CCS811_Arduino_Library/src/SparkFunCCS811.cpp:103:2: error: '_i2cPort' was not declared in this scope
  _i2cPort->beginTransmission(I2CAddress);
  ^~~~~~~~
/home/oscar/Arduino/libraries/SparkFun_CCS811_Arduino_Library/src/SparkFunCCS811.cpp:103:2: note: suggested alternative: 'Port'
  _i2cPort->beginTransmission(I2CAddress);
  ^~~~~~~~
  Port
/home/oscar/Arduino/libraries/SparkFun_CCS811_Arduino_Library/src/SparkFunCCS811.cpp: In member function 'CCS811Core::CCS811_Status_e CCS811Core::multiReadRegister(uint8_t, uint8_t*, uint8_t)':
/home/oscar/Arduino/libraries/SparkFun_CCS811_Arduino_Library/src/SparkFunCCS811.cpp:139:2: error: '_i2cPort' was not declared in this scope
  _i2cPort->beginTransmission(I2CAddress);
  ^~~~~~~~
/home/oscar/Arduino/libraries/SparkFun_CCS811_Arduino_Library/src/SparkFunCCS811.cpp:139:2: note: suggested alternative: 'Port'
  _i2cPort->beginTransmission(I2CAddress);
  ^~~~~~~~
  Port
/home/oscar/Arduino/libraries/SparkFun_CCS811_Arduino_Library/src/SparkFunCCS811.cpp: In member function 'CCS811Core::CCS811_Status_e CCS811Core::writeRegister(uint8_t, uint8_t)':
/home/oscar/Arduino/libraries/SparkFun_CCS811_Arduino_Library/src/SparkFunCCS811.cpp:174:2: error: '_i2cPort' was not declared in this scope
  _i2cPort->beginTransmission(I2CAddress);
  ^~~~~~~~
/home/oscar/Arduino/libraries/SparkFun_CCS811_Arduino_Library/src/SparkFunCCS811.cpp:174:2: note: suggested alternative: 'Port'
  _i2cPort->beginTransmission(I2CAddress);
  ^~~~~~~~
  Port
/home/oscar/Arduino/libraries/SparkFun_CCS811_Arduino_Library/src/SparkFunCCS811.cpp: In member function 'CCS811Core::CCS811_Status_e CCS811Core::multiWriteRegister(uint8_t, uint8_t*, uint8_t)':
/home/oscar/Arduino/libraries/SparkFun_CCS811_Arduino_Library/src/SparkFunCCS811.cpp:205:2: error: '_i2cPort' was not declared in this scope
  _i2cPort->beginTransmission(I2CAddress);
  ^~~~~~~~
/home/oscar/Arduino/libraries/SparkFun_CCS811_Arduino_Library/src/SparkFunCCS811.cpp:205:2: note: suggested alternative: 'Port'
  _i2cPort->beginTransmission(I2CAddress);
  ^~~~~~~~
  Port
/home/oscar/Arduino/libraries/SparkFun_CCS811_Arduino_Library/src/SparkFunCCS811.cpp: At global scope:
/home/oscar/Arduino/libraries/SparkFun_CCS811_Arduino_Library/src/SparkFunCCS811.cpp:244:6: error: prototype for 'bool CCS811::begin(arduino::TwoWire&)' does not match any in class 'CCS811'
 bool CCS811::begin(TwoWire &wirePort)
      ^~~~~~
In file included from /home/oscar/Arduino/libraries/SparkFun_CCS811_Arduino_Library/src/SparkFunCCS811.cpp:29:0:
/home/oscar/Arduino/libraries/SparkFun_CCS811_Arduino_Library/src/SparkFunCCS811.h:112:7: error: candidate is: bool CCS811::begin(int&)
  bool begin(TwoWire &wirePort = Wire);         //Use the Wire hardware by default
       ^~~~~
/home/oscar/Arduino/libraries/SparkFun_CCS811_Arduino_Library/src/SparkFunCCS811.cpp:258:29: error: prototype for 'CCS811Core::CCS811_Status_e CCS811::beginWithStatus(arduino::TwoWire&)' does not match any in class 'CCS811'
 CCS811Core::CCS811_Status_e CCS811::beginWithStatus(TwoWire &wirePort)
                             ^~~~~~
In file included from /home/oscar/Arduino/libraries/SparkFun_CCS811_Arduino_Library/src/SparkFunCCS811.cpp:29:0:
/home/oscar/Arduino/libraries/SparkFun_CCS811_Arduino_Library/src/SparkFunCCS811.h:113:18: error: candidate is: CCS811Core::CCS811_Status_e CCS811::beginWithStatus(int&)
  CCS811_Status_e beginWithStatus(TwoWire &wirePort = Wire);    //Use the Wire hardware by default
                  ^~~~~~~~~~~~~~~
exit status 1

oscgonfer avatar Oct 24 '23 09:10 oscgonfer