usb_cables: connectors have a variant instead of host property

This commit is contained in:
King Kévin 2019-12-13 09:45:00 +01:00
parent 3cb4b3689e
commit fca92ed6c6
3 changed files with 54 additions and 16 deletions

View File

@ -210,7 +210,11 @@ static void command_find(void* argument)
printf("connectors:\n");
for (uint8_t i = 0; i < LENGTH(connected); i++) {
if (connected[i]) {
printf("- %s (%s)\n", usb_connectors[i]->name, usb_connectors[i]->host ? "host" : "device");
printf("- %s", usb_connectors[i]->name);
if (usb_connectors[i]->variant) {
printf(" (%s)", usb_connectors[i]->variant);
}
putc('\n');
connected_nb++;
}
}
@ -369,7 +373,11 @@ static void command_pin(void* argument)
for (uint8_t connector = 0; connector < LENGTH(usb_connectors); connector++) { // test every connector
bool connector_print = (!pin_str || (pin_str && pin_nb >= pin_i && pin_nb < pin_i + usb_connectors[connector]->pins_nb)); // if a pin information will be printed for this connector
if (connector_print) {
printf("%s (%s):\n", usb_connectors[connector]->name, usb_connectors[connector]->host ? "host" : "device"); // print connector name
printf("%s", usb_connectors[connector]->name);
if (usb_connectors[connector]->variant) {
printf(" (%s)", usb_connectors[connector]->variant);
}
printf(":\n");
}
for (uint8_t pin = 0; pin < usb_connectors[connector]->pins_nb; pin++) { // test every pin
const struct usb_pin_t* usb_pin = &usb_pins[usb_connectors[connector]->pins[pin]]; // get pin
@ -441,7 +449,11 @@ static void command_test(void* argument)
gpio_set_mode(usb_pin->port, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, usb_pin->pin); // put back to floating
if (high && low) { // pull up and down worked
} else { // pull up or down did not work
printf("%s (%s) %s is not floating\n", usb_connectors[connector]->name, usb_connectors[connector]->host ? "host" : "device", usb_pin->name); // print erroneous pin
printf("%s ", usb_connectors[connector]->name);
if (usb_connectors[connector]->variant) {
printf("(%s) ", usb_connectors[connector]->variant);
}
printf("%s is not floating\n", usb_pin->name); // print erroneous pin
float_errors = true; // remember there is an error
}
} // pin
@ -471,7 +483,11 @@ static void command_test(void* argument)
for (uint8_t cable = 0; cable < LENGTH(test_cables); cable++) {
printf("connect %s cable to connectors:\n", test_cables[cable].name);
for (uint8_t connector = 0; connector < test_cables[cable].connectors_nb; connector++) {
printf("- %s (%s)\n", test_cables[cable].connectors[connector]->name, test_cables[cable].connectors[connector]->host ? "host" : "device");
printf("- %s", usb_connectors[connector]->name);
if (usb_connectors[connector]->variant) {
printf(" (%s)", usb_connectors[connector]->variant);
}
putc('\n');
}
bool cable_ok = false; // if the cable is connected
while (!cable_ok) { // wait until all pin pairs of cable are connected

View File

@ -679,7 +679,7 @@ static const uint8_t usb_a_host_pins[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
/** USB type A connector (host side) */
static const struct usb_connector_t usb_a_host_connector = {
.name = "A",
.host = true,
.variant = "host",
.pins_nb = LENGTH(usb_a_host_pins),
.pins = usb_a_host_pins,
};
@ -691,7 +691,7 @@ static const uint8_t usb_c_host_sideb_pins[] = {10, 23, 24, 25, 26, 27, 28, 29,
/** USB-C connector ("host" side) */
static const struct usb_connector_t usb_c_host_connector = {
.name = "C",
.host = true,
.variant = "host",
.pins_nb = LENGTH(usb_c_host_sidea_pins),
.pins = usb_c_host_sidea_pins,
};
@ -703,7 +703,7 @@ static const uint8_t usb_a_device_pins[] = {35, 36, 37, 38, 39, 40, 41, 42, 43,
*/
static const struct usb_connector_t usb_a_device_connector = {
.name = "A",
.host = false,
.variant = "device",
.pins_nb = LENGTH(usb_a_device_pins),
.pins = usb_a_device_pins,
};
@ -713,7 +713,7 @@ static const uint8_t usb_b_device_pins[] = {45, 46, 47, 48, 49, 50, 51, 52, 53,
/** USB type B connector (device side) */
static const struct usb_connector_t usb_b_device_connector = {
.name = "B",
.host = false,
.variant = NULL,
.pins_nb = LENGTH(usb_b_device_pins),
.pins = usb_b_device_pins,
};
@ -725,7 +725,7 @@ static const uint8_t usb_minib_device_pins[] = {55, 56, 57, 58, 59, 60};
*/
static const struct usb_connector_t usb_minib_device_connector = {
.name = "mini-B",
.host = false,
.variant = NULL,
.pins_nb = LENGTH(usb_minib_device_pins),
.pins = usb_minib_device_pins,
};
@ -735,7 +735,7 @@ static const uint8_t usb_microb_device_pins[] = {61, 62, 63, 64, 65, 66, 67, 68,
/** USB micro-B connector (device side) */
static const struct usb_connector_t usb_microb_device_connector = {
.name = "micro-B",
.host = false,
.variant = NULL,
.pins_nb = LENGTH(usb_microb_device_pins),
.pins = usb_microb_device_pins,
};
@ -747,7 +747,7 @@ static const uint8_t usb_c_device_sideb_pins[] = {72, 85, 86, 87, 88, 89, 90, 91
/** USB-C connector ("device" side) */
static const struct usb_connector_t usb_c_device_connector = {
.name = "C",
.host = false,
.variant = "device",
.pins_nb = LENGTH(usb_c_device_sidea_pins),
.pins = usb_c_device_sidea_pins,
};
@ -759,7 +759,7 @@ static const uint8_t lighnting_device_pins[] = {97, 98, 99, 100, 101, 102, 103,
*/
static const struct usb_connector_t lightning_device_connector = {
.name = "lightning",
.host = false,
.variant = NULL,
.pins_nb = LENGTH(lighnting_device_pins),
.pins = lighnting_device_pins,
};
@ -4644,7 +4644,11 @@ void usb_cables_check_intra(const struct usb_connector_t* connector, bool* conne
connected[pin_from] = true;
connected[pin_to] = true;
} else {
printf("%s (%s) %s connected to %s (%02x)\n", connector->name, connector->host ? "host" : "device", usb_pin_from->name, usb_pin_to->name, connection);
printf("%s ", connector->name);
if (connector->variant) {
printf(" (%s)", connector->variant);
}
printf("%s connected to %s (%02x)\n", usb_pin_from->name, usb_pin_to->name, connection);
}
}
}
@ -4694,7 +4698,16 @@ void usb_cables_check_inter(const struct usb_connector_t** connectors, uint8_t c
connected[connector_from] = true;
connected[connector_to] = true;
} else {
printf("%s (%s) %s connected to %s (%s) %s\n", connectors[connector_from]->name, connectors[connector_from]->host ? "host" : "device", usb_pin_from->name, connectors[connector_to]->name, connectors[connector_to]->host ? "host" : "device", usb_pin_to->name);
printf("%s ", connectors[connector_from]->name);
if (connectors[connector_from]->variant) {
printf("(%s) ", connectors[connector_from]->variant);
}
printf("%s connected to ", usb_pin_from->name);
printf("%s ", connectors[connector_to]->name);
if (connectors[connector_to]->variant) {
printf("(%s) ", connectors[connector_to]->variant);
}
printf("%s\n", usb_pin_to->name);
}
}
}
@ -4753,7 +4766,16 @@ void usb_cables_check_ground(const struct usb_connector_t** connectors, uint8_t
connected[connector_from] = true;
connected[connector_to] = true;
} else {
printf("%s (%s) %s connected to %s (%s) %s\n", connectors[connector_from]->name, connectors[connector_from]->host ? "host" : "device", usb_pin_from->name, connectors[connector_to]->name, connectors[connector_to]->host ? "host" : "device", usb_pin_to->name);
printf("%s ", connectors[connector_from]->name);
if (connectors[connector_from]->variant) {
printf("(%s) ", connectors[connector_from]->variant);
}
printf(usb_pin_from->name);
printf("%s connected to %s ", usb_pin_from->name, connectors[connector_to]->name);
if (connectors[connector_to]->variant) {
printf("(%s) ", connectors[connector_to]->variant);
}
printf("%s\n", usb_pin_to->name);
}
ground_found = true; // remember we found a ground connection
}

View File

@ -50,7 +50,7 @@ struct usb_pin_t {
/** USB connector definition */
struct usb_connector_t {
const char* name; /*< connector name (A, B, mini-B, micro-B, C, ...) */
bool host; /*< if on host or device side */
const char* variant; /*< variant if there are more than one of the same connector */
uint8_t pins_nb; /*< number of pins */
const uint8_t* pins; /*< all connector pins indexes */
};