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(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))); } }