headset_tones.c

来自「针对bluelab3.42的handsfree车载蓝牙的参考」· C语言 代码 · 共 704 行 · 第 1/2 页

C
704
字号
/****************************************************************************
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 + =
减小字号Ctrl + -
显示快捷键?