1
0
mirror of https://github.com/gnss-sdr/gnss-sdr synced 2025-05-23 17:54:09 +00:00

some cleaning and optimization

This commit is contained in:
Carles Fernandez 2015-05-07 22:25:46 +02:00
parent c24f312226
commit a7fba9f378

View File

@ -30,7 +30,7 @@
* ------------------------------------------------------------------------- * -------------------------------------------------------------------------
*/ */
#include "GPS_L2C.h" #include <gps_l2c_signal.h>
#include <stdlib.h> #include <stdlib.h>
#include <stdint.h> #include <stdint.h>
#include <cmath> #include <cmath>
@ -44,11 +44,11 @@ int32_t gps_l2c_m_shift(int32_t x)
void gps_l2c_m_code(int32_t * _dest, unsigned int _prn) void gps_l2c_m_code(int32_t * _dest, unsigned int _prn)
{ {
int32_t x; int32_t x;
x= GPS_L2C_M_INIT_REG[_prn-1]; x = GPS_L2C_M_INIT_REG[ _prn - 1];
for (int n=0; n<GPS_L2_M_CODE_LENGTH_CHIPS; n++) for (int n = 0; n < GPS_L2_M_CODE_LENGTH_CHIPS; n++)
{ {
_dest[n]=(int8_t)(x&1); _dest[n] = (int8_t)(x&1);
x= gps_l2c_m_shift(x); x = gps_l2c_m_shift(x);
} }
} }
@ -63,9 +63,9 @@ void gps_l2c_m_code_gen_complex(std::complex<float>* _dest, unsigned int _prn)
gps_l2c_m_code(_code, _prn); gps_l2c_m_code(_code, _prn);
} }
for (signed int i=0; i<GPS_L2_M_CODE_LENGTH_CHIPS; i++) for (signed int i = 0; i < GPS_L2_M_CODE_LENGTH_CHIPS; i++)
{ {
_dest[i] = std::complex<float>(1.0-2.0*_code[i],0); _dest[i] = std::complex<float>(1.0 - 2.0 * _code[i], 0);
} }
} }
@ -77,7 +77,7 @@ void gps_l2c_m_code_gen_complex_sampled(std::complex<float>* _dest, unsigned int
{ {
int32_t _code[GPS_L2_M_CODE_LENGTH_CHIPS]; int32_t _code[GPS_L2_M_CODE_LENGTH_CHIPS];
if (_prn>0 and _prn<51) if (_prn > 0 and _prn < 51)
{ {
gps_l2c_m_code(_code, _prn); gps_l2c_m_code(_code, _prn);
} }
@ -95,7 +95,9 @@ void gps_l2c_m_code_gen_complex_sampled(std::complex<float>* _dest, unsigned int
_ts = 1/(float)_fs; // Sampling period in sec _ts = 1/(float)_fs; // Sampling period in sec
_tc = 1/(float)_codeFreqBasis; // C/A chip period in sec _tc = 1/(float)_codeFreqBasis; // C/A chip period in sec
for (signed int i=0; i<_samplesPerCode; i++) float aux;
for (signed int i = 0; i < _samplesPerCode; i++)
{ {
//=== Digitizing ======================================================= //=== Digitizing =======================================================
@ -105,7 +107,9 @@ void gps_l2c_m_code_gen_complex_sampled(std::complex<float>* _dest, unsigned int
// millisecond). // millisecond).
//TODO: Check this formula! Seems to start with an extra sample //TODO: Check this formula! Seems to start with an extra sample
_codeValueIndex = ceil((_ts * ((float)i + 1)) / _tc) - 1; // _codeValueIndex = ceil((_ts * ((float)i + 1)) / _tc) - 1;
aux = (_ts * (i + 1)) / _tc;
_codeValueIndex = static_cast<int>(static_cast<long>(aux)) - 1;
//--- Make the digitized version of the C/A code ----------------------- //--- Make the digitized version of the C/A code -----------------------
// The "upsampled" code is made by selecting values form the CA code // The "upsampled" code is made by selecting values form the CA code
@ -113,12 +117,12 @@ void gps_l2c_m_code_gen_complex_sampled(std::complex<float>* _dest, unsigned int
if (i == _samplesPerCode - 1) if (i == _samplesPerCode - 1)
{ {
//--- Correct the last index (due to number rounding issues) ----------- //--- Correct the last index (due to number rounding issues) -----------
_dest[i] = std::complex<float>(1.0-2.0*_code[_codeLength - 1],0); _dest[i] = std::complex<float>(1.0 - 2.0 * _code[_codeLength - 1], 0);
} }
else else
{ {
_dest[i] = std::complex<float>(1.0-2.0*_code[_codeValueIndex],0);; //repeat the chip -> upsample _dest[i] = std::complex<float>(1.0 - 2.0 * _code[_codeValueIndex], 0);; //repeat the chip -> upsample
} }
} }
} }