ffi-gphoto2 0.4.1 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/.rspec +2 -1
 - data/Rakefile +2 -0
 - data/examples/intervalometer.rb +9 -7
 - data/examples/list_config.rb +3 -5
 - data/examples/live_view.rb +6 -12
 - data/examples/record_movie.rb +10 -13
 - data/ffi-gphoto2.gemspec +2 -1
 - data/lib/ffi/gphoto2_port.rb +2 -2
 - data/lib/gphoto2/camera/capture.rb +59 -0
 - data/lib/gphoto2/camera/configuration.rb +136 -0
 - data/lib/gphoto2/camera/event.rb +56 -0
 - data/lib/gphoto2/camera/filesystem.rb +44 -0
 - data/lib/gphoto2/camera.rb +95 -166
 - data/lib/gphoto2/camera_abilities.rb +6 -6
 - data/lib/gphoto2/camera_abilities_list.rb +7 -6
 - data/lib/gphoto2/camera_event.rb +1 -8
 - data/lib/gphoto2/camera_file.rb +15 -5
 - data/lib/gphoto2/camera_file_path.rb +3 -5
 - data/lib/gphoto2/camera_folder.rb +11 -0
 - data/lib/gphoto2/camera_list.rb +3 -10
 - data/lib/gphoto2/camera_widgets/camera_widget.rb +27 -14
 - data/lib/gphoto2/camera_widgets/radio_camera_widget.rb +1 -0
 - data/lib/gphoto2/camera_widgets/range_camera_widget.rb +1 -0
 - data/lib/gphoto2/context.rb +2 -6
 - data/lib/gphoto2/entry.rb +2 -0
 - data/lib/gphoto2/port_info.rb +8 -6
 - data/lib/gphoto2/port_info_list.rb +5 -6
 - data/lib/gphoto2/port_result.rb +2 -0
 - data/lib/gphoto2/struct.rb +11 -0
 - data/lib/gphoto2/version.rb +1 -1
 - data/lib/gphoto2.rb +13 -0
 - data/spec/gphoto2/camera_abilities_list_spec.rb +5 -5
 - data/spec/gphoto2/camera_abilities_spec.rb +7 -7
 - data/spec/gphoto2/camera_file_path_spec.rb +2 -2
 - data/spec/gphoto2/camera_file_spec.rb +7 -7
 - data/spec/gphoto2/camera_folder_spec.rb +3 -3
 - data/spec/gphoto2/camera_list_spec.rb +3 -3
 - data/spec/gphoto2/camera_spec.rb +37 -272
 - data/spec/gphoto2/camera_widgets/date_camera_widget_spec.rb +1 -1
 - data/spec/gphoto2/camera_widgets/radio_camera_widget_spec.rb +4 -4
 - data/spec/gphoto2/camera_widgets/range_camera_widget_spec.rb +2 -2
 - data/spec/gphoto2/camera_widgets/text_camera_widget_spec.rb +1 -1
 - data/spec/gphoto2/camera_widgets/toggle_camera_widget_spec.rb +2 -2
 - data/spec/gphoto2/context_spec.rb +1 -1
 - data/spec/gphoto2/entry_spec.rb +2 -2
 - data/spec/gphoto2/port_info_list_spec.rb +4 -4
 - data/spec/gphoto2/port_info_spec.rb +9 -10
 - data/spec/spec_helper.rb +0 -7
 - data/spec/support/shared_examples/camera/capture_examples.rb +41 -0
 - data/spec/support/shared_examples/camera/configuration_examples.rb +161 -0
 - data/spec/support/shared_examples/camera/event_examples.rb +39 -0
 - data/spec/support/shared_examples/camera/filesystem_examples.rb +46 -0
 - data/spec/support/shared_examples/camera_widget_examples.rb +13 -13
 - metadata +32 -4
 
| 
         @@ -1,21 +1,19 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module GPhoto2
         
     | 
| 
       2 
2 
     | 
    
         
             
              class CameraFilePath
         
     | 
| 
       3 
     | 
    
         
            -
                 
     | 
| 
      
 3 
     | 
    
         
            +
                include GPhoto2::Struct
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
                def initialize(ptr = nil)
         
     | 
| 
       6 
6 
     | 
    
         
             
                  @ptr = ptr || FFI::GPhoto2::CameraFilePath.new
         
     | 
| 
       7 
7 
     | 
    
         
             
                end
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
      
 9 
     | 
    
         
            +
                # @return [String]
         
     | 
| 
       9 
10 
     | 
    
         
             
                def name
         
     | 
| 
       10 
11 
     | 
    
         
             
                  ptr[:name].to_s
         
     | 
| 
       11 
12 
     | 
    
         
             
                end
         
     | 
| 
       12 
13 
     | 
    
         | 
| 
      
 14 
     | 
    
         
            +
                # @return [String]
         
     | 
| 
       13 
15 
     | 
    
         
             
                def folder
         
     | 
| 
       14 
16 
     | 
    
         
             
                  ptr[:folder].to_s
         
     | 
| 
       15 
17 
     | 
    
         
             
                end
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
                def to_ptr
         
     | 
| 
       18 
     | 
    
         
            -
                  @ptr
         
     | 
| 
       19 
     | 
    
         
            -
                end
         
     | 
| 
       20 
18 
     | 
    
         
             
              end
         
     | 
| 
       21 
19 
     | 
    
         
             
            end
         
     | 
| 
         @@ -2,6 +2,7 @@ module GPhoto2 
     | 
|
| 
       2 
2 
     | 
    
         
             
              class CameraFolder
         
     | 
| 
       3 
3 
     | 
    
         
             
                include FFI::GPhoto2
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
      
 5 
     | 
    
         
            +
                # @return [String]
         
     | 
| 
       5 
6 
     | 
    
         
             
                attr_reader :path
         
     | 
| 
       6 
7 
     | 
    
         | 
| 
       7 
8 
     | 
    
         
             
                def initialize(camera, path = '/')
         
     | 
| 
         @@ -9,10 +10,12 @@ module GPhoto2 
     | 
|
| 
       9 
10 
     | 
    
         
             
                  @path = path
         
     | 
| 
       10 
11 
     | 
    
         
             
                end
         
     | 
| 
       11 
12 
     | 
    
         | 
| 
      
 13 
     | 
    
         
            +
                # @return [Boolean]
         
     | 
| 
       12 
14 
     | 
    
         
             
                def root?
         
     | 
| 
       13 
15 
     | 
    
         
             
                  @path == '/'
         
     | 
| 
       14 
16 
     | 
    
         
             
                end
         
     | 
| 
       15 
17 
     | 
    
         | 
| 
      
 18 
     | 
    
         
            +
                # @return [String]
         
     | 
| 
       16 
19 
     | 
    
         
             
                def name
         
     | 
| 
       17 
20 
     | 
    
         
             
                  if root?
         
     | 
| 
       18 
21 
     | 
    
         
             
                    '/'
         
     | 
| 
         @@ -21,14 +24,18 @@ module GPhoto2 
     | 
|
| 
       21 
24 
     | 
    
         
             
                  end
         
     | 
| 
       22 
25 
     | 
    
         
             
                end
         
     | 
| 
       23 
26 
     | 
    
         | 
| 
      
 27 
     | 
    
         
            +
                # @return [Array<GPhoto2::CameraFolder>]
         
     | 
| 
       24 
28 
     | 
    
         
             
                def folders
         
     | 
| 
       25 
29 
     | 
    
         
             
                  folder_list_folders
         
     | 
| 
       26 
30 
     | 
    
         
             
                end
         
     | 
| 
       27 
31 
     | 
    
         | 
| 
      
 32 
     | 
    
         
            +
                # @return [Array<GPhoto2::CameraFile>]
         
     | 
| 
       28 
33 
     | 
    
         
             
                def files
         
     | 
| 
       29 
34 
     | 
    
         
             
                  folder_list_files
         
     | 
| 
       30 
35 
     | 
    
         
             
                end
         
     | 
| 
       31 
36 
     | 
    
         | 
| 
      
 37 
     | 
    
         
            +
                # @param [String] name the name of the directory
         
     | 
| 
      
 38 
     | 
    
         
            +
                # @return [GPhoto2::CameraFolder]
         
     | 
| 
       32 
39 
     | 
    
         
             
                def cd(name)
         
     | 
| 
       33 
40 
     | 
    
         
             
                  case name
         
     | 
| 
       34 
41 
     | 
    
         
             
                  when '.'
         
     | 
| 
         @@ -41,10 +48,13 @@ module GPhoto2 
     | 
|
| 
       41 
48 
     | 
    
         
             
                end
         
     | 
| 
       42 
49 
     | 
    
         
             
                alias_method :/, :cd
         
     | 
| 
       43 
50 
     | 
    
         | 
| 
      
 51 
     | 
    
         
            +
                # @param [String] name the filename of the file to open
         
     | 
| 
      
 52 
     | 
    
         
            +
                # @return [GPhoto2::CameraFile]
         
     | 
| 
       44 
53 
     | 
    
         
             
                def open(name)
         
     | 
| 
       45 
54 
     | 
    
         
             
                  CameraFile.new(@camera, @path, name)
         
     | 
| 
       46 
55 
     | 
    
         
             
                end
         
     | 
| 
       47 
56 
     | 
    
         | 
| 
      
 57 
     | 
    
         
            +
                # @return [GPhoto2::CameraFolder]
         
     | 
| 
       48 
58 
     | 
    
         
             
                def up
         
     | 
| 
       49 
59 
     | 
    
         
             
                  if root?
         
     | 
| 
       50 
60 
     | 
    
         
             
                    self
         
     | 
| 
         @@ -55,6 +65,7 @@ module GPhoto2 
     | 
|
| 
       55 
65 
     | 
    
         
             
                  end
         
     | 
| 
       56 
66 
     | 
    
         
             
                end
         
     | 
| 
       57 
67 
     | 
    
         | 
| 
      
 68 
     | 
    
         
            +
                # @return [String]
         
     | 
| 
       58 
69 
     | 
    
         
             
                def to_s
         
     | 
| 
       59 
70 
     | 
    
         
             
                  name
         
     | 
| 
       60 
71 
     | 
    
         
             
                end
         
     | 
    
        data/lib/gphoto2/camera_list.rb
    CHANGED
    
    | 
         @@ -1,30 +1,23 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module GPhoto2
         
     | 
| 
       2 
2 
     | 
    
         
             
              class CameraList
         
     | 
| 
       3 
3 
     | 
    
         
             
                include FFI::GPhoto2
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
                attr_reader :ptr
         
     | 
| 
      
 4 
     | 
    
         
            +
                include GPhoto2::Struct
         
     | 
| 
       6 
5 
     | 
    
         | 
| 
       7 
6 
     | 
    
         
             
                def initialize
         
     | 
| 
       8 
7 
     | 
    
         
             
                  new
         
     | 
| 
       9 
8 
     | 
    
         
             
                end
         
     | 
| 
       10 
9 
     | 
    
         | 
| 
       11 
     | 
    
         
            -
                 
     | 
| 
       12 
     | 
    
         
            -
                  free
         
     | 
| 
       13 
     | 
    
         
            -
                end
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
      
 10 
     | 
    
         
            +
                # @return [Integer]
         
     | 
| 
       15 
11 
     | 
    
         
             
                def size
         
     | 
| 
       16 
12 
     | 
    
         
             
                  count
         
     | 
| 
       17 
13 
     | 
    
         
             
                end
         
     | 
| 
       18 
14 
     | 
    
         
             
                alias_method :length, :size
         
     | 
| 
       19 
15 
     | 
    
         | 
| 
      
 16 
     | 
    
         
            +
                # @return [Array<GPhoto2::Entry>]
         
     | 
| 
       20 
17 
     | 
    
         
             
                def to_a
         
     | 
| 
       21 
18 
     | 
    
         
             
                  size.times.map { |i| Entry.new(self, i) }
         
     | 
| 
       22 
19 
     | 
    
         
             
                end
         
     | 
| 
       23 
20 
     | 
    
         | 
| 
       24 
     | 
    
         
            -
                def to_ptr
         
     | 
| 
       25 
     | 
    
         
            -
                  @ptr
         
     | 
| 
       26 
     | 
    
         
            -
                end
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
21 
     | 
    
         
             
                private
         
     | 
| 
       29 
22 
     | 
    
         | 
| 
       30 
23 
     | 
    
         
             
                def new
         
     | 
| 
         @@ -1,9 +1,11 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module GPhoto2
         
     | 
| 
      
 2 
     | 
    
         
            +
              # @abstract
         
     | 
| 
       2 
3 
     | 
    
         
             
              class CameraWidget
         
     | 
| 
       3 
4 
     | 
    
         
             
                include FFI::GPhoto2
         
     | 
| 
      
 5 
     | 
    
         
            +
                include GPhoto2::Struct
         
     | 
| 
       4 
6 
     | 
    
         | 
| 
       5 
     | 
    
         
            -
                 
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
      
 7 
     | 
    
         
            +
                # @param [FFI::GPhoto2::CameraWidget] ptr
         
     | 
| 
      
 8 
     | 
    
         
            +
                # @param [GPhoto2::CameraWidget] parent
         
     | 
| 
       7 
9 
     | 
    
         
             
                def self.factory(ptr, parent = nil)
         
     | 
| 
       8 
10 
     | 
    
         
             
                  # ptr fields are supposed to be private, but we ignore that here
         
     | 
| 
       9 
11 
     | 
    
         
             
                  type = ptr[:type].to_s.split('_').last.capitalize
         
     | 
| 
         @@ -11,41 +13,52 @@ module GPhoto2 
     | 
|
| 
       11 
13 
     | 
    
         
             
                  klass.new(ptr, parent)
         
     | 
| 
       12 
14 
     | 
    
         
             
                end
         
     | 
| 
       13 
15 
     | 
    
         | 
| 
      
 16 
     | 
    
         
            +
                # @param [FFI::GPhoto2::CameraWidget] ptr
         
     | 
| 
      
 17 
     | 
    
         
            +
                # @param [GPhoto2::CameraWidget] parent
         
     | 
| 
       14 
18 
     | 
    
         
             
                def initialize(ptr, parent = nil)
         
     | 
| 
       15 
19 
     | 
    
         
             
                  @ptr = ptr
         
     | 
| 
       16 
20 
     | 
    
         
             
                  @parent = parent
         
     | 
| 
       17 
21 
     | 
    
         
             
                end
         
     | 
| 
       18 
22 
     | 
    
         | 
| 
      
 23 
     | 
    
         
            +
                # @return [void]
         
     | 
| 
       19 
24 
     | 
    
         
             
                def finalize
         
     | 
| 
       20 
25 
     | 
    
         
             
                  free
         
     | 
| 
       21 
26 
     | 
    
         
             
                end
         
     | 
| 
       22 
27 
     | 
    
         
             
                alias_method :close, :finalize
         
     | 
| 
       23 
28 
     | 
    
         | 
| 
      
 29 
     | 
    
         
            +
                # @return [String]
         
     | 
| 
       24 
30 
     | 
    
         
             
                def label
         
     | 
| 
       25 
31 
     | 
    
         
             
                  get_label
         
     | 
| 
       26 
32 
     | 
    
         
             
                end
         
     | 
| 
       27 
33 
     | 
    
         | 
| 
      
 34 
     | 
    
         
            +
                # @return [String]
         
     | 
| 
       28 
35 
     | 
    
         
             
                def name
         
     | 
| 
       29 
36 
     | 
    
         
             
                  get_name
         
     | 
| 
       30 
37 
     | 
    
         
             
                end
         
     | 
| 
       31 
38 
     | 
    
         | 
| 
      
 39 
     | 
    
         
            +
                # @return [Object]
         
     | 
| 
       32 
40 
     | 
    
         
             
                def value
         
     | 
| 
       33 
41 
     | 
    
         
             
                  get_value
         
     | 
| 
       34 
42 
     | 
    
         
             
                end
         
     | 
| 
       35 
43 
     | 
    
         | 
| 
      
 44 
     | 
    
         
            +
                # @return [Object]
         
     | 
| 
       36 
45 
     | 
    
         
             
                def value=(value)
         
     | 
| 
       37 
46 
     | 
    
         
             
                  set_value(value)
         
     | 
| 
       38 
47 
     | 
    
         
             
                  value
         
     | 
| 
       39 
48 
     | 
    
         
             
                end
         
     | 
| 
       40 
49 
     | 
    
         | 
| 
      
 50 
     | 
    
         
            +
                # @return [CameraWidgetType]
         
     | 
| 
       41 
51 
     | 
    
         
             
                def type
         
     | 
| 
       42 
52 
     | 
    
         
             
                  get_type
         
     | 
| 
       43 
53 
     | 
    
         
             
                end
         
     | 
| 
       44 
54 
     | 
    
         | 
| 
      
 55 
     | 
    
         
            +
                # @return [Array<GPhoto2::CameraWidget>]
         
     | 
| 
       45 
56 
     | 
    
         
             
                def children
         
     | 
| 
       46 
57 
     | 
    
         
             
                  count_children.times.map { |i| get_child(i) }
         
     | 
| 
       47 
58 
     | 
    
         
             
                end
         
     | 
| 
       48 
59 
     | 
    
         | 
| 
      
 60 
     | 
    
         
            +
                # @param [Hash<String,GPhoto2::CameraWidget>] map
         
     | 
| 
      
 61 
     | 
    
         
            +
                # @return [Hash<String,GPhoto2::CameraWidget>]
         
     | 
| 
       49 
62 
     | 
    
         
             
                def flatten(map = {})
         
     | 
| 
       50 
63 
     | 
    
         
             
                  case type
         
     | 
| 
       51 
64 
     | 
    
         
             
                  when :window, :section
         
     | 
| 
         @@ -59,12 +72,19 @@ module GPhoto2 
     | 
|
| 
       59 
72 
     | 
    
         
             
                  map
         
     | 
| 
       60 
73 
     | 
    
         
             
                end
         
     | 
| 
       61 
74 
     | 
    
         | 
| 
      
 75 
     | 
    
         
            +
                # @param [String]
         
     | 
| 
       62 
76 
     | 
    
         
             
                def to_s
         
     | 
| 
       63 
77 
     | 
    
         
             
                  value.to_s
         
     | 
| 
       64 
78 
     | 
    
         
             
                end
         
     | 
| 
       65 
79 
     | 
    
         | 
| 
       66 
     | 
    
         
            -
                 
     | 
| 
       67 
     | 
    
         
            -
             
     | 
| 
      
 80 
     | 
    
         
            +
                protected
         
     | 
| 
      
 81 
     | 
    
         
            +
             
     | 
| 
      
 82 
     | 
    
         
            +
                def get_value
         
     | 
| 
      
 83 
     | 
    
         
            +
                  raise NotImplementedError
         
     | 
| 
      
 84 
     | 
    
         
            +
                end
         
     | 
| 
      
 85 
     | 
    
         
            +
             
     | 
| 
      
 86 
     | 
    
         
            +
                def set_value(value)
         
     | 
| 
      
 87 
     | 
    
         
            +
                  raise NotImplementedError
         
     | 
| 
       68 
88 
     | 
    
         
             
                end
         
     | 
| 
       69 
89 
     | 
    
         | 
| 
       70 
90 
     | 
    
         
             
                private
         
     | 
| 
         @@ -86,14 +106,6 @@ module GPhoto2 
     | 
|
| 
       86 
106 
     | 
    
         
             
                  str_ptr.null? ? nil : str_ptr.read_string
         
     | 
| 
       87 
107 
     | 
    
         
             
                end
         
     | 
| 
       88 
108 
     | 
    
         | 
| 
       89 
     | 
    
         
            -
                def get_value
         
     | 
| 
       90 
     | 
    
         
            -
                  raise NotImplementedError
         
     | 
| 
       91 
     | 
    
         
            -
                end
         
     | 
| 
       92 
     | 
    
         
            -
             
     | 
| 
       93 
     | 
    
         
            -
                def set_value(value)
         
     | 
| 
       94 
     | 
    
         
            -
                  raise NotImplementedError
         
     | 
| 
       95 
     | 
    
         
            -
                end
         
     | 
| 
       96 
     | 
    
         
            -
             
     | 
| 
       97 
109 
     | 
    
         
             
                def get_type
         
     | 
| 
       98 
110 
     | 
    
         
             
                  # assume CameraWidgetType is an int
         
     | 
| 
       99 
111 
     | 
    
         
             
                  type = FFI::MemoryPointer.new(:int)
         
     | 
| 
         @@ -108,15 +120,16 @@ module GPhoto2 
     | 
|
| 
       108 
120 
     | 
    
         
             
                  str_ptr.write_pointer(str)
         
     | 
| 
       109 
121 
     | 
    
         | 
| 
       110 
122 
     | 
    
         
             
                  rc = gp_widget_get_type(ptr, str_ptr)
         
     | 
| 
      
 123 
     | 
    
         
            +
                  GPhoto2.check!(rc)
         
     | 
| 
       111 
124 
     | 
    
         | 
| 
       112 
125 
     | 
    
         
             
                  str_ptr = str_ptr.read_pointer
         
     | 
| 
       113 
126 
     | 
    
         
             
                  str_ptr.null? ? nil : str_ptr.read_string
         
     | 
| 
       114 
127 
     | 
    
         
             
                end
         
     | 
| 
       115 
128 
     | 
    
         | 
| 
       116 
129 
     | 
    
         
             
                def count_children
         
     | 
| 
       117 
     | 
    
         
            -
                  rc = gp_widget_count_children(ptr)
         
     | 
| 
      
 130 
     | 
    
         
            +
                  count = rc = gp_widget_count_children(ptr)
         
     | 
| 
       118 
131 
     | 
    
         
             
                  GPhoto2.check!(rc)
         
     | 
| 
       119 
     | 
    
         
            -
                   
     | 
| 
      
 132 
     | 
    
         
            +
                  count
         
     | 
| 
       120 
133 
     | 
    
         
             
                end
         
     | 
| 
       121 
134 
     | 
    
         | 
| 
       122 
135 
     | 
    
         
             
                def get_child(index)
         
     | 
    
        data/lib/gphoto2/context.rb
    CHANGED
    
    | 
         @@ -1,22 +1,18 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module GPhoto2
         
     | 
| 
       2 
2 
     | 
    
         
             
              class Context
         
     | 
| 
       3 
3 
     | 
    
         
             
                include FFI::GPhoto2
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
                attr_reader :ptr
         
     | 
| 
      
 4 
     | 
    
         
            +
                include GPhoto2::Struct
         
     | 
| 
       6 
5 
     | 
    
         | 
| 
       7 
6 
     | 
    
         
             
                def initialize
         
     | 
| 
       8 
7 
     | 
    
         
             
                  new
         
     | 
| 
       9 
8 
     | 
    
         
             
                end
         
     | 
| 
       10 
9 
     | 
    
         | 
| 
      
 10 
     | 
    
         
            +
                # @return [void]
         
     | 
| 
       11 
11 
     | 
    
         
             
                def finalize
         
     | 
| 
       12 
12 
     | 
    
         
             
                  unref
         
     | 
| 
       13 
13 
     | 
    
         
             
                end
         
     | 
| 
       14 
14 
     | 
    
         
             
                alias_method :close, :finalize
         
     | 
| 
       15 
15 
     | 
    
         | 
| 
       16 
     | 
    
         
            -
                def to_ptr
         
     | 
| 
       17 
     | 
    
         
            -
                  @ptr
         
     | 
| 
       18 
     | 
    
         
            -
                end
         
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
16 
     | 
    
         
             
                private
         
     | 
| 
       21 
17 
     | 
    
         | 
| 
       22 
18 
     | 
    
         
             
                def new
         
     | 
    
        data/lib/gphoto2/entry.rb
    CHANGED
    
    
    
        data/lib/gphoto2/port_info.rb
    CHANGED
    
    | 
         @@ -1,37 +1,39 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module GPhoto2
         
     | 
| 
       2 
2 
     | 
    
         
             
              class PortInfo
         
     | 
| 
       3 
3 
     | 
    
         
             
                include FFI::GPhoto2Port
         
     | 
| 
      
 4 
     | 
    
         
            +
                include GPhoto2::Struct
         
     | 
| 
       4 
5 
     | 
    
         | 
| 
       5 
     | 
    
         
            -
                 
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
      
 6 
     | 
    
         
            +
                # @param [String] port
         
     | 
| 
      
 7 
     | 
    
         
            +
                # @return [GPhoto2::PortInfo]
         
     | 
| 
       7 
8 
     | 
    
         
             
                def self.find(port)
         
     | 
| 
       8 
9 
     | 
    
         
             
                  port_info_list = PortInfoList.new
         
     | 
| 
       9 
10 
     | 
    
         
             
                  index = port_info_list.lookup_path(port)
         
     | 
| 
       10 
11 
     | 
    
         
             
                  port_info_list[index]
         
     | 
| 
       11 
12 
     | 
    
         
             
                end
         
     | 
| 
       12 
13 
     | 
    
         | 
| 
      
 14 
     | 
    
         
            +
                # @param [GPhoto2::PortInfoList] port_info_list
         
     | 
| 
      
 15 
     | 
    
         
            +
                # @param [Integer] index
         
     | 
| 
       13 
16 
     | 
    
         
             
                def initialize(port_info_list, index)
         
     | 
| 
       14 
17 
     | 
    
         
             
                  @port_info_list = port_info_list
         
     | 
| 
       15 
18 
     | 
    
         
             
                  @index = index
         
     | 
| 
       16 
19 
     | 
    
         
             
                  new
         
     | 
| 
       17 
20 
     | 
    
         
             
                end
         
     | 
| 
       18 
21 
     | 
    
         | 
| 
      
 22 
     | 
    
         
            +
                # @return [String]
         
     | 
| 
       19 
23 
     | 
    
         
             
                def name
         
     | 
| 
       20 
24 
     | 
    
         
             
                  get_name
         
     | 
| 
       21 
25 
     | 
    
         
             
                end
         
     | 
| 
       22 
26 
     | 
    
         | 
| 
      
 27 
     | 
    
         
            +
                # @return [String]
         
     | 
| 
       23 
28 
     | 
    
         
             
                def path
         
     | 
| 
       24 
29 
     | 
    
         
             
                  get_path
         
     | 
| 
       25 
30 
     | 
    
         
             
                end
         
     | 
| 
       26 
31 
     | 
    
         | 
| 
      
 32 
     | 
    
         
            +
                # @return [GPPortType]
         
     | 
| 
       27 
33 
     | 
    
         
             
                def type
         
     | 
| 
       28 
34 
     | 
    
         
             
                  get_type
         
     | 
| 
       29 
35 
     | 
    
         
             
                end
         
     | 
| 
       30 
36 
     | 
    
         | 
| 
       31 
     | 
    
         
            -
                def to_ptr
         
     | 
| 
       32 
     | 
    
         
            -
                  @ptr
         
     | 
| 
       33 
     | 
    
         
            -
                end
         
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
37 
     | 
    
         
             
                private
         
     | 
| 
       36 
38 
     | 
    
         | 
| 
       37 
39 
     | 
    
         
             
                def new
         
     | 
| 
         @@ -1,28 +1,27 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module GPhoto2
         
     | 
| 
       2 
2 
     | 
    
         
             
              class PortInfoList
         
     | 
| 
       3 
3 
     | 
    
         
             
                include FFI::GPhoto2Port
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
                attr_reader :ptr
         
     | 
| 
      
 4 
     | 
    
         
            +
                include GPhoto2::Struct
         
     | 
| 
       6 
5 
     | 
    
         | 
| 
       7 
6 
     | 
    
         
             
                def initialize
         
     | 
| 
       8 
7 
     | 
    
         
             
                  new
         
     | 
| 
       9 
8 
     | 
    
         
             
                  load
         
     | 
| 
       10 
9 
     | 
    
         
             
                end
         
     | 
| 
       11 
10 
     | 
    
         | 
| 
      
 11 
     | 
    
         
            +
                # @param [String] port
         
     | 
| 
      
 12 
     | 
    
         
            +
                # @return [Integer]
         
     | 
| 
       12 
13 
     | 
    
         
             
                def lookup_path(port)
         
     | 
| 
       13 
14 
     | 
    
         
             
                  _lookup_path(port)
         
     | 
| 
       14 
15 
     | 
    
         
             
                end
         
     | 
| 
       15 
16 
     | 
    
         
             
                alias_method :index, :lookup_path
         
     | 
| 
       16 
17 
     | 
    
         | 
| 
      
 18 
     | 
    
         
            +
                # @param [Integer] index
         
     | 
| 
      
 19 
     | 
    
         
            +
                # @return [GPhoto2::PortInfo]
         
     | 
| 
       17 
20 
     | 
    
         
             
                def at(index)
         
     | 
| 
       18 
21 
     | 
    
         
             
                  PortInfo.new(self, index)
         
     | 
| 
       19 
22 
     | 
    
         
             
                end
         
     | 
| 
       20 
23 
     | 
    
         
             
                alias_method :[], :at
         
     | 
| 
       21 
24 
     | 
    
         | 
| 
       22 
     | 
    
         
            -
                def to_ptr
         
     | 
| 
       23 
     | 
    
         
            -
                  @ptr
         
     | 
| 
       24 
     | 
    
         
            -
                end
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
25 
     | 
    
         
             
                private
         
     | 
| 
       27 
26 
     | 
    
         | 
| 
       28 
27 
     | 
    
         
             
                def new
         
     | 
    
        data/lib/gphoto2/port_result.rb
    CHANGED
    
    
    
        data/lib/gphoto2/version.rb
    CHANGED
    
    
    
        data/lib/gphoto2.rb
    CHANGED
    
    | 
         @@ -5,6 +5,8 @@ require 'ffi' 
     | 
|
| 
       5 
5 
     | 
    
         
             
            require 'ffi/gphoto2'
         
     | 
| 
       6 
6 
     | 
    
         
             
            require 'ffi/gphoto2_port'
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
      
 8 
     | 
    
         
            +
            require 'gphoto2/struct'
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
       8 
10 
     | 
    
         
             
            require 'gphoto2/camera_widgets/camera_widget'
         
     | 
| 
       9 
11 
     | 
    
         
             
            require 'gphoto2/camera_widgets/date_camera_widget'
         
     | 
| 
       10 
12 
     | 
    
         
             
            require 'gphoto2/camera_widgets/menu_camera_widget'
         
     | 
| 
         @@ -14,7 +16,13 @@ require 'gphoto2/camera_widgets/section_camera_widget' 
     | 
|
| 
       14 
16 
     | 
    
         
             
            require 'gphoto2/camera_widgets/text_camera_widget'
         
     | 
| 
       15 
17 
     | 
    
         
             
            require 'gphoto2/camera_widgets/toggle_camera_widget'
         
     | 
| 
       16 
18 
     | 
    
         
             
            require 'gphoto2/camera_widgets/window_camera_widget'
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
            require 'gphoto2/camera/capture'
         
     | 
| 
      
 21 
     | 
    
         
            +
            require 'gphoto2/camera/configuration'
         
     | 
| 
      
 22 
     | 
    
         
            +
            require 'gphoto2/camera/event'
         
     | 
| 
      
 23 
     | 
    
         
            +
            require 'gphoto2/camera/filesystem'
         
     | 
| 
       17 
24 
     | 
    
         
             
            require 'gphoto2/camera'
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
       18 
26 
     | 
    
         
             
            require 'gphoto2/camera_abilities'
         
     | 
| 
       19 
27 
     | 
    
         
             
            require 'gphoto2/camera_abilities_list'
         
     | 
| 
       20 
28 
     | 
    
         
             
            require 'gphoto2/camera_event'
         
     | 
| 
         @@ -27,13 +35,18 @@ require 'gphoto2/entry' 
     | 
|
| 
       27 
35 
     | 
    
         
             
            require 'gphoto2/port_info'
         
     | 
| 
       28 
36 
     | 
    
         
             
            require 'gphoto2/port_info_list'
         
     | 
| 
       29 
37 
     | 
    
         
             
            require 'gphoto2/port_result'
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
       30 
39 
     | 
    
         
             
            require 'gphoto2/version'
         
     | 
| 
       31 
40 
     | 
    
         | 
| 
       32 
41 
     | 
    
         
             
            module GPhoto2
         
     | 
| 
      
 42 
     | 
    
         
            +
              # @return [Logger]
         
     | 
| 
       33 
43 
     | 
    
         
             
              def self.logger
         
     | 
| 
       34 
44 
     | 
    
         
             
                @logger ||= Logger.new(STDERR)
         
     | 
| 
       35 
45 
     | 
    
         
             
              end
         
     | 
| 
       36 
46 
     | 
    
         | 
| 
      
 47 
     | 
    
         
            +
              # @param [Integer] rc
         
     | 
| 
      
 48 
     | 
    
         
            +
              # @return [void]
         
     | 
| 
      
 49 
     | 
    
         
            +
              # @raise RuntimeError when the return code is not {FFI::GPhoto2Port::GP_OK}
         
     | 
| 
       37 
50 
     | 
    
         
             
              def self.check!(rc)
         
     | 
| 
       38 
51 
     | 
    
         
             
                logger.debug "#{caller.first} => #{rc}" if ENV['DEBUG']
         
     | 
| 
       39 
52 
     | 
    
         
             
                return if rc >= FFI::GPhoto2Port::GP_OK
         
     |