I18N_PLAY_FUNCTION(en, playNumber, getvalue_t number, uint8_t unit, uint8_t att) { if (number < 0) { PUSH_NUMBER_PROMPT(EN_PROMPT_MINUS); number = -number; } if (unit) { unit--; convertUnit(number, unit); if (IS_IMPERIAL_ENABLE()) { if (unit == UNIT_DIST) { unit = UNIT_FEET; } if (unit == UNIT_SPEED) { unit = UNIT_KTS; } } unit++; } int8_t mode = MODE(att); if (mode > 0) { // we assume that we are PREC1 div_t qr = div(number, 10); if (qr.rem) { PLAY_NUMBER(qr.quot, 0, 0); PUSH_NUMBER_PROMPT(EN_PROMPT_POINT_BASE + qr.rem); number = -1; } else { number = qr.quot; } } int16_t tmp = number; if (number >= 1000) { PLAY_NUMBER(number / 1000, 0, 0); PUSH_NUMBER_PROMPT(EN_PROMPT_THOUSAND); number %= 1000; if (number == 0) number = -1; } if (number >= 100) { PUSH_NUMBER_PROMPT(EN_PROMPT_HUNDRED + (number/100)-1); number %= 100; if (number == 0) number = -1; } if (number >= 0) { PUSH_NUMBER_PROMPT(EN_PROMPT_ZERO + number); } if (unit) { EN_PUSH_UNIT_PROMPT(tmp, EN_PROMPT_UNITS_BASE + unit*2); } }
I18N_PLAY_FUNCTION(cz, playNumber, getvalue_t number, uint8_t unit, uint8_t att) { if (number < 0) { PUSH_NUMBER_PROMPT(CZ_PROMPT_MINUS); number = -number; } #if !defined(CPUARM) if (unit) { unit--; convertUnit(number, unit); if (IS_IMPERIAL_ENABLE()) { if (unit == UNIT_DIST) { unit = UNIT_FEET; } if (unit == UNIT_SPEED) { unit = UNIT_KTS; } } unit++; } #endif int8_t mode = MODE(att); if (mode > 0) { #if defined(CPUARM) if (mode == 2) { number /= 10; } #else // we assume that we are PREC1 #endif div_t qr = div(number, 10); if (qr.rem) { PLAY_NUMBER(qr.quot, 0, ZENSKY); if (qr.quot == 0) PUSH_NUMBER_PROMPT(CZ_PROMPT_CELA); else CZ_PUSH_UNIT_PROMPT(qr.quot, CZ_PROMPT_CELA); PLAY_NUMBER(qr.rem, 0, ZENSKY); PUSH_NUMBER_PROMPT(CZ_PROMPT_UNITS_BASE+((unit-1)*4)+3); return; } else number = qr.quot; } int16_t tmp = number; switch(unit) { case 0: break; case 4: case 10: case 13: case 15: case 16: case 17: case 18: att = ZENSKY; break; case 8: case 19: att = STREDNI; break; default: att = MUZSKY; break; } if ((number == 1) && (att == MUZSKY)) { PUSH_NUMBER_PROMPT(CZ_PROMPT_JEDEN); number = -1; } if ((number == 1) && (att == STREDNI)) { PUSH_NUMBER_PROMPT(CZ_PROMPT_JEDNO); number = -1; } if ((number == 2) && ((att == ZENSKY) || (att == STREDNI))) { PUSH_NUMBER_PROMPT(CZ_PROMPT_DVE); number = -1; } if (number >= 1000) { if (number >= 2000) PLAY_NUMBER(number / 1000, 0, 0); if (number >= 2000 && number < 5000) PUSH_NUMBER_PROMPT(CZ_PROMPT_TISICE); else PUSH_NUMBER_PROMPT(CZ_PROMPT_TISIC); number %= 1000; if (number == 0) number = -1; } if (number >= 100) { PUSH_NUMBER_PROMPT(CZ_PROMPT_STO + (number/100)-1); number %= 100; if (number == 0) number = -1; } if (number >= 0) { PUSH_NUMBER_PROMPT(CZ_PROMPT_NULA+number); } if (unit) { CZ_PUSH_UNIT_PROMPT(tmp, (CZ_PROMPT_UNITS_BASE+((unit-1)*4))); } }
I18N_PLAY_FUNCTION(pl, playNumber, getvalue_t number, uint8_t unit, uint8_t att) { if (number < 0) { PUSH_NUMBER_PROMPT(PL_PROMPT_MINUS); number = -number; } if (unit) { unit--; convertUnit(number, unit); if (IS_IMPERIAL_ENABLE()) { if (unit == UNIT_DIST) { unit = UNIT_FEET; } if (unit == UNIT_SPEED) { unit = UNIT_KTS; } } #if defined(CPUARM) if ((att & PREC1) && (unit == UNIT_FEET || (unit == UNIT_DIST && number >= 100))) { number = div10_and_round(number); att -= PREC1; } #endif unit++; } int8_t mode = MODE(att); if (mode > 0) { // we assume that we are PREC1 div_t qr = div(number, 10); if (qr.rem) { PLAY_NUMBER(qr.quot, 0, ZENSKI); if (qr.quot == 0) PUSH_NUMBER_PROMPT(PL_PROMPT_CALA); else PL_PUSH_UNIT_PROMPT(qr.quot, PL_PROMPT_CALA); PLAY_NUMBER(qr.rem, 0, ZENSKI); PUSH_NUMBER_PROMPT(PL_PROMPT_UNITS_BASE+((unit-1)*4)+3); return; } else number = qr.quot; } int16_t tmp = number; switch(unit) { case 0: break; case 10: case 13: case 15: case 16: case 17: att = ZENSKI; break; case 100: att = NIJAKI; break; default: att = MESKI; break; } if ((number == 1) && (att == ZENSKI)) { PUSH_NUMBER_PROMPT(PL_PROMPT_JEDNA); number = -1; } if ((number == 1) && (att == NIJAKI)) { PUSH_NUMBER_PROMPT(PL_PROMPT_JEDNO); number = -1; } if ((number == 2) && (att == ZENSKI)) { PUSH_NUMBER_PROMPT(PL_PROMPT_DWIE); number = -1; } if (number >= 1000) { if (number >= 2000) PLAY_NUMBER(number / 1000, 0, 0); if (number >= 2000 && number < 5000) PUSH_NUMBER_PROMPT(PL_PROMPT_TISIACE); else PUSH_NUMBER_PROMPT(PL_PROMPT_TISIAC); number %= 1000; if (number == 0) number = -1; } if (number >= 100) { PUSH_NUMBER_PROMPT(PL_PROMPT_STO + (number/100)-1); number %= 100; if (number == 0) number = -1; } if (number >= 0) { int test_2 =0; test_2 =number % 10; int ten=0; ten=(number - (number % 10))/10; if (att == ZENSKI && test_2==2 && ten >= 2 ) { PUSH_NUMBER_PROMPT(PL_PROMPT_DZIESIATKI_ZENSKIE+ten); }else PUSH_NUMBER_PROMPT(PL_PROMPT_ZERO+number); } if (unit) { PL_PUSH_UNIT_PROMPT(tmp, (PL_PROMPT_UNITS_BASE+((unit-1)*4))); } }
I18N_PLAY_FUNCTION(fr, playNumber, getvalue_t number, uint8_t unit, uint8_t att) { /* if digit >= 1000000000: temp_digit, digit = divmod(digit, 1000000000) prompts.extend(self.getNumberPrompt(temp_digit)) prompts.append(Prompt(GUIDE_00_BILLION, dir=2)) if digit >= 1000000: temp_digit, digit = divmod(digit, 1000000) prompts.extend(self.getNumberPrompt(temp_digit)) prompts.append(Prompt(GUIDE_00_MILLION, dir=2)) */ if (number < 0) { PUSH_NUMBER_PROMPT(FR_PROMPT_MOINS); number = -number; } int8_t mode = MODE(att); if (mode > 0) { // we assume that we are PREC1 div_t qr = div(number, 10); if (qr.rem) { PLAY_NUMBER(qr.quot, 0, 0); PUSH_NUMBER_PROMPT(FR_PROMPT_VIRGULE_BASE + qr.rem); number = -1; } else { number = qr.quot; } } if (number >= 1000) { if (number >= 2000) PLAY_NUMBER(number / 1000, 0, 0); PUSH_NUMBER_PROMPT(FR_PROMPT_MILLE); number %= 1000; if (number == 0) number = -1; } if (number >= 100) { if (number >= 200) PUSH_NUMBER_PROMPT(FR_PROMPT_ZERO + number/100); PUSH_NUMBER_PROMPT(FR_PROMPT_CENT); number %= 100; if (number == 0) number = -1; } if (((number % 10) == 1) && number < 90 && (att & FEMININ)) { PUSH_NUMBER_PROMPT(FR_PROMPT_UNE+(number/10)); } else if (number >= 0) { PUSH_NUMBER_PROMPT(FR_PROMPT_ZERO+number); } if (unit) { unit--; convertUnit(number, unit); if (IS_IMPERIAL_ENABLE()) { if (unit == UNIT_DIST) { unit = UNIT_FEET; } if (unit == UNIT_SPEED) { unit = UNIT_KTS; } } unit++; PUSH_NUMBER_PROMPT(FR_PROMPT_UNITS_BASE+unit); } }
I18N_PLAY_FUNCTION(it, playNumber, getvalue_t number, uint8_t unit, uint8_t att) { /* if digit >= 1000000000: temp_digit, digit = divmod(digit, 1000000000) prompts.extend(self.getNumberPrompt(temp_digit)) prompts.append(Prompt(GUIDE_00_BILLION, dir=2)) if digit >= 1000000: temp_digit, digit = divmod(digit, 1000000) prompts.extend(self.getNumberPrompt(temp_digit)) prompts.append(Prompt(GUIDE_00_MILLION, dir=2)) */ getvalue_t orignumber; if (number < 0) { PUSH_NUMBER_PROMPT(IT_PROMPT_MENO); number = -number; } orignumber=number; #if !defined(CPUARM) if (unit) { unit--; convertUnit(number, unit); if (IS_IMPERIAL_ENABLE()) { if (unit == UNIT_DIST) { unit = UNIT_FEET; } if (unit == UNIT_SPEED) { unit = UNIT_KTS; } } unit++; } #endif int8_t mode = MODE(att); if (mode > 0) { #if defined(CPUARM) if (mode == 2) { number /= 10; } #else // we assume that we are PREC1 #endif div_t qr = div(number, 10); if (qr.rem > 0) { PLAY_NUMBER(qr.quot, 0, 0); PUSH_NUMBER_PROMPT(IT_PROMPT_VIRGOLA); if (mode==2 && qr.rem < 10) PUSH_NUMBER_PROMPT(IT_PROMPT_ZERO); PLAY_NUMBER(qr.rem, 0, 0); } else { if (qr.quot==1) { PUSH_NUMBER_PROMPT(IT_PROMPT_UN); if (unit) { PUSH_NUMBER_PROMPT(IT_PROMPT_UNITS_BASE+(unit*2)); } return; } else { PLAY_NUMBER(qr.quot, 0, 0); } } } else { if (orignumber == 1 && unit) { PUSH_NUMBER_PROMPT(IT_PROMPT_UN); } else { if (number >= 1000) { if (number >= 2000) { PLAY_NUMBER(number / 1000, 0, 0); PUSH_NUMBER_PROMPT(IT_PROMPT_MILA); } else { PUSH_NUMBER_PROMPT(IT_PROMPT_MILLE); } number %= 1000; if (number == 0) number = -1; } if (number >= 100) { if (number >= 200) PUSH_NUMBER_PROMPT(IT_PROMPT_ZERO + number/100); PUSH_NUMBER_PROMPT(IT_PROMPT_CENT); number %= 100; if (number == 0) number = -1; } PUSH_NUMBER_PROMPT(IT_PROMPT_ZERO+number); } } if (unit) { if (orignumber == 1) { PUSH_NUMBER_PROMPT(IT_PROMPT_UNITS_BASE+(unit*2)); } else { PUSH_NUMBER_PROMPT(IT_PROMPT_UNITS_BASE+(unit*2)+1); } } }
I18N_PLAY_FUNCTION(pt, playNumber, getvalue_t number, uint8_t unit, uint8_t att) { if (number < 0) { PUSH_NUMBER_PROMPT(PT_PROMPT_MENOS); number = -number; } if (unit) { unit--; convertUnit(number, unit); if (IS_IMPERIAL_ENABLE()) { if (unit == UNIT_METERS) { unit = UNIT_FEET; } } #if defined(CPUARM) if ((att & PREC1) && (unit == UNIT_FEET || (unit == UNIT_METERS && number >= 100))) { number /= 10; att -= PREC1; } #endif unit++; } int8_t mode = MODE(att); if (mode > 0) { div_t qr = div(number, (mode == 1 ? 10 : 100)); if (qr.rem > 0) { PLAY_NUMBER(qr.quot, 0, 0); PUSH_NUMBER_PROMPT(PT_PROMPT_VIRGULA); if (mode==2 && qr.rem < 10) PUSH_NUMBER_PROMPT(PT_PROMPT_ZERO); PLAY_NUMBER(qr.rem, unit, 0); } else { PLAY_NUMBER(qr.quot, unit, 0); } return; } if (number >= 1000) { if (number >= 2000) { PLAY_NUMBER(number / 1000, 0, 0); PUSH_NUMBER_PROMPT(PT_PROMPT_MIL); } else { PUSH_NUMBER_PROMPT(PT_PROMPT_MIL); } number %= 1000; if (number == 0) number = -1; } if (number >= 100) { PUSH_NUMBER_PROMPT(PT_PROMPT_CENTO + number/100); number %= 100; if (number == 0) number = -1; } PUSH_NUMBER_PROMPT(PT_PROMPT_ZERO+number); if (unit) { PUSH_NUMBER_PROMPT(PT_PROMPT_UNITS_BASE+unit-1); } }
I18N_PLAY_FUNCTION(pl, playNumber, getvalue_t number, uint8_t unit, uint8_t att) { #if defined(SIMU) printf("numer do powiedzenia2 %d ======== \n\n",number); printf("UNIT2 %d ======== \n\n",unit); printf("ATT %d ======== \n\n",att); #endif if (number < 0) { PUSH_NUMBER_PROMPT(PL_PROMPT_MINUS); number = -number; } if (unit) { unit--; convertUnit(number, unit); if (IS_IMPERIAL_ENABLE()) { if (unit == UNIT_METERS) { unit = UNIT_FEET; } } #if defined(CPUARM) if ((att & PREC1) && (unit == UNIT_FEET || (unit == UNIT_METERS && number >= 100))) { number /= 10; att -= PREC1; } #endif unit++; } int8_t mode = MODE(att); if (mode > 0) { // we assume that we are PREC1 div_t qr = div(number, 10); if (qr.rem) { PLAY_NUMBER(qr.quot, 0, ZENSKI); if (qr.quot == 0) PUSH_NUMBER_PROMPT(PL_PROMPT_CALA); else PL_PUSH_UNIT_PROMPT(qr.quot, PL_PROMPT_CALA); PLAY_NUMBER(qr.rem, 0, ZENSKI); PUSH_NUMBER_PROMPT(PL_PROMPT_UNITS_BASE+((unit-1)*4)+3); return; } else number = qr.quot; } int16_t tmp = number; switch(unit) { case 0: att = MESKI; break; case 10: case 13: case 15: case 16: case 17: att = ZENSKI; break; case 100: att = NIJAKI; break; default: att = MESKI; break; } if ((number == 1) && (att == ZENSKI)) { PUSH_NUMBER_PROMPT(PL_PROMPT_JEDNA); number = -1; } if ((number == 1) && (att == NIJAKI)) { PUSH_NUMBER_PROMPT(PL_PROMPT_JEDNO); number = -1; } if ((number == 2) && (att == ZENSKI)) { PUSH_NUMBER_PROMPT(PL_PROMPT_DWIE); number = -1; } if (number >= 1000) { if (number >= 2000) PLAY_NUMBER(number / 1000, 0, 0); if (number >= 2000 && number < 5000) PUSH_NUMBER_PROMPT(PL_PROMPT_TISIACE); else PUSH_NUMBER_PROMPT(PL_PROMPT_TISIAC); number %= 1000; if (number == 0) number = -1; } if (number >= 100) { PUSH_NUMBER_PROMPT(PL_PROMPT_STO + (number/100)-1); number %= 100; if (number == 0) number = -1; } if (number >= 0) { int test_2 =0; test_2 =number % 10; int dziesiatka=0; dziesiatka=(number - (number % 10))/10; #if defined(SIMU) printf("dziesiatki %d - %d ==== ",dziesiatka,test_2); #endif if (att == ZENSKI && test_2==2 && dziesiatka >= 2 ) { PUSH_NUMBER_PROMPT(PL_PROMPT_DZIESIATKI_ZENSKIE+dziesiatka); }else PUSH_NUMBER_PROMPT(PL_PROMPT_ZERO+number); } if (unit) { PL_PUSH_UNIT_PROMPT(tmp, (PL_PROMPT_UNITS_BASE+((unit-1)*4))); } }
I18N_PLAY_FUNCTION(it, playNumber, getvalue_t number, uint8_t unit, uint8_t att) { /* if digit >= 1000000000: temp_digit, digit = divmod(digit, 1000000000) prompts.extend(self.getNumberPrompt(temp_digit)) prompts.append(Prompt(GUIDE_00_BILLION, dir=2)) if digit >= 1000000: temp_digit, digit = divmod(digit, 1000000) prompts.extend(self.getNumberPrompt(temp_digit)) prompts.append(Prompt(GUIDE_00_MILLION, dir=2)) */ if (number < 0) { PUSH_NUMBER_PROMPT(IT_PROMPT_MENO); number = -number; } if (unit) { unit--; convertUnit(number, unit); if (IS_IMPERIAL_ENABLE()) { if (unit == UNIT_DIST) { unit = UNIT_FEET; } if (unit == UNIT_SPEED) { unit = UNIT_KTS; } } #if defined(CPUARM) if ((att & PREC1) && (unit == UNIT_FEET || (unit == UNIT_DIST && number >= 100))) { number = div10_and_round(number); att -= PREC1; } #endif unit++; } int8_t mode = MODE(att); if (mode > 0) { div_t qr = div(number, (mode == 1 ? 10 : 100)); if (qr.rem > 0) { PLAY_NUMBER(qr.quot, 0, 0); PUSH_NUMBER_PROMPT(IT_PROMPT_VIRGOLA); if (mode==2 && qr.rem < 10) PUSH_NUMBER_PROMPT(IT_PROMPT_ZERO); PLAY_NUMBER(qr.rem, unit, 0); } else { PLAY_NUMBER(qr.quot, unit, 0); } return; } if (number >= 1000) { if (number >= 2000) { PLAY_NUMBER(number / 1000, 0, 0); PUSH_NUMBER_PROMPT(IT_PROMPT_MILA); } else { PUSH_NUMBER_PROMPT(IT_PROMPT_MILLE); } number %= 1000; if (number == 0) number = -1; } if (number >= 100) { if (number >= 200) PUSH_NUMBER_PROMPT(IT_PROMPT_ZERO + number/100); PUSH_NUMBER_PROMPT(IT_PROMPT_CENT); number %= 100; if (number == 0) number = -1; } PUSH_NUMBER_PROMPT(IT_PROMPT_ZERO+number); if (unit) { PUSH_NUMBER_PROMPT(IT_PROMPT_UNITS_BASE+unit-1); } }
I18N_PLAY_FUNCTION(pt, playNumber, getvalue_t number, uint8_t unit, uint8_t att) { if (number < 0) { PUSH_NUMBER_PROMPT(PT_PROMPT_MENOS); number = -number; } #if !defined(CPUARM) if (unit) { unit--; convertUnit(number, unit); if (IS_IMPERIAL_ENABLE()) { if (unit == UNIT_DIST) { unit = UNIT_FEET; } if (unit == UNIT_SPEED) { unit = UNIT_KTS; } } unit++; } #endif int8_t mode = MODE(att); if (mode > 0) { #if defined(CPUARM) if (mode == 2) { number /= 10; } #else // we assume that we are PREC1 #endif div_t qr = div(number, 10); if (qr.rem > 0) { PLAY_NUMBER(qr.quot, 0, 0); PUSH_NUMBER_PROMPT(PT_PROMPT_VIRGULA); if (mode==2 && qr.rem < 10) PUSH_NUMBER_PROMPT(PT_PROMPT_ZERO); PLAY_NUMBER(qr.rem, unit, 0); } else { PLAY_NUMBER(qr.quot, unit, 0); } return; } if (number >= 1000) { if (number >= 2000) { PLAY_NUMBER(number / 1000, 0, 0); PUSH_NUMBER_PROMPT(PT_PROMPT_MIL); } else { PUSH_NUMBER_PROMPT(PT_PROMPT_MIL); } number %= 1000; if (number == 0) number = -1; } if (number >= 100) { PUSH_NUMBER_PROMPT(PT_PROMPT_CENTO + number/100); number %= 100; if (number == 0) number = -1; } PUSH_NUMBER_PROMPT(PT_PROMPT_ZERO+number); if (unit) { PUSH_NUMBER_PROMPT(PT_PROMPT_UNITS_BASE+unit-1); } }
PLAY_FUNCTION(playValue, source_t idx) { if (IS_FAI_FORBIDDEN(idx)) return; getvalue_t val = getValue(idx); #if defined(CPUARM) if (idx >= MIXSRC_FIRST_TELEM) { TelemetrySensor & telemetrySensor = g_model.telemetrySensors[(idx-MIXSRC_FIRST_TELEM) / 3]; uint8_t attr = 0; if (telemetrySensor.prec > 0) { if (telemetrySensor.prec == 2) { if (val >= 5000) { val = div100_and_round(val); } else { val = div10_and_round(val); attr = PREC1; } } else { if (val >= 500) { val = div10_and_round(val); } else { attr = PREC1; } } } PLAY_NUMBER(val, telemetrySensor.unit == UNIT_CELLS ? UNIT_VOLTS : telemetrySensor.unit, attr); } else if (idx >= MIXSRC_FIRST_TIMER && idx <= MIXSRC_LAST_TIMER) { PLAY_DURATION(val, 0); } else if (idx == MIXSRC_TX_TIME) { PLAY_DURATION(val*60, PLAY_TIME); } else if (idx == MIXSRC_TX_VOLTAGE) { PLAY_NUMBER(val, UNIT_VOLTS, PREC1); } else { if (idx <= MIXSRC_LAST_CH) { val = calcRESXto100(val); } PLAY_NUMBER(val, 0, 0); } #else switch (idx) { case MIXSRC_FIRST_TELEM+TELEM_TX_VOLTAGE-1: PLAY_NUMBER(val, 1+UNIT_VOLTS, PREC1); break; case MIXSRC_FIRST_TELEM+TELEM_TIMER1-1: case MIXSRC_FIRST_TELEM+TELEM_TIMER2-1: PLAY_DURATION(val, 0); break; #if defined(FRSKY) case MIXSRC_FIRST_TELEM+TELEM_RSSI_TX-1: case MIXSRC_FIRST_TELEM+TELEM_RSSI_RX-1: PLAY_NUMBER(val, 1+UNIT_DBM, 0); break; case MIXSRC_FIRST_TELEM+TELEM_MIN_A1-1: case MIXSRC_FIRST_TELEM+TELEM_MIN_A2-1: idx -= TELEM_MIN_A1-TELEM_A1; // no break case MIXSRC_FIRST_TELEM+TELEM_A1-1: case MIXSRC_FIRST_TELEM+TELEM_A2-1: if (TELEMETRY_STREAMING()) { idx -= (MIXSRC_FIRST_TELEM+TELEM_A1-1); uint8_t att = 0; int16_t converted_value = div10_and_round(applyChannelRatio(idx, val));; if (ANA_CHANNEL_UNIT(idx) < UNIT_RAW) { att = PREC1; } PLAY_NUMBER(converted_value, 1+ANA_CHANNEL_UNIT(idx), att); } break; case MIXSRC_FIRST_TELEM+TELEM_CELL-1: case MIXSRC_FIRST_TELEM+TELEM_MIN_CELL-1: PLAY_NUMBER(div10_and_round(val), 1+UNIT_VOLTS, PREC1); break; case MIXSRC_FIRST_TELEM+TELEM_VFAS-1: case MIXSRC_FIRST_TELEM+TELEM_CELLS_SUM-1: case MIXSRC_FIRST_TELEM+TELEM_MIN_CELLS_SUM-1: case MIXSRC_FIRST_TELEM+TELEM_MIN_VFAS-1: PLAY_NUMBER(val, 1+UNIT_VOLTS, PREC1); break; case MIXSRC_FIRST_TELEM+TELEM_CURRENT-1: case MIXSRC_FIRST_TELEM+TELEM_MAX_CURRENT-1: PLAY_NUMBER(val, 1+UNIT_AMPS, PREC1); break; case MIXSRC_FIRST_TELEM+TELEM_ACCx-1: case MIXSRC_FIRST_TELEM+TELEM_ACCy-1: case MIXSRC_FIRST_TELEM+TELEM_ACCz-1: PLAY_NUMBER(div10_and_round(val), 1+UNIT_G, PREC1); break; case MIXSRC_FIRST_TELEM+TELEM_VSPEED-1: PLAY_NUMBER(div10_and_round(val), 1+UNIT_METERS_PER_SECOND, PREC1); break; case MIXSRC_FIRST_TELEM+TELEM_ASPEED-1: case MIXSRC_FIRST_TELEM+TELEM_MAX_ASPEED-1: PLAY_NUMBER(val/10, 1+UNIT_KTS, 0); break; case MIXSRC_FIRST_TELEM+TELEM_CONSUMPTION-1: PLAY_NUMBER(val, 1+UNIT_MAH, 0); break; case MIXSRC_FIRST_TELEM+TELEM_POWER-1: PLAY_NUMBER(val, 1+UNIT_WATTS, 0); break; case MIXSRC_FIRST_TELEM+TELEM_ALT-1: case MIXSRC_FIRST_TELEM+TELEM_MIN_ALT-1: case MIXSRC_FIRST_TELEM+TELEM_MAX_ALT-1: #if defined(WS_HOW_HIGH) if (IS_IMPERIAL_ENABLE() && IS_USR_PROTO_WS_HOW_HIGH()) PLAY_NUMBER(val, 1+UNIT_FEET, 0); else #endif PLAY_NUMBER(val, 1+UNIT_DIST, 0); break; case MIXSRC_FIRST_TELEM+TELEM_RPM-1: case MIXSRC_FIRST_TELEM+TELEM_MAX_RPM-1: { getvalue_t rpm = val; if (rpm > 100) rpm = 10 * div10_and_round(rpm); if (rpm > 1000) rpm = 10 * div10_and_round(rpm); PLAY_NUMBER(rpm, 1+UNIT_RPMS, 0); break; } case MIXSRC_FIRST_TELEM+TELEM_HDG-1: PLAY_NUMBER(val, 1+UNIT_HDG, 0); break; default: { uint8_t unit = 1; if (idx < MIXSRC_GVAR1) val = calcRESXto100(val); if (idx >= MIXSRC_FIRST_TELEM+TELEM_ALT-1 && idx <= MIXSRC_FIRST_TELEM+TELEM_GPSALT-1) unit = idx - (MIXSRC_FIRST_TELEM+TELEM_ALT-1); else if (idx >= MIXSRC_FIRST_TELEM+TELEM_MAX_T1-1 && idx <= MIXSRC_FIRST_TELEM+TELEM_MAX_DIST-1) unit = 3 + idx - (MIXSRC_FIRST_TELEM+TELEM_MAX_T1-1); unit = pgm_read_byte(bchunit_ar+unit); PLAY_NUMBER(val, unit == UNIT_RAW ? 0 : unit+1, 0); break; } #else default: { PLAY_NUMBER(val, 0, 0); break; } #endif } #endif }