I understand that the Photon firmware build is modular, and that only those parts of the HAL and API that have been explicitly exposed are available to application developers.
Still I think there should be some way of circumventing this restriction.
The Photon uses some excellent libraries, including lwip, FreeRTOS, tropicssl, WICED and CMSIS. Not having access to low level functionality will make the device much less attractive to product developers.
There should be at least three possibilities:
- copy library into user space
- wasteful, but should work for simpler, self-contained libraries such as tropicssl
- probably useless for most networking and tasks, which will be state dependent
- user modification of exported functions
- flexible, but seems like a nightmare to maintain
- non-modular build
- building into a single firmware image (though with bootloader and settings sectors intact) allows library and user code to be linked freely
I’m aware that the build has a MODULAR=n option, though this doesn’t seem to work quite as required. Correct me if I’m wrong, but I’m getting undefined references if I try. Also you’d want the #include search paths to include the available libraries, which is not currently the case.
The Photon is a great device with huge potential - thanks for all the hard work everyone!