def connect(profile=:all)
      case profile
      when UUID::REGEX
        block_given? ? @o_dev[I_DEVICE].ConnectProfile(profile, &Proc.new) :
                       @o_dev[I_DEVICE].ConnectProfile(profile)
      when :all
        block_given? ? @o_dev[I_DEVICE].Connect(&Proc.new) :
                       @o_dev[I_DEVICE].Connect()
      else raise ArgumentError, "profile uuid or :all expected"
      end
      true
    rescue DBus::Error => e
      case e.name
      when E_NOT_READY
      when E_FAILED
      when E_IN_PROGRESS
        false
      when E_ALREADY_CONNECTED
        true
      when E_UNKNOWN_OBJECT
        raise StalledObject
      else raise ScriptError
      end
    end
def connect(profile=:all)
      case profile
      when UUID::REGEX
        block_given? ? @o_dev[I_DEVICE].ConnectProfile(profile, &Proc.new) :
                       @o_dev[I_DEVICE].ConnectProfile(profile)
      when :all
        block_given? ? @o_dev[I_DEVICE].Connect(&Proc.new) :
                       @o_dev[I_DEVICE].Connect()
      else raise ArgumentError, "profile uuid or :all expected"
      end
      true
    rescue DBus::Error => e
      case e.name
      when E_NOT_READY
      when E_FAILED
      when E_IN_PROGRESS
        false
      when E_ALREADY_CONNECTED
        true
      when E_UNKNOWN_OBJECT
        raise StalledObject
      else raise ScriptError
      end
    end
This connect to the specified profile UUID or to any (:all)
 profiles the remote device supports that can be connected to
 and have been flagged as auto-connectable on our side.  If
 only subset of profiles is already connected it will try to
 connect currently disconnected ones.  If at least one
 profile was connected successfully this method will indicate
 success.
 @return [Boolean]