Skip to content

Commit cd8950d

Browse files
committed
add temporary upgrade code for storing / loading twap
1 parent 0b65cd4 commit cd8950d

File tree

1 file changed

+14
-5
lines changed

1 file changed

+14
-5
lines changed

program/src/oracle/upd_aggregate.h

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,8 @@ static pc_qset_t *qset_new( int expo )
8181
}
8282

8383
static void upd_ema(
84-
pc_ema_t *ptr, pd_t *val, pd_t *conf, int64_t nslot, pc_qset_t *qs)
84+
pc_ema_t *ptr, pd_t *val, pd_t *conf, int64_t nslot, pc_qset_t *qs
85+
, pc_price_t *prc_ptr)
8586
{
8687
pd_t numer[1], denom[1], cwgt[1], wval[1], decay[1], diff[1], one[1];
8788
pd_new( one, 100000000L, -8 );
@@ -102,8 +103,15 @@ static void upd_ema(
102103
pd_add( decay, decay, one, qs->fact_ );
103104

104105
// compute numer/denom and new value from decay factor
105-
pd_load( numer, ptr->numer_ );
106-
pd_load( denom, ptr->denom_ );
106+
if ( prc_ptr->drv1_ ) {
107+
pd_load( numer, ptr->numer_ );
108+
pd_load( denom, ptr->denom_ );
109+
}
110+
else {
111+
/* temporary upgrade code */
112+
pd_new_scale( numer, ptr->numer_, PD_EMA_EXPO );
113+
pd_new_scale( denom, ptr->denom_, PD_EMA_EXPO );
114+
}
107115
pd_mul( numer, numer, decay );
108116
pd_mul( wval, val, cwgt );
109117
pd_add( numer, numer, wval, qs->fact_ );
@@ -117,6 +125,7 @@ static void upd_ema(
117125
ptr->val_ = val->v_;
118126
pd_store( &ptr->numer_, numer );
119127
pd_store( &ptr->denom_, denom );
128+
prc_ptr->drv1_ = 1;
120129
}
121130

122131
static inline void upd_twap(
@@ -125,8 +134,8 @@ static inline void upd_twap(
125134
pd_t px[1], conf[1];
126135
pd_new_scale( px, ptr->agg_.price_, ptr->expo_ );
127136
pd_new_scale( conf, ( int64_t )( ptr->agg_.conf_ ), ptr->expo_ );
128-
upd_ema( &ptr->twap_, px, conf, nslots, qs );
129-
upd_ema( &ptr->twac_, conf, conf, nslots, qs );
137+
upd_ema( &ptr->twap_, px, conf, nslots, qs, ptr );
138+
upd_ema( &ptr->twac_, conf, conf, nslots, qs, ptr );
130139
}
131140

132141
// compute weighted percentile

0 commit comments

Comments
 (0)