def on_position_change(obj=nil, &block)
	  @on_position_change_obj = obj
      @on_position_change = Proc.new { |device, obj_ptr, lat, long, alt|
        yield self, lat, long, alt, object_for(obj_ptr)
      }
      Klass.set_OnPositionChange_Handler(@handle, @on_position_change, pointer_for(obj))
    end
def on_position_change(obj=nil, &block)
	  @on_position_change_obj = obj
      @on_position_change = Proc.new { |device, obj_ptr, lat, long, alt|
        yield self, lat, long, alt, object_for(obj_ptr)
      }
      Klass.set_OnPositionChange_Handler(@handle, @on_position_change, pointer_for(obj))
    end
Sets position change handler callback function. This is called when the latitude, longitude, or altitude changes.

 @param [String] obj Object to pass to the callback function. This is optional.
 @param [Proc] Block When the callback is executed, the device and object are yielded to this block.
 @example
     gps.on_position_change do |device, lat, long, alt, obj|
       puts "Latitude: #{lat} degrees, longitude: #{long} degrees, altitude: #{alt} m"
     end
 As this runs in it's own thread, be sure that all errors are properly handled or the thread will halt and not fire any more.
 @return [Boolean] returns true or raises an error