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

📄 ac48drhi.c

📁 Audiocodes old vision DSP driver
💻 C
📖 第 1 页 / 共 5 页
字号:
	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 + -