void STDMIXER_Preset() { if(Model.mixer_mode == MIXER_ADVANCED) return; mapped_std_channels.pitch = NUM_OUT_CHANNELS + 2; // Virt 3 /pit mapped_std_channels.rudd = 3; mapped_std_channels.gear = GYROOUTPUT_GEAR; mapped_std_channels.aux2 = GYROOUTPUT_AUX2; mapped_std_channels.switches[SWITCHFUNC_HOLD] = INP_GEAR0; mapped_std_channels.switches[SWITCHFUNC_GYROSENSE] = INP_MIX0; mapped_std_channels.switches[SWITCHFUNC_FLYMODE] = INP_FMOD0; mapped_std_channels.switches[SWITCHFUNC_DREXP_AIL] = INP_AIL_DR0; mapped_std_channels.switches[SWITCHFUNC_DREXP_ELE] = INP_ELE_DR0; mapped_std_channels.switches[SWITCHFUNC_DREXP_RUD] = INP_FMOD0; const u8 *ch_map = CurrentProtocolChannelMap; if (! ch_map) { // for none protocol, assign any channel to thr is fine ch_map = EATRG0; } for (unsigned ch = 0; ch < 3; ch++) { // only the first 3 channels need to check if (ch_map[ch] == INP_THROTTLE) { mapped_std_channels.throttle = ch; break; } } mapped_std_channels.aile = NUM_OUT_CHANNELS; // virt 1 mapped_std_channels.elev = NUM_OUT_CHANNELS +1; // virt 2 STDMIXER_InitSwitches(); STDMIXER_SaveSwitches(); }
static const char *mixermode_cb(guiObject_t *obj, int dir, void *data) { (void)data; u8 changed = 0; int max_mode = Model.type ? 0 : 1; //Only allow Standard GUI for Helis Model.mixer_mode = GUI_TextSelectHelper(Model.mixer_mode, 0, max_mode, dir, 1, 1, &changed); if (changed && Model.mixer_mode == MIXER_STANDARD) { if (!STDMIXER_ValidateTraditionModel()) { Model.mixer_mode = MIXER_ADVANCED; PAGE_ShowInvalidStandardMixerDialog(obj); } else { STDMIXER_SetChannelOrderByProtocol(); STDMIXER_SaveSwitches(); } } return STDMIXER_ModeName(Model.mixer_mode); }