pro update_dpe, index, new_dpe, qstop=qstop ; ; dpe_use_mask = [1,1,0,1,0,1,1,1,1,intarr(28)+0] ;1=yes, 0=no dpe2mbe = [0,1,0,2,1,4,5,6,7,indgen(28)+2] ; expres_arr = [intarr(5)+0, intarr(9)+1, intarr(11)+2, $ intarr(5)+3, 3, intarr(19)+2, intarr(14)+3] expres_msec_arr = [0.0016, 0.0512, 1.638, 52.429] ;number of millisec ;per "tick" in expdur if (new_dpe gt 36) or (new_dpe lt 0) then begin print, 'UPDATE_DPE: New DPE value must be between 0 and 36 inclusive' print, 'Returning... return end ; ;---- Fix up the filter a issue ; qmask = dpe_use_mask(new_dpe) if (qmask) then begin v = index.sxt.periph ;v = fix(v/16)*16 + 6 ;set using mask, preserve the higher bits v = fix(v/8)*8 + 6 ;set using mask, preserve the higher bits - changed 7-Feb-95 index.sxt.periph = v end else begin ss = where(gt_filta(index) eq 6) if (ss(0) ne -1) then begin v = index(ss).sxt.periph ;v = fix(v/16)*16 + 1 ;clear using mask, preserve the higher bits v = fix(v/8)*8 + 1 ;clear using mask, preserve the higher bits - changed 7-Feb-95 index(ss).sxt.periph = v end end ; ;---- Fix up the DPE value ; v = index.sxt.explevmode v = fix(v/64)*64 + dpe2mbe(new_dpe) index.sxt.explevmode = v ; ;---- Fix up the measured exposure ; explev0 = dpe2mbe(new_dpe) ;mbe value expres = expres_arr(explev0) ;exposure resolution expdur0 = gt_dpe(new_dpe,/conv) ;new exposure in milliseconds ticks = expdur0 / expres_msec_arr(expres) index.sxt.expdur = ticks ; ;---- If there is a history portion, then update that part if (his_exist(index)) then begin index.his.expdur = gt_dpe(new_dpe,/conv) end ; if (keyword_set(qstop)) then stop end