;+
;
;  Name:
;       READ_DISCSP
;
;
; PURPOSE: read discspinuous data type from native format or fits files
;
;
; CATEGORY: data i/o
;       BATSE
;
; CALLING SEQUENCE: read_discsp, discsp=discsp, seconds=seconds, file=file, $
;		fits=fits, start_time=startt, end_time=endt
;
; CALLS TO:
;	read_fits, read_discsp_fits, read_dd, discsp_msfc_str,
;	fdr_msfc_str, audit_trail_str
;
; INPUTS:
;       file - data file
;	fits - if set, assumes fits file
; OPTIONAL:
;	start_time - start reading after this time (anytim readable)
;	end_time   - end reading before this time
;
; OUTPUTS:
;       discsp - spectroscopy discriminator data, fltarr(4,8,npackets), signed but raw
;	seconds - Center times for each packet, seconds since 79/1/1
;	
; RESTRICTIONS: 
;	Fits files cannot be read across network.  Readfits uses
;	the IDL EOF function.
;
; PROCEDURE:
;	For native format record oriented, uses READ_DD
;	For FITS uses READ_DISCSP_FITS
;
;
; MODIFICATION HISTORY: ras, 9 aug 93
;			ras, 1 Sep 93, added 1.024 second to non-fits accum.
;			ras, 29 Jun 1995, if msfc is in filename then its that format
;		        
;-

pro  read_discsp, discsp=discsp, seconds=seconds, file=file, fits=fits, $
	start_time=startt, end_time=endt
 
fname = strupcase(file)
break_file, fname, disk_log, dir, filnam, ext

if (strpos(fname,'FITS') ne -1 ) or keyword_set(fits)  then begin ;its a fits file

	data_str=read_discsp_fits( file(0), ut_str, discsp)
	discsp = float( discsp and 65535L)
	seconds = sc_seconds_ed(data_str.sctime) + 1.024
	return
endif


msfc = (strpos(ext, 'DISCSP') eq -1) or strpos(filnam+ext,'MSFC') ne -1
        ;if DISCSP not in extension, then native format unless msfc appears anywhere.

read_dd, seconds, discsp, file=file(0), startt=startt, endt=endt, msfc=msfc


return
end
