Checking for features
User firmware is designed to run transparently regardless of what type of device it is run on. However, sometimes you will need to have code that varies depending on the capabilities of the device.
It's always best to check for a capability, rather than a specific device. For example, checking for cellular instead of checking for the Electron allows the code to work properly on the Boron without modification.
Some commonly used features include:
- Wiring_Cellular
- Wiring_Ethernet
- Wiring_IPv6
- Wiring_Keyboard
- Wiring_Mouse
- Wiring_Serial2
- Wiring_Serial3
- Wiring_Serial4
- Wiring_Serial5
- Wiring_SPI1
- Wiring_SPI2
- Wiring_USBSerial1
- Wiring_WiFi
- Wiring_Wire1
- Wiring_Wire3
- Wiring_WpaEnterprise
For example, you might have code like this to declare two different methods, depending on your network type:
#if Wiring_WiFi
const char *wifiScan();
#endif
#if Wiring_Cellular
const char *cellularScan();
#endif
The official list can be found in the source.