application: show connection details

This commit is contained in:
King Kévin 2020-01-08 20:27:14 +01:00
parent 4067dc090c
commit ac3975c1b2
1 changed files with 27 additions and 5 deletions

View File

@ -118,10 +118,13 @@ static void standby(void)
} }
/** meaning of the print connection information */
static const char* connection_legend = "connection details: D = pin driven, P = pin pulled, F = pin floating, >/< direction\n";
/** print the pin connection details /** print the pin connection details
* @param[in] connection connection details to print * @param[in] connection connection details to print
*/ */
static void print_connection(struct usb_connection_t* connection) static void print_connection(const struct usb_connection_t* connection)
{ {
if (NULL == connection) { if (NULL == connection) {
return; return;
@ -1104,6 +1107,7 @@ static void command_connections(void* argument)
uint8_t (*connections)[2] = NULL; uint8_t (*connections)[2] = NULL;
if (intra) { if (intra) {
printf("= testing internal connections =\n"); printf("= testing internal connections =\n");
puts(connection_legend);
for (uint8_t i = 0; i < LENGTH(usb_connectors); i++) { for (uint8_t i = 0; i < LENGTH(usb_connectors); i++) {
// test pin connections // test pin connections
const struct usb_connector_t* connector = usb_connectors[i]; const struct usb_connector_t* connector = usb_connectors[i];
@ -1122,7 +1126,15 @@ static void command_connections(void* argument)
} }
printf(": %u connection(s)\n", connections_nb); printf(": %u connection(s)\n", connections_nb);
for (uint16_t connection = 0; connection < connections_nb; connection++) { for (uint16_t connection = 0; connection < connections_nb; connection++) {
printf("- %s to %s\n", usb_pins[connections[connection][0]].name, usb_pins[connections[connection][1]].name); struct usb_connection_t connection_detail;
const bool connected = usb_cables_test_pins(&usb_pins[connections[i][0]], &usb_pins[connections[i][1]], &connection_detail);
printf("- %s to %s (", usb_pins[connections[connection][0]].name, usb_pins[connections[connection][1]].name);
if (connected) {
print_connection(&connection_detail);
} else {
puts("connection dropped");
}
puts(")\n");
} }
printf("there is %s load on the connector\n", load ? "a" : "no"); printf("there is %s load on the connector\n", load ? "a" : "no");
if (connections) { if (connections) {
@ -1136,6 +1148,7 @@ static void command_connections(void* argument)
} else { } else {
printf("= testing all connections =\n"); printf("= testing all connections =\n");
} }
puts(connection_legend);
connections = (uint8_t (*)[2])usb_cables_test_connections(usb_connectors, LENGTH(usb_connectors), !inter, false, &connections_nb); connections = (uint8_t (*)[2])usb_cables_test_connections(usb_connectors, LENGTH(usb_connectors), !inter, false, &connections_nb);
if (NULL == connections) { if (NULL == connections) {
if (connections_nb) { if (connections_nb) {
@ -1150,9 +1163,12 @@ static void command_connections(void* argument)
const struct usb_connector_t* connector_from = usb_cables_get_connector(connections[i][0]); const struct usb_connector_t* connector_from = usb_cables_get_connector(connections[i][0]);
const struct usb_connector_t* connector_to = usb_cables_get_connector(connections[i][1]); const struct usb_connector_t* connector_to = usb_cables_get_connector(connections[i][1]);
if (NULL == connector_from || NULL == connector_to) { if (NULL == connector_from || NULL == connector_to) {
printf("no connector for a pin pair\n"); puts("no connector for a pin pair\n");
continue; continue;
} }
// get connection details
struct usb_connection_t connection;
const bool connected = usb_cables_test_pins(&usb_pins[connections[i][0]], &usb_pins[connections[i][1]], &connection);
printf("%s ", connector_from->name); printf("%s ", connector_from->name);
if (connector_from->variant) { if (connector_from->variant) {
printf("(%s) ", connector_from->variant); printf("(%s) ", connector_from->variant);
@ -1161,7 +1177,13 @@ static void command_connections(void* argument)
if (connector_to->variant) { if (connector_to->variant) {
printf("(%s) ", connector_to->variant); printf("(%s) ", connector_to->variant);
} }
printf("%s\n", usb_pins[connections[i][1]].name); printf("%s (", usb_pins[connections[i][1]].name);
if (connected) {
print_connection(&connection);
} else {
puts("connection dropped");
}
puts(")\n");
} }
if (connections) { if (connections) {
free(connections); free(connections);
@ -1180,7 +1202,7 @@ static void command_cplug(void* argument)
const enum usb_connectors_e connectors[] = {USB_CONNECTOR_C_HOST, USB_CONNECTOR_C_DEVICE}; // USB-C connectors to test const enum usb_connectors_e connectors[] = {USB_CONNECTOR_C_HOST, USB_CONNECTOR_C_DEVICE}; // USB-C connectors to test
puts("= testing C plugs =\n"); puts("= testing C plugs =\n");
puts("connection details: D = pin driven, P = pin pulled, F = pin floating, >/< direction\n"); puts(connection_legend);
usb_cables_pins_float(); // put all pins to float before making checks usb_cables_pins_float(); // put all pins to float before making checks