stk: Tweak the concept of continuous tones

The spec explicitly mentions continuous or repeatable tones.  02.40 only
mentions the RP-ACK tone as a single tone, all other tones seem to be
repeatable
This commit is contained in:
Denis Kenzior 2012-10-31 08:46:43 -05:00
parent 329158cdc2
commit 9d223e7e39
1 changed files with 12 additions and 4 deletions

View File

@ -2488,7 +2488,7 @@ static gboolean handle_command_play_tone(const struct stk_command *cmd,
static const struct { static const struct {
const char *name; const char *name;
/* Continuous true/false according to 02.40 */ /* Continuous true/false according to 02.40 */
gboolean continuous; gboolean repeatable;
} tone_infos[] = { } tone_infos[] = {
/* Default */ /* Default */
[0x00] = { "general-beep", FALSE }, [0x00] = { "general-beep", FALSE },
@ -2498,9 +2498,9 @@ static gboolean handle_command_play_tone(const struct stk_command *cmd,
[0x02] = { "busy", TRUE }, [0x02] = { "busy", TRUE },
[0x03] = { "congestion", TRUE }, [0x03] = { "congestion", TRUE },
[0x04] = { "radio-path-acknowledge", FALSE }, [0x04] = { "radio-path-acknowledge", FALSE },
[0x05] = { "radio-path-not-available", FALSE }, [0x05] = { "radio-path-not-available", TRUE },
[0x06] = { "error", TRUE }, [0x06] = { "error", TRUE },
[0x07] = { "call-waiting", FALSE }, [0x07] = { "call-waiting", TRUE },
[0x08] = { "ringing-tone", TRUE }, [0x08] = { "ringing-tone", TRUE },
/* Proprietary */ /* Proprietary */
@ -2557,7 +2557,15 @@ static gboolean handle_command_play_tone(const struct stk_command *cmd,
else else
timeout = manufacturer_timeout; timeout = manufacturer_timeout;
if (!tone_infos[pt->tone].continuous) /*
* According to TS 102.223 section 6.6.6:
* "the length of time for which the Terminal shall generate the tone,
* if the tone is contunious or repeatable. For single tones, the
* value of this data object shall be ignored by the Terminal. If no
* duration is specified, the Terminal shall default to a duration
* determined by the Terminal manufacturer
*/
if (!tone_infos[pt->tone].repeatable)
/* Duration ignored */ /* Duration ignored */
err = stk_agent_play_tone(stk->current_agent, text, err = stk_agent_play_tone(stk->current_agent, text,
&pt->icon_id, vibrate, &pt->icon_id, vibrate,