def best_mode
modes = self.advertised_modes
best_speed = modes.map { |m| m.speed }.sort.last
high_speed_modes = modes.find_all { |m| m.speed == best_speed }
if high_speed_modes.length == 0
raise RuntimeError.new("Can't happen: no modes with the best speed?!?")
elsif high_speed_modes.length == 1
high_speed_modes.first
else
duplexes = high_speed_modes.map { |m| m.duplex }
best_duplex = if duplexes.include? :fec
:fec
elsif duplexes.include? :full
:full
else
:half
end
high_speed_modes.find { |m| m.duplex == best_duplex }
end
end