-
Notifications
You must be signed in to change notification settings - Fork 35
Configuration and Functionality
CRSF for Arduino comes with a configuration header file that you can use to tailor CRSF for Arduino to suit the needs of your specific application.
This is the configuration header file, and is automatically included when you add CRSFforArduino.hpp
to the top of your sketches.
CFA_Config
is located here: CRSFforArduino/src/CFA_Config.hpp
In the configuration header, you will find a list of pre-processor defines that you can enable (by setting a define's value to 1
) or disable (by setting a define's value to 0
).
The semantic version defines are largely irrelevant to most use cases. However, they exist for debugging purposes and for firmware applications that require built-in version tracking of all dependencies.
-
CRSF_LINK_STATISTICS_ENABLED
- Default value:
1
(Enabled) - When enabled, you can use the Link Statistics API.
NB: The Link Statistics API is required for fail-safe detection.
- Default value:
-
CRSF_RC_ENABLED
- Default value:
1
(Enabled) - When enabled, you can use the RC Channels API.
- Default value:
-
CRSF_RC_MAX_CHANNELS
- Default value:
16
- This determines the maximum number of RC channels you want to use in your firmware.
NB: ThisMAY
be checked against the maximum number of RC channels that are specified by The Crossfire Protocol, which is limited to 16 channels.
- Default value:
-
CRSF_RC_CHANNEL_MIN
- Default value:
172
- The minimum raw RC channel value (from your receiver) that is considered valid.
NB: This is the raw value. Not the "microseconds" value.
- Default value:
-
CRSF_RC_CHANNEL_MAX
- Default value:
1811
- The maximum raw RC channel value (from your receiver) that is considered valid.
NB: This is the raw value. Not the "microseconds" value.
- Default value:
-
CRSF_RC_CHANNEL_CENTER
- Default value:
992
- The middle raw RC channel value (from your receiver).
NB: This is the raw value. Not the "microseconds" value.
- Default value:
-
CRSF_RC_INITIALISE_CHANNELS
- Default value:
1
- When enabled, all 16 RC channels are internally initialised to the value set by
CRSF_RC_CHANNEL_CENTER
.
- Default value:
-
CRSF_RC_INITIALISE_ARMCHANNEL
- Requires:
CRSF_RC_INITIALISE_CHANNELS
set to1
- Default value:
1
- When enabled, Channel 5 (AKA Aux1) is internally initialised to
CRSF_RC_CHANNEL_MIN
.
- Requires:
-
CRSF_RC_INITIALISE_THROTTLECHANNEL
- Requires:
CRSF_RC_INITIALISE_CHANNELS
set to1
- Default value:
1
- When enabled, Channel 3 is internally initialised to
CRSF_RC_CHANNEL_MIN
.
- Requires:
-
CRSF_FLIGHTMODES_ENABLED
- Default value:
0
- When enabled, you can use the Flight Modes API.
- Default value:
-
CRSF_CUSTOM_FLIGHT_MODES_ENABLED
- Requires:
CRSF_FLIGHTMODES_ENABLED
set to1
. - When enabled, you have access to both the Standard Flight Modes and Custom Flight Modes.
NB: If this is disabled, you only have access to the Standard Flight Modes.
- Requires:
-
CRSF_TELEMETRY_ENABLED
- Default value:
1
- When enabled, you can use the Telemetry API.
- Default value:
-
CRSF_TELEMETRY_ATTITUDE_ENABLED
- Requires:
CRSF_TELEMETRY_ENABLED
set to1
- Default value:
1
- When enabled, you can send Roll, Pitch and Yaw attitude telemetry back to your controller.
- Requires:
-
CRSF_TELEMETRY_BAROALTITUDE_ENABLED
- Requires:
CRSF_TELEMETRY_ENABLED
set to1
- Default value:
1
- When enabled, you can send barometric altitude and variometer telemetry back to your controller.
- Requires:
-
CRSF_TELEMETRY_BATTERY_ENABLED
- Requires:
CRSF_TELEMETRY_ENABLED
set to1
- Default value:
1
- When enabled, you can send voltage, current, fuel and remaining capacity telemetry back to your controller.
- Requires:
-
CRSF_TELEMETRY_FLIGHTMODE_ENABLED
- Requires:
CRSF_TELEMETRY_ENABLED
set to1
, andCRSF_FLIGHTMODES_ENABLED
set to1
- Default value:
0
- When enabled, you can send the current flight mode (including your custom flight modes, if
CRSF_CUSTOM_FLIGHT_MODES_ENABLED
is set to1
) as telemetry back to your controller.
- Requires:
-
CRSF_TELEMETRY_GPS_ENABLED
- Requires:
CRSF_TELEMETRY_ENABLED
set to1
, andCRSF_FLIGHTMODES_ENABLED
set to1
- Default value:
1
- When enabled, you can send the current flight mode (including your custom flight modes, if
CRSF_CUSTOM_FLIGHT_MODES_ENABLED
is set to1
) as telemetry back to your controller.
- Requires:
This is mostly used during development of CRSF for Arduino, and it provides vital information about the inner machinations of the API.
For daily use, it is best to leave these defines at their default values - IE Disabled.
Information about these defines is listed here, in case Debug Mode is needed.
-
CRSF_DEBUG_ENABLED
- Default value:
0
- This puts CRSF for Arduino into Debug Mode.
In this mode, various information on the inner machinations of CRSF for Arduino (particularly during its initialisation phases) are printed to the Serial Monitor.
- Default value:
-
CRSF_DEBUG_SERIAL_PORT
- Requires:
CRSF_DEBUG_ENABLED
set to1
- Default value:
Serial
- This is the port that is used to send debug data to the Serial Monitor.
Usually this is your target development board's USB port.
- Requires:
-
CRSF_DEBUG_ENABLE_COMPATIBILITY_TABLE_OUTPUT
- Requires:
CRSF_DEBUG_ENABLED
set to1
- Default value:
0
- When enabled, debug data that is specific to the Compatibility Table is sent to the Serial Monitor.
- Requires:
At the end of CFA_Config.hpp
there are compiler warnings and asserts that will trigger, if any of the aforementioned defines are set to invalid values.
Condition | Error Type | Reason |
---|---|---|
Setting CRSF_RC_ENABLED and CRSF_TELEMETRY_ENABLED to 0
|
Warning | You have disabled all of CRSF for Arduino's functionality |
Enabling CRSF_FLIGHTMODES_ENABLED but leaving CRSF_RC_ENABLED disabled |
Assert Failure | The Flight Modes API depends on the RC Channels API in order to function. |
Leaving CRSF_TELEMETRY_ENABLED enabled, but you individually disabled all telemetry types - EG Barometric altitude, attitude, battery, and GPS telemetry |
Assert Failure | If you want to globally disable telemetry, set CRSF_TELEMETRY_ENABLED to 0 instead of doing this.
|