I am trying to build a project using the Adafruit Feather M0 Bluefruit LE using 3.0.0a6. I tried to include the Adafruit BluefruitLE nRF51 library and I get a linker error.
I think the linker error is due to the fact that utility\Adafruit_FIFO.cpp
is not built and included in the link.
The relevant code snippet:
#include <Adafruit_BluefruitLE_SPI.h>
//...
#define BLUEFRUIT_SPI_CS 8
#define BLUEFRUIT_SPI_IRQ 7
#define BLUEFRUIT_SPI_RST 4 // Optional but recommended, set to -1 if unused
//...
/* ...hardware SPI, using SCK/MOSI/MISO hardware SPI pins and then user selected CS/IRQ/RST */
Adafruit_BluefruitLE_SPI ble(BLUEFRUIT_SPI_CS, BLUEFRUIT_SPI_IRQ, BLUEFRUIT_SPI_RST);
The error output:
.pioenvs/adafruit_feather_m0_usb/lib/libAdafruit BluefruitLE nRF51.a(Adafruit_BluefruitLE_SPI.o): In function `Adafruit_BluefruitLE_SPI::flush()':
/Users/blake/Source/bcr/Motobuddy/.piolibdeps/Adafruit BluefruitLE nRF51_ID177/Adafruit_BluefruitLE_SPI.cpp:480: undefined reference to `Adafruit_FIFO::clear()'
.pioenvs/adafruit_feather_m0_usb/lib/libAdafruit BluefruitLE nRF51.a(Adafruit_BluefruitLE_SPI.o): In function `Adafruit_BluefruitLE_SPI::Adafruit_BluefruitLE_SPI(signed char, signed char, signed char)':
/Users/blake/Source/bcr/Motobuddy/.piolibdeps/Adafruit BluefruitLE nRF51_ID177/Adafruit_BluefruitLE_SPI.cpp:61: undefined reference to `Adafruit_FIFO::Adafruit_FIFO(void*, unsigned short, unsigned char, bool)'
.pioenvs/adafruit_feather_m0_usb/lib/libAdafruit BluefruitLE nRF51.a(Adafruit_BluefruitLE_SPI.o): In function `Adafruit_BluefruitLE_SPI::simulateSwitchMode()':
/Users/blake/Source/bcr/Motobuddy/.piolibdeps/Adafruit BluefruitLE nRF51_ID177/Adafruit_BluefruitLE_SPI.cpp:187: undefined reference to `Adafruit_FIFO::write(void const*)'
/Users/blake/Source/bcr/Motobuddy/.piolibdeps/Adafruit BluefruitLE nRF51_ID177/Adafruit_BluefruitLE_SPI.cpp:188: undefined reference to `Adafruit_FIFO::write_n(void const*, unsigned short)'
.pioenvs/adafruit_feather_m0_usb/lib/libAdafruit BluefruitLE nRF51.a(Adafruit_BluefruitLE_SPI.o): In function `Adafruit_BluefruitLE_SPI::getResponse()':
/Users/blake/Source/bcr/Motobuddy/.piolibdeps/Adafruit BluefruitLE nRF51_ID177/Adafruit_BluefruitLE_SPI.cpp:509: undefined reference to `Adafruit_FIFO::write_n(void const*, unsigned short)'
.pioenvs/adafruit_feather_m0_usb/lib/libAdafruit BluefruitLE nRF51.a(Adafruit_BluefruitLE_SPI.o): In function `Adafruit_BluefruitLE_SPI::read()':
/Users/blake/Source/bcr/Motobuddy/.piolibdeps/Adafruit BluefruitLE nRF51_ID177/Adafruit_BluefruitLE_SPI.cpp:417: undefined reference to `Adafruit_FIFO::read(void*)'
/Users/blake/Source/bcr/Motobuddy/.piolibdeps/Adafruit BluefruitLE nRF51_ID177/Adafruit_BluefruitLE_SPI.cpp:434: undefined reference to `Adafruit_FIFO::read(void*)'
.pioenvs/adafruit_feather_m0_usb/lib/libAdafruit BluefruitLE nRF51.a(Adafruit_BluefruitLE_SPI.o): In function `Adafruit_BluefruitLE_SPI::peek()':
/Users/blake/Source/bcr/Motobuddy/.piolibdeps/Adafruit BluefruitLE nRF51_ID177/Adafruit_BluefruitLE_SPI.cpp:451: undefined reference to `Adafruit_FIFO::peek(void*)'
/Users/blake/Source/bcr/Motobuddy/.piolibdeps/Adafruit BluefruitLE nRF51_ID177/Adafruit_BluefruitLE_SPI.cpp:468: undefined reference to `Adafruit_FIFO::peek(void*)'
I think that this may be a library packaging or a PlatformIO problem, opening the discussion here in case I’m doing something silly.