bpm_get_frame_data_c

	status.i4.v = bpm_get_frame_data_c(detector.ch.d, type.i4.v,
					   start_frame.i4.v, max_frames.i4.v,
					   readout_spec.s.r, positions.r4a.r,
					   intensities.r4a.r,
					   detector_status.i1a.r,
					   num_frames.i4.r,
					   timestamps.u4a.r, nanoseconds.u4a.r,
					   metadata.g.v)

	This routine retrieves BPM frame by frame data 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.

	detector	ASCII detector name (DEVICE_NAME_LEN characters)
	type		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))
	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
					 BPM_TEVATRON_READOUT_SPEC,
			 BPM_TEV_DEVL -> structure of type
					 BPM_TEVATRON_READOUT_SPEC,
			 BPM_MAIN_INJECTOR -> structure of type
					      BPM_MI_READOUT_SPEC,
			 BPM_MI_DEVL -> structure of type BPM_MI_READOUT_SPEC,
			 BPM_RECYCLER -> structure of type
					 BPM_RECYCLER_READOUT_SPEC)
	positions	returned frame by frame position values in mm
	intensities	returned frame by frame intensity values
	detector_status	returned frame by frame detector status values
			(BPM_OK -> successful read,
			 BPM_INVALID -> invalid data,
			 BPM_ERROR -> error reading data)
	num_frames	returned number of valid frames
	timestamps	returned timestamps in clinks when the data was taken
	nanoseconds	returned fractional seconds in nanoseconds
			when the data was taken
	metadata	returned metadata structure
			(BPM_TEVATRON -> structure of type
					 BPM_TEVATRON_METADATA,
			 BPM_TEV_DEVL -> structure of type
					 BPM_TEVATRON_METADATA,
			 BPM_MAIN_INJECTOR -> structure of type
					      BPM_MI_METADATA,
			 BPM_MI_DEVL -> structure of type BPM_MI_METADATA,
			 BPM_RECYCLER -> structure of type
					 BPM_RECYCLER_METADATA)

	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:

	bpm_machine_c, bpm_get_names, bpm_query, bpm_name_to_index_c,
	bpm_get_data_c, bpm_get_locations, bpm_get_tbt_data_c,
	blm_get_frame_data_c, blm_get_frame_list_data_c

	C/C++ usage:

	static const char	detector[DEVICE_NAME_LEN+1] = "I:HP100";
	char	detector_status[MAX_FRAMES];
	int	status;
	int	type = BPM_PROFILE;
	int	start_frame = 1;
	int	max_frames = MAX_FRAMES;
	int	num_frames;
	unsigned int	timestamps[MAX_FRAMES];
	unsigned int	nanoseconds[MAX_FRAMES];
	float	positions[MAX_FRAMES];
	float	intensities[MAX_FRAMES];
	void	*readout_spec = (void *) NULL;
	void	*metadata = (void *) NULL;

	status = bpm_get_frame_data_c(detector,type,start_frame,max_frames,
				      readout_spec,positions,inensities,
				      detector_status,&num_frames,
				      timestamps,nanoseconds,metadata);