/* This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * */ /** USB cable definitions and utilities * @file * @author King Kévin * @date 2019 */ /* standard libraries */ #include // standard integer types #include // string utilities #include // memory utilities /* STM32 (including CM3) libraries */ #include // Cortex M3 utilities #include // assert definitions #include // general purpose input output library /* own libraries */ #include "global.h" // board definitions #include "print.h" // printing utilities #include "usb_cables.h" // own definitions const struct usb_pin_t usb_pins[] = { // A host { .name = "shield", .port = GPIOD, .pin = GPIO0, .type = USB_PIN_TYPE_SHIELD, }, { .name = "VBUS", .port = GPIOC, .pin = GPIO12, .type = USB_PIN_TYPE_POWER, }, { .name = "D-", .port = GPIOA, .pin = GPIO15, .type = USB_PIN_TYPE_DIFFERENTIAL, }, { .name = "D+", .port = GPIOG, .pin = GPIO6, .type = USB_PIN_TYPE_DIFFERENTIAL, }, { .name = "GND", .port = GPIOG, .pin = GPIO2, .type = USB_PIN_TYPE_GROUND, }, { .name = "RX-", .port = GPIOD, .pin = GPIO14, .type = USB_PIN_TYPE_DIFFERENTIAL, }, { .name = "RX+", .port = GPIOG, .pin = GPIO4, .type = USB_PIN_TYPE_DIFFERENTIAL, }, { .name = "GND_DRAIN", .port = GPIOG, .pin = GPIO8, .type = USB_PIN_TYPE_GROUND, }, { .name = "TX-", .port = GPIOC, .pin = GPIO10, .type = USB_PIN_TYPE_DIFFERENTIAL, }, { .name = "TX+", .port = GPIOC, .pin = GPIO11, .type = USB_PIN_TYPE_DIFFERENTIAL, }, // C host { .name = "shield", .port = GPIOG, .pin = GPIO13, .type = USB_PIN_TYPE_SHIELD, }, { .name = "GND-A1", .port = GPIOD, .pin = GPIO15, .type = USB_PIN_TYPE_GROUND, }, { .name = "TXp1", .port = GPIOG, .pin = GPIO3, .type = USB_PIN_TYPE_DIFFERENTIAL, }, { .name = "TXn1", .port = GPIOG, .pin = GPIO5, .type = USB_PIN_TYPE_DIFFERENTIAL, }, { .name = "VBUS-A4", .port = GPIOG, .pin = GPIO7, .type = USB_PIN_TYPE_POWER, }, { .name = "CC1", .port = GPIOC, .pin = GPIO6, .type = USB_PIN_TYPE_POWER, // can be used to power eMarker }, { .name = "Dp1", .port = GPIOC, .pin = GPIO8, .type = USB_PIN_TYPE_DIFFERENTIAL, }, { .name = "Dn1", .port = GPIOA, .pin = GPIO8, .type = USB_PIN_TYPE_DIFFERENTIAL, }, { .name = "SBU1", .port = GPIOA, .pin = GPIO10, .type = USB_PIN_TYPE_OTHER, }, { .name = "VBUS-A9", .port = GPIOG, .pin = GPIO11, .type = USB_PIN_TYPE_POWER, }, { .name = "RXn2", .port = GPIOA, .pin = GPIO9, .type = USB_PIN_TYPE_DIFFERENTIAL, }, { .name = "RXp2", .port = GPIOC, .pin = GPIO9, .type = USB_PIN_TYPE_DIFFERENTIAL, }, { .name = "GND-A12", .port = GPIOC, .pin = GPIO7, .type = USB_PIN_TYPE_GROUND, }, { .name = "GND-B1", .port = GPIOD, .pin = GPIO3, .type = USB_PIN_TYPE_GROUND, }, { .name = "TXp2", .port = GPIOD, .pin = GPIO2, .type = USB_PIN_TYPE_DIFFERENTIAL, }, { .name = "TXn2", .port = GPIOD, .pin = GPIO4, .type = USB_PIN_TYPE_DIFFERENTIAL, }, { .name = "VBUS-B4", .port = GPIOD, .pin = GPIO5, .type = USB_PIN_TYPE_POWER, }, { .name = "CC2", .port = GPIOD, .pin = GPIO1, .type = USB_PIN_TYPE_POWER, // can be used to power eMarker }, { .name = "Dp2", .port = GPIOD, .pin = GPIO6, .type = USB_PIN_TYPE_DIFFERENTIAL, }, { .name = "Dn2", .port = GPIOD, .pin = GPIO7, .type = USB_PIN_TYPE_DIFFERENTIAL, }, { .name = "SBU2", .port = GPIOG, .pin = GPIO15, .type = USB_PIN_TYPE_OTHER, }, { .name = "VBUS-B9", .port = GPIOG, .pin = GPIO9, .type = USB_PIN_TYPE_POWER, }, { .name = "RXn1", .port = GPIOG, .pin = GPIO10, .type = USB_PIN_TYPE_DIFFERENTIAL, }, { .name = "RXp1", .port = GPIOG, .pin = GPIO14, .type = USB_PIN_TYPE_DIFFERENTIAL, }, { .name = "GND-B12", .port = GPIOG, .pin = GPIO12, .type = USB_PIN_TYPE_GROUND, }, // A device { .name = "shield", .port = GPIOB, .pin = GPIO3, .type = USB_PIN_TYPE_SHIELD, }, { .name = "VBUS", .port = GPIOE, .pin = GPIO3, .type = USB_PIN_TYPE_POWER, }, { .name = "D-", .port = GPIOE, .pin = GPIO1, .type = USB_PIN_TYPE_DIFFERENTIAL, }, { .name = "D+", .port = GPIOB, .pin = GPIO9, .type = USB_PIN_TYPE_DIFFERENTIAL, }, { .name = "GND", .port = GPIOB, .pin = GPIO5, .type = USB_PIN_TYPE_GROUND, }, { .name = "RX-", .port = GPIOB, .pin = GPIO4, .type = USB_PIN_TYPE_DIFFERENTIAL, }, { .name = "RX+", .port = GPIOB, .pin = GPIO8, .type = USB_PIN_TYPE_DIFFERENTIAL, }, { .name = "GND_DRAIN", .port = GPIOE, .pin = GPIO0, .type = USB_PIN_TYPE_GROUND, }, { .name = "TX-", .port = GPIOC, .pin = GPIO13, .type = USB_PIN_TYPE_DIFFERENTIAL, }, { .name = "TX+", .port = GPIOE, .pin = GPIO2, .type = USB_PIN_TYPE_DIFFERENTIAL, }, // B { .name = "shield", .port = GPIOF, .pin = GPIO1, .type = USB_PIN_TYPE_SHIELD, }, { .name = "VBUS", .port = GPIOC, .pin = GPIO3, .type = USB_PIN_TYPE_POWER, }, { .name = "D-", .port = GPIOA, .pin = GPIO0, .type = USB_PIN_TYPE_DIFFERENTIAL, }, { .name = "D+", .port = GPIOA, .pin = GPIO4, .type = USB_PIN_TYPE_DIFFERENTIAL, }, { .name = "GND", .port = GPIOC, .pin = GPIO0, .type = USB_PIN_TYPE_GROUND, }, { .name = "TX-", .port = GPIOA, .pin = GPIO2, .type = USB_PIN_TYPE_DIFFERENTIAL, }, { .name = "TX+", .port = GPIOA, .pin = GPIO1, .type = USB_PIN_TYPE_DIFFERENTIAL, }, { .name = "GND_DRAIN", .port = GPIOF, .pin = GPIO6, .type = USB_PIN_TYPE_GROUND, }, { .name = "RX-", .port = GPIOC, .pin = GPIO2, .type = USB_PIN_TYPE_DIFFERENTIAL, }, { .name = "RX+", .port = GPIOC, .pin = GPIO1, .type = USB_PIN_TYPE_DIFFERENTIAL, }, // mini-B { .name = "shield", .port = GPIOC, .pin = GPIO14, .type = USB_PIN_TYPE_SHIELD, }, { .name = "VBUS", .port = GPIOE, .pin = GPIO4, .type = USB_PIN_TYPE_POWER, }, { .name = "D-", .port = GPIOE, .pin = GPIO5, .type = USB_PIN_TYPE_DIFFERENTIAL, }, { .name = "D+", .port = GPIOE, .pin = GPIO6, .type = USB_PIN_TYPE_DIFFERENTIAL, }, { .name = "ID", .port = GPIOF, .pin = GPIO0, .type = USB_PIN_TYPE_IDENTIFICATION, }, { .name = "GND", .port = GPIOC, .pin = GPIO15, .type = USB_PIN_TYPE_GROUND, }, // micro-B { .name = "shield", .port = GPIOD, .pin = GPIO12, .type = USB_PIN_TYPE_SHIELD, }, { .name = "VBUS", .port = GPIOD, .pin = GPIO11, .type = USB_PIN_TYPE_POWER, }, { .name = "D-", .port = GPIOD, .pin = GPIO10, .type = USB_PIN_TYPE_DIFFERENTIAL, }, { .name = "D+", .port = GPIOD, .pin = GPIO9, .type = USB_PIN_TYPE_DIFFERENTIAL, }, { .name = "ID", .port = GPIOD, .pin = GPIO8, .type = USB_PIN_TYPE_IDENTIFICATION, }, { .name = "GND", .port = GPIOB, .pin = GPIO15, .type = USB_PIN_TYPE_GROUND, }, { .name = "TX-", .port = GPIOB, .pin = GPIO14, .type = USB_PIN_TYPE_DIFFERENTIAL, }, { .name = "TX+", .port = GPIOB, .pin = GPIO13, .type = USB_PIN_TYPE_DIFFERENTIAL, }, { .name = "GND_DRAIN", .port = GPIOB, .pin = GPIO11, .type = USB_PIN_TYPE_GROUND, }, { .name = "RX-", .port = GPIOB, .pin = GPIO10, .type = USB_PIN_TYPE_DIFFERENTIAL, }, { .name = "RX+", .port = GPIOB, .pin = GPIO12, .type = USB_PIN_TYPE_DIFFERENTIAL, }, // C device { .name = "shield", .port = GPIOE, .pin = GPIO11, .type = USB_PIN_TYPE_SHIELD, }, { .name = "GND-A1", .port = GPIOF, .pin = GPIO13, .type = USB_PIN_TYPE_GROUND, }, { .name = "TXp1", .port = GPIOF, .pin = GPIO12, .type = USB_PIN_TYPE_DIFFERENTIAL, }, { .name = "TXn1", .port = GPIOF, .pin = GPIO11, .type = USB_PIN_TYPE_DIFFERENTIAL, }, { .name = "VBUS-A4", .port = GPIOB, .pin = GPIO2, .type = USB_PIN_TYPE_POWER, }, { .name = "CC1", .port = GPIOB, .pin = GPIO1, .type = USB_PIN_TYPE_POWER, // can be used to power eMarker }, { .name = "Dp1", .port = GPIOB, .pin = GPIO0, .type = USB_PIN_TYPE_DIFFERENTIAL, }, { .name = "Dn1", .port = GPIOC, .pin = GPIO5, .type = USB_PIN_TYPE_DIFFERENTIAL, }, { .name = "SBU1", .port = GPIOC, .pin = GPIO4, .type = USB_PIN_TYPE_OTHER, }, { .name = "VBUS-A9", .port = GPIOA, .pin = GPIO7, .type = USB_PIN_TYPE_POWER, }, { .name = "RXn2", .port = GPIOA, .pin = GPIO6, .type = USB_PIN_TYPE_DIFFERENTIAL, }, { .name = "RXp2", .port = GPIOA, .pin = GPIO5, .type = USB_PIN_TYPE_DIFFERENTIAL, }, { .name = "GND-A12", .port = GPIOA, .pin = GPIO3, .type = USB_PIN_TYPE_GROUND, }, { .name = "GND-B1", .port = GPIOF, .pin = GPIO14, .type = USB_PIN_TYPE_GROUND, }, { .name = "TXp2", .port = GPIOE, .pin = GPIO15, .type = USB_PIN_TYPE_DIFFERENTIAL, }, { .name = "TXn2", .port = GPIOF, .pin = GPIO15, .type = USB_PIN_TYPE_DIFFERENTIAL, }, { .name = "VBUS-B4", .port = GPIOG, .pin = GPIO0, .type = USB_PIN_TYPE_POWER, }, { .name = "CC2", .port = GPIOE, .pin = GPIO14, .type = USB_PIN_TYPE_POWER, // can be used to power eMarker }, { .name = "Dp2", .port = GPIOG, .pin = GPIO1, .type = USB_PIN_TYPE_DIFFERENTIAL, }, { .name = "Dn2", .port = GPIOE, .pin = GPIO7, .type = USB_PIN_TYPE_DIFFERENTIAL, }, { .name = "SBU2", .port = GPIOE, .pin = GPIO13, .type = USB_PIN_TYPE_OTHER, }, { .name = "VBUS-B9", .port = GPIOE, .pin = GPIO8, .type = USB_PIN_TYPE_POWER, }, { .name = "RXn1", .port = GPIOE, .pin = GPIO9, .type = USB_PIN_TYPE_DIFFERENTIAL, }, { .name = "RXp1", .port = GPIOE, .pin = GPIO12, .type = USB_PIN_TYPE_DIFFERENTIAL, }, { .name = "GND-B12", .port = GPIOE, .pin = GPIO10, .type = USB_PIN_TYPE_GROUND, }, // lightning { .name = "GND", .port = GPIOF, .pin = GPIO10, .type = USB_PIN_TYPE_GROUND, }, { .name = "L0p", .port = GPIOF, .pin = GPIO9, .type = USB_PIN_TYPE_DIFFERENTIAL, }, { .name = "L0n", .port = GPIOF, .pin = GPIO8, .type = USB_PIN_TYPE_DIFFERENTIAL, }, { .name = "ID0", .port = GPIOF, .pin = GPIO7, .type = USB_PIN_TYPE_IDENTIFICATION, }, { .name = "PWR", .port = GPIOF, .pin = GPIO5, .type = USB_PIN_TYPE_POWER, }, { .name = "L1n", .port = GPIOF, .pin = GPIO2, .type = USB_PIN_TYPE_DIFFERENTIAL, }, { .name = "L1p", .port = GPIOF, .pin = GPIO3, .type = USB_PIN_TYPE_DIFFERENTIAL, }, { .name = "ID1", .port = GPIOF, .pin = GPIO4, .type = USB_PIN_TYPE_IDENTIFICATION, }, }; /* USB connectors */ /** USB type A connector pins (host side) */ 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", .variant = "host", .pins_nb = LENGTH(usb_a_host_pins), .pins = usb_a_host_pins, }; /** USB-C connector ("host" side, "A" side first) pins */ static const uint8_t usb_c_host_sidea_pins[] = {10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34}; /** USB-C connector ("host" side, "B" side first) pins */ static const uint8_t usb_c_host_sideb_pins[] = {10, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22}; /** USB-C connector ("host" side) */ static const struct usb_connector_t usb_c_host_connector = { .name = "C", .variant = "host", .pins_nb = LENGTH(usb_c_host_sidea_pins), .pins = usb_c_host_sidea_pins, }; /** USB type A connector (device) pins */ static const uint8_t usb_a_device_pins[] = {35, 36, 37, 38, 39, 40, 41, 42, 43, 44}; /** USB type A connector (device) * @note type A should be a host side connector, but it is sometimes used on the device side, or to provide additional power on Y cables */ static const struct usb_connector_t usb_a_device_connector = { .name = "A", .variant = "device", .pins_nb = LENGTH(usb_a_device_pins), .pins = usb_a_device_pins, }; /** USB type B connector (device side) pins */ static const uint8_t usb_b_device_pins[] = {45, 46, 47, 48, 49, 50, 51, 52, 53, 54}; /** USB type B connector (device side) */ static const struct usb_connector_t usb_b_device_connector = { .name = "B", .variant = NULL, .pins_nb = LENGTH(usb_b_device_pins), .pins = usb_b_device_pins, }; /** USB mini-B connector (device side) */ static const uint8_t usb_minib_device_pins[] = {55, 56, 57, 58, 59, 60}; /** USB mini-B connector (device side) * @note this connector does not support USB 3.x */ static const struct usb_connector_t usb_minib_device_connector = { .name = "mini-B", .variant = NULL, .pins_nb = LENGTH(usb_minib_device_pins), .pins = usb_minib_device_pins, }; /** USB micro-B connector (device side) pins */ static const uint8_t usb_microb_device_pins[] = {61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71}; /** USB micro-B connector (device side) */ static const struct usb_connector_t usb_microb_device_connector = { .name = "micro-B", .variant = NULL, .pins_nb = LENGTH(usb_microb_device_pins), .pins = usb_microb_device_pins, }; /** USB-C connector ("device" side, "A" side first) pins */ static const uint8_t usb_c_device_sidea_pins[] = {72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96}; /** USB-C connector ("device" side, "B" side first) pins */ static const uint8_t usb_c_device_sideb_pins[] = {72, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84}; /** USB-C connector ("device" side) */ static const struct usb_connector_t usb_c_device_connector = { .name = "C", .variant = "device", .pins_nb = LENGTH(usb_c_device_sidea_pins), .pins = usb_c_device_sidea_pins, }; /** Apple lightning connector (device side) pins */ static const uint8_t lighnting_device_pins[] = {97, 98, 99, 100, 101, 102, 103, 104}; /** Apple lightning connector (device side) * @note this is not strictly a USB connector */ static const struct usb_connector_t lightning_device_connector = { .name = "lightning", .variant = NULL, .pins_nb = LENGTH(lighnting_device_pins), .pins = lighnting_device_pins, }; const struct usb_connector_t* usb_connectors[] = { &usb_a_host_connector, &usb_c_host_connector, &usb_a_device_connector, &usb_b_device_connector, &usb_minib_device_connector, &usb_microb_device_connector, &usb_c_device_connector, &lightning_device_connector, }; /* USB cables definitions */ /** list of connectors for A-A cables */ static const struct usb_connector_t* usb_a_a_connectors[] = { &usb_a_host_connector, &usb_a_device_connector, }; /** USB type A to type A power cable pin pairs * @implements this cable is not specified since it does not carry USB data signals * @note A-A cable are not specified since they use a host connector on both sides */ static const uint8_t usb_aa0_pins[][2] = { {usb_a_host_pins[1], usb_a_device_pins[1]}, // VBUS {usb_a_host_pins[4], usb_a_device_pins[4]}, // GND }; /** USB type A to type A USB 2.0 cable pin pairs * @implements this cable is not specified since it does not carry USB data signals * @note A-A cable are not specified since they use a host connector on both sides, but some cheap devices use it because the connector is cheap */ static const uint8_t usb_aa2_pins[][2] = { {usb_a_host_pins[0], usb_a_device_pins[0]}, // shield {usb_a_host_pins[1], usb_a_device_pins[1]}, // VBUS {usb_a_host_pins[2], usb_a_device_pins[2]}, // D- {usb_a_host_pins[3], usb_a_device_pins[3]}, // D+ {usb_a_host_pins[4], usb_a_device_pins[4]}, // GND }; /** USB type A to type A USB 3.x cable pin pairs * @implements this cable is not specified since it does not carry USB data signals * @note A-A cable are not specified since they use a host connector on both sides, but it is often used on PCIe raiser boards */ static const uint8_t usb_aa3_pins[][2] = { {usb_a_host_pins[0], usb_a_device_pins[0]}, // shield {usb_a_host_pins[1], usb_a_device_pins[1]}, // VBUS {usb_a_host_pins[2], usb_a_device_pins[2]}, // D- {usb_a_host_pins[3], usb_a_device_pins[3]}, // D+ {usb_a_host_pins[4], usb_a_device_pins[4]}, // GND {usb_a_host_pins[5], usb_a_device_pins[5]}, // RX-, TX- {usb_a_host_pins[6], usb_a_device_pins[6]}, // RX+, TX+ {usb_a_host_pins[7], usb_a_device_pins[7]}, // GND_DRAIN {usb_a_host_pins[8], usb_a_device_pins[8]}, // TX-, RX- {usb_a_host_pins[9], usb_a_device_pins[9]}, // TX+, RX+ }; /** list of connectors for A-B cables (using A host connector) */ static const struct usb_connector_t* usb_a_host_b_connectors[] = { &usb_a_host_connector, &usb_b_device_connector, }; /** USB type A to type B power only cable pin pairs * @implements this cable is not specified since it does not carry USB data signals */ static const uint8_t usb__a_host__b__ab0_pins[][2] = { {usb_a_host_pins[1], usb_b_device_pins[1]}, // VBUS {usb_a_host_pins[4], usb_b_device_pins[4]}, // GND }; /** USB type A to type B USB 2.0 cable pin pairs * @implements USB Cables and Connectors Class 2.0 (https://www.usb.org/document-library/cables-and-connectors-class-20) * @note the shield is mandatory */ static const uint8_t usb__a_host__b__ab2_pins[][2] = { {usb_a_host_pins[0], usb_b_device_pins[0]}, // shield {usb_a_host_pins[1], usb_b_device_pins[1]}, // VBUS {usb_a_host_pins[2], usb_b_device_pins[2]}, // D- {usb_a_host_pins[3], usb_b_device_pins[3]}, // D+ {usb_a_host_pins[4], usb_b_device_pins[4]}, // GND }; /** USB type A to type B USB 3.x cable pin pairs * @implements USB 3.1 Legacy Cable and Connector (https://www.usb.org/document-library/usb-31-legacy-cable-and-connector-revision-10) * @note the shield is mandatory */ static const uint8_t usb__a_host__b__ab3_pins[][2] = { {usb_a_host_pins[0], usb_b_device_pins[0]}, // shield {usb_a_host_pins[1], usb_b_device_pins[1]}, // VBUS {usb_a_host_pins[2], usb_b_device_pins[2]}, // D- {usb_a_host_pins[3], usb_b_device_pins[3]}, // D+ {usb_a_host_pins[4], usb_b_device_pins[4]}, // GND {usb_a_host_pins[5], usb_b_device_pins[5]}, // RX-, TX- {usb_a_host_pins[6], usb_b_device_pins[6]}, // RX+, TX+ {usb_a_host_pins[7], usb_b_device_pins[7]}, // GND_DRAIN {usb_a_host_pins[8], usb_b_device_pins[8]}, // TX-, RX- {usb_a_host_pins[9], usb_b_device_pins[9]}, // TX+, RX+ }; /** list of connectors for A-B cables (using A device connector) */ static const struct usb_connector_t* usb_a_device_b_connectors[] = { &usb_a_device_connector, &usb_b_device_connector, }; static const uint8_t usb__a_device__b__ab0_pins[][2] = { {usb_a_device_pins[1], usb_b_device_pins[1]}, // VBUS {usb_a_device_pins[4], usb_b_device_pins[4]}, // GND }; static const uint8_t usb__a_device__b__ab2_pins[][2] = { {usb_a_device_pins[0], usb_b_device_pins[0]}, // shield {usb_a_device_pins[1], usb_b_device_pins[1]}, // VBUS {usb_a_device_pins[2], usb_b_device_pins[2]}, // D- {usb_a_device_pins[3], usb_b_device_pins[3]}, // D+ {usb_a_device_pins[4], usb_b_device_pins[4]}, // GND }; static const uint8_t usb__a_device__b__ab3_pins[][2] = { {usb_a_device_pins[0], usb_b_device_pins[0]}, // shield {usb_a_device_pins[1], usb_b_device_pins[1]}, // VBUS {usb_a_device_pins[2], usb_b_device_pins[2]}, // D- {usb_a_device_pins[3], usb_b_device_pins[3]}, // D+ {usb_a_device_pins[4], usb_b_device_pins[4]}, // GND {usb_a_device_pins[5], usb_b_device_pins[5]}, // RX-, TX- {usb_a_device_pins[6], usb_b_device_pins[6]}, // RX+, TX+ {usb_a_device_pins[7], usb_b_device_pins[7]}, // GND_DRAIN {usb_a_device_pins[8], usb_b_device_pins[8]}, // TX-, RX- {usb_a_device_pins[9], usb_b_device_pins[9]}, // TX+, RX+ }; /** list of connectors for A+A-B cables */ static const struct usb_connector_t* usb_a_a_b_connectors[] = { &usb_a_host_connector, &usb_a_device_connector, &usb_b_device_connector, }; /** USB type A to type B USB 2.0, with additional A for power cable pin pairs, * @implements this cable is not specified */ static const uint8_t usb_a_host_a_device_b_aab2_pins[][2] = { {usb_a_host_pins[0], usb_b_device_pins[0]}, // shield {usb_a_host_pins[1], usb_b_device_pins[1]}, // VBUS {usb_a_host_pins[2], usb_b_device_pins[2]}, // D- {usb_a_host_pins[3], usb_b_device_pins[3]}, // D+ {usb_a_host_pins[4], usb_b_device_pins[4]}, // GND {usb_a_host_pins[1], usb_a_device_pins[1]}, // VBUS {usb_a_host_pins[4], usb_a_device_pins[4]}, // GND {usb_a_device_pins[1], usb_b_device_pins[1]}, // VBUS {usb_a_device_pins[4], usb_b_device_pins[4]}, // GND }; static const uint8_t usb_a_device_a_host_b_aab2_pins[][2] = { {usb_a_device_pins[0], usb_b_device_pins[0]}, // shield {usb_a_host_pins[1], usb_b_device_pins[1]}, // VBUS {usb_a_device_pins[2], usb_b_device_pins[2]}, // D- {usb_a_device_pins[3], usb_b_device_pins[3]}, // D+ {usb_a_host_pins[4], usb_b_device_pins[4]}, // GND {usb_a_host_pins[1], usb_a_device_pins[1]}, // VBUS {usb_a_host_pins[4], usb_a_device_pins[4]}, // GND {usb_a_device_pins[1], usb_b_device_pins[1]}, // VBUS {usb_a_device_pins[4], usb_b_device_pins[4]}, // GND }; /** list of connectors for A-miniB cables (using A host connector) */ static const struct usb_connector_t* usb_a_host_minib_connectors[] = { &usb_a_host_connector, &usb_minib_device_connector, }; /** USB type A to type mini-B power only cable pin pairs * @implements this cable is not specified since it does not carry USB data signals */ static const uint8_t usb__a_host__minib__amb0_pins[][2] = { {usb_a_host_pins[1], usb_minib_device_pins[1]}, // VBUS {usb_a_host_pins[4], usb_minib_device_pins[5]}, // GND }; /** USB type A to type mini-B USB 2.0 cable pin pairs * @implements USB Cables and Connectors Class 2.0 (https://www.usb.org/document-library/cables-and-connectors-class-20) * @note the shield is mandatory */ static const uint8_t usb__a_host__minib__amb2_pins[][2] = { {usb_a_host_pins[0], usb_minib_device_pins[0]}, // shield {usb_a_host_pins[1], usb_minib_device_pins[1]}, // VBUS {usb_a_host_pins[2], usb_minib_device_pins[2]}, // D- {usb_a_host_pins[3], usb_minib_device_pins[3]}, // D+ {usb_a_host_pins[4], usb_minib_device_pins[5]}, // GND }; /** list of connectors for A-miniB cables (using A device connector) */ static const struct usb_connector_t* usb_a_device_minib_connectors[] = { &usb_a_device_connector, &usb_minib_device_connector, }; static const uint8_t usb__a_device__minib__amb0_pins[][2] = { {usb_a_device_pins[1], usb_minib_device_pins[1]}, // VBUS {usb_a_device_pins[4], usb_minib_device_pins[5]}, // GND }; static const uint8_t usb__a_device__minib__amb2_pins[][2] = { {usb_a_device_pins[0], usb_minib_device_pins[0]}, // shield {usb_a_device_pins[1], usb_minib_device_pins[1]}, // VBUS {usb_a_device_pins[2], usb_minib_device_pins[2]}, // D- {usb_a_device_pins[3], usb_minib_device_pins[3]}, // D+ {usb_a_device_pins[4], usb_minib_device_pins[5]}, // GND }; /** list of connectors for A+A-B cables */ static const struct usb_connector_t* usb_a_a_minib_connectors[] = { &usb_a_host_connector, &usb_a_device_connector, &usb_minib_device_connector, }; /** USB type A to type B USB 2.0, with additional A for power cable pin pairs, * @implements this cable is not specified */ static const uint8_t usb_a_host_a_device_minib_aamb2_pins[][2] = { {usb_a_host_pins[0], usb_minib_device_pins[0]}, // shield {usb_a_host_pins[1], usb_minib_device_pins[1]}, // VBUS {usb_a_host_pins[2], usb_minib_device_pins[2]}, // D- {usb_a_host_pins[3], usb_minib_device_pins[3]}, // D+ {usb_a_host_pins[4], usb_minib_device_pins[4]}, // GND {usb_a_host_pins[1], usb_a_device_pins[1]}, // VBUS {usb_a_host_pins[4], usb_a_device_pins[4]}, // GND {usb_a_device_pins[1], usb_minib_device_pins[1]}, // VBUS {usb_a_device_pins[4], usb_minib_device_pins[4]}, // GND }; static const uint8_t usb_a_device_a_host_minib_aamb2_pins[][2] = { {usb_a_device_pins[0], usb_minib_device_pins[0]}, // shield {usb_a_host_pins[1], usb_minib_device_pins[1]}, // VBUS {usb_a_device_pins[2], usb_minib_device_pins[2]}, // D- {usb_a_device_pins[3], usb_minib_device_pins[3]}, // D+ {usb_a_host_pins[4], usb_minib_device_pins[4]}, // GND {usb_a_host_pins[1], usb_a_device_pins[1]}, // VBUS {usb_a_host_pins[4], usb_a_device_pins[4]}, // GND {usb_a_device_pins[1], usb_minib_device_pins[1]}, // VBUS {usb_a_device_pins[4], usb_minib_device_pins[4]}, // GND }; /** list of connectors for A-microB cables (using A host connector) */ static const struct usb_connector_t* usb_a_host_microb_connectors[] = { &usb_a_host_connector, &usb_microb_device_connector, }; /** USB type A to type micro-B power only cable pin pairs * @implements this cable is not specified since it does not carry USB data signals */ static const uint8_t usb__a_host__microb__aub0_pins[][2] = { {usb_a_host_pins[1], usb_microb_device_pins[1]}, // VBUS {usb_a_host_pins[4], usb_microb_device_pins[5]}, // GND }; /** USB type A to type micro-B USB 2.0 cable pin pairs * @implements USB Cables and Connectors Class 2.0 (https://www.usb.org/document-library/cables-and-connectors-class-20) * @note the shield is mandatory */ static const uint8_t usb__a_host__microb__aub2_pins[][2] = { {usb_a_host_pins[0], usb_microb_device_pins[0]}, // shield {usb_a_host_pins[1], usb_microb_device_pins[1]}, // VBUS {usb_a_host_pins[2], usb_microb_device_pins[2]}, // D- {usb_a_host_pins[3], usb_microb_device_pins[3]}, // D+ {usb_a_host_pins[4], usb_microb_device_pins[5]}, // GND }; /** USB type A to type micro-B USB 3.x cable pin pairs * @implements USB 3.1 Legacy Cable and Connector (https://www.usb.org/document-library/usb-31-legacy-cable-and-connector-revision-10) * @note the shield is mandatory */ static const uint8_t usb__a_host__microb__aub3_pins[][2] = { {usb_a_host_pins[0], usb_microb_device_pins[0]}, // shield {usb_a_host_pins[1], usb_microb_device_pins[1]}, // VBUS {usb_a_host_pins[2], usb_microb_device_pins[2]}, // D- {usb_a_host_pins[3], usb_microb_device_pins[3]}, // D+ {usb_a_host_pins[4], usb_microb_device_pins[5]}, // GND {usb_a_host_pins[5], usb_microb_device_pins[6]}, // RX-, TX- {usb_a_host_pins[6], usb_microb_device_pins[7]}, // RX+, TX+ {usb_a_host_pins[7], usb_microb_device_pins[8]}, // GND_DRAIN {usb_a_host_pins[8], usb_microb_device_pins[9]}, // TX-, RX- {usb_a_host_pins[9], usb_microb_device_pins[10]}, // TX+, RX+ }; /** list of connectors for A-microB cables (using A device connector) */ static const struct usb_connector_t* usb_a_device_microb_connectors[] = { &usb_a_device_connector, &usb_microb_device_connector, }; static const uint8_t usb__a_device__microb__aub0_pins[][2] = { {usb_a_device_pins[1], usb_microb_device_pins[1]}, // VBUS {usb_a_device_pins[4], usb_microb_device_pins[5]}, // GND }; static const uint8_t usb__a_device__microb__aub2_pins[][2] = { {usb_a_device_pins[0], usb_microb_device_pins[0]}, // shield {usb_a_device_pins[1], usb_microb_device_pins[1]}, // VBUS {usb_a_device_pins[2], usb_microb_device_pins[2]}, // D- {usb_a_device_pins[3], usb_microb_device_pins[3]}, // D+ {usb_a_device_pins[4], usb_microb_device_pins[5]}, // GND }; static const uint8_t usb__a_device__microb__aub3_pins[][2] = { {usb_a_device_pins[0], usb_microb_device_pins[0]}, // shield {usb_a_device_pins[1], usb_microb_device_pins[1]}, // VBUS {usb_a_device_pins[2], usb_microb_device_pins[2]}, // D- {usb_a_device_pins[3], usb_microb_device_pins[3]}, // D+ {usb_a_device_pins[4], usb_microb_device_pins[5]}, // GND {usb_a_device_pins[5], usb_microb_device_pins[6]}, // RX-, TX- {usb_a_device_pins[6], usb_microb_device_pins[7]}, // RX+, TX+ {usb_a_device_pins[7], usb_microb_device_pins[8]}, // GND_DRAIN {usb_a_device_pins[8], usb_microb_device_pins[9]}, // TX-, RX- {usb_a_device_pins[9], usb_microb_device_pins[10]}, // TX+, RX+ }; /** list of connectors for C shunts (using C host connector) */ static const struct usb_connector_t* usb_c_host_connectors[] = { &usb_c_host_connector, }; /** this is not a cable, but a shunt shorting opposite signal the type C connector so to test it */ static const uint8_t usb__c_host__c_host__cshunt_pins[][2] = { {usb_c_host_sidea_pins[1], usb_c_host_sideb_pins[12]}, // A1 GND, B12 GND {usb_c_host_sidea_pins[2], usb_c_host_sideb_pins[11]}, // A2 TXp1, B11 RXp1 {usb_c_host_sidea_pins[3], usb_c_host_sideb_pins[10]}, // A3 TXn1, B10 RXn1 {usb_c_host_sidea_pins[4], usb_c_host_sideb_pins[9]}, // A4 VBUS, B9 VBUS {usb_c_host_sidea_pins[5], usb_c_host_sideb_pins[8]}, // A5 CC1, B8 SBU2 {usb_c_host_sidea_pins[6], usb_c_host_sideb_pins[7]}, // A6 Dp1, B7 Dn2 {usb_c_host_sidea_pins[7], usb_c_host_sideb_pins[6]}, // A7 Dn1, B6 Dp2 {usb_c_host_sidea_pins[8], usb_c_host_sideb_pins[5]}, // A8 SBU1, B5 CC2 {usb_c_host_sidea_pins[9], usb_c_host_sideb_pins[4]}, // A9 VBUS, B4 VBUS {usb_c_host_sidea_pins[10], usb_c_host_sideb_pins[3]}, // A10 RXn2, B3 TXn2 {usb_c_host_sidea_pins[11], usb_c_host_sideb_pins[2]}, // A11 RXp2, B2 TXp2 {usb_c_host_sidea_pins[12], usb_c_host_sideb_pins[1]}, // A12 GND, B1 GND }; /** list of connectors for C shunts (using C device connector) */ static const struct usb_connector_t* usb_c_device_connectors[] = { &usb_c_device_connector, }; static const uint8_t usb__c_device__c_device__cshunt_pins[][2] = { {usb_c_device_sidea_pins[1], usb_c_device_sideb_pins[12]}, // A1 GND, B12 GND {usb_c_device_sidea_pins[2], usb_c_device_sideb_pins[11]}, // A2 TXp1, B11 RXp1 {usb_c_device_sidea_pins[3], usb_c_device_sideb_pins[10]}, // A3 TXn1, B10 RXn1 {usb_c_device_sidea_pins[4], usb_c_device_sideb_pins[9]}, // A4 VBUS, B9 VBUS {usb_c_device_sidea_pins[5], usb_c_device_sideb_pins[8]}, // A5 CC1, B8 SBU2 {usb_c_device_sidea_pins[6], usb_c_device_sideb_pins[7]}, // A6 Dp1, B7 Dn2 {usb_c_device_sidea_pins[7], usb_c_device_sideb_pins[6]}, // A7 Dn1, B6 Dp2 {usb_c_device_sidea_pins[8], usb_c_device_sideb_pins[5]}, // A8 SBU1, B5 CC2 {usb_c_device_sidea_pins[9], usb_c_device_sideb_pins[4]}, // A9 VBUS, B4 VBUS {usb_c_device_sidea_pins[10], usb_c_device_sideb_pins[3]}, // A10 RXn2, B3 TXn2 {usb_c_device_sidea_pins[11], usb_c_device_sideb_pins[2]}, // A11 RXp2, B2 TXp2 {usb_c_device_sidea_pins[12], usb_c_device_sideb_pins[1]}, // A12 GND, B1 GND }; /** list of connectors for A-C cables (using A host connector and C host connector) */ static const struct usb_connector_t* usb_a_host_c_host_connectors[] = { &usb_a_host_connector, &usb_c_host_connector, }; /** list of connectors for A-C cables (using A host connector and C device connector) */ static const struct usb_connector_t* usb_a_host_c_device_connectors[] = { &usb_a_host_connector, &usb_c_device_connector, }; /** list of connectors for A-C cables (using A device connector and C host connector) */ static const struct usb_connector_t* usb_a_device_c_host_connectors[] = { &usb_a_device_connector, &usb_c_host_connector, }; /** list of connectors for A-C cables (using A device connector and C device connector) */ static const struct usb_connector_t* usb_a_device_c_device_connectors[] = { &usb_a_device_connector, &usb_c_device_connector, }; /** USB type A to type C power only cable pin pairs * @implements this cable is not specified since it does not carry USB signals */ static const uint8_t usb__a_host__c_host_sidea__ac0_pins[][2] = { // C internal connections {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[1]}, // shield, A1 GND {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12]}, // shield, A12 GND {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 12]}, // shield, B12 GND {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 1]}, // shield, B1 GND {usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12]}, // A1 GND, A12 GND {usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_host_sidea_pins[12 + 1], usb_c_host_sidea_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_host_sidea_pins[12 + 9], usb_c_host_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[4]}, // CC1, A4 VBUS (56kO) {usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[9]}, // CC1, A9 VBUS (56kO) {usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[16]}, // CC1, B9 VBUS (56kO) {usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[21]}, // CC1, B4 VBUS (56kO) // A-C connections {usb_a_host_pins[1], usb_c_host_sidea_pins[4]}, // VBUS, A4 VBUS {usb_a_host_pins[1], usb_c_host_sidea_pins[9]}, // VBUS, A9 VBUS {usb_a_host_pins[1], usb_c_host_sidea_pins[12 + 9]}, // VBUS, B9 VBUS {usb_a_host_pins[1], usb_c_host_sidea_pins[12 + 4]}, // VBUS, B4 VBUS {usb_a_host_pins[4], usb_c_host_sidea_pins[0]}, // GND, shield {usb_a_host_pins[4], usb_c_host_sidea_pins[1]}, // GND, A1 GND {usb_a_host_pins[4], usb_c_host_sidea_pins[12]}, // GND, A12 GND {usb_a_host_pins[4], usb_c_host_sidea_pins[12 + 12]}, // GND, B12 GND {usb_a_host_pins[4], usb_c_host_sidea_pins[12 + 1]}, // GND, B1 GND {usb_a_host_pins[1], usb_c_host_sidea_pins[5]}, // VBUS - A5 CC1 (56kO) }; static const uint8_t usb__a_host__c_host_sideb__ac0_pins[][2] = { // C internal connections {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[1]}, // shield, A1 GND {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12]}, // shield, A12 GND {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 12]}, // shield, B12 GND {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 1]}, // shield, B1 GND {usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12]}, // A1 GND, A12 GND {usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_host_sideb_pins[12 + 1], usb_c_host_sideb_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_host_sideb_pins[12 + 9], usb_c_host_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[4]}, // CC1, A4 VBUS (56kO) {usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[9]}, // CC1, A9 VBUS (56kO) {usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[16]}, // CC1, B9 VBUS (56kO) {usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[21]}, // CC1, B4 VBUS (56kO) // A-C connections {usb_a_host_pins[1], usb_c_host_sideb_pins[4]}, // VBUS, A4 VBUS {usb_a_host_pins[1], usb_c_host_sideb_pins[9]}, // VBUS, A9 VBUS {usb_a_host_pins[1], usb_c_host_sideb_pins[12 + 9]}, // VBUS, B9 VBUS {usb_a_host_pins[1], usb_c_host_sideb_pins[12 + 4]}, // VBUS, B4 VBUS {usb_a_host_pins[4], usb_c_host_sideb_pins[0]}, // GND, shield {usb_a_host_pins[4], usb_c_host_sideb_pins[1]}, // GND, A1 GND {usb_a_host_pins[4], usb_c_host_sideb_pins[12]}, // GND, A12 GND {usb_a_host_pins[4], usb_c_host_sideb_pins[12 + 12]}, // GND, B12 GND {usb_a_host_pins[4], usb_c_host_sideb_pins[12 + 1]}, // GND, B1 GND {usb_a_host_pins[1], usb_c_host_sideb_pins[5]}, // VBUS - A5 CC1 (56kO) }; static const uint8_t usb__a_host__c_device_sidea__ac0_pins[][2] = { // C internal connections {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND {usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12]}, // A1 GND, A12 GND {usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_device_sidea_pins[12 + 1], usb_c_device_sidea_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_device_sidea_pins[12 + 9], usb_c_device_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[4]}, // CC1, A4 VBUS (56kO) {usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[9]}, // CC1, A9 VBUS (56kO) {usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[16]}, // CC1, B9 VBUS (56kO) {usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[21]}, // CC1, B4 VBUS (56kO) // A-C connections {usb_a_host_pins[1], usb_c_device_sidea_pins[4]}, // VBUS, A4 VBUS {usb_a_host_pins[1], usb_c_device_sidea_pins[9]}, // VBUS, A9 VBUS {usb_a_host_pins[1], usb_c_device_sidea_pins[12 + 9]}, // VBUS, B9 VBUS {usb_a_host_pins[1], usb_c_device_sidea_pins[12 + 4]}, // VBUS, B4 VBUS {usb_a_host_pins[4], usb_c_device_sidea_pins[0]}, // GND, shield {usb_a_host_pins[4], usb_c_device_sidea_pins[1]}, // GND, A1 GND {usb_a_host_pins[4], usb_c_device_sidea_pins[12]}, // GND, A12 GND {usb_a_host_pins[4], usb_c_device_sidea_pins[12 + 12]}, // GND, B12 GND {usb_a_host_pins[4], usb_c_device_sidea_pins[12 + 1]}, // GND, B1 GND {usb_a_host_pins[1], usb_c_device_sidea_pins[5]}, // VBUS - A5 CC1 (56kO) }; static const uint8_t usb__a_host__c_device_sideb__ac0_pins[][2] = { // C internal connections {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND {usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12]}, // A1 GND, A12 GND {usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_device_sideb_pins[12 + 1], usb_c_device_sideb_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_device_sideb_pins[12 + 9], usb_c_device_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[4]}, // CC1, A4 VBUS (56kO) {usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[9]}, // CC1, A9 VBUS (56kO) {usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[16]}, // CC1, B9 VBUS (56kO) {usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[21]}, // CC1, B4 VBUS (56kO) // A-C connections {usb_a_host_pins[1], usb_c_device_sideb_pins[4]}, // VBUS, A4 VBUS {usb_a_host_pins[1], usb_c_device_sideb_pins[9]}, // VBUS, A9 VBUS {usb_a_host_pins[1], usb_c_device_sideb_pins[12 + 9]}, // VBUS, B9 VBUS {usb_a_host_pins[1], usb_c_device_sideb_pins[12 + 4]}, // VBUS, B4 VBUS {usb_a_host_pins[4], usb_c_device_sideb_pins[0]}, // GND, shield {usb_a_host_pins[4], usb_c_device_sideb_pins[1]}, // GND, A1 GND {usb_a_host_pins[4], usb_c_device_sideb_pins[12]}, // GND, A12 GND {usb_a_host_pins[4], usb_c_device_sideb_pins[12 + 12]}, // GND, B12 GND {usb_a_host_pins[4], usb_c_device_sideb_pins[12 + 1]}, // GND, B1 GND {usb_a_host_pins[1], usb_c_device_sideb_pins[5]}, // VBUS - A5 CC1 (56kO) }; static const uint8_t usb__a_device__c_host_sidea__ac0_pins[][2] = { // C internal connections {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[1]}, // shield, A1 GND {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12]}, // shield, A12 GND {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 12]}, // shield, B12 GND {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 1]}, // shield, B1 GND {usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12]}, // A1 GND, A12 GND {usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_host_sidea_pins[12 + 1], usb_c_host_sidea_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_host_sidea_pins[12 + 9], usb_c_host_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[4]}, // CC1, A4 VBUS (56kO) {usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[9]}, // CC1, A9 VBUS (56kO) {usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[16]}, // CC1, B9 VBUS (56kO) {usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[21]}, // CC1, B4 VBUS (56kO) // A-C connections {usb_a_device_pins[1], usb_c_host_sidea_pins[4]}, // VBUS, A4 VBUS {usb_a_device_pins[1], usb_c_host_sidea_pins[9]}, // VBUS, A9 VBUS {usb_a_device_pins[1], usb_c_host_sidea_pins[12 + 9]}, // VBUS, B9 VBUS {usb_a_device_pins[1], usb_c_host_sidea_pins[12 + 4]}, // VBUS, B4 VBUS {usb_a_device_pins[4], usb_c_host_sidea_pins[0]}, // GND, shield {usb_a_device_pins[4], usb_c_host_sidea_pins[1]}, // GND, A1 GND {usb_a_device_pins[4], usb_c_host_sidea_pins[12]}, // GND, A12 GND {usb_a_device_pins[4], usb_c_host_sidea_pins[12 + 12]}, // GND, B12 GND {usb_a_device_pins[4], usb_c_host_sidea_pins[12 + 1]}, // GND, B1 GND {usb_a_device_pins[1], usb_c_host_sidea_pins[5]}, // VBUS - A5 CC1 (56kO) }; static const uint8_t usb__a_device__c_host_sideb__ac0_pins[][2] = { // C internal connections {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[1]}, // shield, A1 GND {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12]}, // shield, A12 GND {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 12]}, // shield, B12 GND {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 1]}, // shield, B1 GND {usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12]}, // A1 GND, A12 GND {usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_host_sideb_pins[12 + 1], usb_c_host_sideb_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_host_sideb_pins[12 + 9], usb_c_host_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[4]}, // CC1, A4 VBUS (56kO) {usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[9]}, // CC1, A9 VBUS (56kO) {usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[16]}, // CC1, B9 VBUS (56kO) {usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[21]}, // CC1, B4 VBUS (56kO) // A-C connections {usb_a_device_pins[1], usb_c_host_sideb_pins[4]}, // VBUS, A4 VBUS {usb_a_device_pins[1], usb_c_host_sideb_pins[9]}, // VBUS, A9 VBUS {usb_a_device_pins[1], usb_c_host_sideb_pins[12 + 9]}, // VBUS, B9 VBUS {usb_a_device_pins[1], usb_c_host_sideb_pins[12 + 4]}, // VBUS, B4 VBUS {usb_a_device_pins[4], usb_c_host_sideb_pins[0]}, // GND, shield {usb_a_device_pins[4], usb_c_host_sideb_pins[1]}, // GND, A1 GND {usb_a_device_pins[4], usb_c_host_sideb_pins[12]}, // GND, A12 GND {usb_a_device_pins[4], usb_c_host_sideb_pins[12 + 12]}, // GND, B12 GND {usb_a_device_pins[4], usb_c_host_sideb_pins[12 + 1]}, // GND, B1 GND {usb_a_device_pins[1], usb_c_host_sideb_pins[5]}, // VBUS - A5 CC1 (56kO) }; static const uint8_t usb__a_device__c_device_sidea__ac0_pins[][2] = { // C internal connections {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND {usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12]}, // A1 GND, A12 GND {usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_device_sidea_pins[12 + 1], usb_c_device_sidea_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_device_sidea_pins[12 + 9], usb_c_device_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[4]}, // CC1, A4 VBUS (56kO) {usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[9]}, // CC1, A9 VBUS (56kO) {usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[16]}, // CC1, B9 VBUS (56kO) {usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[21]}, // CC1, B4 VBUS (56kO) // A-C connections {usb_a_device_pins[1], usb_c_device_sidea_pins[4]}, // VBUS, A4 VBUS {usb_a_device_pins[1], usb_c_device_sidea_pins[9]}, // VBUS, A9 VBUS {usb_a_device_pins[1], usb_c_device_sidea_pins[12 + 9]}, // VBUS, B9 VBUS {usb_a_device_pins[1], usb_c_device_sidea_pins[12 + 4]}, // VBUS, B4 VBUS {usb_a_device_pins[4], usb_c_device_sidea_pins[0]}, // GND, shield {usb_a_device_pins[4], usb_c_device_sidea_pins[1]}, // GND, A1 GND {usb_a_device_pins[4], usb_c_device_sidea_pins[12]}, // GND, A12 GND {usb_a_device_pins[4], usb_c_device_sidea_pins[12 + 12]}, // GND, B12 GND {usb_a_device_pins[4], usb_c_device_sidea_pins[12 + 1]}, // GND, B1 GND {usb_a_device_pins[1], usb_c_device_sidea_pins[5]}, // VBUS - A5 CC1 (56kO) }; static const uint8_t usb__a_device__c_device_sideb__ac0_pins[][2] = { // C internal connections {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND {usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12]}, // A1 GND, A12 GND {usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_device_sideb_pins[12 + 1], usb_c_device_sideb_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_device_sideb_pins[12 + 9], usb_c_device_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[4]}, // CC1, A4 VBUS (56kO) {usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[9]}, // CC1, A9 VBUS (56kO) {usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[16]}, // CC1, B9 VBUS (56kO) {usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[21]}, // CC1, B4 VBUS (56kO) // A-C connections {usb_a_device_pins[1], usb_c_device_sideb_pins[4]}, // VBUS, A4 VBUS {usb_a_device_pins[1], usb_c_device_sideb_pins[9]}, // VBUS, A9 VBUS {usb_a_device_pins[1], usb_c_device_sideb_pins[12 + 9]}, // VBUS, B9 VBUS {usb_a_device_pins[1], usb_c_device_sideb_pins[12 + 4]}, // VBUS, B4 VBUS {usb_a_device_pins[4], usb_c_device_sideb_pins[0]}, // GND, shield {usb_a_device_pins[4], usb_c_device_sideb_pins[1]}, // GND, A1 GND {usb_a_device_pins[4], usb_c_device_sideb_pins[12]}, // GND, A12 GND {usb_a_device_pins[4], usb_c_device_sideb_pins[12 + 12]}, // GND, B12 GND {usb_a_device_pins[4], usb_c_device_sideb_pins[12 + 1]}, // GND, B1 GND {usb_a_device_pins[1], usb_c_device_sideb_pins[5]}, // VBUS - A5 CC1 (56kO) }; /** USB type A to type C USB 2.0 cable pin pairs * @implements AC2-3 from USB Type-C Cable and Connector Specification (https://www.usb.org/document-library/usb-type-cr-cable-and-connector-specification-revision-20-august-2019) */ static const uint8_t usb__a_host__c_host_sidea__ac2_pins[][2] = { // A internal connections {usb_a_host_pins[0], usb_a_host_pins[4]}, // shield, GND // C internal connections {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[1]}, // shield, A1 GND {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12]}, // shield, A12 GND {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 12]}, // shield, B12 GND {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 1]}, // shield, B1 GND {usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12]}, // A1 GND, A12 GND {usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_host_sidea_pins[12 + 1], usb_c_host_sidea_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_host_sidea_pins[12 + 9], usb_c_host_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[4]}, // CC1, A4 VBUS (56kO) {usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[9]}, // CC1, A9 VBUS (56kO) {usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[16]}, // CC1, B9 VBUS (56kO) {usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[21]}, // CC1, B4 VBUS (56kO) // A-C connections {usb_a_host_pins[1], usb_c_host_sidea_pins[4]}, // VBUS, A4 VBUS {usb_a_host_pins[1], usb_c_host_sidea_pins[9]}, // VBUS, A9 VBUS {usb_a_host_pins[1], usb_c_host_sidea_pins[12 + 9]}, // VBUS, B9 VBUS {usb_a_host_pins[1], usb_c_host_sidea_pins[12 + 4]}, // VBUS, B4 VBUS {usb_a_host_pins[0], usb_c_host_sidea_pins[0]}, // shield, shield {usb_a_host_pins[0], usb_c_host_sidea_pins[1]}, // shield, A1 GND {usb_a_host_pins[0], usb_c_host_sidea_pins[12]}, // shield, A12 GND {usb_a_host_pins[0], usb_c_host_sidea_pins[12 + 12]}, // shield, B12 GND {usb_a_host_pins[0], usb_c_host_sidea_pins[12 + 1]}, // shield, B1 GND {usb_a_host_pins[4], usb_c_host_sidea_pins[0]}, // GND, shield {usb_a_host_pins[4], usb_c_host_sidea_pins[1]}, // GND, A1 GND {usb_a_host_pins[4], usb_c_host_sidea_pins[12]}, // GND, A12 GND {usb_a_host_pins[4], usb_c_host_sidea_pins[12 + 12]}, // GND, B12 GND {usb_a_host_pins[4], usb_c_host_sidea_pins[12 + 1]}, // GND, B1 GND {usb_a_host_pins[2], usb_c_host_sidea_pins[7]}, // D-, A7 Dn1 {usb_a_host_pins[3], usb_c_host_sidea_pins[6]}, // D+, A6 Dp1 {usb_a_host_pins[1], usb_c_host_sidea_pins[5]}, // VBUS - A5 CC1 (56kO) }; static const uint8_t usb__a_host__c_host_sideb__ac2_pins[][2] = { // A internal connections {usb_a_host_pins[0], usb_a_host_pins[4]}, // shield, GND // C internal connections {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[1]}, // shield, A1 GND {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12]}, // shield, A12 GND {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 12]}, // shield, B12 GND {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 1]}, // shield, B1 GND {usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12]}, // A1 GND, A12 GND {usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_host_sideb_pins[12 + 1], usb_c_host_sideb_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_host_sideb_pins[12 + 9], usb_c_host_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[4]}, // CC1, A4 VBUS (56kO) {usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[9]}, // CC1, A9 VBUS (56kO) {usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[16]}, // CC1, B9 VBUS (56kO) {usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[21]}, // CC1, B4 VBUS (56kO) // A-C connections {usb_a_host_pins[1], usb_c_host_sideb_pins[4]}, // VBUS, A4 VBUS {usb_a_host_pins[1], usb_c_host_sideb_pins[9]}, // VBUS, A9 VBUS {usb_a_host_pins[1], usb_c_host_sideb_pins[12 + 9]}, // VBUS, B9 VBUS {usb_a_host_pins[1], usb_c_host_sideb_pins[12 + 4]}, // VBUS, B4 VBUS {usb_a_host_pins[0], usb_c_host_sideb_pins[0]}, // shield, shield {usb_a_host_pins[0], usb_c_host_sideb_pins[1]}, // shield, A1 GND {usb_a_host_pins[0], usb_c_host_sideb_pins[12]}, // shield, A12 GND {usb_a_host_pins[0], usb_c_host_sideb_pins[12 + 12]}, // shield, B12 GND {usb_a_host_pins[0], usb_c_host_sideb_pins[12 + 1]}, // shield, B1 GND {usb_a_host_pins[4], usb_c_host_sideb_pins[0]}, // GND, shield {usb_a_host_pins[4], usb_c_host_sideb_pins[1]}, // GND, A1 GND {usb_a_host_pins[4], usb_c_host_sideb_pins[12]}, // GND, A12 GND {usb_a_host_pins[4], usb_c_host_sideb_pins[12 + 12]}, // GND, B12 GND {usb_a_host_pins[4], usb_c_host_sideb_pins[12 + 1]}, // GND, B1 GND {usb_a_host_pins[2], usb_c_host_sideb_pins[7]}, // D-, A7 Dn1 {usb_a_host_pins[3], usb_c_host_sideb_pins[6]}, // D+, A6 Dp1 {usb_a_host_pins[1], usb_c_host_sideb_pins[5]}, // VBUS - A5 CC1 (56kO) }; static const uint8_t usb__a_host__c_device_sidea__ac2_pins[][2] = { // A internal connections {usb_a_host_pins[0], usb_a_host_pins[4]}, // shield, GND // C internal connections {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND {usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12]}, // A1 GND, A12 GND {usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_device_sidea_pins[12 + 1], usb_c_device_sidea_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_device_sidea_pins[12 + 9], usb_c_device_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[4]}, // CC1, A4 VBUS (56kO) {usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[9]}, // CC1, A9 VBUS (56kO) {usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[16]}, // CC1, B9 VBUS (56kO) {usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[21]}, // CC1, B4 VBUS (56kO) // A-C connections {usb_a_host_pins[1], usb_c_device_sidea_pins[4]}, // VBUS, A4 VBUS {usb_a_host_pins[1], usb_c_device_sidea_pins[9]}, // VBUS, A9 VBUS {usb_a_host_pins[1], usb_c_device_sidea_pins[12 + 9]}, // VBUS, B9 VBUS {usb_a_host_pins[1], usb_c_device_sidea_pins[12 + 4]}, // VBUS, B4 VBUS {usb_a_host_pins[0], usb_c_device_sidea_pins[0]}, // shield, shield {usb_a_host_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND {usb_a_host_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND {usb_a_host_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND {usb_a_host_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND {usb_a_host_pins[4], usb_c_device_sidea_pins[0]}, // GND, shield {usb_a_host_pins[4], usb_c_device_sidea_pins[1]}, // GND, A1 GND {usb_a_host_pins[4], usb_c_device_sidea_pins[12]}, // GND, A12 GND {usb_a_host_pins[4], usb_c_device_sidea_pins[12 + 12]}, // GND, B12 GND {usb_a_host_pins[4], usb_c_device_sidea_pins[12 + 1]}, // GND, B1 GND {usb_a_host_pins[2], usb_c_device_sidea_pins[7]}, // D-, A7 Dn1 {usb_a_host_pins[3], usb_c_device_sidea_pins[6]}, // D+, A6 Dp1 {usb_a_host_pins[1], usb_c_device_sidea_pins[5]}, // VBUS - A5 CC1 (56kO) }; static const uint8_t usb__a_host__c_device_sideb__ac2_pins[][2] = { // A internal connections {usb_a_host_pins[0], usb_a_host_pins[4]}, // shield, GND // C internal connections {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND {usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12]}, // A1 GND, A12 GND {usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_device_sideb_pins[12 + 1], usb_c_device_sideb_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_device_sideb_pins[12 + 9], usb_c_device_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[4]}, // CC1, A4 VBUS (56kO) {usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[9]}, // CC1, A9 VBUS (56kO) {usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[16]}, // CC1, B9 VBUS (56kO) {usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[21]}, // CC1, B4 VBUS (56kO) // A-C connections {usb_a_host_pins[1], usb_c_device_sideb_pins[4]}, // VBUS, A4 VBUS {usb_a_host_pins[1], usb_c_device_sideb_pins[9]}, // VBUS, A9 VBUS {usb_a_host_pins[1], usb_c_device_sideb_pins[12 + 9]}, // VBUS, B9 VBUS {usb_a_host_pins[1], usb_c_device_sideb_pins[12 + 4]}, // VBUS, B4 VBUS {usb_a_host_pins[0], usb_c_device_sideb_pins[0]}, // shield, shield {usb_a_host_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND {usb_a_host_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND {usb_a_host_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND {usb_a_host_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND {usb_a_host_pins[4], usb_c_device_sideb_pins[0]}, // GND, shield {usb_a_host_pins[4], usb_c_device_sideb_pins[1]}, // GND, A1 GND {usb_a_host_pins[4], usb_c_device_sideb_pins[12]}, // GND, A12 GND {usb_a_host_pins[4], usb_c_device_sideb_pins[12 + 12]}, // GND, B12 GND {usb_a_host_pins[4], usb_c_device_sideb_pins[12 + 1]}, // GND, B1 GND {usb_a_host_pins[2], usb_c_device_sideb_pins[7]}, // D-, A7 Dn1 {usb_a_host_pins[3], usb_c_device_sideb_pins[6]}, // D+, A6 Dp1 {usb_a_host_pins[1], usb_c_device_sideb_pins[5]}, // VBUS - A5 CC1 (56kO) }; static const uint8_t usb__a_device__c_host_sidea__ac2_pins[][2] = { // A internal connections {usb_a_device_pins[0], usb_a_device_pins[4]}, // shield, GND // C internal connections {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[1]}, // shield, A1 GND {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12]}, // shield, A12 GND {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 12]}, // shield, B12 GND {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 1]}, // shield, B1 GND {usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12]}, // A1 GND, A12 GND {usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_host_sidea_pins[12 + 1], usb_c_host_sidea_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_host_sidea_pins[12 + 9], usb_c_host_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[4]}, // CC1, A4 VBUS (56kO) {usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[9]}, // CC1, A9 VBUS (56kO) {usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[16]}, // CC1, B9 VBUS (56kO) {usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[21]}, // CC1, B4 VBUS (56kO) // A-C connections {usb_a_device_pins[1], usb_c_host_sidea_pins[4]}, // VBUS, A4 VBUS {usb_a_device_pins[1], usb_c_host_sidea_pins[9]}, // VBUS, A9 VBUS {usb_a_device_pins[1], usb_c_host_sidea_pins[12 + 9]}, // VBUS, B9 VBUS {usb_a_device_pins[1], usb_c_host_sidea_pins[12 + 4]}, // VBUS, B4 VBUS {usb_a_device_pins[0], usb_c_host_sidea_pins[0]}, // shield, shield {usb_a_device_pins[0], usb_c_host_sidea_pins[1]}, // shield, A1 GND {usb_a_device_pins[0], usb_c_host_sidea_pins[12]}, // shield, A12 GND {usb_a_device_pins[0], usb_c_host_sidea_pins[12 + 12]}, // shield, B12 GND {usb_a_device_pins[0], usb_c_host_sidea_pins[12 + 1]}, // shield, B1 GND {usb_a_device_pins[4], usb_c_host_sidea_pins[0]}, // GND, shield {usb_a_device_pins[4], usb_c_host_sidea_pins[1]}, // GND, A1 GND {usb_a_device_pins[4], usb_c_host_sidea_pins[12]}, // GND, A12 GND {usb_a_device_pins[4], usb_c_host_sidea_pins[12 + 12]}, // GND, B12 GND {usb_a_device_pins[4], usb_c_host_sidea_pins[12 + 1]}, // GND, B1 GND {usb_a_device_pins[2], usb_c_host_sidea_pins[7]}, // D-, A7 Dn1 {usb_a_device_pins[3], usb_c_host_sidea_pins[6]}, // D+, A6 Dp1 {usb_a_device_pins[1], usb_c_host_sidea_pins[5]}, // VBUS - A5 CC1 (56kO) }; static const uint8_t usb__a_device__c_host_sideb__ac2_pins[][2] = { // A internal connections {usb_a_device_pins[0], usb_a_device_pins[4]}, // shield, GND // C internal connections {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[1]}, // shield, A1 GND {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12]}, // shield, A12 GND {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 12]}, // shield, B12 GND {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 1]}, // shield, B1 GND {usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12]}, // A1 GND, A12 GND {usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_host_sideb_pins[12 + 1], usb_c_host_sideb_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_host_sideb_pins[12 + 9], usb_c_host_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[4]}, // CC1, A4 VBUS (56kO) {usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[9]}, // CC1, A9 VBUS (56kO) {usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[16]}, // CC1, B9 VBUS (56kO) {usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[21]}, // CC1, B4 VBUS (56kO) // A-C connections {usb_a_device_pins[1], usb_c_host_sideb_pins[4]}, // VBUS, A4 VBUS {usb_a_device_pins[1], usb_c_host_sideb_pins[9]}, // VBUS, A9 VBUS {usb_a_device_pins[1], usb_c_host_sideb_pins[12 + 9]}, // VBUS, B9 VBUS {usb_a_device_pins[1], usb_c_host_sideb_pins[12 + 4]}, // VBUS, B4 VBUS {usb_a_device_pins[0], usb_c_host_sideb_pins[0]}, // shield, shield {usb_a_device_pins[0], usb_c_host_sideb_pins[1]}, // shield, A1 GND {usb_a_device_pins[0], usb_c_host_sideb_pins[12]}, // shield, A12 GND {usb_a_device_pins[0], usb_c_host_sideb_pins[12 + 12]}, // shield, B12 GND {usb_a_device_pins[0], usb_c_host_sideb_pins[12 + 1]}, // shield, B1 GND {usb_a_device_pins[4], usb_c_host_sideb_pins[0]}, // GND, shield {usb_a_device_pins[4], usb_c_host_sideb_pins[1]}, // GND, A1 GND {usb_a_device_pins[4], usb_c_host_sideb_pins[12]}, // GND, A12 GND {usb_a_device_pins[4], usb_c_host_sideb_pins[12 + 12]}, // GND, B12 GND {usb_a_device_pins[4], usb_c_host_sideb_pins[12 + 1]}, // GND, B1 GND {usb_a_device_pins[2], usb_c_host_sideb_pins[7]}, // D-, A7 Dn1 {usb_a_device_pins[3], usb_c_host_sideb_pins[6]}, // D+, A6 Dp1 {usb_a_device_pins[1], usb_c_host_sideb_pins[5]}, // VBUS - A5 CC1 (56kO) }; static const uint8_t usb__a_device__c_device_sidea__ac2_pins[][2] = { // A internal connections {usb_a_device_pins[0], usb_a_device_pins[4]}, // shield, GND // C internal connections {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND {usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12]}, // A1 GND, A12 GND {usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_device_sidea_pins[12 + 1], usb_c_device_sidea_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_device_sidea_pins[12 + 9], usb_c_device_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[4]}, // CC1, A4 VBUS (56kO) {usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[9]}, // CC1, A9 VBUS (56kO) {usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[16]}, // CC1, B9 VBUS (56kO) {usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[21]}, // CC1, B4 VBUS (56kO) // A-C connections {usb_a_device_pins[1], usb_c_device_sidea_pins[4]}, // VBUS, A4 VBUS {usb_a_device_pins[1], usb_c_device_sidea_pins[9]}, // VBUS, A9 VBUS {usb_a_device_pins[1], usb_c_device_sidea_pins[12 + 9]}, // VBUS, B9 VBUS {usb_a_device_pins[1], usb_c_device_sidea_pins[12 + 4]}, // VBUS, B4 VBUS {usb_a_device_pins[0], usb_c_device_sidea_pins[0]}, // shield, shield {usb_a_device_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND {usb_a_device_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND {usb_a_device_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND {usb_a_device_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND {usb_a_device_pins[4], usb_c_device_sidea_pins[0]}, // GND, shield {usb_a_device_pins[4], usb_c_device_sidea_pins[1]}, // GND, A1 GND {usb_a_device_pins[4], usb_c_device_sidea_pins[12]}, // GND, A12 GND {usb_a_device_pins[4], usb_c_device_sidea_pins[12 + 12]}, // GND, B12 GND {usb_a_device_pins[4], usb_c_device_sidea_pins[12 + 1]}, // GND, B1 GND {usb_a_device_pins[2], usb_c_device_sidea_pins[7]}, // D-, A7 Dn1 {usb_a_device_pins[3], usb_c_device_sidea_pins[6]}, // D+, A6 Dp1 {usb_a_device_pins[1], usb_c_device_sidea_pins[5]}, // VBUS - A5 CC1 (56kO) }; static const uint8_t usb__a_device__c_device_sideb__ac2_pins[][2] = { // A internal connections {usb_a_device_pins[0], usb_a_device_pins[4]}, // shield, GND // C internal connections {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND {usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12]}, // A1 GND, A12 GND {usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_device_sideb_pins[12 + 1], usb_c_device_sideb_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_device_sideb_pins[12 + 9], usb_c_device_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[4]}, // CC1, A4 VBUS (56kO) {usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[9]}, // CC1, A9 VBUS (56kO) {usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[16]}, // CC1, B9 VBUS (56kO) {usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[21]}, // CC1, B4 VBUS (56kO) // A-C connections {usb_a_device_pins[1], usb_c_device_sideb_pins[4]}, // VBUS, A4 VBUS {usb_a_device_pins[1], usb_c_device_sideb_pins[9]}, // VBUS, A9 VBUS {usb_a_device_pins[1], usb_c_device_sideb_pins[12 + 9]}, // VBUS, B9 VBUS {usb_a_device_pins[1], usb_c_device_sideb_pins[12 + 4]}, // VBUS, B4 VBUS {usb_a_device_pins[0], usb_c_device_sideb_pins[0]}, // shield, shield {usb_a_device_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND {usb_a_device_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND {usb_a_device_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND {usb_a_device_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND {usb_a_device_pins[4], usb_c_device_sideb_pins[0]}, // GND, shield {usb_a_device_pins[4], usb_c_device_sideb_pins[1]}, // GND, A1 GND {usb_a_device_pins[4], usb_c_device_sideb_pins[12]}, // GND, A12 GND {usb_a_device_pins[4], usb_c_device_sideb_pins[12 + 12]}, // GND, B12 GND {usb_a_device_pins[4], usb_c_device_sideb_pins[12 + 1]}, // GND, B1 GND {usb_a_device_pins[2], usb_c_device_sideb_pins[7]}, // D-, A7 Dn1 {usb_a_device_pins[3], usb_c_device_sideb_pins[6]}, // D+, A6 Dp1 {usb_a_device_pins[1], usb_c_device_sideb_pins[5]}, // VBUS - A5 CC1 (56kO) }; /** USB type A to type C USB 3.1 cable pin pairs * @implements AC3G2-3 from USB Type-C Cable and Connector Specification (https://www.usb.org/document-library/usb-type-cr-cable-and-connector-specification-revision-20-august-2019) */ static const uint8_t usb__a_host__c_host_sidea__ac3_pins[][2] = { // A internal connections {usb_a_host_pins[0], usb_a_host_pins[4]}, // shield, GND {usb_a_host_pins[0], usb_a_host_pins[7]}, // shield, GND_DRAIN {usb_a_host_pins[4], usb_a_host_pins[7]}, // GND, GND_DRAIN // C internal connections {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[1]}, // shield, A1 GND {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12]}, // shield, A12 GND {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 12]}, // shield, B12 GND {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 1]}, // shield, B1 GND {usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12]}, // A1 GND, A12 GND {usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_host_sidea_pins[12 + 1], usb_c_host_sidea_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_host_sidea_pins[12 + 9], usb_c_host_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[4]}, // CC1, A4 VBUS (5.1kO) {usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[9]}, // CC1, A9 VBUS (5.1kO) {usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[16]}, // CC1, B9 VBUS (5.1kO) {usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[21]}, // CC1, B4 VBUS (5.1kO) // A-C connections, GND and VBUS {usb_a_host_pins[1], usb_c_host_sidea_pins[4]}, // VBUS, A4 VBUS {usb_a_host_pins[1], usb_c_host_sidea_pins[9]}, // VBUS, A9 VBUS {usb_a_host_pins[1], usb_c_host_sidea_pins[12 + 9]}, // VBUS, B9 VBUS {usb_a_host_pins[1], usb_c_host_sidea_pins[12 + 4]}, // VBUS, B4 VBUS {usb_a_host_pins[0], usb_c_host_sidea_pins[0]}, // shield, shield {usb_a_host_pins[0], usb_c_host_sidea_pins[1]}, // shield, A1 GND {usb_a_host_pins[0], usb_c_host_sidea_pins[12]}, // shield, A12 GND {usb_a_host_pins[0], usb_c_host_sidea_pins[12 + 12]}, // shield, B12 GND {usb_a_host_pins[0], usb_c_host_sidea_pins[12 + 1]}, // shield, B1 GND {usb_a_host_pins[4], usb_c_host_sidea_pins[0]}, // GND, shield {usb_a_host_pins[4], usb_c_host_sidea_pins[1]}, // GND, A1 GND {usb_a_host_pins[4], usb_c_host_sidea_pins[12]}, // GND, A12 GND {usb_a_host_pins[4], usb_c_host_sidea_pins[12 + 12]}, // GND, B12 GND {usb_a_host_pins[4], usb_c_host_sidea_pins[12 + 1]}, // GND, B1 GND {usb_a_host_pins[7], usb_c_host_sidea_pins[0]}, // GND_DRAIN, shield {usb_a_host_pins[7], usb_c_host_sidea_pins[1]}, // GND_DRAIN, A1 GND {usb_a_host_pins[7], usb_c_host_sidea_pins[12]}, // GND_DARIN, A12 GND {usb_a_host_pins[7], usb_c_host_sidea_pins[12 + 12]}, // GND_DRAIN, B12 GND {usb_a_host_pins[7], usb_c_host_sidea_pins[12 + 1]}, // GND_DRAIN, B1 GND {usb_a_host_pins[1], usb_c_host_sidea_pins[5]}, // VBUS - A5 CC1 (5.1 kO) // A-C connections, data {usb_a_host_pins[2], usb_c_host_sidea_pins[7]}, // D-, A7 Dn1 {usb_a_host_pins[3], usb_c_host_sidea_pins[6]}, // D+, A6 Dp1 {usb_a_host_pins[9], usb_c_host_sidea_pins[2]}, // RX+, A2 TXp1 {usb_a_host_pins[8], usb_c_host_sidea_pins[3]}, // RX-, A3 TXn1 {usb_a_host_pins[6], usb_c_host_sidea_pins[12 + 11]}, // TX+, B11 RXp1 {usb_a_host_pins[5], usb_c_host_sidea_pins[12 + 10]}, // TX-, B10 RXn1 }; static const uint8_t usb__a_host__c_host_sideb__ac3_pins[][2] = { // A internal connections {usb_a_host_pins[0], usb_a_host_pins[4]}, // shield, GND {usb_a_host_pins[0], usb_a_host_pins[7]}, // shield, GND_DRAIN {usb_a_host_pins[4], usb_a_host_pins[7]}, // GND, GND_DRAIN // C internal connections {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[1]}, // shield, A1 GND {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12]}, // shield, A12 GND {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 12]}, // shield, B12 GND {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 1]}, // shield, B1 GND {usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12]}, // A1 GND, A12 GND {usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_host_sideb_pins[12 + 1], usb_c_host_sideb_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_host_sideb_pins[12 + 9], usb_c_host_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[4]}, // CC1, A4 VBUS (5.1kO) {usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[9]}, // CC1, A9 VBUS (5.1kO) {usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[16]}, // CC1, B9 VBUS (5.1kO) {usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[21]}, // CC1, B4 VBUS (5.1kO) // A-C connections, GND and VBUS {usb_a_host_pins[1], usb_c_host_sideb_pins[4]}, // VBUS, A4 VBUS {usb_a_host_pins[1], usb_c_host_sideb_pins[9]}, // VBUS, A9 VBUS {usb_a_host_pins[1], usb_c_host_sideb_pins[12 + 9]}, // VBUS, B9 VBUS {usb_a_host_pins[1], usb_c_host_sideb_pins[12 + 4]}, // VBUS, B4 VBUS {usb_a_host_pins[0], usb_c_host_sideb_pins[0]}, // shield, shield {usb_a_host_pins[0], usb_c_host_sideb_pins[1]}, // shield, A1 GND {usb_a_host_pins[0], usb_c_host_sideb_pins[12]}, // shield, A12 GND {usb_a_host_pins[0], usb_c_host_sideb_pins[12 + 12]}, // shield, B12 GND {usb_a_host_pins[0], usb_c_host_sideb_pins[12 + 1]}, // shield, B1 GND {usb_a_host_pins[4], usb_c_host_sideb_pins[0]}, // GND, shield {usb_a_host_pins[4], usb_c_host_sideb_pins[1]}, // GND, A1 GND {usb_a_host_pins[4], usb_c_host_sideb_pins[12]}, // GND, A12 GND {usb_a_host_pins[4], usb_c_host_sideb_pins[12 + 12]}, // GND, B12 GND {usb_a_host_pins[4], usb_c_host_sideb_pins[12 + 1]}, // GND, B1 GND {usb_a_host_pins[7], usb_c_host_sideb_pins[0]}, // GND_DRAIN, shield {usb_a_host_pins[7], usb_c_host_sideb_pins[1]}, // GND_DRAIN, A1 GND {usb_a_host_pins[7], usb_c_host_sideb_pins[12]}, // GND_DARIN, A12 GND {usb_a_host_pins[7], usb_c_host_sideb_pins[12 + 12]}, // GND_DRAIN, B12 GND {usb_a_host_pins[7], usb_c_host_sideb_pins[12 + 1]}, // GND_DRAIN, B1 GND {usb_a_host_pins[1], usb_c_host_sideb_pins[5]}, // VBUS - A5 CC1 (5.1 kO) // A-C connections, data {usb_a_host_pins[2], usb_c_host_sideb_pins[7]}, // D-, A7 Dn1 {usb_a_host_pins[3], usb_c_host_sideb_pins[6]}, // D+, A6 Dp1 {usb_a_host_pins[9], usb_c_host_sideb_pins[2]}, // RX+, A2 TXp1 {usb_a_host_pins[8], usb_c_host_sideb_pins[3]}, // RX-, A3 TXn1 {usb_a_host_pins[6], usb_c_host_sideb_pins[12 + 11]}, // TX+, B11 RXp1 {usb_a_host_pins[5], usb_c_host_sideb_pins[12 + 10]}, // TX-, B10 RXn1 }; static const uint8_t usb__a_host__c_device_sidea__ac3_pins[][2] = { // A internal connections {usb_a_host_pins[0], usb_a_host_pins[4]}, // shield, GND {usb_a_host_pins[0], usb_a_host_pins[7]}, // shield, GND_DRAIN {usb_a_host_pins[4], usb_a_host_pins[7]}, // GND, GND_DRAIN // C internal connections {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND {usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12]}, // A1 GND, A12 GND {usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_device_sidea_pins[12 + 1], usb_c_device_sidea_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_device_sidea_pins[12 + 9], usb_c_device_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[4]}, // CC1, A4 VBUS (5.1kO) {usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[9]}, // CC1, A9 VBUS (5.1kO) {usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[16]}, // CC1, B9 VBUS (5.1kO) {usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[21]}, // CC1, B4 VBUS (5.1kO) // A-C connections, GND and VBUS {usb_a_host_pins[1], usb_c_device_sidea_pins[4]}, // VBUS, A4 VBUS {usb_a_host_pins[1], usb_c_device_sidea_pins[9]}, // VBUS, A9 VBUS {usb_a_host_pins[1], usb_c_device_sidea_pins[12 + 9]}, // VBUS, B9 VBUS {usb_a_host_pins[1], usb_c_device_sidea_pins[12 + 4]}, // VBUS, B4 VBUS {usb_a_host_pins[0], usb_c_device_sidea_pins[0]}, // shield, shield {usb_a_host_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND {usb_a_host_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND {usb_a_host_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND {usb_a_host_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND {usb_a_host_pins[4], usb_c_device_sidea_pins[0]}, // GND, shield {usb_a_host_pins[4], usb_c_device_sidea_pins[1]}, // GND, A1 GND {usb_a_host_pins[4], usb_c_device_sidea_pins[12]}, // GND, A12 GND {usb_a_host_pins[4], usb_c_device_sidea_pins[12 + 12]}, // GND, B12 GND {usb_a_host_pins[4], usb_c_device_sidea_pins[12 + 1]}, // GND, B1 GND {usb_a_host_pins[7], usb_c_device_sidea_pins[0]}, // GND_DRAIN, shield {usb_a_host_pins[7], usb_c_device_sidea_pins[1]}, // GND_DRAIN, A1 GND {usb_a_host_pins[7], usb_c_device_sidea_pins[12]}, // GND_DARIN, A12 GND {usb_a_host_pins[7], usb_c_device_sidea_pins[12 + 12]}, // GND_DRAIN, B12 GND {usb_a_host_pins[7], usb_c_device_sidea_pins[12 + 1]}, // GND_DRAIN, B1 GND {usb_a_host_pins[1], usb_c_device_sidea_pins[5]}, // VBUS - A5 CC1 (5.1 kO) // A-C connections, data {usb_a_host_pins[2], usb_c_device_sidea_pins[7]}, // D-, A7 Dn1 {usb_a_host_pins[3], usb_c_device_sidea_pins[6]}, // D+, A6 Dp1 {usb_a_host_pins[9], usb_c_device_sidea_pins[2]}, // RX+, A2 TXp1 {usb_a_host_pins[8], usb_c_device_sidea_pins[3]}, // RX-, A3 TXn1 {usb_a_host_pins[6], usb_c_device_sidea_pins[12 + 11]}, // TX+, B11 RXp1 {usb_a_host_pins[5], usb_c_device_sidea_pins[12 + 10]}, // TX-, B10 RXn1 }; static const uint8_t usb__a_host__c_device_sideb__ac3_pins[][2] = { // A internal connections {usb_a_host_pins[0], usb_a_host_pins[4]}, // shield, GND {usb_a_host_pins[0], usb_a_host_pins[7]}, // shield, GND_DRAIN {usb_a_host_pins[4], usb_a_host_pins[7]}, // GND, GND_DRAIN // C internal connections {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND {usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12]}, // A1 GND, A12 GND {usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_device_sideb_pins[12 + 1], usb_c_device_sideb_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_device_sideb_pins[12 + 9], usb_c_device_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[4]}, // CC1, A4 VBUS (5.1kO) {usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[9]}, // CC1, A9 VBUS (5.1kO) {usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[16]}, // CC1, B9 VBUS (5.1kO) {usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[21]}, // CC1, B4 VBUS (5.1kO) // A-C connections, GND and VBUS {usb_a_host_pins[1], usb_c_device_sideb_pins[4]}, // VBUS, A4 VBUS {usb_a_host_pins[1], usb_c_device_sideb_pins[9]}, // VBUS, A9 VBUS {usb_a_host_pins[1], usb_c_device_sideb_pins[12 + 9]}, // VBUS, B9 VBUS {usb_a_host_pins[1], usb_c_device_sideb_pins[12 + 4]}, // VBUS, B4 VBUS {usb_a_host_pins[0], usb_c_device_sideb_pins[0]}, // shield, shield {usb_a_host_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND {usb_a_host_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND {usb_a_host_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND {usb_a_host_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND {usb_a_host_pins[4], usb_c_device_sideb_pins[0]}, // GND, shield {usb_a_host_pins[4], usb_c_device_sideb_pins[1]}, // GND, A1 GND {usb_a_host_pins[4], usb_c_device_sideb_pins[12]}, // GND, A12 GND {usb_a_host_pins[4], usb_c_device_sideb_pins[12 + 12]}, // GND, B12 GND {usb_a_host_pins[4], usb_c_device_sideb_pins[12 + 1]}, // GND, B1 GND {usb_a_host_pins[7], usb_c_device_sideb_pins[0]}, // GND_DRAIN, shield {usb_a_host_pins[7], usb_c_device_sideb_pins[1]}, // GND_DRAIN, A1 GND {usb_a_host_pins[7], usb_c_device_sideb_pins[12]}, // GND_DARIN, A12 GND {usb_a_host_pins[7], usb_c_device_sideb_pins[12 + 12]}, // GND_DRAIN, B12 GND {usb_a_host_pins[7], usb_c_device_sideb_pins[12 + 1]}, // GND_DRAIN, B1 GND {usb_a_host_pins[1], usb_c_device_sideb_pins[5]}, // VBUS - A5 CC1 (5.1 kO) // A-C connections, data {usb_a_host_pins[2], usb_c_device_sideb_pins[7]}, // D-, A7 Dn1 {usb_a_host_pins[3], usb_c_device_sideb_pins[6]}, // D+, A6 Dp1 {usb_a_host_pins[9], usb_c_device_sideb_pins[2]}, // RX+, A2 TXp1 {usb_a_host_pins[8], usb_c_device_sideb_pins[3]}, // RX-, A3 TXn1 {usb_a_host_pins[6], usb_c_device_sideb_pins[12 + 11]}, // TX+, B11 RXp1 {usb_a_host_pins[5], usb_c_device_sideb_pins[12 + 10]}, // TX-, B10 RXn1 }; static const uint8_t usb__a_device__c_host_sidea__ac3_pins[][2] = { // A internal connections {usb_a_device_pins[0], usb_a_device_pins[4]}, // shield, GND {usb_a_device_pins[0], usb_a_device_pins[7]}, // shield, GND_DRAIN {usb_a_device_pins[4], usb_a_device_pins[7]}, // GND, GND_DRAIN // C internal connections {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[1]}, // shield, A1 GND {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12]}, // shield, A12 GND {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 12]}, // shield, B12 GND {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 1]}, // shield, B1 GND {usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12]}, // A1 GND, A12 GND {usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_host_sidea_pins[12 + 1], usb_c_host_sidea_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_host_sidea_pins[12 + 9], usb_c_host_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[4]}, // CC1, A4 VBUS (5.1kO) {usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[9]}, // CC1, A9 VBUS (5.1kO) {usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[16]}, // CC1, B9 VBUS (5.1kO) {usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[21]}, // CC1, B4 VBUS (5.1kO) // A-C connections, GND and VBUS {usb_a_device_pins[1], usb_c_host_sidea_pins[4]}, // VBUS, A4 VBUS {usb_a_device_pins[1], usb_c_host_sidea_pins[9]}, // VBUS, A9 VBUS {usb_a_device_pins[1], usb_c_host_sidea_pins[12 + 9]}, // VBUS, B9 VBUS {usb_a_device_pins[1], usb_c_host_sidea_pins[12 + 4]}, // VBUS, B4 VBUS {usb_a_device_pins[0], usb_c_host_sidea_pins[0]}, // shield, shield {usb_a_device_pins[0], usb_c_host_sidea_pins[1]}, // shield, A1 GND {usb_a_device_pins[0], usb_c_host_sidea_pins[12]}, // shield, A12 GND {usb_a_device_pins[0], usb_c_host_sidea_pins[12 + 12]}, // shield, B12 GND {usb_a_device_pins[0], usb_c_host_sidea_pins[12 + 1]}, // shield, B1 GND {usb_a_device_pins[4], usb_c_host_sidea_pins[0]}, // GND, shield {usb_a_device_pins[4], usb_c_host_sidea_pins[1]}, // GND, A1 GND {usb_a_device_pins[4], usb_c_host_sidea_pins[12]}, // GND, A12 GND {usb_a_device_pins[4], usb_c_host_sidea_pins[12 + 12]}, // GND, B12 GND {usb_a_device_pins[4], usb_c_host_sidea_pins[12 + 1]}, // GND, B1 GND {usb_a_device_pins[7], usb_c_host_sidea_pins[0]}, // GND_DRAIN, shield {usb_a_device_pins[7], usb_c_host_sidea_pins[1]}, // GND_DRAIN, A1 GND {usb_a_device_pins[7], usb_c_host_sidea_pins[12]}, // GND_DARIN, A12 GND {usb_a_device_pins[7], usb_c_host_sidea_pins[12 + 12]}, // GND_DRAIN, B12 GND {usb_a_device_pins[7], usb_c_host_sidea_pins[12 + 1]}, // GND_DRAIN, B1 GND {usb_a_device_pins[1], usb_c_host_sidea_pins[5]}, // VBUS - A5 CC1 (5.1 kO) // A-C connections, data {usb_a_device_pins[2], usb_c_host_sidea_pins[7]}, // D-, A7 Dn1 {usb_a_device_pins[3], usb_c_host_sidea_pins[6]}, // D+, A6 Dp1 {usb_a_device_pins[9], usb_c_host_sidea_pins[2]}, // RX+, A2 TXp1 {usb_a_device_pins[8], usb_c_host_sidea_pins[3]}, // RX-, A3 TXn1 {usb_a_device_pins[6], usb_c_host_sidea_pins[12 + 11]}, // TX+, B11 RXp1 {usb_a_device_pins[5], usb_c_host_sidea_pins[12 + 10]}, // TX-, B10 RXn1 }; static const uint8_t usb__a_device__c_host_sideb__ac3_pins[][2] = { // A internal connections {usb_a_device_pins[0], usb_a_device_pins[4]}, // shield, GND {usb_a_device_pins[0], usb_a_device_pins[7]}, // shield, GND_DRAIN {usb_a_device_pins[4], usb_a_device_pins[7]}, // GND, GND_DRAIN // C internal connections {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[1]}, // shield, A1 GND {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12]}, // shield, A12 GND {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 12]}, // shield, B12 GND {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 1]}, // shield, B1 GND {usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12]}, // A1 GND, A12 GND {usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_host_sideb_pins[12 + 1], usb_c_host_sideb_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_host_sideb_pins[12 + 9], usb_c_host_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[4]}, // CC1, A4 VBUS (5.1kO) {usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[9]}, // CC1, A9 VBUS (5.1kO) {usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[16]}, // CC1, B9 VBUS (5.1kO) {usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[21]}, // CC1, B4 VBUS (5.1kO) // A-C connections, GND and VBUS {usb_a_device_pins[1], usb_c_host_sideb_pins[4]}, // VBUS, A4 VBUS {usb_a_device_pins[1], usb_c_host_sideb_pins[9]}, // VBUS, A9 VBUS {usb_a_device_pins[1], usb_c_host_sideb_pins[12 + 9]}, // VBUS, B9 VBUS {usb_a_device_pins[1], usb_c_host_sideb_pins[12 + 4]}, // VBUS, B4 VBUS {usb_a_device_pins[0], usb_c_host_sideb_pins[0]}, // shield, shield {usb_a_device_pins[0], usb_c_host_sideb_pins[1]}, // shield, A1 GND {usb_a_device_pins[0], usb_c_host_sideb_pins[12]}, // shield, A12 GND {usb_a_device_pins[0], usb_c_host_sideb_pins[12 + 12]}, // shield, B12 GND {usb_a_device_pins[0], usb_c_host_sideb_pins[12 + 1]}, // shield, B1 GND {usb_a_device_pins[4], usb_c_host_sideb_pins[0]}, // GND, shield {usb_a_device_pins[4], usb_c_host_sideb_pins[1]}, // GND, A1 GND {usb_a_device_pins[4], usb_c_host_sideb_pins[12]}, // GND, A12 GND {usb_a_device_pins[4], usb_c_host_sideb_pins[12 + 12]}, // GND, B12 GND {usb_a_device_pins[4], usb_c_host_sideb_pins[12 + 1]}, // GND, B1 GND {usb_a_device_pins[7], usb_c_host_sideb_pins[0]}, // GND_DRAIN, shield {usb_a_device_pins[7], usb_c_host_sideb_pins[1]}, // GND_DRAIN, A1 GND {usb_a_device_pins[7], usb_c_host_sideb_pins[12]}, // GND_DARIN, A12 GND {usb_a_device_pins[7], usb_c_host_sideb_pins[12 + 12]}, // GND_DRAIN, B12 GND {usb_a_device_pins[7], usb_c_host_sideb_pins[12 + 1]}, // GND_DRAIN, B1 GND {usb_a_device_pins[1], usb_c_host_sideb_pins[5]}, // VBUS - A5 CC1 (5.1 kO) // A-C connections, data {usb_a_device_pins[2], usb_c_host_sideb_pins[7]}, // D-, A7 Dn1 {usb_a_device_pins[3], usb_c_host_sideb_pins[6]}, // D+, A6 Dp1 {usb_a_device_pins[9], usb_c_host_sideb_pins[2]}, // RX+, A2 TXp1 {usb_a_device_pins[8], usb_c_host_sideb_pins[3]}, // RX-, A3 TXn1 {usb_a_device_pins[6], usb_c_host_sideb_pins[12 + 11]}, // TX+, B11 RXp1 {usb_a_device_pins[5], usb_c_host_sideb_pins[12 + 10]}, // TX-, B10 RXn1 }; static const uint8_t usb__a_device__c_device_sidea__ac3_pins[][2] = { // A internal connections {usb_a_device_pins[0], usb_a_device_pins[4]}, // shield, GND {usb_a_device_pins[0], usb_a_device_pins[7]}, // shield, GND_DRAIN {usb_a_device_pins[4], usb_a_device_pins[7]}, // GND, GND_DRAIN // C internal connections {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND {usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12]}, // A1 GND, A12 GND {usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_device_sidea_pins[12 + 1], usb_c_device_sidea_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_device_sidea_pins[12 + 9], usb_c_device_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[4]}, // CC1, A4 VBUS (5.1kO) {usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[9]}, // CC1, A9 VBUS (5.1kO) {usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[16]}, // CC1, B9 VBUS (5.1kO) {usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[21]}, // CC1, B4 VBUS (5.1kO) // A-C connections, GND and VBUS {usb_a_device_pins[1], usb_c_device_sidea_pins[4]}, // VBUS, A4 VBUS {usb_a_device_pins[1], usb_c_device_sidea_pins[9]}, // VBUS, A9 VBUS {usb_a_device_pins[1], usb_c_device_sidea_pins[12 + 9]}, // VBUS, B9 VBUS {usb_a_device_pins[1], usb_c_device_sidea_pins[12 + 4]}, // VBUS, B4 VBUS {usb_a_device_pins[0], usb_c_device_sidea_pins[0]}, // shield, shield {usb_a_device_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND {usb_a_device_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND {usb_a_device_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND {usb_a_device_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND {usb_a_device_pins[4], usb_c_device_sidea_pins[0]}, // GND, shield {usb_a_device_pins[4], usb_c_device_sidea_pins[1]}, // GND, A1 GND {usb_a_device_pins[4], usb_c_device_sidea_pins[12]}, // GND, A12 GND {usb_a_device_pins[4], usb_c_device_sidea_pins[12 + 12]}, // GND, B12 GND {usb_a_device_pins[4], usb_c_device_sidea_pins[12 + 1]}, // GND, B1 GND {usb_a_device_pins[7], usb_c_device_sidea_pins[0]}, // GND_DRAIN, shield {usb_a_device_pins[7], usb_c_device_sidea_pins[1]}, // GND_DRAIN, A1 GND {usb_a_device_pins[7], usb_c_device_sidea_pins[12]}, // GND_DARIN, A12 GND {usb_a_device_pins[7], usb_c_device_sidea_pins[12 + 12]}, // GND_DRAIN, B12 GND {usb_a_device_pins[7], usb_c_device_sidea_pins[12 + 1]}, // GND_DRAIN, B1 GND {usb_a_device_pins[1], usb_c_device_sidea_pins[5]}, // VBUS - A5 CC1 (5.1 kO) // A-C connections, data {usb_a_device_pins[2], usb_c_device_sidea_pins[7]}, // D-, A7 Dn1 {usb_a_device_pins[3], usb_c_device_sidea_pins[6]}, // D+, A6 Dp1 {usb_a_device_pins[9], usb_c_device_sidea_pins[2]}, // RX+, A2 TXp1 {usb_a_device_pins[8], usb_c_device_sidea_pins[3]}, // RX-, A3 TXn1 {usb_a_device_pins[6], usb_c_device_sidea_pins[12 + 11]}, // TX+, B11 RXp1 {usb_a_device_pins[5], usb_c_device_sidea_pins[12 + 10]}, // TX-, B10 RXn1 }; static const uint8_t usb__a_device__c_device_sideb__ac3_pins[][2] = { // A internal connections {usb_a_device_pins[0], usb_a_device_pins[4]}, // shield, GND {usb_a_device_pins[0], usb_a_device_pins[7]}, // shield, GND_DRAIN {usb_a_device_pins[4], usb_a_device_pins[7]}, // GND, GND_DRAIN // C internal connections {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND {usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12]}, // A1 GND, A12 GND {usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_device_sideb_pins[12 + 1], usb_c_device_sideb_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_device_sideb_pins[12 + 9], usb_c_device_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[4]}, // CC1, A4 VBUS (5.1kO) {usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[9]}, // CC1, A9 VBUS (5.1kO) {usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[16]}, // CC1, B9 VBUS (5.1kO) {usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[21]}, // CC1, B4 VBUS (5.1kO) // A-C connections, GND and VBUS {usb_a_device_pins[1], usb_c_device_sideb_pins[4]}, // VBUS, A4 VBUS {usb_a_device_pins[1], usb_c_device_sideb_pins[9]}, // VBUS, A9 VBUS {usb_a_device_pins[1], usb_c_device_sideb_pins[12 + 9]}, // VBUS, B9 VBUS {usb_a_device_pins[1], usb_c_device_sideb_pins[12 + 4]}, // VBUS, B4 VBUS {usb_a_device_pins[0], usb_c_device_sideb_pins[0]}, // shield, shield {usb_a_device_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND {usb_a_device_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND {usb_a_device_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND {usb_a_device_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND {usb_a_device_pins[4], usb_c_device_sideb_pins[0]}, // GND, shield {usb_a_device_pins[4], usb_c_device_sideb_pins[1]}, // GND, A1 GND {usb_a_device_pins[4], usb_c_device_sideb_pins[12]}, // GND, A12 GND {usb_a_device_pins[4], usb_c_device_sideb_pins[12 + 12]}, // GND, B12 GND {usb_a_device_pins[4], usb_c_device_sideb_pins[12 + 1]}, // GND, B1 GND {usb_a_device_pins[7], usb_c_device_sideb_pins[0]}, // GND_DRAIN, shield {usb_a_device_pins[7], usb_c_device_sideb_pins[1]}, // GND_DRAIN, A1 GND {usb_a_device_pins[7], usb_c_device_sideb_pins[12]}, // GND_DARIN, A12 GND {usb_a_device_pins[7], usb_c_device_sideb_pins[12 + 12]}, // GND_DRAIN, B12 GND {usb_a_device_pins[7], usb_c_device_sideb_pins[12 + 1]}, // GND_DRAIN, B1 GND {usb_a_device_pins[1], usb_c_device_sideb_pins[5]}, // VBUS - A5 CC1 (5.1 kO) // A-C connections, data {usb_a_device_pins[2], usb_c_device_sideb_pins[7]}, // D-, A7 Dn1 {usb_a_device_pins[3], usb_c_device_sideb_pins[6]}, // D+, A6 Dp1 {usb_a_device_pins[9], usb_c_device_sideb_pins[2]}, // RX+, A2 TXp1 {usb_a_device_pins[8], usb_c_device_sideb_pins[3]}, // RX-, A3 TXn1 {usb_a_device_pins[6], usb_c_device_sideb_pins[12 + 11]}, // TX+, B11 RXp1 {usb_a_device_pins[5], usb_c_device_sideb_pins[12 + 10]}, // TX-, B10 RXn1 }; /** list of connectors for C-B cables (using C host connector) */ static const struct usb_connector_t* usb_c_host_b_device_connectors[] = { &usb_c_host_connector, &usb_b_device_connector, }; /** list of connectors for C-B cables (using C device connector) */ static const struct usb_connector_t* usb_c_device_b_device_connectors[] = { &usb_c_device_connector, &usb_b_device_connector, }; /** USB type C to type B USB 2.0 cable pin pairs * @implements CB2-3 from USB Type-C Cable and Connector Specification (https://www.usb.org/document-library/usb-type-cr-cable-and-connector-specification-revision-20-august-2019) */ static const uint8_t usb__c_host_sidea__b_device__cb2_pins[][2] = { // B internal connections {usb_b_device_pins[0], usb_b_device_pins[4]}, // shield, GND // C internal connections {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[1]}, // shield, A1 GND {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12]}, // shield, A12 GND {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 12]}, // shield, B12 GND {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 1]}, // shield, B1 GND {usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12]}, // A1 GND, A12 GND {usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_host_sidea_pins[12 + 1], usb_c_host_sidea_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_host_sidea_pins[12 + 9], usb_c_host_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[4]}, // CC1, A4 VBUS (5.1kO) {usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[9]}, // CC1, A9 VBUS (5.1kO) {usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[16]}, // CC1, B9 VBUS (5.1kO) {usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[21]}, // CC1, B4 VBUS (5.1kO) // B-C connections {usb_b_device_pins[1], usb_c_host_sidea_pins[4]}, // VBUS, A4 VBUS {usb_b_device_pins[1], usb_c_host_sidea_pins[9]}, // VBUS, A9 VBUS {usb_b_device_pins[1], usb_c_host_sidea_pins[12 + 9]}, // VBUS, B9 VBUS {usb_b_device_pins[1], usb_c_host_sidea_pins[12 + 4]}, // VBUS, B4 VBUS {usb_b_device_pins[0], usb_c_host_sidea_pins[0]}, // shield, shield {usb_b_device_pins[0], usb_c_host_sidea_pins[1]}, // shield, A1 GND {usb_b_device_pins[0], usb_c_host_sidea_pins[12]}, // shield, A12 GND {usb_b_device_pins[0], usb_c_host_sidea_pins[12 + 12]}, // shield, B12 GND {usb_b_device_pins[0], usb_c_host_sidea_pins[12 + 1]}, // shield, B1 GND {usb_b_device_pins[4], usb_c_host_sidea_pins[0]}, // GND, shield {usb_b_device_pins[4], usb_c_host_sidea_pins[1]}, // GND, A1 GND {usb_b_device_pins[4], usb_c_host_sidea_pins[12]}, // GND, A12 GND {usb_b_device_pins[4], usb_c_host_sidea_pins[12 + 12]}, // GND, B12 GND {usb_b_device_pins[4], usb_c_host_sidea_pins[12 + 1]}, // GND, B1 GND {usb_b_device_pins[2], usb_c_host_sidea_pins[7]}, // D-, A7 Dn1 {usb_b_device_pins[3], usb_c_host_sidea_pins[6]}, // D+, A6 Dp1 {usb_b_device_pins[1], usb_c_host_sidea_pins[5]}, // VBUS - A5 CC1 (5.1kO) }; static const uint8_t usb__c_host_sideb__b_device__cb2_pins[][2] = { // B internal connections {usb_b_device_pins[0], usb_b_device_pins[4]}, // shield, GND // C internal connections {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[1]}, // shield, A1 GND {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12]}, // shield, A12 GND {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 12]}, // shield, B12 GND {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 1]}, // shield, B1 GND {usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12]}, // A1 GND, A12 GND {usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_host_sideb_pins[12 + 1], usb_c_host_sideb_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_host_sideb_pins[12 + 9], usb_c_host_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[4]}, // CC1, A4 VBUS (5.1kO) {usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[9]}, // CC1, A9 VBUS (5.1kO) {usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[16]}, // CC1, B9 VBUS (5.1kO) {usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[21]}, // CC1, B4 VBUS (5.1kO) // B-C connections {usb_b_device_pins[1], usb_c_host_sideb_pins[4]}, // VBUS, A4 VBUS {usb_b_device_pins[1], usb_c_host_sideb_pins[9]}, // VBUS, A9 VBUS {usb_b_device_pins[1], usb_c_host_sideb_pins[12 + 9]}, // VBUS, B9 VBUS {usb_b_device_pins[1], usb_c_host_sideb_pins[12 + 4]}, // VBUS, B4 VBUS {usb_b_device_pins[0], usb_c_host_sideb_pins[0]}, // shield, shield {usb_b_device_pins[0], usb_c_host_sideb_pins[1]}, // shield, A1 GND {usb_b_device_pins[0], usb_c_host_sideb_pins[12]}, // shield, A12 GND {usb_b_device_pins[0], usb_c_host_sideb_pins[12 + 12]}, // shield, B12 GND {usb_b_device_pins[0], usb_c_host_sideb_pins[12 + 1]}, // shield, B1 GND {usb_b_device_pins[4], usb_c_host_sideb_pins[0]}, // GND, shield {usb_b_device_pins[4], usb_c_host_sideb_pins[1]}, // GND, A1 GND {usb_b_device_pins[4], usb_c_host_sideb_pins[12]}, // GND, A12 GND {usb_b_device_pins[4], usb_c_host_sideb_pins[12 + 12]}, // GND, B12 GND {usb_b_device_pins[4], usb_c_host_sideb_pins[12 + 1]}, // GND, B1 GND {usb_b_device_pins[2], usb_c_host_sideb_pins[7]}, // D-, A7 Dn1 {usb_b_device_pins[3], usb_c_host_sideb_pins[6]}, // D+, A6 Dp1 {usb_b_device_pins[1], usb_c_host_sideb_pins[5]}, // VBUS - A5 CC1 (5.1kO) }; static const uint8_t usb__c_device_sidea__b_device__cb2_pins[][2] = { // B internal connections {usb_b_device_pins[0], usb_b_device_pins[4]}, // shield, GND // C internal connections {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND {usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12]}, // A1 GND, A12 GND {usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_device_sidea_pins[12 + 1], usb_c_device_sidea_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_device_sidea_pins[12 + 9], usb_c_device_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[4]}, // CC1, A4 VBUS (5.1kO) {usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[9]}, // CC1, A9 VBUS (5.1kO) {usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[16]}, // CC1, B9 VBUS (5.1kO) {usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[21]}, // CC1, B4 VBUS (5.1kO) // B-C connections {usb_b_device_pins[1], usb_c_device_sidea_pins[4]}, // VBUS, A4 VBUS {usb_b_device_pins[1], usb_c_device_sidea_pins[9]}, // VBUS, A9 VBUS {usb_b_device_pins[1], usb_c_device_sidea_pins[12 + 9]}, // VBUS, B9 VBUS {usb_b_device_pins[1], usb_c_device_sidea_pins[12 + 4]}, // VBUS, B4 VBUS {usb_b_device_pins[0], usb_c_device_sidea_pins[0]}, // shield, shield {usb_b_device_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND {usb_b_device_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND {usb_b_device_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND {usb_b_device_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND {usb_b_device_pins[4], usb_c_device_sidea_pins[0]}, // GND, shield {usb_b_device_pins[4], usb_c_device_sidea_pins[1]}, // GND, A1 GND {usb_b_device_pins[4], usb_c_device_sidea_pins[12]}, // GND, A12 GND {usb_b_device_pins[4], usb_c_device_sidea_pins[12 + 12]}, // GND, B12 GND {usb_b_device_pins[4], usb_c_device_sidea_pins[12 + 1]}, // GND, B1 GND {usb_b_device_pins[2], usb_c_device_sidea_pins[7]}, // D-, A7 Dn1 {usb_b_device_pins[3], usb_c_device_sidea_pins[6]}, // D+, A6 Dp1 {usb_b_device_pins[1], usb_c_device_sidea_pins[5]}, // VBUS - A5 CC1 (5.1kO) }; static const uint8_t usb__c_device_sideb__b_device__cb2_pins[][2] = { // B internal connections {usb_b_device_pins[0], usb_b_device_pins[4]}, // shield, GND // C internal connections {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND {usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12]}, // A1 GND, A12 GND {usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_device_sideb_pins[12 + 1], usb_c_device_sideb_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_device_sideb_pins[12 + 9], usb_c_device_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[4]}, // CC1, A4 VBUS (5.1kO) {usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[9]}, // CC1, A9 VBUS (5.1kO) {usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[16]}, // CC1, B9 VBUS (5.1kO) {usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[21]}, // CC1, B4 VBUS (5.1kO) // B-C connections {usb_b_device_pins[1], usb_c_device_sideb_pins[4]}, // VBUS, A4 VBUS {usb_b_device_pins[1], usb_c_device_sideb_pins[9]}, // VBUS, A9 VBUS {usb_b_device_pins[1], usb_c_device_sideb_pins[12 + 9]}, // VBUS, B9 VBUS {usb_b_device_pins[1], usb_c_device_sideb_pins[12 + 4]}, // VBUS, B4 VBUS {usb_b_device_pins[0], usb_c_device_sideb_pins[0]}, // shield, shield {usb_b_device_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND {usb_b_device_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND {usb_b_device_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND {usb_b_device_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND {usb_b_device_pins[4], usb_c_device_sideb_pins[0]}, // GND, shield {usb_b_device_pins[4], usb_c_device_sideb_pins[1]}, // GND, A1 GND {usb_b_device_pins[4], usb_c_device_sideb_pins[12]}, // GND, A12 GND {usb_b_device_pins[4], usb_c_device_sideb_pins[12 + 12]}, // GND, B12 GND {usb_b_device_pins[4], usb_c_device_sideb_pins[12 + 1]}, // GND, B1 GND {usb_b_device_pins[2], usb_c_device_sideb_pins[7]}, // D-, A7 Dn1 {usb_b_device_pins[3], usb_c_device_sideb_pins[6]}, // D+, A6 Dp1 {usb_b_device_pins[1], usb_c_device_sideb_pins[5]}, // VBUS - A5 CC1 (5.1kO) }; /** USB type C to type B USB 3.1 cable pin pairs * @implements CB3G2-3 from USB Type-C Cable and Connector Specification (https://www.usb.org/document-library/usb-type-cr-cable-and-connector-specification-revision-20-august-2019) */ static const uint8_t usb__c_host_sidea__b_device__cb3_pins[][2] = { // B internal connections {usb_b_device_pins[0], usb_b_device_pins[4]}, // shield, GND {usb_b_device_pins[0], usb_b_device_pins[7]}, // shield, GND_DRAIN {usb_b_device_pins[4], usb_b_device_pins[7]}, // GND, GND_DRAIN // C internal connections {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[1]}, // shield, A1 GND {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12]}, // shield, A12 GND {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 12]}, // shield, B12 GND {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 1]}, // shield, B1 GND {usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12]}, // A1 GND, A12 GND {usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_host_sidea_pins[12 + 1], usb_c_host_sidea_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_host_sidea_pins[12 + 9], usb_c_host_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[4]}, // CC1, A4 VBUS (5.1kO) {usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[9]}, // CC1, A9 VBUS (5.1kO) {usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[16]}, // CC1, B9 VBUS (5.1kO) {usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[21]}, // CC1, B4 VBUS (5.1kO) // B-C connections, GND and VBUS {usb_b_device_pins[1], usb_c_host_sidea_pins[4]}, // VBUS, A4 VBUS {usb_b_device_pins[1], usb_c_host_sidea_pins[9]}, // VBUS, A9 VBUS {usb_b_device_pins[1], usb_c_host_sidea_pins[12 + 9]}, // VBUS, B9 VBUS {usb_b_device_pins[1], usb_c_host_sidea_pins[12 + 4]}, // VBUS, B4 VBUS {usb_b_device_pins[0], usb_c_host_sidea_pins[0]}, // shield, shield {usb_b_device_pins[0], usb_c_host_sidea_pins[1]}, // shield, A1 GND {usb_b_device_pins[0], usb_c_host_sidea_pins[12]}, // shield, A12 GND {usb_b_device_pins[0], usb_c_host_sidea_pins[12 + 12]}, // shield, B12 GND {usb_b_device_pins[0], usb_c_host_sidea_pins[12 + 1]}, // shield, B1 GND {usb_b_device_pins[4], usb_c_host_sidea_pins[0]}, // GND, shield {usb_b_device_pins[4], usb_c_host_sidea_pins[1]}, // GND, A1 GND {usb_b_device_pins[4], usb_c_host_sidea_pins[12]}, // GND, A12 GND {usb_b_device_pins[4], usb_c_host_sidea_pins[12 + 12]}, // GND, B12 GND {usb_b_device_pins[4], usb_c_host_sidea_pins[12 + 1]}, // GND, B1 GND {usb_b_device_pins[7], usb_c_host_sidea_pins[0]}, // GND_DRAIN, shield {usb_b_device_pins[7], usb_c_host_sidea_pins[1]}, // GND_DRAIN, A1 GND {usb_b_device_pins[7], usb_c_host_sidea_pins[12]}, // GND_DARIN, A12 GND {usb_b_device_pins[7], usb_c_host_sidea_pins[12 + 12]}, // GND_DRAIN, B12 GND {usb_b_device_pins[7], usb_c_host_sidea_pins[12 + 1]}, // GND_DRAIN, B1 GND {usb_b_device_pins[1], usb_c_host_sidea_pins[5]}, // VBUS - A5 CC1 (5.1 kO) // B-C connections, data {usb_b_device_pins[2], usb_c_host_sidea_pins[7]}, // D-, A7 Dn1 {usb_b_device_pins[3], usb_c_host_sidea_pins[6]}, // D+, A6 Dp1 {usb_b_device_pins[9], usb_c_host_sidea_pins[2]}, // RX+, A2 TXp1 {usb_b_device_pins[8], usb_c_host_sidea_pins[3]}, // RX-, A3 TXn1 {usb_b_device_pins[6], usb_c_host_sidea_pins[12 + 11]}, // TX+, B11 RXp1 {usb_b_device_pins[5], usb_c_host_sidea_pins[12 + 10]}, // TX-, B10 RXn1 }; static const uint8_t usb__c_host_sideb__b_device__cb3_pins[][2] = { // B internal connections {usb_b_device_pins[0], usb_b_device_pins[4]}, // shield, GND {usb_b_device_pins[0], usb_b_device_pins[7]}, // shield, GND_DRAIN {usb_b_device_pins[4], usb_b_device_pins[7]}, // GND, GND_DRAIN // C internal connections {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[1]}, // shield, A1 GND {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12]}, // shield, A12 GND {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 12]}, // shield, B12 GND {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 1]}, // shield, B1 GND {usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12]}, // A1 GND, A12 GND {usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_host_sideb_pins[12 + 1], usb_c_host_sideb_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_host_sideb_pins[12 + 9], usb_c_host_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[4]}, // CC1, A4 VBUS (5.1kO) {usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[9]}, // CC1, A9 VBUS (5.1kO) {usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[16]}, // CC1, B9 VBUS (5.1kO) {usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[21]}, // CC1, B4 VBUS (5.1kO) // B-C connections, GND and VBUS {usb_b_device_pins[1], usb_c_host_sideb_pins[4]}, // VBUS, A4 VBUS {usb_b_device_pins[1], usb_c_host_sideb_pins[9]}, // VBUS, A9 VBUS {usb_b_device_pins[1], usb_c_host_sideb_pins[12 + 9]}, // VBUS, B9 VBUS {usb_b_device_pins[1], usb_c_host_sideb_pins[12 + 4]}, // VBUS, B4 VBUS {usb_b_device_pins[0], usb_c_host_sideb_pins[0]}, // shield, shield {usb_b_device_pins[0], usb_c_host_sideb_pins[1]}, // shield, A1 GND {usb_b_device_pins[0], usb_c_host_sideb_pins[12]}, // shield, A12 GND {usb_b_device_pins[0], usb_c_host_sideb_pins[12 + 12]}, // shield, B12 GND {usb_b_device_pins[0], usb_c_host_sideb_pins[12 + 1]}, // shield, B1 GND {usb_b_device_pins[4], usb_c_host_sideb_pins[0]}, // GND, shield {usb_b_device_pins[4], usb_c_host_sideb_pins[1]}, // GND, A1 GND {usb_b_device_pins[4], usb_c_host_sideb_pins[12]}, // GND, A12 GND {usb_b_device_pins[4], usb_c_host_sideb_pins[12 + 12]}, // GND, B12 GND {usb_b_device_pins[4], usb_c_host_sideb_pins[12 + 1]}, // GND, B1 GND {usb_b_device_pins[7], usb_c_host_sideb_pins[0]}, // GND_DRAIN, shield {usb_b_device_pins[7], usb_c_host_sideb_pins[1]}, // GND_DRAIN, A1 GND {usb_b_device_pins[7], usb_c_host_sideb_pins[12]}, // GND_DARIN, A12 GND {usb_b_device_pins[7], usb_c_host_sideb_pins[12 + 12]}, // GND_DRAIN, B12 GND {usb_b_device_pins[7], usb_c_host_sideb_pins[12 + 1]}, // GND_DRAIN, B1 GND {usb_b_device_pins[1], usb_c_host_sideb_pins[5]}, // VBUS - A5 CC1 (5.1 kO) // B-C connections, data {usb_b_device_pins[2], usb_c_host_sideb_pins[7]}, // D-, A7 Dn1 {usb_b_device_pins[3], usb_c_host_sideb_pins[6]}, // D+, A6 Dp1 {usb_b_device_pins[9], usb_c_host_sideb_pins[2]}, // RX+, A2 TXp1 {usb_b_device_pins[8], usb_c_host_sideb_pins[3]}, // RX-, A3 TXn1 {usb_b_device_pins[6], usb_c_host_sideb_pins[12 + 11]}, // TX+, B11 RXp1 {usb_b_device_pins[5], usb_c_host_sideb_pins[12 + 10]}, // TX-, B10 RXn1 }; static const uint8_t usb__c_device_sidea__b_device__cb3_pins[][2] = { // B internal connections {usb_b_device_pins[0], usb_b_device_pins[4]}, // shield, GND {usb_b_device_pins[0], usb_b_device_pins[7]}, // shield, GND_DRAIN {usb_b_device_pins[4], usb_b_device_pins[7]}, // GND, GND_DRAIN // C internal connections {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND {usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12]}, // A1 GND, A12 GND {usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_device_sidea_pins[12 + 1], usb_c_device_sidea_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_device_sidea_pins[12 + 9], usb_c_device_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[4]}, // CC1, A4 VBUS (5.1kO) {usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[9]}, // CC1, A9 VBUS (5.1kO) {usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[16]}, // CC1, B9 VBUS (5.1kO) {usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[21]}, // CC1, B4 VBUS (5.1kO) // B-C connections, GND and VBUS {usb_b_device_pins[1], usb_c_device_sidea_pins[4]}, // VBUS, A4 VBUS {usb_b_device_pins[1], usb_c_device_sidea_pins[9]}, // VBUS, A9 VBUS {usb_b_device_pins[1], usb_c_device_sidea_pins[12 + 9]}, // VBUS, B9 VBUS {usb_b_device_pins[1], usb_c_device_sidea_pins[12 + 4]}, // VBUS, B4 VBUS {usb_b_device_pins[0], usb_c_device_sidea_pins[0]}, // shield, shield {usb_b_device_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND {usb_b_device_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND {usb_b_device_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND {usb_b_device_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND {usb_b_device_pins[4], usb_c_device_sidea_pins[0]}, // GND, shield {usb_b_device_pins[4], usb_c_device_sidea_pins[1]}, // GND, A1 GND {usb_b_device_pins[4], usb_c_device_sidea_pins[12]}, // GND, A12 GND {usb_b_device_pins[4], usb_c_device_sidea_pins[12 + 12]}, // GND, B12 GND {usb_b_device_pins[4], usb_c_device_sidea_pins[12 + 1]}, // GND, B1 GND {usb_b_device_pins[7], usb_c_device_sidea_pins[0]}, // GND_DRAIN, shield {usb_b_device_pins[7], usb_c_device_sidea_pins[1]}, // GND_DRAIN, A1 GND {usb_b_device_pins[7], usb_c_device_sidea_pins[12]}, // GND_DARIN, A12 GND {usb_b_device_pins[7], usb_c_device_sidea_pins[12 + 12]}, // GND_DRAIN, B12 GND {usb_b_device_pins[7], usb_c_device_sidea_pins[12 + 1]}, // GND_DRAIN, B1 GND {usb_b_device_pins[1], usb_c_device_sidea_pins[5]}, // VBUS - A5 CC1 (5.1 kO) // B-C connections, data {usb_b_device_pins[2], usb_c_device_sidea_pins[7]}, // D-, A7 Dn1 {usb_b_device_pins[3], usb_c_device_sidea_pins[6]}, // D+, A6 Dp1 {usb_b_device_pins[9], usb_c_device_sidea_pins[2]}, // RX+, A2 TXp1 {usb_b_device_pins[8], usb_c_device_sidea_pins[3]}, // RX-, A3 TXn1 {usb_b_device_pins[6], usb_c_device_sidea_pins[12 + 11]}, // TX+, B11 RXp1 {usb_b_device_pins[5], usb_c_device_sidea_pins[12 + 10]}, // TX-, B10 RXn1 }; static const uint8_t usb__c_device_sideb__b_device__cb3_pins[][2] = { // B internal connections {usb_b_device_pins[0], usb_b_device_pins[4]}, // shield, GND {usb_b_device_pins[0], usb_b_device_pins[7]}, // shield, GND_DRAIN {usb_b_device_pins[4], usb_b_device_pins[7]}, // GND, GND_DRAIN // C internal connections {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND {usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12]}, // A1 GND, A12 GND {usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_device_sideb_pins[12 + 1], usb_c_device_sideb_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_device_sideb_pins[12 + 9], usb_c_device_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[4]}, // CC1, A4 VBUS (5.1kO) {usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[9]}, // CC1, A9 VBUS (5.1kO) {usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[16]}, // CC1, B9 VBUS (5.1kO) {usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[21]}, // CC1, B4 VBUS (5.1kO) // B-C connections, GND and VBUS {usb_b_device_pins[1], usb_c_device_sideb_pins[4]}, // VBUS, A4 VBUS {usb_b_device_pins[1], usb_c_device_sideb_pins[9]}, // VBUS, A9 VBUS {usb_b_device_pins[1], usb_c_device_sideb_pins[12 + 9]}, // VBUS, B9 VBUS {usb_b_device_pins[1], usb_c_device_sideb_pins[12 + 4]}, // VBUS, B4 VBUS {usb_b_device_pins[0], usb_c_device_sideb_pins[0]}, // shield, shield {usb_b_device_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND {usb_b_device_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND {usb_b_device_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND {usb_b_device_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND {usb_b_device_pins[4], usb_c_device_sideb_pins[0]}, // GND, shield {usb_b_device_pins[4], usb_c_device_sideb_pins[1]}, // GND, A1 GND {usb_b_device_pins[4], usb_c_device_sideb_pins[12]}, // GND, A12 GND {usb_b_device_pins[4], usb_c_device_sideb_pins[12 + 12]}, // GND, B12 GND {usb_b_device_pins[4], usb_c_device_sideb_pins[12 + 1]}, // GND, B1 GND {usb_b_device_pins[7], usb_c_device_sideb_pins[0]}, // GND_DRAIN, shield {usb_b_device_pins[7], usb_c_device_sideb_pins[1]}, // GND_DRAIN, A1 GND {usb_b_device_pins[7], usb_c_device_sideb_pins[12]}, // GND_DARIN, A12 GND {usb_b_device_pins[7], usb_c_device_sideb_pins[12 + 12]}, // GND_DRAIN, B12 GND {usb_b_device_pins[7], usb_c_device_sideb_pins[12 + 1]}, // GND_DRAIN, B1 GND {usb_b_device_pins[1], usb_c_device_sideb_pins[5]}, // VBUS - A5 CC1 (5.1 kO) // B-C connections, data {usb_b_device_pins[2], usb_c_device_sideb_pins[7]}, // D-, A7 Dn1 {usb_b_device_pins[3], usb_c_device_sideb_pins[6]}, // D+, A6 Dp1 {usb_b_device_pins[9], usb_c_device_sideb_pins[2]}, // RX+, A2 TXp1 {usb_b_device_pins[8], usb_c_device_sideb_pins[3]}, // RX-, A3 TXn1 {usb_b_device_pins[6], usb_c_device_sideb_pins[12 + 11]}, // TX+, B11 RXp1 {usb_b_device_pins[5], usb_c_device_sideb_pins[12 + 10]}, // TX-, B10 RXn1 }; /** list of connectors for C-miniB cables (using C host connector) */ static const struct usb_connector_t* usb_c_host_minib_device_connectors[] = { &usb_c_host_connector, &usb_minib_device_connector, }; /** list of connectors for C-miniB cables (using C device connector) */ static const struct usb_connector_t* usb_c_device_minib_device_connectors[] = { &usb_c_device_connector, &usb_minib_device_connector, }; /** USB type C to type mini-B USB 2.0 cable pin pairs * @implements CmB2 from USB Type-C Cable and Connector Specification (https://www.usb.org/document-library/usb-type-cr-cable-and-connector-specification-revision-20-august-2019) */ static const uint8_t usb__c_host_sidea__minib_device__cminib2_pins[][2] = { // mini-B internal connections {usb_minib_device_pins[0], usb_minib_device_pins[5]}, // shield, GND // C internal connections {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[1]}, // shield, A1 GND {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12]}, // shield, A12 GND {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 12]}, // shield, B12 GND {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 1]}, // shield, B1 GND {usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12]}, // A1 GND, A12 GND {usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_host_sidea_pins[12 + 1], usb_c_host_sidea_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_host_sidea_pins[12 + 9], usb_c_host_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[4]}, // CC1, A4 VBUS (5.1kO) {usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[9]}, // CC1, A9 VBUS (5.1kO) {usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[16]}, // CC1, B9 VBUS (5.1kO) {usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[21]}, // CC1, B4 VBUS (5.1kO) // mini-B-C connections {usb_minib_device_pins[1], usb_c_host_sidea_pins[4]}, // VBUS, A4 VBUS {usb_minib_device_pins[1], usb_c_host_sidea_pins[9]}, // VBUS, A9 VBUS {usb_minib_device_pins[1], usb_c_host_sidea_pins[12 + 9]}, // VBUS, B9 VBUS {usb_minib_device_pins[1], usb_c_host_sidea_pins[12 + 4]}, // VBUS, B4 VBUS {usb_minib_device_pins[0], usb_c_host_sidea_pins[0]}, // shield, shield {usb_minib_device_pins[0], usb_c_host_sidea_pins[1]}, // shield, A1 GND {usb_minib_device_pins[0], usb_c_host_sidea_pins[12]}, // shield, A12 GND {usb_minib_device_pins[0], usb_c_host_sidea_pins[12 + 12]}, // shield, B12 GND {usb_minib_device_pins[0], usb_c_host_sidea_pins[12 + 1]}, // shield, B1 GND {usb_minib_device_pins[5], usb_c_host_sidea_pins[0]}, // GND, shield {usb_minib_device_pins[5], usb_c_host_sidea_pins[1]}, // GND, A1 GND {usb_minib_device_pins[5], usb_c_host_sidea_pins[12]}, // GND, A12 GND {usb_minib_device_pins[5], usb_c_host_sidea_pins[12 + 12]}, // GND, B12 GND {usb_minib_device_pins[5], usb_c_host_sidea_pins[12 + 1]}, // GND, B1 GND {usb_minib_device_pins[2], usb_c_host_sidea_pins[7]}, // D-, A7 Dn1 {usb_minib_device_pins[3], usb_c_host_sidea_pins[6]}, // D+, A6 Dp1 {usb_minib_device_pins[1], usb_c_host_sidea_pins[5]}, // VBUS - A5 CC1 (5.1kO) }; static const uint8_t usb__c_host_sideb__minib_device__cminib2_pins[][2] = { // mini-B internal connections {usb_minib_device_pins[0], usb_minib_device_pins[5]}, // shield, GND // C internal connections {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[1]}, // shield, A1 GND {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12]}, // shield, A12 GND {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 12]}, // shield, B12 GND {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 1]}, // shield, B1 GND {usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12]}, // A1 GND, A12 GND {usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_host_sideb_pins[12 + 1], usb_c_host_sideb_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_host_sideb_pins[12 + 9], usb_c_host_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[4]}, // CC1, A4 VBUS (5.1kO) {usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[9]}, // CC1, A9 VBUS (5.1kO) {usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[16]}, // CC1, B9 VBUS (5.1kO) {usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[21]}, // CC1, B4 VBUS (5.1kO) // mini-B-C connections {usb_minib_device_pins[1], usb_c_host_sideb_pins[4]}, // VBUS, A4 VBUS {usb_minib_device_pins[1], usb_c_host_sideb_pins[9]}, // VBUS, A9 VBUS {usb_minib_device_pins[1], usb_c_host_sideb_pins[12 + 9]}, // VBUS, B9 VBUS {usb_minib_device_pins[1], usb_c_host_sideb_pins[12 + 4]}, // VBUS, B4 VBUS {usb_minib_device_pins[0], usb_c_host_sideb_pins[0]}, // shield, shield {usb_minib_device_pins[0], usb_c_host_sideb_pins[1]}, // shield, A1 GND {usb_minib_device_pins[0], usb_c_host_sideb_pins[12]}, // shield, A12 GND {usb_minib_device_pins[0], usb_c_host_sideb_pins[12 + 12]}, // shield, B12 GND {usb_minib_device_pins[0], usb_c_host_sideb_pins[12 + 1]}, // shield, B1 GND {usb_minib_device_pins[5], usb_c_host_sideb_pins[0]}, // GND, shield {usb_minib_device_pins[5], usb_c_host_sideb_pins[1]}, // GND, A1 GND {usb_minib_device_pins[5], usb_c_host_sideb_pins[12]}, // GND, A12 GND {usb_minib_device_pins[5], usb_c_host_sideb_pins[12 + 12]}, // GND, B12 GND {usb_minib_device_pins[5], usb_c_host_sideb_pins[12 + 1]}, // GND, B1 GND {usb_minib_device_pins[2], usb_c_host_sideb_pins[7]}, // D-, A7 Dn1 {usb_minib_device_pins[3], usb_c_host_sideb_pins[6]}, // D+, A6 Dp1 {usb_minib_device_pins[1], usb_c_host_sideb_pins[5]}, // VBUS - A5 CC1 (5.1kO) }; static const uint8_t usb__c_device_sidea__minib_device__cminib2_pins[][2] = { // mini-B internal connections {usb_minib_device_pins[0], usb_minib_device_pins[5]}, // shield, GND // C internal connections {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND {usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12]}, // A1 GND, A12 GND {usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_device_sidea_pins[12 + 1], usb_c_device_sidea_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_device_sidea_pins[12 + 9], usb_c_device_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[4]}, // CC1, A4 VBUS (5.1kO) {usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[9]}, // CC1, A9 VBUS (5.1kO) {usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[16]}, // CC1, B9 VBUS (5.1kO) {usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[21]}, // CC1, B4 VBUS (5.1kO) // mini-B-C connections {usb_minib_device_pins[1], usb_c_device_sidea_pins[4]}, // VBUS, A4 VBUS {usb_minib_device_pins[1], usb_c_device_sidea_pins[9]}, // VBUS, A9 VBUS {usb_minib_device_pins[1], usb_c_device_sidea_pins[12 + 9]}, // VBUS, B9 VBUS {usb_minib_device_pins[1], usb_c_device_sidea_pins[12 + 4]}, // VBUS, B4 VBUS {usb_minib_device_pins[0], usb_c_device_sidea_pins[0]}, // shield, shield {usb_minib_device_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND {usb_minib_device_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND {usb_minib_device_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND {usb_minib_device_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND {usb_minib_device_pins[5], usb_c_device_sidea_pins[0]}, // GND, shield {usb_minib_device_pins[5], usb_c_device_sidea_pins[1]}, // GND, A1 GND {usb_minib_device_pins[5], usb_c_device_sidea_pins[12]}, // GND, A12 GND {usb_minib_device_pins[5], usb_c_device_sidea_pins[12 + 12]}, // GND, B12 GND {usb_minib_device_pins[5], usb_c_device_sidea_pins[12 + 1]}, // GND, B1 GND {usb_minib_device_pins[2], usb_c_device_sidea_pins[7]}, // D-, A7 Dn1 {usb_minib_device_pins[3], usb_c_device_sidea_pins[6]}, // D+, A6 Dp1 {usb_minib_device_pins[1], usb_c_device_sidea_pins[5]}, // VBUS - A5 CC1 (5.1kO) }; static const uint8_t usb__c_device_sideb__minib_device__cminib2_pins[][2] = { // mini-B internal connections {usb_minib_device_pins[0], usb_minib_device_pins[5]}, // shield, GND // C internal connections {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND {usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12]}, // A1 GND, A12 GND {usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_device_sideb_pins[12 + 1], usb_c_device_sideb_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_device_sideb_pins[12 + 9], usb_c_device_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[4]}, // CC1, A4 VBUS (5.1kO) {usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[9]}, // CC1, A9 VBUS (5.1kO) {usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[16]}, // CC1, B9 VBUS (5.1kO) {usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[21]}, // CC1, B4 VBUS (5.1kO) // mini-B-C connections {usb_minib_device_pins[1], usb_c_device_sideb_pins[4]}, // VBUS, A4 VBUS {usb_minib_device_pins[1], usb_c_device_sideb_pins[9]}, // VBUS, A9 VBUS {usb_minib_device_pins[1], usb_c_device_sideb_pins[12 + 9]}, // VBUS, B9 VBUS {usb_minib_device_pins[1], usb_c_device_sideb_pins[12 + 4]}, // VBUS, B4 VBUS {usb_minib_device_pins[0], usb_c_device_sideb_pins[0]}, // shield, shield {usb_minib_device_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND {usb_minib_device_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND {usb_minib_device_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND {usb_minib_device_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND {usb_minib_device_pins[5], usb_c_device_sideb_pins[0]}, // GND, shield {usb_minib_device_pins[5], usb_c_device_sideb_pins[1]}, // GND, A1 GND {usb_minib_device_pins[5], usb_c_device_sideb_pins[12]}, // GND, A12 GND {usb_minib_device_pins[5], usb_c_device_sideb_pins[12 + 12]}, // GND, B12 GND {usb_minib_device_pins[5], usb_c_device_sideb_pins[12 + 1]}, // GND, B1 GND {usb_minib_device_pins[2], usb_c_device_sideb_pins[7]}, // D-, A7 Dn1 {usb_minib_device_pins[3], usb_c_device_sideb_pins[6]}, // D+, A6 Dp1 {usb_minib_device_pins[1], usb_c_device_sideb_pins[5]}, // VBUS - A5 CC1 (5.1kO) }; /** list of connectors for C-miniB cables (using C host connector) */ static const struct usb_connector_t* usb_c_host_microb_device_connectors[] = { &usb_c_host_connector, &usb_microb_device_connector, }; /** list of connectors for C-miniB cables (using C device connector) */ static const struct usb_connector_t* usb_c_device_microb_device_connectors[] = { &usb_c_device_connector, &usb_microb_device_connector, }; /** USB type C to type micro-B USB 2.0 cable pin pairs * @implements CµB2-3 from USB Type-C Cable and Connector Specification (https://www.usb.org/document-library/usb-type-cr-cable-and-connector-specification-revision-20-august-2019) */ static const uint8_t usb__c_host_sidea__microb_device__cmicrob2_pins[][2] = { // mini-B internal connections {usb_microb_device_pins[0], usb_microb_device_pins[5]}, // shield, GND // C internal connections {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[1]}, // shield, A1 GND {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12]}, // shield, A12 GND {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 12]}, // shield, B12 GND {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 1]}, // shield, B1 GND {usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12]}, // A1 GND, A12 GND {usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_host_sidea_pins[12 + 1], usb_c_host_sidea_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_host_sidea_pins[12 + 9], usb_c_host_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[4]}, // CC1, A4 VBUS (5.1kO) {usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[9]}, // CC1, A9 VBUS (5.1kO) {usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[16]}, // CC1, B9 VBUS (5.1kO) {usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[21]}, // CC1, B4 VBUS (5.1kO) // mini-B-C connections {usb_microb_device_pins[1], usb_c_host_sidea_pins[4]}, // VBUS, A4 VBUS {usb_microb_device_pins[1], usb_c_host_sidea_pins[9]}, // VBUS, A9 VBUS {usb_microb_device_pins[1], usb_c_host_sidea_pins[12 + 9]}, // VBUS, B9 VBUS {usb_microb_device_pins[1], usb_c_host_sidea_pins[12 + 4]}, // VBUS, B4 VBUS {usb_microb_device_pins[0], usb_c_host_sidea_pins[0]}, // shield, shield {usb_microb_device_pins[0], usb_c_host_sidea_pins[1]}, // shield, A1 GND {usb_microb_device_pins[0], usb_c_host_sidea_pins[12]}, // shield, A12 GND {usb_microb_device_pins[0], usb_c_host_sidea_pins[12 + 12]}, // shield, B12 GND {usb_microb_device_pins[0], usb_c_host_sidea_pins[12 + 1]}, // shield, B1 GND {usb_microb_device_pins[5], usb_c_host_sidea_pins[0]}, // GND, shield {usb_microb_device_pins[5], usb_c_host_sidea_pins[1]}, // GND, A1 GND {usb_microb_device_pins[5], usb_c_host_sidea_pins[12]}, // GND, A12 GND {usb_microb_device_pins[5], usb_c_host_sidea_pins[12 + 12]}, // GND, B12 GND {usb_microb_device_pins[5], usb_c_host_sidea_pins[12 + 1]}, // GND, B1 GND {usb_microb_device_pins[2], usb_c_host_sidea_pins[7]}, // D-, A7 Dn1 {usb_microb_device_pins[3], usb_c_host_sidea_pins[6]}, // D+, A6 Dp1 {usb_microb_device_pins[1], usb_c_host_sidea_pins[5]}, // VBUS - A5 CC1 (5.1kO) }; static const uint8_t usb__c_host_sideb__microb_device__cmicrob2_pins[][2] = { // mini-B internal connections {usb_microb_device_pins[0], usb_microb_device_pins[5]}, // shield, GND // C internal connections {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[1]}, // shield, A1 GND {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12]}, // shield, A12 GND {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 12]}, // shield, B12 GND {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 1]}, // shield, B1 GND {usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12]}, // A1 GND, A12 GND {usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_host_sideb_pins[12 + 1], usb_c_host_sideb_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_host_sideb_pins[12 + 9], usb_c_host_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[4]}, // CC1, A4 VBUS (5.1kO) {usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[9]}, // CC1, A9 VBUS (5.1kO) {usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[16]}, // CC1, B9 VBUS (5.1kO) {usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[21]}, // CC1, B4 VBUS (5.1kO) // mini-B-C connections {usb_microb_device_pins[1], usb_c_host_sideb_pins[4]}, // VBUS, A4 VBUS {usb_microb_device_pins[1], usb_c_host_sideb_pins[9]}, // VBUS, A9 VBUS {usb_microb_device_pins[1], usb_c_host_sideb_pins[12 + 9]}, // VBUS, B9 VBUS {usb_microb_device_pins[1], usb_c_host_sideb_pins[12 + 4]}, // VBUS, B4 VBUS {usb_microb_device_pins[0], usb_c_host_sideb_pins[0]}, // shield, shield {usb_microb_device_pins[0], usb_c_host_sideb_pins[1]}, // shield, A1 GND {usb_microb_device_pins[0], usb_c_host_sideb_pins[12]}, // shield, A12 GND {usb_microb_device_pins[0], usb_c_host_sideb_pins[12 + 12]}, // shield, B12 GND {usb_microb_device_pins[0], usb_c_host_sideb_pins[12 + 1]}, // shield, B1 GND {usb_microb_device_pins[5], usb_c_host_sideb_pins[0]}, // GND, shield {usb_microb_device_pins[5], usb_c_host_sideb_pins[1]}, // GND, A1 GND {usb_microb_device_pins[5], usb_c_host_sideb_pins[12]}, // GND, A12 GND {usb_microb_device_pins[5], usb_c_host_sideb_pins[12 + 12]}, // GND, B12 GND {usb_microb_device_pins[5], usb_c_host_sideb_pins[12 + 1]}, // GND, B1 GND {usb_microb_device_pins[2], usb_c_host_sideb_pins[7]}, // D-, A7 Dn1 {usb_microb_device_pins[3], usb_c_host_sideb_pins[6]}, // D+, A6 Dp1 {usb_microb_device_pins[1], usb_c_host_sideb_pins[5]}, // VBUS - A5 CC1 (5.1kO) }; static const uint8_t usb__c_device_sidea__microb_device__cmicrob2_pins[][2] = { // mini-B internal connections {usb_microb_device_pins[0], usb_microb_device_pins[5]}, // shield, GND // C internal connections {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND {usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12]}, // A1 GND, A12 GND {usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_device_sidea_pins[12 + 1], usb_c_device_sidea_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_device_sidea_pins[12 + 9], usb_c_device_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[4]}, // CC1, A4 VBUS (5.1kO) {usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[9]}, // CC1, A9 VBUS (5.1kO) {usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[16]}, // CC1, B9 VBUS (5.1kO) {usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[21]}, // CC1, B4 VBUS (5.1kO) // mini-B-C connections {usb_microb_device_pins[1], usb_c_device_sidea_pins[4]}, // VBUS, A4 VBUS {usb_microb_device_pins[1], usb_c_device_sidea_pins[9]}, // VBUS, A9 VBUS {usb_microb_device_pins[1], usb_c_device_sidea_pins[12 + 9]}, // VBUS, B9 VBUS {usb_microb_device_pins[1], usb_c_device_sidea_pins[12 + 4]}, // VBUS, B4 VBUS {usb_microb_device_pins[0], usb_c_device_sidea_pins[0]}, // shield, shield {usb_microb_device_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND {usb_microb_device_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND {usb_microb_device_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND {usb_microb_device_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND {usb_microb_device_pins[5], usb_c_device_sidea_pins[0]}, // GND, shield {usb_microb_device_pins[5], usb_c_device_sidea_pins[1]}, // GND, A1 GND {usb_microb_device_pins[5], usb_c_device_sidea_pins[12]}, // GND, A12 GND {usb_microb_device_pins[5], usb_c_device_sidea_pins[12 + 12]}, // GND, B12 GND {usb_microb_device_pins[5], usb_c_device_sidea_pins[12 + 1]}, // GND, B1 GND {usb_microb_device_pins[2], usb_c_device_sidea_pins[7]}, // D-, A7 Dn1 {usb_microb_device_pins[3], usb_c_device_sidea_pins[6]}, // D+, A6 Dp1 {usb_microb_device_pins[1], usb_c_device_sidea_pins[5]}, // VBUS - A5 CC1 (5.1kO) }; static const uint8_t usb__c_device_sideb__microb_device__cmicrob2_pins[][2] = { // mini-B internal connections {usb_microb_device_pins[0], usb_microb_device_pins[5]}, // shield, GND // C internal connections {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND {usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12]}, // A1 GND, A12 GND {usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_device_sideb_pins[12 + 1], usb_c_device_sideb_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_device_sideb_pins[12 + 9], usb_c_device_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[4]}, // CC1, A4 VBUS (5.1kO) {usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[9]}, // CC1, A9 VBUS (5.1kO) {usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[16]}, // CC1, B9 VBUS (5.1kO) {usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[21]}, // CC1, B4 VBUS (5.1kO) // mini-B-C connections {usb_microb_device_pins[1], usb_c_device_sideb_pins[4]}, // VBUS, A4 VBUS {usb_microb_device_pins[1], usb_c_device_sideb_pins[9]}, // VBUS, A9 VBUS {usb_microb_device_pins[1], usb_c_device_sideb_pins[12 + 9]}, // VBUS, B9 VBUS {usb_microb_device_pins[1], usb_c_device_sideb_pins[12 + 4]}, // VBUS, B4 VBUS {usb_microb_device_pins[0], usb_c_device_sideb_pins[0]}, // shield, shield {usb_microb_device_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND {usb_microb_device_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND {usb_microb_device_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND {usb_microb_device_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND {usb_microb_device_pins[5], usb_c_device_sideb_pins[0]}, // GND, shield {usb_microb_device_pins[5], usb_c_device_sideb_pins[1]}, // GND, A1 GND {usb_microb_device_pins[5], usb_c_device_sideb_pins[12]}, // GND, A12 GND {usb_microb_device_pins[5], usb_c_device_sideb_pins[12 + 12]}, // GND, B12 GND {usb_microb_device_pins[5], usb_c_device_sideb_pins[12 + 1]}, // GND, B1 GND {usb_microb_device_pins[2], usb_c_device_sideb_pins[7]}, // D-, A7 Dn1 {usb_microb_device_pins[3], usb_c_device_sideb_pins[6]}, // D+, A6 Dp1 {usb_microb_device_pins[1], usb_c_device_sideb_pins[5]}, // VBUS - A5 CC1 (5.1kO) }; /** USB type C to type micro-B USB 3.1 Gen 2 cable pin pairs * @implements CµB3G2-3 from USB Type-C Cable and Connector Specification (https://www.usb.org/document-library/usb-type-cr-cable-and-connector-specification-revision-20-august-2019) */ static const uint8_t usb__c_host_sidea__microb_device__cmicrob3_pins[][2] = { // B internal connections {usb_microb_device_pins[0], usb_microb_device_pins[5]}, // shield, GND {usb_microb_device_pins[0], usb_microb_device_pins[8]}, // shield, GND_DRAIN {usb_microb_device_pins[5], usb_microb_device_pins[8]}, // GND, GND_DRAIN // C internal connections {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[1]}, // shield, A1 GND {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12]}, // shield, A12 GND {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 12]}, // shield, B12 GND {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 1]}, // shield, B1 GND {usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12]}, // A1 GND, A12 GND {usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_host_sidea_pins[12 + 1], usb_c_host_sidea_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_host_sidea_pins[12 + 9], usb_c_host_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[4]}, // CC1, A4 VBUS (5.1kO) {usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[9]}, // CC1, A9 VBUS (5.1kO) {usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[16]}, // CC1, B9 VBUS (5.1kO) {usb_c_host_sidea_pins[5], usb_c_host_sidea_pins[21]}, // CC1, B4 VBUS (5.1kO) // B-C connections, GND and VBUS {usb_microb_device_pins[1], usb_c_host_sidea_pins[4]}, // VBUS, A4 VBUS {usb_microb_device_pins[1], usb_c_host_sidea_pins[9]}, // VBUS, A9 VBUS {usb_microb_device_pins[1], usb_c_host_sidea_pins[12 + 9]}, // VBUS, B9 VBUS {usb_microb_device_pins[1], usb_c_host_sidea_pins[12 + 4]}, // VBUS, B4 VBUS {usb_microb_device_pins[0], usb_c_host_sidea_pins[0]}, // shield, shield {usb_microb_device_pins[0], usb_c_host_sidea_pins[1]}, // shield, A1 GND {usb_microb_device_pins[0], usb_c_host_sidea_pins[12]}, // shield, A12 GND {usb_microb_device_pins[0], usb_c_host_sidea_pins[12 + 12]}, // shield, B12 GND {usb_microb_device_pins[0], usb_c_host_sidea_pins[12 + 1]}, // shield, B1 GND {usb_microb_device_pins[5], usb_c_host_sidea_pins[0]}, // GND, shield {usb_microb_device_pins[5], usb_c_host_sidea_pins[1]}, // GND, A1 GND {usb_microb_device_pins[5], usb_c_host_sidea_pins[12]}, // GND, A12 GND {usb_microb_device_pins[5], usb_c_host_sidea_pins[12 + 12]}, // GND, B12 GND {usb_microb_device_pins[5], usb_c_host_sidea_pins[12 + 1]}, // GND, B1 GND {usb_microb_device_pins[8], usb_c_host_sidea_pins[0]}, // GND_DRAIN, shield {usb_microb_device_pins[8], usb_c_host_sidea_pins[1]}, // GND_DRAIN, A1 GND {usb_microb_device_pins[8], usb_c_host_sidea_pins[12]}, // GND_DARIN, A12 GND {usb_microb_device_pins[8], usb_c_host_sidea_pins[12 + 12]}, // GND_DRAIN, B12 GND {usb_microb_device_pins[8], usb_c_host_sidea_pins[12 + 1]}, // GND_DRAIN, B1 GND {usb_microb_device_pins[1], usb_c_host_sidea_pins[5]}, // VBUS - A5 CC1 (5.1 kO) // B-C connections, data {usb_microb_device_pins[2], usb_c_host_sidea_pins[7]}, // D-, A7 Dn1 {usb_microb_device_pins[3], usb_c_host_sidea_pins[6]}, // D+, A6 Dp1 {usb_microb_device_pins[10], usb_c_host_sidea_pins[2]}, // RX+, A2 TXp1 {usb_microb_device_pins[9], usb_c_host_sidea_pins[3]}, // RX-, A3 TXn1 {usb_microb_device_pins[7], usb_c_host_sidea_pins[12 + 11]}, // TX+, B11 RXp1 {usb_microb_device_pins[6], usb_c_host_sidea_pins[12 + 10]}, // TX-, B10 RXn1 }; static const uint8_t usb__c_host_sideb__microb_device__cmicrob3_pins[][2] = { // B internal connections {usb_microb_device_pins[0], usb_microb_device_pins[5]}, // shield, GND {usb_microb_device_pins[0], usb_microb_device_pins[8]}, // shield, GND_DRAIN {usb_microb_device_pins[5], usb_microb_device_pins[8]}, // GND, GND_DRAIN // C internal connections {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[1]}, // shield, A1 GND {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12]}, // shield, A12 GND {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 12]}, // shield, B12 GND {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 1]}, // shield, B1 GND {usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12]}, // A1 GND, A12 GND {usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_host_sideb_pins[12 + 1], usb_c_host_sideb_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_host_sideb_pins[12 + 9], usb_c_host_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[4]}, // CC1, A4 VBUS (5.1kO) {usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[9]}, // CC1, A9 VBUS (5.1kO) {usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[16]}, // CC1, B9 VBUS (5.1kO) {usb_c_host_sideb_pins[5], usb_c_host_sideb_pins[21]}, // CC1, B4 VBUS (5.1kO) // B-C connections, GND and VBUS {usb_microb_device_pins[1], usb_c_host_sideb_pins[4]}, // VBUS, A4 VBUS {usb_microb_device_pins[1], usb_c_host_sideb_pins[9]}, // VBUS, A9 VBUS {usb_microb_device_pins[1], usb_c_host_sideb_pins[12 + 9]}, // VBUS, B9 VBUS {usb_microb_device_pins[1], usb_c_host_sideb_pins[12 + 4]}, // VBUS, B4 VBUS {usb_microb_device_pins[0], usb_c_host_sideb_pins[0]}, // shield, shield {usb_microb_device_pins[0], usb_c_host_sideb_pins[1]}, // shield, A1 GND {usb_microb_device_pins[0], usb_c_host_sideb_pins[12]}, // shield, A12 GND {usb_microb_device_pins[0], usb_c_host_sideb_pins[12 + 12]}, // shield, B12 GND {usb_microb_device_pins[0], usb_c_host_sideb_pins[12 + 1]}, // shield, B1 GND {usb_microb_device_pins[5], usb_c_host_sideb_pins[0]}, // GND, shield {usb_microb_device_pins[5], usb_c_host_sideb_pins[1]}, // GND, A1 GND {usb_microb_device_pins[5], usb_c_host_sideb_pins[12]}, // GND, A12 GND {usb_microb_device_pins[5], usb_c_host_sideb_pins[12 + 12]}, // GND, B12 GND {usb_microb_device_pins[5], usb_c_host_sideb_pins[12 + 1]}, // GND, B1 GND {usb_microb_device_pins[8], usb_c_host_sideb_pins[0]}, // GND_DRAIN, shield {usb_microb_device_pins[8], usb_c_host_sideb_pins[1]}, // GND_DRAIN, A1 GND {usb_microb_device_pins[8], usb_c_host_sideb_pins[12]}, // GND_DARIN, A12 GND {usb_microb_device_pins[8], usb_c_host_sideb_pins[12 + 12]}, // GND_DRAIN, B12 GND {usb_microb_device_pins[8], usb_c_host_sideb_pins[12 + 1]}, // GND_DRAIN, B1 GND {usb_microb_device_pins[1], usb_c_host_sideb_pins[5]}, // VBUS - A5 CC1 (5.1 kO) // B-C connections, data {usb_microb_device_pins[2], usb_c_host_sideb_pins[7]}, // D-, A7 Dn1 {usb_microb_device_pins[3], usb_c_host_sideb_pins[6]}, // D+, A6 Dp1 {usb_microb_device_pins[10], usb_c_host_sideb_pins[2]}, // RX+, A2 TXp1 {usb_microb_device_pins[9], usb_c_host_sideb_pins[3]}, // RX-, A3 TXn1 {usb_microb_device_pins[7], usb_c_host_sideb_pins[12 + 11]}, // TX+, B11 RXp1 {usb_microb_device_pins[6], usb_c_host_sideb_pins[12 + 10]}, // TX-, B10 RXn1 }; static const uint8_t usb__c_device_sidea__microb_device__cmicrob3_pins[][2] = { // B internal connections {usb_microb_device_pins[0], usb_microb_device_pins[5]}, // shield, GND {usb_microb_device_pins[0], usb_microb_device_pins[8]}, // shield, GND_DRAIN {usb_microb_device_pins[5], usb_microb_device_pins[8]}, // GND, GND_DRAIN // C internal connections {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND {usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12]}, // A1 GND, A12 GND {usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_device_sidea_pins[12 + 1], usb_c_device_sidea_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_device_sidea_pins[12 + 9], usb_c_device_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[4]}, // CC1, A4 VBUS (5.1kO) {usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[9]}, // CC1, A9 VBUS (5.1kO) {usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[16]}, // CC1, B9 VBUS (5.1kO) {usb_c_device_sidea_pins[5], usb_c_device_sidea_pins[21]}, // CC1, B4 VBUS (5.1kO) // B-C connections, GND and VBUS {usb_microb_device_pins[1], usb_c_device_sidea_pins[4]}, // VBUS, A4 VBUS {usb_microb_device_pins[1], usb_c_device_sidea_pins[9]}, // VBUS, A9 VBUS {usb_microb_device_pins[1], usb_c_device_sidea_pins[12 + 9]}, // VBUS, B9 VBUS {usb_microb_device_pins[1], usb_c_device_sidea_pins[12 + 4]}, // VBUS, B4 VBUS {usb_microb_device_pins[0], usb_c_device_sidea_pins[0]}, // shield, shield {usb_microb_device_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND {usb_microb_device_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND {usb_microb_device_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND {usb_microb_device_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND {usb_microb_device_pins[5], usb_c_device_sidea_pins[0]}, // GND, shield {usb_microb_device_pins[5], usb_c_device_sidea_pins[1]}, // GND, A1 GND {usb_microb_device_pins[5], usb_c_device_sidea_pins[12]}, // GND, A12 GND {usb_microb_device_pins[5], usb_c_device_sidea_pins[12 + 12]}, // GND, B12 GND {usb_microb_device_pins[5], usb_c_device_sidea_pins[12 + 1]}, // GND, B1 GND {usb_microb_device_pins[8], usb_c_device_sidea_pins[0]}, // GND_DRAIN, shield {usb_microb_device_pins[8], usb_c_device_sidea_pins[1]}, // GND_DRAIN, A1 GND {usb_microb_device_pins[8], usb_c_device_sidea_pins[12]}, // GND_DARIN, A12 GND {usb_microb_device_pins[8], usb_c_device_sidea_pins[12 + 12]}, // GND_DRAIN, B12 GND {usb_microb_device_pins[8], usb_c_device_sidea_pins[12 + 1]}, // GND_DRAIN, B1 GND {usb_microb_device_pins[1], usb_c_device_sidea_pins[5]}, // VBUS - A5 CC1 (5.1 kO) // B-C connections, data {usb_microb_device_pins[2], usb_c_device_sidea_pins[7]}, // D-, A7 Dn1 {usb_microb_device_pins[3], usb_c_device_sidea_pins[6]}, // D+, A6 Dp1 {usb_microb_device_pins[10], usb_c_device_sidea_pins[2]}, // RX+, A2 TXp1 {usb_microb_device_pins[9], usb_c_device_sidea_pins[3]}, // RX-, A3 TXn1 {usb_microb_device_pins[7], usb_c_device_sidea_pins[12 + 11]}, // TX+, B11 RXp1 {usb_microb_device_pins[6], usb_c_device_sidea_pins[12 + 10]}, // TX-, B10 RXn1 }; static const uint8_t usb__c_device_sideb__microb_device__cmicrob3_pins[][2] = { // B internal connections {usb_microb_device_pins[0], usb_microb_device_pins[5]}, // shield, GND {usb_microb_device_pins[0], usb_microb_device_pins[8]}, // shield, GND_DRAIN {usb_microb_device_pins[5], usb_microb_device_pins[8]}, // GND, GND_DRAIN // C internal connections {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND {usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12]}, // A1 GND, A12 GND {usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_device_sideb_pins[12 + 1], usb_c_device_sideb_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_device_sideb_pins[12 + 9], usb_c_device_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[4]}, // CC1, A4 VBUS (5.1kO) {usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[9]}, // CC1, A9 VBUS (5.1kO) {usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[16]}, // CC1, B9 VBUS (5.1kO) {usb_c_device_sideb_pins[5], usb_c_device_sideb_pins[21]}, // CC1, B4 VBUS (5.1kO) // B-C connections, GND and VBUS {usb_microb_device_pins[1], usb_c_device_sideb_pins[4]}, // VBUS, A4 VBUS {usb_microb_device_pins[1], usb_c_device_sideb_pins[9]}, // VBUS, A9 VBUS {usb_microb_device_pins[1], usb_c_device_sideb_pins[12 + 9]}, // VBUS, B9 VBUS {usb_microb_device_pins[1], usb_c_device_sideb_pins[12 + 4]}, // VBUS, B4 VBUS {usb_microb_device_pins[0], usb_c_device_sideb_pins[0]}, // shield, shield {usb_microb_device_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND {usb_microb_device_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND {usb_microb_device_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND {usb_microb_device_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND {usb_microb_device_pins[5], usb_c_device_sideb_pins[0]}, // GND, shield {usb_microb_device_pins[5], usb_c_device_sideb_pins[1]}, // GND, A1 GND {usb_microb_device_pins[5], usb_c_device_sideb_pins[12]}, // GND, A12 GND {usb_microb_device_pins[5], usb_c_device_sideb_pins[12 + 12]}, // GND, B12 GND {usb_microb_device_pins[5], usb_c_device_sideb_pins[12 + 1]}, // GND, B1 GND {usb_microb_device_pins[8], usb_c_device_sideb_pins[0]}, // GND_DRAIN, shield {usb_microb_device_pins[8], usb_c_device_sideb_pins[1]}, // GND_DRAIN, A1 GND {usb_microb_device_pins[8], usb_c_device_sideb_pins[12]}, // GND_DARIN, A12 GND {usb_microb_device_pins[8], usb_c_device_sideb_pins[12 + 12]}, // GND_DRAIN, B12 GND {usb_microb_device_pins[8], usb_c_device_sideb_pins[12 + 1]}, // GND_DRAIN, B1 GND {usb_microb_device_pins[1], usb_c_device_sideb_pins[5]}, // VBUS - A5 CC1 (5.1 kO) // B-C connections, data {usb_microb_device_pins[2], usb_c_device_sideb_pins[7]}, // D-, A7 Dn1 {usb_microb_device_pins[3], usb_c_device_sideb_pins[6]}, // D+, A6 Dp1 {usb_microb_device_pins[10], usb_c_device_sideb_pins[2]}, // RX+, A2 TXp1 {usb_microb_device_pins[9], usb_c_device_sideb_pins[3]}, // RX-, A3 TXn1 {usb_microb_device_pins[7], usb_c_device_sideb_pins[12 + 11]}, // TX+, B11 RXp1 {usb_microb_device_pins[6], usb_c_device_sideb_pins[12 + 10]}, // TX-, B10 RXn1 }; /** list of connectors for C-C cables */ static const struct usb_connector_t* usb_c_c_connectors[] = { &usb_c_host_connector, &usb_c_device_connector, }; /** USB type C to type C USB 2.0 cable pin pairs * @implements CC2-3 and CC2-5 from USB Type-C Cable and Connector Specification (https://www.usb.org/document-library/usb-type-cr-cable-and-connector-specification-revision-20-august-2019) */ static const uint8_t usb__c_host_sidea__c_device_sidea__cc2_pins[][2] = { // C host side internal connections {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[1]}, // shield, A1 GND {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12]}, // shield, A12 GND {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 12]}, // shield, B12 GND {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 1]}, // shield, B1 GND {usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12]}, // A1 GND, A12 GND {usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_host_sidea_pins[12 + 1], usb_c_host_sidea_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_host_sidea_pins[12 + 9], usb_c_host_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS // C device side internal connections {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND {usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12]}, // A1 GND, A12 GND {usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_device_sidea_pins[12 + 1], usb_c_device_sidea_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_device_sidea_pins[12 + 9], usb_c_device_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS // C-C connections, GND and VBUS {usb_c_host_sidea_pins[0], usb_c_device_sidea_pins[0]}, // shield, shield {usb_c_host_sidea_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND {usb_c_host_sidea_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND {usb_c_host_sidea_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND {usb_c_host_sidea_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND {usb_c_host_sidea_pins[1], usb_c_device_sidea_pins[0]}, // A1 GND, shield {usb_c_host_sidea_pins[1], usb_c_device_sidea_pins[1]}, // A1 GND, A1 GND {usb_c_host_sidea_pins[1], usb_c_device_sidea_pins[12]}, // A1 GND, A12 GND {usb_c_host_sidea_pins[1], usb_c_device_sidea_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_host_sidea_pins[1], usb_c_device_sidea_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_host_sidea_pins[12], usb_c_device_sidea_pins[0]}, // A12 GND, shield {usb_c_host_sidea_pins[12], usb_c_device_sidea_pins[1]}, // A12 GND, A1 GND {usb_c_host_sidea_pins[12], usb_c_device_sidea_pins[12]}, // A12 GND, A12 GND {usb_c_host_sidea_pins[12], usb_c_device_sidea_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_host_sidea_pins[12], usb_c_device_sidea_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_host_sidea_pins[12 + 1], usb_c_device_sidea_pins[0]}, // B1 GND, shield {usb_c_host_sidea_pins[12 + 1], usb_c_device_sidea_pins[1]}, // B1 GND, A1 GND {usb_c_host_sidea_pins[12 + 1], usb_c_device_sidea_pins[12]}, // B1 GND, A12 GND {usb_c_host_sidea_pins[12 + 1], usb_c_device_sidea_pins[12 + 1]}, // B1 GND, B1 GND {usb_c_host_sidea_pins[12 + 1], usb_c_device_sidea_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_host_sidea_pins[12 + 12], usb_c_device_sidea_pins[0]}, // B12 GND, shield {usb_c_host_sidea_pins[12 + 12], usb_c_device_sidea_pins[1]}, // B12 GND, A1 GND {usb_c_host_sidea_pins[12 + 12], usb_c_device_sidea_pins[12]}, // B12 GND, A12 GND {usb_c_host_sidea_pins[12 + 12], usb_c_device_sidea_pins[12 + 1]}, // B12 GND, B1 GND {usb_c_host_sidea_pins[12 + 12], usb_c_device_sidea_pins[12 + 12]}, // B12 GND, B12 GND {usb_c_host_sidea_pins[4], usb_c_device_sidea_pins[4]}, // A4 VBUS, A4 VBUS {usb_c_host_sidea_pins[4], usb_c_device_sidea_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_host_sidea_pins[4], usb_c_device_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_host_sidea_pins[4], usb_c_device_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_host_sidea_pins[9], usb_c_device_sidea_pins[4]}, // A9 VBUS, A4 VBUS {usb_c_host_sidea_pins[9], usb_c_device_sidea_pins[9]}, // A9 VBUS, A9 VBUS {usb_c_host_sidea_pins[9], usb_c_device_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_host_sidea_pins[9], usb_c_device_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_host_sidea_pins[12 + 4], usb_c_device_sidea_pins[4]}, // B4 VBUS, A4 VBUS {usb_c_host_sidea_pins[12 + 4], usb_c_device_sidea_pins[9]}, // B4 VBUS, A9 VBUS {usb_c_host_sidea_pins[12 + 4], usb_c_device_sidea_pins[12 + 4]}, // B4 VBUS, B4 VBUS {usb_c_host_sidea_pins[12 + 4], usb_c_device_sidea_pins[12 + 9]}, // B4 VBUS, B9 VBUS {usb_c_host_sidea_pins[12 + 9], usb_c_device_sidea_pins[4]}, // B9 VBUS, A4 VBUS {usb_c_host_sidea_pins[12 + 9], usb_c_device_sidea_pins[9]}, // B9 VBUS, A9 VBUS {usb_c_host_sidea_pins[12 + 9], usb_c_device_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_host_sidea_pins[12 + 9], usb_c_device_sidea_pins[12 + 9]}, // B9 VBUS, B9 VBUS // C-C data connections {usb_c_host_sidea_pins[5], usb_c_device_sidea_pins[5]}, // A5 CC1, A5 CC1 (CC) //{usb_c_host_sidea_pins[12 + 5], usb_c_device_sidea_pins[12 + 5]}, // B5 CC2, B5 CC2 (VCONN) {usb_c_host_sidea_pins[6], usb_c_device_sidea_pins[6]}, // A6 Dp1, A6 Dp1 {usb_c_host_sidea_pins[7], usb_c_device_sidea_pins[7]}, // A7 Dn1, A7 Dn1 }; static const uint8_t usb__c_host_sidea__c_device_sideb__cc2_pins[][2] = { // C host side internal connections {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[1]}, // shield, A1 GND {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12]}, // shield, A12 GND {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 12]}, // shield, B12 GND {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 1]}, // shield, B1 GND {usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12]}, // A1 GND, A12 GND {usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_host_sidea_pins[12 + 1], usb_c_host_sidea_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_host_sidea_pins[12 + 9], usb_c_host_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS // C device side internal connections {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND {usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12]}, // A1 GND, A12 GND {usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_device_sideb_pins[12 + 1], usb_c_device_sideb_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_device_sideb_pins[12 + 9], usb_c_device_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS // C-C connections, GND and VBUS {usb_c_host_sidea_pins[0], usb_c_device_sideb_pins[0]}, // shield, shield {usb_c_host_sidea_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND {usb_c_host_sidea_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND {usb_c_host_sidea_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND {usb_c_host_sidea_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND {usb_c_host_sidea_pins[1], usb_c_device_sideb_pins[0]}, // A1 GND, shield {usb_c_host_sidea_pins[1], usb_c_device_sideb_pins[1]}, // A1 GND, A1 GND {usb_c_host_sidea_pins[1], usb_c_device_sideb_pins[12]}, // A1 GND, A12 GND {usb_c_host_sidea_pins[1], usb_c_device_sideb_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_host_sidea_pins[1], usb_c_device_sideb_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_host_sidea_pins[12], usb_c_device_sideb_pins[0]}, // A12 GND, shield {usb_c_host_sidea_pins[12], usb_c_device_sideb_pins[1]}, // A12 GND, A1 GND {usb_c_host_sidea_pins[12], usb_c_device_sideb_pins[12]}, // A12 GND, A12 GND {usb_c_host_sidea_pins[12], usb_c_device_sideb_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_host_sidea_pins[12], usb_c_device_sideb_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_host_sidea_pins[12 + 1], usb_c_device_sideb_pins[0]}, // B1 GND, shield {usb_c_host_sidea_pins[12 + 1], usb_c_device_sideb_pins[1]}, // B1 GND, A1 GND {usb_c_host_sidea_pins[12 + 1], usb_c_device_sideb_pins[12]}, // B1 GND, A12 GND {usb_c_host_sidea_pins[12 + 1], usb_c_device_sideb_pins[12 + 1]}, // B1 GND, B1 GND {usb_c_host_sidea_pins[12 + 1], usb_c_device_sideb_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_host_sidea_pins[12 + 12], usb_c_device_sideb_pins[0]}, // B12 GND, shield {usb_c_host_sidea_pins[12 + 12], usb_c_device_sideb_pins[1]}, // B12 GND, A1 GND {usb_c_host_sidea_pins[12 + 12], usb_c_device_sideb_pins[12]}, // B12 GND, A12 GND {usb_c_host_sidea_pins[12 + 12], usb_c_device_sideb_pins[12 + 1]}, // B12 GND, B1 GND {usb_c_host_sidea_pins[12 + 12], usb_c_device_sideb_pins[12 + 12]}, // B12 GND, B12 GND {usb_c_host_sidea_pins[4], usb_c_device_sideb_pins[4]}, // A4 VBUS, A4 VBUS {usb_c_host_sidea_pins[4], usb_c_device_sideb_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_host_sidea_pins[4], usb_c_device_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_host_sidea_pins[4], usb_c_device_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_host_sidea_pins[9], usb_c_device_sideb_pins[4]}, // A9 VBUS, A4 VBUS {usb_c_host_sidea_pins[9], usb_c_device_sideb_pins[9]}, // A9 VBUS, A9 VBUS {usb_c_host_sidea_pins[9], usb_c_device_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_host_sidea_pins[9], usb_c_device_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_host_sidea_pins[12 + 4], usb_c_device_sideb_pins[4]}, // B4 VBUS, A4 VBUS {usb_c_host_sidea_pins[12 + 4], usb_c_device_sideb_pins[9]}, // B4 VBUS, A9 VBUS {usb_c_host_sidea_pins[12 + 4], usb_c_device_sideb_pins[12 + 4]}, // B4 VBUS, B4 VBUS {usb_c_host_sidea_pins[12 + 4], usb_c_device_sideb_pins[12 + 9]}, // B4 VBUS, B9 VBUS {usb_c_host_sidea_pins[12 + 9], usb_c_device_sideb_pins[4]}, // B9 VBUS, A4 VBUS {usb_c_host_sidea_pins[12 + 9], usb_c_device_sideb_pins[9]}, // B9 VBUS, A9 VBUS {usb_c_host_sidea_pins[12 + 9], usb_c_device_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_host_sidea_pins[12 + 9], usb_c_device_sideb_pins[12 + 9]}, // B9 VBUS, B9 VBUS // C-C data connections {usb_c_host_sidea_pins[5], usb_c_device_sideb_pins[5]}, // A5 CC1, A5 CC1 (CC) //{usb_c_host_sidea_pins[12 + 5], usb_c_device_sideb_pins[12 + 5]}, // B5 CC2, B5 CC2 (VCONN) {usb_c_host_sidea_pins[6], usb_c_device_sideb_pins[6]}, // A6 Dp1, A6 Dp1 {usb_c_host_sidea_pins[7], usb_c_device_sideb_pins[7]}, // A7 Dn1, A7 Dn1 }; static const uint8_t usb__c_host_sideb__c_device_sidea__cc2_pins[][2] = { // C host side internal connections {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[1]}, // shield, A1 GND {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12]}, // shield, A12 GND {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 12]}, // shield, B12 GND {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 1]}, // shield, B1 GND {usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12]}, // A1 GND, A12 GND {usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_host_sideb_pins[12 + 1], usb_c_host_sideb_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_host_sideb_pins[12 + 9], usb_c_host_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS // C device side internal connections {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND {usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12]}, // A1 GND, A12 GND {usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_device_sidea_pins[12 + 1], usb_c_device_sidea_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_device_sidea_pins[12 + 9], usb_c_device_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS // C-C connections, GND and VBUS {usb_c_host_sideb_pins[0], usb_c_device_sidea_pins[0]}, // shield, shield {usb_c_host_sideb_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND {usb_c_host_sideb_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND {usb_c_host_sideb_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND {usb_c_host_sideb_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND {usb_c_host_sideb_pins[1], usb_c_device_sidea_pins[0]}, // A1 GND, shield {usb_c_host_sideb_pins[1], usb_c_device_sidea_pins[1]}, // A1 GND, A1 GND {usb_c_host_sideb_pins[1], usb_c_device_sidea_pins[12]}, // A1 GND, A12 GND {usb_c_host_sideb_pins[1], usb_c_device_sidea_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_host_sideb_pins[1], usb_c_device_sidea_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_host_sideb_pins[12], usb_c_device_sidea_pins[0]}, // A12 GND, shield {usb_c_host_sideb_pins[12], usb_c_device_sidea_pins[1]}, // A12 GND, A1 GND {usb_c_host_sideb_pins[12], usb_c_device_sidea_pins[12]}, // A12 GND, A12 GND {usb_c_host_sideb_pins[12], usb_c_device_sidea_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_host_sideb_pins[12], usb_c_device_sidea_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_host_sideb_pins[12 + 1], usb_c_device_sidea_pins[0]}, // B1 GND, shield {usb_c_host_sideb_pins[12 + 1], usb_c_device_sidea_pins[1]}, // B1 GND, A1 GND {usb_c_host_sideb_pins[12 + 1], usb_c_device_sidea_pins[12]}, // B1 GND, A12 GND {usb_c_host_sideb_pins[12 + 1], usb_c_device_sidea_pins[12 + 1]}, // B1 GND, B1 GND {usb_c_host_sideb_pins[12 + 1], usb_c_device_sidea_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_host_sideb_pins[12 + 12], usb_c_device_sidea_pins[0]}, // B12 GND, shield {usb_c_host_sideb_pins[12 + 12], usb_c_device_sidea_pins[1]}, // B12 GND, A1 GND {usb_c_host_sideb_pins[12 + 12], usb_c_device_sidea_pins[12]}, // B12 GND, A12 GND {usb_c_host_sideb_pins[12 + 12], usb_c_device_sidea_pins[12 + 1]}, // B12 GND, B1 GND {usb_c_host_sideb_pins[12 + 12], usb_c_device_sidea_pins[12 + 12]}, // B12 GND, B12 GND {usb_c_host_sideb_pins[4], usb_c_device_sidea_pins[4]}, // A4 VBUS, A4 VBUS {usb_c_host_sideb_pins[4], usb_c_device_sidea_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_host_sideb_pins[4], usb_c_device_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_host_sideb_pins[4], usb_c_device_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_host_sideb_pins[9], usb_c_device_sidea_pins[4]}, // A9 VBUS, A4 VBUS {usb_c_host_sideb_pins[9], usb_c_device_sidea_pins[9]}, // A9 VBUS, A9 VBUS {usb_c_host_sideb_pins[9], usb_c_device_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_host_sideb_pins[9], usb_c_device_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_host_sideb_pins[12 + 4], usb_c_device_sidea_pins[4]}, // B4 VBUS, A4 VBUS {usb_c_host_sideb_pins[12 + 4], usb_c_device_sidea_pins[9]}, // B4 VBUS, A9 VBUS {usb_c_host_sideb_pins[12 + 4], usb_c_device_sidea_pins[12 + 4]}, // B4 VBUS, B4 VBUS {usb_c_host_sideb_pins[12 + 4], usb_c_device_sidea_pins[12 + 9]}, // B4 VBUS, B9 VBUS {usb_c_host_sideb_pins[12 + 9], usb_c_device_sidea_pins[4]}, // B9 VBUS, A4 VBUS {usb_c_host_sideb_pins[12 + 9], usb_c_device_sidea_pins[9]}, // B9 VBUS, A9 VBUS {usb_c_host_sideb_pins[12 + 9], usb_c_device_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_host_sideb_pins[12 + 9], usb_c_device_sidea_pins[12 + 9]}, // B9 VBUS, B9 VBUS // C-C data connections {usb_c_host_sideb_pins[5], usb_c_device_sidea_pins[5]}, // A5 CC1, A5 CC1 (CC) //{usb_c_host_sideb_pins[12 + 5], usb_c_device_sidea_pins[12 + 5]}, // B5 CC2, B5 CC2 (VCONN) {usb_c_host_sideb_pins[6], usb_c_device_sidea_pins[6]}, // A6 Dp1, A6 Dp1 {usb_c_host_sideb_pins[7], usb_c_device_sidea_pins[7]}, // A7 Dn1, A7 Dn1 }; static const uint8_t usb__c_host_sideb__c_device_sideb__cc2_pins[][2] = { // C host side internal connections {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[1]}, // shield, A1 GND {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12]}, // shield, A12 GND {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 12]}, // shield, B12 GND {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 1]}, // shield, B1 GND {usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12]}, // A1 GND, A12 GND {usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_host_sideb_pins[12 + 1], usb_c_host_sideb_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_host_sideb_pins[12 + 9], usb_c_host_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS // C device side internal connections {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND {usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12]}, // A1 GND, A12 GND {usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_device_sideb_pins[12 + 1], usb_c_device_sideb_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_device_sideb_pins[12 + 9], usb_c_device_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS // C-C connections, GND and VBUS {usb_c_host_sideb_pins[0], usb_c_device_sideb_pins[0]}, // shield, shield {usb_c_host_sideb_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND {usb_c_host_sideb_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND {usb_c_host_sideb_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND {usb_c_host_sideb_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND {usb_c_host_sideb_pins[1], usb_c_device_sideb_pins[0]}, // A1 GND, shield {usb_c_host_sideb_pins[1], usb_c_device_sideb_pins[1]}, // A1 GND, A1 GND {usb_c_host_sideb_pins[1], usb_c_device_sideb_pins[12]}, // A1 GND, A12 GND {usb_c_host_sideb_pins[1], usb_c_device_sideb_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_host_sideb_pins[1], usb_c_device_sideb_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_host_sideb_pins[12], usb_c_device_sideb_pins[0]}, // A12 GND, shield {usb_c_host_sideb_pins[12], usb_c_device_sideb_pins[1]}, // A12 GND, A1 GND {usb_c_host_sideb_pins[12], usb_c_device_sideb_pins[12]}, // A12 GND, A12 GND {usb_c_host_sideb_pins[12], usb_c_device_sideb_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_host_sideb_pins[12], usb_c_device_sideb_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_host_sideb_pins[12 + 1], usb_c_device_sideb_pins[0]}, // B1 GND, shield {usb_c_host_sideb_pins[12 + 1], usb_c_device_sideb_pins[1]}, // B1 GND, A1 GND {usb_c_host_sideb_pins[12 + 1], usb_c_device_sideb_pins[12]}, // B1 GND, A12 GND {usb_c_host_sideb_pins[12 + 1], usb_c_device_sideb_pins[12 + 1]}, // B1 GND, B1 GND {usb_c_host_sideb_pins[12 + 1], usb_c_device_sideb_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_host_sideb_pins[12 + 12], usb_c_device_sideb_pins[0]}, // B12 GND, shield {usb_c_host_sideb_pins[12 + 12], usb_c_device_sideb_pins[1]}, // B12 GND, A1 GND {usb_c_host_sideb_pins[12 + 12], usb_c_device_sideb_pins[12]}, // B12 GND, A12 GND {usb_c_host_sideb_pins[12 + 12], usb_c_device_sideb_pins[12 + 1]}, // B12 GND, B1 GND {usb_c_host_sideb_pins[12 + 12], usb_c_device_sideb_pins[12 + 12]}, // B12 GND, B12 GND {usb_c_host_sideb_pins[4], usb_c_device_sideb_pins[4]}, // A4 VBUS, A4 VBUS {usb_c_host_sideb_pins[4], usb_c_device_sideb_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_host_sideb_pins[4], usb_c_device_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_host_sideb_pins[4], usb_c_device_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_host_sideb_pins[9], usb_c_device_sideb_pins[4]}, // A9 VBUS, A4 VBUS {usb_c_host_sideb_pins[9], usb_c_device_sideb_pins[9]}, // A9 VBUS, A9 VBUS {usb_c_host_sideb_pins[9], usb_c_device_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_host_sideb_pins[9], usb_c_device_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_host_sideb_pins[12 + 4], usb_c_device_sideb_pins[4]}, // B4 VBUS, A4 VBUS {usb_c_host_sideb_pins[12 + 4], usb_c_device_sideb_pins[9]}, // B4 VBUS, A9 VBUS {usb_c_host_sideb_pins[12 + 4], usb_c_device_sideb_pins[12 + 4]}, // B4 VBUS, B4 VBUS {usb_c_host_sideb_pins[12 + 4], usb_c_device_sideb_pins[12 + 9]}, // B4 VBUS, B9 VBUS {usb_c_host_sideb_pins[12 + 9], usb_c_device_sideb_pins[4]}, // B9 VBUS, A4 VBUS {usb_c_host_sideb_pins[12 + 9], usb_c_device_sideb_pins[9]}, // B9 VBUS, A9 VBUS {usb_c_host_sideb_pins[12 + 9], usb_c_device_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_host_sideb_pins[12 + 9], usb_c_device_sideb_pins[12 + 9]}, // B9 VBUS, B9 VBUS // C-C data connections {usb_c_host_sideb_pins[5], usb_c_device_sideb_pins[5]}, // A5 CC1, A5 CC1 (CC) //{usb_c_host_sideb_pins[12 + 5], usb_c_device_sideb_pins[12 + 5]}, // B5 CC2, B5 CC2 (VCONN) {usb_c_host_sideb_pins[6], usb_c_device_sideb_pins[6]}, // A6 Dp1, A6 Dp1 {usb_c_host_sideb_pins[7], usb_c_device_sideb_pins[7]}, // A7 Dn1, A7 Dn1 }; /** USB type C to type C full featured cable pin pairs * @implements Full-Featured assembly from USB Type-C Cable and Connector Specification (https://www.usb.org/document-library/usb-type-cr-cable-and-connector-specification-revision-20-august-2019) */ static const uint8_t usb__c_host_sidea__c_device_sidea__ff_pins[][2] = { // C host side internal connections {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[1]}, // shield, A1 GND {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12]}, // shield, A12 GND {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 12]}, // shield, B12 GND {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 1]}, // shield, B1 GND {usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12]}, // A1 GND, A12 GND {usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_host_sidea_pins[12 + 1], usb_c_host_sidea_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_host_sidea_pins[12 + 9], usb_c_host_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS // C device side internal connections {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND {usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12]}, // A1 GND, A12 GND {usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_device_sidea_pins[12 + 1], usb_c_device_sidea_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_device_sidea_pins[12 + 9], usb_c_device_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS // C-C connections, GND and VBUS {usb_c_host_sidea_pins[0], usb_c_device_sidea_pins[0]}, // shield, shield {usb_c_host_sidea_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND {usb_c_host_sidea_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND {usb_c_host_sidea_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND {usb_c_host_sidea_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND {usb_c_host_sidea_pins[1], usb_c_device_sidea_pins[0]}, // A1 GND, shield {usb_c_host_sidea_pins[1], usb_c_device_sidea_pins[1]}, // A1 GND, A1 GND {usb_c_host_sidea_pins[1], usb_c_device_sidea_pins[12]}, // A1 GND, A12 GND {usb_c_host_sidea_pins[1], usb_c_device_sidea_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_host_sidea_pins[1], usb_c_device_sidea_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_host_sidea_pins[12], usb_c_device_sidea_pins[0]}, // A12 GND, shield {usb_c_host_sidea_pins[12], usb_c_device_sidea_pins[1]}, // A12 GND, A1 GND {usb_c_host_sidea_pins[12], usb_c_device_sidea_pins[12]}, // A12 GND, A12 GND {usb_c_host_sidea_pins[12], usb_c_device_sidea_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_host_sidea_pins[12], usb_c_device_sidea_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_host_sidea_pins[12 + 1], usb_c_device_sidea_pins[0]}, // B1 GND, shield {usb_c_host_sidea_pins[12 + 1], usb_c_device_sidea_pins[1]}, // B1 GND, A1 GND {usb_c_host_sidea_pins[12 + 1], usb_c_device_sidea_pins[12]}, // B1 GND, A12 GND {usb_c_host_sidea_pins[12 + 1], usb_c_device_sidea_pins[12 + 1]}, // B1 GND, B1 GND {usb_c_host_sidea_pins[12 + 1], usb_c_device_sidea_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_host_sidea_pins[12 + 12], usb_c_device_sidea_pins[0]}, // B12 GND, shield {usb_c_host_sidea_pins[12 + 12], usb_c_device_sidea_pins[1]}, // B12 GND, A1 GND {usb_c_host_sidea_pins[12 + 12], usb_c_device_sidea_pins[12]}, // B12 GND, A12 GND {usb_c_host_sidea_pins[12 + 12], usb_c_device_sidea_pins[12 + 1]}, // B12 GND, B1 GND {usb_c_host_sidea_pins[12 + 12], usb_c_device_sidea_pins[12 + 12]}, // B12 GND, B12 GND {usb_c_host_sidea_pins[4], usb_c_device_sidea_pins[4]}, // A4 VBUS, A4 VBUS {usb_c_host_sidea_pins[4], usb_c_device_sidea_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_host_sidea_pins[4], usb_c_device_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_host_sidea_pins[4], usb_c_device_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_host_sidea_pins[9], usb_c_device_sidea_pins[4]}, // A9 VBUS, A4 VBUS {usb_c_host_sidea_pins[9], usb_c_device_sidea_pins[9]}, // A9 VBUS, A9 VBUS {usb_c_host_sidea_pins[9], usb_c_device_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_host_sidea_pins[9], usb_c_device_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_host_sidea_pins[12 + 4], usb_c_device_sidea_pins[4]}, // B4 VBUS, A4 VBUS {usb_c_host_sidea_pins[12 + 4], usb_c_device_sidea_pins[9]}, // B4 VBUS, A9 VBUS {usb_c_host_sidea_pins[12 + 4], usb_c_device_sidea_pins[12 + 4]}, // B4 VBUS, B4 VBUS {usb_c_host_sidea_pins[12 + 4], usb_c_device_sidea_pins[12 + 9]}, // B4 VBUS, B9 VBUS {usb_c_host_sidea_pins[12 + 9], usb_c_device_sidea_pins[4]}, // B9 VBUS, A4 VBUS {usb_c_host_sidea_pins[12 + 9], usb_c_device_sidea_pins[9]}, // B9 VBUS, A9 VBUS {usb_c_host_sidea_pins[12 + 9], usb_c_device_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_host_sidea_pins[12 + 9], usb_c_device_sidea_pins[12 + 9]}, // B9 VBUS, B9 VBUS // C-C data connections {usb_c_host_sidea_pins[5], usb_c_device_sidea_pins[5]}, // A5 CC1, A5 CC1 (CC) //{usb_c_host_sidea_pins[12 + 5], usb_c_device_sidea_pins[12 + 5]}, // B5 CC2, B5 CC2 (VCONN) {usb_c_host_sidea_pins[6], usb_c_device_sidea_pins[6]}, // A6 Dp1, A6 Dp1 {usb_c_host_sidea_pins[7], usb_c_device_sidea_pins[7]}, // A7 Dn1, A7 Dn1 {usb_c_host_sidea_pins[2], usb_c_device_sidea_pins[12 + 11]}, // A2 TXp1, B11 RXp1 {usb_c_host_sidea_pins[3], usb_c_device_sidea_pins[12 + 10]}, // A3 TXn1, B10 RXn1 {usb_c_host_sidea_pins[12 + 11], usb_c_device_sidea_pins[2]}, // B11 RXp1, A2 TXp1 {usb_c_host_sidea_pins[12 + 10], usb_c_device_sidea_pins[3]}, // B10 RXn1, A3 TXn1 {usb_c_host_sidea_pins[12 + 2], usb_c_device_sidea_pins[11]}, // B2 TXp2, Q11 RXp2 {usb_c_host_sidea_pins[12 + 3], usb_c_device_sidea_pins[10]}, // B3 TXn2, A10 RXn2 {usb_c_host_sidea_pins[11], usb_c_device_sidea_pins[12 + 2]}, // A11 RXp2, B2 TXp2 {usb_c_host_sidea_pins[10], usb_c_device_sidea_pins[12 + 3]}, // A10 RXn2, B3 TXn2 {usb_c_host_sidea_pins[8], usb_c_device_sidea_pins[12 + 8]}, // A8 SBU1, B8 SBU2 {usb_c_host_sidea_pins[12 + 8], usb_c_device_sidea_pins[8]}, // B8 SBU2, A8 SBU1 }; static const uint8_t usb__c_host_sidea__c_device_sideb__ff_pins[][2] = { // C host side internal connections {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[1]}, // shield, A1 GND {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12]}, // shield, A12 GND {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 12]}, // shield, B12 GND {usb_c_host_sidea_pins[0], usb_c_host_sidea_pins[12 + 1]}, // shield, B1 GND {usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12]}, // A1 GND, A12 GND {usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_host_sidea_pins[1], usb_c_host_sidea_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_host_sidea_pins[12], usb_c_host_sidea_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_host_sidea_pins[12 + 1], usb_c_host_sidea_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_host_sidea_pins[4], usb_c_host_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_host_sidea_pins[9], usb_c_host_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_host_sidea_pins[12 + 9], usb_c_host_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS // C device side internal connections {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND {usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12]}, // A1 GND, A12 GND {usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_device_sideb_pins[12 + 1], usb_c_device_sideb_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_device_sideb_pins[12 + 9], usb_c_device_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS // C-C connections, GND and VBUS {usb_c_host_sidea_pins[0], usb_c_device_sideb_pins[0]}, // shield, shield {usb_c_host_sidea_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND {usb_c_host_sidea_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND {usb_c_host_sidea_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND {usb_c_host_sidea_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND {usb_c_host_sidea_pins[1], usb_c_device_sideb_pins[0]}, // A1 GND, shield {usb_c_host_sidea_pins[1], usb_c_device_sideb_pins[1]}, // A1 GND, A1 GND {usb_c_host_sidea_pins[1], usb_c_device_sideb_pins[12]}, // A1 GND, A12 GND {usb_c_host_sidea_pins[1], usb_c_device_sideb_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_host_sidea_pins[1], usb_c_device_sideb_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_host_sidea_pins[12], usb_c_device_sideb_pins[0]}, // A12 GND, shield {usb_c_host_sidea_pins[12], usb_c_device_sideb_pins[1]}, // A12 GND, A1 GND {usb_c_host_sidea_pins[12], usb_c_device_sideb_pins[12]}, // A12 GND, A12 GND {usb_c_host_sidea_pins[12], usb_c_device_sideb_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_host_sidea_pins[12], usb_c_device_sideb_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_host_sidea_pins[12 + 1], usb_c_device_sideb_pins[0]}, // B1 GND, shield {usb_c_host_sidea_pins[12 + 1], usb_c_device_sideb_pins[1]}, // B1 GND, A1 GND {usb_c_host_sidea_pins[12 + 1], usb_c_device_sideb_pins[12]}, // B1 GND, A12 GND {usb_c_host_sidea_pins[12 + 1], usb_c_device_sideb_pins[12 + 1]}, // B1 GND, B1 GND {usb_c_host_sidea_pins[12 + 1], usb_c_device_sideb_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_host_sidea_pins[12 + 12], usb_c_device_sideb_pins[0]}, // B12 GND, shield {usb_c_host_sidea_pins[12 + 12], usb_c_device_sideb_pins[1]}, // B12 GND, A1 GND {usb_c_host_sidea_pins[12 + 12], usb_c_device_sideb_pins[12]}, // B12 GND, A12 GND {usb_c_host_sidea_pins[12 + 12], usb_c_device_sideb_pins[12 + 1]}, // B12 GND, B1 GND {usb_c_host_sidea_pins[12 + 12], usb_c_device_sideb_pins[12 + 12]}, // B12 GND, B12 GND {usb_c_host_sidea_pins[4], usb_c_device_sideb_pins[4]}, // A4 VBUS, A4 VBUS {usb_c_host_sidea_pins[4], usb_c_device_sideb_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_host_sidea_pins[4], usb_c_device_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_host_sidea_pins[4], usb_c_device_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_host_sidea_pins[9], usb_c_device_sideb_pins[4]}, // A9 VBUS, A4 VBUS {usb_c_host_sidea_pins[9], usb_c_device_sideb_pins[9]}, // A9 VBUS, A9 VBUS {usb_c_host_sidea_pins[9], usb_c_device_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_host_sidea_pins[9], usb_c_device_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_host_sidea_pins[12 + 4], usb_c_device_sideb_pins[4]}, // B4 VBUS, A4 VBUS {usb_c_host_sidea_pins[12 + 4], usb_c_device_sideb_pins[9]}, // B4 VBUS, A9 VBUS {usb_c_host_sidea_pins[12 + 4], usb_c_device_sideb_pins[12 + 4]}, // B4 VBUS, B4 VBUS {usb_c_host_sidea_pins[12 + 4], usb_c_device_sideb_pins[12 + 9]}, // B4 VBUS, B9 VBUS {usb_c_host_sidea_pins[12 + 9], usb_c_device_sideb_pins[4]}, // B9 VBUS, A4 VBUS {usb_c_host_sidea_pins[12 + 9], usb_c_device_sideb_pins[9]}, // B9 VBUS, A9 VBUS {usb_c_host_sidea_pins[12 + 9], usb_c_device_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_host_sidea_pins[12 + 9], usb_c_device_sideb_pins[12 + 9]}, // B9 VBUS, B9 VBUS // C-C data connections {usb_c_host_sidea_pins[5], usb_c_device_sideb_pins[5]}, // A5 CC1, A5 CC1 (CC) //{usb_c_host_sidea_pins[12 + 5], usb_c_device_sideb_pins[12 + 5]}, // B5 CC2, B5 CC2 (VCONN) {usb_c_host_sidea_pins[6], usb_c_device_sideb_pins[6]}, // A6 Dp1, A6 Dp1 {usb_c_host_sidea_pins[7], usb_c_device_sideb_pins[7]}, // A7 Dn1, A7 Dn1 {usb_c_host_sidea_pins[2], usb_c_device_sideb_pins[12 + 11]}, // A2 TXp1, B11 RXp1 {usb_c_host_sidea_pins[3], usb_c_device_sideb_pins[12 + 10]}, // A3 TXn1, B10 RXn1 {usb_c_host_sidea_pins[12 + 11], usb_c_device_sideb_pins[2]}, // B11 RXp1, A2 TXp1 {usb_c_host_sidea_pins[12 + 10], usb_c_device_sideb_pins[3]}, // B10 RXn1, A3 TXn1 {usb_c_host_sidea_pins[12 + 2], usb_c_device_sideb_pins[11]}, // B2 TXp2, Q11 RXp2 {usb_c_host_sidea_pins[12 + 3], usb_c_device_sideb_pins[10]}, // B3 TXn2, A10 RXn2 {usb_c_host_sidea_pins[11], usb_c_device_sideb_pins[12 + 2]}, // A11 RXp2, B2 TXp2 {usb_c_host_sidea_pins[10], usb_c_device_sideb_pins[12 + 3]}, // A10 RXn2, B3 TXn2 {usb_c_host_sidea_pins[8], usb_c_device_sideb_pins[12 + 8]}, // A8 SBU1, B8 SBU2 {usb_c_host_sidea_pins[12 + 8], usb_c_device_sideb_pins[8]}, // B8 SBU2, A8 SBU1 }; static const uint8_t usb__c_host_sideb__c_device_sidea__ff_pins[][2] = { // C host side internal connections {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[1]}, // shield, A1 GND {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12]}, // shield, A12 GND {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 12]}, // shield, B12 GND {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 1]}, // shield, B1 GND {usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12]}, // A1 GND, A12 GND {usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_host_sideb_pins[12 + 1], usb_c_host_sideb_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_host_sideb_pins[12 + 9], usb_c_host_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS // C device side internal connections {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND {usb_c_device_sidea_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND {usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12]}, // A1 GND, A12 GND {usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_device_sidea_pins[1], usb_c_device_sidea_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_device_sidea_pins[12], usb_c_device_sidea_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_device_sidea_pins[12 + 1], usb_c_device_sidea_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_device_sidea_pins[4], usb_c_device_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_device_sidea_pins[9], usb_c_device_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_device_sidea_pins[12 + 9], usb_c_device_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS // C-C connections, GND and VBUS {usb_c_host_sideb_pins[0], usb_c_device_sidea_pins[0]}, // shield, shield {usb_c_host_sideb_pins[0], usb_c_device_sidea_pins[1]}, // shield, A1 GND {usb_c_host_sideb_pins[0], usb_c_device_sidea_pins[12]}, // shield, A12 GND {usb_c_host_sideb_pins[0], usb_c_device_sidea_pins[12 + 12]}, // shield, B12 GND {usb_c_host_sideb_pins[0], usb_c_device_sidea_pins[12 + 1]}, // shield, B1 GND {usb_c_host_sideb_pins[1], usb_c_device_sidea_pins[0]}, // A1 GND, shield {usb_c_host_sideb_pins[1], usb_c_device_sidea_pins[1]}, // A1 GND, A1 GND {usb_c_host_sideb_pins[1], usb_c_device_sidea_pins[12]}, // A1 GND, A12 GND {usb_c_host_sideb_pins[1], usb_c_device_sidea_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_host_sideb_pins[1], usb_c_device_sidea_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_host_sideb_pins[12], usb_c_device_sidea_pins[0]}, // A12 GND, shield {usb_c_host_sideb_pins[12], usb_c_device_sidea_pins[1]}, // A12 GND, A1 GND {usb_c_host_sideb_pins[12], usb_c_device_sidea_pins[12]}, // A12 GND, A12 GND {usb_c_host_sideb_pins[12], usb_c_device_sidea_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_host_sideb_pins[12], usb_c_device_sidea_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_host_sideb_pins[12 + 1], usb_c_device_sidea_pins[0]}, // B1 GND, shield {usb_c_host_sideb_pins[12 + 1], usb_c_device_sidea_pins[1]}, // B1 GND, A1 GND {usb_c_host_sideb_pins[12 + 1], usb_c_device_sidea_pins[12]}, // B1 GND, A12 GND {usb_c_host_sideb_pins[12 + 1], usb_c_device_sidea_pins[12 + 1]}, // B1 GND, B1 GND {usb_c_host_sideb_pins[12 + 1], usb_c_device_sidea_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_host_sideb_pins[12 + 12], usb_c_device_sidea_pins[0]}, // B12 GND, shield {usb_c_host_sideb_pins[12 + 12], usb_c_device_sidea_pins[1]}, // B12 GND, A1 GND {usb_c_host_sideb_pins[12 + 12], usb_c_device_sidea_pins[12]}, // B12 GND, A12 GND {usb_c_host_sideb_pins[12 + 12], usb_c_device_sidea_pins[12 + 1]}, // B12 GND, B1 GND {usb_c_host_sideb_pins[12 + 12], usb_c_device_sidea_pins[12 + 12]}, // B12 GND, B12 GND {usb_c_host_sideb_pins[4], usb_c_device_sidea_pins[4]}, // A4 VBUS, A4 VBUS {usb_c_host_sideb_pins[4], usb_c_device_sidea_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_host_sideb_pins[4], usb_c_device_sidea_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_host_sideb_pins[4], usb_c_device_sidea_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_host_sideb_pins[9], usb_c_device_sidea_pins[4]}, // A9 VBUS, A4 VBUS {usb_c_host_sideb_pins[9], usb_c_device_sidea_pins[9]}, // A9 VBUS, A9 VBUS {usb_c_host_sideb_pins[9], usb_c_device_sidea_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_host_sideb_pins[9], usb_c_device_sidea_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_host_sideb_pins[12 + 4], usb_c_device_sidea_pins[4]}, // B4 VBUS, A4 VBUS {usb_c_host_sideb_pins[12 + 4], usb_c_device_sidea_pins[9]}, // B4 VBUS, A9 VBUS {usb_c_host_sideb_pins[12 + 4], usb_c_device_sidea_pins[12 + 4]}, // B4 VBUS, B4 VBUS {usb_c_host_sideb_pins[12 + 4], usb_c_device_sidea_pins[12 + 9]}, // B4 VBUS, B9 VBUS {usb_c_host_sideb_pins[12 + 9], usb_c_device_sidea_pins[4]}, // B9 VBUS, A4 VBUS {usb_c_host_sideb_pins[12 + 9], usb_c_device_sidea_pins[9]}, // B9 VBUS, A9 VBUS {usb_c_host_sideb_pins[12 + 9], usb_c_device_sidea_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_host_sideb_pins[12 + 9], usb_c_device_sidea_pins[12 + 9]}, // B9 VBUS, B9 VBUS // C-C data connections {usb_c_host_sideb_pins[5], usb_c_device_sidea_pins[5]}, // A5 CC1, A5 CC1 (CC) //{usb_c_host_sideb_pins[12 + 5], usb_c_device_sidea_pins[12 + 5]}, // B5 CC2, B5 CC2 (VCONN) {usb_c_host_sideb_pins[6], usb_c_device_sidea_pins[6]}, // A6 Dp1, A6 Dp1 {usb_c_host_sideb_pins[7], usb_c_device_sidea_pins[7]}, // A7 Dn1, A7 Dn1 {usb_c_host_sideb_pins[2], usb_c_device_sidea_pins[12 + 11]}, // A2 TXp1, B11 RXp1 {usb_c_host_sideb_pins[3], usb_c_device_sidea_pins[12 + 10]}, // A3 TXn1, B10 RXn1 {usb_c_host_sideb_pins[12 + 11], usb_c_device_sidea_pins[2]}, // B11 RXp1, A2 TXp1 {usb_c_host_sideb_pins[12 + 10], usb_c_device_sidea_pins[3]}, // B10 RXn1, A3 TXn1 {usb_c_host_sideb_pins[12 + 2], usb_c_device_sidea_pins[11]}, // B2 TXp2, Q11 RXp2 {usb_c_host_sideb_pins[12 + 3], usb_c_device_sidea_pins[10]}, // B3 TXn2, A10 RXn2 {usb_c_host_sideb_pins[11], usb_c_device_sidea_pins[12 + 2]}, // A11 RXp2, B2 TXp2 {usb_c_host_sideb_pins[10], usb_c_device_sidea_pins[12 + 3]}, // A10 RXn2, B3 TXn2 {usb_c_host_sideb_pins[8], usb_c_device_sidea_pins[12 + 8]}, // A8 SBU1, B8 SBU2 {usb_c_host_sideb_pins[12 + 8], usb_c_device_sidea_pins[8]}, // B8 SBU2, A8 SBU1 }; static const uint8_t usb__c_host_sideb__c_device_sideb__ff_pins[][2] = { // C host side internal connections {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[1]}, // shield, A1 GND {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12]}, // shield, A12 GND {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 12]}, // shield, B12 GND {usb_c_host_sideb_pins[0], usb_c_host_sideb_pins[12 + 1]}, // shield, B1 GND {usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12]}, // A1 GND, A12 GND {usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_host_sideb_pins[1], usb_c_host_sideb_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_host_sideb_pins[12], usb_c_host_sideb_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_host_sideb_pins[12 + 1], usb_c_host_sideb_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_host_sideb_pins[4], usb_c_host_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_host_sideb_pins[9], usb_c_host_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_host_sideb_pins[12 + 9], usb_c_host_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS // C device side internal connections {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND {usb_c_device_sideb_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND {usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12]}, // A1 GND, A12 GND {usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_device_sideb_pins[1], usb_c_device_sideb_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_device_sideb_pins[12], usb_c_device_sideb_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_device_sideb_pins[12 + 1], usb_c_device_sideb_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_device_sideb_pins[4], usb_c_device_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_device_sideb_pins[9], usb_c_device_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_device_sideb_pins[12 + 9], usb_c_device_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS // C-C connections, GND and VBUS {usb_c_host_sideb_pins[0], usb_c_device_sideb_pins[0]}, // shield, shield {usb_c_host_sideb_pins[0], usb_c_device_sideb_pins[1]}, // shield, A1 GND {usb_c_host_sideb_pins[0], usb_c_device_sideb_pins[12]}, // shield, A12 GND {usb_c_host_sideb_pins[0], usb_c_device_sideb_pins[12 + 12]}, // shield, B12 GND {usb_c_host_sideb_pins[0], usb_c_device_sideb_pins[12 + 1]}, // shield, B1 GND {usb_c_host_sideb_pins[1], usb_c_device_sideb_pins[0]}, // A1 GND, shield {usb_c_host_sideb_pins[1], usb_c_device_sideb_pins[1]}, // A1 GND, A1 GND {usb_c_host_sideb_pins[1], usb_c_device_sideb_pins[12]}, // A1 GND, A12 GND {usb_c_host_sideb_pins[1], usb_c_device_sideb_pins[12 + 12]}, // A1 GND, B12 GND {usb_c_host_sideb_pins[1], usb_c_device_sideb_pins[12 + 1]}, // A1 GND, B1 GND {usb_c_host_sideb_pins[12], usb_c_device_sideb_pins[0]}, // A12 GND, shield {usb_c_host_sideb_pins[12], usb_c_device_sideb_pins[1]}, // A12 GND, A1 GND {usb_c_host_sideb_pins[12], usb_c_device_sideb_pins[12]}, // A12 GND, A12 GND {usb_c_host_sideb_pins[12], usb_c_device_sideb_pins[12 + 12]}, // A12 GND, B12 GND {usb_c_host_sideb_pins[12], usb_c_device_sideb_pins[12 + 1]}, // A12 GND, B1 GND {usb_c_host_sideb_pins[12 + 1], usb_c_device_sideb_pins[0]}, // B1 GND, shield {usb_c_host_sideb_pins[12 + 1], usb_c_device_sideb_pins[1]}, // B1 GND, A1 GND {usb_c_host_sideb_pins[12 + 1], usb_c_device_sideb_pins[12]}, // B1 GND, A12 GND {usb_c_host_sideb_pins[12 + 1], usb_c_device_sideb_pins[12 + 1]}, // B1 GND, B1 GND {usb_c_host_sideb_pins[12 + 1], usb_c_device_sideb_pins[12 + 12]}, // B1 GND, B12 GND {usb_c_host_sideb_pins[12 + 12], usb_c_device_sideb_pins[0]}, // B12 GND, shield {usb_c_host_sideb_pins[12 + 12], usb_c_device_sideb_pins[1]}, // B12 GND, A1 GND {usb_c_host_sideb_pins[12 + 12], usb_c_device_sideb_pins[12]}, // B12 GND, A12 GND {usb_c_host_sideb_pins[12 + 12], usb_c_device_sideb_pins[12 + 1]}, // B12 GND, B1 GND {usb_c_host_sideb_pins[12 + 12], usb_c_device_sideb_pins[12 + 12]}, // B12 GND, B12 GND {usb_c_host_sideb_pins[4], usb_c_device_sideb_pins[4]}, // A4 VBUS, A4 VBUS {usb_c_host_sideb_pins[4], usb_c_device_sideb_pins[9]}, // A4 VBUS, A9 VBUS {usb_c_host_sideb_pins[4], usb_c_device_sideb_pins[12 + 9]}, // A4 VBUS, B9 VBUS {usb_c_host_sideb_pins[4], usb_c_device_sideb_pins[12 + 4]}, // A4 VBUS, B4 VBUS {usb_c_host_sideb_pins[9], usb_c_device_sideb_pins[4]}, // A9 VBUS, A4 VBUS {usb_c_host_sideb_pins[9], usb_c_device_sideb_pins[9]}, // A9 VBUS, A9 VBUS {usb_c_host_sideb_pins[9], usb_c_device_sideb_pins[12 + 9]}, // A9 VBUS, B9 VBUS {usb_c_host_sideb_pins[9], usb_c_device_sideb_pins[12 + 4]}, // A9 VBUS, B4 VBUS {usb_c_host_sideb_pins[12 + 4], usb_c_device_sideb_pins[4]}, // B4 VBUS, A4 VBUS {usb_c_host_sideb_pins[12 + 4], usb_c_device_sideb_pins[9]}, // B4 VBUS, A9 VBUS {usb_c_host_sideb_pins[12 + 4], usb_c_device_sideb_pins[12 + 4]}, // B4 VBUS, B4 VBUS {usb_c_host_sideb_pins[12 + 4], usb_c_device_sideb_pins[12 + 9]}, // B4 VBUS, B9 VBUS {usb_c_host_sideb_pins[12 + 9], usb_c_device_sideb_pins[4]}, // B9 VBUS, A4 VBUS {usb_c_host_sideb_pins[12 + 9], usb_c_device_sideb_pins[9]}, // B9 VBUS, A9 VBUS {usb_c_host_sideb_pins[12 + 9], usb_c_device_sideb_pins[12 + 4]}, // B9 VBUS, B4 VBUS {usb_c_host_sideb_pins[12 + 9], usb_c_device_sideb_pins[12 + 9]}, // B9 VBUS, B9 VBUS // C-C data connections {usb_c_host_sideb_pins[5], usb_c_device_sideb_pins[5]}, // A5 CC1, A5 CC1 (CC) //{usb_c_host_sideb_pins[12 + 5], usb_c_device_sideb_pins[12 + 5]}, // B5 CC2, B5 CC2 (VCONN) {usb_c_host_sideb_pins[6], usb_c_device_sideb_pins[6]}, // A6 Dp1, A6 Dp1 {usb_c_host_sideb_pins[7], usb_c_device_sideb_pins[7]}, // A7 Dn1, A7 Dn1 {usb_c_host_sideb_pins[2], usb_c_device_sideb_pins[12 + 11]}, // A2 TXp1, B11 RXp1 {usb_c_host_sideb_pins[3], usb_c_device_sideb_pins[12 + 10]}, // A3 TXn1, B10 RXn1 {usb_c_host_sideb_pins[12 + 11], usb_c_device_sideb_pins[2]}, // B11 RXp1, A2 TXp1 {usb_c_host_sideb_pins[12 + 10], usb_c_device_sideb_pins[3]}, // B10 RXn1, A3 TXn1 {usb_c_host_sideb_pins[12 + 2], usb_c_device_sideb_pins[11]}, // B2 TXp2, Q11 RXp2 {usb_c_host_sideb_pins[12 + 3], usb_c_device_sideb_pins[10]}, // B3 TXn2, A10 RXn2 {usb_c_host_sideb_pins[11], usb_c_device_sideb_pins[12 + 2]}, // A11 RXp2, B2 TXp2 {usb_c_host_sideb_pins[10], usb_c_device_sideb_pins[12 + 3]}, // A10 RXn2, B3 TXn2 {usb_c_host_sideb_pins[8], usb_c_device_sideb_pins[12 + 8]}, // A8 SBU1, B8 SBU2 {usb_c_host_sideb_pins[12 + 8], usb_c_device_sideb_pins[8]}, // B8 SBU2, A8 SBU1 }; const struct usb_cable_t usb_cables[] = { // A-A { .name = "A-A power only", .connectors_nb = LENGTH(usb_a_a_connectors), .connectors = usb_a_a_connectors, .pin_pairs_nb = LENGTH(usb_aa0_pins), .pin_pairs = usb_aa0_pins, }, { .name = "A-A USB 2.0", .connectors_nb = LENGTH(usb_a_a_connectors), .connectors = usb_a_a_connectors, .pin_pairs_nb = LENGTH(usb_aa2_pins), .pin_pairs = usb_aa2_pins, }, { .name = "A-A USB 3.x", .connectors_nb = LENGTH(usb_a_a_connectors), .connectors = usb_a_a_connectors, .pin_pairs_nb = LENGTH(usb_aa3_pins), .pin_pairs = usb_aa3_pins, }, // A (host) - B { .name = "A-B power only", .connectors_nb = LENGTH(usb_a_host_b_connectors), .connectors = usb_a_host_b_connectors, .pin_pairs_nb = LENGTH(usb__a_host__b__ab0_pins), .pin_pairs = usb__a_host__b__ab0_pins, }, { .name = "A-B USB 2.0", .connectors_nb = LENGTH(usb_a_host_b_connectors), .connectors = usb_a_host_b_connectors, .pin_pairs_nb = LENGTH(usb__a_host__b__ab2_pins), .pin_pairs = usb__a_host__b__ab2_pins, }, { .name = "A-B USB 3.x", .connectors_nb = LENGTH(usb_a_host_b_connectors), .connectors = usb_a_host_b_connectors, .pin_pairs_nb = LENGTH(usb__a_host__b__ab3_pins), .pin_pairs = usb__a_host__b__ab3_pins, }, // A (device) - B { .name = "A-B power only", .connectors_nb = LENGTH(usb_a_host_b_connectors), .connectors = usb_a_device_b_connectors, .pin_pairs_nb = LENGTH(usb__a_device__b__ab0_pins), .pin_pairs = usb__a_device__b__ab0_pins, }, { .name = "A-B USB 2.0", .connectors_nb = LENGTH(usb_a_host_b_connectors), .connectors = usb_a_device_b_connectors, .pin_pairs_nb = LENGTH(usb__a_device__b__ab2_pins), .pin_pairs = usb__a_device__b__ab2_pins, }, { .name = "A-B USB 3.x", .connectors_nb = LENGTH(usb_a_host_b_connectors), .connectors = usb_a_device_b_connectors, .pin_pairs_nb = LENGTH(usb__a_device__b__ab3_pins), .pin_pairs = usb__a_device__b__ab3_pins, }, // A + A - B { .name = "A+A-B USB 2.0", .connectors_nb = LENGTH(usb_a_a_b_connectors), .connectors = usb_a_a_b_connectors, .pin_pairs_nb = LENGTH(usb_a_host_a_device_b_aab2_pins), .pin_pairs = usb_a_host_a_device_b_aab2_pins, }, { .name = "A+A-B USB 2.0", .connectors_nb = LENGTH(usb_a_a_b_connectors), .connectors = usb_a_a_b_connectors, .pin_pairs_nb = LENGTH(usb_a_device_a_host_b_aab2_pins), .pin_pairs = usb_a_device_a_host_b_aab2_pins, }, // A (host) - mini-B { .name = "A-miniB power", .connectors_nb = LENGTH(usb_a_host_minib_connectors), .connectors = usb_a_host_minib_connectors, .pin_pairs_nb = LENGTH(usb__a_host__minib__amb0_pins), .pin_pairs = usb__a_host__minib__amb0_pins, }, { .name = "A-miniB USB 2.0", .connectors_nb = LENGTH(usb_a_host_minib_connectors), .connectors = usb_a_host_minib_connectors, .pin_pairs_nb = LENGTH(usb__a_host__minib__amb2_pins), .pin_pairs = usb__a_host__minib__amb2_pins, }, // A (device) - mini-B { .name = "A-miniB power", .connectors_nb = LENGTH(usb_a_device_minib_connectors), .connectors = usb_a_device_minib_connectors, .pin_pairs_nb = LENGTH(usb__a_device__minib__amb0_pins), .pin_pairs = usb__a_device__minib__amb0_pins, }, { .name = "A-miniB USB 2.0", .connectors_nb = LENGTH(usb_a_device_minib_connectors), .connectors = usb_a_device_minib_connectors, .pin_pairs_nb = LENGTH(usb__a_device__minib__amb2_pins), .pin_pairs = usb__a_device__minib__amb2_pins, }, // A + A - mini-B { .name = "A+A-miniB 2.0", .connectors_nb = LENGTH(usb_a_a_minib_connectors), .connectors = usb_a_a_minib_connectors, .pin_pairs_nb = LENGTH(usb_a_host_a_device_minib_aamb2_pins), .pin_pairs = usb_a_host_a_device_minib_aamb2_pins, }, { .name = "A+A-miniB 2.0", .connectors_nb = LENGTH(usb_a_a_minib_connectors), .connectors = usb_a_a_minib_connectors, .pin_pairs_nb = LENGTH(usb_a_device_a_host_minib_aamb2_pins), .pin_pairs = usb_a_device_a_host_minib_aamb2_pins, }, // A (host) - micro-B { .name = "A-microB power", .connectors_nb = LENGTH(usb_a_host_microb_connectors), .connectors = usb_a_host_microb_connectors, .pin_pairs_nb = LENGTH(usb__a_host__microb__aub0_pins), .pin_pairs = usb__a_host__microb__aub0_pins, }, { .name = "A-microB USB 2.0", .connectors_nb = LENGTH(usb_a_host_microb_connectors), .connectors = usb_a_host_microb_connectors, .pin_pairs_nb = LENGTH(usb__a_host__microb__aub2_pins), .pin_pairs = usb__a_host__microb__aub2_pins, }, { .name = "A-microB USB 3.x", .connectors_nb = LENGTH(usb_a_host_microb_connectors), .connectors = usb_a_host_microb_connectors, .pin_pairs_nb = LENGTH(usb__a_host__microb__aub3_pins), .pin_pairs = usb__a_host__microb__aub3_pins, }, // A (device) - micro-B { .name = "A-microB power", .connectors_nb = LENGTH(usb_a_device_microb_connectors), .connectors = usb_a_device_microb_connectors, .pin_pairs_nb = LENGTH(usb__a_device__microb__aub0_pins), .pin_pairs = usb__a_device__microb__aub0_pins, }, { .name = "A-microB USB 2.0", .connectors_nb = LENGTH(usb_a_device_microb_connectors), .connectors = usb_a_device_microb_connectors, .pin_pairs_nb = LENGTH(usb__a_device__microb__aub2_pins), .pin_pairs = usb__a_device__microb__aub2_pins, }, { .name = "A-microB USB 3.x", .connectors_nb = LENGTH(usb_a_device_microb_connectors), .connectors = usb_a_device_microb_connectors, .pin_pairs_nb = LENGTH(usb__a_device__microb__aub3_pins), .pin_pairs = usb__a_device__microb__aub3_pins, }, // C { .name = "C shunt", .connectors_nb = LENGTH(usb_c_host_connectors), .connectors = usb_c_host_connectors, .pin_pairs_nb = LENGTH(usb__c_host__c_host__cshunt_pins), .pin_pairs = usb__c_host__c_host__cshunt_pins, }, { .name = "C shunt", .connectors_nb = LENGTH(usb_c_device_connectors), .connectors = usb_c_device_connectors, .pin_pairs_nb = LENGTH(usb__c_device__c_device__cshunt_pins), .pin_pairs = usb__c_device__c_device__cshunt_pins, }, // A - C power only { .name = "A-C power only", .connectors_nb = LENGTH(usb_a_host_c_host_connectors), .connectors = usb_a_host_c_host_connectors, .pin_pairs_nb = LENGTH(usb__a_host__c_host_sidea__ac0_pins), .pin_pairs = usb__a_host__c_host_sidea__ac0_pins, }, { .name = "A-C power only", .connectors_nb = LENGTH(usb_a_host_c_host_connectors), .connectors = usb_a_host_c_host_connectors, .pin_pairs_nb = LENGTH(usb__a_host__c_host_sideb__ac0_pins), .pin_pairs = usb__a_host__c_host_sideb__ac0_pins, }, { .name = "A-C power only", .connectors_nb = LENGTH(usb_a_host_c_device_connectors), .connectors = usb_a_host_c_device_connectors, .pin_pairs_nb = LENGTH(usb__a_host__c_device_sidea__ac0_pins), .pin_pairs = usb__a_host__c_device_sidea__ac0_pins, }, { .name = "A-C power only", .connectors_nb = LENGTH(usb_a_host_c_device_connectors), .connectors = usb_a_host_c_device_connectors, .pin_pairs_nb = LENGTH(usb__a_host__c_device_sideb__ac0_pins), .pin_pairs = usb__a_host__c_device_sideb__ac0_pins, }, { .name = "A-C power only", .connectors_nb = LENGTH(usb_a_device_c_host_connectors), .connectors = usb_a_device_c_host_connectors, .pin_pairs_nb = LENGTH(usb__a_device__c_host_sidea__ac0_pins), .pin_pairs = usb__a_device__c_host_sidea__ac0_pins, }, { .name = "A-C power only", .connectors_nb = LENGTH(usb_a_device_c_host_connectors), .connectors = usb_a_device_c_host_connectors, .pin_pairs_nb = LENGTH(usb__a_device__c_host_sideb__ac0_pins), .pin_pairs = usb__a_device__c_host_sideb__ac0_pins, }, { .name = "A-C power only", .connectors_nb = LENGTH(usb_a_device_c_device_connectors), .connectors = usb_a_device_c_device_connectors, .pin_pairs_nb = LENGTH(usb__a_device__c_device_sidea__ac0_pins), .pin_pairs = usb__a_device__c_device_sidea__ac0_pins, }, { .name = "A-C power only", .connectors_nb = LENGTH(usb_a_device_c_device_connectors), .connectors = usb_a_device_c_device_connectors, .pin_pairs_nb = LENGTH(usb__a_device__c_device_sideb__ac0_pins), .pin_pairs = usb__a_device__c_device_sideb__ac0_pins, }, // A - C USB 2.0 { .name = "A-C USB 2.0", .connectors_nb = LENGTH(usb_a_host_c_host_connectors), .connectors = usb_a_host_c_host_connectors, .pin_pairs_nb = LENGTH(usb__a_host__c_host_sidea__ac2_pins), .pin_pairs = usb__a_host__c_host_sidea__ac2_pins, }, { .name = "A-C USB 2.0", .connectors_nb = LENGTH(usb_a_host_c_host_connectors), .connectors = usb_a_host_c_host_connectors, .pin_pairs_nb = LENGTH(usb__a_host__c_host_sideb__ac2_pins), .pin_pairs = usb__a_host__c_host_sideb__ac2_pins, }, { .name = "A-C USB 2.0", .connectors_nb = LENGTH(usb_a_host_c_device_connectors), .connectors = usb_a_host_c_device_connectors, .pin_pairs_nb = LENGTH(usb__a_host__c_device_sidea__ac2_pins), .pin_pairs = usb__a_host__c_device_sidea__ac2_pins, }, { .name = "A-C USB 2.0", .connectors_nb = LENGTH(usb_a_host_c_device_connectors), .connectors = usb_a_host_c_device_connectors, .pin_pairs_nb = LENGTH(usb__a_host__c_device_sideb__ac2_pins), .pin_pairs = usb__a_host__c_device_sideb__ac2_pins, }, { .name = "A-C USB 2.0", .connectors_nb = LENGTH(usb_a_device_c_host_connectors), .connectors = usb_a_device_c_host_connectors, .pin_pairs_nb = LENGTH(usb__a_device__c_host_sidea__ac2_pins), .pin_pairs = usb__a_device__c_host_sidea__ac2_pins, }, { .name = "A-C USB 2.0", .connectors_nb = LENGTH(usb_a_device_c_host_connectors), .connectors = usb_a_device_c_host_connectors, .pin_pairs_nb = LENGTH(usb__a_device__c_host_sideb__ac2_pins), .pin_pairs = usb__a_device__c_host_sideb__ac2_pins, }, { .name = "A-C USB 2.0", .connectors_nb = LENGTH(usb_a_device_c_device_connectors), .connectors = usb_a_device_c_device_connectors, .pin_pairs_nb = LENGTH(usb__a_device__c_device_sidea__ac2_pins), .pin_pairs = usb__a_device__c_device_sidea__ac2_pins, }, { .name = "A-C USB 2.0", .connectors_nb = LENGTH(usb_a_device_c_device_connectors), .connectors = usb_a_device_c_device_connectors, .pin_pairs_nb = LENGTH(usb__a_device__c_device_sideb__ac2_pins), .pin_pairs = usb__a_device__c_device_sideb__ac2_pins, }, // A-C USB 3.1 Gen 2 { .name = "A-C 3.1 Gen 2", .connectors_nb = LENGTH(usb_a_host_c_host_connectors), .connectors = usb_a_host_c_host_connectors, .pin_pairs_nb = LENGTH(usb__a_host__c_host_sidea__ac3_pins), .pin_pairs = usb__a_host__c_host_sidea__ac3_pins, }, { .name = "A-C 3.1 Gen 2", .connectors_nb = LENGTH(usb_a_host_c_host_connectors), .connectors = usb_a_host_c_host_connectors, .pin_pairs_nb = LENGTH(usb__a_host__c_host_sideb__ac3_pins), .pin_pairs = usb__a_host__c_host_sideb__ac3_pins, }, { .name = "A-C 3.1 Gen 2", .connectors_nb = LENGTH(usb_a_host_c_device_connectors), .connectors = usb_a_host_c_device_connectors, .pin_pairs_nb = LENGTH(usb__a_host__c_device_sidea__ac3_pins), .pin_pairs = usb__a_host__c_device_sidea__ac3_pins, }, { .name = "A-C 3.1 Gen 2", .connectors_nb = LENGTH(usb_a_host_c_device_connectors), .connectors = usb_a_host_c_device_connectors, .pin_pairs_nb = LENGTH(usb__a_host__c_device_sideb__ac3_pins), .pin_pairs = usb__a_host__c_device_sideb__ac3_pins, }, { .name = "A-C 3.1 Gen 2", .connectors_nb = LENGTH(usb_a_device_c_host_connectors), .connectors = usb_a_device_c_host_connectors, .pin_pairs_nb = LENGTH(usb__a_device__c_host_sidea__ac3_pins), .pin_pairs = usb__a_device__c_host_sidea__ac3_pins, }, { .name = "A-C 3.1 Gen 2", .connectors_nb = LENGTH(usb_a_device_c_host_connectors), .connectors = usb_a_device_c_host_connectors, .pin_pairs_nb = LENGTH(usb__a_device__c_host_sideb__ac3_pins), .pin_pairs = usb__a_device__c_host_sideb__ac3_pins, }, { .name = "A-C 3.1 Gen 2", .connectors_nb = LENGTH(usb_a_device_c_device_connectors), .connectors = usb_a_device_c_device_connectors, .pin_pairs_nb = LENGTH(usb__a_device__c_device_sidea__ac3_pins), .pin_pairs = usb__a_device__c_device_sidea__ac3_pins, }, { .name = "A-C 3.1 Gen 2", .connectors_nb = LENGTH(usb_a_device_c_device_connectors), .connectors = usb_a_device_c_device_connectors, .pin_pairs_nb = LENGTH(usb__a_device__c_device_sidea__ac3_pins), .pin_pairs = usb__a_device__c_device_sideb__ac3_pins, }, // C - B USB 2.0 { .name = "C-B USB 2.0", .connectors_nb = LENGTH(usb_c_host_b_device_connectors), .connectors = usb_c_host_b_device_connectors, .pin_pairs_nb = LENGTH(usb__c_host_sidea__b_device__cb2_pins), .pin_pairs = usb__c_host_sidea__b_device__cb2_pins, }, { .name = "C-B USB 2.0", .connectors_nb = LENGTH(usb_c_host_b_device_connectors), .connectors = usb_c_host_b_device_connectors, .pin_pairs_nb = LENGTH(usb__c_host_sideb__b_device__cb2_pins), .pin_pairs = usb__c_host_sideb__b_device__cb2_pins, }, { .name = "C-B USB 2.0", .connectors_nb = LENGTH(usb_c_device_b_device_connectors), .connectors = usb_c_device_b_device_connectors, .pin_pairs_nb = LENGTH(usb__c_device_sidea__b_device__cb2_pins), .pin_pairs = usb__c_device_sidea__b_device__cb2_pins, }, { .name = "C-B USB 2.0", .connectors_nb = LENGTH(usb_c_device_b_device_connectors), .connectors = usb_c_device_b_device_connectors, .pin_pairs_nb = LENGTH(usb__c_device_sideb__b_device__cb2_pins), .pin_pairs = usb__c_device_sideb__b_device__cb2_pins, }, // C - B USB 3.1 Gen 2 { .name = "C-B USB 3.1 Gen 2", .connectors_nb = LENGTH(usb_c_host_b_device_connectors), .connectors = usb_c_host_b_device_connectors, .pin_pairs_nb = LENGTH(usb__c_host_sidea__b_device__cb3_pins), .pin_pairs = usb__c_host_sidea__b_device__cb3_pins, }, { .name = "C-B USB 3.1 Gen 2", .connectors_nb = LENGTH(usb_c_host_b_device_connectors), .connectors = usb_c_host_b_device_connectors, .pin_pairs_nb = LENGTH(usb__c_host_sideb__b_device__cb3_pins), .pin_pairs = usb__c_host_sideb__b_device__cb3_pins, }, { .name = "C-B USB 3.1 Gen 2", .connectors_nb = LENGTH(usb_c_device_b_device_connectors), .connectors = usb_c_device_b_device_connectors, .pin_pairs_nb = LENGTH(usb__c_device_sidea__b_device__cb3_pins), .pin_pairs = usb__c_device_sidea__b_device__cb3_pins, }, { .name = "C-B USB 3.1 Gen 2", .connectors_nb = LENGTH(usb_c_device_b_device_connectors), .connectors = usb_c_device_b_device_connectors, .pin_pairs_nb = LENGTH(usb__c_device_sideb__b_device__cb3_pins), .pin_pairs = usb__c_device_sideb__b_device__cb3_pins, }, // C - mini-B USB 2.0 { .name = "C-miniB USB 2.0", .connectors_nb = LENGTH(usb_c_host_minib_device_connectors), .connectors = usb_c_host_minib_device_connectors, .pin_pairs_nb = LENGTH(usb__c_host_sidea__minib_device__cminib2_pins), .pin_pairs = usb__c_host_sidea__minib_device__cminib2_pins, }, { .name = "C-miniB USB 2.0", .connectors_nb = LENGTH(usb_c_host_minib_device_connectors), .connectors = usb_c_host_minib_device_connectors, .pin_pairs_nb = LENGTH(usb__c_host_sideb__minib_device__cminib2_pins), .pin_pairs = usb__c_host_sideb__minib_device__cminib2_pins, }, { .name = "C-miniB USB 2.0", .connectors_nb = LENGTH(usb_c_device_minib_device_connectors), .connectors = usb_c_device_minib_device_connectors, .pin_pairs_nb = LENGTH(usb__c_device_sidea__minib_device__cminib2_pins), .pin_pairs = usb__c_device_sidea__minib_device__cminib2_pins, }, { .name = "C-miniB USB 2.0", .connectors_nb = LENGTH(usb_c_device_minib_device_connectors), .connectors = usb_c_device_minib_device_connectors, .pin_pairs_nb = LENGTH(usb__c_device_sideb__minib_device__cminib2_pins), .pin_pairs = usb__c_device_sideb__minib_device__cminib2_pins, }, // C - micro-B USB 2.0 { .name = "C-microB USB 2.0", .connectors_nb = LENGTH(usb_c_host_microb_device_connectors), .connectors = usb_c_host_microb_device_connectors, .pin_pairs_nb = LENGTH(usb__c_host_sidea__microb_device__cmicrob2_pins), .pin_pairs = usb__c_host_sidea__microb_device__cmicrob2_pins, }, { .name = "C-microB USB 2.0", .connectors_nb = LENGTH(usb_c_host_microb_device_connectors), .connectors = usb_c_host_microb_device_connectors, .pin_pairs_nb = LENGTH(usb__c_host_sideb__microb_device__cmicrob2_pins), .pin_pairs = usb__c_host_sideb__microb_device__cmicrob2_pins, }, { .name = "C-microB USB 2.0", .connectors_nb = LENGTH(usb_c_device_microb_device_connectors), .connectors = usb_c_device_microb_device_connectors, .pin_pairs_nb = LENGTH(usb__c_device_sidea__microb_device__cmicrob2_pins), .pin_pairs = usb__c_device_sidea__microb_device__cmicrob2_pins, }, { .name = "C-microB USB 2.0", .connectors_nb = LENGTH(usb_c_device_microb_device_connectors), .connectors = usb_c_device_microb_device_connectors, .pin_pairs_nb = LENGTH(usb__c_device_sideb__microb_device__cmicrob2_pins), .pin_pairs = usb__c_device_sideb__microb_device__cmicrob2_pins, }, // C - micro-B USB 3.1 Gen 2 { .name = "C-microB USB 3.1 Gen 2", .connectors_nb = LENGTH(usb_c_host_microb_device_connectors), .connectors = usb_c_host_microb_device_connectors, .pin_pairs_nb = LENGTH(usb__c_host_sidea__microb_device__cmicrob3_pins), .pin_pairs = usb__c_host_sidea__microb_device__cmicrob3_pins, }, { .name = "C-microB USB 3.1 Gen 2", .connectors_nb = LENGTH(usb_c_host_microb_device_connectors), .connectors = usb_c_host_microb_device_connectors, .pin_pairs_nb = LENGTH(usb__c_host_sideb__microb_device__cmicrob3_pins), .pin_pairs = usb__c_host_sideb__microb_device__cmicrob3_pins, }, { .name = "C-microB USB 3.1 Gen 2", .connectors_nb = LENGTH(usb_c_device_microb_device_connectors), .connectors = usb_c_device_microb_device_connectors, .pin_pairs_nb = LENGTH(usb__c_device_sidea__microb_device__cmicrob3_pins), .pin_pairs = usb__c_device_sidea__microb_device__cmicrob3_pins, }, { .name = "C-microB USB 3.1 Gen 2", .connectors_nb = LENGTH(usb_c_device_microb_device_connectors), .connectors = usb_c_device_microb_device_connectors, .pin_pairs_nb = LENGTH(usb__c_device_sideb__microb_device__cmicrob3_pins), .pin_pairs = usb__c_device_sideb__microb_device__cmicrob3_pins, }, // C-C { .name = "C-C USB 2.0", .connectors_nb = LENGTH(usb_c_c_connectors), .connectors = usb_c_c_connectors, .pin_pairs_nb = LENGTH(usb__c_host_sidea__c_device_sidea__cc2_pins), .pin_pairs = usb__c_host_sidea__c_device_sidea__cc2_pins, }, { .name = "C-C USB 2.0", .connectors_nb = LENGTH(usb_c_c_connectors), .connectors = usb_c_c_connectors, .pin_pairs_nb = LENGTH(usb__c_host_sidea__c_device_sideb__cc2_pins), .pin_pairs = usb__c_host_sidea__c_device_sideb__cc2_pins, }, { .name = "C-C USB 2.0", .connectors_nb = LENGTH(usb_c_c_connectors), .connectors = usb_c_c_connectors, .pin_pairs_nb = LENGTH(usb__c_host_sideb__c_device_sidea__cc2_pins), .pin_pairs = usb__c_host_sideb__c_device_sidea__cc2_pins, }, { .name = "C-C USB 2.0", .connectors_nb = LENGTH(usb_c_c_connectors), .connectors = usb_c_c_connectors, .pin_pairs_nb = LENGTH(usb__c_host_sideb__c_device_sideb__cc2_pins), .pin_pairs = usb__c_host_sideb__c_device_sideb__cc2_pins, }, // C-C { .name = "C-C Full-Featured", .connectors_nb = LENGTH(usb_c_c_connectors), .connectors = usb_c_c_connectors, .pin_pairs_nb = LENGTH(usb__c_host_sidea__c_device_sidea__ff_pins), .pin_pairs = usb__c_host_sidea__c_device_sidea__ff_pins, }, { .name = "C-C Full-Featured", .connectors_nb = LENGTH(usb_c_c_connectors), .connectors = usb_c_c_connectors, .pin_pairs_nb = LENGTH(usb__c_host_sidea__c_device_sideb__ff_pins), .pin_pairs = usb__c_host_sidea__c_device_sideb__ff_pins, }, { .name = "C-C Full-Featured", .connectors_nb = LENGTH(usb_c_c_connectors), .connectors = usb_c_c_connectors, .pin_pairs_nb = LENGTH(usb__c_host_sideb__c_device_sidea__ff_pins), .pin_pairs = usb__c_host_sideb__c_device_sidea__ff_pins, }, { .name = "C-C Full-Featured", .connectors_nb = LENGTH(usb_c_c_connectors), .connectors = usb_c_c_connectors, .pin_pairs_nb = LENGTH(usb__c_host_sideb__c_device_sideb__ff_pins), .pin_pairs = usb__c_host_sideb__c_device_sideb__ff_pins, }, }; void usb_cables_pins_float(void) { for (uint8_t pin = 0; pin < LENGTH(usb_pins); pin++) { // go through every pin const struct usb_pin_t* usb_pin = &usb_pins[pin]; // get pin gpio_set_mode(usb_pin->port, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, usb_pin->pin); // put pin to floating } } void usb_cables_connector_float(const struct usb_connector_t* connector) { // input argument check if (NULL == connector) { return; } for (uint8_t pin = 0; pin < connector->pins_nb; pin++) { // go through every pin const struct usb_pin_t* usb_pin = &usb_pins[connector->pins[pin]]; // get pin gpio_set_mode(usb_pin->port, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, usb_pin->pin); // put pin to floating } } void usb_cables_connectors_float(const struct usb_connector_t** connectors, uint8_t connectors_nb) { if (NULL == connectors || 0 == connectors_nb) { return; } for (uint8_t connector = 0; connector < connectors_nb; connector++) { // go through every connector usb_cables_connector_float(connectors[connector]); } } const struct usb_connector_t* usb_cables_get_connector(uint8_t pin) { if (pin >= LENGTH(usb_pins)) { // verify input parameter return NULL; } for (uint8_t connector_i = 0; connector_i < LENGTH(usb_connectors); connector_i++) { // go though every connector const struct usb_connector_t* connector = usb_connectors[connector_i]; // get connector if (NULL == connector) { // verify connector continue; } for (uint8_t pin_i = 0; pin_i < connector->pins_nb; pin_i++) { // check every pin of connector if (connector->pins[pin_i] == pin) { // the connector pin against provided pin return connector; } } } return NULL; } uint8_t usb_cables_test_pins(const struct usb_pin_t* pin1, const struct usb_pin_t* pin2) { cm3_assert(pin1 && pin2); if (pin1->port == pin2->port && pin1->pin == pin2->pin) { // it's the same pin return 0xff; // all connections will work } uint8_t connection = 0; // the connection result to return for (int8_t mode = 3; mode >= 0; mode--) { // test all connection types (from most to least accurate) for (uint8_t direction = 0; direction < 2; direction++) { // test both directions uint32_t from_port = (0 == direction ? pin2->port : pin1->port); uint16_t from_pin = (0 == direction ? pin2->pin : pin1->pin); uint32_t to_port = (0 == direction ? pin1->port : pin2->port); uint16_t to_pin = (0 == direction ? pin1->pin : pin2->pin); // don't drive a ground or shield pin high (shield might be connected to ground) if (((0 == direction && (USB_PIN_TYPE_GROUND == pin2->type || USB_PIN_TYPE_SHIELD == pin2->type)) || \ (1 == direction && (USB_PIN_TYPE_GROUND == pin1->type || USB_PIN_TYPE_SHIELD == pin1->type))) && \ (USB_PIN_CONNECTION_DRIVE_FLOAT == (1 << mode) || USB_PIN_CONNECTION_DRIVE_PULL == (1 << mode))) { continue; } // set pin mode switch ((1 << mode)) { case USB_PIN_CONNECTION_DRIVE_FLOAT: gpio_set_mode(from_port, GPIO_MODE_OUTPUT_2_MHZ, GPIO_CNF_OUTPUT_PUSHPULL, from_pin); gpio_set_mode(to_port, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, to_pin); break; case USB_PIN_CONNECTION_PULL_FLOAT: gpio_set_mode(from_port, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, from_pin); gpio_set_mode(to_port, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, to_pin); break; case USB_PIN_CONNECTION_DRIVE_PULL: gpio_set_mode(from_port, GPIO_MODE_OUTPUT_2_MHZ, GPIO_CNF_OUTPUT_PUSHPULL, from_pin); gpio_set_mode(to_port, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, to_pin); break; default: break; } // test pattern bool connected = true; for (uint8_t pattern = 0; pattern < 8 && connected; pattern++) { if (0 == pattern % 2) { gpio_clear(from_port, from_pin); gpio_set(to_port, to_pin); sleep_us(25); // wait for GPIO/line to settle if (gpio_get(to_port, to_pin)) { connected = false; } } else { gpio_set(from_port, from_pin); gpio_clear(to_port, to_pin); sleep_us(25); // wait for GPIO/line to settle if (0 == gpio_get(to_port, to_pin)) { connected = false; } } } if (connected) { connection |= (1 << (mode + direction * 4)); } } if ((connection & (1 << (mode + 0))) && (connection & (1 << (mode + 4)))) { // more accurate connection showed, no need to continue with least accurate test break; } } // put back to floating gpio_set_mode(pin1->port, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, pin1->pin); gpio_set_mode(pin2->port, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, pin2->pin); return connection; } void usb_cables_test_ground(const struct usb_connector_t** connectors, uint8_t connectors_nb, bool* connected) { // verify input arguments if (NULL == connectors || 0 == connectors_nb) { return; } // initialize output result if (connected) { for (uint8_t connector = 0; connector < connectors_nb; connector++) { connected[connector] = false; } } // pull up all ground pins for (uint8_t connector = 0; connector < connectors_nb; connector++) { for (uint8_t pin = 0; pin < connectors[connector]->pins_nb; pin++) { const struct usb_pin_t* usb_pin = &usb_pins[connectors[connector]->pins[pin]]; // get pin if (USB_PIN_TYPE_GROUND == usb_pin->type) { gpio_set_mode(usb_pin->port, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, usb_pin->pin); gpio_set(usb_pin->port, usb_pin->pin); } } } bool ground_found = false; // if we found the ground connection for (uint8_t connector_from = 0; connector_from < connectors_nb && !ground_found; connector_from++) { // test from every connector for (uint8_t pin_from = 0; pin_from < connectors[connector_from]->pins_nb && !ground_found; pin_from++) { // test from every pin const struct usb_pin_t* usb_pin_from = &usb_pins[connectors[connector_from]->pins[pin_from]]; // get from pin if (USB_PIN_TYPE_GROUND != usb_pin_from->type) { // only consider ground connections continue; } // set pin low gpio_set_mode(usb_pin_from->port, GPIO_MODE_OUTPUT_2_MHZ, GPIO_CNF_OUTPUT_PUSHPULL, usb_pin_from->pin); gpio_clear(usb_pin_from->port, usb_pin_from->pin); for (uint8_t connector_to = connector_from + 1; connector_to < connectors_nb; connector_to++) { // test every next connector 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 const struct usb_pin_t* usb_pin_to = &usb_pins[connectors[connector_to]->pins[pin_to]]; // get to pin if (USB_PIN_TYPE_GROUND != usb_pin_to->type) { // only consider ground connections continue; } if (0 == gpio_get(usb_pin_to->port, usb_pin_to->pin)) { // we found a ground interconnection if (connected) { // remember they are connected connected[connector_from] = true; connected[connector_to] = true; } else { 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 } } } // pull pin back up gpio_set_mode(usb_pin_from->port, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, usb_pin_from->pin); gpio_set(usb_pin_from->port, usb_pin_from->pin); } } // put all ground pins back to float for (uint8_t connector = 0; connector < connectors_nb; connector++) { for (uint8_t pin = 0; pin < connectors[connector]->pins_nb; pin++) { const struct usb_pin_t* usb_pin = &usb_pins[connectors[connector]->pins[pin]]; // get pin if (USB_PIN_TYPE_GROUND == usb_pin->type) { gpio_set_mode(usb_pin->port, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, usb_pin->pin); } } } } bool usb_cables_test_load(const struct usb_connector_t* connector) { // verify input arguments if (NULL == connector) { return false; } usb_cables_pins_float(); // ensure we start with all pins floating to not influence the check bool loaded = false; // remember if we found a load // pull power pin low (works better than pushing high and being strong enough to have a pull down pulled high) for (uint8_t pin_power = 0; pin_power < connector->pins_nb && !loaded; pin_power++) { const struct usb_pin_t* usb_power_pin = &usb_pins[connector->pins[pin_power]]; // get power pin if (USB_PIN_TYPE_POWER != usb_power_pin->type) { continue; } gpio_set_mode(usb_power_pin->port, GPIO_MODE_OUTPUT_2_MHZ, GPIO_CNF_OUTPUT_PUSHPULL, usb_power_pin->pin); gpio_clear(usb_power_pin->port, usb_power_pin->pin); for (uint8_t pin_ground = 0; pin_ground < connector->pins_nb && !loaded; pin_ground++) { const struct usb_pin_t* usb_ground_pin = &usb_pins[connector->pins[pin_ground]]; // get ground pin if (USB_PIN_TYPE_GROUND != usb_ground_pin->type) { continue; } // pull up to avoid false positive gpio_set_mode(usb_ground_pin->port, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, usb_ground_pin->pin); gpio_set(usb_ground_pin->port, usb_ground_pin->pin); // check if it is pulled high by VBUS sleep_us(100); if (0 == gpio_get(usb_ground_pin->port, usb_ground_pin->pin)) { loaded = true; } } gpio_set_mode(usb_power_pin->port, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, usb_power_pin->pin); // put back to floating } return loaded; } bool usb_cables_test_cable(const struct usb_cable_t* cable, uint8_t* defined, uint8_t* undefined, bool print) { if (NULL == cable) { return false; } uint8_t _defined = 0, _undefined = 0; // internal pair counting variables usb_cables_connectors_float(cable->connectors, cable->connectors_nb); // ensure we start in a safe state for (uint8_t connector_from = 0; connector_from < cable->connectors_nb; connector_from++) { // test from every connector for (uint8_t pin_from = 0; pin_from < cable->connectors[connector_from]->pins_nb; pin_from++) { // test from every pin for (uint8_t connector_to = connector_from; connector_to < cable->connectors_nb; connector_to++) { // test to every connector for (uint8_t pin_to = 0; pin_to < cable->connectors[connector_to]->pins_nb; pin_to++) { // test to every pin (except itself) if (connector_to == connector_from && pin_to <= pin_from) { continue; // skip already tested internal connection } const struct usb_pin_t* usb_pin_from = &usb_pins[cable->connectors[connector_from]->pins[pin_from]]; // get from pin const struct usb_pin_t* usb_pin_to = &usb_pins[cable->connectors[connector_to]->pins[pin_to]]; // get to pin // don't check if power and ground pins are connected because loads lead to false positives if ((USB_PIN_TYPE_GROUND == usb_pin_from->type || USB_PIN_TYPE_SHIELD == usb_pin_from->type) && USB_PIN_TYPE_POWER == usb_pin_to->type) { continue; } if (USB_PIN_TYPE_POWER == usb_pin_from->type && (USB_PIN_TYPE_GROUND == usb_pin_to->type || USB_PIN_TYPE_SHIELD == usb_pin_to->type)) { continue; } // figure out if this connection pair is defined bool pair_defined = false; for (uint8_t pair = 0; pair < cable->pin_pairs_nb; pair++) { if (cable->pin_pairs[pair][0] == cable->connectors[connector_from]->pins[pin_from] && cable->pin_pairs[pair][1] == cable->connectors[connector_to]->pins[pin_to]) { pair_defined = true; } if (cable->pin_pairs[pair][1] == cable->connectors[connector_from]->pins[pin_from] && cable->pin_pairs[pair][0] == cable->connectors[connector_to]->pins[pin_to]) { pair_defined = true; } } uint8_t connection = usb_cables_test_pins(usb_pin_from, usb_pin_to); if (connection >= 0x22) { if (pair_defined) { _defined++; } else { _undefined++; if (print) { printf("unspecified connection: %s %s to %s %s\n", cable->connectors[connector_from]->name, usb_pin_from->name, cable->connectors[connector_to]->name, usb_pin_to->name); } } } else { // there is no connection if (pair_defined) { // don't actually count the number of unconnected pair since it can be calculated from pin_pairs_nb - defined if (print) { printf("no connection: %s %s to %s %s\n", cable->connectors[connector_from]->name, usb_pin_from->name, cable->connectors[connector_to]->name, usb_pin_to->name); } } } } } } } usb_cables_connectors_float(cable->connectors, cable->connectors_nb); // ensure we return to a safe state // copy variables if (defined) { *defined = _defined; } if (undefined) { *undefined = _undefined; } return (0 == _undefined && cable->pin_pairs_nb == _defined); } uint8_t** usb_cables_test_connections(const struct usb_connector_t** connectors, uint8_t connectors_nb, bool include_intra, bool ground_only, uint16_t* connections_nb) { *connections_nb = 0; // number of connections between the connectors we found uint8_t (*connections)[2] = NULL; // connections between the connectors we found (pairs of pin index) if (NULL == connectors || 0 == connectors_nb) { // verify input arguments return NULL; } usb_cables_pins_float(); // ensure we start in a safe state so no pin influences the connections check for (uint8_t connector_from_i = 0; connector_from_i < connectors_nb; connector_from_i++) { // test from every connector const struct usb_connector_t* connector_from = connectors[connector_from_i]; // get connector if (NULL == connector_from) { // check connector continue; } for (uint8_t pin_from_i = 0; pin_from_i < connector_from->pins_nb; pin_from_i++) { // test from every pin uint8_t pin_from = connector_from->pins[pin_from_i]; // get pin if (pin_from >= LENGTH(usb_pins)) { // check pin continue; } const struct usb_pin_t* usb_pin_from = &usb_pins[pin_from]; // get from pin if (ground_only && USB_PIN_TYPE_GROUND != usb_pin_from->type) { // enforce ground only rule continue; } for (uint8_t connector_to_i = connector_from_i; connector_to_i < connectors_nb; connector_to_i++) { // test to every connector (yet untested) if (!include_intra && connector_to_i == connector_from_i) { // don't check internal connections continue; } const struct usb_connector_t* connector_to = connectors[connector_to_i]; // get connector if (NULL == connector_to) { continue; } for (uint8_t pin_to_i = 0; pin_to_i < connector_to->pins_nb; pin_to_i++) { // test to every pin uint8_t pin_to = connector_to->pins[pin_to_i]; // get pin const struct usb_pin_t* usb_pin_to = &usb_pins[pin_to]; // get to pin if (pin_to >= LENGTH(usb_pins)) { // check pin continue; } if (connector_to_i == connector_from_i && pin_to_i <= pin_from_i) { // skip already tested internal connection continue; } if (pin_to == pin_from) { // skip same pin continue; } if (usb_pin_to->port == usb_pin_from->port && usb_pin_to->pin == usb_pin_from->pin) { // skip same pin continue; } // don't check if power and ground pins are connected because loads lead to false positives if ((USB_PIN_TYPE_GROUND == usb_pin_from->type || USB_PIN_TYPE_SHIELD == usb_pin_from->type) && USB_PIN_TYPE_POWER == usb_pin_to->type) { continue; } if (USB_PIN_TYPE_POWER == usb_pin_from->type && (USB_PIN_TYPE_GROUND == usb_pin_to->type || USB_PIN_TYPE_SHIELD == usb_pin_to->type)) { continue; } if (ground_only && USB_PIN_TYPE_GROUND != usb_pin_to->type) { // enforce ground only rule continue; } // test connection uint8_t connection = usb_cables_test_pins(usb_pin_from, usb_pin_to); if (connection >= 0x22) { if (UINT16_MAX == (*connections_nb)) { // we already found the maximum of connections return (uint8_t**)connections; } (*connections_nb)++; // increment number of connections found uint8_t (*new_connections)[2] = realloc(connections, *connections_nb * sizeof(uint8_t[2])); // no integer overflow is possible because of the max number of connections if (NULL == new_connections) { // allocation failed if (connections) { free(connections); } connections = NULL; return NULL; } connections = new_connections; connections[(*connections_nb) - 1][0] = pin_from; connections[(*connections_nb) - 1][1] = pin_to; } } // pin_to } // connector_to } // pin_from } // connector_from return (uint8_t**)connections; }