Including files fails on Web IDE

Two days ago I got my students started on an exam for which they’ll likely use their Photon’s. For the next lesson I want to have a small proof of concept to show using a MAX3010X sensor and a SSD1306 oled screen.

Separately, these both work great. When I combine the two, the Web IDE is incapable of understanding that I really want to use both classes. Enclosed is a screenshot showing that the compiler fails to find the max30105.h class. I’ve expanded the sidebar so you can see that both classes are included in the project.

Can’t see what I’m missing out on here? Why can’t the Web IDE include more than one file? I can easily make this work offline, but why not in the Web IDE?

Here’s a link to the shared example file: https://go.particle.io/shared_apps/5bdf72eb5e1b657fac000f24

Here is the RAW dump:

Processing max30102_and_ssd1306.ino
Checking library Adafruit_SSD1306…
Installing library Adafruit_SSD1306 0.0.2 to lib/Adafruit_SSD1306 …
Library Adafruit_SSD1306 0.0.2 installed.
make -C …/modules/photon/user-part all
make[1]: Entering directory ‘/firmware/modules/photon/user-part’
make -C …/…/…/user
make[2]: Entering directory ‘/firmware/user’
Building cpp file: src/max30102_and_ssd1306.cpp
Invoking: ARM GCC CPP Compiler
mkdir -p …/build/target/user/platform-6-msrc/
arm-none-eabi-gcc -DSTM32_DEVICE -DSTM32F2XX -DPLATFORM_THREADING=1 -DPLATFORM_ID=6 -DPLATFORM_NAME=photon -DUSBD_VID_SPARK=0x2B04 -DUSBD_PID_DFU=0xD006 -DUSBD_PID_CDC=0xC006 -DSPARK_PLATFORM -g3 -gdwarf-2 -Os -mcpu=cortex-m3 -mthumb -DINCLUDE_PLATFORM=1 -DPRODUCT_ID=6 -DPRODUCT_FIRMWARE_VERSION=65535 -DUSE_STDPERIPH_DRIVER -DDFU_BUILD_ENABLE -DSYSTEM_VERSION_STRING=0.7.0 -DRELEASE_BUILD -I./inc -I…/wiring/inc -I…/system/inc -I…/services/inc -I…/communication/src -I…/hal/inc -I…/hal/shared -I…/hal/src/photon -I…/hal/src/stm32f2xx -I…/hal/src/stm32 -I…/hal/src/photon/api -I…/hal/src/photon/include -I…/hal/src/photon/wiced/security/BESL/host/WICED/ -I…/hal/src/photon/wiced/security/BESL/include -I…/hal/src/photon/wiced/security/BESL -I…/hal/src/photon/wiced/security/BESL/crypto -I…/hal/src/photon/wiced/WWD/include/ -I…/hal/src/photon/wiced/platform/include/ -I…/hal/src/photon/wiced/platform/GCC/ -I…/hal/src/photon/wiced/security/BESL/supplicant/ -I…/hal/src/photon/libraries/crypto -I…/platform/shared/inc -I…/platform/MCU/STM32F2xx/STM32_USB_Host_Driver/inc -I…/platform/MCU/STM32F2xx/STM32_StdPeriph_Driver/inc -I…/platform/MCU/STM32F2xx/STM32_USB_OTG_Driver/inc -I…/platform/MCU/STM32F2xx/STM32_USB_Device_Driver/inc -I…/platform/MCU/STM32F2xx/SPARK_Firmware_Driver/inc -I…/platform/MCU/shared/STM32/inc -I…/platform/MCU/STM32F2xx/CMSIS/Include -I…/platform/MCU/STM32F2xx/CMSIS/Device/ST/Include -I…/dynalib/inc -Isrc -I./libraries -Ilib/Adafruit_SSD1306/src -I. -MD -MP -MF …/build/target/user/platform-6-msrc/max30102_and_ssd1306.o.d -ffunction-sections -fdata-sections -Wall -Wno-switch -Wno-error=deprecated-declarations -fmessage-length=0 -fno-strict-aliasing -DSPARK=1 -DPARTICLE=1 -Wundef -DSTART_DFU_FLASHER_SERIAL_SPEED=14400 -DSTART_YMODEM_FLASHER_SERIAL_SPEED=28800 -DBOOTLOADER_SDK_3_3_0_PARTICLE -DPARTICLE_DCT_COMPATIBILITY -DSPARK_PLATFORM_NET=BCM9WCDUSI09 -fno-builtin-malloc -fno-builtin-free -fno-builtin-realloc -DLOG_INCLUDE_SOURCE_INFO=1 -DPARTICLE_USER_MODULE -DUSER_FIRMWARE_IMAGE_SIZE=0x20000 -DUSER_FIRMWARE_IMAGE_LOCATION=0x80A0000 -DMODULAR_FIRMWARE=1 -DMODULE_VERSION=5 -DMODULE_FUNCTION=5 -DMODULE_INDEX=1 -DMODULE_DEPENDENCY=4,2,207 -DMODULE_DEPENDENCY2=0,0,0 -D_WINSOCK_H -D_GNU_SOURCE -DLOG_MODULE_CATEGORY="“app”" -fno-exceptions -fno-rtti -fcheck-new -std=gnu++11 -c -o …/build/target/user/platform-6-msrc/max30102_and_ssd1306.o src/max30102_and_ssd1306.cpp
max30102_and_ssd1306.ino:2:22: fatal error: max30105.h: No such file or directory
compilation terminated.
…/build/module.mk:267: recipe for target ‘…/build/target/user/platform-6-msrc/max30102_and_ssd1306.o’ failed
make[2]: Leaving directory ‘/firmware/user’
make[2]: *** […/build/target/user/platform-6-msrc/max30102_and_ssd1306.o] Error 1
…/…/…/build/recurse.mk:11: recipe for target ‘user’ failed
make[1]: Leaving directory ‘/firmware/modules/photon/user-part’
make[1]: *** [user] Error 2
…/build/recurse.mk:11: recipe for target ‘modules/photon/user-part’ failed
make: *** [modules/photon/user-part] Error 2

I have a similar issue. Using a Particle Photon and the web IDE, my project has no problem with multiple library includes, but the ArduinoJson library is currently failing to load. I tried creating a new project template to eliminate any issue with the project configuration and it still fails. It’s been “Loading…” for about an hour now.

I had a look at the MAX30105 library and it seems the library has never been used directly.
So I’d just copy/paste the library sources into my own project to move on.

Since the contributor didn’t provide a GitHub link there seems to be no way to get in contact or check the actual library structure or open issues (e.g. the bundled usage example doesn’t even work), one alternative would be to recontribute the library with the correct structure as MAX30105.

I have also noticed, when you download the project sources from Web IDE the project.properties file doesnot contain a dependency entry for that library. This would suggest that library doesn’t adhere to the Libraries 2.0 file structure.

Makes sense @ScruffR. Got a URL to the Libraries 2.0 file structure rules? I’ve looked for them before, but failed to locate them.

I haven’t got a link to the docs off my head, but when you use CLI particle library create you’ll get an outline created on your machine.
Also the Particle Libraries 2.0 structure should align with the structure defined by Arduino