def filter(uuids, rssi: nil, pathloss: nil, transport: :le)
        unless [:auto, :bredr, :le].include?(transport)
            raise ArgumentError,
                  "transport must be one of :auto, :bredr, :le"
        end
        filter = { }
        
        unless uuids.nil? || uuids.empty?
            filter['UUIDs'    ] = DBus.variant('as', uuids)
        end
        unless rssi.nil?
            filter['RSSI'     ] = DBus.variant('n',  rssi)
        end
        unless pathloss.nil?
            filter['Pathloss' ] = DBus.variant('q',  pathloss)
        end
        unless transport.nil?
            filter['Transport'] = DBus.variant('s',  transport.to_s) 
        end
        
        @o_adapter[I_ADAPTER].SetDiscoveryFilter(filter)
        
        self
    end
def filter(uuids, rssi: nil, pathloss: nil, transport: :le)
        unless [:auto, :bredr, :le].include?(transport)
            raise ArgumentError,
                  "transport must be one of :auto, :bredr, :le"
        end
        filter = { }
        
        unless uuids.nil? || uuids.empty?
            filter['UUIDs'    ] = DBus.variant('as', uuids)
        end
        unless rssi.nil?
            filter['RSSI'     ] = DBus.variant('n',  rssi)
        end
        unless pathloss.nil?
            filter['Pathloss' ] = DBus.variant('q',  pathloss)
        end
        unless transport.nil?
            filter['Transport'] = DBus.variant('s',  transport.to_s) 
        end
        
        @o_adapter[I_ADAPTER].SetDiscoveryFilter(filter)
        
        self
    end
This method sets the device discovery filter for the caller.
 When this method is called with +nil+ or an empty list of UUIDs,
 filter is removed.

 @todo Need to sync with the adapter-api.txt

 @param uuids     a list of uuid to filter on
 @param rssi      RSSI threshold
 @param pathloss  pathloss threshold
 @param transport [:auto, :bredr, :le]
                  type of scan to run (default: :le)
 @return [self]