const char *_set_src_cb(guiTextSelect_t *obj, u8 *src, int dir, int idx, int source) { u8 changed; if (Model.mixer_mode == MIXER_STANDARD && Model.type == MODELTYPE_HELI) { //Improvement: only to intelligent switch setting for heli type in standard mode int is_neg = MIXER_SRC_IS_INV(*src); int step = mapped_std_channels.throttle + NUM_INPUTS +1; int newsrc = GUI_TextSelectHelper(MIXER_SRC(*src), 0, step, dir, step, step, &changed); MIXER_SET_SRC_INV(newsrc, is_neg); *src = newsrc; } else { if (source <= INP_NONE) *src = INPUT_SelectSource(*src, dir, &changed); else *src = INPUT_SelectInput(*src, source, &changed); } if (changed) { TIMER_Reset(idx); } GUI_TextSelectEnablePress(obj, MIXER_SRC(*src)); return INPUT_SourceName(tempstring, *src); }
const char *set_drsource_cb(guiObject_t *obj, int dir, void *data) { (void) obj; u8 *source = (u8 *)data; u8 changed; u8 oldsrc = *source; *source = INPUT_SelectSource(*source, dir, &changed); if (changed) { sync_mixers(); if ((!! MIXER_SRC(oldsrc)) ^ (!! MIXER_SRC(*source))) { // bug fix (issues #191) : only invoke _update_rate_widgets() for expo template if (mp->cur_template == MIXERTEMPLATE_EXPO_DR) { if(data == &mp->mixer[1].sw) _update_rate_widgets(0); else if(data == &mp->mixer[2].sw) _update_rate_widgets(1); } } else { MIXPAGE_RedrawGraphs(); } } GUI_TextSelectEnablePress((guiTextSelect_t *)obj, MIXER_SRC(*source)); return INPUT_SourceName(tempstring, *source); }
const char *set_source_cb(guiObject_t *obj, int dir, void *data) { u8 changed; *(u8 *)data = INPUT_SelectSource(*(u8 *)data, dir, &changed); return set_source_helper(obj, data, changed); }