@@ -65,31 +65,36 @@ void Mixer::param_change_callback(uint16_t param_id)
6565
6666 } else if ((param_id >=PARAM_PRIMARY_MIXER_PWM_RATE_0 )&&(param_id <=PARAM_PRIMARY_MIXER_PWM_RATE_9 )) {
6767 primary_mixer_.default_pwm_rate [param_id-PARAM_PRIMARY_MIXER_PWM_RATE_0] = RF_.params_ .get_param_float (param_id);
68- // Note: secondary micer pwm rates are not used, but should match the primary mixer in case code elsewhere changes.
68+ // Note: secondary mixer pwm rates are not used, but should match the primary mixer in case code elsewhere changes.
6969 secondary_mixer_.default_pwm_rate [param_id-PARAM_PRIMARY_MIXER_PWM_RATE_0] = RF_.params_ .get_param_float (param_id);
7070
7171 } else if ((param_id >=PARAM_PRIMARY_MIXER_0_0 )&&(param_id <=PARAM_PRIMARY_MIXER_5_9 )) {
7272
7373 uint16_t param_id_offset = param_id-PARAM_PRIMARY_MIXER_0_0;
7474 uint16_t param_id_row = param_id_offset%6 ;
7575 uint16_t param_id_col = param_id_offset/6 ;
76+ float param_value = RF_.params_ .get_param_float (param_id);
7677
77- if (param_id_row==0 ) { primary_mixer_.Fx [param_id_col] = RF_. params_ . get_param_float (param_id) ; }
78- if (param_id_row==1 ) { primary_mixer_.Fy [param_id_col] = RF_. params_ . get_param_float (param_id) ; }
79- if (param_id_row==2 ) { primary_mixer_.Fz [param_id_col] = RF_. params_ . get_param_float (param_id) ; }
80- if (param_id_row==3 ) { primary_mixer_.Qx [param_id_col] = RF_. params_ . get_param_float (param_id) ; }
81- if (param_id_row==4 ) { primary_mixer_.Qy [param_id_col] = RF_. params_ . get_param_float (param_id) ; }
82- if (param_id_row==5 ) { primary_mixer_.Qz [param_id_col] = RF_. params_ . get_param_float (param_id) ; }
78+ if (param_id_row==0 ) { primary_mixer_.Fx [param_id_col] = param_value ; }
79+ if (param_id_row==1 ) { primary_mixer_.Fy [param_id_col] = param_value ; }
80+ if (param_id_row==2 ) { primary_mixer_.Fz [param_id_col] = param_value ; }
81+ if (param_id_row==3 ) { primary_mixer_.Qx [param_id_col] = param_value ; }
82+ if (param_id_row==4 ) { primary_mixer_.Qy [param_id_col] = param_value ; }
83+ if (param_id_row==5 ) { primary_mixer_.Qz [param_id_col] = param_value ; }
8384
8485 // Special Case for when secondary mixer is mirroring primary mixer.
8586 mixer_type_t mixer_choice = static_cast <mixer_type_t >(RF_.params_ .get_param_int (PARAM_SECONDARY_MIXER));
8687 if (mixer_choice >= NUM_MIXERS) {
87- if (param_id_row==0 ) { secondary_mixer_.Fx [param_id_col] = RF_.params_ .get_param_float (param_id); }
88- if (param_id_row==1 ) { secondary_mixer_.Fy [param_id_col] = RF_.params_ .get_param_float (param_id); }
89- if (param_id_row==2 ) { secondary_mixer_.Fz [param_id_col] = RF_.params_ .get_param_float (param_id); }
90- if (param_id_row==3 ) { secondary_mixer_.Qx [param_id_col] = RF_.params_ .get_param_float (param_id); }
91- if (param_id_row==4 ) { secondary_mixer_.Qy [param_id_col] = RF_.params_ .get_param_float (param_id); }
92- if (param_id_row==5 ) { secondary_mixer_.Qz [param_id_col] = RF_.params_ .get_param_float (param_id); }
88+ if (param_id_row==0 ) { secondary_mixer_.Fx [param_id_col] = param_value; }
89+ if (param_id_row==1 ) { secondary_mixer_.Fy [param_id_col] = param_value; }
90+ if (param_id_row==2 ) { secondary_mixer_.Fz [param_id_col] = param_value; }
91+ if (param_id_row==3 ) { secondary_mixer_.Qx [param_id_col] = param_value; }
92+ if (param_id_row==4 ) { secondary_mixer_.Qy [param_id_col] = param_value; }
93+ if (param_id_row==5 ) { secondary_mixer_.Qz [param_id_col] = param_value; }
94+
95+ // Write the value to params -- otherwise, the secondary mixer gets out of sync
96+ uint16_t secondary_mixer_param_id = PARAM_SECONDARY_MIXER_0_0 + param_id_col*6 + param_id_row;
97+ RF_.params_ .set_param_float (secondary_mixer_param_id, param_value);
9398 }
9499
95100 } else if ((param_id >=PARAM_SECONDARY_MIXER_0_0 )&&(param_id <=PARAM_SECONDARY_MIXER_5_9 )) {
0 commit comments