Different numbers for Voice Prompts

Diff functions in Custom Switches
This commit is contained in:
bsongis
2012-08-14 17:09:03 +00:00
parent b94b11d466
commit 8f103ecee3
14 changed files with 207 additions and 168 deletions
+3 -2
View File
@@ -31,9 +31,10 @@
*
*/
#define PROMPT_SYSTEM_BASE 170
#define PROMPT_CUSTOM_BASE 200
#define PROMPT_SYSTEM_BASE 230
#define PROMPT_CUSTOM_BASE 256
#define pushCustomPrompt(p) pushPrompt(PROMPT_CUSTOM_BASE+v)
extern void pushPrompt(uint16_t prompt);
extern bool isPlaying();
+2 -1
View File
@@ -403,7 +403,8 @@ bool check(uint8_t event, uint8_t curr, const MenuFuncP *menuTab, uint8_t menuTa
break;
}
if (m_posVert==0 || !menuTab) {
popMenu(); //beeps itself
popMenu(); // beeps itself
return false;
}
else {
AUDIO_MENUS();
+68 -62
View File
@@ -2278,11 +2278,22 @@ void menuProcCustomSwitchOne(uint8_t event)
putsSwitches(CSW_2ND_COLUMN, y, cs->v2, attr);
v2_min = SWITCH_OFF; v2_max = SWITCH_ON;
}
else if (cstate == CS_VOFS) {
else if (cstate == CS_VCOMP) {
putsChnRaw(CSW_2ND_COLUMN, y, cs->v2, attr);
}
else {
#if defined(FRSKY)
if (cs->v1 > NUM_XCHNCSW-NUM_TELEMETRY) {
putsTelemetryChannel(CSW_2ND_COLUMN, y, cs->v1 - (NUM_XCHNCSW-NUM_TELEMETRY+1), convertTelemValue(cs->v1 - (NUM_XCHNCSW-NUM_TELEMETRY), 128+cs->v2), attr|LEFT);
v2_min = -128; v2_max = maxTelemValue(cs->v1 - (NUM_XCHNCSW-NUM_TELEMETRY)) - 128;
putsTelemetryChannel(CSW_2ND_COLUMN, y, cs->v1 - (NUM_XCHNCSW-NUM_TELEMETRY+1), cstate==CS_VOFS ? convertTelemValue(cs->v1 - (NUM_XCHNCSW-NUM_TELEMETRY), 128+cs->v2) : cs->v2, attr|LEFT);
v2_max = maxTelemValue(cs->v1 - (NUM_XCHNCSW-NUM_TELEMETRY));
if (cstate == CS_VOFS) {
v2_min = -128;
v2_max -= 128;
}
else {
v2_max = min((uint8_t)127, (uint8_t)v2_max);
v2_min = -v2_max;
}
if (cs->v2 > v2_max) {
cs->v2 = v2_max;
eeDirty(EE_MODEL);
@@ -2295,9 +2306,7 @@ void menuProcCustomSwitchOne(uint8_t event)
lcd_outdezAtt(CSW_2ND_COLUMN, y, cs->v2, attr|LEFT);
}
}
else {
putsChnRaw(CSW_2ND_COLUMN, y, cs->v2, attr);
}
if (attr) {
CHECK_INCDEC_MODELVAR(event, cs->v2, v2_min, v2_max);
}
@@ -2325,7 +2334,7 @@ void menuProcCustomSwitchOne(uint8_t event)
void menuProcCustomSwitches(uint8_t event)
{
MENU(STR_MENUCUSTOMSWITCHES, menuTabModel, e_CustomSwitches, NUM_CSW+1, {0, 2/*repeated...*/});
SIMPLE_MENU(STR_MENUCUSTOMSWITCHES, menuTabModel, e_CustomSwitches, NUM_CSW+1);
uint8_t y = 0;
uint8_t k = 0;
@@ -2359,39 +2368,31 @@ void menuProcCustomSwitches(uint8_t event)
if (cs->func > 0) {
// CSW func
lcd_putsiAtt(4*FW - 2, y, STR_VCSWFUNC, cs->func, 0);
lcd_putsiAtt(4*FW - 4, y, STR_VCSWFUNC, cs->func, 0);
// CSW params
uint8_t cstate = CS_STATE(cs->func);
if (cstate == CS_VOFS)
{
putsChnRaw(12*FW-6, y, cs->v1, 0);
if (cstate == CS_VBOOL) {
putsSwitches(12*FW-4, y, cs->v1, 0);
putsSwitches(17*FW, y, cs->v2, 0);
}
else if (cstate == CS_VCOMP) {
putsChnRaw(12*FW-4, y, cs->v1, 0);
putsChnRaw(17*FW, y, cs->v2, 0);
}
else {
putsChnRaw(12*FW-4, y, cs->v1, 0);
#if defined(FRSKY)
if (cs->v1 > NUM_XCHNCSW-NUM_TELEMETRY) {
putsTelemetryChannel(19*FW, y, cs->v1 - (NUM_XCHNCSW-NUM_TELEMETRY+1), convertTelemValue(cs->v1 - (NUM_XCHNCSW-NUM_TELEMETRY), 128+cs->v2), 0);
int8_t v2_max = maxTelemValue(cs->v1 - (NUM_XCHNCSW-NUM_TELEMETRY)) - 128;
if (cs->v2 > v2_max) {
cs->v2 = v2_max;
eeDirty(EE_MODEL);
}
}
else
if (cs->v1 > NUM_XCHNCSW-NUM_TELEMETRY) {
putsTelemetryChannel(19*FW, y, cs->v1 - (NUM_XCHNCSW-NUM_TELEMETRY+1), cstate==CS_VOFS ? convertTelemValue(cs->v1 - (NUM_XCHNCSW-NUM_TELEMETRY), 128+cs->v2) : cs->v2, 0);
}
else
#endif
{
lcd_outdezAtt(19*FW, y, cs->v2, 0);
}
}
else if (cstate == CS_VBOOL)
{
putsSwitches(12*FW-6, y, cs->v1, 0);
putsSwitches(17*FW, y, cs->v2, 0);
}
else // cstate == CS_COMP
{
putsChnRaw(12*FW-6, y, cs->v1, 0);
putsChnRaw(17*FW, y, cs->v2, 0);
{
lcd_outdezAtt(19*FW, y, cs->v2, 0);
}
}
}
}
@@ -2416,49 +2417,54 @@ void menuProcCustomSwitches(uint8_t event)
putsSwitches(0, y, sw, getSwitch(sw, 0) ? BOLD : 0);
// CSW func
lcd_putsiAtt(4*FW - 2, y, STR_VCSWFUNC, cs->func, m_posHorz==0 ? attr : 0);
lcd_putsiAtt(4*FW - 4, y, STR_VCSWFUNC, cs->func, m_posHorz==0 ? attr : 0);
// CSW params
uint8_t cstate = CS_STATE(cs->func);
int8_t v1_min=0, v1_max=NUM_XCHNCSW, v2_min=0, v2_max=NUM_XCHNCSW;
if (cstate == CS_VOFS)
{
putsChnRaw(12*FW-6, y, cs->v1, (m_posHorz==1 ? attr : 0));
if (cstate == CS_VBOOL) {
putsSwitches(12*FW-4, y, cs->v1, m_posHorz==1 ? attr : 0);
putsSwitches(17*FW, y, cs->v2, m_posHorz==2 ? attr : 0);
v1_min = SWITCH_OFF; v1_max = SWITCH_ON;
v2_min = SWITCH_OFF; v2_max = SWITCH_ON;
}
else if (cstate == CS_VCOMP) {
putsChnRaw(12*FW-4, y, cs->v1, m_posHorz==1 ? attr : 0);
putsChnRaw(17*FW, y, cs->v2, m_posHorz==2 ? attr : 0);
}
else {
putsChnRaw(12*FW-4, y, cs->v1, (m_posHorz==1 ? attr : 0));
#if defined(FRSKY)
if (cs->v1 > NUM_XCHNCSW-NUM_TELEMETRY) {
putsTelemetryChannel(19*FW, y, cs->v1 - (NUM_XCHNCSW-NUM_TELEMETRY+1), convertTelemValue(cs->v1 - (NUM_XCHNCSW-NUM_TELEMETRY), 128+cs->v2), m_posHorz==2 ? attr : 0);
v2_min = -128; v2_max = maxTelemValue(cs->v1 - (NUM_XCHNCSW-NUM_TELEMETRY)) - 128;
if (cs->v2 > v2_max) {
cs->v2 = v2_max;
eeDirty(EE_MODEL);
}
if (cs->v1 > NUM_XCHNCSW-NUM_TELEMETRY) {
putsTelemetryChannel(19*FW, y, cs->v1 - (NUM_XCHNCSW-NUM_TELEMETRY+1), cstate==CS_VOFS ? convertTelemValue(cs->v1 - (NUM_XCHNCSW-NUM_TELEMETRY), 128+cs->v2) : cs->v2, m_posHorz==2 ? attr : 0);
v2_max = maxTelemValue(cs->v1 - (NUM_XCHNCSW-NUM_TELEMETRY));
if (cstate == CS_VOFS) {
v2_min = -128;
v2_max -= 128;
}
else
else {
v2_max = min((uint8_t)127, (uint8_t)v2_max);
v2_min = -v2_max;
}
if (cs->v2 > v2_max) {
cs->v2 = v2_max;
eeDirty(EE_MODEL);
}
}
else
#endif
{
lcd_outdezAtt(19*FW, y, cs->v2, m_posHorz==2 ? attr : 0);
v2_min = -125; v2_max = 125;
}
}
else if (cstate == CS_VBOOL)
{
putsSwitches(12*FW-6, y, cs->v1, m_posHorz==1 ? attr : 0);
putsSwitches(17*FW, y, cs->v2, m_posHorz==2 ? attr : 0);
v1_min = SWITCH_OFF; v1_max = SWITCH_ON;
v2_min = SWITCH_OFF; v2_max = SWITCH_ON;
}
else // cstate == CS_COMP
{
putsChnRaw(12*FW-6, y, cs->v1, m_posHorz==1 ? attr : 0);
putsChnRaw(17*FW, y, cs->v2, m_posHorz==2 ? attr : 0);
{
lcd_outdezAtt(19*FW, y, cs->v2, m_posHorz==2 ? attr : 0);
v2_min = -125; v2_max = 125;
}
}
if ((s_editMode>0 || p1valdiff) && attr) {
switch (m_posHorz) {
case 0:
CHECK_INCDEC_MODELVAR(event, cs->func, 0,CS_MAXF);
CHECK_INCDEC_MODELVAR(event, cs->func, 0, CS_MAXF);
if (cstate != CS_STATE(cs->func)) {
cs->v1 = 0;
cs->v2 = 0;
+54 -42
View File
@@ -590,6 +590,8 @@ uint32_t delays[NUM_CSW];
uint32_t durations[NUM_CSW];
#endif
int16_t csLastValue[NUM_CSW];
bool __getSwitch(int8_t swtch)
{
bool result;
@@ -646,43 +648,7 @@ bool __getSwitch(int8_t swtch)
else {
int16_t x = getValue(cs->v1-1);
int16_t y;
if (s == CS_VOFS) {
#if defined(FRSKY)
// Telemetry
if (cs->v1 > CSW_CHOUT_BASE+NUM_CHNOUT) {
if (frskyStreaming <= 0 && cs->v1 > CSW_CHOUT_BASE+NUM_CHNOUT+MAX_TIMERS)
return swtch > 0 ? false : true;
y = convertTelemValue(cs->v1-(CSW_CHOUT_BASE+NUM_CHNOUT), 128+cs->v2);
uint8_t idx = cs->v1-CSW_CHOUT_BASE-NUM_CHNOUT-TELEM_ALT;
if (idx < THLD_MAX) {
// Fill the threshold array
barsThresholds[idx] = 128 + cs->v2;
}
}
else
#endif
{
y = calc100toRESX(cs->v2);
}
switch (cs->func) {
case CS_VPOS:
result = (x>y);
break;
case CS_VNEG:
result = (x<y);
break;
case CS_APOS:
result = (abs(x)>y);
break;
// case CS_ANEG:
default:
result = (abs(x)<y);
break;
}
}
else {
if (s == CS_VCOMP) {
y = getValue(cs->v2-1);
switch (cs->func) {
@@ -707,6 +673,56 @@ bool __getSwitch(int8_t swtch)
break;
}
}
else {
#if defined(FRSKY)
// Telemetry
if (cs->v1 > CSW_CHOUT_BASE+NUM_CHNOUT) {
if (frskyStreaming <= 0 && cs->v1 > CSW_CHOUT_BASE+NUM_CHNOUT+MAX_TIMERS)
return swtch > 0 ? false : true;
if (s == CS_VOFS) {
y = convertTelemValue(cs->v1-(CSW_CHOUT_BASE+NUM_CHNOUT), 128+cs->v2);
uint8_t idx = cs->v1-CSW_CHOUT_BASE-NUM_CHNOUT-TELEM_ALT;
if (idx < THLD_MAX) {
// Fill the threshold array
barsThresholds[idx] = 128 + cs->v2;
}
}
else {
y = cs->v2;
}
}
else
#endif
{
y = calc100toRESX(cs->v2);
}
switch (cs->func) {
case CS_VPOS:
result = (x>y);
break;
case CS_VNEG:
result = (x<y);
break;
case CS_APOS:
result = (abs(x)>y);
break;
case CS_ANEG:
result = (abs(x)<y);
break;
default:
{
int16_t diff = x - csLastValue[cs_idx];
if (cs->func == CS_DIFFEGREATER)
result = (y >= 0 ? (diff >= y) : (diff <= y));
else
result = (abs(diff) >= y);
if (result)
csLastValue[cs_idx] = x;
break;
}
}
}
}
#if defined(PCBARM)
@@ -1886,11 +1902,7 @@ void evalFunctions()
if (tmr10ms - s_last_play >= 100) {
s_last_play = tmr10ms;
if (sd->func == FUNC_PLAY_TRACK)
#if defined(TTS_CZ) && defined(PCBSTD)
putVoiceQueueUpper(PROMPT_CUSTOM_BASE+sd->param);
#else
pushPrompt(PROMPT_CUSTOM_BASE+sd->param);
#endif
pushCustomPrompt(sd->param);
else
playValue(sd->param);
}
+21 -16
View File
@@ -365,26 +365,31 @@ extern Key keys[NUM_KEYS];
#define SWASH_TYPE_90 4
#define SWASH_TYPE_NUM 4
#define CS_OFF 0
#define CS_VPOS 1 //v>offset
#define CS_VNEG 2 //v<offset
#define CS_APOS 3 //|v|>offset
#define CS_ANEG 4 //|v|<offset
#define CS_AND 5
#define CS_OR 6
#define CS_XOR 7
#define CS_EQUAL 8
#define CS_NEQUAL 9
#define CS_GREATER 10
#define CS_LESS 11
#define CS_EGREATER 12
#define CS_ELESS 13
#define CS_MAXF 13 //max function
enum CswFunctions {
CS_OFF,
CS_VPOS, // v>offset
CS_VNEG, // v<offset
CS_APOS, // |v|>offset
CS_ANEG, // |v|<offset
CS_AND,
CS_OR,
CS_XOR,
CS_EQUAL,
CS_NEQUAL,
CS_GREATER,
CS_LESS,
CS_EGREATER,
CS_ELESS,
CS_DIFFEGREATER,
CS_ADIFFEGREATER,
CS_MAXF = CS_ADIFFEGREATER
};
#define CS_VOFS 0
#define CS_VBOOL 1
#define CS_VCOMP 2
#define CS_STATE(x) ((x)<CS_AND ? CS_VOFS : ((x)<CS_EQUAL ? CS_VBOOL : CS_VCOMP))
#define CS_VDIFF 3
#define CS_STATE(x) ((x)<CS_AND ? CS_VOFS : ((x)<CS_EQUAL ? CS_VBOOL : ((x)<CS_DIFFEGREATER ? CS_VCOMP : CS_VDIFF)))
#define SW_BASE SW_ThrCt
#define SW_BASE_DIAG SW_ThrCt
+17 -4
View File
@@ -34,8 +34,8 @@
#include "../open9x.h"
struct t_voice Voice ;
static uint8_t v_ctr ;
uint8_t v_first[8] ;
/* TODO why? static uint8_t v_ctr ;
uint8_t v_first[8] ; */
void putVoiceQueueUpper( uint8_t value )
{
@@ -48,7 +48,19 @@ void putVoiceQueueUpper( uint8_t value )
}
}
void pushPrompt( uint8_t value )
void pushCustomPrompt(uint8_t value)
{
struct t_voice *vptr ;
vptr = voiceaddress() ;
if (vptr->VoiceQueueCount < VOICE_Q_LENGTH-1)
{
pushPrompt( 0xFF ) ;
pushPrompt( value ) ;
}
}
void pushPrompt(uint8_t value)
{
#ifdef SIMU
printf("playFile(\"%04d.ad4\")\n", value); fflush(stdout);
@@ -62,10 +74,11 @@ void pushPrompt( uint8_t value )
vptr->VoiceQueueInIndex &= (VOICE_Q_LENGTH - 1);
vptr->VoiceQueueCount += 1;
}
/* TODO why?
if (v_ctr < 8) {
v_first[v_ctr] = value;
v_ctr += 1;
}
} */
}
struct t_voice *voiceaddress()
+4 -10
View File
@@ -48,13 +48,8 @@
#define V_WAIT_BUSY_OFF 4
#define V_WAIT_BUSY_DELAY 5
#if defined(TTS_CZ) && defined(PCBSTD)
#define PROMPT_SYSTEM_BASE 0
#define PROMPT_CUSTOM_BASE 40
#else
#define PROMPT_SYSTEM_BASE 170
#define PROMPT_CUSTOM_BASE 200
#endif
#define PROMPT_SYSTEM_BASE 230
#define PROMPT_CUSTOM_BASE 256
struct t_voice
{
@@ -72,9 +67,8 @@ struct t_voice
void voice_process( void ) ;
};
#if defined(TTS_CZ)
extern void putVoiceQueueUpper( uint8_t value );
#endif
extern void pushCustomPrompt( uint8_t value );
extern void pushPrompt( uint8_t value );
extern struct t_voice *voiceaddress( void ) ;
extern struct t_voice Voice ;
+2 -2
View File
@@ -92,8 +92,8 @@
#define LEN_VMIXTRIMS "\004"
#define TR_VMIXTRIMS "VYP\0""ZAP\0""Sm\203r""V\212\207k""Plyn""K\206id"
#define LEN_VCSWFUNC "\007"
#define TR_VCSWFUNC "----\0 ""v>ofs ""v<ofs ""|v|>ofs""|v|<ofs""AND ""OR ""XOR ""v1==v2 ""v1!=v2 ""v1>v2 ""v1<v2 ""v1>=v2 ""v1<=v2 "
#define LEN_VCSWFUNC "\010"
#define TR_VCSWFUNC "---\0 ""v>ofs\0 ""v<ofs\0 ""|v|>ofs\0""|v|<ofs\0""AND\0 ""OR\0 ""XOR\0 ""v1==v2\0 ""v1!=v2\0 ""v1>v2\0 ""v1<v2\0 ""v1>=v2\0 ""v1<=v2\0 ""d>=ofs\0 ""|d|>=ofs"
#define LEN_VFSWFUNC "\015"
#if defined(VARIO)
+2 -2
View File
@@ -92,8 +92,8 @@
#define LEN_VMIXTRIMS "\003"
#define TR_VMIXTRIMS "AUS""AN ""Rud""Ele""Thr""Ail"
#define LEN_VCSWFUNC "\007"
#define TR_VCSWFUNC "----\0 ""v>ofs ""v<ofs ""|v|>ofs""|v|<ofs""AND ""OR ""XOR ""v1==v2 ""v1!=v2 ""v1>v2 ""v1<v2 ""v1>=v2 ""v1<=v2 "
#define LEN_VCSWFUNC "\010"
#define TR_VCSWFUNC "---\0 ""v>ofs\0 ""v<ofs\0 ""|v|>ofs\0""|v|<ofs\0""AND\0 ""OR\0 ""XOR\0 ""v1==v2\0 ""v1!=v2\0 ""v1>v2\0 ""v1<v2\0 ""v1>=v2\0 ""v1<=v2\0 ""d>=ofs\0 ""|d|>=ofs"
#define LEN_VFSWFUNC "\015"
#if defined(VARIO)
+2 -2
View File
@@ -92,8 +92,8 @@
#define LEN_VMIXTRIMS "\003"
#define TR_VMIXTRIMS "OFF""ON ""Rud""Ele""Thr""Ail"
#define LEN_VCSWFUNC "\007"
#define TR_VCSWFUNC "---\0 ""v>ofs\0 ""v<ofs\0 ""|v|>ofs""|v|<ofs""AND ""OR ""XOR ""v1==v2 ""v1!=v2 ""v1>v2 ""v1<v2 ""v1>=v2 ""v1<=v2 "
#define LEN_VCSWFUNC "\010"
#define TR_VCSWFUNC "---\0 ""v>ofs\0 ""v<ofs\0 ""|v|>ofs\0""|v|<ofs\0""AND\0 ""OR\0 ""XOR\0 ""v1==v2\0 ""v1!=v2\0 ""v1>v2\0 ""v1<v2\0 ""v1>=v2\0 ""v1<=v2\0 ""d>=ofs\0 ""|d|>=ofs"
#define LEN_VFSWFUNC "\015"
#if defined(VARIO)
+2 -2
View File
@@ -87,8 +87,8 @@
#define LEN_VMIXTRIMS "\003"
#define TR_VMIXTRIMS "OFF""ON ""Dir""Prf""Gaz""Ail"
#define LEN_VCSWFUNC "\007"
#define TR_VCSWFUNC "----\0 ""v>ofs ""v<ofs ""|v|>ofs""|v|<ofs""ET ""OU ""OU Excl""v1==v2 ""v1!=v2 ""v1>v2 ""v1<v2 ""v1>=v2 ""v1<=v2 "
#define LEN_VCSWFUNC "\010"
#define TR_VCSWFUNC "---\0 ""v>ofs\0 ""v<ofs\0 ""|v|>ofs\0""|v|<ofs\0""AND\0 ""OR\0 ""XOR\0 ""v1==v2\0 ""v1!=v2\0 ""v1>v2\0 ""v1<v2\0 ""v1>=v2\0 ""v1<=v2\0 ""d>=ofs\0 ""|d|>=ofs"
#define LEN_VFSWFUNC "\015"
#if defined(VARIO)
+2 -2
View File
@@ -92,8 +92,8 @@
#define LEN_VMIXTRIMS "\003"
#define TR_VMIXTRIMS "OFF""ON ""Rud""Ele""Thr""Ail"
#define LEN_VCSWFUNC "\007"
#define TR_VCSWFUNC "----\0 ""v>ofs ""v<ofs ""|v|>ofs""|v|<ofs""AND ""OR ""XOR ""v1==v2 ""v1!=v2 ""v1>v2 ""v1<v2 ""v1>=v2 ""v1<=v2 "
#define LEN_VCSWFUNC "\010"
#define TR_VCSWFUNC "---\0 ""v>ofs\0 ""v<ofs\0 ""|v|>ofs\0""|v|<ofs\0""AND\0 ""OR\0 ""XOR\0 ""v1==v2\0 ""v1!=v2\0 ""v1>v2\0 ""v1<v2\0 ""v1>=v2\0 ""v1<=v2\0 ""d>=ofs\0 ""|d|>=ofs"
#define LEN_VFSWFUNC "\015"
#if defined(VARIO)
+2 -2
View File
@@ -87,8 +87,8 @@
#define LEN_VMIXTRIMS "\003"
#define TR_VMIXTRIMS "AV ""P\203 ""Rod""Hjd""Gas""Ske"
#define LEN_VCSWFUNC "\007"
#define TR_VCSWFUNC " ---\0 "" X>Y "" X<Y "" (X)>Y "" (X)<Y "" AND "" OR "" XOR "" X=Y "" X!=Y "" X>Y "" X<Y "" X>=Y "" X<=Y "
#define LEN_VCSWFUNC "\010"
#define TR_VCSWFUNC " ---\0 "" X>Y "" X<Y "" (X)>Y "" (X)<Y "" AND "" OR "" XOR "" X=Y "" X!=Y "" X>Y "" X<Y "" X>=Y "" X<=Y ""D>=ofs\0 ""|D|>=ofs"
#define LEN_VFSWFUNC "\015"
#if defined(VARIO)
+26 -19
View File
@@ -37,23 +37,24 @@ enum FrenchPrompts {
PROMPT_NUMBERS_BASE = 0,
PROMPT_ZERO = PROMPT_NUMBERS_BASE+0,
PROMPT_CENT = PROMPT_NUMBERS_BASE+100,
PROMPT_MILLE = PROMPT_NUMBERS_BASE+101,
PROMPT_DEUX_CENT = PROMPT_CENT+1,
PROMPT_MILLE = PROMPT_CENT+9,
PROMPT_UNE = 102,
PROMPT_ONZE = 103,
PROMPT_VINGT_ET_UNE = 104,
PROMPT_TRENTE_ET_UNE = 105,
PROMPT_QUARANTE_ET_UNE = 106,
PROMPT_CINQUANTE_ET_UNE = 107,
PROMPT_SOIXANTE_ET_UNE = 108,
PROMPT_SOIXANTE_ET_ONZE = 109,
PROMPT_QUATRE_VINGT_UNE = 110,
PROMPT_UNE = 110,
PROMPT_ONZE,
PROMPT_VINGT_ET_UNE,
PROMPT_TRENTE_ET_UNE,
PROMPT_QUARANTE_ET_UNE,
PROMPT_CINQUANTE_ET_UNE,
PROMPT_SOIXANTE_ET_UNE,
PROMPT_SOIXANTE_ET_ONZE,
PROMPT_QUATRE_VINGT_UNE,
PROMPT_VIRGULE = 116,
PROMPT_ET = 117,
PROMPT_MOINS = 118,
PROMPT_VIRGULE = 119,
PROMPT_ET = 120,
PROMPT_MOINS = 121,
PROMPT_UNITS_BASE = 120,
PROMPT_UNITS_BASE = 125,
PROMPT_VOLTS = PROMPT_UNITS_BASE+UNIT_VOLTS,
PROMPT_AMPS = PROMPT_UNITS_BASE+UNIT_AMPS,
PROMPT_METERS_PER_SECOND = PROMPT_UNITS_BASE+UNIT_METERS_PER_SECOND,
@@ -71,7 +72,7 @@ enum FrenchPrompts {
PROMPT_MINUTE = PROMPT_UNITS_BASE+UNIT_MINUTES,
PROMPT_SECONDE = PROMPT_UNITS_BASE+UNIT_SECONDS,
PROMPT_LABELS_BASE = 140,
PROMPT_LABELS_BASE = 145,
PROMPT_TIMER1 = PROMPT_LABELS_BASE+TELEM_TM1,
PROMPT_TIMER2 = PROMPT_LABELS_BASE+TELEM_TM2,
PROMPT_A1 = PROMPT_LABELS_BASE+TELEM_A1,
@@ -97,7 +98,6 @@ enum FrenchPrompts {
PROMPT_ACCELz = PROMPT_LABELS_BASE+TELEM_ACCz,
PROMPT_HDG = PROMPT_LABELS_BASE+TELEM_HDG,
PROMPT_VARIO = PROMPT_LABELS_BASE+TELEM_VSPD,
};
#if defined(VOICE)
@@ -119,9 +119,16 @@ void playNumber(int16_t number, uint8_t unit, uint8_t att)
int8_t mode = MODE(att);
if (mode > 0) {
div_t qr = div(number, (mode == 1 ? 10 : 100));
playNumber(qr.quot);
pushPrompt(PROMPT_VIRGULE);
playNumber(qr.rem, unit);
if (qr.rem > 0) {
playNumber(qr.quot);
pushPrompt(PROMPT_VIRGULE);
if (mode==2 && qr.rem < 10)
pushPrompt(PROMPT_ZERO);
playNumber(qr.rem, unit);
}
else {
playNumber(qr.quot, unit);
}
return;
}