This directory contains files for building a Ruby extension library
for Comedi.
Instructions for building by hand (you shouldn't need to do this):
1. Type 'ruby setup.rb config'. This configures for the local
environment.
2. Type 'ruby setup.rb setup'. This builds the extension library.
3. Type 'ruby setup.rb install'. This installs the extension
library and the file lib/comedi.rb, which provides more
Ruby-like method syntax.
The file 'lib/comedi.rb' provides syntactic sugar in four forms:
1. Method names without the 'comedi_' prefix. The Comedi module
disambiguates the namespace. For example, you can say
'dev = Comedi::open()' instead of 'dev = Comedi::comedi_open()'.
2. Instance methods that take an explicit receiver instead of
expecting the target object as an initial argument. For example:
'comedi_close(dev)' can be written as 'dev.close'.
3. A pre-defined IO object and an accessor method to simplify
reading from the file descriptor associated with the comedi device.
Data from comedi device 'dev' can be read by 'dev.ios.read'.
4. A ComediError exception class. If the underlying comedi
function returns an error indication, the ruby method will raise
ComediError. If the comedi function returns both a status and a
value (e.g., comedi_data_read), the status is not returned by the
ruby method unless it carries information in addition to indication
of failure (e.g., comedi_command_test).
5. Ruby booleans. Comedi functions that return C integer boolean values
(comedi_range_is_chan_specific, comedi_maxdata_is_chan_specific)
have corresponding boolean ruby methods with '?' appended to the
method name.
Files in 'demo' are straight ports of their C counterparts from the
Comedilib 'demo' directory. They illustrate the basics of programming
Comedi commands using Ruby.
For completeness, the set of method definitions invoked by 'comedi.rb'
is as follows:
# Module: Comedi
def open(*args)
value = comedi_open(*args)
raise ComediError.new if value.nil?
return value
end
# Module: Comedi
def parse_calibration_file(*args)
value = comedi_parse_calibration_file(*args)
raise ComediError.new if value.nil?
return value
end
# Module: Comedi
def loglevel(*args)
value = comedi_loglevel(*args)
return value
end
# Module: Comedi
def perror(*args)
value = comedi_perror(*args)
return value
end
# Module: Comedi
def strerrno(*args)
value = comedi_strerrno(*args)
return value
end
# Module: Comedi
def errno(*args)
value = comedi_errno(*args)
return value
end
# Module: Comedi
def to_phys(*args)
value = comedi_to_phys(*args)
return value
end
# Module: Comedi
def from_phys(*args)
value = comedi_from_phys(*args)
return value
end
# Module: Comedi
def set_global_oor_behavior(*args)
value = comedi_set_global_oor_behavior(*args)
return value
end
# Module: SWIG::TYPE_p_comedi_t
def close(*args)
value = comedi_close(self, *args)
raise ComediError.new if value == -1
return value
end
# Module: SWIG::TYPE_p_comedi_t
def fileno(*args)
value = comedi_fileno(self, *args)
raise ComediError.new if value == -1
return value
end
# Module: SWIG::TYPE_p_comedi_t
def get_subdevice_type(*args)
value = comedi_get_subdevice_type(self, *args)
raise ComediError.new if value == -1
return value
end
# Module: SWIG::TYPE_p_comedi_t
def find_subdevice_by_type(*args)
value = comedi_find_subdevice_by_type(self, *args)
raise ComediError.new if value == -1
return value
end
# Module: SWIG::TYPE_p_comedi_t
def get_read_subdevice(*args)
value = comedi_get_read_subdevice(self, *args)
raise ComediError.new if value == -1
return value
end
# Module: SWIG::TYPE_p_comedi_t
def get_write_device(*args)
value = comedi_get_write_device(self, *args)
raise ComediError.new if value == -1
return value
end
# Module: SWIG::TYPE_p_comedi_t
def get_subdevice_flags(*args)
value = comedi_get_subdevice_flags(self, *args)
raise ComediError.new if value == -1
return value
end
# Module: SWIG::TYPE_p_comedi_t
def get_n_channels(*args)
value = comedi_get_n_channels(self, *args)
raise ComediError.new if value == -1
return value
end
# Module: SWIG::TYPE_p_comedi_t
def range_is_chan_specific?(*args)
value = comedi_range_is_chan_specific(self, *args)
raise ComediError.new if value == -1
return ret == 1
end
# Module: SWIG::TYPE_p_comedi_t
def maxdata_is_chan_specific?(*args)
value = comedi_maxdata_is_chan_specific(self, *args)
raise ComediError.new if value == -1
return ret == 1
end
# Module: SWIG::TYPE_p_comedi_t
def get_n_ranges(*args)
value = comedi_get_n_ranges(self, *args)
raise ComediError.new if value == -1
return value
end
# Module: SWIG::TYPE_p_comedi_t
def find_range(*args)
value = comedi_find_range(self, *args)
raise ComediError.new if value == -1
return value
end
# Module: SWIG::TYPE_p_comedi_t
def get_buffer_size(*args)
value = comedi_get_buffer_size(self, *args)
raise ComediError.new if value == -1
return value
end
# Module: SWIG::TYPE_p_comedi_t
def get_max_buffer_size(*args)
value = comedi_get_max_buffer_size(self, *args)
raise ComediError.new if value == -1
return value
end
# Module: SWIG::TYPE_p_comedi_t
def set_buffer_size(*args)
value = comedi_set_buffer_size(self, *args)
raise ComediError.new if value == -1
return value
end
# Module: SWIG::TYPE_p_comedi_t
def trigger(*args)
value = comedi_trigger(self, *args)
raise ComediError.new if value == -1
return value
end
# Module: SWIG::TYPE_p_comedi_t
def do_insnlist(*args)
value = comedi_do_insnlist(self, *args)
raise ComediError.new if value == -1
return value
end
# Module: SWIG::TYPE_p_comedi_t
def do_insn(*args)
value = comedi_do_insn(self, *args)
raise ComediError.new if value == -1
return value
end
# Module: SWIG::TYPE_p_comedi_t
def lock(*args)
value = comedi_lock(self, *args)
raise ComediError.new if value == -1
return value
end
# Module: SWIG::TYPE_p_comedi_t
def unlock(*args)
value = comedi_unlock(self, *args)
raise ComediError.new if value == -1
return value
end
# Module: SWIG::TYPE_p_comedi_t
def data_read_hint(*args)
value = comedi_data_read_hint(self, *args)
raise ComediError.new if value == -1
return value
end
# Module: SWIG::TYPE_p_comedi_t
def data_write(*args)
value = comedi_data_write(self, *args)
raise ComediError.new if value == -1
return value
end
# Module: SWIG::TYPE_p_comedi_t
def dio_config(*args)
value = comedi_dio_config(self, *args)
raise ComediError.new if value == -1
return value
end
# Module: SWIG::TYPE_p_comedi_t
def dio_write(*args)
value = comedi_dio_write(self, *args)
raise ComediError.new if value == -1
return value
end
# Module: SWIG::TYPE_p_comedi_t
def cancel(*args)
value = comedi_cancel(self, *args)
raise ComediError.new if value == -1
return value
end
# Module: SWIG::TYPE_p_comedi_t
def command(*args)
value = comedi_command(self, *args)
raise ComediError.new if value == -1
return value
end
# Module: SWIG::TYPE_p_comedi_t
def poll(*args)
value = comedi_poll(self, *args)
raise ComediError.new if value == -1
return value
end
# Module: SWIG::TYPE_p_comedi_t
def set_max_buffer_size(*args)
value = comedi_set_max_buffer_size(self, *args)
raise ComediError.new if value == -1
return value
end
# Module: SWIG::TYPE_p_comedi_t
def get_buffer_contents(*args)
value = comedi_get_buffer_contents(self, *args)
raise ComediError.new if value == -1
return value
end
# Module: SWIG::TYPE_p_comedi_t
def mark_buffer_read(*args)
value = comedi_mark_buffer_read(self, *args)
raise ComediError.new if value == -1
return value
end
# Module: SWIG::TYPE_p_comedi_t
def get_buffer_offset(*args)
value = comedi_get_buffer_offset(self, *args)
raise ComediError.new if value == -1
return value
end
# Module: SWIG::TYPE_p_comedi_t
def data_read(*args)
status, value = comedi_data_read(self, *args)
raise ComediError.new if status == -1
return value
end
# Module: SWIG::TYPE_p_comedi_t
def data_read_delayed(*args)
status, value = comedi_data_read_delayed(self, *args)
raise ComediError.new if status == -1
return value
end
# Module: SWIG::TYPE_p_comedi_t
def dio_read(*args)
status, value = comedi_dio_read(self, *args)
raise ComediError.new if status == -1
return value
end
# Module: SWIG::TYPE_p_comedi_t
def dio_bitfield(*args)
status, value = comedi_dio_bitfield(self, *args)
raise ComediError.new if status == -1
return value
end
# Module: SWIG::TYPE_p_comedi_t
def get_cmd_src_mask(*args)
status, value = comedi_get_cmd_src_mask(self, *args)
raise ComediError.new if status == -1
return value
end
# Module: SWIG::TYPE_p_comedi_t
def get_cmd_generic_timed(*args)
status, value = comedi_get_cmd_generic_timed(self, *args)
raise ComediError.new if status == -1
return value
end
# Module: SWIG::TYPE_p_comedi_t
def command_test(*args)
status, value = comedi_command_test(self, *args)
raise ComediError.new if status == -1
return status, value
end
# Module: SWIG::TYPE_p_comedi_t
def get_maxdata(*args)
value = comedi_get_maxdata(self, *args)
raise ComediError.new if value == 0
return value
end
# Module: SWIG::TYPE_p_comedi_t
def apply_calibration(*args)
value = comedi_apply_calibration(self, *args)
raise ComediError.new if value < 0
return value
end
# Module: SWIG::TYPE_p_comedi_t
def apply_parsed_calibration(*args)
value = comedi_apply_parsed_calibration(self, *args)
raise ComediError.new if value < 0
return value
end
# Module: SWIG::TYPE_p_comedi_t
def get_driver_name(*args)
value = comedi_get_driver_name(self, *args)
raise ComediError.new if value.nil?
return value
end
# Module: SWIG::TYPE_p_comedi_t
def get_board_name(*args)
value = comedi_get_board_name(self, *args)
raise ComediError.new if value.nil?
return value
end
# Module: SWIG::TYPE_p_comedi_t
def get_range(*args)
value = comedi_get_range(self, *args)
raise ComediError.new if value.nil?
return value
end
# Module: SWIG::TYPE_p_comedi_t
def get_default_calibration_path(*args)
value = comedi_get_default_calibration_path(self, *args)
raise ComediError.new if value.nil?
return value
end
# Module: SWIG::TYPE_p_comedi_t
def get_n_subdevices(*args)
value = comedi_get_n_subdevices(self, *args)
return value
end
# Module: SWIG::TYPE_p_comedi_t
def get_version_code(*args)
value = comedi_get_version_code(self, *args)
return value
end
# Module: Comedi::Comedi_sv_t
def sv_init(*args)
value = comedi_sv_init(self, *args)
raise ComediError.new if value == -1
return value
end
# Module: Comedi::Comedi_sv_t
def sv_update(*args)
value = comedi_sv_update(self, *args)
raise ComediError.new if value == -1
return value
end
# Module: Comedi::Comedi_sv_t
def sv_measure(*args)
status, value = comedi_sv_measure(self, *args)
raise ComediError.new if status == -1
return value
end
# Module: Comedi::Comedi_calibration_t
def cleanup_calibration_file(*args)
value = comedi_cleanup_calibration_file(self, *args)
return value
end
Steven Jenkins
steven.jenkins@ieee.org
2004-03-02