📄 headset_tones.c
字号:
/****************************************************************************
Copyright (C) Cambridge Silicon Radio Ltd. 2004-2006
Part of BlueLab 3.4.2-release
FILE NAME
headset_tones.c
DESCRIPTION
Tone manager for the headset.
*/
/****************************************************************************
Header files
*/
#include "headset_private.h"
#include "av_stream_control.h"
#include "cvc_headset.h"
#include "headset_common.h"
#include "headset_power.h"
#include "headset_tones.h"
#include "headset_volume.h"
#include "hfp_audio.h"
#include <codec.h>
#include <kalimba.h>
#include <panic.h>
#include <pcm.h>
#include <stdlib.h>
#ifdef DEBUG_TONES
#define TONES_DEBUG(x) DEBUG(x)
#else
#define TONES_DEBUG(x)
#endif
/********************************************************************************
The application tones
*********************************************************************************/
/*************************** Immediate tones *********************************/
/* Power On */
static const audio_note tone_power_on[] =
{
AUDIO_TEMPO(120), AUDIO_VOLUME(64), AUDIO_TIMBRE(sine),
AUDIO_NOTE(REST, DEMISEMIQUAVER),
AUDIO_NOTE(GS7 , CROTCHET),
AUDIO_END
};
/* Power Off - currently the same tone as power on */
static const audio_note tone_power_off[] =
{
AUDIO_TEMPO(120), AUDIO_VOLUME(64), AUDIO_TIMBRE(sine),
AUDIO_NOTE(REST, DEMISEMIQUAVER),
AUDIO_NOTE(GS7 , CROTCHET),
AUDIO_END
};
/* Error */
static const audio_note tone_error[] =
{
AUDIO_TEMPO(120), AUDIO_VOLUME(64), AUDIO_TIMBRE(sine),
AUDIO_NOTE(REST, DEMISEMIQUAVER),
AUDIO_NOTE(G5 , CROTCHET),
AUDIO_END
};
/* Button press */
static const audio_note tone_button_press[] =
{
AUDIO_TEMPO(2400), AUDIO_VOLUME(64), AUDIO_TIMBRE(sine),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(G6 , SEMIBREVE),
AUDIO_END
};
/* Battery Low */
static const audio_note tone_battery_low[] =
{
AUDIO_TEMPO(120), AUDIO_VOLUME(64), AUDIO_TIMBRE(sine),
AUDIO_NOTE(REST, DEMISEMIQUAVER),
AUDIO_NOTE(G6 , CROTCHET),
AUDIO_END
};
/* Vol limit (2 tone falling scale) */
static const audio_note tone_vol_limit[] =
{
AUDIO_TEMPO(100), AUDIO_VOLUME(64), AUDIO_TIMBRE(sine),
AUDIO_NOTE(REST, DEMISEMIQUAVER),
AUDIO_NOTE(A6, QUAVER),
AUDIO_NOTE(REST,DEMISEMIQUAVER),
AUDIO_NOTE(E6, QUAVER),
AUDIO_END
};
/* Connection */
static const audio_note tone_connect[] =
{
AUDIO_TEMPO(2400), AUDIO_VOLUME(64), AUDIO_TIMBRE(sine),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(GS7 , SEMIBREVE),
AUDIO_END
};
/* Enter pairing */
static const audio_note tone_pairing[] =
{
AUDIO_TEMPO(800), AUDIO_VOLUME(64), AUDIO_TIMBRE(sine),
AUDIO_NOTE(REST, QUAVER_TRIPLET),
AUDIO_NOTE(G5 , MINIM_TRIPLET),
AUDIO_NOTE(REST, QUAVER),
AUDIO_NOTE(G5 , MINIM_TRIPLET),
AUDIO_END
};
/* Major Scale ring tone (default) */
static const audio_note tone_ring_default[] =
{
AUDIO_TEMPO(300), AUDIO_VOLUME(64), AUDIO_TIMBRE(sine),
AUDIO_NOTE(E6,QUAVER),
AUDIO_NOTE(FS6,QUAVER),
AUDIO_NOTE(GS6,QUAVER),
AUDIO_NOTE(A6,QUAVER),
AUDIO_NOTE(B6,QUAVER),
AUDIO_NOTE(CS7,QUAVER),
AUDIO_NOTE(DS7,QUAVER),
AUDIO_NOTE(E7,QUAVER),
AUDIO_END
};
/* Twilight ring tone */
static const audio_note tone_ring_twilight[] =
{
AUDIO_TEMPO(180), AUDIO_VOLUME(64), AUDIO_TIMBRE(sine),
AUDIO_NOTE(E7, QUAVER),
AUDIO_NOTE(F7, QUAVER),
AUDIO_NOTE(E7, QUAVER),
AUDIO_NOTE(C7, QUAVER),
AUDIO_NOTE(E7, QUAVER),
AUDIO_NOTE(F7, QUAVER),
AUDIO_NOTE(E7, QUAVER),
AUDIO_NOTE(C7, QUAVER),
AUDIO_END
};
/* Mute reminder tone */
static const audio_note tone_mute_reminder[] =
{
AUDIO_TEMPO(600), AUDIO_VOLUME(64), AUDIO_TIMBRE(sine),
AUDIO_NOTE(REST, SEMIQUAVER),
AUDIO_TEMPO(120), AUDIO_VOLUME(64), AUDIO_TIMBRE(sine),
AUDIO_NOTE(G5, CROTCHET),
AUDIO_NOTE(REST, CROTCHET),
AUDIO_NOTE(G5, CROTCHET),
AUDIO_END
};
static const audio_note tone_call_end[] =
{
AUDIO_TEMPO(120), AUDIO_VOLUME(64), AUDIO_TIMBRE(sine),
AUDIO_NOTE(REST, SEMIQUAVER),
AUDIO_NOTE(FS7 , CROTCHET),
AUDIO_END
};
/*************************** Delayed tones *********************************/
/* Power On */
static const audio_note tone_power_on_delayed[] =
{
AUDIO_TEMPO(120), AUDIO_VOLUME(100), AUDIO_TIMBRE(sine),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, HEMIDEMISEMIQUAVER),
AUDIO_NOTE(GS7 , CROTCHET),
AUDIO_END
};
/* Power Off - currently the same tone as power on */
static const audio_note tone_power_off_delayed[] =
{
AUDIO_TEMPO(120), AUDIO_VOLUME(100), AUDIO_TIMBRE(sine),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, HEMIDEMISEMIQUAVER),
AUDIO_NOTE(GS7 , CROTCHET),
AUDIO_END
};
/* Error */
static const audio_note tone_error_delayed[] =
{
AUDIO_TEMPO(120), AUDIO_VOLUME(100), AUDIO_TIMBRE(sine),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, HEMIDEMISEMIQUAVER),
AUDIO_NOTE(G5 , CROTCHET),
AUDIO_END
};
/* Button press */
static const audio_note tone_button_press_delayed[] =
{
AUDIO_TEMPO(2400), AUDIO_VOLUME(100), AUDIO_TIMBRE(sine),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(G6 , SEMIBREVE),
AUDIO_END
};
/* Battery Low */
static const audio_note tone_battery_low_delayed[] =
{
AUDIO_TEMPO(120), AUDIO_VOLUME(100), AUDIO_TIMBRE(sine),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIQUAVER),
AUDIO_NOTE(G6 , CROTCHET),
AUDIO_END
};
/* Vol limit (2 tone falling scale) */
static const audio_note tone_vol_limit_delayed[] =
{
AUDIO_TEMPO(100), AUDIO_VOLUME(100), AUDIO_TIMBRE(sine),
AUDIO_NOTE(REST, MINIM),
AUDIO_NOTE(REST, CROTCHET),
AUDIO_NOTE(REST, CROTCHET),
AUDIO_NOTE(A6, QUAVER),
AUDIO_NOTE(REST,DEMISEMIQUAVER),
AUDIO_NOTE(E6, QUAVER),
AUDIO_END
};
/* Connection */
static const audio_note tone_connect_delayed[] =
{
AUDIO_TEMPO(2400), AUDIO_VOLUME(100), AUDIO_TIMBRE(sine),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(GS7 , SEMIBREVE),
AUDIO_END
};
/* Enter pairing delayed*/
static const audio_note tone_pairing_delayed[] =
{
AUDIO_TEMPO(800), AUDIO_VOLUME(64), AUDIO_TIMBRE(sine),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, SEMIBREVE),
AUDIO_NOTE(REST, QUAVER_TRIPLET),
AUDIO_NOTE(G5 , MINIM_TRIPLET),
AUDIO_NOTE(REST, QUAVER),
AUDIO_NOTE(G5 , MINIM_TRIPLET),
AUDIO_END
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -