Particle workbench unable to locate Particle Firmware files

I'm compiling a project using the latest Particle Workbench in order to solve a problem, but using Particle Workbench creates a new set of problems. For some reason, it's unable to locate the IPAddress and and sFLASH_Init (for the P1 series chip).

I need to solve these errors to solve my main problem, but where do I search for these files and where are they supposed to be when compiling with Particle Workbench?

After mocking around with the files I now get the error:

#include errors detected. Please update your includePath. IntelliSense features for this translation unit (/Users/jensa 1/Dropbox/Kunder/OrderX/OrderX_V3/TestWorkbench/AwsTapper3/src/AwsTapper3.ino) will be provided by the Tag Parser.

Could it be that Workbench fails to detect my folder structure correctly? I have my source in a "src" folder and external libraries in a "lib" folder. These both are at the root of my project. The structure looks like this:

project
    lib
        pubsubclient
            src
                pubsubclient.h
                pubsubclient.cpp
        wolfssl
            src
                aes.cpp
                ...
                wolfcrypt
                    src
                        wolfssl
                            openssl
                        wolfcrypt
                            port
                ...
                pubsubclient.cpp
    src
        myApp.ino

The directory structure for WolfSSL are according to this repository and has worked well since it's inception 1+ year ago. Can it be that Workbench is incapable of locating Particle dependencies since they are inside the included libraries?

I'm on OSX 10.13.6 with Particle Workbench 1.0.0-alpha5 installed.

Is the for a local build? You’ll likely run into a problem because local builds won’t work if any directory in the build path contains a space. It’s a limitation of GNU make. It looks like your username contains a space, and that will definitely cause problems with a local build.

To work around that issue you can create a symbolic link to the target director which won't contain the blank. (Or just move your directory :wink: )

Brilliant!
Sounds 100% plausible and might also be why my other problem exists. I’ll fix that over the weekend.

(To my defense - I would never put a space in a username. Apple Migration Assistant is why I have that space there. It’s also the cause 99% of all my command line applications broke when I got a new Mac. Lesson learned - if you are migrating a Mac, make a dummy user (with a username unlike your username) so that the Migration Assistant won’t just append a space and a 1 and assume that it’s allright… )

I changed the user name in my path, and it now compiles, but with errors. I still get the errors for including IPAddress.h and calling sFLASH_Init(). I have configured the workspace for P1, so I presume that should have set this up?

Also, I can see that the path to Arduino’esque functions such as bitRead and bitWrite also show errors when compiling. It also insists that all my “boolean” need to be “bool” instead. This seems like a symptom of other pathing issues?

J

Have you got an #include <Particle.h> in all the required .h/.cpp files?

@ScruffR I have “application.h” everywhere it was required formerly and this compiled fine in the Cloud compiler. I also formerly had offline compilation working with Eclipse and that worked fine. I presume that Workbench also use GCC ARM and that there should be no difference between these two?

I tried adding “application.h” to the problematic files, but that does not silence the compiler.

Double check that output from the compiler and make sure it’s showing platform 8 in the output. It’s possible that the local build is not targeting the right platform even if you set it, which would cause that error.

Ok. Got it working! This was related to the files that Rick from Particle (you?) asked me remove via the support email. I deleted the included libraries (JsonParserGeneratorRK, pubsubclient and wolfssl). I then put them back and made sure to include the other folders such as “test” and “examples” that I had deleted formerly. Now compilation works!

It turns out that the PubSubClient we use has some classes in the test-folder that are required when compiling for Particle devices https://github.com/knolleary/pubsubclient/tree/master/tests/src/lib It picks the “IPAddress.h” from here along with an abstract for “Client.h” and other files. This means that the actual error was the space in the username, but as a part of fixing that I broke the build :slight_smile:

2 Likes