diff options
Diffstat (limited to 'api/e4000.c')
-rw-r--r-- | api/e4000.c | 859 |
1 files changed, 859 insertions, 0 deletions
diff --git a/api/e4000.c b/api/e4000.c new file mode 100644 index 0000000..0b41e43 --- /dev/null +++ b/api/e4000.c @@ -0,0 +1,859 @@ +/** + * @(#)Afa_E4000.cpp + * + * ========================================================== + * Version: 2.0 + * Date: 2008.07.02 + * ========================================================== + * + * ========================================================== + * History: + * + * Date Author Description + * ---------------------------------------------------------- + * + * 2008.07.02 Tom Lin added tuner version + * ========================================================== + * + * Copyright 2005 Afatech, Inc. All rights reserved. + * + */ + + +//#include <stdio.h> //for Linux +#include "type.h" +#include "error.h" +#include "user.h" +#include "standard.h" + + +extern Demodulator* E4000_demodulator; +extern Byte E4000_chip; +extern Dword Ref_clk; +extern Dword E4000_frequency; +extern Word E4000_bandwidth; + +/****************************************************************************\ +* Function: tunerreset +* +* Detailed Description: +* The function resets the E4000 tuner. (Register 0x00). +* +\****************************************************************************/ + +Dword E4000_tunerreset ( + + ) +{ + Dword error = 0; + Byte buffer[1]; + buffer[0] = 0x01; + error = Standard_writeTunerRegisters (E4000_demodulator, E4000_chip, 0x00, 1, buffer); + return (Error_NO_ERROR); +} + +/****************************************************************************\ +* Function: Tunerclock +* +* Detailed Description: +* The function configures the E4000 clock. (Register 0x06, 0x7a). +* Function enablesa CMOS clock - values can be modified to disable if required. +\****************************************************************************/ + +Dword E4000_Tunerclock() +{ + Dword error = 0; + Byte buffer[1]; + buffer[0] = 0x06; + error = Standard_writeTunerRegisters (E4000_demodulator, E4000_chip, 0x06, 1, buffer); + //buffer[0] = 0x96; + // error = Standard_writeTunerRegisters (E4000_demodulator, E4000_chip, 0x7a, 1, buffer); + //**Modify commands above with value required if output clock is not required, + return (Error_NO_ERROR); +} + +/****************************************************************************\ +* Function: filtercal +* +* Detailed Description: +* Instructs RC filter calibration. (Register 0x7b). +* +\****************************************************************************/ + +//Dword filtercal() +//{ +// Dword error = 0; +// Byte buffer[1]; +// buffer[0] = 0x01; +// error = Standard_writeTunerRegisters (E4000_demodulator, E4000_chip, 0x7b, 1, buffer); +// return (Error_NO_ERROR); +//} +/****************************************************************************\ +* Function: Qpeak() +* +* Detailed Description: +* The function configures the E4000 gains. +* Also sigma delta controller. (Register 0x82). +* +\****************************************************************************/ +Dword E4000_Qpeak() +{ + Dword error = 0; + Byte buffer[2]; + buffer[0] = 0x01; + buffer[1]=0xfe; + error = Standard_writeTunerRegisters (E4000_demodulator, E4000_chip, 0x7e, 2, buffer); + buffer[0] = 0x00; + error = Standard_writeTunerRegisters (E4000_demodulator, E4000_chip, 0x82, 1, buffer); + buffer[0] = 0x05; + error = Standard_writeTunerRegisters (E4000_demodulator, E4000_chip, 0x24, 1, buffer); + buffer[0] = 0x20; + buffer[1]=0x01; + error = Standard_writeTunerRegisters (E4000_demodulator, E4000_chip, 0x87, 2, buffer); + buffer[0] = 0x7f; + buffer[1]=0x07; + error = Standard_writeTunerRegisters (E4000_demodulator, E4000_chip, 0x9f, 2, buffer); + return (Error_NO_ERROR); +} +/****************************************************************************\ +* Function: PLL +* +* Detailed Description: +* Configures E4000 PLL divider & sigma delta. 0x0d,0x09, 0x0a, 0x0b). +* +\****************************************************************************/ + +Dword E4000_PLL() +{ + //printf("freq=%d", E4000_frequency); + //printf("ref clock=%d", Ref_clk); + Dword VCO_freq; + Dword error = 0; + Byte buffer[5]; + if (E4000_frequency<=72400) + { + buffer[4] = 15; + VCO_freq=E4000_frequency*48; + } + else if (E4000_frequency<=81200) + { + buffer[4] = 14; + VCO_freq=E4000_frequency*40; + } + else if (E4000_frequency<=108300) + { + buffer[4]=13; + VCO_freq=E4000_frequency*32; + } + else if (E4000_frequency<=162500) + { + buffer[4]=12; + VCO_freq=E4000_frequency*24; + } + else if (E4000_frequency<=216600) + { + buffer[4]=11; + VCO_freq=E4000_frequency*16; + } + else if (E4000_frequency<=325000) + { + buffer[4]=10; + VCO_freq=E4000_frequency*12; + } + else if (E4000_frequency<=350000) + { + buffer[4]=9; + VCO_freq=E4000_frequency*8; + } + else if (E4000_frequency<=432000) + { + buffer[4]=3; + VCO_freq=E4000_frequency*8; + } + else if (E4000_frequency<=700000) + { + buffer[4]=2; + VCO_freq=E4000_frequency*6; + } + else if (E4000_frequency<=1200000) + { + buffer[4]=1; + VCO_freq=E4000_frequency*4; + } + else + { + buffer[4]=0; + VCO_freq=E4000_frequency*2; + } + + Dword divider; + Dword intVCOfreq; + Dword SigDel; + Dword SigDel2; + Dword SigDel3; + divider = VCO_freq / Ref_clk; + + buffer[0]= divider; + intVCOfreq = divider * Ref_clk; + + SigDel=65536 * (VCO_freq - intVCOfreq) / Ref_clk; + +if (SigDel<=512) +{ + SigDel = 512; +} +else if (SigDel>=65024) +{ + SigDel=65024; +} +SigDel2 = SigDel / 256; + +buffer[2] = SigDel2; +SigDel3 = SigDel - (256 * SigDel2); + +buffer[1]= SigDel3; +buffer[3]=0; +error = Standard_writeTunerRegisters (E4000_demodulator, E4000_chip, 0x09, 5, buffer); + return (Error_NO_ERROR); +} +/****************************************************************************\ +* Function: LNAfilter +* +* Detailed Description: +* The function configures the E4000 LNA filter. (Register 0x10). +* +\****************************************************************************/ + +Dword E4000_LNAfilter() +{ + Dword error = 0; + Byte buffer[1]; + if(E4000_frequency<=370000) + { + buffer[0]=0; + } +else if(E4000_frequency<=392500) + { + buffer[0]=1; + } + else if(E4000_frequency<=415000) + { + buffer[0] =2; + } + else if(E4000_frequency<=437500) + { + buffer[0]=3; + } + else if(E4000_frequency<=462500) + { + buffer[0]=4; + } + else if(E4000_frequency<=490000) + { + buffer[0]=5; + } + else if(E4000_frequency<=522500) + { + buffer[0]=6; + } + else if(E4000_frequency<=557500) + { + buffer[0]=7; + } + else if(E4000_frequency<=595000) + { + buffer[0]=8; + } + else if(E4000_frequency<=642500) + { + buffer[0]=9; + } +else if(E4000_frequency<=695000) + { + buffer[0]=10; + } +else if(E4000_frequency<=740000) + { + buffer[0]=11; + } +else if(E4000_frequency<=800000) + { + buffer[0]=12; + } +else if(E4000_frequency<=865000) + { + buffer[0] =13; + } +else if(E4000_frequency<=930000) + { + buffer[0]=14; + } +else if(E4000_frequency<=1000000) + { + buffer[0]=15; + } +else if(E4000_frequency<=1310000) + { + buffer[0]=0; + } +else if(E4000_frequency<=1340000) + { + buffer[0]=1; + } +else if(E4000_frequency<=1385000) + { + buffer[0]=2; + } +else if(E4000_frequency<=1427500) + { + buffer[0]=3; + } +else if(E4000_frequency<=1452500) + { + buffer[0]=4; + } +else if(E4000_frequency<=1475000) + { + buffer[0]=5; + } +else if(E4000_frequency<=1510000) + { + buffer[0]=6; + } +else if(E4000_frequency<=1545000) + { + buffer[0]=7; + } +else if(E4000_frequency<=1575000) + { + buffer[0] =8; + } +else if(E4000_frequency<=1615000) + { + buffer[0]=9; + } +else if(E4000_frequency<=1650000) + { + buffer[0] =10; + } +else if(E4000_frequency<=1670000) + { + buffer[0]=11; + } +else if(E4000_frequency<=1690000) + { + buffer[0]=12; + } +else if(E4000_frequency<=1710000) + { + buffer[0]=13; + } +else if(E4000_frequency<=1735000) + { + buffer[0]=14; + } +else + { + buffer[0]=15; + } + error = Standard_writeTunerRegisters (E4000_demodulator, E4000_chip, 0x10, 1, buffer); + return (Error_NO_ERROR); +} +/****************************************************************************\ +* Function: IFfilter +* +* Detailed Description: +* The function configures the E4000 IF filter. (Register 0x11,0x12). +* +\****************************************************************************/ +Dword E4000_IFfilter() +{ + Dword error = 0; + Byte buffer[2]; + Word IF_BW; + IF_BW = E4000_bandwidth / 2; + if(IF_BW<=2150) + { + buffer[0]=0xfd; + buffer[1]=0x1f; + } + else if(IF_BW<=2200) + { + buffer[0]=0xfd; + buffer[1]=0x1e; + } + else if(IF_BW<=2240) + { + buffer[0]=0xfc; + buffer[1]=0x1d; + } + else if(IF_BW<=2280) + { + buffer[0]=0xfc; + buffer[1]=0x1c; + } + else if(IF_BW<=2300) + { + buffer[0]=0xfc; + buffer[1]=0x1b; + } + else if(IF_BW<=2400) + { + buffer[0]=0xfc; + buffer[1]=0x1a; + } + else if(IF_BW<=2450) + { + buffer[0]=0xfc; + buffer[1]=0x19; + } + else if(IF_BW<=2500) + { + buffer[0]=0xfc; + buffer[1]=0x18; + } + else if(IF_BW<=2550) + { + buffer[0]=0xfc; + buffer[1]=0x17; + } + else if(IF_BW<=2600) + { + buffer[0]=0xfc; + buffer[1]=0x16; + } + else if(IF_BW<=2700) + { + buffer[0]=0xfc; + buffer[1]=0x15; + } + else if(IF_BW<=2750) + { + buffer[0]=0xfc; + buffer[1]=0x14; + } + else if(IF_BW<=2800) + { + buffer[0]=0xfc; + buffer[1]=0x13; + } + else if(IF_BW<=2900) + { + buffer[0]==0xfb; + buffer[1]=0x12; + } + else if(IF_BW<=2950) + { + buffer[0]=0xfb; + buffer[1]=0x11; + } + else if(IF_BW<=3000) + { + buffer[0]=0xfb; + buffer[1]=0x10; + } + else if(IF_BW<=3100) + { + buffer[0]=0xfb; + buffer[1]=0x0f; + } + else if(IF_BW<=3200) + { + buffer[0]=0xfa; + buffer[1]=0x0e; + } + else if(IF_BW<=3300) + { + buffer[0]=0xfa; + buffer[1]=0x0d; + } + else if(IF_BW<=3400) + { + buffer[0]=0xf9; + buffer[1]=0x0c; + } + else if(IF_BW<=3600) + { + buffer[0]=0xf9; + buffer[1]=0x0b; + } + else if(IF_BW<=3700) + { + buffer[0]=0xf9; + buffer[1]=0x0a; + } + else if(IF_BW<=3800) + { + buffer[0]=0xf8; + buffer[1]=0x09; + } + else if(IF_BW<=3900) + { + buffer[0]=0xf8; + buffer[1]=0x08; + } + else if(IF_BW<=4100) + { + buffer[0]=0xf8; + buffer[1]=0x07; + } + else if(IF_BW<=4300) + { + buffer[0]=0xf7; + buffer[1]=0x06; + } + else if(IF_BW<=4400) + { + buffer[0]=0xf7; + buffer[1]=0x05; + } + else if(IF_BW<=4600) + { + buffer[0]=0xf7; + buffer[1]=0x04; + } + else if(IF_BW<=4800) + { + buffer[0]=0xf6; + buffer[1]=0x03; + } + else if(IF_BW<=5000) + { + buffer[0]=0xf6; + buffer[1]=0x02; + } + else if(IF_BW<=5300) + { + buffer[0]=0xf5; + buffer[1]=0x01; + } + else if(IF_BW<=5500) + { + buffer[0]=0xf5; + buffer[1]=0x00; + } + else + { + buffer[0]=0x00; + buffer[1]=0x20; + } + error = Standard_writeTunerRegisters (E4000_demodulator, E4000_chip, 0x11, 2, buffer); + return (Error_NO_ERROR); +} +/****************************************************************************\ +* Function: freqband +* +* Detailed Description: +* Configures the E4000 frequency band. (Registers 0x07, 0x78). +* +\****************************************************************************/ +Dword E4000_freqband() +{ + Dword error = 0; + Byte buffer[1]; + if (E4000_frequency<=140000) + { + buffer[0] = 1; + error = Standard_writeTunerRegisters (E4000_demodulator, E4000_chip, 0x07, 1, buffer); + buffer[0] = 3; + error = Standard_writeTunerRegisters (E4000_demodulator, E4000_chip, 0x78, 1, buffer); + } + else if (E4000_frequency<=350000) + { + buffer[0] = 3; + error = Standard_writeTunerRegisters (E4000_demodulator, E4000_chip, 0x07, 1, buffer); + buffer[0] = 3; + error = Standard_writeTunerRegisters (E4000_demodulator, E4000_chip, 0x78, 1, buffer); + } + else if (E4000_frequency<=1000000) + { + buffer[0] = 5; + error = Standard_writeTunerRegisters (E4000_demodulator, E4000_chip, 0x07, 1, buffer); + buffer[0] = 3; + error = Standard_writeTunerRegisters (E4000_demodulator, E4000_chip, 0x78, 1, buffer); + } + else + { + buffer[0] = 7; + error = Standard_writeTunerRegisters (E4000_demodulator, E4000_chip, 0x07, 1, buffer); + buffer[0] = 0; + error = Standard_writeTunerRegisters (E4000_demodulator, E4000_chip, 0x78, 1, buffer); + } + return (Error_NO_ERROR); +} +/****************************************************************************\ +* Function: DCoffLUT +* +* Detailed Description: +* Populates DC offset LUT. (Registers 0x50 - 0x53, 0x60 - 0x63). +* +\****************************************************************************/ +Dword E4000_DCoffLUT() +{ + Word IOFF; + Word QOFF; + Word RANGE1; + Word RANGE2; + Word QRANGE; + Word IRANGE; + Dword error = 0; + Byte buffer[3]; + buffer[0] = 0x00; + buffer[1] = 0x7e; + buffer[2] = 0x24; + error = Standard_writeTunerRegisters (E4000_demodulator, E4000_chip, 0x15, 3, buffer); + // Sets mixer & IF stage 1 gain = 00 and IF stg 2+ to max gain. + buffer[0] = 0x01; + error = Standard_writeTunerRegisters (E4000_demodulator, E4000_chip, 0x29, 1, buffer); + // Instructs a DC offset calibration. + error = Standard_readTunerRegisters (E4000_demodulator, 0, 0x2a, 3, buffer); + //printf("\n2a=%d",buffer[0]); + //printf("\n2b=%d",buffer[1]); + //printf("\n2c=%d",buffer[2]); + IOFF=buffer[0]; + QOFF=buffer[1]; + RANGE1=buffer[2]; + //reads DC offset values back + if(RANGE1>=32) + { + RANGE1 = RANGE1 -32; + } + if(RANGE1>=16) + { + RANGE1 = RANGE1 - 16; + } + IRANGE=RANGE1; + QRANGE = (buffer[2] - RANGE1) / 16; + buffer[0] = (IRANGE * 64) + IOFF; + error = Standard_writeTunerRegisters (E4000_demodulator, E4000_chip, 0x60, 1, buffer); + buffer[0] = (QRANGE * 64) + QOFF; + error = Standard_writeTunerRegisters (E4000_demodulator, E4000_chip, 0x50, 1, buffer); + // Populate DC offset LUT + buffer[0] = 0; + buffer[1] = 127; + error = Standard_writeTunerRegisters (E4000_demodulator, E4000_chip, 0x15, 2, buffer); + // Sets mixer & IF stage 1 gain = 01 leaving IF stg 2+ at max gain. + buffer[0]= 1; + error = Standard_writeTunerRegisters (E4000_demodulator, E4000_chip, 0x29, 1, buffer); + // Instructs a DC offset calibration. + error = Standard_readTunerRegisters (E4000_demodulator, 0, 0x2a, 3, buffer); + //printf("\n2a=%d",buffer[0]); + //printf("\n2b=%d",buffer[1]); + //printf("\n2c=%d",buffer[2]); + IOFF=buffer[0]; + QOFF=buffer[1]; + RANGE1=buffer[2]; + // Read DC offset values + if(RANGE1>=32) + { + RANGE1 = RANGE1 -32; + } + if(RANGE1>=16) + { + RANGE1 = RANGE1 - 16; + } + IRANGE = RANGE1; + QRANGE = (buffer[2] - RANGE1) / 16; + buffer[0] = (IRANGE * 64) + IOFF; + error = Standard_writeTunerRegisters (E4000_demodulator, E4000_chip, 0x61, 1, buffer); + buffer[0] = (QRANGE * 64) + QOFF; + error = Standard_writeTunerRegisters (E4000_demodulator, E4000_chip, 0x51, 1, buffer); + // Populate DC offset LUT + buffer[0] = 0x01; + error = Standard_writeTunerRegisters (E4000_demodulator, E4000_chip, 0x15, 1, buffer); + // Sets mixer & IF stage 1 gain = 11 leaving IF stg 2+ at max gain. + buffer[0] = 1; + error = Standard_writeTunerRegisters (E4000_demodulator, E4000_chip, 0x29, 1, buffer); + // Instructs a DC offset calibration. + error = Standard_readTunerRegisters (E4000_demodulator, 0, 0x2a, 3, buffer); + //printf("\n2a=%d",buffer[0]); + //printf("\n2b=%d",buffer[1]); + //printf("\n2c=%d",buffer[2]); + IOFF=buffer[0]; + QOFF=buffer[1]; + RANGE1 = buffer[2]; + // Read DC offset values + if(RANGE1>=32) + { + RANGE1 = RANGE1 -32; + } + if(RANGE1>=16) + { + RANGE1 = RANGE1 - 16; + } + IRANGE = RANGE1; + QRANGE = (buffer[2] - RANGE1) / 16; + buffer[0] = (IRANGE * 64) + IOFF; + error = Standard_writeTunerRegisters (E4000_demodulator, E4000_chip, 0x63, 1, buffer); + buffer[0] = (QRANGE * 64) + QOFF; + error = Standard_writeTunerRegisters (E4000_demodulator, E4000_chip, 0x53, 1, buffer); + // Populate DC offset LUT + buffer[0] = 0x7e; + error = Standard_writeTunerRegisters (E4000_demodulator, E4000_chip, 0x16, 1, buffer); + // Sets mixer & IF stage 1 gain = 11 leaving IF stg 2+ at max gain. + buffer[0] = 0x01; + error = Standard_writeTunerRegisters (E4000_demodulator, E4000_chip, 0x29, 1, buffer); + // Instructs a DC offset calibration. + error = Standard_readTunerRegisters (E4000_demodulator, E4000_chip, 0x2a, 3, buffer); + //printf("\n2a=%d",buffer[0]); + //printf("\n2b=%d",buffer[1]); + //printf("\n2c=%d",buffer[2]); + IOFF=buffer[0]; + QOFF=buffer[1]; + RANGE1=buffer[2]; + // Read DC offset values + if(RANGE1>=32) + { + RANGE1 = RANGE1 -32; + } + if(RANGE1>=16) + { + RANGE1 = RANGE1 - 16; + } + IRANGE = RANGE1; + QRANGE = (buffer[2] - RANGE1) / 16; + buffer[0]=(IRANGE * 64) + IOFF; + error = Standard_writeTunerRegisters (E4000_demodulator, E4000_chip, 0x62, 1, buffer); + buffer[0] = (QRANGE * 64) + QOFF; + error = Standard_writeTunerRegisters (E4000_demodulator, E4000_chip, 0x52, 1, buffer); + // Populate DC offset LUT + return (Error_NO_ERROR); +} +/****************************************************************************\ +* Function: DCoffloop +* +* Detailed Description: +* Populates DC offset LUT. (Registers 0x2d, 0x70, 0x71). +* Turns on DC offset LUT and time varying DC offset. +\****************************************************************************/ +Dword E4000_DCoffloop() +{ + Dword error = 0; + Byte buffer[2]; + buffer[0] = 0x1f; + error = Standard_writeTunerRegisters (E4000_demodulator, E4000_chip, 0x2d, 1, buffer); + buffer[0] = 0x01; + buffer[1] = 0x01; + error = Standard_writeTunerRegisters (E4000_demodulator, E4000_chip, 0x70, 2, buffer); + return (Error_NO_ERROR); +} +/****************************************************************************\ +* Function: commonmode +* +* Detailed Description: +* Configures common mode voltage. (Registers 0x2f). +* +\****************************************************************************/ +//Dword E4000_commonmode() +//{ +// //Dword error = 0; +// //Byte buffer[1]; +// //buffer[0] = 0; +// //error = Standard_writeTunerRegisters (E4000_demodulator, E4000_chip, 0x2f, 1, buffer); +// // Sets 550mV. Modify if alternative is desired. +// return (Error_NO_ERROR); +//} +/****************************************************************************\ +* Function: GainControlinit +* +* Detailed Description: +* Configures gain control mode. (Registers 0x1d, 0x1e, 0x1f, 0x20, 0x21, +* 0x1a, 0x74h, 0x75h). +* User may wish to modify values depending on usage scenario. +* Routine configures LNA: autonomous gain control +* IF PWM gain control. +* PWM thresholds = default +* Mixer: switches when LNA gain =7.5dB +* Sensitivity / Linearity mode: manual switch +* +\****************************************************************************/ +Dword E4000_GainControlinit() +{ + Dword sum=255; + Dword error = 0; + Byte buffer[5]; + buffer[0] = 0x17; + error = Standard_writeTunerRegisters (E4000_demodulator, E4000_chip, 0x1a, 1, buffer); + buffer[0] = 0x24; + buffer[1] = 0x06; + buffer[2] = 0x1a; + buffer[3] = 0x0f; + buffer[4] = 0x00; + error = Standard_writeTunerRegisters (E4000_demodulator, E4000_chip, 0x1d, 5, buffer); + error = Standard_readTunerRegisters (E4000_demodulator, 0, 0x1b, 1, buffer); + if (buffer[0]<=sum) + { + sum=buffer[0]; + } + //printf("sum1=%d",sum); + buffer[0]=0x1a; + error = Standard_writeTunerRegisters (E4000_demodulator, E4000_chip, 0x1f, 1, buffer); + error = Standard_readTunerRegisters (E4000_demodulator, 0, 0x1b, 1, buffer); + if (buffer[0]<=sum) + { + sum=buffer[0]; + } + // printf("sum2=%d",sum); + buffer[0]=0x1a; + error = Standard_writeTunerRegisters (E4000_demodulator, E4000_chip, 0x1f, 1, buffer); + error = Standard_readTunerRegisters (E4000_demodulator, 0, 0x1b, 1, buffer); + if (buffer[0]<=sum) + { + sum=buffer[0]; + } + // printf("sum3=%d",sum); + buffer[0]=0x1a; + error = Standard_writeTunerRegisters (E4000_demodulator, E4000_chip, 0x1f, 1, buffer); + error = Standard_readTunerRegisters (E4000_demodulator, 0, 0x1b, 1, buffer); + if (buffer[0]<=sum) + { + sum=buffer[0]; + } + //printf("sum4=%d",sum); + buffer[0]=0x1a; + error = Standard_writeTunerRegisters (E4000_demodulator, E4000_chip, 0x1f, 1, buffer); + error = Standard_readTunerRegisters (E4000_demodulator, 0, 0x1b, 1, buffer); + if (buffer[0]<=sum) + { + sum=buffer[0]; + } + //printf("sum5=%d",sum); + buffer[0]=sum; + error = Standard_writeTunerRegisters (E4000_demodulator, E4000_chip, 0x1b, 1, buffer); + //buffer[0] = 0x03; + //buffer[1] = 0xfc; + //buffer[2] = 0x03; + //buffer[3] = 0xfc; + //error = Standard_writeTunerRegisters (E4000_demodulator, E4000_chip, 0x74, 4, buffer); + return (Error_NO_ERROR); +} +/****************************************************************************\ +* Function: E4000_Gainmanual +* +* Detailed Description: +* Sets gain to manualcontrol. (Register 0x1a). +* +\****************************************************************************/ +Dword E4000_Gainmanual() +{ + Dword error = 0; + Byte buffer[1]; + buffer[0] = 0x00; + error = Standard_writeTunerRegisters (E4000_demodulator, E4000_chip, 0x1a, 1, buffer); + return (Error_NO_ERROR); +} +/****************************************************************************\ +* Function: E4000_Gainauto +* +* Detailed Description: +* Sets gain to manualcontrol. (Register 0x1a). +* +\****************************************************************************/ +Dword E4000_Gainauto() +{ + Dword error = 0; + Byte buffer[1]; + buffer[0] = 0x17; + error = Standard_writeTunerRegisters (E4000_demodulator, E4000_chip, 0x1a, 1, buffer); + return (Error_NO_ERROR); +} |