diff --git a/agc.c b/agc.c index 88b9905..e5a957f 100755 --- a/agc.c +++ b/agc.c @@ -7,11 +7,11 @@ // AGC // Scalar version // -------------------------------------------------------------- -void AGC_Init(agc_t *pObj, uint32_t windowLength, radio_float_t w_init) +void AGC_Init(agc_t *pObj, uint32_t windowLength, radio_float_t w_min, radio_float_t w_max) { - pObj->w = w_init; - pObj->w_max = 4; - pObj->w_min = 0; + pObj->w = 1; + pObj->w_min = w_min; + pObj->w_max = w_max; SlidingMinMaxInit(&pObj->slMax, windowLength, (radio_float_t)1E12, 1); } @@ -20,6 +20,11 @@ void AGC_Free(agc_t *pObj) SlidingMinMaxFree(&pObj->slMax); } +void AGC_reset(agc_t *pObj, radio_float_t w_init) +{ + pObj->w = w_init; +} + void AGC_Process(agc_t *pObj, radio_float_t x, radio_float_t mu, radio_float_t target) { radio_float_t d2; diff --git a/agc.h b/agc.h index cc97ad4..bea8ad3 100755 --- a/agc.h +++ b/agc.h @@ -26,8 +26,9 @@ extern "C" { // AGC // -------------------------------------------------------------- // Scalar version -void AGC_Init(agc_t *pObj, uint32_t windowLength, radio_float_t w_init); +void AGC_Init(agc_t *pObj, uint32_t windowLength, radio_float_t w_min, radio_float_t w_max); void AGC_Free(agc_t *pObj); +void AGC_reset(agc_t *pObj, radio_float_t w_init); void AGC_Train(agc_t *pObj, radio_float_t e, radio_float_t mu); void AGC_Process(agc_t *pObj, radio_float_t x, radio_float_t mu, radio_float_t target); radio_float_t AGC_GetWeight(agc_t *pObj);