Example #1
0
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();
}
Example #2
0
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);
}