mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-19 22:35:23 +03:00
Merge pull request #1046 from martinbudden/bf_pwminit
Added bounds checking in pwmInit
This commit is contained in:
commit
923a0655b3
1 changed files with 7 additions and 1 deletions
|
@ -301,7 +301,10 @@ pwmOutputConfiguration_t *pwmInit(drv_pwm_config_t *init)
|
||||||
channelIndex++;
|
channelIndex++;
|
||||||
#endif
|
#endif
|
||||||
} else if (type == MAP_TO_MOTOR_OUTPUT) {
|
} else if (type == MAP_TO_MOTOR_OUTPUT) {
|
||||||
|
// Check if we already configured maximum supported number of motors or output ports and skip the rest
|
||||||
|
if (pwmOutputConfiguration.motorCount >= MAX_MOTORS || pwmOutputConfiguration.outputCount >= MAX_PWM_OUTPUT_PORTS) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
#ifdef CC3D
|
#ifdef CC3D
|
||||||
if (!(init->pwmProtocolType == PWM_TYPE_CONVENTIONAL)) {
|
if (!(init->pwmProtocolType == PWM_TYPE_CONVENTIONAL)) {
|
||||||
// Skip it if it would cause PPM capture timer to be reconfigured or manually overflowed
|
// Skip it if it would cause PPM capture timer to be reconfigured or manually overflowed
|
||||||
|
@ -331,6 +334,9 @@ pwmOutputConfiguration_t *pwmInit(drv_pwm_config_t *init)
|
||||||
pwmOutputConfiguration.outputCount++;
|
pwmOutputConfiguration.outputCount++;
|
||||||
} else if (type == MAP_TO_SERVO_OUTPUT) {
|
} else if (type == MAP_TO_SERVO_OUTPUT) {
|
||||||
#ifdef USE_SERVOS
|
#ifdef USE_SERVOS
|
||||||
|
if (pwmOutputConfiguration.servoCount >= MAX_SERVOS || pwmOutputConfiguration.outputCount >= MAX_PWM_OUTPUT_PORTS) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
pwmOutputConfiguration.portConfigurations[pwmOutputConfiguration.outputCount].index = pwmOutputConfiguration.servoCount;
|
pwmOutputConfiguration.portConfigurations[pwmOutputConfiguration.outputCount].index = pwmOutputConfiguration.servoCount;
|
||||||
pwmServoConfig(timerHardwarePtr, pwmOutputConfiguration.servoCount, init->servoPwmRate, init->servoCenterPulse);
|
pwmServoConfig(timerHardwarePtr, pwmOutputConfiguration.servoCount, init->servoPwmRate, init->servoCenterPulse);
|
||||||
pwmOutputConfiguration.portConfigurations[pwmOutputConfiguration.outputCount].flags = PWM_PF_SERVO | PWM_PF_OUTPUT_PROTOCOL_PWM;
|
pwmOutputConfiguration.portConfigurations[pwmOutputConfiguration.outputCount].flags = PWM_PF_SERVO | PWM_PF_OUTPUT_PROTOCOL_PWM;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue