示例#1
0
static int _adjust_src_for_telemetry(int src, int dir)
{
    if (src > NUM_RTC + NUM_TIMERS && src <= NUM_RTC + NUM_TIMERS + NUM_TELEM) {
        if (PROTOCOL_GetTelemetryState() != PROTO_TELEM_ON) {
            //We chose a telemetry item, but there is no telemetry
            src = (dir > 0) ? NUM_RTC + NUM_TIMERS + NUM_TELEM + 1 : NUM_RTC + NUM_TIMERS;
        } else {
            int max = TELEMETRY_GetNumTelemSrc();
            if (src > NUM_RTC + NUM_TIMERS + max) {
                src = (dir > 0) ? NUM_RTC + NUM_TIMERS + NUM_TELEM + 1 : NUM_RTC + NUM_TIMERS + max;
            }
        }
    }
    return src;
}
示例#2
0
static const char *telem_name_cb(guiObject_t *obj, int dir, void *data)
{
    (void)obj;
    int val = (long)data;
    struct TelemetryAlarm *alarm = &Model.alarms[val];
    int telem_src = alarm->src;
    int last = TELEMETRY_GetNumTelemSrc();
    u8 changed;
    //skip over (don't allow selection of) telemetry src's with max=0 (eg. JETCAT_STATUS, JETCAT_OFFCOND)
    while (1) {
        telem_src = GUI_TextSelectHelper(telem_src, 0, last, dir, 1, 1, &changed);
        if (telem_src == 0 || TELEMETRY_GetMaxValue(telem_src))
            break;
        if (telem_src == last)
            dir = -1;
    }
    alarm->src = telem_src;
    if (changed) {
        guiObject_t *valObj = _get_obj(val, 2);
        if (valObj)
            GUI_Redraw(valObj);
    }
    return TELEMETRY_ShortName(tempstring, alarm->src);
}