;+
;PROCEDURE:   swe_pad_timing
;PURPOSE:
;  Disassembles A2 packets and sorts data in time sequence.
;
;USAGE:
;  swe_pad_timing
;
;INPUTS:
;
;KEYWORDS:
;       TRANGE:       Time range for processing, in any format
;                     accepted by time_double().
;
; $LastChangedBy: dmitchell $
; $LastChangedDate: 2014-10-31 14:15:03 -0700 (Fri, 31 Oct 2014) $
; $LastChangedRevision: 16106 $
; $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_3_2/projects/maven/swea/swe_pad_timing.pro $
;
;CREATED BY:    David L. Mitchell  06-25-13
;FILE: swe_pad_timing.pro
;-
pro swe_pad_timing, trange=trange

  @mvn_swe_com

  if (size(a2,/type) eq 8) then begin

    if keyword_set(trange) then begin
      tmin = min(time_double(trange),max=tmax)
      tndx = where((a2.time ge tmin) and (a2.time le tmax), npkt)
      j0 = min(tndx)
      j1 = max(tndx)
    endif else begin
      npkt = n_elements(a2)
      j0 = 0L
      j1 = npkt - 1L
    endelse

    n_e = swe_ne[a2[j0:j1].group]
    nspec = long(total(n_e,/integer))

    ptime = dblarr(nspec)
    pdat = fltarr(nspec,16)

    tvec = dindgen(448)*(1.95D/448D)
    tsam0 = dblarr(64)
    tsam1 = dblarr(32)
    tsam2 = dblarr(16)

    for j=0,63 do tsam0[j] = total(tvec[(j*7+1):(j*7+6)])/6D
    for j=0,31 do tsam1[j] = total(tsam0[(2*j):(2*j+1)])/2D
    for j=0,15 do tsam2[j] = total(tsam1[(2*j):(2*j+1)])/2D

    k = 0L
    for j=j0,j1 do begin
      case (a2[j].group) of
        0 : begin
              ptime[k:(k+63)] = a2[j].time + tsam0
              pdat[k:(k+63),*] = transpose(a2[j].data)
              k = k + 64L
            end

        1 : begin
              ptime[k:(k+31)] = a2[j].time + tsam1
              pdat[k:(k+31),*] = transpose(a2[j].data[*,0:31])
              k = k + 32L
            end

        2 : begin
              ptime[k:(k+15)] = a2[j].time + tsam2
              pdat[k:(k+15),*] = transpose(a2[j].data[*,0:15])
              k = k + 16L
            end
      endcase
    endfor
  
    store_data,'pdat_svy',data={x:ptime, y:pdat, v:findgen(16)}
    options,'pdat_svy','ytitle','Pad Svy Timing'
    options,'pdat_svy','psym',1
    ylim,'pdat_svy',-10,300,0

  endif else print,"No A2 data to process."

  if (size(a3,/type) eq 8) then begin

    if keyword_set(trange) then begin
      tmin = min(time_double(trange),max=tmax)
      tndx = where((a3.time ge tmin) and (a3.time le tmax), npkt)
      j0 = min(tndx)
      j1 = max(tndx)
    endif else begin
      npkt = n_elements(a3)
      j0 = 0L
      j1 = npkt - 1L
    endelse

    n_e = swe_ne[a3[j0:j1].group]
    nspec = long(total(n_e,/integer))

    ptime = dblarr(nspec)
    pdat = fltarr(nspec,16)

    tvec = dindgen(448)*(1.95D/448D)
    tsam0 = dblarr(64)
    tsam1 = dblarr(32)
    tsam2 = dblarr(16)

    for j=0,63 do tsam0[j] = total(tvec[(j*7+1):(j*7+6)])/6D
    for j=0,31 do tsam1[j] = total(tsam0[(2*j):(2*j+1)])/2D
    for j=0,15 do tsam2[j] = total(tsam1[(2*j):(2*j+1)])/2D

    k = 0L
    for j=j0,j1 do begin
      case (a3[j].group) of
        0 : begin
              ptime[k:(k+63)] = a3[j].time + tsam0
              pdat[k:(k+63),*] = transpose(a3[j].data)
              k = k + 64L
            end

        1 : begin
              ptime[k:(k+31)] = a3[j].time + tsam1
              pdat[k:(k+31),*] = transpose(a3[j].data[*,0:31])
              k = k + 32L
            end

        2 : begin
              ptime[k:(k+15)] = a3[j].time + tsam2
              pdat[k:(k+15),*] = transpose(a3[j].data[*,0:15])
              k = k + 16L
            end
      endcase
    endfor
  
    store_data,'pdat_arc',data={x:ptime, y:pdat, v:findgen(16)}
    options,'pdat_arc','ytitle','Pad Arc Timing'
    options,'pdat_arc','psym',1
    ylim,'pdat_arc',-10,300,0

  endif else print,"No A3 data to process."

  return

end
