#ifndef _SOUND_SOURCE_H_
#define _SOUND_SOURCE_H_

#include "stdint.h"

/******************************************************************************
��Դ�����б�

ע�⣺��Դ������ָ�������Ӧ�������λ���������Ա��е����һһ��Ӧ
******************************************************************************/
#define        SND_HI_COOLANT_TEMP_SPEED1           0x00  //��ѹ��������
#define        SND_HI_PRESSURE_SPEED1               0x01  //ˮ�±�������  
#define        SND_CAN_ERROR_SPEED1                 0x02  //can��������  
#define        SND_LOW_ADBLUE_SPEED1                0x03  //����Һλ�ͱ�������  
#define        SND_ADBLUE_ERROR1                    0x04  //����������������
#define        SND_SRC_RADAR_1Hz                    0x05  //�״ﱨ������  
#define        SND_SRC_RADAR_2Hz                    0x06  //�����״ﱨ����_2Hz  
#define        SND_SRC_RADAR_4Hz                    0x07  //�����״ﱨ����_4Hz  
#define        SND_SRC_RADAR_CONTINUOUS             0x08  //�����״ﱨ����_����  
#define        SND_RADAR_SENSOR_FAILURE             0x09  //�״����  
#define        SND_YOUTIPIAN_ERROR1                 0x0A  //��Ƭĥ��
#define        SND_LF_HOOVES_ERROR1                 0x0B  //��Ƭĥ��
#define        SND_RF_HOOVES_ERROR1                 0x0C  //��Ƭĥ��
#define        SND_LR_HOOVES_ERROR1                 0x0D  //��Ƭĥ��
#define        SND_RR_HOOVES_ERROR1                 0x0E  //��Ƭĥ��  
#define        SND_LOW_OIL_SPEED1                   0x0F  //����ѹ����
#define        SND_LOW_FUEL_SPEED1                  0x10  //ȼ�͵�
#define        SND_SRC_TICK                         0x11  //ת�򱨾�
#define        SND_SRC_TOCK                         0x12  //ת�򱨾�
#define        SND_SEATBELT_SPEED1                  0x13  //��ȫ������
#define        SND_LOW_PBRAKE_SPEED1                0x14  //�ƶ�Һλ�ͱ���
#define        SND_PPARK_SPEED1                     0x15  //פ���ƶ�           
#define        SND_DOOR_OPENED1                     0x16  //�ſ�
#define        SND_PTO1                             0x17  //
#define        SND_noKeyInCar1                      0x18  //
#define        SND_POffWithoutN1                    0x19  //
#define        SND_LockWithKeyInCar1                0x1A  //
#define        SND_BreakPressure1                   0x1B  //
#define        SND_OVER_SPEED1                      0x1C  //
#define        SND_SRC_AEB                          0x1D  //ת�򱨾�
#define        SND_SRC_Break_down                   0x1E  //
/******************************************************************************
α��Դ�����б�
******************************************************************************/
#define   SND_SRC_NONE                      0xFF    //û������
#define   SND_SRC_CURRENT                   0xFE    //��ǰ���ŵ�����

/******************************************************************************
��Դѭ������
******************************************************************************/
#define   SND_CYCLE_NONSTOP                 0xFF    //��ͣ����

/******************************************************************************
��Դ����ģʽ
******************************************************************************/
#define   SND_MODE_SINGLE                   0x00    //ʹ��ISD_Play_Vp��������
#define   SND_MODE_LOOP                     0x01    //ʹ��ISD_Play_Vp_Loop��������

/******************************************************************************
�������Խṹ
******************************************************************************/
typedef struct
{
  uint8_t  Index;
  uint8_t   Priority;
  uint8_t   Cycle;
  uint8_t   Mode;
  uint16_t  Period;
} SndAttributeStruct;

/******************************************************************************
��Դ���Ա�
******************************************************************************/
static const SndAttributeStruct SndAttributeTable[] =
{
  /*================================================================================================
                ��Դ����            | ��Դ��� | ���ȼ� |     ѭ������     |    ����ģʽ    | ����(ms)
  ------------------------------------------------------------------------------------------------*/
  {/* SND_HI_COOLANT_TEMP_SPEED1  */   0x01,      0, SND_CYCLE_NONSTOP,  SND_MODE_SINGLE  ,    1000,},
  {/* SND_HI_PRESSURE_SPEED    2  */   0x01,      0, SND_CYCLE_NONSTOP,  SND_MODE_SINGLE  ,    1000,},
  {/* SND_CAN_ERROR_SPEED      3  */   0x01,      0,                 1,  SND_MODE_SINGLE  ,     500,},
  {/* SND_LOW_ADBLUE_SPEED     4  */   0x01,      0,                 1,  SND_MODE_SINGLE  ,     500,},
  {/* SND_ADBLUE_ERROR         5  */   0x01,      0,                 1,  SND_MODE_SINGLE  ,     500,},
  {/* SND_RADAR_1Hz            6  */   0x02,      0, SND_CYCLE_NONSTOP,  SND_MODE_SINGLE  ,    1000,},
  {/* SND_RADAR_2Hz            7  */   0x02,      0, SND_CYCLE_NONSTOP,  SND_MODE_SINGLE  ,     500,},
  {/* SND_RADAR_4Hz            8  */   0x02,      0, SND_CYCLE_NONSTOP,  SND_MODE_SINGLE  ,     250,},
  {/* SND_RADAR_CONTINUOUS     9  */   0x02,      0, SND_CYCLE_NONSTOP,  SND_MODE_LOOP    ,       0,},
  {/* SND_RADAR_SENSOR_FAILURE 10 */   0x01,      0,                 1,  SND_MODE_SINGLE  ,     500,},
  {/* SND_YOUTIPIAN_ERROR      11 */   0x01,      0,                 1,  SND_MODE_SINGLE  ,     500,},
  {/* SND_LF_HOOVES_ERROR      12 */   0x01,      0,                 1,  SND_MODE_SINGLE  ,     500,},
  {/* SND_RF_HOOVES_ERROR      13 */   0x01,      0,                 1,  SND_MODE_SINGLE  ,     500,},
  {/* SND_LR_HOOVES_ERROR      14 */   0x01,      0,                 1,  SND_MODE_SINGLE  ,     500,},
  {/* SND_RR_HOOVES_ERROR      15 */   0x01,      0,                 1,  SND_MODE_SINGLE  ,     500,},
  {/* SND_LOW_OIL_SPEED        16 */   0x01,      0,                 1,  SND_MODE_SINGLE  ,     500,},
  {/* SND_LOW_FUEL_SPEED       17 */   0x01,      0,                 1,  SND_MODE_SINGLE  ,    1000,},
  {/* SND_SRC_TICK                */   0x05,      0,                1,  SND_MODE_SINGLE  ,     100,},
  {/* SND_SRC_TOCK                */   0x06,      0,                1,  SND_MODE_SINGLE  ,     100,},
  {/* SND_SEATBELT_SPEED       20 */   0x01,      0,                60,  SND_MODE_SINGLE  ,    1000,},
  {/* SND_LOW_PBRAKE_SPEED     21 */   0x01,      0, SND_CYCLE_NONSTOP,  SND_MODE_SINGLE  ,    1000,},
  {/* SND_PPARK_SPEED          22 */   0x01,      0, SND_CYCLE_NONSTOP,  SND_MODE_SINGLE  ,    1000,},
  {/* SND_DOOR_OPENED          23 */   0x01,      0, SND_CYCLE_NONSTOP,  SND_MODE_SINGLE  ,    1000,},
  {/* SND_PTO                  24 */   0x01,      0, SND_CYCLE_NONSTOP,   SND_MODE_SINGLE  ,   1000,},
  {/* SND_noKeyInCar           25 */   0x01,      0, SND_CYCLE_NONSTOP,   SND_MODE_SINGLE  ,   1000,},
  {/* SND_POffWithoutN         26 */   0x01,      0, SND_CYCLE_NONSTOP,   SND_MODE_SINGLE  ,   1000,},
  {/* SND_LockWithKeyInCar     27 */   0x01,      0, SND_CYCLE_NONSTOP,   SND_MODE_SINGLE  ,   1000,},
  {/* SND_BreakPressure        28 */   0x01,      0,                90,   SND_MODE_SINGLE  ,   1000,},
  {/* SND_BreakPressure        29 */   0x01,      0,                3,    SND_MODE_SINGLE  ,   1000,},
  {/* SND_BreakPressure        30 */   0x01,      0,                30,    SND_MODE_SINGLE  ,  1000,},
  {/* SND_BreakPressure        31 */   0x01,      0, SND_CYCLE_NONSTOP,    SND_MODE_SINGLE  ,  1000,},
  /*==============================================================================================*/
};

#define   SND_TOTAL_NUM                     (sizeof(SndAttributeTable) / sizeof(SndAttributeStruct))

#endif