⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ac48drhi.c

📁 this for the ac founction in voip.
💻 C
📖 第 1 页 / 共 5 页
字号:
/* Purpose :    Place Device from init to run mode idle state, by       */
/*              sending PCM, DEBUG, MSIG, RUN and Tone-Pairs commands   */
/*              to the device, using the parameters included in         */
/*              'SetupDevice' structure.                                */
/*              If AC481XX_DEVICE enabled, then, Tone-Pairs command have*/
/*              not execute. Instead of this, IBS, User Defined Tones,  */
/*              and Call Progress commands will be executed.             */
/*              All the commands sent concatenately, in                 */
/*              DONT_WAIT_PACKET_EMPTY mode.                            */
/*                                                                      */
/* Inputs  :    int DeviceIndex 	                                    */
/*                  An integer, performing the device index.            */
/*              TSetupDevice *SetupDevice 	                            */
/*                  Parameter structure for setup.                      */
/*                                                                      */
/* Output  :    int:                                                    */
/*                  0  - (LAST_STAGE_COMPLETED) Setup Device Complete   */
/*                       successfully.                                  */
/*                  1  - (AC_ERROR)Setup Device failed                  */
/*                999 - (TIME_OUT_ERROR) Failed after AC48_TIME_OUT     */
/*                       iterations.                                    */
/*======================================================================*/
int Ac48xxSetupDeviceCompletely(int DeviceIndex, TSetupDevice SetupDevice)
{		
    int Stage = FIRST_STAGE;
    int TimeOut = AC48_TIME_OUT;

    while(TimeOut)
    {
        Stage = Ac48xxSetupDevice(Stage, DeviceIndex, SetupDevice);
        if(Stage == LAST_STAGE_COMPLETED) 
            return LAST_STAGE_COMPLETED;
        if(Stage == AC_ERROR)
            return AC_ERROR;
        TimeOut--;
        Ac48xxResponseDelay();
    }			
    /*return Stage;*/
    return TIME_OUT_ERROR;
}

#if AC48_SIGNALING_MODE == AC48_EXTENDED_SIGNALING_MODE
/*======================================================================*/
/* Name    :       Ac48xxSetDefaultCallProgress                         */
/*======================================================================*/
/* Purpose :    This function returns a Call Progress Structure,        */
/*              initialized with default parameters, in order to send   */
/*              CallProgress Command.                                   */
/*                                                                      */
/* Output  :    TCallProgress CallProgress 	                            */
/*                  Parameter structure that the AC48CallProgress       */
/*                  Command can use to update the AC48 device.          */
/*======================================================================*/
TCallProgress Ac48xxSetDefaultCallProgress(void)
{
    TCallProgress CallProgress;
    char *CharPtr;
    int i;

    CharPtr=(char*)&CallProgress;
    for(i=0; i<sizeof(TCallProgress); i++)
    	CharPtr[i]=0;

    CallProgress.Thresholds.TotalEnergyThreshold=44;        /* -44dbm */
    CallProgress.Thresholds.LowEnergyThreshold=35;          /* -35dbm */
    CallProgress.Thresholds.HighEnergyThreshold=0;          /* 0 dbm */
    CallProgress.Thresholds.Twist=10; /* 10db ,调大不起作用*/
    CallProgress.FreqAndSigQuantity.NumberOfFrequencies=2;//两种频率
    CallProgress.FreqAndSigQuantity.NumberOfSignals=14;//14种音
    CallProgress.ExtendedSignalingFrequency[0].FrequencyLsb = 0xC2;  /* 450Hz */
    CallProgress.ExtendedSignalingFrequency[0].FrequencyMsb = 0x1 ;
    CallProgress.ExtendedSignalingFrequency[1].FrequencyLsb = 0xC2;  /* 450Hz */
    CallProgress.ExtendedSignalingFrequency[1].FrequencyMsb = 0x1 ;
    CallProgress.ExtendedSignalingFrequency[2].FrequencyLsb = 0x00;  /*reserver */
    CallProgress.ExtendedSignalingFrequency[2].FrequencyMsb = 0x00 ;
    CallProgress.ExtendedSignalingFrequency[3].FrequencyLsb = 0x00;  /*reserver */
    CallProgress.ExtendedSignalingFrequency[3].FrequencyMsb = 0x00 ;
    CallProgress.ExtendedSignalingFrequency[4].FrequencyLsb = 0x00;  /*reserver */
    CallProgress.ExtendedSignalingFrequency[4].FrequencyMsb = 0x00 ;
    CallProgress.ExtendedSignalingFrequency[5].FrequencyLsb = 0x00;  /*reserver */
    CallProgress.ExtendedSignalingFrequency[5].FrequencyMsb = 0x00 ;
    CallProgress.ExtendedSignalingFrequency[6].FrequencyLsb = 0x00;  /*reserver */
    CallProgress.ExtendedSignalingFrequency[6].FrequencyMsb = 0x00;
    CallProgress.ExtendedSignalingFrequency[7].FrequencyLsb = 0x00;   /*reserver */
    CallProgress.ExtendedSignalingFrequency[7].FrequencyMsb = 0x00 ;
    CallProgress.ExtendedSignalingFrequency[8].FrequencyLsb = 0x00;  /* rersver */
    CallProgress.ExtendedSignalingFrequency[8].FrequencyMsb= 0x00 ;
    CallProgress.ExtendedSignalingFrequency[9].FrequencyLsb = 0x00;  /* rersver */
    CallProgress.ExtendedSignalingFrequency[9].FrequencyMsb = 0x00 ;
    CallProgress.ExtendedSignalingFrequency[10].FrequencyLsb = 0x00;  /* rersver */
    CallProgress.ExtendedSignalingFrequency[10].FrequencyMsb= 0x00 ;
    CallProgress.ExtendedSignalingFrequency[11].FrequencyLsb = 0x00;  /* rersver */
    CallProgress.ExtendedSignalingFrequency[11].FrequencyMsb= 0x00 ;
    CallProgress.ExtendedSignalingFrequency[12].FrequencyLsb = 0x00;  /* rersver */
    CallProgress.ExtendedSignalingFrequency[12].FrequencyMsb= 0x00 ;
    CallProgress.ExtendedSignalingFrequency[13].FrequencyLsb = 0x00;  /* rersver */
    CallProgress.ExtendedSignalingFrequency[13].FrequencyMsb = 0x00 ;
    CallProgress.ExtendedSignalingFrequency[14].FrequencyLsb = 0x00;  /* rersver */
    CallProgress.ExtendedSignalingFrequency[14].FrequencyMsb = 0x00 ;

    /*DB说明:0-3DB
         000000  MUTE  ---  010000  -16DB  ----- 010110  -10DB
         011111  -1DB  ---  100000  0DB    ----- 100011-111111 3DB*/
     
    /* Dial Tone (ANSI TI.401-1993) 拨号音,连续15s*/
    CallProgress.CallProgressSignalAttributes[0].LowFrequencyIndex  = 0;   /* 450Hz */
    CallProgress.CallProgressSignalAttributes[0].HighFrequencyIndex = 15;   
    CallProgress.CallProgressSignalAttributes[0].FirstTOnLsb   = 0xF4;       /* 5Sec */
    CallProgress.CallProgressSignalAttributes[0].FirstTOnMsb   = 0x1;
    CallProgress.CallProgressSignalAttributes[0].FirstTOffLsb  = 0xFF;     /* 0x3FF <=> None */
    CallProgress.CallProgressSignalAttributes[0].FirstTOffMsb  = 0x3 ;
    CallProgress.CallProgressSignalAttributes[0].SecondTOnLsb  = 0xFF;
    CallProgress.CallProgressSignalAttributes[0].SecondTOnMsb  = 0x3 ;
    CallProgress.CallProgressSignalAttributes[0].SecondTOffLsb = 0xFF;
    CallProgress.CallProgressSignalAttributes[0].SecondTOffMsb = 0x3 ;
    CallProgress.ExtendedSignalingSignalLevels[0].LowFrequencyLevel  = 0x16; /* -10dbm */
    CallProgress.ExtendedSignalingSignalLevels[0].HighFrequencyLevel = 0;       /* none */

    /* Special Dial Tone (ITU-T Q.35) 特种拨号音 周期440ms,400ms送,40ms停 */
    CallProgress.CallProgressSignalAttributes[1].LowFrequencyIndex  = 0;   /* 450Hz */
    CallProgress.CallProgressSignalAttributes[1].HighFrequencyIndex = 15;  /* NONE  */
    CallProgress.CallProgressSignalAttributes[1].FirstTOnLsb   = 0x28;        /* 400ms */
    CallProgress.CallProgressSignalAttributes[1].FirstTOnMsb   = 0x00;
    CallProgress.CallProgressSignalAttributes[1].FirstTOffLsb  = 0x4;          /* 40ms */
    CallProgress.CallProgressSignalAttributes[1].FirstTOffMsb  = 0x00 ;
    CallProgress.CallProgressSignalAttributes[1].SecondTOnLsb  = 0xFF;
    CallProgress.CallProgressSignalAttributes[1].SecondTOnMsb  = 0x3 ;
    CallProgress.CallProgressSignalAttributes[1].SecondTOffLsb = 0xFF;
    CallProgress.CallProgressSignalAttributes[1].SecondTOffMsb = 0x3 ;
    CallProgress.ExtendedSignalingSignalLevels[1].LowFrequencyLevel  = 0x16; /* -10dbm */
    CallProgress.ExtendedSignalingSignalLevels[1].HighFrequencyLevel = 0;  

    /* Busy Tone (ANSI TI.401-1993)  忙音,周期700ms,350ms送,350ms停*/
    CallProgress.CallProgressSignalAttributes[2].LowFrequencyIndex  = 0;   /* 450Hz */
    CallProgress.CallProgressSignalAttributes[2].HighFrequencyIndex = 15;   /* NONE */
    CallProgress.CallProgressSignalAttributes[2].FirstTOnLsb   = 0x23;     /* 350ms */
    CallProgress.CallProgressSignalAttributes[2].FirstTOnMsb   = 0x00;
    CallProgress.CallProgressSignalAttributes[2].FirstTOffLsb  = 0x23;     /* 350ms */
    CallProgress.CallProgressSignalAttributes[2].FirstTOffMsb  = 0x00 ;
    CallProgress.CallProgressSignalAttributes[2].SecondTOnLsb  = 0xFF;
    CallProgress.CallProgressSignalAttributes[2].SecondTOnMsb  = 0x3 ;
    CallProgress.CallProgressSignalAttributes[2].SecondTOffLsb = 0xFF;
    CallProgress.CallProgressSignalAttributes[2].SecondTOffMsb = 0x3 ;
    CallProgress.ExtendedSignalingSignalLevels[2].LowFrequencyLevel  = 0X16; /* -10dbm */
    CallProgress.ExtendedSignalingSignalLevels[2].HighFrequencyLevel = 0; 

    /* Ring Tone (ANSI TI.401-1993) 回铃音,周期5s,1s送,4s停*/
    CallProgress.CallProgressSignalAttributes[3].LowFrequencyIndex  = 0;   /* 450Hz */
    CallProgress.CallProgressSignalAttributes[3].HighFrequencyIndex = 15;  /* NONE  */
    CallProgress.CallProgressSignalAttributes[3].FirstTOnLsb  = 0x64;         /* 1Sec  */
    CallProgress.CallProgressSignalAttributes[3].FirstTOnMsb  = 0x00 ;
    CallProgress.CallProgressSignalAttributes[3].FirstTOffLsb  = 0x90;         /* 4Sec  */
    CallProgress.CallProgressSignalAttributes[3].FirstTOffMsb  = 0x1 ;
    CallProgress.CallProgressSignalAttributes[3].SecondTOnLsb  = 0xFF;
    CallProgress.CallProgressSignalAttributes[3].SecondTOnMsb  = 0x3 ;
    CallProgress.CallProgressSignalAttributes[3].SecondTOffLsb = 0xFF;
    CallProgress.CallProgressSignalAttributes[3].SecondTOffMsb = 0x3 ;
    CallProgress.ExtendedSignalingSignalLevels[3].LowFrequencyLevel  = 0X16;  /* -10dbm */
    CallProgress.ExtendedSignalingSignalLevels[3].HighFrequencyLevel = 0;  


    /* Nulnum Tone (ANSI TI.401-1993)空号音,周期1s,0.1s送,0.1s停,0.4s送,0.4s停 */
    CallProgress.CallProgressSignalAttributes[4].LowFrequencyIndex  = 0;   /* 450Hz */
    CallProgress.CallProgressSignalAttributes[4].HighFrequencyIndex = 15;  /* NONE */
    CallProgress.CallProgressSignalAttributes[4].FirstTOnLsb   = 0x0a;        /* 0.1 Sec */
    CallProgress.CallProgressSignalAttributes[4].FirstTOnMsb   = 0 ;
    CallProgress.CallProgressSignalAttributes[4].FirstTOffLsb  = 0x0a;         /* 0.1 Sec */
    CallProgress.CallProgressSignalAttributes[4].FirstTOffMsb  = 0 ;
    CallProgress.CallProgressSignalAttributes[4].SecondTOnLsb  = 0x28;     /* 0.4 Sec */
    CallProgress.CallProgressSignalAttributes[4].SecondTOnMsb  = 0x00 ;
    CallProgress.CallProgressSignalAttributes[4].SecondTOffLsb = 0x28;      /* 0.4 Sec */
    CallProgress.CallProgressSignalAttributes[4].SecondTOffMsb = 0x00 ;
    CallProgress.ExtendedSignalingSignalLevels[4].LowFrequencyLevel  = 0X16;  /* -10dbm */
    CallProgress.ExtendedSignalingSignalLevels[4].HighFrequencyLevel = 0;  
    
    /* Wait Tone :长途通知音,周期1.2s,0.2s送,0.2s停,0.2s送,0.6s停*/
    CallProgress.CallProgressSignalAttributes[5].LowFrequencyIndex  = 0;   /* 450Hz */
    CallProgress.CallProgressSignalAttributes[5].HighFrequencyIndex = 15;  /* NONE  */
    CallProgress.CallProgressSignalAttributes[5].FirstTOnLsb   = 0x2;         /* 0.2Sec */
    CallProgress.CallProgressSignalAttributes[5].FirstTOnMsb   = 0x00;
    CallProgress.CallProgressSignalAttributes[5].FirstTOffLsb  = 0x2;          /* 0.2Sec */
    CallProgress.CallProgressSignalAttributes[5].FirstTOffMsb  = 0x00 ;
    CallProgress.CallProgressSignalAttributes[5].SecondTOnLsb  = 0x2;      /* 0.2Sec*/
    CallProgress.CallProgressSignalAttributes[5].SecondTOnMsb  = 0x00 ;
    CallProgress.CallProgressSignalAttributes[5].SecondTOffLsb = 0x6;       /* 0.6Sec*/
    CallProgress.CallProgressSignalAttributes[5].SecondTOffMsb = 0x00 ;
    CallProgress.ExtendedSignalingSignalLevels[5].LowFrequencyLevel  = 0x16; /* -10dbm */
    CallProgress.ExtendedSignalingSignalLevels[5].HighFrequencyLevel = 0; 
    
    /* Block Tone :拥塞音,周期1.4s,0.7s送,0.7s停*/
    CallProgress.CallProgressSignalAttributes[6].LowFrequencyIndex  = 0;   /* 440Hz */
    CallProgress.CallProgressSignalAttributes[6].HighFrequencyIndex = 15;  /* NONE  */
    CallProgress.CallProgressSignalAttributes[6].FirstTOnLsb   = 0x46;        /* 0.7Sec */
    CallProgress.CallProgressSignalAttributes[6].FirstTOnMsb   = 0x00 ;
    CallProgress.CallProgressSignalAttributes[6].FirstTOffLsb  = 0x46;         /* 0.7Sec */
    CallProgress.CallProgressSignalAttributes[6].FirstTOffMsb  = 0x00 ;
    CallProgress.CallProgressSignalAttributes[6].SecondTOnLsb  = 0xFF;
    CallProgress.CallProgressSignalAttributes[6].SecondTOnMsb  = 0x3 ;
    CallProgress.CallProgressSignalAttributes[6].SecondTOffLsb = 0xFF;
    CallProgress.CallProgressSignalAttributes[6].SecondTOffMsb = 0x3 ;
    CallProgress.ExtendedSignalingSignalLevels[6].LowFrequencyLevel  = 0x16; /* -10dbm */
    CallProgress.ExtendedSignalingSignalLevels[6].HighFrequencyLevel = 0; 

    /* CALLIN_TONE :呼入等待音,周期4.4s,0.4s送,4s停 */
    CallProgress.CallProgressSignalAttributes[7].LowFrequencyIndex  = 0;   /* 450Hz */
    CallProgress.CallProgressSignalAttributes[7].HighFrequencyIndex = 15;   
    CallProgress.CallProgressSignalAttributes[7].FirstTOnLsb   = 0x28;         /* 0.4 Sec */
    CallProgress.CallProgressSignalAttributes[7].FirstTOnMsb   = 0x00;
    CallProgress.CallProgressSignalAttributes[7].FirstTOffLsb  = 0x90;         /* 4 Sec */
    CallProgress.CallProgressSignalAttributes[7].FirstTOffMsb  = 0x1;
    CallProgress.CallProgressSignalAttributes[7].SecondTOnLsb = 0xFF; 
    CallProgress.CallProgressSignalAttributes[7].SecondTOnMsb = 0x3; 
    CallProgress.CallProgressSignalAttributes[7].SecondTOffLsb = 0xFF; 
    CallProgress.CallProgressSignalAttributes[7].SecondTOffMsb = 0x3; 
    CallProgress.ExtendedSignalingSignalLevels[7].LowFrequencyLevel  = 0x16;  /* -10dbm */
    CallProgress.ExtendedSignalingSignalLevels[7].HighFrequencyLevel = 0; 
    
    /* AWOKE_TONE :提醒音,周期10.4s,0.4s送,10s停*/
    CallProgress.CallProgressSignalAttributes[8].LowFrequencyIndex  = 0;   /* 450Hz */
    CallProgress.CallProgressSignalAttributes[8].HighFrequencyIndex = 15;   
    CallProgress.CallProgressSignalAttributes[8].FirstTOnLsb   = 0x28;       /* 0.4s */
    CallProgress.CallProgressSignalAttributes[8].FirstTOnMsb  = 0x00;
    CallProgress.CallProgressSignalAttributes[8].FirstTOffLsb  = 0xc8;       /* 10s ,被改为2s,作为环路的提示音*/
    CallProgress.CallProgressSignalAttributes[8].FirstTOffMsb  = 0x00;
    CallProgress.CallProgressSignalAttributes[8].SecondTOnLsb  = 0xFF;
    CallProgress.CallProgressSignalAttributes[8].SecondTOnMsb  = 0x3 ;
    CallProgress.CallProgressSignalAttributes[8].SecondTOffLsb = 0xFF;
    CallProgress.CallProgressSignalAttributes[8].SecondTOffMsb = 0x3 ;
    CallProgress.ExtendedSignalingSignalLevels[8].LowFrequencyLevel  = 0x16; /*-10dbm */
    CallProgress.ExtendedSignalingSignalLevels[8].HighFrequencyLevel = 0; 

    /* Extern Busy Tone0:外部忙音0,周期1s,0.5s送,0.5s停*/
    CallProgress.CallProgressSignalAttributes[9].LowFrequencyIndex  = 1;   /* 频率1 */
    CallProgress.CallProgressSignalAttributes[9].HighFrequencyIndex = 15;   
    CallProgress.CallProgressSignalAttributes[9].FirstTOnLsb   = 0x32;          /* 0.5 Sec */
    CallProgress.CallProgressSignalAttributes[9].FirstTOnMsb   = 0x00;
    CallProgress.CallProgressSignalAttributes[9].FirstTOffLsb  = 0x32;           /* 0.5 Sec */
    CallProgress.CallProgressSignalAttributes[9].FirstTOffMsb  = 0x00;
    CallProgress.CallProgressSignalAttributes[9].SecondTOnLsb  = 0xFF; 
    CallProgress.CallProgressSignalAttributes[9].SecondTOnMsb  = 0x3; 
    CallProgress.CallProgressSignalAttributes[9].SecondTOffLsb = 0xFF; 
    CallProgress.CallProgressSignalAttributes[9].SecondTOffMsb = 0x3; 
    CallProgress.ExtendedSignalingSignalLevels[9].LowFrequencyLevel  = 0x16;  /* -10dbm */
    CallProgress.ExtendedSignalingSignalLevels[9].HighFrequencyLevel = 0; 

    /*Extern Busy Tone1:外部忙音

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -