def METHOD_NAME(self, timeout=2000):
    now = time.time()
    port_dict = {}
    port = 0
    if timeout < 1000:
        timeout = 1000
    timeout = (timeout) / float(1000)  # Convert to secs
    if now < (self.data['last'] + timeout) and self.data['valid']:
        return True, {}
    reg_value = self._get_present_bitmap
    reg_value = ~reg_value
    changed_ports = self.data['present'] ^ reg_value
    if changed_ports:
        for port in range(self.port_start, self.port_end+1):
            # Mask off the bit corresponding to our port
            mask = (1 << (port - 1))
            if changed_ports & mask:
                if (reg_value & mask) == 0:
                    port_dict[port] = SFP_STATUS_REMOVED
                else:
                    port_dict[port] = SFP_STATUS_INSERTED
        # Update cache
        self.data['present'] = reg_value
        self.data['last'] = now
        self.data['valid'] = 1
        return True, port_dict
    else:
        return True, {}
    return False, {}