;+
; Project     : SOHO - CDS     
;                   
; Name        : EMON_MAIN_HTRS
;               
; Purpose     : To extract and plot the main heaters data from Eng B pkts.
;               
; Explanation : As above as an example of how to package EMON in batch mode.
;               
; Use         : IDL> emon_main_htrs [,doy, hours, heaters=heaters, 
;                                             year=year, /hard, /rt]
;
;               eg.  emon_main_htrs,244,[13,14],heat=[1,4,15],year=94,/hard
;
;                    would plot data for heaters 1,4,15 for the 2 hrs
;                    13:00 to 15:00 on 1/Sep/94
;
;                    emon_main_htrs,/rt
;
;                    would plot data for all heaters from current realtime
;                    session.
;    
; Inputs      : One of DOY or /rt must be supplied.
;               
; Opt. Inputs : DOY   - day of year for file name.  Only one day at a time is
;                       allowed.
;
;               HOUR  - scalar or vector giving the UT hours required (as in
;                       file names). If not realtime and not given then 0-23
;                       is assumed.
;         
;               
; Outputs     : None
;               
; Opt. Outputs: None
;               
; Keywords    : HEATERS - specify which heater data are required. Several
;                         conventions.... (default equals ALL ie 0-15 inc.)
;                         [1,6]   means 1 to 6 inc. (ie 2 values in order)
;                         [6,1]   means only 1 and 6
;                         [1,2,3] means 1,2 and 3
;
;               YEAR    - specify the year IF NOT current year.
;
;               HARD    - if want hard copy of plots.
;
;               RT      - if want to pick up only current realtime session.
;
;
; Calls       :
;
; Common      : None
;               
; Restrictions: Data files must be in $CDS_TM_DATA directory.
;               
; Side effects: None
;               
; Category    : Util, telemetry
;               
; Prev. Hist. : None
;
; Written     : C D Pike, RAL, 9-Jan-95
;               
; Modified    : Change UTPLOT name.  CDP, 2-Oct-96
;
; Version     : Version 2, 2-Oct-96
;-            

pro emon_main_htrs, doy, hour, heaters=heaters, year=year, $
                               hard=hard, rt=rt

;
;  check input
;
if n_params() eq 0 then begin
   if not keyword_set(rt) then begin
      print,'Use:  IDL> emon_main_heaters, [doy, hour, heaters=heaters,'
      print,'                               /hard, /rt]'
      print,' '
      print,'NB either doy OR /rt must be set.'
      print,' ' 
      return
   endif
endif

;
;  either old file or current realtime
;
if n_params() eq 1 and keyword_set(rt) then begin
   print,'Cannot specify doy AND /rt.'
   return
endif

;
;  only one day allowed
;
if n_elements(doy) gt 1 then begin
   print,'Only one day at a time please!'
   return
endif

;
;  if want realtime session...
;
if keyword_set(rt) then begin
   tmfiles = concat_dir('$CDS_TM_DATA',gt_rt_file())
endif else begin

;
;  else select old TM files
;

;
;  format day number
;
   cday = strmid(string(doy+1000,form='(i4)'),1,3)

;
;  if not current year...
;
   if keyword_set(year) then begin
      if year gt 1000 then yr = year - 1900 else yr = year
      yr = string(yr,form='(i2)')
   endif else begin
      yr = strmid(systime(),22,2)
   endelse

;
;  depending on how many hours requested, form file names
;
   if n_params() eq 1 then hour = indgen(24)
   nf = n_elements(hour)
   tmfiles = strarr(nf)
   for i=0,nf-1 do begin
      chr = strmid(string(hour(i)+100,form='(i3)'),1,2)
      fdum = 'tm.'+yr+'_'+cday+'_'+chr
      tmfiles(i) = concat_dir('$CDS_TM_DATA',fdum)
   endfor
endelse

print,'Using data files.....'
print_str,tmfiles

;
;  which heaters to be monitored?
;
if keyword_set(heaters) then begin
   if n_elements(heaters) eq 2 then begin
      if heaters(0) gt heaters(1) then begin
         htrs = [heaters(1),heaters(0)]
      endif else begin
         htrs = indgen(heaters(1)-heaters(0)+1)+heaters(0)
      endelse
   endif else begin
      htrs = heaters
   endelse
endif else begin
   htrs = indgen(16)
endelse

;
;  form parameter names;
;
pnames = strarr(n_elements(htrs))
for i=0,n_elements(htrs)-1 do begin
   pnames(i) = 'BSMMHT'+string(htrs(i))
   temp = pnames(i)
   remchar,temp,' '
   pnames(i) = temp
endfor

print,'Heaters to be monitored are:'
print_str,pnames


;
;  call emon to do the work
;
emon,ut_data,parm_data,parms,fname=tmfiles,pname=pnames,/batch

;
;  trap error return
;
if ut_data(0) eq 0 then return

;
;  hard copy wanted?
;
if keyword_set(hard) then hard = 1 else hard = 0

;
;  extract, calibrate and plot each parameter
;
nw = n_elements(pnames)
for i=0,nw-1 do begin
   window,xs=1000,ys=250,/free, $
          title='CDS Engineering telemetry monitor'
   name = pnames(i)
   it = where(parms eq name) & it = it(0)
   circle_sym, /fill
   title = 'Engineering '+strmid(name,0,1)+': parameter - '+name
;
;  better sort in case of funnies
;
   utt = utc2sec(str2utc(ut_data,/dmy))
   nutt = sort(utt)
   uts = ut_data(nutt)
   pds = parm_data(it,nutt)
;
;  attempt to calibrate the data
;
   pds = tm_calib(name,pds,words)

;
;  set up fancy axis labels
;
   case words(0) of
      'title':  begin
                   yt = strtrim(words(1),2)
                   yr=ext_range(pds,100)
                   cds_utplot, uts, pds, /dmy, psym=8, title=title, $
                           symsize=0.3, ytitle=yt,yrange=yr,chars=1.2
                   if hard then begin
                      ps
                      cds_utplot, uts, pds, /dmy, psym=8, title=title, $
                              symsize=0.3,ytitle=yt,yrange=yr,chars=1.2
                      psplot
                   endif
                end
   
  'Uncalibrated': begin            
                   yt = strtrim(words(1),2)+' (Error)'
                   yr=ext_range(pds,100)
                   cds_utplot, uts, pds, /dmy, psym=8, title=title, $
                           symsize=0.3, ytitle=yt,yrange=yr,chars=1.2
                   if hard then begin
                      ps
                      cds_utplot, uts, pds, /dmy, psym=8, title=title, $
                              symsize=0.3,ytitle=yt,yrange=yr,chars=1.2
                      psplot
                   endif
                end
   
         else:  begin
                   yt = strtrim(words(2),2)
                   yr = [-1,2]
                   ytn=[' ',words(0),words(1),' '] 
                   cds_utplot, uts, pds, /dmy, psym=8, title=title, $
                           symsize=0.3, ytitle=yt,yrange=yr,$
                           ytickname=ytn,chars=1.2
                   if hard then begin
                      ps
                      cds_utplot, uts, pds, /dmy, psym=8, title=title, $
                              symsize=0.3,ytitle=yt,yrange=yr,$
                              ytickname=ytn,chars=1.2
                      psplot
                   endif
                end
   endcase
endfor


end
