blm_get_file_frame_data_c

	status.i4.v = blm_get_file_frame_data_c(file.i4.v, detector.i1a.r,
						start_frame.i4.v,
						max_frames.i4.v,
						readout_spec.g.v,
						losses.r4a.r,
						loss_status.i1a.r,
						num_frames.i4.r
						[,frame_type.i4.r]
						[,timestamps.u4a.r]
						[,nanoseconds.u4a.r]
						[,file_title.i1p.r]
						[,metadata.g.v])

	This routine retrieves BLM frame by frame data from a file
	for a detector for the machine last requested by a call to
	bpm_machine_c.  A value of NULL can be passed for any
	returned arguments whose values are not needed.

	file		destired file number
	detector	ASCII detector name (DEVICE_NAME_LEN characters)
	start_frame	starting frame number (starts at 1)
	max_frames	maximum number of frames to return
	readout_spec	readout specification
			(BPM_TEVATRON -> structure of type
					 BLM_TEVATRON_READOUT_SPEC,
			 BPM_TEV_DEVL -> structure of type
					 BLM_TEVATRON_READOUT_SPEC,
			 BPM_MAIN_INJECTOR -> structure of type
					      BLM_MI_READOUT_SPEC,
			 BPM_MI_DEVL -> structure of type BLM_MI_READOUT_SPEC,
			 BPM_RECYCLER -> structure of type
					 BLM_RECYCLER_READOUT_SPEC)
	losses		returned frame by loss values in rads/sec
	loss_status	returned frame by frame loss status
			(BPM_OK -> successful read,
			 BPM_INVALID -> invalid data,
			 BPM_ERROR -> error reading data,
			 BPM_NO_DATA -> data not found in file)
	num_frames	returned number of valid frames
	[frame_type]	returned type of BPM frame
			(BPM_SNAPSHOT -> snapshot frame,
			 BPM_SLOW_SNAPSHOT -> slow snapshot frame
					      (Tevatron only),
			 BPM_PROFILE -> profile frame,
			 BPM_USER_FRAME -> user triggered closed orbit frame
					   (Tevatron only))
			(default is NULL)
	[timestamps]	returned timestamps in clinks when the data was taken
			(default is NULL)
	[nanoseconds]	returned fractional seconds in nanoseconds
			when the data was taken
			(default is NULL)
	[file_title]	returned pointer to null-terminated file name
			(default is NULL)
	[metadata]	returned metadata structure
			(BPM_TEVATRON -> structure of type
					 BLM_TEVATRON_METADATA,
			 BPM_TEV_DEVL -> structure of type
					 BLM_TEVATRON_METADATA,
			 BPM_MAIN_INJECTOR -> structure of type
					      BLM_MI_METADATA,
			 BPM_MI_DEVL -> structure of type BLM_MI_METADATA,
			 BPM_RECYCLER -> structure of type
					 BLM_RECYCLER_METADATA)
			(default is NULL)

	This function returns ACNET status values as follows:

	OK			success
	CBS_NOTYET		not supported for the currently selected
				machine
	CBS_INVARG		invalid detector requested
	CBS_NODAT		no frames are available
	CBS_CORRUPT		raw data from BPM is corrupt
	otherwise		DIO error

	This function requires the following include files:

	ul_cbsaux/bpmuti.h, acnet_errors_h

	Related functions:

	blm_get_frame_data_c, bpm_machine_c, blm_get_names, blm_query,
	blm_name_to_index_c, blm_get_data_c, blm_get_locations,
	blm_get_tbt_data_c, bpm_get_file_frame_data_c, bpm_get_frame_data_c

	C/C++ usage:

	static const char	detector[DEVICE_NAME_LEN+1] = "I:LM100";
	char	loss_status[MAX_FRAMES];
	char	*file_title;
	int	status;
	int	file = FILE_NUMBER;
	int	start_frame = 1;
	int	max_frames = MAX_FRAMES;
	int	num_frames;
	int	frame_type;
	unsigned int	timestamps[MAX_FRAMES];
	unsigned int	nanoseconds[MAX_FRAMES];
	float	losses[MAX_FRAMES];
	void	*readout_spec = (void *) NULL;
	void	*metadata = (void *) NULL;

	status = blm_get_file_frame_data_c(file,detector,start_frame,max_frames,
					   readout_spec,losses,loss_status,
					   &num_frames,&frame_type,timestamps,
					   nanoseconds,&file_title,metadata);