diff --git a/openrtx/include/calibration/calibUtils.h b/openrtx/include/calibration/calibUtils.h index 1e746ef1..c3ac5f0d 100644 --- a/openrtx/include/calibration/calibUtils.h +++ b/openrtx/include/calibration/calibUtils.h @@ -39,7 +39,7 @@ * and frequencies. * @return value for the calibration parameter at the given frequency point. */ -uint8_t interpCalParameter(freq_t freq, freq_t *calPoints, uint8_t *param, - uint8_t elems); +uint8_t interpCalParameter(const freq_t freq, const freq_t *calPoints, + const uint8_t *param, const uint8_t elems); #endif /* CALIB_UTILS_H */ diff --git a/openrtx/src/calibUtils.c b/openrtx/src/calibUtils.c index f9ce2083..7cf29dff 100644 --- a/openrtx/src/calibUtils.c +++ b/openrtx/src/calibUtils.c @@ -19,8 +19,8 @@ #include -uint8_t interpCalParameter(freq_t freq, freq_t *calPoints, uint8_t *param, - uint8_t elems) +uint8_t interpCalParameter(const freq_t freq, const freq_t *calPoints, + const uint8_t *param, const uint8_t elems) { if(freq <= calPoints[0]) return param[0]; diff --git a/platform/drivers/NVM/nvmem_MD3x0.c b/platform/drivers/NVM/nvmem_MD3x0.c index 308f5f7f..e5793608 100644 --- a/platform/drivers/NVM/nvmem_MD3x0.c +++ b/platform/drivers/NVM/nvmem_MD3x0.c @@ -179,10 +179,15 @@ void nvm_readCalibData(void *buf) (void) extFlash_readSecurityRegister(0x20b0, ((uint8_t *) &freqs), 72); extFlash_sleep(); + /* + * Ugly quirk: frequency stored in calibration data is divided by ten, so, + * after bcd2bin conversion we have something like 40'135'000. To ajdust + * things, frequency has to be multiplied by ten. + */ for(uint8_t i = 0; i < 9; i++) { - calib->rxFreq[i] = ((freq_t) _bcd2bin(freqs[2*i])); - calib->txFreq[i] = ((freq_t) _bcd2bin(freqs[2*i+1])); + calib->rxFreq[i] = ((freq_t) _bcd2bin(freqs[2*i])) * 10; + calib->txFreq[i] = ((freq_t) _bcd2bin(freqs[2*i+1])) * 10; } }