// get_motor_mask - returns a bitmask of which outputs are being used for motors or servos (1 means being used) // this can be used to ensure other pwm outputs (i.e. for servos) do not conflict uint16_t AP_MotorsTri::get_motor_mask() { // tri copter uses channels 1,2,4 and 7 return rc_map_mask((1U << AP_MOTORS_MOT_1) | (1U << AP_MOTORS_MOT_2) | (1U << AP_MOTORS_MOT_4) | (1U << AP_MOTORS_CH_TRI_YAW)); }
// get_motor_mask - returns a bitmask of which outputs are being used for motors (1 means being used) // this can be used to ensure other pwm outputs (i.e. for servos) do not conflict uint16_t AP_MotorsMatrix::get_motor_mask() { uint16_t mask = 0; for (uint8_t i=0; i<AP_MOTORS_MAX_NUM_MOTORS; i++) { if (motor_enabled[i]) { mask |= 1U << i; } } return rc_map_mask(mask); }
// get_motor_mask - returns a bitmask of which outputs are being used for motors or servos (1 means being used) // this can be used to ensure other pwm outputs (i.e. for servos) do not conflict uint16_t AP_MotorsSingle::get_motor_mask() { uint32_t mask = 1U << AP_MOTORS_MOT_1 | 1U << AP_MOTORS_MOT_2 | 1U << AP_MOTORS_MOT_3 | 1U << AP_MOTORS_MOT_4 | 1U << AP_MOTORS_MOT_5 | 1U << AP_MOTORS_MOT_6; return rc_map_mask(mask); }
/* set frequency of a set of channels */ void AP_Motors::rc_set_freq(uint32_t mask, uint16_t freq_hz) { mask = rc_map_mask(mask); if (freq_hz > 50) { _motor_fast_mask |= mask; } hal.rcout->set_freq(mask, freq_hz); if ((_pwm_type == PWM_TYPE_ONESHOT || _pwm_type == PWM_TYPE_ONESHOT125) && freq_hz > 50) { // tell HAL to do immediate output hal.rcout->set_output_mode(AP_HAL::RCOutput::MODE_PWM_ONESHOT); } }
// get_motor_mask - returns a bitmask of which outputs are being used for motors (1 means being used) // this can be used to ensure other pwm outputs (i.e. for servos) do not conflict uint16_t AP_MotorsMatrix::get_motor_mask() { uint16_t motor_mask = 0; for (uint8_t i=0; i<AP_MOTORS_MAX_NUM_MOTORS; i++) { if (motor_enabled[i]) { motor_mask |= 1U << i; } } uint16_t mask = rc_map_mask(motor_mask); // add parent's mask mask |= AP_MotorsMulticopter::get_motor_mask(); return mask; }
// get_motor_mask - returns a bitmask of which outputs are being used for motors or servos (1 means being used) // this can be used to ensure other pwm outputs (i.e. for servos) do not conflict uint16_t AP_MotorsCoax::get_motor_mask() { uint32_t motor_mask = 1U << AP_MOTORS_MOT_1 | 1U << AP_MOTORS_MOT_2 | 1U << AP_MOTORS_MOT_3 | 1U << AP_MOTORS_MOT_4 | 1U << AP_MOTORS_MOT_5 | 1U << AP_MOTORS_MOT_6; uint16_t mask = rc_map_mask(motor_mask); // add parent's mask mask |= AP_MotorsMulticopter::get_motor_mask(); return mask; }
// get_motor_mask - returns a bitmask of which outputs are being used for motors or servos (1 means being used) // this can be used to ensure other pwm outputs (i.e. for servos) do not conflict uint16_t AP_MotorsHeli_Single::get_motor_mask() { // heli uses channels 1,2,3,4 and 8 // setup fast channels uint32_t mask = 1U << 0 | 1U << 1 | 1U << 2 | 1U << 3 | 1U << AP_MOTORS_HELI_SINGLE_RSC; if (_tail_type == AP_MOTORS_HELI_SINGLE_TAILTYPE_SERVO_EXTGYRO) { mask |= 1U << AP_MOTORS_HELI_SINGLE_EXTGYRO; } if (_tail_type == AP_MOTORS_HELI_SINGLE_TAILTYPE_DIRECTDRIVE_VARPITCH) { mask |= 1U << AP_MOTORS_HELI_SINGLE_TAILRSC; } return rc_map_mask(mask); }
// get_motor_mask - returns a bitmask of which outputs are being used for motors or servos (1 means being used) // this can be used to ensure other pwm outputs (i.e. for servos) do not conflict uint16_t AP_MotorsHeli_Single::get_motor_mask() { // heli uses channels 1,2,3,4,7 and 8 return rc_map_mask(1U << 0 | 1U << 1 | 1U << 2 | 1U << 3 | 1U << AP_MOTORS_HELI_SINGLE_AUX | 1U << AP_MOTORS_HELI_SINGLE_RSC); }
/* set frequency of a set of channels */ void AP_Motors::rc_set_freq(uint32_t mask, uint16_t freq_hz) { hal.rcout->set_freq(rc_map_mask(mask), freq_hz); }
// get_motor_mask - returns a bitmask of which outputs are being used for motors or servos (1 means being used) // this can be used to ensure other pwm outputs (i.e. for servos) do not conflict uint16_t AP_MotorsSingle::get_motor_mask() { // single copter uses channels 1,2,3,4 and 7 return rc_map_mask(1U << 0 | 1U << 1 | 1U << 2 | 1U << 3 | 1U << 6); }