From f95982adc944d955b2658d435b08c65529534546 Mon Sep 17 00:00:00 2001 From: Lucas Russo <lerwys@gmail.com> Date: Tue, 26 Apr 2016 17:10:54 -0300 Subject: [PATCH] sm_io/chips/*: add new si57x get_freq () --- include/sm_ch_si57x.h | 2 ++ src/sm_io/chips/sm_ch_si57x.c | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/include/sm_ch_si57x.h b/include/sm_ch_si57x.h index d65cdbf3..9d8bd798 100644 --- a/include/sm_ch_si57x.h +++ b/include/sm_ch_si57x.h @@ -41,6 +41,8 @@ smch_err_e smch_si57x_get_defaults (smch_si57x_t *self, double fout); /* Setup new frequency */ smch_err_e smch_si57x_set_freq (smch_si57x_t *self, double frequency); +/* Get current frequency */ +smch_err_e smch_si57x_get_freq (smch_si57x_t *self, double *freq); #ifdef __cplusplus } diff --git a/src/sm_io/chips/sm_ch_si57x.c b/src/sm_io/chips/sm_ch_si57x.c index bd86e404..2bea03fb 100644 --- a/src/sm_io/chips/sm_ch_si57x.c +++ b/src/sm_io/chips/sm_ch_si57x.c @@ -200,6 +200,24 @@ err_exit: return err; } +smch_err_e smch_si57x_get_freq (smch_si57x_t *self, double *freq) +{ + assert (self); + assert (freq); + smch_err_e err = SMCH_SUCCESS; + double frequency = 0; + + DBE_DEBUG (DBG_SM_CH | DBG_LVL_TRACE, "[sm_ch:si57x_set_freq] Getting current " + "frequency\n"); + + /* rfreq is usually a large value. So we divide it first */ + frequency = (double) self->rfreq / (self->hs_div * self->n1); + frequency *= self->fxtal; + + *freq = frequency; + return err; +} + /***************** Static functions *****************/ static smch_err_e _smch_si57x_write_8 (smch_si57x_t *self, uint8_t addr, -- GitLab