;+
; Project     : SOLAR-B - EIS
;
; Name        : EIS_CPT_FILE_NAME
;
; Purpose     : Returns file names for different files produces by eis_cpt.
;
; Explanation : Includes directory from environment variable.
;
; Use         : < file = eis_cpt_file_name(filetype,index,STAMP=stamp) >
;
; Inputs      : filetype   : STRING indicating file
;                  'MSSL'    : creating MSSL file output
;                  'INTEL'   : creating INTEL hex file output
;                  'ORL' etc
;
; Opt. Inputs : index  : INT index
;
; Outputs     : file   : STRING file name
;
; Opt. Outputs: None.
;
; Keywords    : STAMP             : STRING stamp for file
;               INTERNAL          : FLAG indicating that outputting to INTERNAL directory.
;               LATEST            : FLAG indicating that outputting to LATEST   directory.
;               SEQUENCE          : FLAG indicating that processing a sequence.
;               LINELIST          : FLAG indicating that processing a linelist
;               AEC_EXPOSURE      : FLAG indicating that processing an AEC exposure table
;               AEC_TABLE         : FLAG indicating that processing an AEC control table
;               XRT_FLARE         : FLAG indicating that processing an XRT flare trigger  control table
;               EIS_FLARE         : FLAG indicating that processing an EIS flare trigger  control table
;               EIS_EVENT         : FLAG indicating that processing an EIS event trigger  control table
;
; Calls       : None.
;
; Common      : None.
;
; Restrictions: None.
;
; Side effects: None.
;
; Category    : EIS_CPT.
;
; Prev. Hist. : None.
;
; Written     : Martin Carter RAL 21/10/04
;
; Modified    : Version 0.1, 15/11/04, MKC
;                 Added warning if environment variable not set.
;               Version 0.2, 11/03/05, MKC
;                 Changed to single routine for all EIS_CPT files.
;                 Put in correct Jside file names.
;               Version 0.3, 02/04/05, MKC
;                 Added optional index argument and table files.
;                 Added keyword qualifiers.
;               Version 0.4, 11/05/05, MKC
;                 Added NAME keyword and ENGINEERING filetype.
;               Version 0.5, 20/06/05, MKC
;                 Changed MSSL and INTEL file names.
;               Version 0.6, 28/06/05, MKC
;                 Used eis cpt uinttomssl.
;                 Removed ISACS filetype.
;                 Rearranged processing.
;               Version 0.7, 14/07/05, MKC
;                 Removed ENGINEERING filetype.
;               Version 0.8, 16/09/05, MKC
;                 Changed filenames.
;                 Removed NAME keyword.
;                 Changed 'DV' type to 'DATARATE'
;               Version 0.9, 29/09/05, MKC
;                 Replaced REAL, OP, SEQEXEC files with ORL file.
;               Version 1.0, 08/10/05, MKC
;                 Changed data rate file to '.txt' filetype.
;               Version 1.1, 06/06/06, MKC
;                 Used eis cpt environment instead of environment variable.
;               Version 1.2, 03/10/06, MKC
;                 Changed TIMESTAMP keyword to STAMP.
;               Version 1.3, 01/07/08, MKC
;                 Added INTERNAL keyword.
;                 Changed so that if directory blank then returns blank file.
;               Version 1.4, 01/10/08, MKC
;                 Added LATEST keyword.
;                 Used separate INTERNAL_OBS and INTERNAL_MAP directories.
;               Version 1.5, 05/05/11, MKC
;                 Added stamp to MSSL and INTEL filenames.
;
; Version     : 1.5, 05/05/11
;-
;**********************************************************

FUNCTION eis_cpt_file_name, filetype, index, STAMP=stamp, INTERNAL=internal, LATEST=latest, SEQUENCE=sequence, LINELIST=linelist, $
                         AEC_EXPOSURE=aec_exposure, AEC_TABLE=aec_table, $
                         XRT_FLARE=xrt_flare, EIS_FLARE=eis_flare, $
                         EIS_EVENT=eis_event

  ; check if MSSL or INTEL files

  IF filetype EQ 'MSSL' OR filetype EQ 'INTEL' THEN BEGIN

    ; get file name part for ASCII outputs

    IF KEYWORD_SET(sequence)     THEN filename = 'seq' + eis_cpt_uinttomssl(index) ELSE $
    IF KEYWORD_SET(linelist)     THEN filename = 'll' + eis_cpt_uinttomssl(index)  ELSE $
    IF KEYWORD_SET(aec_exposure) THEN filename = 'aex'  ELSE $
    IF KEYWORD_SET(aec_table)    THEN filename = 'aet'  ELSE $
    IF KEYWORD_SET(xrt_flare)    THEN filename = 'xfl'  ELSE $
    IF KEYWORD_SET(eis_flare)    THEN filename = 'efl'  ELSE $
    IF KEYWORD_SET(eis_event)    THEN filename = 'eev' ELSE $
      MESSAGE, 'IMPLEMENTATION ERROR'

    ; add stamp
    ; NB MSSL system can't use extended file name but if no stamp given then OK

    IF KEYWORD_SET(stamp) THEN filename = stamp+'_'+filename

    IF filetype EQ 'MSSL' THEN directory = eis_cpt_environment(/MSSL) ELSE directory = eis_cpt_environment(/INTEL)

  ENDIF ELSE BEGIN

    ; add stamp to end of file name

    IF NOT KEYWORD_SET(stamp) THEN istamp= '' ELSE istamp = '_'+stamp

    ; get directory for file

    IF KEYWORD_SET(latest) THEN BEGIN

      directory = eis_cpt_environment(/LATEST)

    ENDIF ELSE IF KEYWORD_SET(internal) THEN BEGIN

      ; check file type

      CASE filetype OF

        'OBSTBL'     : directory = eis_cpt_environment(/INTERNAL_OBS)

        'OBSTBL_MAP' : directory = eis_cpt_environment(/INTERNAL_MAP)

        ELSE : MESSAGE, 'IMPLEMENTATION ERROR'

      ENDCASE

    ENDIF ELSE BEGIN

      ; check file type

      CASE filetype OF

        'ORL'        : directory = eis_cpt_environment(/ORL)

        'DATARATE'   : directory = eis_cpt_environment(/RATE)

        'OBSTBL'     : directory = eis_cpt_environment(/OBSTBL)

        'OBSTBL_MAP' : directory = eis_cpt_environment(/MAP)

        ELSE : MESSAGE, 'IMPLEMENTATION ERROR'

      ENDCASE

    ENDELSE

    ; get file name

    CASE filetype OF

      'ORL'        : filename = 'EIS'+istamp+'.orl'

      'DATARATE'   : filename = 'EIS_DATA_RATE'+istamp+'.txt'

      'OBSTBL'     : filename = 'EIS_OBSTBL'+istamp+'.hex'  ; NB .hex extension must be lower case

      'OBSTBL_MAP' : filename = 'OBSTBL'+istamp+'.map'

      ELSE : MESSAGE, 'IMPLEMENTATION ERROR'

    ENDCASE

  ENDELSE

  ; get file

  IF KEYWORD_SET(directory) THEN file = concat_dir ( directory, filename) ELSE file=''

  ; return file name

  RETURN, file

END





