intro_dio


	The DIO library is a family of routines designed to give the
	applications programmer relatively easy access to the
	"live" data contained in the accelerator datapool as well
	as much of the "static" data contained in the accelerator
	database.

	For example, one of the most basic tasks for an accelerator
	control program is to read the value of a device in engineering
	units.  This can be accomplished with a single call to the
	routine dio_get_dev(_c).  Previously, this would have required
	a minimum of seven calls which doesn't even include code to
	do things such as retry pending requests.

	As in the above example, all DIO routine names begin with
	"dio_".  Also, all single device readings or settings require
	only a single call by the application program.  Lists of devices
	are also handled by DIO, but they always require two calls
	from the application.  The first call sets up the list for
	later setting or retrieval of data and returns a list identification
	number.  The second call actually sends or receives the data
	using the list ID returned from the previous call.  Lists are
	limited in at least one respect in that all data from a given
	list is retrieved at the same frequency or on the same machine
	clock event.

	Another benefit of the DIO routines is that they can automatically
	log database and datapool errors during program debugging through
	the use of the 'dio_tuner' routine.  This routine allows you to
	enable or disable automatic logging of errors as well as adjust
	the retry period parameters used by the DIO routines for
	interfacing with the datapool and the database.

	There are separate DIO routines to send and receive raw data in
	addition to the routines that handle common engineering units.
	There are routines to send and receive alarm information, to
	read status, to perform basic control, to read extended text,
	to read family information, to read analog and digital alarm
	text, to read EMCs, to read save/restore information, to read
	device sibling data, to read device types, to read SSDNs, to
	read device data lengths, to read source nodes, to read device
	names, and to read device descriptive text.

	All arguments to the DIO routines are passed by reference (the
	FORTRAN default) except for routines with the suffix "_c".
	Some routines contain optional arguments as noted in their
	individual help entries.

	An important parameter to understand in dealing with data
	acquisition is the frequency time descriptor (FTD).  It is the
	value that tells the system how often or when to read/set the
	desired data.  There are a few special values for the FTD
	which are as follows (found in 'diolib' include file):

	    FTD_ONESHOT -> read data once
	    FTD_DEFAULT -> use default FTD in database
	    FTD_NOSHOT  -> setting only FTD
	    FTD_1HZ     -> read at 1 Hz
	    FTD_EVENT_MASK OR'ed with TCLK event value -> read on TCLK event

	Any positive FTD having a value of four or greater specifies
	a frequency in 60 Hz ticks.  Any negative value indicates
	that data I/O should occur at a Tevatron Clock (TCLK) event
	whose number is contained in the low order byte of the FTD.
	(Note: FTDs are always passed as two byte integers.)

	Another important value is the property index (PI).  This value
	indicates which piece of information from a given device is
	desired.  The correct property can only be selected if the user
	has knowledge about that particular type of device.  In other
	words, a given property can give you different kinds of information
	about different kinds of devices.  The defined constants for
	property indices are found in the 'dbprops' include file.
	(Note: PIs are always passed as two byte integers.)

	See also intro_td.

	These functions require the following include files:

	dbprops_h, diolib_h

	Related functions:

	dio_alarm_dnom(_c), dio_alarm_dnom_lst, dio_alarm_events(_c),
	dio_alarm_events_lst, dio_alarm_flags(_c), dio_alarm_flags_list,
	dio_alarm_limits(_c), dio_alarm_lim_lst, dio_alarm_tries(_c),
	dio_alarm_tries_lst, dio_analog_alarm_text(_c),
	dio_array_device_negative_c, dio_array_device_off_c,
	dio_array_device_on_c, dio_array_device_positive_c,
	dio_array_device_reset_c, dio_bld_alrm_lst, dio_bld_get(_c),
	dio_bld_get_raw(_c), dio_bld_set(_c), dio_bld_set_raw(_c),
	dio_build_get_array_list_c, dio_build_snapshot_list_c,
	dio_cancel_alarm(_c), dio_cancel_alarm_lst, dio_cancel_snapshot_list_c,
	dio_can_get(_c), dio_can_get_lst, dio_can_set(_c),
	dio_can_set_device_c, dio_can_set_lst, dio_can_snapshot_c,
	dio_change_ftd(_c), dio_change_ftd_lst(_c), dio_cntrl_dev(_c),
	dio_cntrl_lst, dio_data_len(_c), dio_dbquery_c, dio_default_ftd,
	dio_delete_all_emc_info, dio_delete_all_info, dio_delete_all_name_info,
	dio_delete_cache, dio_delete_info(_c), dio_delete_name_info_c,
	dio_delete_pdb, dio_delete_pdb_all, dio_delete_pdb_lst,
	dio_delete_requests_c, dio_desired_alarm_limit_type,
	dio_device_index(_c), dio_device_location_c, dio_device_ssdr(_c),
	dio_device_state_c, dio_device_type_c, dio_dev_emc, dio_dev_name(_c),
	dio_dev_node, dio_dev_ssdn(_c), dio_dev_text(_c), dio_dev_type,
	dio_digital_alarm_text(_c), dio_disable(_c), dio_disable_abort(_c),
	dio_disable_settings, dio_dis_abt_lst, dio_dis_lst, dio_dpreq_info,
	dio_emc_to_device_index, dio_emc_type_c, dio_enable(_c),
	dio_enable_abort(_c), dio_enable_settings, dio_ena_abt_lst, dio_ena_lst,
	dio_event_control(_c), dio_event_control_list_c, dio_extrema(_c),
	dio_ext_text(_c), dio_family, dio_family_info(_c), dio_find_name_c,
	dio_flush, dio_get_alarm(_c), dio_get_alrm_lst, dio_get_array_device_c,
	dio_get_db_alarm(_c), dio_get_dev(_c), dio_get_directed_list,
	dio_get_directed_list_raw_c, dio_get_last_setting,
	dio_get_last_setting_raw, dio_get_lst, dio_get_lst_raw(_c),
	dio_get_oneshot_ftd, dio_get_pdb, dio_get_properties,
	dio_get_raw(_c), dio_get_retry, dio_get_snapshot_list_c,
	dio_get_status_array_device_c, dio_get_timer_ref, dio_has_property_c,
	dio_has_property_list_c, dio_insert_pdb_lst, dio_insert_reqlst,
	dio_is_abort(_c), dio_is_abrt_inh(_c), dio_is_abtinh_lst,
	dio_is_abt_lst, dio_is_broken_c, dio_is_bypas(_c), dio_is_byp_lst,
	dio_is_controlled_set_c, dio_is_controlled_set_list,
	dio_is_display_dec(_c), dio_is_display_short(_c), dio_is_family,
	dio_is_good(_c), dio_is_good_lst, dio_is_on(_c), dio_is_on_lst,
	dio_is_positive(_c), dio_is_pos_lst, dio_is_rdy_lst, dio_is_ready(_c),
	dio_is_remote(_c), dio_is_rem_lst, dio_is_setting_enabled,
	dio_is_step_motor, dio_madc_location_c, dio_madc_number_c,
	dio_move_step_motor, dio_name_to_index, dio_negative, dio_neg_lst,
	dio_node, dio_off, dio_off_lst, dio_on, dio_on_lst, dio_pdb_ctl,
	dio_pdb_sts, dio_positive, dio_pos_lst, dio_primary_to_scaled_data_c,
	dio_protection_mask_c, dio_query_tuner, dio_raw_data_type,
	dio_raw_to_scaled_custom_c, dio_raw_to_scaled_data(_c),
	dio_raw_to_status_c, dio_raw_to_status_text, dio_raw_to_value_text_c,
	dio_rearm_snapshot_list_c, dio_reset, dio_restore_last_setting,
	dio_rst_lst, dio_salarm_dnom(_c), dio_salarm_dnom_lst,
	dio_salarm_lim(_c), dio_salarm_lim_lst, dio_save_info,
	dio_scaled_to_raw_data(_c), dio_scaled_to_value_text_c, dio_scaling,
	dio_scaling_len(_c), dio_scaling_length_list_c, dio_scaling_text(_c),
	dio_set_abort_inh_lst, dio_set_alarm_flags_c, dio_set_array_device_c,
	dio_set_broken_c, dio_set_bypass_lst, dio_set_dev(_c),
	dio_set_for_read(_c), dio_set_hash_table_size_c, dio_set_lst,
	dio_set_lst_raw(_c), dio_set_raw(_c), dio_set_step_motor,
	dio_set_timer_ref, dio_siblings, dio_simulate, dio_simulate_query,
	dio_status(_c), dio_sts_lst, dio_sts_txt(_c), dio_sts_txt_lst,
	dio_tuner(_c), dio_value_text_c, dio_virtual_machine_info_c,
	dio_wildcard_build, dio_wildcard_cancel, dio_wildcard_read,
	mio_cancel, mio_control, mio_fill_status, mio_read, mio_select_pool,
	mio_set, read_packeted_data_c, read_packeted_device_c, td_build(_c),
	td_cancel, td_query, td_read, td_read_one(_c), td_set(_c),
	td_set_one(_c)