Even though I have a very nice home monitoring project working on my Core I got last year, I built that using the WebIDE and didn’t pay much attention to firmware or the architecture of what I was doing.
Now that I have my Photon, I want to do a lot more, and I’m getting lost in the documentation and in these forums. I believe I am getting lost because I don’t have a mental model of the software architecture of the Photon. I wonder if others are in the same boat as me.
For example, I don’t think I firmly grok “firmware” in the Photon context. I believe it means the set of libraries that link against your code. But then I see things that seem to indicate that the user code separates itself from the “firmware” and is “flashed” separately. I’m a bit confused by the difference between what might be more like an operating system existing on the machine with user programs using it, and what is library code linked against user code like in the Arduino world.
Another example is what exactly happens when I return from loop(), or manually call Spark.process()? I assume the processing of all the published and subscribed variables and such things. But are there any guarantees on the timing of that? For example, if I don’t subscribe or publish, but manually use sockets myself, will this be much less than the “few milliseconds” promised? I ask because I need to know if my real-time application can depend on it. I guess I could just try, but it would be nice if it were explained. What I want to do is connect the WiFi, keep it connected, but only incur any blocking or delay when I want to. Not every xx seconds.
I know there are at least a few different questions wrapped up in this post. What I guess I’m saying is that a few box diagrams, flow charts, and perhaps a glossary of the software architecture would go a long way to helping me (and perhaps others) climb the learning curve.