;+
; Project     : SOLAR-B - EIS
;
; Name        : EIS_CPT_CHECK_ENGINEERING_PARAMETERS
;
; Purpose     : Checks various engineering parameters valid.
;
; Explanation : Checks :
;                 - CAM readout parameters
;                 - XRT flare parameters
;                 - EIS flare parameters
;                 - mechanism direction
;                 - bakeout_parameters
;
; Use         : < result = eis_cpt_check_engineering_parameters ( engineering_parameters) >
;
; Inputs      : engineering_parameters : STRUCTURE of type EIS_engineering_parameters.
;
; Opt. Inputs : None.
;
; Outputs     : result   : status flag
;                       0 : if checks failed.
;                       1 : checks OK.
;
; Opt. Outputs: None.
;
; Keywords    : None.
;
; Calls       : None.
;
; Common      : None.
;
; Restrictions: None.
;
; Side effects: None.
;
; Category    : EIS_CPT.
;
; Prev. Hist. : None.
;
; Written     : Martin Carter RAL 13/04/05
;
; Modified    : Version 0.0, 13/04/05, MKC
;               Version 0.1, 22/06/05, MKC
;                 Added more checks.
;               Version 0.2, 12/09/05, MKC
;                 Added checks on bakeout parameters.
;               Version 0.3, 19/06/06, MKC
;                 Added check that engineering parameters are defined.
;               Version 0.4, 06/10/11, MKC
;                 Changed error message call.
;
; Version     : 0.4, 06/10/11
;-
;**********************************************************

FUNCTION eis_cpt_check_engineering_parameters, engineering_parameters

  ; check engineering parameters present

  IF NOT KEYWORD_SET(engineering_parameters) THEN MESSAGE, 'IMPLEMENTATION ERROR, ENGINEERING PARAMETERS NOT AVAILABLE'

  ; check CAM readout parameters

  IF NOT eis_cpt_check_cam_readout_parameters(engineering_parameters.CAM_readout_parameters) THEN BEGIN

    eis_cpt_message, 'INVALID CAM READOUT PARAMETERS'

    GOTO, error

  ENDIF

  ; check XRT flare parameters

  IF NOT eis_cpt_check_xrt_flare_parameters(engineering_parameters.XRT_flare_parameters) THEN BEGIN

    eis_cpt_message, 'INVALID XRT FLARE PARAMETERS'

    GOTO, error

  ENDIF

  ; check EIS flare parameters

  IF NOT eis_cpt_check_eis_flare_parameters(engineering_parameters.EIS_flare_parameters) THEN BEGIN

    eis_cpt_message, 'INVALID EIS FLARE PARAMETERS'

    GOTO, error

  ENDIF

  ; check slit/slot direction in range

  IF engineering_parameters.mechanism_control.slit_direction NE -1 AND $
     engineering_parameters.mechanism_control.slit_direction NE  1 THEN BEGIN

    eis_cpt_message, 'INVALID MECHANISM CONTROL PARAMETER : SLIT_SLOT_AUTO DIRECTION '

    GOTO, error

  ENDIF

  ; check EIS bakeout parameters

  IF NOT eis_cpt_check_bakeout_parameters(engineering_parameters.bakeout_parameters) THEN BEGIN

    eis_cpt_message, 'INVALID BAKEOUT PARAMETERS'

    GOTO, error

  ENDIF

  ; return OK flag

  RETURN, 1

error :

  ; issue routine name

  MESSAGE, 'ERROR', /INFORMATIONAL

  ; return error flag

  RETURN, 0

END





