;+ ;FUNCTION: get_fpc(t) ;INPUT: ; t: double, seconds since 1970. If this time is a vector than the ; routine will get all samples in between the two times in the ; vector ;KEYWORDS: ; advance: advance to the next data point ; index: select data by sample index instead of by time. ; times: if non-zero, return and array of data times ; corresponding to data samples. ;PURPOSE: returns a structure containing all data pertinent to a single ; correlator sample. See the file 3dp_help.doc for a more complete ; description of the structure. ; ;CREATED BY: Jonathan Loran ;LAST MODIFICATION: @(#)get_fpc.pro 1.4 01/29/98 ; ;NOTES: The procedure "load_3dp_data" must be ; called first. ;- function get_fpc,t,advance=adv, times=tms, index=idx @wind_com.pro dat = { $ time: 0D, $ index: 0L, $ select_by: 0, $ ; Change later when implementing index spinperiod: 0D, $ spin: 0L, $ E_steps: 0L, $ Bq_th: 0L, $ Bq_ph: 0L, $ Energy: 0., $ B_th: 0., $ B_ph: 0., $ code: 0L, $ valid: 0L, $ time_total: intarr(8), $ flags: intarr(8), $ sample_time:fltarr(128), $ total: fltarr(128,4), $ sin: fltarr(128,4), $ cos: fltarr(128,4), $ freq: fltarr(128), $ sint: fltarr(128), $ cost: fltarr(128), $ wave_ampl: fltarr(128), $ phi: fltarr(128,4), $ theta: fltarr(128,4) $ } size = n_tags(dat,/length) if (n_elements(idx) eq 0) and (n_elements(t) eq 0) and (not keyword_set(adv)) $ and (not keyword_set(tms)) then ctime,t if keyword_set(adv) then a=adv else a=0 if n_elements(idx) eq 0 then i=-1 else i=idx if n_elements(t) eq 0 then t=0.d options = long([size,a,i]) if n_elements(wind_lib) eq 0 then begin print, 'You must first load the data' return,0 endif ; get times if requested if keyword_set(tms) then begin num = call_external(wind_lib,'fpc_to_idl') if num eq 0 then return,0 options(0) = num times = dblarr(num) ok = call_external(wind_lib,'fpc_to_idl',options,times) print,ok+1,' FPC time samples' if ok lt 0 then return,0d else return,times(0:ok) endif time = gettime(t) if (n_elements(time) eq 1) then time=[time,time] ok=call_external(wind_lib,'fpc_to_idl',options,time,dat) return, dat end