diff --git a/usb_cables.c b/usb_cables.c index 0cf95fc..b7bc923 100644 --- a/usb_cables.c +++ b/usb_cables.c @@ -1376,12 +1376,16 @@ void usb_cables_check_inter(const struct usb_connector_t** connectors, uint8_t c } usb_cables_connectors_float(connectors, connectors_nb); // ensure we start in a safe state + for (uint8_t connector_from = 0; connector_from < connectors_nb; connector_from++) { // test from every connector for (uint8_t pin_from = 0; pin_from < connectors[connector_from]->pins_nb; pin_from++) { // test from every pin - for (uint8_t connector_to = 0; connector_to < connectors_nb; connector_to++) { // test to every connector (except itself) + for (uint8_t connector_to = connector_from + 1; connector_to < connectors_nb; connector_to++) { // test to every connector (except itself) if (connector_to == connector_from) { // don't test the connector itself since we already did this test continue; } + if (connected && connected[connector_to]) { // we already found a connection to this connector + continue; + } for (uint8_t pin_to = 0; pin_to < connectors[connector_to]->pins_nb; pin_to++) { // test to every pin int8_t connections = usb_cables_check_pins(connectors[connector_from]->pins[pin_from].port, connectors[connector_from]->pins[pin_from].pin, connectors[connector_to]->pins[pin_to].port, connectors[connector_to]->pins[pin_to].pin); if (connections > 0) {