📄 ac48drhi.c
字号:
/* 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 + -