diff --git a/apps/talk.c b/apps/talk.c index 21c6f4bb1a..1da24153d2 100644 --- a/apps/talk.c +++ b/apps/talk.c @@ -717,19 +717,33 @@ int talk_value(long n, int unit, bool enqueue) int unit_id; static const int unit_voiced[] = { /* lookup table for the voice ID of the units */ - -1, -1, -1, /* regular ID, int, signed */ - VOICE_MILLISECONDS, /* here come the "real" units */ - VOICE_SECONDS, - VOICE_MINUTES, - VOICE_HOURS, - VOICE_KHZ, - VOICE_DB, - VOICE_PERCENT, - VOICE_MILLIAMPHOURS, - VOICE_PIXEL, - VOICE_PER_SEC, - VOICE_HERTZ, - VOICE_KBIT_PER_SEC, + [0 ... UNIT_LAST-1] = -1, /* regular ID, int, signed */ + [UNIT_MS] + = VOICE_MILLISECONDS, /* here come the "real" units */ + [UNIT_SEC] + = VOICE_SECONDS, + [UNIT_MIN] + = VOICE_MINUTES, + [UNIT_HOUR] + = VOICE_HOURS, + [UNIT_KHZ] + = VOICE_KHZ, + [UNIT_DB] + = VOICE_DB, + [UNIT_PERCENT] + = VOICE_PERCENT, + [UNIT_MAH] + = VOICE_MILLIAMPHOURS, + [UNIT_PIXEL] + = VOICE_PIXEL, + [UNIT_PER_SEC] + = VOICE_PER_SEC, + [UNIT_HERTZ] + = VOICE_HERTZ, + [UNIT_MB] + = LANG_MEGABYTE, + [UNIT_KBIT] + = VOICE_KBIT_PER_SEC, }; #if CONFIG_CODEC != SWCODEC diff --git a/apps/talk.h b/apps/talk.h index 2f2099a8c4..bfd08354aa 100644 --- a/apps/talk.h +++ b/apps/talk.h @@ -27,6 +27,7 @@ #include enum { + /* See array "unit_voiced" in talk.c function "talk_value" */ UNIT_INT = 1, /* plain number */ UNIT_SIGNED, /* number with mandatory sign (even if positive) */ UNIT_MS, /* milliseconds */ @@ -45,7 +46,7 @@ enum { UNIT_LAST /* END MARKER */ }; -#define UNIT_SHIFT (32-4) /* this many bits left from UNIT_xx enum */ +#define UNIT_SHIFT (32-5) /* this many bits left from UNIT_xx enum */ /* make a "talkable" ID from number + unit unit is upper 4 bits, number the remaining (in regular 2's complement) */