@ -299,7 +299,7 @@ void IO::rf1Conf(DVM_STATE modemState, bool reset)
{
{
uint32_t txFrequencyTmp , rxFrequencyTmp ;
uint32_t txFrequencyTmp , rxFrequencyTmp ;
DEBUG4 ( " IO::rf1Conf(): configuring ADF for Tx/Rx ; modemState/reset/rxGain" , modemState , reset , m_gainMode ) ;
DEBUG4 ( " IO::rf1Conf(): ADF1 (Tx/Rx) ; modemState/reset/rxGain" , modemState , reset , m_gainMode ) ;
# if defined (ZUMSPOT_ADF7021) || defined(SKYBRIDGE_HS)
# if defined (ZUMSPOT_ADF7021) || defined(SKYBRIDGE_HS)
io . checkBand ( m_rxFrequency , m_txFrequency ) ;
io . checkBand ( m_rxFrequency , m_txFrequency ) ;
@ -378,12 +378,16 @@ void IO::rf1Conf(DVM_STATE modemState, bool reset)
AD7021_CONTROL = ADF7021_REG3 ;
AD7021_CONTROL = ADF7021_REG3 ;
AD7021_1_IOCTL ( ) ;
AD7021_1_IOCTL ( ) ;
DEBUG3 ( " IO::rf1Conf(): ADF1 REG3 = " , ( ADF7021_REG3 > > 16 & 0xFFFFU ) , ( ADF7021_REG3 & 0xFFFFU ) ) ;
/*
/*
* * Demodulator Setup ( Register 4 )
* * Demodulator Setup ( Register 4 )
*/
*/
AD7021_CONTROL = ADF7021_REG4 ;
AD7021_CONTROL = ADF7021_REG4 ;
AD7021_1_IOCTL ( ) ;
AD7021_1_IOCTL ( ) ;
DEBUG3 ( " IO::rf1Conf(): ADF1 REG4 = " , ( ADF7021_REG4 > > 16 & 0xFFFFU ) , ( ADF7021_REG4 & 0xFFFFU ) ) ;
/*
/*
* * IF Fine Cal Setup ( Register 6 )
* * IF Fine Cal Setup ( Register 6 )
*/
*/
@ -410,6 +414,8 @@ void IO::rf1Conf(DVM_STATE modemState, bool reset)
AD7021_CONTROL = ADF7021_REG2 ;
AD7021_CONTROL = ADF7021_REG2 ;
AD7021_1_IOCTL ( ) ;
AD7021_1_IOCTL ( ) ;
DEBUG3 ( " IO::rf1Conf(): ADF1 REG2 = " , ( ADF7021_REG2 > > 16 & 0xFFFFU ) , ( ADF7021_REG3 & 0xFFFFU ) ) ;
/*
/*
* * Test DAC ( Register 14 )
* * Test DAC ( Register 14 )
*/
*/
@ -446,6 +452,8 @@ void IO::rf1Conf(DVM_STATE modemState, bool reset)
AD7021_CONTROL = ADF7021_REG10 ;
AD7021_CONTROL = ADF7021_REG10 ;
AD7021_1_IOCTL ( ) ;
AD7021_1_IOCTL ( ) ;
DEBUG3 ( " IO::rf1Conf(): ADF1 REG10 = " , ( ADF7021_REG10 > > 16 & 0xFFFFU ) , ( ADF7021_REG10 & 0xFFFFU ) ) ;
/*
/*
* * Sync Word Detect ( Register 11 )
* * Sync Word Detect ( Register 11 )
*/
*/
@ -464,6 +472,8 @@ void IO::rf1Conf(DVM_STATE modemState, bool reset)
AD7021_CONTROL = ADF7021_REG13 ;
AD7021_CONTROL = ADF7021_REG13 ;
AD7021_1_IOCTL ( ) ;
AD7021_1_IOCTL ( ) ;
DEBUG3 ( " IO::rf1Conf(): ADF1 REG13 = " , ( ADF7021_REG13 > > 16 & 0xFFFFU ) , ( ADF7021_REG13 & 0xFFFFU ) ) ;
/*
/*
* * Test Mode ( Register 15 )
* * Test Mode ( Register 15 )
*/
*/
@ -493,7 +503,7 @@ void IO::rf1Conf(DVM_STATE modemState, bool reset)
/// <param name="reset"></param>
/// <param name="reset"></param>
void IO : : rf2Conf ( DVM_STATE modemState )
void IO : : rf2Conf ( DVM_STATE modemState )
{
{
DEBUG3 ( " IO::rf2Conf(): configuring 2nd ADF for Rx ; modemState/rxGain" , modemState , m_gainMode ) ;
DEBUG3 ( " IO::rf2Conf(): ADF2 (Rx) ; modemState/rxGain" , modemState , m_gainMode ) ;
// configure ADF Tx/RX
// configure ADF Tx/RX
configureTxRx ( modemState ) ;
configureTxRx ( modemState ) ;
@ -511,12 +521,16 @@ void IO::rf2Conf(DVM_STATE modemState)
AD7021_CONTROL = ADF7021_REG3 ;
AD7021_CONTROL = ADF7021_REG3 ;
AD7021_2_IOCTL ( ) ;
AD7021_2_IOCTL ( ) ;
DEBUG3 ( " IO::rf2Conf(): ADF2 REG3 = " , ( ADF7021_REG3 > > 16 & 0xFFFFU ) , ( ADF7021_REG3 & 0xFFFFU ) ) ;
/*
/*
* * Demodulator Setup ( Register 4 )
* * Demodulator Setup ( Register 4 )
*/
*/
AD7021_CONTROL = ADF7021_REG4 ;
AD7021_CONTROL = ADF7021_REG4 ;
AD7021_2_IOCTL ( ) ;
AD7021_2_IOCTL ( ) ;
DEBUG3 ( " IO::rf2Conf(): ADF2 REG4 = " , ( ADF7021_REG4 > > 16 & 0xFFFFU ) , ( ADF7021_REG4 & 0xFFFFU ) ) ;
/*
/*
* * IF Fine Cal Setup ( Register 6 )
* * IF Fine Cal Setup ( Register 6 )
*/
*/
@ -545,6 +559,8 @@ void IO::rf2Conf(DVM_STATE modemState)
AD7021_CONTROL = ADF7021_REG2 ;
AD7021_CONTROL = ADF7021_REG2 ;
AD7021_2_IOCTL ( ) ;
AD7021_2_IOCTL ( ) ;
DEBUG3 ( " IO::rf2Conf(): ADF2 REG2 = " , ( ADF7021_REG2 > > 16 & 0xFFFFU ) , ( ADF7021_REG3 & 0xFFFFU ) ) ;
/*
/*
* * Test DAC ( Register 14 )
* * Test DAC ( Register 14 )
*/
*/
@ -577,6 +593,8 @@ void IO::rf2Conf(DVM_STATE modemState)
AD7021_CONTROL = ADF7021_REG10 ;
AD7021_CONTROL = ADF7021_REG10 ;
AD7021_2_IOCTL ( ) ;
AD7021_2_IOCTL ( ) ;
DEBUG3 ( " IO::rf2Conf(): ADF2 REG10 = " , ( ADF7021_REG10 > > 16 & 0xFFFFU ) , ( ADF7021_REG10 & 0xFFFFU ) ) ;
/*
/*
* * Sync Word Detect ( Register 11 )
* * Sync Word Detect ( Register 11 )
*/
*/
@ -595,6 +613,8 @@ void IO::rf2Conf(DVM_STATE modemState)
AD7021_CONTROL = ADF7021_REG13 ;
AD7021_CONTROL = ADF7021_REG13 ;
AD7021_2_IOCTL ( ) ;
AD7021_2_IOCTL ( ) ;
DEBUG3 ( " IO::rf2Conf(): ADF2 REG13 = " , ( ADF7021_REG13 > > 16 & 0xFFFFU ) , ( ADF7021_REG13 & 0xFFFFU ) ) ;
/*
/*
* * Test Mode ( Register 15 )
* * Test Mode ( Register 15 )
*/
*/
@ -636,8 +656,8 @@ void IO::setRFAdjust(int8_t dmrDiscBWAdj, int8_t p25DiscBWAdj, int8_t nxdnDiscBW
m_p25PostBWAdj = p25PostBWAdj ;
m_p25PostBWAdj = p25PostBWAdj ;
m_nxdnPostBWAdj = nxdnPostBWADJ ;
m_nxdnPostBWAdj = nxdnPostBWADJ ;
DEBUG4 ( " IO::setRFAdjust(): setting RF adjustment, discBW" , dmrDiscBWAdj , p25DiscBWAdj , nxdnDiscBWAdj ) ;
DEBUG4 ( " IO::setRFAdjust(): RF adjustment, discBW" , dmrDiscBWAdj , p25DiscBWAdj , nxdnDiscBWAdj ) ;
DEBUG4 ( " IO::setRFAdjust(): setting RF adjustment, postBW" , dmrPostBWAdj , p25PostBWAdj , nxdnPostBWADJ ) ;
DEBUG4 ( " IO::setRFAdjust(): RF adjustment, postBW" , dmrPostBWAdj , p25PostBWAdj , nxdnPostBWADJ ) ;
}
}
/// <summary>
/// <summary>
@ -654,7 +674,7 @@ void IO::setAFCParams(bool afcEnable, uint8_t afcKI, uint8_t afcKP, uint8_t afcR
m_afcKP = afcKP ;
m_afcKP = afcKP ;
m_afcRange = afcRange ;
m_afcRange = afcRange ;
DEBUG5 ( " IO::setAFCParams(): setting AFC params" , afcEnable , afcKI , afcKP , afcRange ) ;
DEBUG5 ( " IO::setAFCParams(): AFC params" , afcEnable , afcKI , afcKP , afcRange ) ;
}
}
/// <summary>
/// <summary>
@ -673,7 +693,7 @@ void IO::updateCal(DVM_STATE modemState)
AD7021_CONTROL = ADF7021_REG1 ;
AD7021_CONTROL = ADF7021_REG1 ;
AD7021_1_IOCTL ( ) ;
AD7021_1_IOCTL ( ) ;
// configure ADF Tx/R X
// configure ADF Tx/R x
configureTxRx ( modemState ) ;
configureTxRx ( modemState ) ;
/*
/*
@ -712,7 +732,7 @@ void IO::updateCal(DVM_STATE modemState)
AD7021_CONTROL = ADF7021_REG2 ;
AD7021_CONTROL = ADF7021_REG2 ;
AD7021_1_IOCTL ( ) ;
AD7021_1_IOCTL ( ) ;
DEBUG2 ( " IO::updateCal(): updating ADF calibration; modemState" , modemState ) ;
DEBUG2 ( " IO::updateCal(): ADF calibration; modemState" , modemState ) ;
if ( m_tx )
if ( m_tx )
setTX ( ) ;
setTX ( ) ;
@ -881,7 +901,7 @@ void IO::configureBand()
else
else
f_div = 1U ;
f_div = 1U ;
DEBUG3 ( " IO::configureBand(): configuring ADF freq band; reg1/f_div" , ADF7021_REG1 , f_div ) ;
DEBUG3 ( " IO::configureBand(): ADF freq band; reg1/f_div" , ADF7021_REG1 , f_div ) ;
}
}
/// <summary>
/// <summary>
@ -1093,7 +1113,7 @@ void IO::configureTxRx(DVM_STATE modemState)
ADF7021_REG4 | = ( uint32_t ) ADF7021_REG4_INV_CLKDAT < < 8 ; // Clock/Data Inversion
ADF7021_REG4 | = ( uint32_t ) ADF7021_REG4_INV_CLKDAT < < 8 ; // Clock/Data Inversion
ADF7021_REG4 | = ( uint32_t ) ( dmrDiscBW & 0x3FFU ) < < 10 ; // Discriminator BW
ADF7021_REG4 | = ( uint32_t ) ( dmrDiscBW & 0x3FFU ) < < 10 ; // Discriminator BW
ADF7021_REG4 | = ( uint32_t ) ( dmrPostBW & 0xFFFU ) < < 20 ; // Post Demod BW
ADF7021_REG4 | = ( uint32_t ) ( dmrPostBW & 0xFFFU ) < < 20 ; // Post Demod BW
ADF7021_REG4 | = ( uint32_t ) ADF7021_REG4_IF_ 1 25K < < 30 ; // IF Filter
ADF7021_REG4 | = ( uint32_t ) ADF7021_REG4_IF_ 25K < < 30 ; // IF Filter
/*
/*
* * 3F SK / 4F SK Demod ( Register 13 )
* * 3F SK / 4F SK Demod ( Register 13 )
@ -1109,7 +1129,7 @@ void IO::configureTxRx(DVM_STATE modemState)
ADF7021_REG2 | = ( uint32_t ) ADF7021_REG2_PA_DEF < < 7 ; // PA Enable & PA Bias
ADF7021_REG2 | = ( uint32_t ) ADF7021_REG2_PA_DEF < < 7 ; // PA Enable & PA Bias
ADF7021_REG2 | = ( uint32_t ) ( m_rfPower & 0x3FU ) < < 13 ; // PA Level (0 - Off, 63 - 13 dBm)
ADF7021_REG2 | = ( uint32_t ) ( m_rfPower & 0x3FU ) < < 13 ; // PA Level (0 - Off, 63 - 13 dBm)
ADF7021_REG2 | = ( uint32_t ) ( dmrDev / div2 ) < < 19 ; // Freq. Deviation
ADF7021_REG2 | = ( uint32_t ) ( dmrDev / div2 ) < < 19 ; // Freq. Deviation
ADF7021_REG2 | = ( uint32_t ) ADF7021_REG2_INV_ CLK DAT < < 28 ; // Clock/ Data Inversion
ADF7021_REG2 | = ( uint32_t ) ADF7021_REG2_INV_ DATA < < 28 ; // Data Inversion
ADF7021_REG2 | = ( uint32_t ) ADF7021_REG2_RC_5 < < 30 ; // R-Cosine Alpha
ADF7021_REG2 | = ( uint32_t ) ADF7021_REG2_RC_5 < < 30 ; // R-Cosine Alpha
}
}
break ;
break ;
@ -1172,7 +1192,7 @@ void IO::configureTxRx(DVM_STATE modemState)
ADF7021_REG4 | = ( uint32_t ) ADF7021_REG4_INV_CLKDAT < < 8 ; // Clock/Data Inversion
ADF7021_REG4 | = ( uint32_t ) ADF7021_REG4_INV_CLKDAT < < 8 ; // Clock/Data Inversion
ADF7021_REG4 | = ( uint32_t ) ( p25DiscBW & 0x3FFU ) < < 10 ; // Discriminator BW
ADF7021_REG4 | = ( uint32_t ) ( p25DiscBW & 0x3FFU ) < < 10 ; // Discriminator BW
ADF7021_REG4 | = ( uint32_t ) ( p25PostBW & 0xFFFU ) < < 20 ; // Post Demod BW
ADF7021_REG4 | = ( uint32_t ) ( p25PostBW & 0xFFFU ) < < 20 ; // Post Demod BW
ADF7021_REG4 | = ( uint32_t ) ADF7021_REG4_IF_ 1 25K < < 30 ; // IF Filter
ADF7021_REG4 | = ( uint32_t ) ADF7021_REG4_IF_ 25K < < 30 ; // IF Filter
/*
/*
* * 3F SK / 4F SK Demod ( Register 13 )
* * 3F SK / 4F SK Demod ( Register 13 )
@ -1263,7 +1283,7 @@ void IO::configureTxRx(DVM_STATE modemState)
ADF7021_REG4 | = ( uint32_t ) ADF7021_REG4_INV_CLKDAT < < 8 ; // Clock/Data Inversion
ADF7021_REG4 | = ( uint32_t ) ADF7021_REG4_INV_CLKDAT < < 8 ; // Clock/Data Inversion
ADF7021_REG4 | = ( uint32_t ) ( nxdnDiscBW & 0x3FFU ) < < 10 ; // Discriminator BW
ADF7021_REG4 | = ( uint32_t ) ( nxdnDiscBW & 0x3FFU ) < < 10 ; // Discriminator BW
ADF7021_REG4 | = ( uint32_t ) ( nxdnPostBW & 0xFFFU ) < < 20 ; // Post Demod BW
ADF7021_REG4 | = ( uint32_t ) ( nxdnPostBW & 0xFFFU ) < < 20 ; // Post Demod BW
ADF7021_REG4 | = ( uint32_t ) ADF7021_REG4_IF_1 2 5K < < 30 ; // IF Filter
ADF7021_REG4 | = ( uint32_t ) ADF7021_REG4_IF_1 87 5K < < 30 ; // IF Filter
/*
/*
* * 3F SK / 4F SK Demod ( Register 13 )
* * 3F SK / 4F SK Demod ( Register 13 )
@ -1363,12 +1383,6 @@ void IO::configureTxRx(DVM_STATE modemState)
break ;
break ;
}
}
DEBUG3 ( " IO::configureTxRx(): ADF7021_REG3 = " , ( ADF7021_REG3 > > 16 & 0xFFFFU ) , ( ADF7021_REG3 & 0xFFFFU ) ) ;
DEBUG3 ( " IO::configureTxRx(): ADF7021_REG10 = " , ( ADF7021_REG10 > > 16 & 0xFFFFU ) , ( ADF7021_REG10 & 0xFFFFU ) ) ;
DEBUG3 ( " IO::configureTxRx(): ADF7021_REG4 = " , ( ADF7021_REG4 > > 16 & 0xFFFFU ) , ( ADF7021_REG4 & 0xFFFFU ) ) ;
DEBUG3 ( " IO::configureTxRx(): ADF7021_REG13 = " , ( ADF7021_REG13 > > 16 & 0xFFFFU ) , ( ADF7021_REG13 & 0xFFFFU ) ) ;
DEBUG3 ( " IO::configureTxRx(): ADF7021_REG2 = " , ( ADF7021_REG2 > > 16 & 0xFFFFU ) , ( ADF7021_REG3 & 0xFFFFU ) ) ;
DEBUG5 ( " IO::configureTxRx(): ADF Tx/Rx values; dmrDiscBW/dmrPostBW/p25DiscBW/p25PostBW " , dmrDiscBW , dmrPostBW , p25DiscBW , p25PostBW ) ;
DEBUG5 ( " IO::configureTxRx(): ADF Tx/Rx values; dmrDiscBW/dmrPostBW/p25DiscBW/p25PostBW " , dmrDiscBW , dmrPostBW , p25DiscBW , p25PostBW ) ;
DEBUG3 ( " IO::configureTxRx(): ADF Tx/Rx values; nxdnDiscBW/nxdnPostBW " , nxdnDiscBW , nxdnPostBW ) ;
DEBUG3 ( " IO::configureTxRx(): ADF Tx/Rx values; nxdnDiscBW/nxdnPostBW " , nxdnDiscBW , nxdnPostBW ) ;
DEBUG5 ( " IO::configureTxRx(): ADF Tx/Rx values; dmrSymDev/p25SymDev/nxdnSymDev/rfPower " , ( uint16_t ) ( ( ADF7021_PFD * dmrDev ) / ( f_div * 65536 ) ) ,
DEBUG5 ( " IO::configureTxRx(): ADF Tx/Rx values; dmrSymDev/p25SymDev/nxdnSymDev/rfPower " , ( uint16_t ) ( ( ADF7021_PFD * dmrDev ) / ( f_div * 65536 ) ) ,