;+
; Project     :	SOHO - CDS
;
; Name        :	DO_GSET_INIT
;
; Purpose     :	Writes out initial GSET commands to series table.
;
; Explanation :	Extracts the GIS LUT parameters from the GSET database and 
;               writes out the commands to set up the GIS lookup tables to a series table.
;
; Use         : <do_gset_init, gsetid>
;
; Inputs      : gsetid = integer giving GSET ID for database
;
; Opt. Inputs : None.
;
; Outputs     : Writes initial GSET commands to series file. 
;
; Opt. Outputs:	None.
;
; Keywords    : None.
;
; Calls       :	get_gset, do_gset_lut_series, macro_wait, fileout.
;                
; Common      :	None.
;
; Restrictions:	None.
;
; Side effects:	None.
;
; Category    :	Command preparation.
;
; Prev. Hist. :	Created from do_previous.
;
; Written     :	Version 0.0, Martin Carter, RAL, 12/12/95
;
; Modified    :	0.1, 14/12/95
;                    Added reverse study processing.
;               0.2, 2/1/96
;                    Added gset.inuse tag.
;               0.3, MKC, 8/1/96
;                 Added errmsg to gset call.
;               0.4, 16/1/96
;                 Changed LUT delay to 340 seconds.
;                 Added macro_wait.
;               0.5, 31/1/96
;                 GSET database modified.
;               0.6, 23/2/96
;                 Split lut load commands into separate routine.
;               0.7, 4/10/96
;                 Moved LLD set up from do_gset_on.
;
; Version     :	Version 0.7, 4/10/96
;-
;**********************************************************

PRO do_gset_init, gsetid

    ; get GSET database entry

    errmsg = ''

    get_gset, gsetid, gset, ERRMSG=errmsg

    IF errmsg NE '' THEN MESSAGE, errmsg
    
    ; check lookup table parameters are bytes

    IF MAX(ABS(gset.lut_par)) GT 255 THEN MESSAGE, 'INVALID GSET LUT PARAMETERS'

    ; set up flags indicating if each detector used

    inuse = gset.det_used

    ; set lookup tables

    fileout, '# Set up GIS look up tables'
    fileout, ''

    IF inuse(0) THEN do_gset_lut_series, gset.lut_par(0,*)

    IF inuse(1) THEN do_gset_lut_series, gset.lut_par(1,*)

    IF inuse(2) THEN do_gset_lut_series, gset.lut_par(2,*)

    IF inuse(3) THEN do_gset_lut_series, gset.lut_par(3,*)

    ; set up low level discriminators 

    fileout, '# Set up LLDs for GIS detectors' 
    fileout, ''  

    IF inuse(0) THEN BEGIN

      ; detector 1

      fileout, words=3, 'CB5SIC' + '          # set up low level discriminator for detector 1' 
      fileout, 'CBGD1LLT ' + shorthex(gset.lld(0)) 
      fileout, 'TERMINATE'
      fileout, ''
      macro_wait, 1000
      fileout, ''  

    ENDIF

    IF inuse(1) THEN BEGIN

      ; detector 2

      fileout, words=3, 'CB5SIC' + '          # set up low level discriminator for detector 2' 
      fileout, 'CBGD2LLT ' + shorthex(gset.lld(1)) 
      fileout, 'TERMINATE'
      fileout, ''
      macro_wait, 1000
      fileout, ''  

    ENDIF

    IF inuse(2) THEN BEGIN

      ; detector 3

      fileout, words=3, 'CB5SIC' + '          # set up low level discriminator for detector 3' 
      fileout, 'CBGD3LLT ' + shorthex(gset.lld(2)) 
      fileout, 'TERMINATE'
      fileout, ''
      macro_wait, 1000
      fileout, ''  

    ENDIF

    IF inuse(3) THEN BEGIN

      ; detector 4

      fileout, words=3, 'CB5SIC' + '          # set up low level discriminator for detector 4' 
      fileout, 'CBGD4LLT ' + shorthex(gset.lld(3)) 
      fileout, 'TERMINATE'
      fileout, ''
      macro_wait, 1000
      fileout, ''  

    ENDIF

END

