;+
; Project     : SOHO - CDS     
;                   
; Name        : TP_CHK_RAST()
;               
; Purpose     : Check feasibility of fundamental raster parameters.
;               
; Explanation : First approximation to checks on the fundamental raster
;               parameters.  ie is the scan area sensible for mechanisms
;               and for the slit requested.  Further tests to be added.
;               
; Use         : IDL> status = tp_chk_raster(tp_obs [,errmsg=errmsg,$
;                                                    warnmsg=warnmsg)
;    
; Inputs      : tp_obs - TPLAN internal-type structure
;               
; Opt. Inputs : None
;               
; Outputs     : Function returns 1 if raster considered OK or 0 if not.
;               (See also keywords)
;               
; Opt. Outputs: None
;               
; Keywords    : errmsg  - if defined on entry then will return with any error
;                         message
;               warnmsg - if defined on entry then will return with any
;                         warning messages.
;
; Calls       : None
;
; Common      : None
;               
; Restrictions: None
;               
; Side effects: None
;               
; Category    : Technical, planning
;               
; Prev. Hist. : None
;
; Written     : C D Pike, RAL, 14-Oct-94
;               
; Modified    : Eliminate check on raster description.  CDP, 18-Oct-95
;
; Version     : Version 2, 18-Oct-95
;-            

function tp_chk_raster, tp_obs, errmsg=errmsg, warnmsg=warnmsg

;
;  for convenience pick out fundamental raster definition
;
ras = tp_obs.raster_p

;
;  slit matches instrument?
;
if (ras.slit_num gt 2) and (ras.detector eq 'G') then begin
   if n_elements(warnmsg) gt 0 then begin
      warnmsg = 'Unlikely slit for GIS detector'
   endif
endif



;
;  check mechanism ranges
;
if ras.xstep * (ras.nx-1) gt 240 then begin
   if n_elements(errmsg) gt 0 then begin
      errmsg = 'Mirror scan range requested is too large'
      tp_obs.raster_v.usable = 'N'
      return, 0
   endif
endif

if ras.ystep * (ras.ny-1) gt 240 then begin
   if n_elements(errmsg) gt 0 then begin
      errmsg = 'Slit scan range requested is too large'
      tp_obs.raster_v.usable = 'N'
      return, 0
   endif
endif

;
;  has a purpose?
;
;if strtrim(ras.ras_desc,2) eq '' then begin
;   if n_elements(warnmsg) gt 0 then begin
;      warnmsg = warnmsg + ' No description for this raster.'
;   endif
;endif

;
;  OK return
;
tp_obs.raster_v.usable = 'Y'
return,1

end



