📄 ac48drhi.c
字号:
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.MaxFrequenceDeviationLsb=0X8F; /* 2% */
CallProgress.Thresholds.MaxFrequenceDeviationMsb=0x2;
CallProgress.Thresholds.Twist=10; /* 10db */
CallProgress.FreqAndSigQuantity.NumberOfFrequencies=6;
CallProgress.FreqAndSigQuantity.NumberOfSignals=9;
CallProgress.ExtendedSignalingFrequency[0].FrequencyLsb = 0x5E; /* 350Hz */
CallProgress.ExtendedSignalingFrequency[0].FrequencyMsb = 0x1 ;
CallProgress.ExtendedSignalingFrequency[1].FrequencyLsb = 0x90; /* 400Hz */
CallProgress.ExtendedSignalingFrequency[1].FrequencyMsb = 0x1 ;
CallProgress.ExtendedSignalingFrequency[2].FrequencyLsb = 0xA9; /* 425Hz */
CallProgress.ExtendedSignalingFrequency[2].FrequencyMsb = 0x1 ;
CallProgress.ExtendedSignalingFrequency[3].FrequencyLsb = 0xB8; /* 440Hz */
CallProgress.ExtendedSignalingFrequency[3].FrequencyMsb = 0x1 ;
CallProgress.ExtendedSignalingFrequency[4].FrequencyLsb = 0xE0; /* 480Hz */
CallProgress.ExtendedSignalingFrequency[4].FrequencyMsb = 0x1 ;
CallProgress.ExtendedSignalingFrequency[5].FrequencyLsb = 0x6C; /* 620Hz */
CallProgress.ExtendedSignalingFrequency[5].FrequencyMsb = 0x2 ;
/* Dial Tone (ANSI TI.401-1993) */
CallProgress.CallProgressSignalAttributes[0].LowFrequencyIndex = 0; /* 350Hz */
CallProgress.CallProgressSignalAttributes[0].HighFrequencyIndex = 3; /* 440Hz */
CallProgress.CallProgressSignalAttributes[0].FirstTOnLsb = 0xF4; /* 5 Sec */
CallProgress.CallProgressSignalAttributes[0].FirstTOnMsb = 1;
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 = 19; /* -13dbm */
CallProgress.ExtendedSignalingSignalLevels[0].HighFrequencyLevel = 19; /* -13dbm */
/* Dial Tone (ITU-T Q.35) */
CallProgress.CallProgressSignalAttributes[1].LowFrequencyIndex = 2; /* 425Hz */
CallProgress.CallProgressSignalAttributes[1].HighFrequencyIndex = 15; /* NONE */
CallProgress.CallProgressSignalAttributes[1].FirstTOnLsb = 0xF4; /* 5 Sec */
CallProgress.CallProgressSignalAttributes[1].FirstTOnMsb = 1;
CallProgress.CallProgressSignalAttributes[1].FirstTOffLsb = 0xFF; /* 0x3FF = None */
CallProgress.CallProgressSignalAttributes[1].FirstTOffMsb = 0x3 ;
CallProgress.CallProgressSignalAttributes[1].SecondTOnLsb = 0xFF;
CallProgress.CallProgressSignalAttributes[1].SecondTOnMsb = 0x3 ;
CallProgress.CallProgressSignalAttributes[1].SecondTOffLsb = 0xFF;
CallProgress.CallProgressSignalAttributes[1].SecondTOffMsb = 0x3 ;
CallProgress.ExtendedSignalingSignalLevels[1].LowFrequencyLevel = 22; /* -10dbm */
CallProgress.ExtendedSignalingSignalLevels[1].HighFrequencyLevel = 0;
/* Audible Ringing Tone (ANSI TI.401-1993) */
CallProgress.CallProgressSignalAttributes[2].LowFrequencyIndex = 3; /* 480Hz */
CallProgress.CallProgressSignalAttributes[2].HighFrequencyIndex = 4; /* 440Hz */
CallProgress.CallProgressSignalAttributes[2].FirstTOnLsb = 0xC8; /* 2 Sec */
CallProgress.CallProgressSignalAttributes[2].FirstTOnMsb = 0x0;
CallProgress.CallProgressSignalAttributes[2].FirstTOffLsb = 0x90; /* 4 Sec */
CallProgress.CallProgressSignalAttributes[2].FirstTOffMsb = 0x1 ;
CallProgress.CallProgressSignalAttributes[2].SecondTOnLsb = 0xFF;
CallProgress.CallProgressSignalAttributes[2].SecondTOnMsb = 0x3 ;
CallProgress.CallProgressSignalAttributes[2].SecondTOffLsb = 0xFF;
CallProgress.CallProgressSignalAttributes[2].SecondTOffMsb = 0x3 ;
CallProgress.ExtendedSignalingSignalLevels[2].LowFrequencyLevel = 13; /* -19dbm */
CallProgress.ExtendedSignalingSignalLevels[2].HighFrequencyLevel = 13; /* -19dbm */
/* Busy Tone (ANSI TI.401-1993) */
CallProgress.CallProgressSignalAttributes[3].LowFrequencyIndex = 4; /* 480Hz */
CallProgress.CallProgressSignalAttributes[3].HighFrequencyIndex = 5; /* 620Hz */
CallProgress.CallProgressSignalAttributes[3].FirstTOnLsb = 50; /* 0.5 Sec */
CallProgress.CallProgressSignalAttributes[3].FirstTOnMsb = 0 ;
CallProgress.CallProgressSignalAttributes[3].FirstTOffLsb = 50; /* 0.5 Sec */
CallProgress.CallProgressSignalAttributes[3].FirstTOffMsb = 0 ;
CallProgress.CallProgressSignalAttributes[3].SecondTOnLsb = 0xFF;
CallProgress.CallProgressSignalAttributes[3].SecondTOnMsb = 0x3 ;
CallProgress.CallProgressSignalAttributes[3].SecondTOffLsb = 0xFF;
CallProgress.CallProgressSignalAttributes[3].SecondTOffMsb = 0x3 ;
CallProgress.ExtendedSignalingSignalLevels[3].LowFrequencyLevel = 8; /* -24dbm */
CallProgress.ExtendedSignalingSignalLevels[3].HighFrequencyLevel = 8; /* -24dbm */
/* Reorder (ANSI TI.401-1993) */
CallProgress.CallProgressSignalAttributes[4].LowFrequencyIndex = 4; /* 620Hz */
CallProgress.CallProgressSignalAttributes[4].HighFrequencyIndex = 5; /* 480Hz */
CallProgress.CallProgressSignalAttributes[4].FirstTOnLsb = 25; /* 0.25 Sec */
CallProgress.CallProgressSignalAttributes[4].FirstTOnMsb = 0 ;
CallProgress.CallProgressSignalAttributes[4].FirstTOffLsb = 25; /* 0.25 Sec */
CallProgress.CallProgressSignalAttributes[4].FirstTOffMsb = 0 ;
CallProgress.CallProgressSignalAttributes[4].SecondTOnLsb = 0xFF;
CallProgress.CallProgressSignalAttributes[4].SecondTOnMsb = 0x3 ;
CallProgress.CallProgressSignalAttributes[4].SecondTOffLsb = 0xFF;
CallProgress.CallProgressSignalAttributes[4].SecondTOffMsb = 0x3 ;
CallProgress.ExtendedSignalingSignalLevels[4].LowFrequencyLevel = 8; /* -24dbm */
CallProgress.ExtendedSignalingSignalLevels[4].HighFrequencyLevel = 8; /* -24dbm */
/* Audible Ringer Tone */
CallProgress.CallProgressSignalAttributes[5].LowFrequencyIndex = 1; /* 400Hz */
CallProgress.CallProgressSignalAttributes[5].HighFrequencyIndex = 15; /* NONE */
CallProgress.CallProgressSignalAttributes[5].FirstTOnLsb = 0x64; /* 1 Sec */
CallProgress.CallProgressSignalAttributes[5].FirstTOnMsb = 0;
CallProgress.CallProgressSignalAttributes[5].FirstTOffLsb = 0x2C; /* 3 Sec */
CallProgress.CallProgressSignalAttributes[5].FirstTOffMsb = 0x1 ;
CallProgress.CallProgressSignalAttributes[5].SecondTOnLsb = 0xFF;
CallProgress.CallProgressSignalAttributes[5].SecondTOnMsb = 0x3 ;
CallProgress.CallProgressSignalAttributes[5].SecondTOffLsb = 0xFF;
CallProgress.CallProgressSignalAttributes[5].SecondTOffMsb = 0x3 ;
CallProgress.ExtendedSignalingSignalLevels[5].LowFrequencyLevel = 16; /* -16dbm */
CallProgress.ExtendedSignalingSignalLevels[5].HighFrequencyLevel = 0;
/* Dial Tone */
CallProgress.CallProgressSignalAttributes[6].LowFrequencyIndex = 3; /* 440Hz */
CallProgress.CallProgressSignalAttributes[6].HighFrequencyIndex = 15; /* NONE */
CallProgress.CallProgressSignalAttributes[6].FirstTOnLsb = 0xF4; /* 5 Sec */
CallProgress.CallProgressSignalAttributes[6].FirstTOnMsb = 0x1 ;
CallProgress.CallProgressSignalAttributes[6].FirstTOffLsb = 0xFF;
CallProgress.CallProgressSignalAttributes[6].FirstTOffMsb = 0x3 ;
CallProgress.CallProgressSignalAttributes[6].SecondTOnLsb = 0xFF;
CallProgress.CallProgressSignalAttributes[6].SecondTOnMsb = 0x3 ;
CallProgress.CallProgressSignalAttributes[6].SecondTOffLsb = 0xFF;
CallProgress.CallProgressSignalAttributes[6].SecondTOffMsb = 0x3 ;
CallProgress.ExtendedSignalingSignalLevels[6].LowFrequencyLevel = 22; /* -10dbm */
CallProgress.ExtendedSignalingSignalLevels[6].HighFrequencyLevel = 0;
/* Fast Busy Tone(T1.401-1993) */
CallProgress.CallProgressSignalAttributes[7].LowFrequencyIndex = 3; /* 440Hz */
CallProgress.CallProgressSignalAttributes[7].HighFrequencyIndex = 15;
CallProgress.CallProgressSignalAttributes[7].FirstTOnLsb = 24; /* 0.24 Sec */
CallProgress.CallProgressSignalAttributes[7].FirstTOnMsb = 0;
CallProgress.CallProgressSignalAttributes[7].FirstTOffLsb = 24; /* 0.24 Sec */
CallProgress.CallProgressSignalAttributes[7].FirstTOffMsb = 0;
CallProgress.CallProgressSignalAttributes[7].SecondTOnLsb = 0xFF;
CallProgress.CallProgressSignalAttributes[7].SecondTOnMsb = 0x3 ;
CallProgress.CallProgressSignalAttributes[7].SecondTOffLsb = 0xFF;
CallProgress.CallProgressSignalAttributes[7].SecondTOffMsb = 0x3 ;
CallProgress.ExtendedSignalingSignalLevels[7].LowFrequencyLevel = 8; /* -24dbm */
CallProgress.ExtendedSignalingSignalLevels[7].HighFrequencyLevel = 0;
/* Busy Tone */
CallProgress.CallProgressSignalAttributes[8].LowFrequencyIndex = 3; /* 440Hz */
CallProgress.CallProgressSignalAttributes[8].HighFrequencyIndex = 15;
CallProgress.CallProgressSignalAttributes[8].FirstTOnLsb = 50; /* 0.5 Sec */
CallProgress.CallProgressSignalAttributes[8].FirstTOnMsb = 0;
CallProgress.CallProgressSignalAttributes[8].FirstTOffLsb = 50; /* 0.5 Sec */
CallProgress.CallProgressSignalAttributes[8].FirstTOffMsb = 0;
CallProgress.CallProgressSignalAttributes[8].SecondTOnLsb = 0xFF;
CallProgress.CallProgressSignalAttributes[8].SecondTOnMsb = 0x3 ;
CallProgress.CallProgressSignalAttributes[8].SecondTOffLsb = 0xFF;
CallProgress.CallProgressSignalAttributes[8].SecondTOffMsb = 0x3 ;
CallProgress.ExtendedSignalingSignalLevels[8].LowFrequencyLevel = 8; /* -24dbm */
CallProgress.ExtendedSignalingSignalLevels[8].HighFrequencyLevel = 0;
return CallProgress;
}
#endif /* AC48_SIGNALING_MODE */
/*======================================================================*/
/* Name : Ac48xxSetDefaultSetupDeviceStructure */
/*======================================================================*/
/* Purpose : This function returns a Setup Device Structure, */
/* initialized with default parameters, in order to set up */
/* a device. */
/* */
/* Output : TSetupDevice *SetupDevice */
/* Parameter structure that the AC48SetupDevice */
/* function can use to update the AC48 device. */
/*======================================================================*/
TSetupDevice Ac48xxSetDefaultSetupDeviceStructure(void)
{
int i;
TSetupDevice SetupDevice;
char *CharPtr;
CharPtr=(char*)&SetupDevice;
for(i=0; i<sizeof(TSetupDevice); i++)
CharPtr[i]=0;
#if AC48_SIGNALING_MODE == AC48_BASIC_SIGNALING_MODE
SetupDevice.Order = LSB_FIRST;
SetupDevice.MSig.MSignal = M_SIGNAL_1;
SetupDevice.MSig.IgnoreSignaling = ACCEPT_M_SIGNAL;
SetupDevice.PcmAttributes.E1T1 = AC_E1;
SetupDevice.PairQuantity=0;
/* SetupDevice.TonePairs ... <= none */
#elif AC48_SIGNALING_MODE == AC48_EXTENDED_SIGNALING_MODE
SetupDevice.MSig.SignalingSystem = E_M_SIGNALING_S;
SetupDevice.MSig.SignalA = M_SIGNAL_1;
SetupDevice.MSig.SignalB = M_SIGNAL_0;
SetupDevice.MSig.SignalC = M_SIGNAL_0;
SetupDevice.MSig.SignalD = M_SIGNAL_0;
SetupDevice.PcmAttributes.E1T1 = E1_OR_UP_TO_128;
SetupDevice.CallProgress = Ac48xxSetDefaultCallProgress();
/* SetupDevice.UserDefinedTones... <= none tones */
#endif /* AC48_SIGNALING_MODE */
SetupDevice.MSig.RingFrequency = NO_RINGING;
SetupDevice.DebugingData = DEBUG_OFF;
SetupDevice.PcmAttributes.PcmClockDirection = PCM_CLOCK_INPUT;
SetupDevice.PcmAttributes.LawSelect = AC_MULAW;
SetupDevice.PcmAttributes.FrameSyncPolarity = FRAME_SINC_ACTIVE_HIGH;
SetupDevice.PcmAttributes.ClockPolarity = RX_FALING_TX_RISING;
SetupDevice.PcmAttributes.TriState = SILENCE_OR_IDLE_PATTERN;
#if AC48_DEVICE == AC481XX_DEVICE || AC48_DEVICE == AC4830X_DEVICE
SetupDevice.DecoderDelay.Type = 0;
SetupDevice.DecoderDelay.Delay = 0;
SetupDevice.PcmAttributes.NumberOfTimeSlotes = 31; /* 32 Time Slotes */
SetupDevice.PcmAttributes.IdlePatternEnable = SILENCE_PATTERN;
#endif /* AC48_DEVICE */
#if AC48_DEVICE == AC4830X_DEVICE
SetupDevice.PcmAttributes.ClockDivider = 47; /* 98.304MHz / 2.048MHz */
SetupDevice.PcmAttributes.FrameWidth = 0; /* Recomended for regular CODEC, at 2.048MHz */
#endif /* AC48_DEVICE */
return SetupDevice;
}
/*======================================================================*/
/* Name : Ac48xxSetupChannel */
/*======================================================================*/
/* Purpose : This function sets up a specific channel (while it is */
/* in the idle state) by sending: Voice, Fax, PCM-slot, */
/* Input-gain, and DTMF commands to the device, using the */
/* parameters, included in 'SetupChannel' structure. */
/* All the commands sent concatenately, in */
/* DONT_WAIT_PACKET_EMPTY mode, use a special method, */
/* explained in the do
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -