From 3c025df32c18fbb3097ca8c5a77f0ee8038f755f Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Sat, 27 Oct 2012 19:22:57 +0200 Subject: [PATCH] update to superfemto v2.4 --- include/superfemto.h | 65 ++++++++++++++++++++------------------------ 1 file changed, 30 insertions(+), 35 deletions(-) diff --git a/include/superfemto.h b/include/superfemto.h index de9e2c3..53246f2 100644 --- a/include/superfemto.h +++ b/include/superfemto.h @@ -13,7 +13,7 @@ #include "gsml1const.h" #define SUPERFEMTO_API(x,y,z) ((x << 16) | (y << 8) | z) -#define SUPERFEMTO_API_VERSION SUPERFEMTO_API(2,2,0) +#define SUPERFEMTO_API_VERSION SUPERFEMTO_API(2,4,0) /**************************************************************************** * Const * @@ -168,7 +168,7 @@ typedef struct SuperFemto_ActivateRfReq uint8_t u8UsePdtchMsgq; ///< Set to '1' to use a separate MSGQUEUE for PDTCH primitives } msgq; - // TRX RF clock options + // RF options struct { int iClkCor; ///< Clock correction value in PPB. @@ -177,13 +177,6 @@ typedef struct SuperFemto_ActivateRfReq float fMaxTxPower; ///< Nominal maximum TX power in dBm uint8_t u8UseExtAtten; ///< Use the external attenuator to control TX power (0:No, 1:Yes) } rfTrx; - - // RX RF clock options - struct - { - int iClkCor; ///< Clock calibration value in PPB. - SuperFemto_ClkSrcId_t clkSrc; ///< Clock source (0:None, 1:OCXO, 2:TCXO, 3:External, 4:GPS PPS, 5:TRX, 6:reserved, 7:Edge) - } rfRx; } SuperFemto_ActivateRfReq_t; @@ -257,20 +250,13 @@ typedef struct SuperFemto_RfClockInfoReq ***************************************************************************/ typedef struct SuperFemto_RfClockSetupReq { - // TRX RF clock options + // RF clock options struct { int iClkCor; ///< Clock correction value in PPB. SuperFemto_ClkSrcId_t clkSrc; ///< Clock source (0:None, 1:OCXO, 2:TCXO, 3:External, 4:GPS PPS, 5:reserved, 6:RX, 7:Edge) } rfTrx; - // RX RF clock options - struct - { - int iClkCor; ///< Clock calibration value in PPB. - SuperFemto_ClkSrcId_t clkSrc; ///< Clock source (0:None, 1:OCXO, 2:TCXO, 3:External, 4:GPS PPS, 5:TRX, 6:reserved, 7:Edge) - } rfRx; - // RF clock calibration struct { SuperFemto_ClkSrcId_t clkSrc; ///< Reference clock source (0:Off, 1:OCXO, 2:TCXO, 3:External, 4:GPS PPS, 5:reserved, 6:reserved, 7:Edge, 8:NL) @@ -305,19 +291,12 @@ typedef struct SuperFemto_RfClockSetupCnf ***************************************************************************/ typedef struct SuperFemto_RfClockInfoCnf { - // TRX RF clock options + // RF clock options struct { int iClkCor; ///< Clock correction value in PPB. SuperFemto_ClkSrcId_t clkSrc; ///< Clock source (0:None, 1:OCXO, 2:TCXO, 3:External, 4:GPS PPS, 5:reserved, 6:RX, 7:Edge) } rfTrx; - - // RX RF clock options - struct - { - int iClkCor; ///< Clock calibration value in PPB. - SuperFemto_ClkSrcId_t clkSrc; ///< Clock source (0:None, 1:OCXO, 2:TCXO, 3:External, 4:GPS PPS, 5:TRX, 6:reserved, 7:Edge) - } rfRx; // RF clock calibration struct { @@ -359,6 +338,8 @@ typedef struct SuperFemto_Layer1ResetCnf } SuperFemto_Layer1ResetCnf_t; + + /**************************************************************************** * Struct : SuperFemto_GetTxCalibTblReq_t ************************************************************************//** @@ -390,12 +371,14 @@ typedef struct SuperFemto_GetTxCalibTblCnf GsmL1_Status_t status; GsmL1_FreqBand_t freqBand; ///< GSM Frequency band - float fGain[80]; ///< Gain setting for output level from +50dBm to -29 dBm - float fGainCorrVsArfcn[374]; /**< Gain correction (in dBm) for each ARFCN + float fTxGainGmsk[80]; ///< Gain setting for GMSK output level from +50dBm to -29 dBm + float fTx8PskCorr; ///< Gain adjustment for 8 PSK (default to +3.25 dB) + float fTxExtAttCorr[31]; ///< Gain adjustment for external attenuator (0:@1dB, 1:@2dB, ..., 31:@32dB) + float fTxRollOffCorr[374]; /**< Gain correction for each ARFCN for GSM-850 : 0=128, 1:129, ..., 123:251, [124-373]:unused for GSM-900 : 0=955, 1:956, ..., 70:1, ..., 317:956, [318-373]:unused for DCS-1800: 0=512, 1:513, ..., 373:885 - for PCS-1900: 0=512, 1:513, ..., 298:810, [299-373]:unused */ + for PCS-1900: 0=512, 1:513, ..., 298:810, [299-373]:unused */ } SuperFemto_GetTxCalibTblCnf_t; /**************************************************************************** @@ -413,12 +396,14 @@ typedef struct SuperFemto_SetTxCalibTblReq { GsmL1_FreqBand_t freqBand; ///< GSM Frequency band - float fGain[80]; ///< Gain setting for output level from +50dBm to -29 dBm - float fGainCorrVsArfcn[374]; /***< Gain correction (in dBm) for each ARFCN + float fTxGainGmsk[80]; ///< Gain setting for GMSK output level from +50dBm to -29 dBm + float fTx8PskCorr; ///< Gain adjustment for 8 PSK (default to +3.25 dB) + float fTxExtAttCorr[31]; ///< Gain adjustment for external attenuator (0:@1dB, 1:@2dB, ..., 31:@32dB) + float fTxRollOffCorr[374]; /**< Gain correction for each ARFCN for GSM-850 : 0=128, 1:129, ..., 123:251, [124-373]:unused for GSM-900 : 0=955, 1:956, ..., 70:1, ..., 317:956, [318-373]:unused for DCS-1800: 0=512, 1:513, ..., 373:885 - for PCS-1900: 0=512, 1:513, ..., 298:810, [299-373]:unused */ + for PCS-1900: 0=512, 1:513, ..., 298:810, [299-373]:unused */ } SuperFemto_SetTxCalibTblReq_t; /**************************************************************************** @@ -467,13 +452,18 @@ typedef struct SuperFemto_GetRxCalibTblCnf { GsmL1_Status_t status; GsmL1_FreqBand_t freqBand; ///< GSM Frequency band - uint8_t bUplink; ///< Direction (0:Downlink, 1:Uplink) - - float fRssiCorrVsArfcn[374]; /***< RSSI correction (in dBm) for each ARFCN + uint8_t bUplink; ///< Direction (0:Downlink, 1:Uplink) + + float fExtRxGain; ///< External RX gain + float fRxMixGainCorr; ///< Mixer gain error compensation + float fRxLnaGainCorr[3]; ///< LNA gain error compensation (1:@-12 dB, 2:@-24 dB, 3:@-36 dB) + float fRxRollOffCorr[374]; /***< Frequency roll-off compensation for GSM-850 : 0=128, 1:129, ..., 123:251, [124-373]:unused for GSM-900 : 0=955, 1:956, ..., 70:1, ..., 317:956, [318-373]:unused for DCS-1800: 0=512, 1:513, ..., 373:885 for PCS-1900: 0=512, 1:513, ..., 298:810, [299-373]:unused */ + uint8_t u8IqImbalMode; ///< IQ imbalance mode (0:off, 1:on, 2:auto) + uint16_t u16IqImbalCorr[4]; ///< IQ imbalance compensation } SuperFemto_GetRxCalibTblCnf_t; /**************************************************************************** @@ -492,11 +482,16 @@ typedef struct SuperFemto_SetRxCalibTblReq GsmL1_FreqBand_t freqBand; ///< GSM Frequency band uint8_t bUplink; ///< Direction (0:Downlink, 1:Uplink) - float fRssiCorrVsArfcn[374]; /***< RSSI correction (in dBm) for each ARFCN + float fExtRxGain; ///< External RX gain + float fRxMixGainCorr; ///< Mixer gain error compensation + float fRxLnaGainCorr[3]; ///< LNA gain error compensation (1:@-12 dB, 2:@-24 dB, 3:@-36 dB) + float fRxRollOffCorr[374]; /***< Frequency roll-off compensation for GSM-850 : 0=128, 1:129, ..., 123:251, [124-373]:unused for GSM-900 : 0=955, 1:956, ..., 70:1, ..., 317:956, [318-373]:unused for DCS-1800: 0=512, 1:513, ..., 373:885 for PCS-1900: 0=512, 1:513, ..., 298:810, [299-373]:unused */ + uint8_t u8IqImbalMode; ///< IQ imbalance mode (0:off, 1:on, 2:auto) + uint16_t u16IqImbalCorr[4]; ///< IQ imbalance compensation } SuperFemto_SetRxCalibTblReq_t; /****************************************************************************