merge rusEFI wiki
1
Home.md
|
@ -8,7 +8,6 @@ You have found the rusEFI wiki main page. Here you will find information related
|
|||
|
||||
**This project is NOT for emissions controlled or safety critical applications. This project is for race cars, snow blowers, fixed engine applications, and science experiments. It is PROHIBITED to use rusEFI on manned aircraft. **
|
||||
|
||||
|
||||
In order to use rusEFI you will need to acquire or fabricate one of the [supported boards](Hardware). You can also design your own custom board if so desired.
|
||||
|
||||
You can use rusEFI PC simulator to try rusEFI. PC simulator Windows binaries are included into [rusEFI Bundle](Download), and the Unix version of PC simulator could be compiled from [source code](https://github.com/rusefi/rusefi/tree/master/simulator).
|
||||
|
|
|
@ -0,0 +1,485 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
|
||||
<style>
|
||||
.pin-marker {
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
border-radius: 50%;
|
||||
background-color: white;
|
||||
border: 0.21vw black solid;
|
||||
cursor: pointer;
|
||||
color: black;
|
||||
text-align: center;
|
||||
line-height: 200%;
|
||||
}
|
||||
|
||||
[data-type*="12v"],
|
||||
[data-type*="12V"] {
|
||||
border-color: yellow;
|
||||
}
|
||||
|
||||
[data-type*="5v"],
|
||||
[data-type*="5V"] {
|
||||
border-color: red;
|
||||
}
|
||||
|
||||
[data-type*="at"] {
|
||||
border-color: green;
|
||||
}
|
||||
|
||||
[data-type*="av"] {
|
||||
border-color: brown;
|
||||
}
|
||||
|
||||
[data-type*="can"] {
|
||||
border-color: blue;
|
||||
}
|
||||
|
||||
[data-type*="din"] {
|
||||
border-color: lime;
|
||||
}
|
||||
|
||||
[data-type*="etb"] {
|
||||
border-color: darkcyan;
|
||||
}
|
||||
|
||||
[data-type*="gnd"] {
|
||||
border-color: darkgreen;
|
||||
}
|
||||
|
||||
[data-type*="gp_high"] {
|
||||
border-color: aqua;
|
||||
}
|
||||
|
||||
[data-type*="gp_low"] {
|
||||
border-color: aquamarine;
|
||||
}
|
||||
|
||||
[data-type*="gp_pp"] {
|
||||
border-color: cyan;
|
||||
}
|
||||
|
||||
[data-type*="hall"] {
|
||||
border-color: darkolivegreen;
|
||||
}
|
||||
|
||||
[data-type*="hl"] {
|
||||
border-color: gold;
|
||||
}
|
||||
|
||||
[data-type*="hs"] {
|
||||
border-color: indigo;
|
||||
}
|
||||
|
||||
[data-type*="ign"] {
|
||||
border-color: magenta;
|
||||
}
|
||||
|
||||
[data-type*="inj"] {
|
||||
border-color: maroon;
|
||||
}
|
||||
|
||||
[data-type*="ls"] {
|
||||
border-color: lightgreen;
|
||||
}
|
||||
|
||||
[data-type*="mr"] {
|
||||
border-color: firebrick;
|
||||
}
|
||||
|
||||
[data-type*="pgnd"] {
|
||||
border-color: coral;
|
||||
}
|
||||
|
||||
[data-type*="sgnd"] {
|
||||
border-color: olive;
|
||||
}
|
||||
|
||||
[data-type*="usb"] {
|
||||
border-color: lightseagreen;
|
||||
}
|
||||
|
||||
[data-type*="vr"] {
|
||||
border-color: sienna;
|
||||
}
|
||||
|
||||
.pin-marker:hover {
|
||||
transform: scale(2);
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.pin-marker.highlight {
|
||||
background-color: #fc935a;
|
||||
}
|
||||
|
||||
.pin-marker.selected {
|
||||
background-color: #f15a24;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.connector-container {
|
||||
width: 100%;
|
||||
overflow-x: scroll;
|
||||
position: relative;
|
||||
height: max(3in, 50vh);
|
||||
}
|
||||
|
||||
.connector-div {
|
||||
height: 100%;
|
||||
position: relative;
|
||||
z-index: 0;
|
||||
width: max-content;
|
||||
}
|
||||
|
||||
.connector-img {
|
||||
height: 100%;
|
||||
min-width: 100%;
|
||||
}
|
||||
|
||||
table {
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
border-collapse: collapse;
|
||||
width: clamp(100%, 100%, 1000px);
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
@media (min-width: 1000px) {
|
||||
table {
|
||||
font-size: 1rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1000px) {
|
||||
table {
|
||||
word-wrap: break-word;
|
||||
font-size: 2.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
table tbody tr {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
@media screen {
|
||||
td.pin-data {
|
||||
border-color: black;
|
||||
}
|
||||
}
|
||||
|
||||
table td, table th {
|
||||
border: 1px solid black;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
table tr:nth-child(even){
|
||||
background-color: #fc935a;
|
||||
}
|
||||
|
||||
table tr:hover {
|
||||
background-color: #f15a24;
|
||||
}
|
||||
|
||||
table th {
|
||||
padding-top: 12px;
|
||||
padding-bottom: 12px;
|
||||
text-align: left;
|
||||
background-color: #f15a24;
|
||||
color: black;
|
||||
}
|
||||
|
||||
.info-table {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
html {
|
||||
background-color: black;
|
||||
color: white;
|
||||
}
|
||||
|
||||
td.pin-data {
|
||||
border: 1px solid #ddd;
|
||||
}
|
||||
|
||||
table td, table th {
|
||||
border: 1px solid #ddd;
|
||||
}
|
||||
|
||||
table th {
|
||||
color: white;
|
||||
}
|
||||
|
||||
table tr:nth-child(even){
|
||||
background-color: #230c00;
|
||||
color: white;
|
||||
}
|
||||
|
||||
table tr:hover {
|
||||
background-color: #f15a24;
|
||||
}
|
||||
}
|
||||
|
||||
@media print {
|
||||
.container {
|
||||
height: 99vh;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
.info-table, .ts-data, .ts-header, .type-data, .type-header, .color-data, .color-header, thead {
|
||||
display: none;
|
||||
}
|
||||
.connector-container {
|
||||
flex: 0 1 auto;
|
||||
height: unset;
|
||||
min-height: 2in;
|
||||
}
|
||||
.connector-div {
|
||||
max-width: 100%;
|
||||
height: unset;
|
||||
}
|
||||
.connector-img {
|
||||
max-width: 100% !important;
|
||||
max-height: 3in;
|
||||
}
|
||||
h2 {
|
||||
font-size: 14px;
|
||||
}
|
||||
th {
|
||||
font-size: 12px;
|
||||
}
|
||||
td {
|
||||
font-size: 10px;
|
||||
}
|
||||
td:not(.pin-data) {
|
||||
border: none !important;
|
||||
}
|
||||
td.pin-data {
|
||||
border-width: 3px;
|
||||
border-radius: 10px;
|
||||
width: 10px;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
html, tr {
|
||||
background-color: white !important;
|
||||
color: black !important;
|
||||
}
|
||||
table {
|
||||
width: auto;
|
||||
border-collapse: separate;
|
||||
}
|
||||
.table-wrapper {
|
||||
column-count: 4;
|
||||
}
|
||||
table, tbody, tr {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
<script type="text/javascript">
|
||||
var connectorData = [
|
||||
`{ "pins": [ { "id": "EFI_ADC_14", "class": "analog_inputs", "ts_name": "Analog VBatt" } ] }`,
|
||||
`{ "pins": [ { "pin": 2, "function": "Power Ignition On (input)" }, { "pin": 6, "id": "GPIOC_9", "class": "outputs", "function": "Ignition Coil", "ts_name": "Coil 1F" }, { "pin": 7, "id": "GPIOE_14", "class": "outputs", "function": "Ignition Coil", "ts_name": "Coil 1G" }, { "pin": 8, "id": "GPIOC_7", "class": "outputs", "function": "Ignition Coil", "ts_name": "Coil 1H" }, { "pin": 9, "id": "GPIOE_10", "class": "outputs", "function": "Spare High", "ts_name": "Coil 1I" }, { "pin": 12, "id": "GPIOE_8", "class": "outputs", "function": "Spare High", "ts_name": "Coil 1L" }, { "pin": 13, "id": "GPIOE_12", "class": "outputs", "function": "Ignition Coil", "ts_name": "Coil 1M" }, { "pin": 15, "id": "GPIOD_8", "class": "outputs", "function": "Spare High", "ts_name": "Coil 1O" }, { "pin": 16, "id": "GPIOD_9", "class": "outputs", "function": "Spare High", "ts_name": "Coil 1P" }, { "pin": 23, "function": "Crank Pos/Trigger" }, { "pin": 24, "function": "Crank Neg/Trigger" }, { "pin": 25, "function": "Cam Pos/Trigger" }, { "pin": 26, "function": "Cam Neg/Trigger" }, { "pin": 29, "function": "Knock sensor" }, { "pin": 30, "function": "Knock sensor" }, { "pin": 33, "function": "CAN high" }, { "pin": 34, "function": "CAN low" }, { "pin": 35, "id": "GPIOC_13", "class": "outputs", "ts_name": "Injector 2M", "function": "Idle Valve Control Solenoid" }, { "pin": 36, "id": "GPIOD_7", "class": "outputs", "ts_name": "Injector 2N", "function": "Main Relay" }, { "pin": 37, "id": "GPIOE_5", "class": "outputs", "ts_name": "Injector 2O", "function": "Coolant Fan Relay" }, { "pin": 38, "id": "GPIOE_6", "class": "outputs", "ts_name": "Injector 2P", "function": "Spare low" }, { "pin": 39, "function": "Ground" }, { "pin": 40, "function": "Ground" }, { "pin": 41, "function": "Ground" }, { "pin": 42, "function": "Ground" }, { "pin": 43, "id": "EFI_ADC_15", "class": "analog_inputs", "ts_name": "Analog 3E" }, { "pin": 45, "id": "EFI_ADC_7", "class": "analog_inputs", "ts_name": "Analog 3G" }, { "pin": 46, "id": "EFI_ADC_6", "class": "analog_inputs", "ts_name": "Analog 3H" }, { "pin": 47, "id": "EFI_ADC_4", "class": "analog_inputs", "ts_name": "Analog 3I" }, { "pin": 48, "id": "EFI_ADC_3", "class": "analog_inputs", "ts_name": "Analog 3J" }, { "pin": 49, "function": "5V Sensor Power Supply Output" }, { "pin": 50, "id": "EFI_ADC_1", "class": "analog_inputs", "ts_name": "Analog 3L", "function": "Extra Input" }, { "pin": 51, "id": "EFI_ADC_2", "class": "analog_inputs", "ts_name": "Analog 3M", "function": "Throttle Position Sensor" }, { "pin": 52, "id": "EFI_ADC_13", "class": "analog_inputs", "ts_name": "Analog 3N", "function": "O2 Sensor" }, { "pin": 53, "id": "EFI_ADC_0", "class": "analog_inputs", "ts_name": "Analog 3O", "function": "MAP Sensor" }, { "pin": 54, "id": "EFI_ADC_11", "class": "analog_inputs", "ts_name": "Analog 3P", "function": "Intake air temp Sensor" }, { "pin": 55, "id": "EFI_ADC_12", "class": "analog_inputs", "ts_name": "Analog 3Q", "function": "Coolant Temp Sensor" }, { "pin": 57, "id": "GPIOE_3", "class": "outputs", "ts_name": "Injector 3S", "function": "Spare low" }, { "pin": 58, "id": "GPIOE_4", "class": "outputs", "ts_name": "Injector 3T", "function": "Fuel Pump Relay" }, { "pin": 59, "id": "GPIOD_3", "class": "outputs", "ts_name": "Injector 3U", "function": "Spare low" }, { "pin": 60, "id": "GPIOE_2", "class": "outputs", "ts_name": "Injector 3V", "function": "Injector" }, { "pin": 61, "id": "GPIOB_9", "class": "outputs", "ts_name": "Injector 3W", "function": "Injector" }, { "pin": 62, "id": "GPIOD_5", "class": "outputs", "ts_name": "Injector 3X", "function": "Spare low" }, { "pin": 63, "id": "GPIOB_8", "class": "outputs", "ts_name": "Injector 3Y", "function": "Injector" }, { "pin": 64, "id": "GPIOB_7", "class": "outputs", "ts_name": "Injector 3Z", "function": "Injector" } ] } `,
|
||||
///DATA///
|
||||
];
|
||||
|
||||
function hideEmptyColumns(table) {
|
||||
var rows = table.querySelector('tbody').children;
|
||||
var tableHead = table.querySelector("thead>tr")
|
||||
var cols = tableHead.children
|
||||
for (var i = 0; i < cols.length; i++) {
|
||||
var empty = true;
|
||||
for (var ii = 0; ii < rows.length; ii++) {
|
||||
empty = rows[ii].children[i].textContent.length > 0 ? false : empty;
|
||||
}
|
||||
if (empty) {
|
||||
tableHead.querySelectorAll('th')[i].style.display = 'none';
|
||||
for (var ii = 0; ii < rows.length; ii++) {
|
||||
rows[ii].children[i].style.display = 'none';
|
||||
}
|
||||
} else {
|
||||
tableHead.querySelectorAll('th')[i].style.display = '';
|
||||
for (var ii = 0; ii < rows.length; ii++) {
|
||||
rows[ii].children[i].style.display = '';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function addRow(table, pin, pdiv) {
|
||||
var template = document.getElementById("table-template");
|
||||
var clone = template.content.cloneNode(true);
|
||||
var row = clone.querySelector(".data");
|
||||
var cells = row.children;
|
||||
for (var i = 0; i < cells.length; i++) {
|
||||
var cell = cells[i];
|
||||
cell.textContent = Array.isArray(pin[cell.dataset.field]) ? pin[cell.dataset.field].join(", ") : pin[cell.dataset.field];
|
||||
}
|
||||
clone.querySelector(".pin-data").dataset.type = pin.type;
|
||||
if (pdiv) {
|
||||
row.addEventListener('click', function(table, pin, pdiv) {
|
||||
clickPin(table.parentElement.parentElement.parentElement.querySelector(".info-table tbody"), pin, pdiv);
|
||||
table.parentElement.parentElement.parentElement.scrollIntoView()
|
||||
}.bind(null, table, pin, pdiv));
|
||||
}
|
||||
table.appendChild(clone);
|
||||
}
|
||||
|
||||
function clickPin(table, pin, pdiv) {
|
||||
table.parentElement.style.display = "table";
|
||||
table.innerHTML = "";
|
||||
addRow(table, pin, pdiv);
|
||||
var pins = document.querySelectorAll(".pin-marker");
|
||||
for (var i = 0; i < pins.length; i++) {
|
||||
if (pins[i].dataset.type == pin.type) {
|
||||
pins[i].classList.add("highlight");
|
||||
} else {
|
||||
pins[i].classList.remove("highlight");
|
||||
}
|
||||
pins[i].classList.remove("selected");
|
||||
}
|
||||
pdiv.classList.add("selected");
|
||||
hideEmptyColumns(table.parentElement);
|
||||
}
|
||||
|
||||
window.addEventListener('load', function() {
|
||||
for (var c = 0; c < connectorData.length; c++) {
|
||||
var connector = JSON.parse(connectorData[c]);
|
||||
var template = document.getElementById("connector-template");
|
||||
var clone = template.content.cloneNode(true);
|
||||
document.body.appendChild(clone);
|
||||
var sdiv = document.body.lastChild.previousSibling;
|
||||
var img = sdiv.querySelector(".connector-img");
|
||||
img.addEventListener('load', function(connector, sdiv, img) {
|
||||
var cdiv = sdiv.querySelector(".connector-div");
|
||||
var ptemplate = document.getElementById("pin-template");
|
||||
var imgHeight = img.naturalHeight;
|
||||
var imgWidth = img.naturalWidth;
|
||||
var table = sdiv.querySelector(".info-table").querySelector("tbody");
|
||||
var fullTable = sdiv.querySelector(".pinout-table").querySelector("tbody");
|
||||
for (var i = 0; i < connector.pins.length; i++) {
|
||||
var pin = connector.pins[i];
|
||||
if (!pin.pin) {
|
||||
continue;
|
||||
}
|
||||
var pinfo = {};
|
||||
for (var ii = 0; ii < connector.info.pins.length; ii++) {
|
||||
if (connector.info.pins[ii].pin == pin.pin) {
|
||||
pinfo = connector.info.pins[ii];
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!pinfo.x) {
|
||||
addRow(fullTable, connector.pins[i], null);
|
||||
continue;
|
||||
}
|
||||
var closest = 1000000;
|
||||
for (var ii = 0; ii < connector.info.pins.length; ii++) {
|
||||
var tinfo = connector.info.pins[ii];
|
||||
var distance = Math.pow((tinfo.x - pinfo.x), 2) + Math.pow((tinfo.y - pinfo.y), 2);
|
||||
if (tinfo.pin != pin.pin && (!closest || distance < closest)) {
|
||||
closest = distance;
|
||||
}
|
||||
}
|
||||
var pclone = ptemplate.content.cloneNode(true);
|
||||
var pdiv = pclone.querySelector("div");
|
||||
pdiv.textContent = pinfo.pin;
|
||||
pdiv.style.top = ((pinfo.y / imgHeight) * 100) + "%";
|
||||
pdiv.style.left = ((pinfo.x / imgWidth) * 100) + "%";
|
||||
pdiv.dataset.type = pin.type;
|
||||
pdiv.addEventListener("click", function(table, pin, pdiv) {
|
||||
clickPin(table, pin, pdiv);
|
||||
}.bind(null, table, pin, pdiv));
|
||||
closest = Math.sqrt(closest);
|
||||
var divheight = cdiv.clientHeight;
|
||||
var divwidth = cdiv.clientWidth;
|
||||
var mult = cdiv.querySelector("img").naturalHeight / divheight;
|
||||
var newheight = (closest / mult)
|
||||
var pxheight = divheight * 0.08;
|
||||
if (newheight < pxheight) {
|
||||
pxheight = newheight;
|
||||
}
|
||||
var height = (pxheight / divheight) * 100;
|
||||
var width = (pxheight / divwidth) * 100;
|
||||
pdiv.style.height = "calc(" + height + "% - 0.21vw)";
|
||||
pdiv.style.width = "calc(" + width + "% - 0.21vw)";
|
||||
pdiv.style.marginTop = "-" + (width / 2) + "%";
|
||||
pdiv.style.marginLeft = "-" + (width / 2) + "%";
|
||||
pdiv.style.fontSize = (height * 1.8) + "px";
|
||||
pdiv.style.fontSize = (pxheight * 0.5) + "px";
|
||||
window.addEventListener('beforeprint', function(pdiv, width, divwidth, event) {
|
||||
pdiv.style.fontSize = "calc(calc(" + width + "px * min(640, " + divwidth + ")) * 0.0055)";
|
||||
}.bind(null, pdiv, width, divwidth));
|
||||
window.addEventListener('afterprint', function(pdiv, pxheight, event) {
|
||||
pdiv.style.fontSize = (pxheight * 0.5) + "px";
|
||||
}.bind(null, pdiv, pxheight));
|
||||
cdiv.appendChild(pdiv);
|
||||
addRow(fullTable, connector.pins[i], pdiv);
|
||||
}
|
||||
hideEmptyColumns(sdiv.querySelector('.pinout-table'));
|
||||
}.bind(null, connector, sdiv, img));
|
||||
img.src = connector.info.image.file;
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<template id="pin-template">
|
||||
<div class="pin-marker"></div>
|
||||
</template>
|
||||
|
||||
<template id="table-template">
|
||||
<tr class="data">
|
||||
<td class="pin-data" data-field="pin"></td>
|
||||
<td class="ts-data" data-field="ts_name"></td>
|
||||
<td class="type-data" data-field="type"</td>
|
||||
<td class="function-data" data-field="function"></td>
|
||||
<td class="color-data" data-field="color"></td>
|
||||
</tr>
|
||||
</template>
|
||||
|
||||
<template id="connector-template">
|
||||
<div class="container">
|
||||
<div class="connector-container">
|
||||
<div class="connector-div">
|
||||
<img class="connector-img"></img>
|
||||
</div>
|
||||
</div>
|
||||
<table class="info-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="pin-header" data-field="pin">Pin Number</th>
|
||||
<th class="ts-header" data-field="ts_name">TS Name</th>
|
||||
<th class="type-header" data-field="type">Type</th>
|
||||
<th class="function-header" data-field="function">Typical Function</th>
|
||||
<th class="color-header" data-field="color">Pigtail Color</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
<h2>Full Pinout Table</h2>
|
||||
<div class="table-wrapper">
|
||||
<table class="pinout-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="pin-header" data-field="pin">Pin Number</th>
|
||||
<th class="ts-header" data-field="ts_name">TS Name</th>
|
||||
<th class="type-header" data-field="type">Type</th>
|
||||
<th class="function-header" data-field="function">Typical Function</th>
|
||||
<th class="color-header" data-field="color">Pigtail Color</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,288 @@
|
|||
<html>
|
||||
<head>
|
||||
|
||||
<style>
|
||||
.pin-marker {
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
border-radius: 50%;
|
||||
background-color: white;
|
||||
border: 2px blue solid;
|
||||
cursor: pointer;
|
||||
color: black;
|
||||
text-align: center;
|
||||
line-height: 200%;
|
||||
}
|
||||
|
||||
.pin-marker:hover {
|
||||
background-color: #f15a24;
|
||||
color: white;
|
||||
transform: scale(2);
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.pin-marker.highlight {
|
||||
border: 2px #f15a24 solid;
|
||||
}
|
||||
|
||||
.pin-marker.selected {
|
||||
background-color: #fc935a;
|
||||
}
|
||||
|
||||
#connector-container {
|
||||
width: 100%;
|
||||
height: 50%;
|
||||
overflow-x: scroll;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
#connector-div {
|
||||
height: 100%;
|
||||
position: relative;
|
||||
z-index: 0;
|
||||
}
|
||||
|
||||
#connector-img {
|
||||
height: 100%;
|
||||
z-index: 0;
|
||||
}
|
||||
|
||||
table {
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
border-collapse: collapse;
|
||||
width: clamp(100%, 100%, 1000px);
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
@media (min-width: 1000px) {
|
||||
table {
|
||||
font-size: 1rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1000px) {
|
||||
table {
|
||||
font-size: 3rem;
|
||||
}
|
||||
}
|
||||
|
||||
table tbody tr {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
table td, table th {
|
||||
border: 1px solid black;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
table tr:nth-child(even){
|
||||
background-color: #fc935a;
|
||||
}
|
||||
|
||||
table tr:hover {
|
||||
background-color: #f15a24;
|
||||
}
|
||||
|
||||
table th {
|
||||
padding-top: 12px;
|
||||
padding-bottom: 12px;
|
||||
text-align: left;
|
||||
background-color: #f15a24;
|
||||
color: black;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
html {
|
||||
background-color: black;
|
||||
color: white;
|
||||
}
|
||||
|
||||
table td, table th {
|
||||
border: 1px solid #ddd;
|
||||
}
|
||||
|
||||
table th {
|
||||
color: white
|
||||
}
|
||||
|
||||
table tr:nth-child(even){
|
||||
background-color: #230c00;
|
||||
color: white;
|
||||
}
|
||||
|
||||
table tr:hover {
|
||||
background-color: #f15a24;
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
<script type="text/javascript" src="yaml.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
var connectorYaml = `
|
||||
pins:
|
||||
- id: EFI_ADC_14
|
||||
class: analog_inputs
|
||||
ts_name: Analog VBatt
|
||||
`;
|
||||
|
||||
function addRow(table, pin, pdiv) {
|
||||
var template = document.getElementById("table-template");
|
||||
var clone = template.content.cloneNode(true);
|
||||
var row = clone.querySelector(".data");
|
||||
var pdata = clone.querySelector(".pin-data");
|
||||
var idata = clone.querySelector(".id-data");
|
||||
var tdata = clone.querySelector(".type-data");
|
||||
var fdata = clone.querySelector(".function-data");
|
||||
var cdata = clone.querySelector(".color-data");
|
||||
pdata.textContent = pin.pin;
|
||||
idata.textContent = pin.id;
|
||||
tdata.textContent = pin.type
|
||||
fdata.textContent = pin.function;
|
||||
cdata.textContent = pin.color
|
||||
row.addEventListener('click', function(pin, pdiv) {
|
||||
clickPin(pin, pdiv);
|
||||
}.bind(null, pin, pdiv));
|
||||
table.appendChild(clone);
|
||||
}
|
||||
|
||||
function clickPin(pin, pdiv) {
|
||||
var table = document.getElementById("info-table").querySelector("tbody");
|
||||
table.innerHTML = "";
|
||||
if (Array.isArray(pin.id)) {
|
||||
var pinIds = pin.id.filter((value, index) => {
|
||||
return pin.id.indexOf(value) === index;
|
||||
});
|
||||
for (var i = 0; i < pinIds.length; i++) {
|
||||
addRow(table, {pin: pin.pin, id: pinIds[i], function: pin.function}, pdiv);
|
||||
}
|
||||
} else {
|
||||
addRow(table, pin, pdiv);
|
||||
}
|
||||
var pins = document.querySelectorAll(".pin-marker");
|
||||
for (var i = 0; i < pins.length; i++) {
|
||||
if (pins[i].dataset.type == pin.type) {
|
||||
pins[i].classList.add("highlight");
|
||||
} else {
|
||||
pins[i].classList.remove("highlight");
|
||||
}
|
||||
pins[i].classList.remove("selected");
|
||||
}
|
||||
pdiv.classList.add("selected");
|
||||
}
|
||||
|
||||
function adjustMarkers() {
|
||||
var cdiv = document.getElementById("connector-div");
|
||||
cdiv.style.width = document.getElementById("connector-img").clientWidth;
|
||||
var pins = document.querySelectorAll(".pin-marker");
|
||||
for (var i = 0; i < pins.length; i++) {
|
||||
var height = cdiv.clientHeight * 0.05;
|
||||
pins[i].style.height = height + "px";
|
||||
pins[i].style.width = height + "px";
|
||||
pins[i].style.marginTop = "-" + (height * 0.5) + "px";
|
||||
pins[i].style.marginLeft = "-" + (height * 0.5) + "px";
|
||||
pins[i].style.fontSize = (height * 0.5) + "px";
|
||||
}
|
||||
}
|
||||
|
||||
window.addEventListener('load', function() {
|
||||
var connector = YAML.parse(connectorYaml);
|
||||
document.getElementById("connector-img").addEventListener('load', function() {
|
||||
for (var i = 0; i < connector.pins.length; i++) {
|
||||
var pin = connector.pins[i];
|
||||
if (!pin.pin) {
|
||||
continue;
|
||||
}
|
||||
var pinfo;
|
||||
for (var ii = 0; ii < connector.info.pins.length; ii++) {
|
||||
if (connector.info.pins[ii].pin == pin.pin) {
|
||||
pinfo = connector.info.pins[ii];
|
||||
break;
|
||||
}
|
||||
}
|
||||
var cdiv = document.getElementById("connector-div");
|
||||
var template = document.getElementById("pin-template");
|
||||
var clone = template.content.cloneNode(true);
|
||||
var pdiv = clone.querySelector("div");
|
||||
var img = document.getElementById("connector-img");
|
||||
var imgHeight = img.naturalHeight;
|
||||
var imgWidth = img.naturalWidth;
|
||||
pdiv.textContent = pinfo.pin;
|
||||
pdiv.style.top = ((pinfo.y / imgHeight) * 100) + "%";
|
||||
pdiv.style.left = ((pinfo.x / imgWidth) * 100) + "%";
|
||||
pdiv.dataset.type = pin.type;
|
||||
pdiv.addEventListener("click", function(pin, pdiv) {
|
||||
clickPin(pin, pdiv);
|
||||
}.bind(null, pin, pdiv));
|
||||
cdiv.appendChild(pdiv);
|
||||
var fullTable = document.getElementById("pinout-table").querySelector("tbody");
|
||||
addRow(fullTable, connector.pins[i], pdiv);
|
||||
}
|
||||
adjustMarkers();
|
||||
});
|
||||
document.getElementById("connector-img").src = connector.info.image.file;
|
||||
});
|
||||
|
||||
window.addEventListener('resize', function() {
|
||||
adjustMarkers();
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<template id="pin-template">
|
||||
<div class="pin-marker"></div>
|
||||
</template>
|
||||
|
||||
<div id="connector-container">
|
||||
<div id="connector-div">
|
||||
<img id="connector-img"></img>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<template id="table-template">
|
||||
<tr class="data">
|
||||
<td class="pin-data"></td>
|
||||
<td class="id-data"></td>
|
||||
<td class="type-data"></td>
|
||||
<td class="function-data"></td>
|
||||
<td class="color-data"></td>
|
||||
</tr>
|
||||
</template>
|
||||
|
||||
<table id="info-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Pin Number</th>
|
||||
<th>Firmware ID</th>
|
||||
<th>Type</th>
|
||||
<th>Typical Function</th>
|
||||
<th>Pigtail Color</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
<h2>Full Pinout Table</h2>
|
||||
<table id="pinout-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Pin Number</th>
|
||||
<th>Firmware ID</th>
|
||||
<th>Type</th>
|
||||
<th>Typical Function</th>
|
||||
<th>Pigtail Color</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,507 @@
|
|||
<html>
|
||||
<head>
|
||||
|
||||
<style>
|
||||
.pin-marker {
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
border-radius: 50%;
|
||||
background-color: white;
|
||||
border: 2px blue solid;
|
||||
cursor: pointer;
|
||||
color: black;
|
||||
text-align: center;
|
||||
line-height: 200%;
|
||||
}
|
||||
|
||||
.pin-marker:hover {
|
||||
background-color: #f15a24;
|
||||
color: white;
|
||||
transform: scale(2);
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.pin-marker.highlight {
|
||||
border: 2px #f15a24 solid;
|
||||
}
|
||||
|
||||
.pin-marker.selected {
|
||||
background-color: #fc935a;
|
||||
}
|
||||
|
||||
#connector-container {
|
||||
width: 100%;
|
||||
height: 50%;
|
||||
overflow-x: scroll;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
#connector-div {
|
||||
height: 100%;
|
||||
position: relative;
|
||||
z-index: 0;
|
||||
}
|
||||
|
||||
#connector-img {
|
||||
height: 100%;
|
||||
z-index: 0;
|
||||
}
|
||||
|
||||
table {
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
border-collapse: collapse;
|
||||
width: clamp(100%, 100%, 1000px);
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
@media (min-width: 1000px) {
|
||||
table {
|
||||
font-size: 1rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1000px) {
|
||||
table {
|
||||
font-size: 3rem;
|
||||
}
|
||||
}
|
||||
|
||||
table tbody tr {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
table td, table th {
|
||||
border: 1px solid black;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
table tr:nth-child(even){
|
||||
background-color: #fc935a;
|
||||
}
|
||||
|
||||
table tr:hover {
|
||||
background-color: #f15a24;
|
||||
}
|
||||
|
||||
table th {
|
||||
padding-top: 12px;
|
||||
padding-bottom: 12px;
|
||||
text-align: left;
|
||||
background-color: #f15a24;
|
||||
color: black;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
html {
|
||||
background-color: black;
|
||||
color: white;
|
||||
}
|
||||
|
||||
table td, table th {
|
||||
border: 1px solid #ddd;
|
||||
}
|
||||
|
||||
table th {
|
||||
color: white
|
||||
}
|
||||
|
||||
table tr:nth-child(even){
|
||||
background-color: #230c00;
|
||||
color: white;
|
||||
}
|
||||
|
||||
table tr:hover {
|
||||
background-color: #f15a24;
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
<script type="text/javascript" src="yaml.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
var connectorYaml = `
|
||||
pins:
|
||||
- pin: 2
|
||||
function: Power Ignition On (input)
|
||||
|
||||
- pin: 6
|
||||
id: GPIOC_9
|
||||
class: outputs
|
||||
function: Ignition Coil #1
|
||||
ts_name: Coil 1F
|
||||
|
||||
- pin: 7
|
||||
id: GPIOE_14
|
||||
class: outputs
|
||||
function: Ignition Coil #3
|
||||
ts_name: Coil 1G
|
||||
|
||||
- pin: 8
|
||||
id: GPIOC_7
|
||||
class: outputs
|
||||
function: Ignition Coil #2
|
||||
ts_name: Coil 1H
|
||||
|
||||
- pin: 9
|
||||
id: GPIOE_10
|
||||
class: outputs
|
||||
function: Spare High #5
|
||||
ts_name: Coil 1I
|
||||
|
||||
- pin: 12
|
||||
id: GPIOE_8
|
||||
class: outputs
|
||||
function: Spare High #6
|
||||
ts_name: Coil 1L
|
||||
|
||||
- pin: 13
|
||||
id: GPIOE_12
|
||||
class: outputs
|
||||
function: Ignition Coil #4
|
||||
ts_name: Coil 1M
|
||||
|
||||
- pin: 15
|
||||
id: GPIOD_8
|
||||
class: outputs
|
||||
function: Spare High #8
|
||||
ts_name: Coil 1O
|
||||
|
||||
- pin: 16
|
||||
id: GPIOD_9
|
||||
class: outputs
|
||||
function: Spare High #7
|
||||
ts_name: Coil 1P
|
||||
|
||||
- pin: 23
|
||||
function: Crank Pos/Trigger #1 +
|
||||
|
||||
- pin: 24
|
||||
function: Crank Neg/Trigger #1 -
|
||||
|
||||
- pin: 25
|
||||
function: Cam Pos/Trigger #2 +
|
||||
|
||||
- pin: 26
|
||||
function: Cam Neg/Trigger #2 -
|
||||
|
||||
- pin: 29
|
||||
function: Knock sensor
|
||||
|
||||
- pin: 30
|
||||
function: Knock sensor
|
||||
|
||||
- pin: 33
|
||||
function: CAN high
|
||||
|
||||
- pin: 34
|
||||
function: CAN low
|
||||
|
||||
- pin: 35
|
||||
id: GPIOC_13
|
||||
class: outputs
|
||||
ts_name: Injector 2M
|
||||
function: Idle Valve Control Solenoid
|
||||
|
||||
- pin: 36
|
||||
id: GPIOD_7
|
||||
class: outputs
|
||||
ts_name: Injector 2N
|
||||
function: Main Relay
|
||||
|
||||
- pin: 37
|
||||
id: GPIOE_5
|
||||
class: outputs
|
||||
ts_name: Injector 2O
|
||||
function: Coolant Fan Relay
|
||||
|
||||
- pin: 38
|
||||
id: GPIOE_6
|
||||
class: outputs
|
||||
ts_name: Injector 2P
|
||||
function: Spare low #2
|
||||
|
||||
- pin: 39
|
||||
function: Ground
|
||||
|
||||
- pin: 40
|
||||
function: Ground
|
||||
|
||||
- pin: 41
|
||||
function: Ground
|
||||
|
||||
- pin: 42
|
||||
function: Ground
|
||||
|
||||
- pin: 43
|
||||
id: EFI_ADC_15
|
||||
class: analog_inputs
|
||||
ts_name: Analog 3E
|
||||
|
||||
- pin: 45
|
||||
id: EFI_ADC_7
|
||||
class: analog_inputs
|
||||
ts_name: Analog 3G
|
||||
|
||||
- pin: 46
|
||||
id: EFI_ADC_6
|
||||
class: analog_inputs
|
||||
ts_name: Analog 3H
|
||||
|
||||
- pin: 47
|
||||
id: EFI_ADC_4
|
||||
class: analog_inputs
|
||||
ts_name: Analog 3I
|
||||
|
||||
- pin: 48
|
||||
id: EFI_ADC_3
|
||||
class: analog_inputs
|
||||
ts_name: Analog 3J
|
||||
|
||||
- pin: 49
|
||||
function: 5V Sensor Power Supply Output
|
||||
|
||||
- pin: 50
|
||||
id: EFI_ADC_1
|
||||
class: analog_inputs
|
||||
ts_name: Analog 3L
|
||||
function: Extra Input
|
||||
|
||||
- pin: 51
|
||||
id: EFI_ADC_2
|
||||
class: analog_inputs
|
||||
ts_name: Analog 3M
|
||||
function: Throttle Position Sensor
|
||||
|
||||
- pin: 52
|
||||
id: EFI_ADC_13
|
||||
class: analog_inputs
|
||||
ts_name: Analog 3N
|
||||
function: O2 Sensor
|
||||
|
||||
- pin: 53
|
||||
id: EFI_ADC_0
|
||||
class: analog_inputs
|
||||
ts_name: Analog 3O
|
||||
function: MAP Sensor
|
||||
|
||||
- pin: 54
|
||||
id: EFI_ADC_11
|
||||
class: analog_inputs
|
||||
ts_name: Analog 3P
|
||||
function: Intake air temp Sensor
|
||||
|
||||
- pin: 55
|
||||
id: EFI_ADC_12
|
||||
class: analog_inputs
|
||||
ts_name: Analog 3Q
|
||||
function: Coolant Temp Sensor
|
||||
|
||||
- pin: 57
|
||||
id: GPIOE_3
|
||||
class: outputs
|
||||
ts_name: Injector 3S
|
||||
function: Spare low #1
|
||||
|
||||
- pin: 58
|
||||
id: GPIOE_4
|
||||
class: outputs
|
||||
ts_name: Injector 3T
|
||||
function: Fuel Pump Relay
|
||||
|
||||
- pin: 59
|
||||
id: GPIOD_3
|
||||
class: outputs
|
||||
ts_name: Injector 3U
|
||||
function: Spare low
|
||||
|
||||
- pin: 60
|
||||
id: GPIOE_2
|
||||
class: outputs
|
||||
ts_name: Injector 3V
|
||||
function: Injector #2
|
||||
|
||||
- pin: 61
|
||||
id: GPIOB_9
|
||||
class: outputs
|
||||
ts_name: Injector 3W
|
||||
function: Injector #1
|
||||
|
||||
- pin: 62
|
||||
id: GPIOD_5
|
||||
class: outputs
|
||||
ts_name: Injector 3X
|
||||
function: Spare low
|
||||
|
||||
- pin: 63
|
||||
id: GPIOB_8
|
||||
class: outputs
|
||||
ts_name: Injector 3Y
|
||||
function: Injector #3
|
||||
|
||||
- pin: 64
|
||||
id: GPIOB_7
|
||||
class: outputs
|
||||
ts_name: Injector 3Z
|
||||
function: Injector #4
|
||||
`;
|
||||
|
||||
function addRow(table, pin, pdiv) {
|
||||
var template = document.getElementById("table-template");
|
||||
var clone = template.content.cloneNode(true);
|
||||
var row = clone.querySelector(".data");
|
||||
var pdata = clone.querySelector(".pin-data");
|
||||
var idata = clone.querySelector(".id-data");
|
||||
var tdata = clone.querySelector(".type-data");
|
||||
var fdata = clone.querySelector(".function-data");
|
||||
var cdata = clone.querySelector(".color-data");
|
||||
pdata.textContent = pin.pin;
|
||||
idata.textContent = pin.id;
|
||||
tdata.textContent = pin.type
|
||||
fdata.textContent = pin.function;
|
||||
cdata.textContent = pin.color
|
||||
row.addEventListener('click', function(pin, pdiv) {
|
||||
clickPin(pin, pdiv);
|
||||
}.bind(null, pin, pdiv));
|
||||
table.appendChild(clone);
|
||||
}
|
||||
|
||||
function clickPin(pin, pdiv) {
|
||||
var table = document.getElementById("info-table").querySelector("tbody");
|
||||
table.innerHTML = "";
|
||||
if (Array.isArray(pin.id)) {
|
||||
var pinIds = pin.id.filter((value, index) => {
|
||||
return pin.id.indexOf(value) === index;
|
||||
});
|
||||
for (var i = 0; i < pinIds.length; i++) {
|
||||
addRow(table, {pin: pin.pin, id: pinIds[i], function: pin.function}, pdiv);
|
||||
}
|
||||
} else {
|
||||
addRow(table, pin, pdiv);
|
||||
}
|
||||
var pins = document.querySelectorAll(".pin-marker");
|
||||
for (var i = 0; i < pins.length; i++) {
|
||||
if (pins[i].dataset.type == pin.type) {
|
||||
pins[i].classList.add("highlight");
|
||||
} else {
|
||||
pins[i].classList.remove("highlight");
|
||||
}
|
||||
pins[i].classList.remove("selected");
|
||||
}
|
||||
pdiv.classList.add("selected");
|
||||
}
|
||||
|
||||
function adjustMarkers() {
|
||||
var cdiv = document.getElementById("connector-div");
|
||||
cdiv.style.width = document.getElementById("connector-img").clientWidth;
|
||||
var pins = document.querySelectorAll(".pin-marker");
|
||||
for (var i = 0; i < pins.length; i++) {
|
||||
var height = cdiv.clientHeight * 0.05;
|
||||
pins[i].style.height = height + "px";
|
||||
pins[i].style.width = height + "px";
|
||||
pins[i].style.marginTop = "-" + (height * 0.5) + "px";
|
||||
pins[i].style.marginLeft = "-" + (height * 0.5) + "px";
|
||||
pins[i].style.fontSize = (height * 0.5) + "px";
|
||||
}
|
||||
}
|
||||
|
||||
window.addEventListener('load', function() {
|
||||
var connector = YAML.parse(connectorYaml);
|
||||
document.getElementById("connector-img").addEventListener('load', function() {
|
||||
for (var i = 0; i < connector.pins.length; i++) {
|
||||
var pin = connector.pins[i];
|
||||
if (!pin.pin) {
|
||||
continue;
|
||||
}
|
||||
var pinfo;
|
||||
for (var ii = 0; ii < connector.info.pins.length; ii++) {
|
||||
if (connector.info.pins[ii].pin == pin.pin) {
|
||||
pinfo = connector.info.pins[ii];
|
||||
break;
|
||||
}
|
||||
}
|
||||
var cdiv = document.getElementById("connector-div");
|
||||
var template = document.getElementById("pin-template");
|
||||
var clone = template.content.cloneNode(true);
|
||||
var pdiv = clone.querySelector("div");
|
||||
var img = document.getElementById("connector-img");
|
||||
var imgHeight = img.naturalHeight;
|
||||
var imgWidth = img.naturalWidth;
|
||||
pdiv.textContent = pinfo.pin;
|
||||
pdiv.style.top = ((pinfo.y / imgHeight) * 100) + "%";
|
||||
pdiv.style.left = ((pinfo.x / imgWidth) * 100) + "%";
|
||||
pdiv.dataset.type = pin.type;
|
||||
pdiv.addEventListener("click", function(pin, pdiv) {
|
||||
clickPin(pin, pdiv);
|
||||
}.bind(null, pin, pdiv));
|
||||
cdiv.appendChild(pdiv);
|
||||
var fullTable = document.getElementById("pinout-table").querySelector("tbody");
|
||||
addRow(fullTable, connector.pins[i], pdiv);
|
||||
}
|
||||
adjustMarkers();
|
||||
});
|
||||
document.getElementById("connector-img").src = connector.info.image.file;
|
||||
});
|
||||
|
||||
window.addEventListener('resize', function() {
|
||||
adjustMarkers();
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<template id="pin-template">
|
||||
<div class="pin-marker"></div>
|
||||
</template>
|
||||
|
||||
<div id="connector-container">
|
||||
<div id="connector-div">
|
||||
<img id="connector-img"></img>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<template id="table-template">
|
||||
<tr class="data">
|
||||
<td class="pin-data"></td>
|
||||
<td class="id-data"></td>
|
||||
<td class="type-data"></td>
|
||||
<td class="function-data"></td>
|
||||
<td class="color-data"></td>
|
||||
</tr>
|
||||
</template>
|
||||
|
||||
<table id="info-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Pin Number</th>
|
||||
<th>Firmware ID</th>
|
||||
<th>Type</th>
|
||||
<th>Typical Function</th>
|
||||
<th>Pigtail Color</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
<h2>Full Pinout Table</h2>
|
||||
<table id="pinout-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Pin Number</th>
|
||||
<th>Firmware ID</th>
|
||||
<th>Type</th>
|
||||
<th>Typical Function</th>
|
||||
<th>Pigtail Color</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</body>
|
||||
</html>
|
After Width: | Height: | Size: 957 KiB |
After Width: | Height: | Size: 957 KiB |
After Width: | Height: | Size: 1.4 MiB |
|
@ -0,0 +1,484 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
|
||||
<style>
|
||||
.pin-marker {
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
border-radius: 50%;
|
||||
background-color: white;
|
||||
border: 0.21vw black solid;
|
||||
cursor: pointer;
|
||||
color: black;
|
||||
text-align: center;
|
||||
line-height: 200%;
|
||||
}
|
||||
|
||||
[data-type*="12v"],
|
||||
[data-type*="12V"] {
|
||||
border-color: yellow;
|
||||
}
|
||||
|
||||
[data-type*="5v"],
|
||||
[data-type*="5V"] {
|
||||
border-color: red;
|
||||
}
|
||||
|
||||
[data-type*="at"] {
|
||||
border-color: green;
|
||||
}
|
||||
|
||||
[data-type*="av"] {
|
||||
border-color: brown;
|
||||
}
|
||||
|
||||
[data-type*="can"] {
|
||||
border-color: blue;
|
||||
}
|
||||
|
||||
[data-type*="din"] {
|
||||
border-color: lime;
|
||||
}
|
||||
|
||||
[data-type*="etb"] {
|
||||
border-color: darkcyan;
|
||||
}
|
||||
|
||||
[data-type*="gnd"] {
|
||||
border-color: darkgreen;
|
||||
}
|
||||
|
||||
[data-type*="gp_high"] {
|
||||
border-color: aqua;
|
||||
}
|
||||
|
||||
[data-type*="gp_low"] {
|
||||
border-color: aquamarine;
|
||||
}
|
||||
|
||||
[data-type*="gp_pp"] {
|
||||
border-color: cyan;
|
||||
}
|
||||
|
||||
[data-type*="hall"] {
|
||||
border-color: darkolivegreen;
|
||||
}
|
||||
|
||||
[data-type*="hl"] {
|
||||
border-color: gold;
|
||||
}
|
||||
|
||||
[data-type*="hs"] {
|
||||
border-color: indigo;
|
||||
}
|
||||
|
||||
[data-type*="ign"] {
|
||||
border-color: magenta;
|
||||
}
|
||||
|
||||
[data-type*="inj"] {
|
||||
border-color: maroon;
|
||||
}
|
||||
|
||||
[data-type*="ls"] {
|
||||
border-color: lightgreen;
|
||||
}
|
||||
|
||||
[data-type*="mr"] {
|
||||
border-color: firebrick;
|
||||
}
|
||||
|
||||
[data-type*="pgnd"] {
|
||||
border-color: coral;
|
||||
}
|
||||
|
||||
[data-type*="sgnd"] {
|
||||
border-color: olive;
|
||||
}
|
||||
|
||||
[data-type*="usb"] {
|
||||
border-color: lightseagreen;
|
||||
}
|
||||
|
||||
[data-type*="vr"] {
|
||||
border-color: sienna;
|
||||
}
|
||||
|
||||
.pin-marker:hover {
|
||||
transform: scale(2);
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.pin-marker.highlight {
|
||||
background-color: #fc935a;
|
||||
}
|
||||
|
||||
.pin-marker.selected {
|
||||
background-color: #f15a24;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.connector-container {
|
||||
width: 100%;
|
||||
overflow-x: scroll;
|
||||
position: relative;
|
||||
height: max(3in, 50vh);
|
||||
}
|
||||
|
||||
.connector-div {
|
||||
height: 100%;
|
||||
position: relative;
|
||||
z-index: 0;
|
||||
width: max-content;
|
||||
}
|
||||
|
||||
.connector-img {
|
||||
height: 100%;
|
||||
min-width: 100%;
|
||||
}
|
||||
|
||||
table {
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
border-collapse: collapse;
|
||||
width: clamp(100%, 100%, 1000px);
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
@media (min-width: 1000px) {
|
||||
table {
|
||||
font-size: 1rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1000px) {
|
||||
table {
|
||||
word-wrap: break-word;
|
||||
font-size: 2.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
table tbody tr {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
@media screen {
|
||||
td.pin-data {
|
||||
border-color: black;
|
||||
}
|
||||
}
|
||||
|
||||
table td, table th {
|
||||
border: 1px solid black;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
table tr:nth-child(even){
|
||||
background-color: #fc935a;
|
||||
}
|
||||
|
||||
table tr:hover {
|
||||
background-color: #f15a24;
|
||||
}
|
||||
|
||||
table th {
|
||||
padding-top: 12px;
|
||||
padding-bottom: 12px;
|
||||
text-align: left;
|
||||
background-color: #f15a24;
|
||||
color: black;
|
||||
}
|
||||
|
||||
.info-table {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
html {
|
||||
background-color: black;
|
||||
color: white;
|
||||
}
|
||||
|
||||
td.pin-data {
|
||||
border: 1px solid #ddd;
|
||||
}
|
||||
|
||||
table td, table th {
|
||||
border: 1px solid #ddd;
|
||||
}
|
||||
|
||||
table th {
|
||||
color: white;
|
||||
}
|
||||
|
||||
table tr:nth-child(even){
|
||||
background-color: #230c00;
|
||||
color: white;
|
||||
}
|
||||
|
||||
table tr:hover {
|
||||
background-color: #f15a24;
|
||||
}
|
||||
}
|
||||
|
||||
@media print {
|
||||
.container {
|
||||
height: 99vh;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
.info-table, .ts-data, .ts-header, .type-data, .type-header, .color-data, .color-header, thead {
|
||||
display: none;
|
||||
}
|
||||
.connector-container {
|
||||
flex: 0 1 auto;
|
||||
height: unset;
|
||||
min-height: 2in;
|
||||
}
|
||||
.connector-div {
|
||||
max-width: 100%;
|
||||
height: unset;
|
||||
}
|
||||
.connector-img {
|
||||
max-width: 100% !important;
|
||||
max-height: 3in;
|
||||
}
|
||||
h2 {
|
||||
font-size: 14px;
|
||||
}
|
||||
th {
|
||||
font-size: 12px;
|
||||
}
|
||||
td {
|
||||
font-size: 10px;
|
||||
}
|
||||
td:not(.pin-data) {
|
||||
border: none !important;
|
||||
}
|
||||
td.pin-data {
|
||||
border-width: 3px;
|
||||
border-radius: 10px;
|
||||
width: 10px;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
html, tr {
|
||||
background-color: white !important;
|
||||
color: black !important;
|
||||
}
|
||||
table {
|
||||
width: auto;
|
||||
border-collapse: separate;
|
||||
}
|
||||
.table-wrapper {
|
||||
column-count: 4;
|
||||
}
|
||||
table, tbody, tr {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
<script type="text/javascript">
|
||||
var connectorData = [
|
||||
`{ "pins": [ { "pin": "S2", "function": "Power GND", "type": "gnd" } ], "info": { "image": { "file": "main.jpg" }, "pins": [ { "pin": "S2", "x": 2055, "y": 660 } ] } }`,
|
||||
///DATA///
|
||||
];
|
||||
|
||||
function hideEmptyColumns(table) {
|
||||
var rows = table.querySelector('tbody').children;
|
||||
var tableHead = table.querySelector("thead>tr")
|
||||
var cols = tableHead.children
|
||||
for (var i = 0; i < cols.length; i++) {
|
||||
var empty = true;
|
||||
for (var ii = 0; ii < rows.length; ii++) {
|
||||
empty = rows[ii].children[i].textContent.length > 0 ? false : empty;
|
||||
}
|
||||
if (empty) {
|
||||
tableHead.querySelectorAll('th')[i].style.display = 'none';
|
||||
for (var ii = 0; ii < rows.length; ii++) {
|
||||
rows[ii].children[i].style.display = 'none';
|
||||
}
|
||||
} else {
|
||||
tableHead.querySelectorAll('th')[i].style.display = '';
|
||||
for (var ii = 0; ii < rows.length; ii++) {
|
||||
rows[ii].children[i].style.display = '';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function addRow(table, pin, pdiv) {
|
||||
var template = document.getElementById("table-template");
|
||||
var clone = template.content.cloneNode(true);
|
||||
var row = clone.querySelector(".data");
|
||||
var cells = row.children;
|
||||
for (var i = 0; i < cells.length; i++) {
|
||||
var cell = cells[i];
|
||||
cell.textContent = Array.isArray(pin[cell.dataset.field]) ? pin[cell.dataset.field].join(", ") : pin[cell.dataset.field];
|
||||
}
|
||||
clone.querySelector(".pin-data").dataset.type = pin.type;
|
||||
if (pdiv) {
|
||||
row.addEventListener('click', function(table, pin, pdiv) {
|
||||
clickPin(table.parentElement.parentElement.parentElement.querySelector(".info-table tbody"), pin, pdiv);
|
||||
table.parentElement.parentElement.parentElement.scrollIntoView()
|
||||
}.bind(null, table, pin, pdiv));
|
||||
}
|
||||
table.appendChild(clone);
|
||||
}
|
||||
|
||||
function clickPin(table, pin, pdiv) {
|
||||
table.parentElement.style.display = "table";
|
||||
table.innerHTML = "";
|
||||
addRow(table, pin, pdiv);
|
||||
var pins = document.querySelectorAll(".pin-marker");
|
||||
for (var i = 0; i < pins.length; i++) {
|
||||
if (pins[i].dataset.type == pin.type) {
|
||||
pins[i].classList.add("highlight");
|
||||
} else {
|
||||
pins[i].classList.remove("highlight");
|
||||
}
|
||||
pins[i].classList.remove("selected");
|
||||
}
|
||||
pdiv.classList.add("selected");
|
||||
hideEmptyColumns(table.parentElement);
|
||||
}
|
||||
|
||||
window.addEventListener('load', function() {
|
||||
for (var c = 0; c < connectorData.length; c++) {
|
||||
var connector = JSON.parse(connectorData[c]);
|
||||
var template = document.getElementById("connector-template");
|
||||
var clone = template.content.cloneNode(true);
|
||||
document.body.appendChild(clone);
|
||||
var sdiv = document.body.lastChild.previousSibling;
|
||||
var img = sdiv.querySelector(".connector-img");
|
||||
img.addEventListener('load', function(connector, sdiv, img) {
|
||||
var cdiv = sdiv.querySelector(".connector-div");
|
||||
var ptemplate = document.getElementById("pin-template");
|
||||
var imgHeight = img.naturalHeight;
|
||||
var imgWidth = img.naturalWidth;
|
||||
var table = sdiv.querySelector(".info-table").querySelector("tbody");
|
||||
var fullTable = sdiv.querySelector(".pinout-table").querySelector("tbody");
|
||||
for (var i = 0; i < connector.pins.length; i++) {
|
||||
var pin = connector.pins[i];
|
||||
if (!pin.pin) {
|
||||
continue;
|
||||
}
|
||||
var pinfo = {};
|
||||
for (var ii = 0; ii < connector.info.pins.length; ii++) {
|
||||
if (connector.info.pins[ii].pin == pin.pin) {
|
||||
pinfo = connector.info.pins[ii];
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!pinfo.x) {
|
||||
addRow(fullTable, connector.pins[i], null);
|
||||
continue;
|
||||
}
|
||||
var closest = 1000000;
|
||||
for (var ii = 0; ii < connector.info.pins.length; ii++) {
|
||||
var tinfo = connector.info.pins[ii];
|
||||
var distance = Math.pow((tinfo.x - pinfo.x), 2) + Math.pow((tinfo.y - pinfo.y), 2);
|
||||
if (tinfo.pin != pin.pin && (!closest || distance < closest)) {
|
||||
closest = distance;
|
||||
}
|
||||
}
|
||||
var pclone = ptemplate.content.cloneNode(true);
|
||||
var pdiv = pclone.querySelector("div");
|
||||
pdiv.textContent = pinfo.pin;
|
||||
pdiv.style.top = ((pinfo.y / imgHeight) * 100) + "%";
|
||||
pdiv.style.left = ((pinfo.x / imgWidth) * 100) + "%";
|
||||
pdiv.dataset.type = pin.type;
|
||||
pdiv.addEventListener("click", function(table, pin, pdiv) {
|
||||
clickPin(table, pin, pdiv);
|
||||
}.bind(null, table, pin, pdiv));
|
||||
closest = Math.sqrt(closest);
|
||||
var divheight = cdiv.clientHeight;
|
||||
var divwidth = cdiv.clientWidth;
|
||||
var mult = cdiv.querySelector("img").naturalHeight / divheight;
|
||||
var newheight = (closest / mult)
|
||||
var pxheight = divheight * 0.08;
|
||||
if (newheight < pxheight) {
|
||||
pxheight = newheight;
|
||||
}
|
||||
var height = (pxheight / divheight) * 100;
|
||||
var width = (pxheight / divwidth) * 100;
|
||||
pdiv.style.height = "calc(" + height + "% - 0.21vw)";
|
||||
pdiv.style.width = "calc(" + width + "% - 0.21vw)";
|
||||
pdiv.style.marginTop = "-" + (width / 2) + "%";
|
||||
pdiv.style.marginLeft = "-" + (width / 2) + "%";
|
||||
pdiv.style.fontSize = (height * 1.8) + "px";
|
||||
pdiv.style.fontSize = (pxheight * 0.5) + "px";
|
||||
window.addEventListener('beforeprint', function(pdiv, width, divwidth, event) {
|
||||
pdiv.style.fontSize = "calc(calc(" + width + "px * min(640, " + divwidth + ")) * 0.0055)";
|
||||
}.bind(null, pdiv, width, divwidth));
|
||||
window.addEventListener('afterprint', function(pdiv, pxheight, event) {
|
||||
pdiv.style.fontSize = (pxheight * 0.5) + "px";
|
||||
}.bind(null, pdiv, pxheight));
|
||||
cdiv.appendChild(pdiv);
|
||||
addRow(fullTable, connector.pins[i], pdiv);
|
||||
}
|
||||
hideEmptyColumns(sdiv.querySelector('.pinout-table'));
|
||||
}.bind(null, connector, sdiv, img));
|
||||
img.src = connector.info.image.file;
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<template id="pin-template">
|
||||
<div class="pin-marker"></div>
|
||||
</template>
|
||||
|
||||
<template id="table-template">
|
||||
<tr class="data">
|
||||
<td class="pin-data" data-field="pin"></td>
|
||||
<td class="ts-data" data-field="ts_name"></td>
|
||||
<td class="type-data" data-field="type"</td>
|
||||
<td class="function-data" data-field="function"></td>
|
||||
<td class="color-data" data-field="color"></td>
|
||||
</tr>
|
||||
</template>
|
||||
|
||||
<template id="connector-template">
|
||||
<div class="container">
|
||||
<div class="connector-container">
|
||||
<div class="connector-div">
|
||||
<img class="connector-img"></img>
|
||||
</div>
|
||||
</div>
|
||||
<table class="info-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="pin-header" data-field="pin">Pin Number</th>
|
||||
<th class="ts-header" data-field="ts_name">TS Name</th>
|
||||
<th class="type-header" data-field="type">Type</th>
|
||||
<th class="function-header" data-field="function">Typical Function</th>
|
||||
<th class="color-header" data-field="color">Pigtail Color</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
<h2>Full Pinout Table</h2>
|
||||
<div class="table-wrapper">
|
||||
<table class="pinout-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="pin-header" data-field="pin">Pin Number</th>
|
||||
<th class="ts-header" data-field="ts_name">TS Name</th>
|
||||
<th class="type-header" data-field="type">Type</th>
|
||||
<th class="function-header" data-field="function">Typical Function</th>
|
||||
<th class="color-header" data-field="color">Pigtail Color</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
</body>
|
||||
</html>
|
After Width: | Height: | Size: 979 KiB |
After Width: | Height: | Size: 897 KiB |
|
@ -0,0 +1,942 @@
|
|||
<html>
|
||||
<head>
|
||||
|
||||
<style>
|
||||
.pin-marker {
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
border-radius: 50%;
|
||||
background-color: white;
|
||||
border: 2px blue solid;
|
||||
cursor: pointer;
|
||||
color: black;
|
||||
text-align: center;
|
||||
line-height: 200%;
|
||||
}
|
||||
|
||||
.pin-marker:hover {
|
||||
background-color: #f15a24;
|
||||
color: white;
|
||||
transform: scale(2);
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.pin-marker.highlight {
|
||||
border: 2px #f15a24 solid;
|
||||
}
|
||||
|
||||
.pin-marker.selected {
|
||||
background-color: #fc935a;
|
||||
}
|
||||
|
||||
#connector-container {
|
||||
width: 100%;
|
||||
height: 50%;
|
||||
overflow-x: scroll;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
#connector-div {
|
||||
height: 100%;
|
||||
position: relative;
|
||||
z-index: 0;
|
||||
}
|
||||
|
||||
#connector-img {
|
||||
height: 100%;
|
||||
z-index: 0;
|
||||
}
|
||||
|
||||
table {
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
border-collapse: collapse;
|
||||
width: clamp(100%, 100%, 1000px);
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
@media (min-width: 1000px) {
|
||||
table {
|
||||
font-size: 1rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1000px) {
|
||||
table {
|
||||
font-size: 3rem;
|
||||
}
|
||||
}
|
||||
|
||||
table tbody tr {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
table td, table th {
|
||||
border: 1px solid black;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
table tr:nth-child(even){
|
||||
background-color: #fc935a;
|
||||
}
|
||||
|
||||
table tr:hover {
|
||||
background-color: #f15a24;
|
||||
}
|
||||
|
||||
table th {
|
||||
padding-top: 12px;
|
||||
padding-bottom: 12px;
|
||||
text-align: left;
|
||||
background-color: #f15a24;
|
||||
color: black;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
html {
|
||||
background-color: black;
|
||||
color: white;
|
||||
}
|
||||
|
||||
table td, table th {
|
||||
border: 1px solid #ddd;
|
||||
}
|
||||
|
||||
table th {
|
||||
color: white
|
||||
}
|
||||
|
||||
table tr:nth-child(even){
|
||||
background-color: #230c00;
|
||||
color: white;
|
||||
}
|
||||
|
||||
table tr:hover {
|
||||
background-color: #f15a24;
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
<script type="text/javascript" src="yaml.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
var connectorYaml = `
|
||||
pins:
|
||||
- pin: 2A
|
||||
id: GPIOG_7
|
||||
class: outputs
|
||||
ts_name: 2A - INJ_1
|
||||
function: Injector #1
|
||||
type: inj
|
||||
color: orange Y1
|
||||
|
||||
- pin: 2B
|
||||
id: GPIOD_12
|
||||
class: outputs
|
||||
ts_name: 2B - ECF (PWM8)
|
||||
function: Engine Radiator Fan
|
||||
color: orange B4
|
||||
type: ls
|
||||
|
||||
- pin: 2C
|
||||
id: GPIOD_9
|
||||
class: outputs
|
||||
ts_name: 2C - AC Fan / INJ_5
|
||||
function: AC Radiator fan
|
||||
type: inj
|
||||
|
||||
- pin: 2D
|
||||
id: GPIOG_8
|
||||
class: outputs
|
||||
ts_name: 2D - INJ_2
|
||||
function: Injector #2
|
||||
type: inj
|
||||
color: blue Y1
|
||||
|
||||
- pin: 2E
|
||||
id: GPIOC_7
|
||||
class: outputs
|
||||
ts_name: 2E - COIL_A2 (PWM2)
|
||||
function: EGR Valve #1 Coil
|
||||
type: ls
|
||||
|
||||
- pin: 2F
|
||||
id: GPIOC_6
|
||||
class: outputs
|
||||
ts_name: 2E - COIL_A1 (PWM1)
|
||||
function: EGR Valve #2 Coil
|
||||
type: ls
|
||||
|
||||
- pin: 2G
|
||||
id: GPIOD_11
|
||||
class: outputs
|
||||
ts_name: 2G - INJ_3
|
||||
function: Injector #3
|
||||
type: inj
|
||||
color: white Y1
|
||||
|
||||
- pin: 2H
|
||||
id: GPIOC_9
|
||||
class: outputs
|
||||
ts_name: 2H - COIL_B2 (PWM4)
|
||||
function: EGR Valve #3 Coil
|
||||
type: ls
|
||||
|
||||
- pin: 2I
|
||||
id: GPIOC_8
|
||||
class: outputs
|
||||
ts_name: 2I - COIL_B1 (PWM3)
|
||||
function: EGR Valve #4 Coil
|
||||
type: ls
|
||||
|
||||
- pin: 2J
|
||||
id: GPIOD_10
|
||||
class: outputs
|
||||
ts_name: 2J - INJ_4
|
||||
function: Injector #4
|
||||
type: inj
|
||||
color: green Y1
|
||||
|
||||
- pin: 2K
|
||||
id: GPIOH_15
|
||||
class: outputs
|
||||
ts_name: 2K - AC (O4)
|
||||
function: A/C Relay
|
||||
type: ls
|
||||
|
||||
- pin: 2M
|
||||
id: GPIOG_2
|
||||
class: outputs
|
||||
ts_name: 2M - FPUMP (O9)
|
||||
function: Fuel Pump Relay
|
||||
type: ls
|
||||
color: red B4
|
||||
|
||||
- pin: 2N
|
||||
id: GPIOF_12
|
||||
class: outputs
|
||||
ts_name: 2N - VTSC / INJ_6
|
||||
function: VTCS Control
|
||||
type: inj
|
||||
|
||||
- pin: 2O
|
||||
id: GPIOE_4
|
||||
class: outputs
|
||||
ts_name: 2O - IGN_3
|
||||
type: ign
|
||||
|
||||
- pin: 2P
|
||||
function: IAC (positive) idle, +12v wired to main relay via 4AF
|
||||
color: red, short wire
|
||||
|
||||
- pin: 2Q
|
||||
id: GPIOD_14
|
||||
class: outputs
|
||||
ts_name: 2Q - IDLE (PWM5)
|
||||
function: IAC (negative) idle, with diode
|
||||
type: ls
|
||||
color: blue B4
|
||||
|
||||
- pin: 2R
|
||||
id: GPIOG_4
|
||||
class: outputs
|
||||
ts_name: 2R - CE (O11)
|
||||
function: MIL Control
|
||||
type: ls
|
||||
color: white Y1
|
||||
|
||||
- pin: 3A
|
||||
function: Injector GND
|
||||
type: gnd
|
||||
color: black Y1
|
||||
|
||||
- pin: 3B
|
||||
function: PCM (ECU) GND
|
||||
type: gnd
|
||||
color: black W4, sliced for MAP
|
||||
|
||||
- pin: 3C
|
||||
id: GPIOF_13
|
||||
class: outputs
|
||||
ts_name: 3C - Purge Solenoid / INJ_7
|
||||
function: Purge Control Solenoid
|
||||
type: inj
|
||||
|
||||
- pin: 3D
|
||||
id: GPIOF_14
|
||||
class: outputs
|
||||
ts_name: 3D - EGR Solenoid / INJ_8
|
||||
function: EGR Boost sens. sol.
|
||||
type: inj
|
||||
|
||||
- pin: 3E
|
||||
id: GPIOG_3
|
||||
class: outputs
|
||||
ts_name: 3E - CANIST (O10)
|
||||
function: CDCV (EVAP canister purge valve) Control
|
||||
type: ls
|
||||
|
||||
- pin: 3F
|
||||
id: GPIOI_8
|
||||
class: outputs
|
||||
ts_name: 3F - IGN_1 (1&4)
|
||||
function: Coil #1
|
||||
type: ign
|
||||
color: white B4
|
||||
|
||||
- pin: 3H
|
||||
id: GPIOI_2
|
||||
class: outputs
|
||||
ts_name: 3H - MAIN (O1)
|
||||
function: Main relay control
|
||||
type: ls
|
||||
color: white or red, R5
|
||||
|
||||
- pin: 3I
|
||||
id: GPIOE_5
|
||||
class: outputs
|
||||
ts_name: 3I - IGN_2 (2&3)
|
||||
function: Coil #2
|
||||
type: ign
|
||||
color: orange B4
|
||||
|
||||
- pin: 3J
|
||||
id: GPIOH_14
|
||||
class: outputs
|
||||
ts_name: 3J - O2H (O3)
|
||||
function: Front O2 sens. heater GND
|
||||
type: ls
|
||||
|
||||
- pin: 3K
|
||||
function: NC
|
||||
|
||||
- pin: 3L
|
||||
id: [GPIOI_6, EFI_ADC_1]
|
||||
class: [outputs, analog_inputs]
|
||||
ts_name: 3L - IGN_7 / AFR
|
||||
type: ign
|
||||
|
||||
- pin: 3M
|
||||
id: GPIOD_15
|
||||
class: outputs
|
||||
ts_name: 3M - ALTERN (PWM6)
|
||||
function: PWM signal to control alternator field voltage
|
||||
type: ls
|
||||
color: orange R5
|
||||
|
||||
- pin: 3N
|
||||
id: GPIOE_3
|
||||
class: outputs
|
||||
ts_name: 3N - IGN_4
|
||||
type: ign
|
||||
|
||||
- pin: 3O
|
||||
id: GPIOD_13
|
||||
class: outputs
|
||||
ts_name: 3O - TACH (PWM7)
|
||||
function: Tach Out
|
||||
type: ls
|
||||
color: green B4
|
||||
|
||||
- pin: 3P
|
||||
id: GPIOA_9
|
||||
class: outputs
|
||||
ts_name: 3P - O2H2 (O7)
|
||||
function: Rear O2 sensor heater
|
||||
type: ls
|
||||
|
||||
- pin: 3Q
|
||||
function: K-Line (serial comm.)
|
||||
|
||||
- pin: 3S
|
||||
function: Immobilizer comm.
|
||||
|
||||
- pin: 3T
|
||||
id: GPIOF_11
|
||||
class: event_inputs
|
||||
ts_name: 3T - VSS (D5)
|
||||
function: VSS in
|
||||
color: blue W3
|
||||
|
||||
- pin: 3U
|
||||
id: GPIOH_13
|
||||
class: outputs
|
||||
ts_name: 3U - AWARN (O2)
|
||||
function: Alternator Warning Light
|
||||
type: ls
|
||||
|
||||
- pin: 3V
|
||||
id: [GPIOA_6, EFI_ADC_6]
|
||||
class: [event_inputs, analog_inputs]
|
||||
ts_name: 3V - CAM (A19)
|
||||
function: Camshaft Sensor
|
||||
color: blue W3
|
||||
|
||||
- pin: 3W
|
||||
function: NC
|
||||
|
||||
- pin: 3X
|
||||
function: NC
|
||||
|
||||
- pin: 3Y
|
||||
id: [GPIOB_1, EFI_ADC_9]
|
||||
class: [event_inputs, analog_inputs]
|
||||
ts_name: 3Y - CRANK (A24)
|
||||
function: Crankshaft Sensor
|
||||
color: white W3
|
||||
|
||||
- pin: 3Z
|
||||
id: GPIOE_2
|
||||
class: outputs
|
||||
ts_name: 3Z - IGN_5 / GNDA
|
||||
type: ign
|
||||
|
||||
- pin: 4A
|
||||
function: Ground
|
||||
type: gnd
|
||||
color: black W4
|
||||
|
||||
- pin: 4B
|
||||
id: [GPIOF_9, EFI_ADC_2]
|
||||
class: [switch_inputs, analog_inputs]
|
||||
ts_name: 4B - Brake/RES1 (A7)
|
||||
function: Brake Switch
|
||||
|
||||
- pin: 4C
|
||||
id: [GPIOF_10, EFI_ADC_3]
|
||||
class: [switch_inputs, analog_inputs]
|
||||
ts_name: 4C - Steering/RES2 (A16)
|
||||
function: Power Steering Switch
|
||||
|
||||
- pin: 4D
|
||||
function: VVT Oil Control Valve pos. +12v wired to main relay via 4AF, short wire
|
||||
|
||||
- pin: 4E
|
||||
function: DTM switching (Diagnostic Terminal?)
|
||||
|
||||
- pin: 4F
|
||||
id: [GPIOB_0, EFI_ADC_8]
|
||||
class: [switch_inputs, analog_inputs]
|
||||
ts_name: 4F - AC_PRES/AUX1 (A23)
|
||||
function: AC Pressure In
|
||||
|
||||
- pin: 4H
|
||||
id: [GPIOC_4, EFI_ADC_14]
|
||||
class: [switch_inputs, analog_inputs]
|
||||
ts_name: 4H - Neutral/AUX2 (A21)
|
||||
function: Neutral Switch
|
||||
|
||||
- pin: 4I
|
||||
id: [GPIOC_5, EFI_ADC_15]
|
||||
class: [switch_inputs, analog_inputs]
|
||||
ts_name: 4I - Clutch/AUX3 (A22)
|
||||
function: Clutch Switch
|
||||
|
||||
- pin: 4J
|
||||
id: [GPIOA_7, EFI_ADC_7]
|
||||
class: [switch_inputs, analog_inputs]
|
||||
ts_name: 4J - VTCS/AUX4 (A20)
|
||||
function: VTCS ca. switch
|
||||
|
||||
- pin: 4K
|
||||
id: GPIOI_5
|
||||
class: outputs
|
||||
ts_name: 4K - IGN_6 / +5V_MAP
|
||||
type: ign
|
||||
|
||||
- pin: 4L
|
||||
function: Sensor +5V
|
||||
color: red W3, sliced for MAP
|
||||
|
||||
- pin: 4M
|
||||
id: EFI_ADC_5
|
||||
class: analog_inputs
|
||||
ts_name: 4M - KNOCK (A6)
|
||||
function: Knock sens. in
|
||||
color: white R5
|
||||
|
||||
- pin: 4N
|
||||
id: EFI_ADC_13
|
||||
class: analog_inputs
|
||||
ts_name: 4N - IAT (A14)
|
||||
function: IAT sensor
|
||||
color: green B2
|
||||
|
||||
- pin: 4O
|
||||
function: Sensor GND
|
||||
type: gnd
|
||||
color: black B2
|
||||
|
||||
- pin: 4P
|
||||
id: EFI_ADC_12
|
||||
class: analog_inputs
|
||||
ts_name: 4P - CLT (A11)
|
||||
function: CLT sensor
|
||||
color: blue B2
|
||||
|
||||
- pin: 4Q
|
||||
function: NC
|
||||
|
||||
- pin: 4R
|
||||
id: GPIOI_0
|
||||
class: outputs
|
||||
ts_name: 4R - VVT (O5)
|
||||
function: VVT Oil Control Valve neg.
|
||||
type: ls
|
||||
color: white B2
|
||||
|
||||
- pin: 4S
|
||||
id: EFI_ADC_5
|
||||
class: analog_inputs
|
||||
ts_name: 4S - Alternator voltage (A5)
|
||||
function: +12V engine fuse 15A, ECU power source, run/start
|
||||
color: red B2
|
||||
|
||||
- pin: 4T
|
||||
id: EFI_ADC_5
|
||||
class: analog_inputs
|
||||
ts_name: 4T - Alternator voltage (A5)
|
||||
function: Alternator output voltage
|
||||
|
||||
- pin: 4U
|
||||
id: [GPIOI_7, EFI_ADC_11]
|
||||
class: [outputs, analog_inputs]
|
||||
ts_name: 4U - MAP2/Ign8 (A10)
|
||||
function: NC, extra main relay for diode
|
||||
color: red, short wire
|
||||
type: ign
|
||||
|
||||
- pin: 4V
|
||||
id: EFI_ADC_4
|
||||
class: analog_inputs
|
||||
ts_name: 4V - TPS (A17)
|
||||
function: TPS sensor input
|
||||
color: green B2
|
||||
|
||||
- pin: 4W
|
||||
id: EFI_ADC_0
|
||||
class: analog_inputs
|
||||
ts_name: 4W - O2S (A13)
|
||||
function: Front O2 Sensor Signal
|
||||
|
||||
- pin: 4X
|
||||
id: EFI_ADC_10
|
||||
class: analog_inputs
|
||||
ts_name: 4X - MAF (A9)
|
||||
function: MAF sensor
|
||||
color: orange B2
|
||||
|
||||
- pin: 4Z
|
||||
function: ECU - TCM, Communication for A/T
|
||||
|
||||
- pin: 4AA
|
||||
id: EFI_ADC_9
|
||||
class: analog_inputs
|
||||
ts_name: 4AA - O2S2 (A12)
|
||||
function: Rear O2 Sensor Signal
|
||||
|
||||
- pin: 4AB
|
||||
id: EFI_ADC_3
|
||||
class: analog_inputs
|
||||
ts_name: 4AB - FTP/PPS (A18)
|
||||
function: Fuel Tank Pressure Sensor, PPS
|
||||
|
||||
- pin: 4AC
|
||||
function: ECU - TCM, Communication for A/T
|
||||
|
||||
- pin: 4AD
|
||||
function: Fuel Level Sensor
|
||||
|
||||
- pin: 4AE
|
||||
function: EGR Boost Pressure Sensor
|
||||
|
||||
- pin: 4AF
|
||||
function: +12v from main relay
|
||||
|
||||
- pin: 4AG
|
||||
function: Bat+ (Hot all times), 12v 10A fuse from battery
|
||||
|
||||
- pin: 4AH
|
||||
function: Evap
|
||||
|
||||
info:
|
||||
image:
|
||||
file: main.jpg
|
||||
pins:
|
||||
- pin: 2A
|
||||
x: 2259
|
||||
y: 220
|
||||
- pin: 2D
|
||||
x: 2187
|
||||
y: 220
|
||||
- pin: 2G
|
||||
x: 2115
|
||||
y: 220
|
||||
- pin: 2J
|
||||
x: 2043
|
||||
y: 220
|
||||
- pin: 2M
|
||||
x: 1971
|
||||
y: 220
|
||||
- pin: 2P
|
||||
x: 1899
|
||||
y: 220
|
||||
- pin: 3A
|
||||
x: 1722
|
||||
y: 220
|
||||
- pin: 3D
|
||||
x: 1643
|
||||
y: 220
|
||||
- pin: 3J
|
||||
x: 1490
|
||||
y: 220
|
||||
- pin: 3M
|
||||
x: 1398
|
||||
y: 220
|
||||
- pin: 3P
|
||||
x: 1309
|
||||
y: 220
|
||||
- pin: 3U
|
||||
x: 1212
|
||||
y: 220
|
||||
- pin: 3X
|
||||
x: 1131
|
||||
y: 220
|
||||
- pin: 4A
|
||||
x: 965
|
||||
y: 220
|
||||
- pin: 4D
|
||||
x: 876
|
||||
y: 220
|
||||
- pin: 4L
|
||||
x: 710
|
||||
y: 220
|
||||
- pin: 4O
|
||||
x: 618
|
||||
y: 220
|
||||
- pin: 4R
|
||||
x: 531
|
||||
y: 220
|
||||
- pin: 4U
|
||||
x: 434
|
||||
y: 220
|
||||
- pin: 4Z
|
||||
x: 352
|
||||
y: 220
|
||||
- pin: 4AC
|
||||
x: 257
|
||||
y: 220
|
||||
- pin: 4AF
|
||||
x: 166
|
||||
y: 220
|
||||
- pin: 2B
|
||||
x: 2261
|
||||
y: 350
|
||||
- pin: 2E
|
||||
x: 2193
|
||||
y: 350
|
||||
- pin: 2H
|
||||
x: 2116
|
||||
y: 350
|
||||
- pin: 2K
|
||||
x: 2044
|
||||
y: 350
|
||||
- pin: 2N
|
||||
x: 1968
|
||||
y: 350
|
||||
- pin: 2Q
|
||||
x: 1905
|
||||
y: 350
|
||||
- pin: 3B
|
||||
x: 1726
|
||||
y: 350
|
||||
- pin: 3E
|
||||
x: 1644
|
||||
y: 350
|
||||
- pin: 3H
|
||||
x: 1572
|
||||
y: 350
|
||||
- pin: 3K
|
||||
x: 1498
|
||||
y: 350
|
||||
- pin: 3N
|
||||
x: 1423
|
||||
y: 350
|
||||
- pin: 3Q
|
||||
x: 1356
|
||||
y: 350
|
||||
- pin: 3S
|
||||
x: 1281
|
||||
y: 350
|
||||
- pin: 3V
|
||||
x: 1206
|
||||
y: 350
|
||||
- pin: 3Y
|
||||
x: 1132
|
||||
y: 350
|
||||
- pin: 4B
|
||||
x: 976
|
||||
y: 350
|
||||
- pin: 4E
|
||||
x: 904
|
||||
y: 350
|
||||
- pin: 4H
|
||||
x: 829
|
||||
y: 350
|
||||
- pin: 4J
|
||||
x: 758
|
||||
y: 350
|
||||
- pin: 4M
|
||||
x: 685
|
||||
y: 350
|
||||
- pin: 4P
|
||||
x: 616
|
||||
y: 350
|
||||
- pin: 4S
|
||||
x: 536
|
||||
y: 350
|
||||
- pin: 4V
|
||||
x: 463
|
||||
y: 350
|
||||
- pin: 4X
|
||||
x: 398
|
||||
y: 350
|
||||
- pin: 4AA
|
||||
x: 321
|
||||
y: 350
|
||||
- pin: 4AD
|
||||
x: 254
|
||||
y: 350
|
||||
- pin: 4AG
|
||||
x: 174
|
||||
y: 350
|
||||
- pin: 2C
|
||||
x: 2263
|
||||
y: 486
|
||||
- pin: 2F
|
||||
x: 2189
|
||||
y: 486
|
||||
- pin: 2I
|
||||
x: 2114
|
||||
y: 486
|
||||
- pin: 2O
|
||||
x: 1973
|
||||
y: 486
|
||||
- pin: 2R
|
||||
x: 1895
|
||||
y: 486
|
||||
- pin: 3C
|
||||
x: 1726
|
||||
y: 486
|
||||
- pin: 3F
|
||||
x: 1640
|
||||
y: 486
|
||||
- pin: 3I
|
||||
x: 1568
|
||||
y: 486
|
||||
- pin: 3L
|
||||
x: 1494
|
||||
y: 486
|
||||
- pin: 3O
|
||||
x: 1421
|
||||
y: 486
|
||||
- pin: 3T
|
||||
x: 1277
|
||||
y: 486
|
||||
- pin: 3W
|
||||
x: 1203
|
||||
y: 486
|
||||
- pin: 3Z
|
||||
x: 1129
|
||||
y: 486
|
||||
- pin: 4C
|
||||
x: 974
|
||||
y: 486
|
||||
- pin: 4F
|
||||
x: 900
|
||||
y: 486
|
||||
- pin: 4I
|
||||
x: 828
|
||||
y: 486
|
||||
- pin: 4K
|
||||
x: 760
|
||||
y: 486
|
||||
- pin: 4N
|
||||
x: 682
|
||||
y: 486
|
||||
- pin: 4T
|
||||
x: 535
|
||||
y: 486
|
||||
- pin: 4W
|
||||
x: 467
|
||||
y: 486
|
||||
- pin: 4AB
|
||||
x: 314
|
||||
y: 486
|
||||
- pin: 4AE
|
||||
x: 247
|
||||
y: 486
|
||||
- pin: 4AH
|
||||
x: 169
|
||||
y: 486
|
||||
`;
|
||||
|
||||
function addRow(table, pin, pdiv) {
|
||||
var template = document.getElementById("table-template");
|
||||
var clone = template.content.cloneNode(true);
|
||||
var row = clone.querySelector(".data");
|
||||
var pdata = clone.querySelector(".pin-data");
|
||||
var idata = clone.querySelector(".id-data");
|
||||
var tdata = clone.querySelector(".type-data");
|
||||
var fdata = clone.querySelector(".function-data");
|
||||
var cdata = clone.querySelector(".color-data");
|
||||
pdata.textContent = pin.pin;
|
||||
idata.textContent = pin.id;
|
||||
tdata.textContent = pin.type
|
||||
fdata.textContent = pin.function;
|
||||
cdata.textContent = pin.color
|
||||
row.addEventListener('click', function(pin, pdiv) {
|
||||
clickPin(pin, pdiv);
|
||||
}.bind(null, pin, pdiv));
|
||||
table.appendChild(clone);
|
||||
}
|
||||
|
||||
function clickPin(pin, pdiv) {
|
||||
var table = document.getElementById("info-table").querySelector("tbody");
|
||||
table.innerHTML = "";
|
||||
if (Array.isArray(pin.id)) {
|
||||
var pinIds = pin.id.filter((value, index) => {
|
||||
return pin.id.indexOf(value) === index;
|
||||
});
|
||||
for (var i = 0; i < pinIds.length; i++) {
|
||||
addRow(table, {pin: pin.pin, id: pinIds[i], function: pin.function}, pdiv);
|
||||
}
|
||||
} else {
|
||||
addRow(table, pin, pdiv);
|
||||
}
|
||||
var pins = document.querySelectorAll(".pin-marker");
|
||||
for (var i = 0; i < pins.length; i++) {
|
||||
if (pins[i].dataset.type == pin.type) {
|
||||
pins[i].classList.add("highlight");
|
||||
} else {
|
||||
pins[i].classList.remove("highlight");
|
||||
}
|
||||
pins[i].classList.remove("selected");
|
||||
}
|
||||
pdiv.classList.add("selected");
|
||||
}
|
||||
|
||||
function adjustMarkers() {
|
||||
var cdiv = document.getElementById("connector-div");
|
||||
cdiv.style.width = document.getElementById("connector-img").clientWidth;
|
||||
var pins = document.querySelectorAll(".pin-marker");
|
||||
for (var i = 0; i < pins.length; i++) {
|
||||
var height = cdiv.clientHeight * 0.05;
|
||||
pins[i].style.height = height + "px";
|
||||
pins[i].style.width = height + "px";
|
||||
pins[i].style.marginTop = "-" + (height * 0.5) + "px";
|
||||
pins[i].style.marginLeft = "-" + (height * 0.5) + "px";
|
||||
pins[i].style.fontSize = (height * 0.5) + "px";
|
||||
}
|
||||
}
|
||||
|
||||
window.addEventListener('load', function() {
|
||||
var connector = YAML.parse(connectorYaml);
|
||||
document.getElementById("connector-img").addEventListener('load', function() {
|
||||
for (var i = 0; i < connector.pins.length; i++) {
|
||||
var pin = connector.pins[i];
|
||||
if (!pin.pin) {
|
||||
continue;
|
||||
}
|
||||
var pinfo;
|
||||
for (var ii = 0; ii < connector.info.pins.length; ii++) {
|
||||
if (connector.info.pins[ii].pin == pin.pin) {
|
||||
pinfo = connector.info.pins[ii];
|
||||
break;
|
||||
}
|
||||
}
|
||||
var cdiv = document.getElementById("connector-div");
|
||||
var template = document.getElementById("pin-template");
|
||||
var clone = template.content.cloneNode(true);
|
||||
var pdiv = clone.querySelector("div");
|
||||
var img = document.getElementById("connector-img");
|
||||
var imgHeight = img.naturalHeight;
|
||||
var imgWidth = img.naturalWidth;
|
||||
pdiv.textContent = pinfo.pin;
|
||||
pdiv.style.top = ((pinfo.y / imgHeight) * 100) + "%";
|
||||
pdiv.style.left = ((pinfo.x / imgWidth) * 100) + "%";
|
||||
pdiv.dataset.type = pin.type;
|
||||
pdiv.addEventListener("click", function(pin, pdiv) {
|
||||
clickPin(pin, pdiv);
|
||||
}.bind(null, pin, pdiv));
|
||||
cdiv.appendChild(pdiv);
|
||||
var fullTable = document.getElementById("pinout-table").querySelector("tbody");
|
||||
addRow(fullTable, connector.pins[i], pdiv);
|
||||
}
|
||||
adjustMarkers();
|
||||
});
|
||||
document.getElementById("connector-img").src = connector.info.image.file;
|
||||
});
|
||||
|
||||
window.addEventListener('resize', function() {
|
||||
adjustMarkers();
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<template id="pin-template">
|
||||
<div class="pin-marker"></div>
|
||||
</template>
|
||||
|
||||
<div id="connector-container">
|
||||
<div id="connector-div">
|
||||
<img id="connector-img"></img>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<template id="table-template">
|
||||
<tr class="data">
|
||||
<td class="pin-data"></td>
|
||||
<td class="id-data"></td>
|
||||
<td class="type-data"></td>
|
||||
<td class="function-data"></td>
|
||||
<td class="color-data"></td>
|
||||
</tr>
|
||||
</template>
|
||||
|
||||
<table id="info-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Pin Number</th>
|
||||
<th>Firmware ID</th>
|
||||
<th>Type</th>
|
||||
<th>Typical Function</th>
|
||||
<th>Pigtail Color</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
<h2>Full Pinout Table</h2>
|
||||
<table id="pinout-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Pin Number</th>
|
||||
<th>Firmware ID</th>
|
||||
<th>Type</th>
|
||||
<th>Typical Function</th>
|
||||
<th>Pigtail Color</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</body>
|
||||
</html>
|
After Width: | Height: | Size: 506 KiB |
|
@ -0,0 +1,308 @@
|
|||
<html>
|
||||
<head>
|
||||
|
||||
<style>
|
||||
.pin-marker {
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
border-radius: 50%;
|
||||
background-color: white;
|
||||
border: 2px blue solid;
|
||||
cursor: pointer;
|
||||
color: black;
|
||||
text-align: center;
|
||||
line-height: 200%;
|
||||
}
|
||||
|
||||
.pin-marker:hover {
|
||||
background-color: #f15a24;
|
||||
color: white;
|
||||
transform: scale(2);
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.pin-marker.highlight {
|
||||
border: 2px #f15a24 solid;
|
||||
}
|
||||
|
||||
.pin-marker.selected {
|
||||
background-color: #fc935a;
|
||||
}
|
||||
|
||||
#connector-container {
|
||||
width: 100%;
|
||||
height: 50%;
|
||||
overflow-x: scroll;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
#connector-div {
|
||||
height: 100%;
|
||||
position: relative;
|
||||
z-index: 0;
|
||||
}
|
||||
|
||||
#connector-img {
|
||||
height: 100%;
|
||||
z-index: 0;
|
||||
}
|
||||
|
||||
table {
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
border-collapse: collapse;
|
||||
width: clamp(100%, 100%, 1000px);
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
@media (min-width: 1000px) {
|
||||
table {
|
||||
font-size: 1rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1000px) {
|
||||
table {
|
||||
font-size: 3rem;
|
||||
}
|
||||
}
|
||||
|
||||
table tbody tr {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
table td, table th {
|
||||
border: 1px solid black;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
table tr:nth-child(even){
|
||||
background-color: #fc935a;
|
||||
}
|
||||
|
||||
table tr:hover {
|
||||
background-color: #f15a24;
|
||||
}
|
||||
|
||||
table th {
|
||||
padding-top: 12px;
|
||||
padding-bottom: 12px;
|
||||
text-align: left;
|
||||
background-color: #f15a24;
|
||||
color: black;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
html {
|
||||
background-color: black;
|
||||
color: white;
|
||||
}
|
||||
|
||||
table td, table th {
|
||||
border: 1px solid #ddd;
|
||||
}
|
||||
|
||||
table th {
|
||||
color: white
|
||||
}
|
||||
|
||||
table tr:nth-child(even){
|
||||
background-color: #230c00;
|
||||
color: white;
|
||||
}
|
||||
|
||||
table tr:hover {
|
||||
background-color: #f15a24;
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
<script type="text/javascript" src="yaml.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
var connectorYaml = `
|
||||
pins:
|
||||
- pin: 3
|
||||
id: GPIOB_8
|
||||
class: outputs
|
||||
function: I2C1_SCL or CAN1_RX
|
||||
ts_name: AUX J2 PB8
|
||||
|
||||
- pin: 6
|
||||
id: GPIOB_9
|
||||
class: outputs
|
||||
function: I2C1_SDA or CAN1_TX
|
||||
ts_name: AUX J2 PB9
|
||||
|
||||
- pin: 10
|
||||
id: GPIOC_12
|
||||
class: outputs
|
||||
function: SPI3_MOSI or USART3_CK or UART5_TX
|
||||
ts_name: AUX J2 PC12
|
||||
|
||||
- pin: 7
|
||||
id: GPIOA_15
|
||||
class: outputs
|
||||
function: SPI3_NSS (Chip Select)
|
||||
ts_name: AUX J2 PA15
|
||||
`;
|
||||
|
||||
function addRow(table, pin, pdiv) {
|
||||
var template = document.getElementById("table-template");
|
||||
var clone = template.content.cloneNode(true);
|
||||
var row = clone.querySelector(".data");
|
||||
var pdata = clone.querySelector(".pin-data");
|
||||
var idata = clone.querySelector(".id-data");
|
||||
var tdata = clone.querySelector(".type-data");
|
||||
var fdata = clone.querySelector(".function-data");
|
||||
var cdata = clone.querySelector(".color-data");
|
||||
pdata.textContent = pin.pin;
|
||||
idata.textContent = pin.id;
|
||||
tdata.textContent = pin.type
|
||||
fdata.textContent = pin.function;
|
||||
cdata.textContent = pin.color
|
||||
row.addEventListener('click', function(pin, pdiv) {
|
||||
clickPin(pin, pdiv);
|
||||
}.bind(null, pin, pdiv));
|
||||
table.appendChild(clone);
|
||||
}
|
||||
|
||||
function clickPin(pin, pdiv) {
|
||||
var table = document.getElementById("info-table").querySelector("tbody");
|
||||
table.innerHTML = "";
|
||||
if (Array.isArray(pin.id)) {
|
||||
var pinIds = pin.id.filter((value, index) => {
|
||||
return pin.id.indexOf(value) === index;
|
||||
});
|
||||
for (var i = 0; i < pinIds.length; i++) {
|
||||
addRow(table, {pin: pin.pin, id: pinIds[i], function: pin.function}, pdiv);
|
||||
}
|
||||
} else {
|
||||
addRow(table, pin, pdiv);
|
||||
}
|
||||
var pins = document.querySelectorAll(".pin-marker");
|
||||
for (var i = 0; i < pins.length; i++) {
|
||||
if (pins[i].dataset.type == pin.type) {
|
||||
pins[i].classList.add("highlight");
|
||||
} else {
|
||||
pins[i].classList.remove("highlight");
|
||||
}
|
||||
pins[i].classList.remove("selected");
|
||||
}
|
||||
pdiv.classList.add("selected");
|
||||
}
|
||||
|
||||
function adjustMarkers() {
|
||||
var cdiv = document.getElementById("connector-div");
|
||||
cdiv.style.width = document.getElementById("connector-img").clientWidth;
|
||||
var pins = document.querySelectorAll(".pin-marker");
|
||||
for (var i = 0; i < pins.length; i++) {
|
||||
var height = cdiv.clientHeight * 0.05;
|
||||
pins[i].style.height = height + "px";
|
||||
pins[i].style.width = height + "px";
|
||||
pins[i].style.marginTop = "-" + (height * 0.5) + "px";
|
||||
pins[i].style.marginLeft = "-" + (height * 0.5) + "px";
|
||||
pins[i].style.fontSize = (height * 0.5) + "px";
|
||||
}
|
||||
}
|
||||
|
||||
window.addEventListener('load', function() {
|
||||
var connector = YAML.parse(connectorYaml);
|
||||
document.getElementById("connector-img").addEventListener('load', function() {
|
||||
for (var i = 0; i < connector.pins.length; i++) {
|
||||
var pin = connector.pins[i];
|
||||
if (!pin.pin) {
|
||||
continue;
|
||||
}
|
||||
var pinfo;
|
||||
for (var ii = 0; ii < connector.info.pins.length; ii++) {
|
||||
if (connector.info.pins[ii].pin == pin.pin) {
|
||||
pinfo = connector.info.pins[ii];
|
||||
break;
|
||||
}
|
||||
}
|
||||
var cdiv = document.getElementById("connector-div");
|
||||
var template = document.getElementById("pin-template");
|
||||
var clone = template.content.cloneNode(true);
|
||||
var pdiv = clone.querySelector("div");
|
||||
var img = document.getElementById("connector-img");
|
||||
var imgHeight = img.naturalHeight;
|
||||
var imgWidth = img.naturalWidth;
|
||||
pdiv.textContent = pinfo.pin;
|
||||
pdiv.style.top = ((pinfo.y / imgHeight) * 100) + "%";
|
||||
pdiv.style.left = ((pinfo.x / imgWidth) * 100) + "%";
|
||||
pdiv.dataset.type = pin.type;
|
||||
pdiv.addEventListener("click", function(pin, pdiv) {
|
||||
clickPin(pin, pdiv);
|
||||
}.bind(null, pin, pdiv));
|
||||
cdiv.appendChild(pdiv);
|
||||
var fullTable = document.getElementById("pinout-table").querySelector("tbody");
|
||||
addRow(fullTable, connector.pins[i], pdiv);
|
||||
}
|
||||
adjustMarkers();
|
||||
});
|
||||
document.getElementById("connector-img").src = connector.info.image.file;
|
||||
});
|
||||
|
||||
window.addEventListener('resize', function() {
|
||||
adjustMarkers();
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<template id="pin-template">
|
||||
<div class="pin-marker"></div>
|
||||
</template>
|
||||
|
||||
<div id="connector-container">
|
||||
<div id="connector-div">
|
||||
<img id="connector-img"></img>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<template id="table-template">
|
||||
<tr class="data">
|
||||
<td class="pin-data"></td>
|
||||
<td class="id-data"></td>
|
||||
<td class="type-data"></td>
|
||||
<td class="function-data"></td>
|
||||
<td class="color-data"></td>
|
||||
</tr>
|
||||
</template>
|
||||
|
||||
<table id="info-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Pin Number</th>
|
||||
<th>Firmware ID</th>
|
||||
<th>Type</th>
|
||||
<th>Typical Function</th>
|
||||
<th>Pigtail Color</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
<h2>Full Pinout Table</h2>
|
||||
<table id="pinout-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Pin Number</th>
|
||||
<th>Firmware ID</th>
|
||||
<th>Type</th>
|
||||
<th>Typical Function</th>
|
||||
<th>Pigtail Color</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</body>
|
||||
</html>
|
After Width: | Height: | Size: 146 KiB |
|
@ -0,0 +1,554 @@
|
|||
<html>
|
||||
<head>
|
||||
|
||||
<style>
|
||||
.pin-marker {
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
border-radius: 50%;
|
||||
background-color: white;
|
||||
border: 2px blue solid;
|
||||
cursor: pointer;
|
||||
color: black;
|
||||
text-align: center;
|
||||
line-height: 200%;
|
||||
}
|
||||
|
||||
.pin-marker:hover {
|
||||
background-color: #f15a24;
|
||||
color: white;
|
||||
transform: scale(2);
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.pin-marker.highlight {
|
||||
border: 2px #f15a24 solid;
|
||||
}
|
||||
|
||||
.pin-marker.selected {
|
||||
background-color: #fc935a;
|
||||
}
|
||||
|
||||
#connector-container {
|
||||
width: 100%;
|
||||
height: 50%;
|
||||
overflow-x: scroll;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
#connector-div {
|
||||
height: 100%;
|
||||
position: relative;
|
||||
z-index: 0;
|
||||
}
|
||||
|
||||
#connector-img {
|
||||
height: 100%;
|
||||
z-index: 0;
|
||||
}
|
||||
|
||||
table {
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
border-collapse: collapse;
|
||||
width: clamp(100%, 100%, 1000px);
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
@media (min-width: 1000px) {
|
||||
table {
|
||||
font-size: 1rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1000px) {
|
||||
table {
|
||||
font-size: 3rem;
|
||||
}
|
||||
}
|
||||
|
||||
table tbody tr {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
table td, table th {
|
||||
border: 1px solid black;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
table tr:nth-child(even){
|
||||
background-color: #fc935a;
|
||||
}
|
||||
|
||||
table tr:hover {
|
||||
background-color: #f15a24;
|
||||
}
|
||||
|
||||
table th {
|
||||
padding-top: 12px;
|
||||
padding-bottom: 12px;
|
||||
text-align: left;
|
||||
background-color: #f15a24;
|
||||
color: black;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
html {
|
||||
background-color: black;
|
||||
color: white;
|
||||
}
|
||||
|
||||
table td, table th {
|
||||
border: 1px solid #ddd;
|
||||
}
|
||||
|
||||
table th {
|
||||
color: white
|
||||
}
|
||||
|
||||
table tr:nth-child(even){
|
||||
background-color: #230c00;
|
||||
color: white;
|
||||
}
|
||||
|
||||
table tr:hover {
|
||||
background-color: #f15a24;
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
<script type="text/javascript" src="yaml.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
var connectorYaml = `
|
||||
#
|
||||
# microRusEfi board
|
||||
# https://github.com/rusefi/rusefi/wiki/Hardware_microRusEfi_wiring
|
||||
#
|
||||
|
||||
pins:
|
||||
- pin: 1
|
||||
id: EFI_ADC_11
|
||||
class: analog_inputs
|
||||
color: white right
|
||||
function: 12V Supply from main relay output, see also pin #29
|
||||
ts_name: Battery Sense
|
||||
type: 12V
|
||||
|
||||
# default Idle Air Control TLE8888 high current low side: VVT2 TLE8888_OUT5
|
||||
- pin: 3
|
||||
id: TLE8888_PIN_5
|
||||
class: outputs
|
||||
color: white
|
||||
function: Idle solenoid
|
||||
ts_name: 3 - Lowside 2
|
||||
type: ls
|
||||
|
||||
# default VVT TLE8888 high current low side: VVT1 TLE8888_OUT6
|
||||
- pin: 7
|
||||
id: TLE8888_PIN_6
|
||||
class: outputs
|
||||
color: black
|
||||
function: VVT
|
||||
ts_name: 7 - Lowside 1
|
||||
type: ls
|
||||
|
||||
# TC4427 ignition outputs (5v)
|
||||
- pin: 9
|
||||
id: GPIOD_4
|
||||
class: outputs
|
||||
color: dark blue
|
||||
function: Ignition 1
|
||||
ts_name: 9 - Ignition 1
|
||||
type: ign
|
||||
|
||||
- pin: 10
|
||||
id: GPIOD_3
|
||||
class: outputs
|
||||
color: dark blue
|
||||
function: Ignition 2
|
||||
ts_name: 10 - Ignition 2
|
||||
type: ign
|
||||
|
||||
- pin: 11
|
||||
id: GPIOD_2
|
||||
class: outputs
|
||||
color: dark blue
|
||||
function: Ignition 3
|
||||
ts_name: 11 - Ignition 3
|
||||
type: ign
|
||||
|
||||
- pin: 12
|
||||
id: GPIOD_1
|
||||
class: outputs
|
||||
color: dark blue
|
||||
function: Ignition 4
|
||||
ts_name: 12 - Ignition 4
|
||||
type: ign
|
||||
|
||||
- pin: 13
|
||||
id: GPIOD_6
|
||||
class: outputs
|
||||
color: yellow
|
||||
function: Alternator (see JP2 jumper note)
|
||||
ts_name: 13 - GP Out 6
|
||||
type: gp_high
|
||||
|
||||
# TC4427 general purpose output (selectable 5v/12v)
|
||||
- pin: 14
|
||||
id: GPIOD_7
|
||||
class: outputs
|
||||
color: yellow
|
||||
function: (see JP2 jumper note)
|
||||
ts_name: 14 - GP Out 5
|
||||
type: gp_high
|
||||
|
||||
- pin: 18
|
||||
id: [GPIOA_0, EFI_ADC_0]
|
||||
class: [switch_inputs, analog_inputs]
|
||||
color: red
|
||||
function: CLT sensor
|
||||
ts_name: 18 - AN temp 1
|
||||
type: at
|
||||
|
||||
- pin: 19
|
||||
id: [GPIOC_2, EFI_ADC_12]
|
||||
class: [switch_inputs, analog_inputs]
|
||||
color: red
|
||||
function: Starting from version 0.5.0 this pin can be used as 5V input for USB connection through main connector (No need to open case to access micro-USB connector)
|
||||
ts_name: 19 - AN volt 4
|
||||
type: av
|
||||
|
||||
- pin: 20
|
||||
id: [GPIOC_3, EFI_ADC_13]
|
||||
class: [switch_inputs, analog_inputs]
|
||||
color: red left
|
||||
function: Throttle position sensor (TPS)
|
||||
ts_name: 20 - AN volt 5
|
||||
type: av
|
||||
|
||||
- pin: 22
|
||||
id: [GPIOA_3, EFI_ADC_3]
|
||||
class: [switch_inputs, analog_inputs]
|
||||
color: dark green
|
||||
ts_name: 22 - AN temp 4
|
||||
type: at
|
||||
|
||||
- pin: 23
|
||||
id: [GPIOA_1, EFI_ADC_1]
|
||||
class: [switch_inputs, analog_inputs]
|
||||
color: dark green
|
||||
function: IAT sensor
|
||||
ts_name: 23 - AN temp 2
|
||||
type: at
|
||||
|
||||
- pin: 24
|
||||
id: [GPIOA_2, EFI_ADC_2]
|
||||
class: [switch_inputs, analog_inputs]
|
||||
color: dark green
|
||||
ts_name: 24 - AN temp 3
|
||||
type: at
|
||||
|
||||
# RC filter input for hall
|
||||
- pin: 25
|
||||
id: [GPIOA_5, GPIOA_5]
|
||||
class: [event_inputs, switch_inputs]
|
||||
color: light blue right
|
||||
ts_name: 25 - Hall Cam
|
||||
type: hall
|
||||
|
||||
- pin: 26
|
||||
id: [GPIOA_6, EFI_ADC_6]
|
||||
class: [switch_inputs, analog_inputs]
|
||||
color: light blue
|
||||
ts_name: 26 - AN volt 2
|
||||
type: av
|
||||
|
||||
- pin: 27
|
||||
id: [GPIOC_0, EFI_ADC_10]
|
||||
class: [switch_inputs, analog_inputs]
|
||||
color: light blue
|
||||
function: MAP sensor
|
||||
ts_name: 27 - AN volt 1
|
||||
type: av
|
||||
|
||||
- pin: 28
|
||||
id: [GPIOA_4, EFI_ADC_4]
|
||||
class: [switch_inputs, analog_inputs]
|
||||
color: light blue left
|
||||
ts_name: 28 - AN volt 10
|
||||
type: av
|
||||
|
||||
- pin: 30
|
||||
id: [GPIOC_5, EFI_ADC_15]
|
||||
class: [switch_inputs, analog_inputs]
|
||||
color: pink
|
||||
ts_name: 30 - AN volt 7
|
||||
type: av
|
||||
|
||||
- pin: 31
|
||||
id: [GPIOA_7, EFI_ADC_7]
|
||||
class: [switch_inputs, analog_inputs]
|
||||
color: pink
|
||||
function: Throttle Pedal Position Sensor (PPS)
|
||||
ts_name: 31 - AN volt 3
|
||||
type: av
|
||||
|
||||
- pin: 32
|
||||
id: [GPIOC_4, EFI_ADC_14]
|
||||
class: [switch_inputs, analog_inputs]
|
||||
color: pink
|
||||
function: External wideband O2 sensor
|
||||
ts_name: 32 - AN volt 6
|
||||
type: av
|
||||
|
||||
# TLE8888 half bridges (pushpull, lowside, or high-low) TLE8888_OUT23
|
||||
- pin: 33
|
||||
id: TLE8888_PIN_23
|
||||
class: outputs
|
||||
color: orange right
|
||||
function: (IDLE stepper coil 2+)
|
||||
ts_name: 33 - GP Out 3
|
||||
type: [gp_low, gp_pp]
|
||||
|
||||
# TLE8888 half bridges (pushpull, lowside, or high-low) TLE8888_OUT22#89
|
||||
- pin: 34
|
||||
id: TLE8888_PIN_22
|
||||
class: outputs
|
||||
color: orange
|
||||
function: Fan relay (IDLE stepper coil 1-)
|
||||
ts_name: 34 - GP Out 2
|
||||
type: [gp_low, gp_pp]
|
||||
|
||||
# TLE8888 half bridges (pushpull, lowside, or high-low) TLE8888_OUT21#91
|
||||
- pin: 35
|
||||
id: TLE8888_PIN_21
|
||||
class: outputs
|
||||
color: orange
|
||||
function: Fuel pump relay (IDLE stepper coil 1+)
|
||||
ts_name: 35 - GP Out 1
|
||||
type: [gp_low, gp_pp]
|
||||
|
||||
- pin: 36
|
||||
id: [GPIOB_0, EFI_ADC_8]
|
||||
class: [switch_inputs, analog_inputs]
|
||||
color: orange left
|
||||
ts_name: 36 - AN volt 8
|
||||
type: av
|
||||
|
||||
- pin: 37
|
||||
id: TLE8888_PIN_1
|
||||
class: outputs
|
||||
color: grey right
|
||||
function: Injector 1
|
||||
ts_name: 37 - Injector 1
|
||||
type: inj
|
||||
|
||||
- pin: 38
|
||||
id: TLE8888_PIN_2
|
||||
class: outputs
|
||||
color: grey
|
||||
function: Injector 2
|
||||
ts_name: 38 - Injector 2
|
||||
type: inj
|
||||
|
||||
- pin: 40
|
||||
id: [GPIOB_1, EFI_ADC_9]
|
||||
class: [switch_inputs, analog_inputs]
|
||||
color: grey
|
||||
ts_name: 40 - AN volt 9
|
||||
type: av
|
||||
|
||||
- pin: 41
|
||||
id: TLE8888_PIN_3
|
||||
class: outputs
|
||||
color: brown right
|
||||
function: Injector 3
|
||||
ts_name: 41 - Injector 3
|
||||
type: inj
|
||||
|
||||
- pin: 42
|
||||
id: TLE8888_PIN_4
|
||||
class: outputs
|
||||
color: brown
|
||||
function: Injector 4
|
||||
ts_name: 42 - Injector 4
|
||||
type: inj
|
||||
|
||||
# TLE8888 half bridges (pushpull, lowside, or high-low) TLE8888_OUT24
|
||||
- pin: 43
|
||||
id: TLE8888_PIN_24
|
||||
class: outputs
|
||||
color: brown
|
||||
function: (IDLE stepper coil 2+)
|
||||
ts_name: 43 - GP Out 4
|
||||
type: [gp_low, gp_pp]
|
||||
|
||||
- pin: 45
|
||||
id: GPIOC_6
|
||||
class: event_inputs
|
||||
color: light green right
|
||||
function: Crank VR+/hall
|
||||
ts_name: 45 - VR/Hall Crank
|
||||
type: vr hall
|
||||
`;
|
||||
|
||||
function addRow(table, pin, pdiv) {
|
||||
var template = document.getElementById("table-template");
|
||||
var clone = template.content.cloneNode(true);
|
||||
var row = clone.querySelector(".data");
|
||||
var pdata = clone.querySelector(".pin-data");
|
||||
var idata = clone.querySelector(".id-data");
|
||||
var tdata = clone.querySelector(".type-data");
|
||||
var fdata = clone.querySelector(".function-data");
|
||||
var cdata = clone.querySelector(".color-data");
|
||||
pdata.textContent = pin.pin;
|
||||
idata.textContent = pin.id;
|
||||
tdata.textContent = pin.type
|
||||
fdata.textContent = pin.function;
|
||||
cdata.textContent = pin.color
|
||||
row.addEventListener('click', function(pin, pdiv) {
|
||||
clickPin(pin, pdiv);
|
||||
}.bind(null, pin, pdiv));
|
||||
table.appendChild(clone);
|
||||
}
|
||||
|
||||
function clickPin(pin, pdiv) {
|
||||
var table = document.getElementById("info-table").querySelector("tbody");
|
||||
table.innerHTML = "";
|
||||
if (Array.isArray(pin.id)) {
|
||||
var pinIds = pin.id.filter((value, index) => {
|
||||
return pin.id.indexOf(value) === index;
|
||||
});
|
||||
for (var i = 0; i < pinIds.length; i++) {
|
||||
addRow(table, {pin: pin.pin, id: pinIds[i], function: pin.function}, pdiv);
|
||||
}
|
||||
} else {
|
||||
addRow(table, pin, pdiv);
|
||||
}
|
||||
var pins = document.querySelectorAll(".pin-marker");
|
||||
for (var i = 0; i < pins.length; i++) {
|
||||
if (pins[i].dataset.type == pin.type) {
|
||||
pins[i].classList.add("highlight");
|
||||
} else {
|
||||
pins[i].classList.remove("highlight");
|
||||
}
|
||||
pins[i].classList.remove("selected");
|
||||
}
|
||||
pdiv.classList.add("selected");
|
||||
}
|
||||
|
||||
function adjustMarkers() {
|
||||
var cdiv = document.getElementById("connector-div");
|
||||
cdiv.style.width = document.getElementById("connector-img").clientWidth;
|
||||
var pins = document.querySelectorAll(".pin-marker");
|
||||
for (var i = 0; i < pins.length; i++) {
|
||||
var height = cdiv.clientHeight * 0.05;
|
||||
pins[i].style.height = height + "px";
|
||||
pins[i].style.width = height + "px";
|
||||
pins[i].style.marginTop = "-" + (height * 0.5) + "px";
|
||||
pins[i].style.marginLeft = "-" + (height * 0.5) + "px";
|
||||
pins[i].style.fontSize = (height * 0.5) + "px";
|
||||
}
|
||||
}
|
||||
|
||||
window.addEventListener('load', function() {
|
||||
var connector = YAML.parse(connectorYaml);
|
||||
document.getElementById("connector-img").addEventListener('load', function() {
|
||||
for (var i = 0; i < connector.pins.length; i++) {
|
||||
var pin = connector.pins[i];
|
||||
if (!pin.pin) {
|
||||
continue;
|
||||
}
|
||||
var pinfo;
|
||||
for (var ii = 0; ii < connector.info.pins.length; ii++) {
|
||||
if (connector.info.pins[ii].pin == pin.pin) {
|
||||
pinfo = connector.info.pins[ii];
|
||||
break;
|
||||
}
|
||||
}
|
||||
var cdiv = document.getElementById("connector-div");
|
||||
var template = document.getElementById("pin-template");
|
||||
var clone = template.content.cloneNode(true);
|
||||
var pdiv = clone.querySelector("div");
|
||||
var img = document.getElementById("connector-img");
|
||||
var imgHeight = img.naturalHeight;
|
||||
var imgWidth = img.naturalWidth;
|
||||
pdiv.textContent = pinfo.pin;
|
||||
pdiv.style.top = ((pinfo.y / imgHeight) * 100) + "%";
|
||||
pdiv.style.left = ((pinfo.x / imgWidth) * 100) + "%";
|
||||
pdiv.dataset.type = pin.type;
|
||||
pdiv.addEventListener("click", function(pin, pdiv) {
|
||||
clickPin(pin, pdiv);
|
||||
}.bind(null, pin, pdiv));
|
||||
cdiv.appendChild(pdiv);
|
||||
var fullTable = document.getElementById("pinout-table").querySelector("tbody");
|
||||
addRow(fullTable, connector.pins[i], pdiv);
|
||||
}
|
||||
adjustMarkers();
|
||||
});
|
||||
document.getElementById("connector-img").src = connector.info.image.file;
|
||||
});
|
||||
|
||||
window.addEventListener('resize', function() {
|
||||
adjustMarkers();
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<template id="pin-template">
|
||||
<div class="pin-marker"></div>
|
||||
</template>
|
||||
|
||||
<div id="connector-container">
|
||||
<div id="connector-div">
|
||||
<img id="connector-img"></img>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<template id="table-template">
|
||||
<tr class="data">
|
||||
<td class="pin-data"></td>
|
||||
<td class="id-data"></td>
|
||||
<td class="type-data"></td>
|
||||
<td class="function-data"></td>
|
||||
<td class="color-data"></td>
|
||||
</tr>
|
||||
</template>
|
||||
|
||||
<table id="info-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Pin Number</th>
|
||||
<th>Firmware ID</th>
|
||||
<th>Type</th>
|
||||
<th>Typical Function</th>
|
||||
<th>Pigtail Color</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
<h2>Full Pinout Table</h2>
|
||||
<table id="pinout-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Pin Number</th>
|
||||
<th>Firmware ID</th>
|
||||
<th>Type</th>
|
||||
<th>Typical Function</th>
|
||||
<th>Pigtail Color</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</body>
|
||||
</html>
|
After Width: | Height: | Size: 890 KiB |
|
@ -0,0 +1,326 @@
|
|||
<html>
|
||||
<head>
|
||||
|
||||
<style>
|
||||
.pin-marker {
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
border-radius: 50%;
|
||||
background-color: white;
|
||||
border: 2px blue solid;
|
||||
cursor: pointer;
|
||||
color: black;
|
||||
text-align: center;
|
||||
line-height: 200%;
|
||||
}
|
||||
|
||||
.pin-marker:hover {
|
||||
background-color: #f15a24;
|
||||
color: white;
|
||||
transform: scale(2);
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.pin-marker.highlight {
|
||||
border: 2px #f15a24 solid;
|
||||
}
|
||||
|
||||
.pin-marker.selected {
|
||||
background-color: #fc935a;
|
||||
}
|
||||
|
||||
#connector-container {
|
||||
width: 100%;
|
||||
height: 50%;
|
||||
overflow-x: scroll;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
#connector-div {
|
||||
height: 100%;
|
||||
position: relative;
|
||||
z-index: 0;
|
||||
}
|
||||
|
||||
#connector-img {
|
||||
height: 100%;
|
||||
z-index: 0;
|
||||
}
|
||||
|
||||
table {
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
border-collapse: collapse;
|
||||
width: clamp(100%, 100%, 1000px);
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
@media (min-width: 1000px) {
|
||||
table {
|
||||
font-size: 1rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1000px) {
|
||||
table {
|
||||
font-size: 3rem;
|
||||
}
|
||||
}
|
||||
|
||||
table tbody tr {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
table td, table th {
|
||||
border: 1px solid black;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
table tr:nth-child(even){
|
||||
background-color: #fc935a;
|
||||
}
|
||||
|
||||
table tr:hover {
|
||||
background-color: #f15a24;
|
||||
}
|
||||
|
||||
table th {
|
||||
padding-top: 12px;
|
||||
padding-bottom: 12px;
|
||||
text-align: left;
|
||||
background-color: #f15a24;
|
||||
color: black;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
html {
|
||||
background-color: black;
|
||||
color: white;
|
||||
}
|
||||
|
||||
table td, table th {
|
||||
border: 1px solid #ddd;
|
||||
}
|
||||
|
||||
table th {
|
||||
color: white
|
||||
}
|
||||
|
||||
table tr:nth-child(even){
|
||||
background-color: #230c00;
|
||||
color: white;
|
||||
}
|
||||
|
||||
table tr:hover {
|
||||
background-color: #f15a24;
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
<script type="text/javascript" src="yaml.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
var connectorYaml = `
|
||||
pins:
|
||||
- pin: J6
|
||||
id: GPIOE_0
|
||||
class: outputs
|
||||
ts_name: AUX J6 PE0
|
||||
|
||||
- pin: J10
|
||||
id: GPIOE_6
|
||||
class: outputs
|
||||
function: TIM9_CH2
|
||||
ts_name: AUX J10 PE6
|
||||
|
||||
- pin: J11
|
||||
id: GPIOE_5
|
||||
class: outputs
|
||||
function: TIM9_CH1
|
||||
ts_name: AUX J11 PE5
|
||||
|
||||
- pin: J18
|
||||
id: GPIOB_7
|
||||
class: outputs
|
||||
ts_name: AUX J18 PB7
|
||||
|
||||
- pin: AV6
|
||||
id: GPIOC_4
|
||||
class: outputs
|
||||
ts_name: AUX AV6 reuse
|
||||
|
||||
- pin: AV8
|
||||
id: GPIOB_0
|
||||
class: outputs
|
||||
ts_name: AUX AV8 reuse
|
||||
|
||||
- pin: AV9
|
||||
id: GPIOB_1
|
||||
class: outputs
|
||||
ts_name: AUX AV9 reuse
|
||||
|
||||
- pin: AV10
|
||||
id: GPIOA_4
|
||||
class: outputs
|
||||
ts_name: AUX AV10 reuse
|
||||
`;
|
||||
|
||||
function addRow(table, pin, pdiv) {
|
||||
var template = document.getElementById("table-template");
|
||||
var clone = template.content.cloneNode(true);
|
||||
var row = clone.querySelector(".data");
|
||||
var pdata = clone.querySelector(".pin-data");
|
||||
var idata = clone.querySelector(".id-data");
|
||||
var tdata = clone.querySelector(".type-data");
|
||||
var fdata = clone.querySelector(".function-data");
|
||||
var cdata = clone.querySelector(".color-data");
|
||||
pdata.textContent = pin.pin;
|
||||
idata.textContent = pin.id;
|
||||
tdata.textContent = pin.type
|
||||
fdata.textContent = pin.function;
|
||||
cdata.textContent = pin.color
|
||||
row.addEventListener('click', function(pin, pdiv) {
|
||||
clickPin(pin, pdiv);
|
||||
}.bind(null, pin, pdiv));
|
||||
table.appendChild(clone);
|
||||
}
|
||||
|
||||
function clickPin(pin, pdiv) {
|
||||
var table = document.getElementById("info-table").querySelector("tbody");
|
||||
table.innerHTML = "";
|
||||
if (Array.isArray(pin.id)) {
|
||||
var pinIds = pin.id.filter((value, index) => {
|
||||
return pin.id.indexOf(value) === index;
|
||||
});
|
||||
for (var i = 0; i < pinIds.length; i++) {
|
||||
addRow(table, {pin: pin.pin, id: pinIds[i], function: pin.function}, pdiv);
|
||||
}
|
||||
} else {
|
||||
addRow(table, pin, pdiv);
|
||||
}
|
||||
var pins = document.querySelectorAll(".pin-marker");
|
||||
for (var i = 0; i < pins.length; i++) {
|
||||
if (pins[i].dataset.type == pin.type) {
|
||||
pins[i].classList.add("highlight");
|
||||
} else {
|
||||
pins[i].classList.remove("highlight");
|
||||
}
|
||||
pins[i].classList.remove("selected");
|
||||
}
|
||||
pdiv.classList.add("selected");
|
||||
}
|
||||
|
||||
function adjustMarkers() {
|
||||
var cdiv = document.getElementById("connector-div");
|
||||
cdiv.style.width = document.getElementById("connector-img").clientWidth;
|
||||
var pins = document.querySelectorAll(".pin-marker");
|
||||
for (var i = 0; i < pins.length; i++) {
|
||||
var height = cdiv.clientHeight * 0.05;
|
||||
pins[i].style.height = height + "px";
|
||||
pins[i].style.width = height + "px";
|
||||
pins[i].style.marginTop = "-" + (height * 0.5) + "px";
|
||||
pins[i].style.marginLeft = "-" + (height * 0.5) + "px";
|
||||
pins[i].style.fontSize = (height * 0.5) + "px";
|
||||
}
|
||||
}
|
||||
|
||||
window.addEventListener('load', function() {
|
||||
var connector = YAML.parse(connectorYaml);
|
||||
document.getElementById("connector-img").addEventListener('load', function() {
|
||||
for (var i = 0; i < connector.pins.length; i++) {
|
||||
var pin = connector.pins[i];
|
||||
if (!pin.pin) {
|
||||
continue;
|
||||
}
|
||||
var pinfo;
|
||||
for (var ii = 0; ii < connector.info.pins.length; ii++) {
|
||||
if (connector.info.pins[ii].pin == pin.pin) {
|
||||
pinfo = connector.info.pins[ii];
|
||||
break;
|
||||
}
|
||||
}
|
||||
var cdiv = document.getElementById("connector-div");
|
||||
var template = document.getElementById("pin-template");
|
||||
var clone = template.content.cloneNode(true);
|
||||
var pdiv = clone.querySelector("div");
|
||||
var img = document.getElementById("connector-img");
|
||||
var imgHeight = img.naturalHeight;
|
||||
var imgWidth = img.naturalWidth;
|
||||
pdiv.textContent = pinfo.pin;
|
||||
pdiv.style.top = ((pinfo.y / imgHeight) * 100) + "%";
|
||||
pdiv.style.left = ((pinfo.x / imgWidth) * 100) + "%";
|
||||
pdiv.dataset.type = pin.type;
|
||||
pdiv.addEventListener("click", function(pin, pdiv) {
|
||||
clickPin(pin, pdiv);
|
||||
}.bind(null, pin, pdiv));
|
||||
cdiv.appendChild(pdiv);
|
||||
var fullTable = document.getElementById("pinout-table").querySelector("tbody");
|
||||
addRow(fullTable, connector.pins[i], pdiv);
|
||||
}
|
||||
adjustMarkers();
|
||||
});
|
||||
document.getElementById("connector-img").src = connector.info.image.file;
|
||||
});
|
||||
|
||||
window.addEventListener('resize', function() {
|
||||
adjustMarkers();
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<template id="pin-template">
|
||||
<div class="pin-marker"></div>
|
||||
</template>
|
||||
|
||||
<div id="connector-container">
|
||||
<div id="connector-div">
|
||||
<img id="connector-img"></img>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<template id="table-template">
|
||||
<tr class="data">
|
||||
<td class="pin-data"></td>
|
||||
<td class="id-data"></td>
|
||||
<td class="type-data"></td>
|
||||
<td class="function-data"></td>
|
||||
<td class="color-data"></td>
|
||||
</tr>
|
||||
</template>
|
||||
|
||||
<table id="info-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Pin Number</th>
|
||||
<th>Firmware ID</th>
|
||||
<th>Type</th>
|
||||
<th>Typical Function</th>
|
||||
<th>Pigtail Color</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
<h2>Full Pinout Table</h2>
|
||||
<table id="pinout-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Pin Number</th>
|
||||
<th>Firmware ID</th>
|
||||
<th>Type</th>
|
||||
<th>Typical Function</th>
|
||||
<th>Pigtail Color</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</body>
|
||||
</html>
|
After Width: | Height: | Size: 95 KiB |
|
@ -0,0 +1,482 @@
|
|||
<html>
|
||||
<head>
|
||||
|
||||
<style>
|
||||
.pin-marker {
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
border-radius: 50%;
|
||||
background-color: white;
|
||||
border: 2px blue solid;
|
||||
cursor: pointer;
|
||||
color: black;
|
||||
text-align: center;
|
||||
line-height: 200%;
|
||||
}
|
||||
|
||||
.pin-marker:hover {
|
||||
background-color: #f15a24;
|
||||
color: white;
|
||||
transform: scale(2);
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.pin-marker.highlight {
|
||||
border: 2px #f15a24 solid;
|
||||
}
|
||||
|
||||
.pin-marker.selected {
|
||||
background-color: #fc935a;
|
||||
}
|
||||
|
||||
#connector-container {
|
||||
width: 100%;
|
||||
height: 50%;
|
||||
overflow-x: scroll;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
#connector-div {
|
||||
height: 100%;
|
||||
position: relative;
|
||||
z-index: 0;
|
||||
}
|
||||
|
||||
#connector-img {
|
||||
height: 100%;
|
||||
z-index: 0;
|
||||
}
|
||||
|
||||
table {
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
border-collapse: collapse;
|
||||
width: clamp(100%, 100%, 1000px);
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
@media (min-width: 1000px) {
|
||||
table {
|
||||
font-size: 1rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1000px) {
|
||||
table {
|
||||
font-size: 3rem;
|
||||
}
|
||||
}
|
||||
|
||||
table tbody tr {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
table td, table th {
|
||||
border: 1px solid black;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
table tr:nth-child(even){
|
||||
background-color: #fc935a;
|
||||
}
|
||||
|
||||
table tr:hover {
|
||||
background-color: #f15a24;
|
||||
}
|
||||
|
||||
table th {
|
||||
padding-top: 12px;
|
||||
padding-bottom: 12px;
|
||||
text-align: left;
|
||||
background-color: #f15a24;
|
||||
color: black;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
html {
|
||||
background-color: black;
|
||||
color: white;
|
||||
}
|
||||
|
||||
table td, table th {
|
||||
border: 1px solid #ddd;
|
||||
}
|
||||
|
||||
table th {
|
||||
color: white
|
||||
}
|
||||
|
||||
table tr:nth-child(even){
|
||||
background-color: #230c00;
|
||||
color: white;
|
||||
}
|
||||
|
||||
table tr:hover {
|
||||
background-color: #f15a24;
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
<script type="text/javascript" src="yaml.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
var connectorYaml = `
|
||||
pins:
|
||||
- pin: 1
|
||||
id: [GPIOE_11, GPIOE_11]
|
||||
class: [event_inputs, switch_inputs]
|
||||
function: Digital trigger/switch input
|
||||
ts_name: Digital 2
|
||||
type: din
|
||||
|
||||
- pin: 2
|
||||
id: [GPIOE_12, GPIOE_12]
|
||||
class: [event_inputs, switch_inputs]
|
||||
function: Digital trigger/switch input
|
||||
ts_name: Digital 3
|
||||
type: din
|
||||
|
||||
- pin: 3
|
||||
id: [GPIOE_13, GPIOE_13]
|
||||
class: [event_inputs, switch_inputs]
|
||||
function: Digital trigger/switch input
|
||||
ts_name: Digital 4
|
||||
type: din
|
||||
|
||||
- pin: 4
|
||||
function: Variable Reluctance #2 positive
|
||||
type: vr
|
||||
|
||||
- id: GPIOE_8
|
||||
class: event_inputs
|
||||
ts_name: VR 2
|
||||
|
||||
- pin: 5
|
||||
function: Variable Reluctance #1 positive
|
||||
type: vr
|
||||
|
||||
- id: GPIOE_7
|
||||
class: event_inputs
|
||||
ts_name: VR 1
|
||||
|
||||
- pin: 6
|
||||
function: ETB 1 negative
|
||||
type: etb
|
||||
|
||||
- pin: 7
|
||||
function: ETB 1 positive
|
||||
type: etb
|
||||
|
||||
- pin: 8
|
||||
function: ETB 2 negative
|
||||
type: etb
|
||||
|
||||
- pin: 9
|
||||
id: [GPIOE_14, GPIOE_14]
|
||||
class: [event_inputs, switch_inputs]
|
||||
function: Digital trigger/switch input
|
||||
ts_name: Digital 5
|
||||
type: din
|
||||
|
||||
- pin: 10
|
||||
id: [GPIOC_6, GPIOC_6]
|
||||
class: [event_inputs, switch_inputs]
|
||||
function: Digital trigger/switch input
|
||||
ts_name: Digital 1
|
||||
type: din
|
||||
|
||||
- pin: 11
|
||||
id: [GPIOE_15, GPIOE_15]
|
||||
class: [event_inputs, switch_inputs]
|
||||
function: Digital trigger/switch input
|
||||
ts_name: Digital 6
|
||||
type: din
|
||||
|
||||
- pin: 12
|
||||
function: Variable Reluctance #2 negative
|
||||
type: vr
|
||||
|
||||
- pin: 13
|
||||
function: Variable Reluctance #1 negative
|
||||
type: vr
|
||||
|
||||
- pin: 14
|
||||
function: Reserved For Future Use
|
||||
|
||||
- pin: 15
|
||||
function: ETB 2 positive
|
||||
type: etb
|
||||
|
||||
- pin: 16
|
||||
function: CAN bus low
|
||||
type: can
|
||||
|
||||
- pin: 17
|
||||
function: CAN bus high
|
||||
type: can
|
||||
|
||||
- pin: 18
|
||||
id: EFI_ADC_7
|
||||
class: analog_inputs
|
||||
ts_name: Battery Sense
|
||||
function: Ignition power / ECU power source. Connect this pin to the output of your ignition switch.
|
||||
type: 12v
|
||||
|
||||
- pin: 19
|
||||
function: Power GND
|
||||
type: gnd
|
||||
|
||||
- pin: 20
|
||||
function: Power GND
|
||||
type: gnd
|
||||
|
||||
- pin: 21
|
||||
function: Reserved For Future Use
|
||||
|
||||
- pin: 22
|
||||
function: Reserved For Future Use
|
||||
|
||||
- pin: 23
|
||||
function: Power supply from main relay. Connect this pin to the output of the car's main relay that also powers injectors, coils, etc. Supplies power to electronic throttle drivers and high side outputs.
|
||||
type: 12v
|
||||
|
||||
info:
|
||||
image:
|
||||
file: black23.jpg
|
||||
pins:
|
||||
- pin: 1
|
||||
x: 239
|
||||
y: 312
|
||||
- pin: 2
|
||||
x: 343
|
||||
y: 312
|
||||
- pin: 3
|
||||
x: 447
|
||||
y: 312
|
||||
- pin: 4
|
||||
x: 551
|
||||
y: 312
|
||||
- pin: 5
|
||||
x: 655
|
||||
y: 312
|
||||
- pin: 6
|
||||
x: 759
|
||||
y: 312
|
||||
- pin: 7
|
||||
x: 863
|
||||
y: 312
|
||||
- pin: 8
|
||||
x: 967
|
||||
y: 312
|
||||
- pin: 9
|
||||
x: 291
|
||||
y: 412
|
||||
- pin: 10
|
||||
x: 395
|
||||
y: 412
|
||||
- pin: 11
|
||||
x: 499
|
||||
y: 412
|
||||
- pin: 12
|
||||
x: 603
|
||||
y: 412
|
||||
- pin: 13
|
||||
x: 707
|
||||
y: 412
|
||||
- pin: 14
|
||||
x: 811
|
||||
y: 412
|
||||
- pin: 15
|
||||
x: 915
|
||||
y: 412
|
||||
- pin: 16
|
||||
x: 239
|
||||
y: 512
|
||||
- pin: 17
|
||||
x: 343
|
||||
y: 512
|
||||
- pin: 18
|
||||
x: 447
|
||||
y: 512
|
||||
- pin: 19
|
||||
x: 551
|
||||
y: 512
|
||||
- pin: 20
|
||||
x: 655
|
||||
y: 512
|
||||
- pin: 21
|
||||
x: 759
|
||||
y: 512
|
||||
- pin: 22
|
||||
x: 863
|
||||
y: 512
|
||||
- pin: 23
|
||||
x: 967
|
||||
y: 512
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
`;
|
||||
|
||||
function addRow(table, pin, pdiv) {
|
||||
var template = document.getElementById("table-template");
|
||||
var clone = template.content.cloneNode(true);
|
||||
var row = clone.querySelector(".data");
|
||||
var pdata = clone.querySelector(".pin-data");
|
||||
var idata = clone.querySelector(".id-data");
|
||||
var tdata = clone.querySelector(".type-data");
|
||||
var fdata = clone.querySelector(".function-data");
|
||||
var cdata = clone.querySelector(".color-data");
|
||||
pdata.textContent = pin.pin;
|
||||
idata.textContent = pin.id;
|
||||
tdata.textContent = pin.type
|
||||
fdata.textContent = pin.function;
|
||||
cdata.textContent = pin.color
|
||||
row.addEventListener('click', function(pin, pdiv) {
|
||||
clickPin(pin, pdiv);
|
||||
}.bind(null, pin, pdiv));
|
||||
table.appendChild(clone);
|
||||
}
|
||||
|
||||
function clickPin(pin, pdiv) {
|
||||
var table = document.getElementById("info-table").querySelector("tbody");
|
||||
table.innerHTML = "";
|
||||
if (Array.isArray(pin.id)) {
|
||||
var pinIds = pin.id.filter((value, index) => {
|
||||
return pin.id.indexOf(value) === index;
|
||||
});
|
||||
for (var i = 0; i < pinIds.length; i++) {
|
||||
addRow(table, {pin: pin.pin, id: pinIds[i], function: pin.function}, pdiv);
|
||||
}
|
||||
} else {
|
||||
addRow(table, pin, pdiv);
|
||||
}
|
||||
var pins = document.querySelectorAll(".pin-marker");
|
||||
for (var i = 0; i < pins.length; i++) {
|
||||
if (pins[i].dataset.type == pin.type) {
|
||||
pins[i].classList.add("highlight");
|
||||
} else {
|
||||
pins[i].classList.remove("highlight");
|
||||
}
|
||||
pins[i].classList.remove("selected");
|
||||
}
|
||||
pdiv.classList.add("selected");
|
||||
}
|
||||
|
||||
function adjustMarkers() {
|
||||
var cdiv = document.getElementById("connector-div");
|
||||
cdiv.style.width = document.getElementById("connector-img").clientWidth;
|
||||
var pins = document.querySelectorAll(".pin-marker");
|
||||
for (var i = 0; i < pins.length; i++) {
|
||||
var height = cdiv.clientHeight * 0.05;
|
||||
pins[i].style.height = height + "px";
|
||||
pins[i].style.width = height + "px";
|
||||
pins[i].style.marginTop = "-" + (height * 0.5) + "px";
|
||||
pins[i].style.marginLeft = "-" + (height * 0.5) + "px";
|
||||
pins[i].style.fontSize = (height * 0.5) + "px";
|
||||
}
|
||||
}
|
||||
|
||||
window.addEventListener('load', function() {
|
||||
var connector = YAML.parse(connectorYaml);
|
||||
document.getElementById("connector-img").addEventListener('load', function() {
|
||||
for (var i = 0; i < connector.pins.length; i++) {
|
||||
var pin = connector.pins[i];
|
||||
if (!pin.pin) {
|
||||
continue;
|
||||
}
|
||||
var pinfo;
|
||||
for (var ii = 0; ii < connector.info.pins.length; ii++) {
|
||||
if (connector.info.pins[ii].pin == pin.pin) {
|
||||
pinfo = connector.info.pins[ii];
|
||||
break;
|
||||
}
|
||||
}
|
||||
var cdiv = document.getElementById("connector-div");
|
||||
var template = document.getElementById("pin-template");
|
||||
var clone = template.content.cloneNode(true);
|
||||
var pdiv = clone.querySelector("div");
|
||||
var img = document.getElementById("connector-img");
|
||||
var imgHeight = img.naturalHeight;
|
||||
var imgWidth = img.naturalWidth;
|
||||
pdiv.textContent = pinfo.pin;
|
||||
pdiv.style.top = ((pinfo.y / imgHeight) * 100) + "%";
|
||||
pdiv.style.left = ((pinfo.x / imgWidth) * 100) + "%";
|
||||
pdiv.dataset.type = pin.type;
|
||||
pdiv.addEventListener("click", function(pin, pdiv) {
|
||||
clickPin(pin, pdiv);
|
||||
}.bind(null, pin, pdiv));
|
||||
cdiv.appendChild(pdiv);
|
||||
var fullTable = document.getElementById("pinout-table").querySelector("tbody");
|
||||
addRow(fullTable, connector.pins[i], pdiv);
|
||||
}
|
||||
adjustMarkers();
|
||||
});
|
||||
document.getElementById("connector-img").src = connector.info.image.file;
|
||||
});
|
||||
|
||||
window.addEventListener('resize', function() {
|
||||
adjustMarkers();
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<template id="pin-template">
|
||||
<div class="pin-marker"></div>
|
||||
</template>
|
||||
|
||||
<div id="connector-container">
|
||||
<div id="connector-div">
|
||||
<img id="connector-img"></img>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<template id="table-template">
|
||||
<tr class="data">
|
||||
<td class="pin-data"></td>
|
||||
<td class="id-data"></td>
|
||||
<td class="type-data"></td>
|
||||
<td class="function-data"></td>
|
||||
<td class="color-data"></td>
|
||||
</tr>
|
||||
</template>
|
||||
|
||||
<table id="info-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Pin Number</th>
|
||||
<th>Firmware ID</th>
|
||||
<th>Type</th>
|
||||
<th>Typical Function</th>
|
||||
<th>Pigtail Color</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
<h2>Full Pinout Table</h2>
|
||||
<table id="pinout-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Pin Number</th>
|
||||
<th>Firmware ID</th>
|
||||
<th>Type</th>
|
||||
<th>Typical Function</th>
|
||||
<th>Pigtail Color</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</body>
|
||||
</html>
|
After Width: | Height: | Size: 378 KiB |
|
@ -0,0 +1,630 @@
|
|||
<html>
|
||||
<head>
|
||||
|
||||
<style>
|
||||
.pin-marker {
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
border-radius: 50%;
|
||||
background-color: white;
|
||||
border: 2px blue solid;
|
||||
cursor: pointer;
|
||||
color: black;
|
||||
text-align: center;
|
||||
line-height: 200%;
|
||||
}
|
||||
|
||||
.pin-marker:hover {
|
||||
background-color: #f15a24;
|
||||
color: white;
|
||||
transform: scale(2);
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.pin-marker.highlight {
|
||||
border: 2px #f15a24 solid;
|
||||
}
|
||||
|
||||
.pin-marker.selected {
|
||||
background-color: #fc935a;
|
||||
}
|
||||
|
||||
#connector-container {
|
||||
width: 100%;
|
||||
height: 50%;
|
||||
overflow-x: scroll;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
#connector-div {
|
||||
height: 100%;
|
||||
position: relative;
|
||||
z-index: 0;
|
||||
}
|
||||
|
||||
#connector-img {
|
||||
height: 100%;
|
||||
z-index: 0;
|
||||
}
|
||||
|
||||
table {
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
border-collapse: collapse;
|
||||
width: clamp(100%, 100%, 1000px);
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
@media (min-width: 1000px) {
|
||||
table {
|
||||
font-size: 1rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1000px) {
|
||||
table {
|
||||
font-size: 3rem;
|
||||
}
|
||||
}
|
||||
|
||||
table tbody tr {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
table td, table th {
|
||||
border: 1px solid black;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
table tr:nth-child(even){
|
||||
background-color: #fc935a;
|
||||
}
|
||||
|
||||
table tr:hover {
|
||||
background-color: #f15a24;
|
||||
}
|
||||
|
||||
table th {
|
||||
padding-top: 12px;
|
||||
padding-bottom: 12px;
|
||||
text-align: left;
|
||||
background-color: #f15a24;
|
||||
color: black;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
html {
|
||||
background-color: black;
|
||||
color: white;
|
||||
}
|
||||
|
||||
table td, table th {
|
||||
border: 1px solid #ddd;
|
||||
}
|
||||
|
||||
table th {
|
||||
color: white
|
||||
}
|
||||
|
||||
table tr:nth-child(even){
|
||||
background-color: #230c00;
|
||||
color: white;
|
||||
}
|
||||
|
||||
table tr:hover {
|
||||
background-color: #f15a24;
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
<script type="text/javascript" src="yaml.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
var connectorYaml = `
|
||||
pins:
|
||||
- pin: 1
|
||||
id: GPIOA_8
|
||||
function: output
|
||||
class: outputs
|
||||
ts_name: Highside 2
|
||||
type: hs
|
||||
|
||||
- pin: 2
|
||||
id: GPIOA_9
|
||||
function: output
|
||||
class: outputs
|
||||
ts_name: Highside 1
|
||||
type: hs
|
||||
|
||||
- pin: 3
|
||||
id: GPIOD_7
|
||||
function: Injector #1
|
||||
class: outputs
|
||||
ts_name: Lowside 1
|
||||
type: ls
|
||||
|
||||
- pin: 4
|
||||
id: GPIOG_10
|
||||
function: Injector #3
|
||||
class: outputs
|
||||
ts_name: Lowside 3
|
||||
type: ls
|
||||
|
||||
- pin: 5
|
||||
id: GPIOG_12
|
||||
function: Injector #5
|
||||
class: outputs
|
||||
ts_name: Lowside 5
|
||||
type: ls
|
||||
|
||||
- pin: 6
|
||||
id: GPIOG_13
|
||||
function: Injector #6
|
||||
class: outputs
|
||||
ts_name: Lowside 6
|
||||
type: ls
|
||||
|
||||
- pin: 7
|
||||
id: GPIOG_14
|
||||
function: Injector #7
|
||||
class: outputs
|
||||
ts_name: Lowside 7
|
||||
type: ls
|
||||
|
||||
- pin: 8
|
||||
id: GPIOB_5
|
||||
function: Injector #9
|
||||
class: outputs
|
||||
ts_name: Lowside 9
|
||||
type: ls
|
||||
|
||||
- pin: 9
|
||||
id: GPIOB_7
|
||||
function: Injector #11
|
||||
class: outputs
|
||||
ts_name: Lowside 11
|
||||
type: ls
|
||||
|
||||
- pin: 10
|
||||
id: GPIOB_9
|
||||
function: main relay
|
||||
class: outputs
|
||||
ts_name: Lowside 13
|
||||
type: ls
|
||||
|
||||
- pin: 11
|
||||
id: GPIOE_0
|
||||
function: Lowside output
|
||||
class: outputs
|
||||
ts_name: Lowside 14
|
||||
type: ls
|
||||
|
||||
- pin: 12
|
||||
id: GPIOE_1
|
||||
function: radiator fan relay
|
||||
class: outputs
|
||||
ts_name: Lowside 15
|
||||
type: ls
|
||||
|
||||
- pin: 13
|
||||
id: GPIOD_15
|
||||
function: output
|
||||
class: outputs
|
||||
ts_name: Highside 3
|
||||
type: hs
|
||||
|
||||
- pin: 14
|
||||
id: GPIOD_14
|
||||
function: output
|
||||
class: outputs
|
||||
ts_name: Highside 4
|
||||
type: hs
|
||||
|
||||
- pin: 15
|
||||
id: GPIOG_9
|
||||
function: Injector #2
|
||||
class: outputs
|
||||
ts_name: Lowside 2
|
||||
type: ls
|
||||
|
||||
- pin: 16
|
||||
id: GPIOG_11
|
||||
function: Injector #4
|
||||
class: outputs
|
||||
ts_name: Lowside 4
|
||||
type: ls
|
||||
|
||||
- pin: 17
|
||||
function: Power GND
|
||||
type: gnd
|
||||
|
||||
- pin: 18
|
||||
function: Power GND
|
||||
type: gnd
|
||||
|
||||
- pin: 19
|
||||
id: GPIOB_4
|
||||
function: Injector #8
|
||||
class: outputs
|
||||
ts_name: Lowside 8
|
||||
type: ls
|
||||
|
||||
- pin: 20
|
||||
id: GPIOB_6
|
||||
function: Injector #10
|
||||
class: outputs
|
||||
ts_name: Lowside 10
|
||||
type: ls
|
||||
|
||||
- pin: 21
|
||||
id: GPIOB_8
|
||||
function: Injector #12
|
||||
class: outputs
|
||||
ts_name: Lowside 12
|
||||
type: ls
|
||||
|
||||
- pin: 22
|
||||
id: GPIOC_9
|
||||
function: Ignition cylinder 3
|
||||
class: outputs
|
||||
ts_name: Ign 3
|
||||
type: hl
|
||||
|
||||
- pin: 23
|
||||
id: GPIOE_2
|
||||
function: Fuel Pump
|
||||
class: outputs
|
||||
ts_name: Lowside 16
|
||||
type: ls
|
||||
|
||||
- pin: 24
|
||||
function: Power GND
|
||||
type: gnd
|
||||
|
||||
- pin: 25
|
||||
id: GPIOG_2
|
||||
function: Ignition cylinder 12
|
||||
class: outputs
|
||||
ts_name: Ign 12
|
||||
type: hl
|
||||
|
||||
- pin: 26
|
||||
id: GPIOG_3
|
||||
function: Ignition cylinder 11
|
||||
class: outputs
|
||||
ts_name: Ign 11
|
||||
type: hl
|
||||
|
||||
- pin: 27
|
||||
id: GPIOG_4
|
||||
function: Ignition cylinder 10
|
||||
class: outputs
|
||||
ts_name: Ign 10
|
||||
type: hl
|
||||
|
||||
- pin: 28
|
||||
id: GPIOG_5
|
||||
function: Ignition cylinder 9
|
||||
class: outputs
|
||||
ts_name: Ign 9
|
||||
type: hl
|
||||
|
||||
- pin: 29
|
||||
id: GPIOG_6
|
||||
function: Ignition cylinder 8
|
||||
class: outputs
|
||||
ts_name: Ign 8
|
||||
type: hl
|
||||
|
||||
- pin: 30
|
||||
id: GPIOG_7
|
||||
function: Ignition cylinder 7
|
||||
class: outputs
|
||||
ts_name: Ign 7
|
||||
type: hl
|
||||
|
||||
- pin: 31
|
||||
id: GPIOG_8
|
||||
function: Ignition cylinder 6
|
||||
class: outputs
|
||||
ts_name: Ign 6
|
||||
type: hl
|
||||
|
||||
- pin: 32
|
||||
id: GPIOC_7
|
||||
function: Ignition cylinder 5
|
||||
class: outputs
|
||||
ts_name: Ign 5
|
||||
type: hl
|
||||
|
||||
- pin: 33
|
||||
id: GPIOC_8
|
||||
function: Ignition cylinder 4
|
||||
class: outputs
|
||||
ts_name: Ign 4
|
||||
type: hl
|
||||
|
||||
- pin: 34
|
||||
id: GPIOD_3
|
||||
function: Ignition cylinder 2
|
||||
class: outputs
|
||||
ts_name: Ign 2
|
||||
type: hl
|
||||
|
||||
- pin: 35
|
||||
id: GPIOD_4
|
||||
function: Ignition cylinder 1
|
||||
class: outputs
|
||||
ts_name: Ign 1
|
||||
type: hl
|
||||
|
||||
info:
|
||||
image:
|
||||
file: black35.jpg
|
||||
pins:
|
||||
- pin: 1
|
||||
x: 294
|
||||
y: 300
|
||||
- pin: 2
|
||||
x: 398
|
||||
y: 300
|
||||
- pin: 3
|
||||
x: 502
|
||||
y: 300
|
||||
- pin: 4
|
||||
x: 606
|
||||
y: 300
|
||||
- pin: 5
|
||||
x: 710
|
||||
y: 300
|
||||
- pin: 6
|
||||
x: 814
|
||||
y: 300
|
||||
- pin: 7
|
||||
x: 918
|
||||
y: 300
|
||||
- pin: 8
|
||||
x: 1022
|
||||
y: 300
|
||||
- pin: 9
|
||||
x: 1126
|
||||
y: 300
|
||||
- pin: 10
|
||||
x: 1230
|
||||
y: 300
|
||||
- pin: 11
|
||||
x: 1334
|
||||
y: 300
|
||||
- pin: 12
|
||||
x: 1438
|
||||
y: 300
|
||||
- pin: 13
|
||||
x: 346
|
||||
y: 405
|
||||
- pin: 14
|
||||
x: 450
|
||||
y: 405
|
||||
- pin: 15
|
||||
x: 554
|
||||
y: 405
|
||||
- pin: 16
|
||||
x: 658
|
||||
y: 405
|
||||
- pin: 17
|
||||
x: 762
|
||||
y: 405
|
||||
- pin: 18
|
||||
x: 866
|
||||
y: 405
|
||||
- pin: 19
|
||||
x: 970
|
||||
y: 405
|
||||
- pin: 20
|
||||
x: 1074
|
||||
y: 405
|
||||
- pin: 21
|
||||
x: 1178
|
||||
y: 405
|
||||
- pin: 22
|
||||
x: 1282
|
||||
y: 405
|
||||
- pin: 23
|
||||
x: 1386
|
||||
y: 405
|
||||
- pin: 24
|
||||
x: 294
|
||||
y: 510
|
||||
- pin: 25
|
||||
x: 398
|
||||
y: 510
|
||||
- pin: 26
|
||||
x: 502
|
||||
y: 510
|
||||
- pin: 27
|
||||
x: 606
|
||||
y: 510
|
||||
- pin: 28
|
||||
x: 710
|
||||
y: 510
|
||||
- pin: 29
|
||||
x: 814
|
||||
y: 510
|
||||
- pin: 30
|
||||
x: 918
|
||||
y: 510
|
||||
- pin: 31
|
||||
x: 1022
|
||||
y: 510
|
||||
- pin: 32
|
||||
x: 1126
|
||||
y: 510
|
||||
- pin: 33
|
||||
x: 1230
|
||||
y: 510
|
||||
- pin: 34
|
||||
x: 1334
|
||||
y: 510
|
||||
- pin: 35
|
||||
x: 1438
|
||||
y: 510
|
||||
`;
|
||||
|
||||
function addRow(table, pin, pdiv) {
|
||||
var template = document.getElementById("table-template");
|
||||
var clone = template.content.cloneNode(true);
|
||||
var row = clone.querySelector(".data");
|
||||
var pdata = clone.querySelector(".pin-data");
|
||||
var idata = clone.querySelector(".id-data");
|
||||
var tdata = clone.querySelector(".type-data");
|
||||
var fdata = clone.querySelector(".function-data");
|
||||
var cdata = clone.querySelector(".color-data");
|
||||
pdata.textContent = pin.pin;
|
||||
idata.textContent = pin.id;
|
||||
tdata.textContent = pin.type
|
||||
fdata.textContent = pin.function;
|
||||
cdata.textContent = pin.color
|
||||
row.addEventListener('click', function(pin, pdiv) {
|
||||
clickPin(pin, pdiv);
|
||||
}.bind(null, pin, pdiv));
|
||||
table.appendChild(clone);
|
||||
}
|
||||
|
||||
function clickPin(pin, pdiv) {
|
||||
var table = document.getElementById("info-table").querySelector("tbody");
|
||||
table.innerHTML = "";
|
||||
if (Array.isArray(pin.id)) {
|
||||
var pinIds = pin.id.filter((value, index) => {
|
||||
return pin.id.indexOf(value) === index;
|
||||
});
|
||||
for (var i = 0; i < pinIds.length; i++) {
|
||||
addRow(table, {pin: pin.pin, id: pinIds[i], function: pin.function}, pdiv);
|
||||
}
|
||||
} else {
|
||||
addRow(table, pin, pdiv);
|
||||
}
|
||||
var pins = document.querySelectorAll(".pin-marker");
|
||||
for (var i = 0; i < pins.length; i++) {
|
||||
if (pins[i].dataset.type == pin.type) {
|
||||
pins[i].classList.add("highlight");
|
||||
} else {
|
||||
pins[i].classList.remove("highlight");
|
||||
}
|
||||
pins[i].classList.remove("selected");
|
||||
}
|
||||
pdiv.classList.add("selected");
|
||||
}
|
||||
|
||||
function adjustMarkers() {
|
||||
var cdiv = document.getElementById("connector-div");
|
||||
cdiv.style.width = document.getElementById("connector-img").clientWidth;
|
||||
var pins = document.querySelectorAll(".pin-marker");
|
||||
for (var i = 0; i < pins.length; i++) {
|
||||
var height = cdiv.clientHeight * 0.05;
|
||||
pins[i].style.height = height + "px";
|
||||
pins[i].style.width = height + "px";
|
||||
pins[i].style.marginTop = "-" + (height * 0.5) + "px";
|
||||
pins[i].style.marginLeft = "-" + (height * 0.5) + "px";
|
||||
pins[i].style.fontSize = (height * 0.5) + "px";
|
||||
}
|
||||
}
|
||||
|
||||
window.addEventListener('load', function() {
|
||||
var connector = YAML.parse(connectorYaml);
|
||||
document.getElementById("connector-img").addEventListener('load', function() {
|
||||
for (var i = 0; i < connector.pins.length; i++) {
|
||||
var pin = connector.pins[i];
|
||||
if (!pin.pin) {
|
||||
continue;
|
||||
}
|
||||
var pinfo;
|
||||
for (var ii = 0; ii < connector.info.pins.length; ii++) {
|
||||
if (connector.info.pins[ii].pin == pin.pin) {
|
||||
pinfo = connector.info.pins[ii];
|
||||
break;
|
||||
}
|
||||
}
|
||||
var cdiv = document.getElementById("connector-div");
|
||||
var template = document.getElementById("pin-template");
|
||||
var clone = template.content.cloneNode(true);
|
||||
var pdiv = clone.querySelector("div");
|
||||
var img = document.getElementById("connector-img");
|
||||
var imgHeight = img.naturalHeight;
|
||||
var imgWidth = img.naturalWidth;
|
||||
pdiv.textContent = pinfo.pin;
|
||||
pdiv.style.top = ((pinfo.y / imgHeight) * 100) + "%";
|
||||
pdiv.style.left = ((pinfo.x / imgWidth) * 100) + "%";
|
||||
pdiv.dataset.type = pin.type;
|
||||
pdiv.addEventListener("click", function(pin, pdiv) {
|
||||
clickPin(pin, pdiv);
|
||||
}.bind(null, pin, pdiv));
|
||||
cdiv.appendChild(pdiv);
|
||||
var fullTable = document.getElementById("pinout-table").querySelector("tbody");
|
||||
addRow(fullTable, connector.pins[i], pdiv);
|
||||
}
|
||||
adjustMarkers();
|
||||
});
|
||||
document.getElementById("connector-img").src = connector.info.image.file;
|
||||
});
|
||||
|
||||
window.addEventListener('resize', function() {
|
||||
adjustMarkers();
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<template id="pin-template">
|
||||
<div class="pin-marker"></div>
|
||||
</template>
|
||||
|
||||
<div id="connector-container">
|
||||
<div id="connector-div">
|
||||
<img id="connector-img"></img>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<template id="table-template">
|
||||
<tr class="data">
|
||||
<td class="pin-data"></td>
|
||||
<td class="id-data"></td>
|
||||
<td class="type-data"></td>
|
||||
<td class="function-data"></td>
|
||||
<td class="color-data"></td>
|
||||
</tr>
|
||||
</template>
|
||||
|
||||
<table id="info-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Pin Number</th>
|
||||
<th>Firmware ID</th>
|
||||
<th>Type</th>
|
||||
<th>Typical Function</th>
|
||||
<th>Pigtail Color</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
<h2>Full Pinout Table</h2>
|
||||
<table id="pinout-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Pin Number</th>
|
||||
<th>Firmware ID</th>
|
||||
<th>Type</th>
|
||||
<th>Typical Function</th>
|
||||
<th>Pigtail Color</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</body>
|
||||
</html>
|
After Width: | Height: | Size: 422 KiB |
|
@ -0,0 +1,578 @@
|
|||
<html>
|
||||
<head>
|
||||
|
||||
<style>
|
||||
.pin-marker {
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
border-radius: 50%;
|
||||
background-color: white;
|
||||
border: 2px blue solid;
|
||||
cursor: pointer;
|
||||
color: black;
|
||||
text-align: center;
|
||||
line-height: 200%;
|
||||
}
|
||||
|
||||
.pin-marker:hover {
|
||||
background-color: #f15a24;
|
||||
color: white;
|
||||
transform: scale(2);
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.pin-marker.highlight {
|
||||
border: 2px #f15a24 solid;
|
||||
}
|
||||
|
||||
.pin-marker.selected {
|
||||
background-color: #fc935a;
|
||||
}
|
||||
|
||||
#connector-container {
|
||||
width: 100%;
|
||||
height: 50%;
|
||||
overflow-x: scroll;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
#connector-div {
|
||||
height: 100%;
|
||||
position: relative;
|
||||
z-index: 0;
|
||||
}
|
||||
|
||||
#connector-img {
|
||||
height: 100%;
|
||||
z-index: 0;
|
||||
}
|
||||
|
||||
table {
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
border-collapse: collapse;
|
||||
width: clamp(100%, 100%, 1000px);
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
@media (min-width: 1000px) {
|
||||
table {
|
||||
font-size: 1rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1000px) {
|
||||
table {
|
||||
font-size: 3rem;
|
||||
}
|
||||
}
|
||||
|
||||
table tbody tr {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
table td, table th {
|
||||
border: 1px solid black;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
table tr:nth-child(even){
|
||||
background-color: #fc935a;
|
||||
}
|
||||
|
||||
table tr:hover {
|
||||
background-color: #f15a24;
|
||||
}
|
||||
|
||||
table th {
|
||||
padding-top: 12px;
|
||||
padding-bottom: 12px;
|
||||
text-align: left;
|
||||
background-color: #f15a24;
|
||||
color: black;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
html {
|
||||
background-color: black;
|
||||
color: white;
|
||||
}
|
||||
|
||||
table td, table th {
|
||||
border: 1px solid #ddd;
|
||||
}
|
||||
|
||||
table th {
|
||||
color: white
|
||||
}
|
||||
|
||||
table tr:nth-child(even){
|
||||
background-color: #230c00;
|
||||
color: white;
|
||||
}
|
||||
|
||||
table tr:hover {
|
||||
background-color: #f15a24;
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
<script type="text/javascript" src="yaml.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
var connectorYaml = `
|
||||
pins:
|
||||
- pin: 1
|
||||
function: Sensor GND
|
||||
type: sgnd
|
||||
|
||||
- pin: 2
|
||||
function: Sensor GND
|
||||
type: sgnd
|
||||
|
||||
- pin: 3
|
||||
function: Sensor GND
|
||||
type: sgnd
|
||||
|
||||
- pin: 4
|
||||
function: Sensor GND
|
||||
type: sgnd
|
||||
|
||||
- pin: 5
|
||||
function: Sensor GND
|
||||
type: sgnd
|
||||
|
||||
- pin: 6
|
||||
function: Sensor GND
|
||||
type: sgnd
|
||||
|
||||
- pin: 7
|
||||
function: Sensor GND
|
||||
type: sgnd
|
||||
|
||||
- pin: 8
|
||||
function: Sensor GND
|
||||
type: sgnd
|
||||
|
||||
- pin: 9
|
||||
function: Analog Voltage +5 supply #1
|
||||
type: 5v
|
||||
|
||||
- pin: 10
|
||||
function: Analog Voltage +5 supply #2
|
||||
type: 5v
|
||||
|
||||
- pin: 11
|
||||
function: 12V protected output for sensors
|
||||
type: 12v
|
||||
|
||||
- pin: 12
|
||||
function: 12V protected output for sensors
|
||||
type: 12v
|
||||
|
||||
- pin: 13
|
||||
id: [GPIOC_0, EFI_ADC_10]
|
||||
class: [switch_inputs, analog_inputs]
|
||||
ts_name: Analog Volt 1
|
||||
function: Analog Voltage Input #1
|
||||
type: av
|
||||
|
||||
- pin: 14
|
||||
id: [GPIOC_2, EFI_ADC_12]
|
||||
class: [switch_inputs, analog_inputs]
|
||||
ts_name: Analog Volt 3
|
||||
function: Analog Voltage Input #3
|
||||
type: av
|
||||
|
||||
- pin: 15
|
||||
id: [GPIOA_0, EFI_ADC_0]
|
||||
class: [switch_inputs, analog_inputs]
|
||||
ts_name: Analog Volt 5
|
||||
function: Analog Voltage Input #5
|
||||
type: av
|
||||
|
||||
- pin: 16
|
||||
id: [GPIOA_2, EFI_ADC_2]
|
||||
class: [switch_inputs, analog_inputs]
|
||||
ts_name: Analog Volt 7
|
||||
function: Analog Voltage Input #7
|
||||
type: av
|
||||
|
||||
- pin: 17
|
||||
id: [GPIOA_4, EFI_ADC_4]
|
||||
class: [switch_inputs, analog_inputs]
|
||||
ts_name: Analog Volt 9
|
||||
function: Analog Voltage Input #9
|
||||
type: av
|
||||
|
||||
- pin: 18
|
||||
id: [GPIOA_6, EFI_ADC_6]
|
||||
class: [switch_inputs, analog_inputs]
|
||||
ts_name: Analog Volt 11
|
||||
function: Analog Voltage Input #11
|
||||
type: av
|
||||
|
||||
- pin: 19
|
||||
id: [GPIOC_4, EFI_ADC_14]
|
||||
class: [switch_inputs, analog_inputs]
|
||||
ts_name: Analog Temp 1
|
||||
function: Analog Thermistor Input #1
|
||||
type: at
|
||||
|
||||
- pin: 20
|
||||
id: [GPIOB_0, EFI_ADC_8]
|
||||
class: [switch_inputs, analog_inputs]
|
||||
ts_name: Analog Temp 3
|
||||
function: Analog Thermistor Input #3
|
||||
type: at
|
||||
|
||||
- pin: 21
|
||||
function: Analog Voltage +5 supply #1
|
||||
type: 5v
|
||||
|
||||
- pin: 22
|
||||
function: Analog Voltage +5 supply #2
|
||||
type: 5v
|
||||
|
||||
- pin: 23
|
||||
function: Sensor GND
|
||||
type: sgnd
|
||||
|
||||
- pin: 24
|
||||
id: [GPIOC_1, EFI_ADC_11]
|
||||
class: [switch_inputs, analog_inputs]
|
||||
ts_name: Analog Volt 2
|
||||
function: Analog Voltage Input #2
|
||||
type: av
|
||||
|
||||
- pin: 25
|
||||
id: [GPIOC_3, EFI_ADC_13]
|
||||
class: [switch_inputs, analog_inputs]
|
||||
ts_name: Analog Volt 4
|
||||
function: Analog Voltage Input #4
|
||||
type: av
|
||||
|
||||
- pin: 26
|
||||
id: [GPIOA_1, EFI_ADC_1]
|
||||
class: [switch_inputs, analog_inputs]
|
||||
ts_name: Analog Volt 6
|
||||
function: Analog Voltage Input #6
|
||||
type: av
|
||||
|
||||
- pin: 27
|
||||
id: [GPIOA_3, EFI_ADC_3]
|
||||
class: [switch_inputs, analog_inputs]
|
||||
ts_name: Analog Volt 8
|
||||
function: Analog Voltage Input #8
|
||||
type: av
|
||||
|
||||
- pin: 28
|
||||
id: [GPIOA_5, EFI_ADC_5]
|
||||
class: [switch_inputs, analog_inputs]
|
||||
ts_name: Analog Volt 10
|
||||
function: Analog Voltage Input #10
|
||||
type: av
|
||||
|
||||
- pin: 29
|
||||
function: Sensor GND
|
||||
type: sgnd
|
||||
|
||||
- pin: 30
|
||||
id: [GPIOC_5, EFI_ADC_15]
|
||||
class: [switch_inputs, analog_inputs]
|
||||
ts_name: Analog Temp 2
|
||||
function: Intake air temperature
|
||||
type: at
|
||||
|
||||
- pin: 31
|
||||
id: [GPIOB_1, EFI_ADC_9]
|
||||
class: [switch_inputs, analog_inputs]
|
||||
ts_name: Analog Temp 4
|
||||
function: Analog Thermistor Input #4
|
||||
type: at
|
||||
|
||||
- pin: 32
|
||||
function: Analog Voltage +5 supply #1
|
||||
type: 5v
|
||||
|
||||
- pin: 33
|
||||
function: Analog Voltage +5 supply #2
|
||||
type: 5v
|
||||
|
||||
- pin: 34
|
||||
function: Knock input 1 on 0.4. Due to a hardware defect, knock hardware can't work on v0.3 :(
|
||||
|
||||
- pin: 35
|
||||
function: Knock input 2 on 0.4
|
||||
|
||||
info:
|
||||
image:
|
||||
file: white35.jpg
|
||||
pins:
|
||||
- pin: 1
|
||||
x: 216
|
||||
y: 288
|
||||
- pin: 2
|
||||
x: 320
|
||||
y: 288
|
||||
- pin: 3
|
||||
x: 424
|
||||
y: 288
|
||||
- pin: 4
|
||||
x: 528
|
||||
y: 288
|
||||
- pin: 5
|
||||
x: 632
|
||||
y: 288
|
||||
- pin: 6
|
||||
x: 736
|
||||
y: 288
|
||||
- pin: 7
|
||||
x: 840
|
||||
y: 288
|
||||
- pin: 8
|
||||
x: 944
|
||||
y: 288
|
||||
- pin: 9
|
||||
x: 1048
|
||||
y: 288
|
||||
- pin: 10
|
||||
x: 1152
|
||||
y: 288
|
||||
- pin: 11
|
||||
x: 1256
|
||||
y: 288
|
||||
- pin: 12
|
||||
x: 1360
|
||||
y: 288
|
||||
- pin: 13
|
||||
x: 268
|
||||
y: 392
|
||||
- pin: 14
|
||||
x: 372
|
||||
y: 392
|
||||
- pin: 15
|
||||
x: 476
|
||||
y: 392
|
||||
- pin: 16
|
||||
x: 580
|
||||
y: 392
|
||||
- pin: 17
|
||||
x: 684
|
||||
y: 392
|
||||
- pin: 18
|
||||
x: 788
|
||||
y: 392
|
||||
- pin: 19
|
||||
x: 892
|
||||
y: 392
|
||||
- pin: 20
|
||||
x: 996
|
||||
y: 392
|
||||
- pin: 21
|
||||
x: 1100
|
||||
y: 392
|
||||
- pin: 22
|
||||
x: 1204
|
||||
y: 392
|
||||
- pin: 23
|
||||
x: 1308
|
||||
y: 392
|
||||
- pin: 24
|
||||
x: 216
|
||||
y: 496
|
||||
- pin: 25
|
||||
x: 320
|
||||
y: 496
|
||||
- pin: 26
|
||||
x: 424
|
||||
y: 496
|
||||
- pin: 27
|
||||
x: 528
|
||||
y: 496
|
||||
- pin: 28
|
||||
x: 632
|
||||
y: 496
|
||||
- pin: 29
|
||||
x: 736
|
||||
y: 496
|
||||
- pin: 30
|
||||
x: 840
|
||||
y: 496
|
||||
- pin: 31
|
||||
x: 944
|
||||
y: 496
|
||||
- pin: 32
|
||||
x: 1048
|
||||
y: 496
|
||||
- pin: 33
|
||||
x: 1152
|
||||
y: 496
|
||||
- pin: 34
|
||||
x: 1256
|
||||
y: 496
|
||||
- pin: 35
|
||||
x: 1360
|
||||
y: 496
|
||||
|
||||
`;
|
||||
|
||||
function addRow(table, pin, pdiv) {
|
||||
var template = document.getElementById("table-template");
|
||||
var clone = template.content.cloneNode(true);
|
||||
var row = clone.querySelector(".data");
|
||||
var pdata = clone.querySelector(".pin-data");
|
||||
var idata = clone.querySelector(".id-data");
|
||||
var tdata = clone.querySelector(".type-data");
|
||||
var fdata = clone.querySelector(".function-data");
|
||||
var cdata = clone.querySelector(".color-data");
|
||||
pdata.textContent = pin.pin;
|
||||
idata.textContent = pin.id;
|
||||
tdata.textContent = pin.type
|
||||
fdata.textContent = pin.function;
|
||||
cdata.textContent = pin.color
|
||||
row.addEventListener('click', function(pin, pdiv) {
|
||||
clickPin(pin, pdiv);
|
||||
}.bind(null, pin, pdiv));
|
||||
table.appendChild(clone);
|
||||
}
|
||||
|
||||
function clickPin(pin, pdiv) {
|
||||
var table = document.getElementById("info-table").querySelector("tbody");
|
||||
table.innerHTML = "";
|
||||
if (Array.isArray(pin.id)) {
|
||||
var pinIds = pin.id.filter((value, index) => {
|
||||
return pin.id.indexOf(value) === index;
|
||||
});
|
||||
for (var i = 0; i < pinIds.length; i++) {
|
||||
addRow(table, {pin: pin.pin, id: pinIds[i], function: pin.function}, pdiv);
|
||||
}
|
||||
} else {
|
||||
addRow(table, pin, pdiv);
|
||||
}
|
||||
var pins = document.querySelectorAll(".pin-marker");
|
||||
for (var i = 0; i < pins.length; i++) {
|
||||
if (pins[i].dataset.type == pin.type) {
|
||||
pins[i].classList.add("highlight");
|
||||
} else {
|
||||
pins[i].classList.remove("highlight");
|
||||
}
|
||||
pins[i].classList.remove("selected");
|
||||
}
|
||||
pdiv.classList.add("selected");
|
||||
}
|
||||
|
||||
function adjustMarkers() {
|
||||
var cdiv = document.getElementById("connector-div");
|
||||
cdiv.style.width = document.getElementById("connector-img").clientWidth;
|
||||
var pins = document.querySelectorAll(".pin-marker");
|
||||
for (var i = 0; i < pins.length; i++) {
|
||||
var height = cdiv.clientHeight * 0.05;
|
||||
pins[i].style.height = height + "px";
|
||||
pins[i].style.width = height + "px";
|
||||
pins[i].style.marginTop = "-" + (height * 0.5) + "px";
|
||||
pins[i].style.marginLeft = "-" + (height * 0.5) + "px";
|
||||
pins[i].style.fontSize = (height * 0.5) + "px";
|
||||
}
|
||||
}
|
||||
|
||||
window.addEventListener('load', function() {
|
||||
var connector = YAML.parse(connectorYaml);
|
||||
document.getElementById("connector-img").addEventListener('load', function() {
|
||||
for (var i = 0; i < connector.pins.length; i++) {
|
||||
var pin = connector.pins[i];
|
||||
if (!pin.pin) {
|
||||
continue;
|
||||
}
|
||||
var pinfo;
|
||||
for (var ii = 0; ii < connector.info.pins.length; ii++) {
|
||||
if (connector.info.pins[ii].pin == pin.pin) {
|
||||
pinfo = connector.info.pins[ii];
|
||||
break;
|
||||
}
|
||||
}
|
||||
var cdiv = document.getElementById("connector-div");
|
||||
var template = document.getElementById("pin-template");
|
||||
var clone = template.content.cloneNode(true);
|
||||
var pdiv = clone.querySelector("div");
|
||||
var img = document.getElementById("connector-img");
|
||||
var imgHeight = img.naturalHeight;
|
||||
var imgWidth = img.naturalWidth;
|
||||
pdiv.textContent = pinfo.pin;
|
||||
pdiv.style.top = ((pinfo.y / imgHeight) * 100) + "%";
|
||||
pdiv.style.left = ((pinfo.x / imgWidth) * 100) + "%";
|
||||
pdiv.dataset.type = pin.type;
|
||||
pdiv.addEventListener("click", function(pin, pdiv) {
|
||||
clickPin(pin, pdiv);
|
||||
}.bind(null, pin, pdiv));
|
||||
cdiv.appendChild(pdiv);
|
||||
var fullTable = document.getElementById("pinout-table").querySelector("tbody");
|
||||
addRow(fullTable, connector.pins[i], pdiv);
|
||||
}
|
||||
adjustMarkers();
|
||||
});
|
||||
document.getElementById("connector-img").src = connector.info.image.file;
|
||||
});
|
||||
|
||||
window.addEventListener('resize', function() {
|
||||
adjustMarkers();
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<template id="pin-template">
|
||||
<div class="pin-marker"></div>
|
||||
</template>
|
||||
|
||||
<div id="connector-container">
|
||||
<div id="connector-div">
|
||||
<img id="connector-img"></img>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<template id="table-template">
|
||||
<tr class="data">
|
||||
<td class="pin-data"></td>
|
||||
<td class="id-data"></td>
|
||||
<td class="type-data"></td>
|
||||
<td class="function-data"></td>
|
||||
<td class="color-data"></td>
|
||||
</tr>
|
||||
</template>
|
||||
|
||||
<table id="info-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Pin Number</th>
|
||||
<th>Firmware ID</th>
|
||||
<th>Type</th>
|
||||
<th>Typical Function</th>
|
||||
<th>Pigtail Color</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
<h2>Full Pinout Table</h2>
|
||||
<table id="pinout-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Pin Number</th>
|
||||
<th>Firmware ID</th>
|
||||
<th>Type</th>
|
||||
<th>Typical Function</th>
|
||||
<th>Pigtail Color</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</body>
|
||||
</html>
|
After Width: | Height: | Size: 404 KiB |
|
@ -0,0 +1,554 @@
|
|||
<html>
|
||||
<head>
|
||||
|
||||
<style>
|
||||
.pin-marker {
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
border-radius: 50%;
|
||||
background-color: white;
|
||||
border: 2px blue solid;
|
||||
cursor: pointer;
|
||||
color: black;
|
||||
text-align: center;
|
||||
line-height: 200%;
|
||||
}
|
||||
|
||||
.pin-marker:hover {
|
||||
background-color: #f15a24;
|
||||
color: white;
|
||||
transform: scale(2);
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.pin-marker.highlight {
|
||||
border: 2px #f15a24 solid;
|
||||
}
|
||||
|
||||
.pin-marker.selected {
|
||||
background-color: #fc935a;
|
||||
}
|
||||
|
||||
#connector-container {
|
||||
width: 100%;
|
||||
height: 50%;
|
||||
overflow-x: scroll;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
#connector-div {
|
||||
height: 100%;
|
||||
position: relative;
|
||||
z-index: 0;
|
||||
}
|
||||
|
||||
#connector-img {
|
||||
height: 100%;
|
||||
z-index: 0;
|
||||
}
|
||||
|
||||
table {
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
border-collapse: collapse;
|
||||
width: clamp(100%, 100%, 1000px);
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
@media (min-width: 1000px) {
|
||||
table {
|
||||
font-size: 1rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1000px) {
|
||||
table {
|
||||
font-size: 3rem;
|
||||
}
|
||||
}
|
||||
|
||||
table tbody tr {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
table td, table th {
|
||||
border: 1px solid black;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
table tr:nth-child(even){
|
||||
background-color: #fc935a;
|
||||
}
|
||||
|
||||
table tr:hover {
|
||||
background-color: #f15a24;
|
||||
}
|
||||
|
||||
table th {
|
||||
padding-top: 12px;
|
||||
padding-bottom: 12px;
|
||||
text-align: left;
|
||||
background-color: #f15a24;
|
||||
color: black;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
html {
|
||||
background-color: black;
|
||||
color: white;
|
||||
}
|
||||
|
||||
table td, table th {
|
||||
border: 1px solid #ddd;
|
||||
}
|
||||
|
||||
table th {
|
||||
color: white
|
||||
}
|
||||
|
||||
table tr:nth-child(even){
|
||||
background-color: #230c00;
|
||||
color: white;
|
||||
}
|
||||
|
||||
table tr:hover {
|
||||
background-color: #f15a24;
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
<script type="text/javascript" src="yaml.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
var connectorYaml = `
|
||||
#
|
||||
# microRusEfi board
|
||||
# https://github.com/rusefi/rusefi/wiki/Hardware_microRusEfi_wiring
|
||||
#
|
||||
|
||||
pins:
|
||||
- pin: 1
|
||||
id: EFI_ADC_11
|
||||
class: analog_inputs
|
||||
color: white right
|
||||
function: 12V Supply from main relay output, see also pin #29
|
||||
ts_name: Battery Sense
|
||||
type: 12V
|
||||
|
||||
# default Idle Air Control TLE8888 high current low side: VVT2 TLE8888_OUT5
|
||||
- pin: 3
|
||||
id: TLE8888_PIN_5
|
||||
class: outputs
|
||||
color: white
|
||||
function: Idle solenoid
|
||||
ts_name: 3 - Lowside 2
|
||||
type: ls
|
||||
|
||||
# default VVT TLE8888 high current low side: VVT1 TLE8888_OUT6
|
||||
- pin: 7
|
||||
id: TLE8888_PIN_6
|
||||
class: outputs
|
||||
color: black
|
||||
function: VVT
|
||||
ts_name: 7 - Lowside 1
|
||||
type: ls
|
||||
|
||||
# TC4427 ignition outputs (5v)
|
||||
- pin: 9
|
||||
id: GPIOD_4
|
||||
class: outputs
|
||||
color: dark blue
|
||||
function: Ignition 1
|
||||
ts_name: 9 - Ignition 1
|
||||
type: ign
|
||||
|
||||
- pin: 10
|
||||
id: GPIOD_3
|
||||
class: outputs
|
||||
color: dark blue
|
||||
function: Ignition 2
|
||||
ts_name: 10 - Ignition 2
|
||||
type: ign
|
||||
|
||||
- pin: 11
|
||||
id: GPIOD_2
|
||||
class: outputs
|
||||
color: dark blue
|
||||
function: Ignition 3
|
||||
ts_name: 11 - Ignition 3
|
||||
type: ign
|
||||
|
||||
- pin: 12
|
||||
id: GPIOD_1
|
||||
class: outputs
|
||||
color: dark blue
|
||||
function: Ignition 4
|
||||
ts_name: 12 - Ignition 4
|
||||
type: ign
|
||||
|
||||
- pin: 13
|
||||
id: GPIOD_6
|
||||
class: outputs
|
||||
color: yellow
|
||||
function: Alternator (see JP2 jumper note)
|
||||
ts_name: 13 - GP Out 6
|
||||
type: gp_high
|
||||
|
||||
# TC4427 general purpose output (selectable 5v/12v)
|
||||
- pin: 14
|
||||
id: GPIOD_7
|
||||
class: outputs
|
||||
color: yellow
|
||||
function: (see JP2 jumper note)
|
||||
ts_name: 14 - GP Out 5
|
||||
type: gp_high
|
||||
|
||||
- pin: 18
|
||||
id: [GPIOA_0, EFI_ADC_0]
|
||||
class: [switch_inputs, analog_inputs]
|
||||
color: red
|
||||
function: CLT sensor
|
||||
ts_name: 18 - AN temp 1
|
||||
type: at
|
||||
|
||||
- pin: 19
|
||||
id: [GPIOC_2, EFI_ADC_12]
|
||||
class: [switch_inputs, analog_inputs]
|
||||
color: red
|
||||
function: Starting from version 0.5.0 this pin can be used as 5V input for USB connection through main connector (No need to open case to access micro-USB connector)
|
||||
ts_name: 19 - AN volt 4
|
||||
type: av
|
||||
|
||||
- pin: 20
|
||||
id: [GPIOC_3, EFI_ADC_13]
|
||||
class: [switch_inputs, analog_inputs]
|
||||
color: red left
|
||||
function: Throttle position sensor (TPS)
|
||||
ts_name: 20 - AN volt 5
|
||||
type: av
|
||||
|
||||
- pin: 22
|
||||
id: [GPIOA_3, EFI_ADC_3]
|
||||
class: [switch_inputs, analog_inputs]
|
||||
color: dark green
|
||||
ts_name: 22 - AN temp 4
|
||||
type: at
|
||||
|
||||
- pin: 23
|
||||
id: [GPIOA_1, EFI_ADC_1]
|
||||
class: [switch_inputs, analog_inputs]
|
||||
color: dark green
|
||||
function: IAT sensor
|
||||
ts_name: 23 - AN temp 2
|
||||
type: at
|
||||
|
||||
- pin: 24
|
||||
id: [GPIOA_2, EFI_ADC_2]
|
||||
class: [switch_inputs, analog_inputs]
|
||||
color: dark green
|
||||
ts_name: 24 - AN temp 3
|
||||
type: at
|
||||
|
||||
# RC filter input for hall
|
||||
- pin: 25
|
||||
id: [GPIOA_5, GPIOA_5]
|
||||
class: [event_inputs, switch_inputs]
|
||||
color: light blue right
|
||||
ts_name: 25 - Hall Cam
|
||||
type: hall
|
||||
|
||||
- pin: 26
|
||||
id: [GPIOA_6, EFI_ADC_6]
|
||||
class: [switch_inputs, analog_inputs]
|
||||
color: light blue
|
||||
ts_name: 26 - AN volt 2
|
||||
type: av
|
||||
|
||||
- pin: 27
|
||||
id: [GPIOC_0, EFI_ADC_10]
|
||||
class: [switch_inputs, analog_inputs]
|
||||
color: light blue
|
||||
function: MAP sensor
|
||||
ts_name: 27 - AN volt 1
|
||||
type: av
|
||||
|
||||
- pin: 28
|
||||
id: [GPIOA_4, EFI_ADC_4]
|
||||
class: [switch_inputs, analog_inputs]
|
||||
color: light blue left
|
||||
ts_name: 28 - AN volt 10
|
||||
type: av
|
||||
|
||||
- pin: 30
|
||||
id: [GPIOC_5, EFI_ADC_15]
|
||||
class: [switch_inputs, analog_inputs]
|
||||
color: pink
|
||||
ts_name: 30 - AN volt 7
|
||||
type: av
|
||||
|
||||
- pin: 31
|
||||
id: [GPIOA_7, EFI_ADC_7]
|
||||
class: [switch_inputs, analog_inputs]
|
||||
color: pink
|
||||
function: Throttle Pedal Position Sensor (PPS)
|
||||
ts_name: 31 - AN volt 3
|
||||
type: av
|
||||
|
||||
- pin: 32
|
||||
id: [GPIOC_4, EFI_ADC_14]
|
||||
class: [switch_inputs, analog_inputs]
|
||||
color: pink
|
||||
function: External wideband O2 sensor
|
||||
ts_name: 32 - AN volt 6
|
||||
type: av
|
||||
|
||||
# TLE8888 half bridges (pushpull, lowside, or high-low) TLE8888_OUT23
|
||||
- pin: 33
|
||||
id: TLE8888_PIN_23
|
||||
class: outputs
|
||||
color: orange right
|
||||
function: (IDLE stepper coil 2+)
|
||||
ts_name: 33 - GP Out 3
|
||||
type: [gp_low, gp_pp]
|
||||
|
||||
# TLE8888 half bridges (pushpull, lowside, or high-low) TLE8888_OUT22#89
|
||||
- pin: 34
|
||||
id: TLE8888_PIN_22
|
||||
class: outputs
|
||||
color: orange
|
||||
function: Fan relay (IDLE stepper coil 1-)
|
||||
ts_name: 34 - GP Out 2
|
||||
type: [gp_low, gp_pp]
|
||||
|
||||
# TLE8888 half bridges (pushpull, lowside, or high-low) TLE8888_OUT21#91
|
||||
- pin: 35
|
||||
id: TLE8888_PIN_21
|
||||
class: outputs
|
||||
color: orange
|
||||
function: Fuel pump relay (IDLE stepper coil 1+)
|
||||
ts_name: 35 - GP Out 1
|
||||
type: [gp_low, gp_pp]
|
||||
|
||||
- pin: 36
|
||||
id: [GPIOB_0, EFI_ADC_8]
|
||||
class: [switch_inputs, analog_inputs]
|
||||
color: orange left
|
||||
ts_name: 36 - AN volt 8
|
||||
type: av
|
||||
|
||||
- pin: 37
|
||||
id: TLE8888_PIN_1
|
||||
class: outputs
|
||||
color: grey right
|
||||
function: Injector 1
|
||||
ts_name: 37 - Injector 1
|
||||
type: inj
|
||||
|
||||
- pin: 38
|
||||
id: TLE8888_PIN_2
|
||||
class: outputs
|
||||
color: grey
|
||||
function: Injector 2
|
||||
ts_name: 38 - Injector 2
|
||||
type: inj
|
||||
|
||||
- pin: 40
|
||||
id: [GPIOB_1, EFI_ADC_9]
|
||||
class: [switch_inputs, analog_inputs]
|
||||
color: grey
|
||||
ts_name: 40 - AN volt 9
|
||||
type: av
|
||||
|
||||
- pin: 41
|
||||
id: TLE8888_PIN_3
|
||||
class: outputs
|
||||
color: brown right
|
||||
function: Injector 3
|
||||
ts_name: 41 - Injector 3
|
||||
type: inj
|
||||
|
||||
- pin: 42
|
||||
id: TLE8888_PIN_4
|
||||
class: outputs
|
||||
color: brown
|
||||
function: Injector 4
|
||||
ts_name: 42 - Injector 4
|
||||
type: inj
|
||||
|
||||
# TLE8888 half bridges (pushpull, lowside, or high-low) TLE8888_OUT24
|
||||
- pin: 43
|
||||
id: TLE8888_PIN_24
|
||||
class: outputs
|
||||
color: brown
|
||||
function: (IDLE stepper coil 2+)
|
||||
ts_name: 43 - GP Out 4
|
||||
type: [gp_low, gp_pp]
|
||||
|
||||
- pin: 45
|
||||
id: GPIOC_6
|
||||
class: event_inputs
|
||||
color: light green right
|
||||
function: Crank VR+/hall
|
||||
ts_name: 45 - VR/Hall Crank
|
||||
type: vr hall
|
||||
`;
|
||||
|
||||
function addRow(table, pin, pdiv) {
|
||||
var template = document.getElementById("table-template");
|
||||
var clone = template.content.cloneNode(true);
|
||||
var row = clone.querySelector(".data");
|
||||
var pdata = clone.querySelector(".pin-data");
|
||||
var idata = clone.querySelector(".id-data");
|
||||
var tdata = clone.querySelector(".type-data");
|
||||
var fdata = clone.querySelector(".function-data");
|
||||
var cdata = clone.querySelector(".color-data");
|
||||
pdata.textContent = pin.pin;
|
||||
idata.textContent = pin.id;
|
||||
tdata.textContent = pin.type
|
||||
fdata.textContent = pin.function;
|
||||
cdata.textContent = pin.color
|
||||
row.addEventListener('click', function(pin, pdiv) {
|
||||
clickPin(pin, pdiv);
|
||||
}.bind(null, pin, pdiv));
|
||||
table.appendChild(clone);
|
||||
}
|
||||
|
||||
function clickPin(pin, pdiv) {
|
||||
var table = document.getElementById("info-table").querySelector("tbody");
|
||||
table.innerHTML = "";
|
||||
if (Array.isArray(pin.id)) {
|
||||
var pinIds = pin.id.filter((value, index) => {
|
||||
return pin.id.indexOf(value) === index;
|
||||
});
|
||||
for (var i = 0; i < pinIds.length; i++) {
|
||||
addRow(table, {pin: pin.pin, id: pinIds[i], function: pin.function}, pdiv);
|
||||
}
|
||||
} else {
|
||||
addRow(table, pin, pdiv);
|
||||
}
|
||||
var pins = document.querySelectorAll(".pin-marker");
|
||||
for (var i = 0; i < pins.length; i++) {
|
||||
if (pins[i].dataset.type == pin.type) {
|
||||
pins[i].classList.add("highlight");
|
||||
} else {
|
||||
pins[i].classList.remove("highlight");
|
||||
}
|
||||
pins[i].classList.remove("selected");
|
||||
}
|
||||
pdiv.classList.add("selected");
|
||||
}
|
||||
|
||||
function adjustMarkers() {
|
||||
var cdiv = document.getElementById("connector-div");
|
||||
cdiv.style.width = document.getElementById("connector-img").clientWidth;
|
||||
var pins = document.querySelectorAll(".pin-marker");
|
||||
for (var i = 0; i < pins.length; i++) {
|
||||
var height = cdiv.clientHeight * 0.05;
|
||||
pins[i].style.height = height + "px";
|
||||
pins[i].style.width = height + "px";
|
||||
pins[i].style.marginTop = "-" + (height * 0.5) + "px";
|
||||
pins[i].style.marginLeft = "-" + (height * 0.5) + "px";
|
||||
pins[i].style.fontSize = (height * 0.5) + "px";
|
||||
}
|
||||
}
|
||||
|
||||
window.addEventListener('load', function() {
|
||||
var connector = YAML.parse(connectorYaml);
|
||||
document.getElementById("connector-img").addEventListener('load', function() {
|
||||
for (var i = 0; i < connector.pins.length; i++) {
|
||||
var pin = connector.pins[i];
|
||||
if (!pin.pin) {
|
||||
continue;
|
||||
}
|
||||
var pinfo;
|
||||
for (var ii = 0; ii < connector.info.pins.length; ii++) {
|
||||
if (connector.info.pins[ii].pin == pin.pin) {
|
||||
pinfo = connector.info.pins[ii];
|
||||
break;
|
||||
}
|
||||
}
|
||||
var cdiv = document.getElementById("connector-div");
|
||||
var template = document.getElementById("pin-template");
|
||||
var clone = template.content.cloneNode(true);
|
||||
var pdiv = clone.querySelector("div");
|
||||
var img = document.getElementById("connector-img");
|
||||
var imgHeight = img.naturalHeight;
|
||||
var imgWidth = img.naturalWidth;
|
||||
pdiv.textContent = pinfo.pin;
|
||||
pdiv.style.top = ((pinfo.y / imgHeight) * 100) + "%";
|
||||
pdiv.style.left = ((pinfo.x / imgWidth) * 100) + "%";
|
||||
pdiv.dataset.type = pin.type;
|
||||
pdiv.addEventListener("click", function(pin, pdiv) {
|
||||
clickPin(pin, pdiv);
|
||||
}.bind(null, pin, pdiv));
|
||||
cdiv.appendChild(pdiv);
|
||||
var fullTable = document.getElementById("pinout-table").querySelector("tbody");
|
||||
addRow(fullTable, connector.pins[i], pdiv);
|
||||
}
|
||||
adjustMarkers();
|
||||
});
|
||||
document.getElementById("connector-img").src = connector.info.image.file;
|
||||
});
|
||||
|
||||
window.addEventListener('resize', function() {
|
||||
adjustMarkers();
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<template id="pin-template">
|
||||
<div class="pin-marker"></div>
|
||||
</template>
|
||||
|
||||
<div id="connector-container">
|
||||
<div id="connector-div">
|
||||
<img id="connector-img"></img>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<template id="table-template">
|
||||
<tr class="data">
|
||||
<td class="pin-data"></td>
|
||||
<td class="id-data"></td>
|
||||
<td class="type-data"></td>
|
||||
<td class="function-data"></td>
|
||||
<td class="color-data"></td>
|
||||
</tr>
|
||||
</template>
|
||||
|
||||
<table id="info-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Pin Number</th>
|
||||
<th>Firmware ID</th>
|
||||
<th>Type</th>
|
||||
<th>Typical Function</th>
|
||||
<th>Pigtail Color</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
<h2>Full Pinout Table</h2>
|
||||
<table id="pinout-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Pin Number</th>
|
||||
<th>Firmware ID</th>
|
||||
<th>Type</th>
|
||||
<th>Typical Function</th>
|
||||
<th>Pigtail Color</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,487 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
|
||||
<style>
|
||||
.pin-marker {
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
border-radius: 50%;
|
||||
background-color: white;
|
||||
border: 0.21vw black solid;
|
||||
cursor: pointer;
|
||||
color: black;
|
||||
text-align: center;
|
||||
line-height: 200%;
|
||||
}
|
||||
|
||||
[data-type*="12v"],
|
||||
[data-type*="12V"] {
|
||||
border-color: yellow;
|
||||
}
|
||||
|
||||
[data-type*="5v"],
|
||||
[data-type*="5V"] {
|
||||
border-color: red;
|
||||
}
|
||||
|
||||
[data-type*="at"] {
|
||||
border-color: green;
|
||||
}
|
||||
|
||||
[data-type*="av"] {
|
||||
border-color: brown;
|
||||
}
|
||||
|
||||
[data-type*="can"] {
|
||||
border-color: blue;
|
||||
}
|
||||
|
||||
[data-type*="din"] {
|
||||
border-color: lime;
|
||||
}
|
||||
|
||||
[data-type*="etb"] {
|
||||
border-color: darkcyan;
|
||||
}
|
||||
|
||||
[data-type*="gnd"] {
|
||||
border-color: darkgreen;
|
||||
}
|
||||
|
||||
[data-type*="gp_high"] {
|
||||
border-color: aqua;
|
||||
}
|
||||
|
||||
[data-type*="gp_low"] {
|
||||
border-color: aquamarine;
|
||||
}
|
||||
|
||||
[data-type*="gp_pp"] {
|
||||
border-color: cyan;
|
||||
}
|
||||
|
||||
[data-type*="hall"] {
|
||||
border-color: darkolivegreen;
|
||||
}
|
||||
|
||||
[data-type*="hl"] {
|
||||
border-color: gold;
|
||||
}
|
||||
|
||||
[data-type*="hs"] {
|
||||
border-color: indigo;
|
||||
}
|
||||
|
||||
[data-type*="ign"] {
|
||||
border-color: magenta;
|
||||
}
|
||||
|
||||
[data-type*="inj"] {
|
||||
border-color: maroon;
|
||||
}
|
||||
|
||||
[data-type*="ls"] {
|
||||
border-color: lightgreen;
|
||||
}
|
||||
|
||||
[data-type*="mr"] {
|
||||
border-color: firebrick;
|
||||
}
|
||||
|
||||
[data-type*="pgnd"] {
|
||||
border-color: coral;
|
||||
}
|
||||
|
||||
[data-type*="sgnd"] {
|
||||
border-color: olive;
|
||||
}
|
||||
|
||||
[data-type*="usb"] {
|
||||
border-color: lightseagreen;
|
||||
}
|
||||
|
||||
[data-type*="vr"] {
|
||||
border-color: sienna;
|
||||
}
|
||||
|
||||
.pin-marker:hover {
|
||||
transform: scale(2);
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.pin-marker.highlight {
|
||||
background-color: #fc935a;
|
||||
}
|
||||
|
||||
.pin-marker.selected {
|
||||
background-color: #f15a24;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.connector-container {
|
||||
width: 100%;
|
||||
overflow-x: scroll;
|
||||
position: relative;
|
||||
height: max(3in, 50vh);
|
||||
}
|
||||
|
||||
.connector-div {
|
||||
height: 100%;
|
||||
position: relative;
|
||||
z-index: 0;
|
||||
width: max-content;
|
||||
}
|
||||
|
||||
.connector-img {
|
||||
height: 100%;
|
||||
min-width: 100%;
|
||||
}
|
||||
|
||||
table {
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
border-collapse: collapse;
|
||||
width: clamp(100%, 100%, 1000px);
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
@media (min-width: 1000px) {
|
||||
table {
|
||||
font-size: 1rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1000px) {
|
||||
table {
|
||||
word-wrap: break-word;
|
||||
font-size: 2.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
table tbody tr {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
@media screen {
|
||||
td.pin-data {
|
||||
border-color: black;
|
||||
}
|
||||
}
|
||||
|
||||
table td, table th {
|
||||
border: 1px solid black;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
table tr:nth-child(even){
|
||||
background-color: #fc935a;
|
||||
}
|
||||
|
||||
table tr:hover {
|
||||
background-color: #f15a24;
|
||||
}
|
||||
|
||||
table th {
|
||||
padding-top: 12px;
|
||||
padding-bottom: 12px;
|
||||
text-align: left;
|
||||
background-color: #f15a24;
|
||||
color: black;
|
||||
}
|
||||
|
||||
.info-table {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
html {
|
||||
background-color: black;
|
||||
color: white;
|
||||
}
|
||||
|
||||
td.pin-data {
|
||||
border: 1px solid #ddd;
|
||||
}
|
||||
|
||||
table td, table th {
|
||||
border: 1px solid #ddd;
|
||||
}
|
||||
|
||||
table th {
|
||||
color: white;
|
||||
}
|
||||
|
||||
table tr:nth-child(even){
|
||||
background-color: #230c00;
|
||||
color: white;
|
||||
}
|
||||
|
||||
table tr:hover {
|
||||
background-color: #f15a24;
|
||||
}
|
||||
}
|
||||
|
||||
@media print {
|
||||
.container {
|
||||
height: 99vh;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
.info-table, .ts-data, .ts-header, .type-data, .type-header, .color-data, .color-header, thead {
|
||||
display: none;
|
||||
}
|
||||
.connector-container {
|
||||
flex: 0 1 auto;
|
||||
height: unset;
|
||||
min-height: 2in;
|
||||
}
|
||||
.connector-div {
|
||||
max-width: 100%;
|
||||
height: unset;
|
||||
}
|
||||
.connector-img {
|
||||
max-width: 100% !important;
|
||||
max-height: 3in;
|
||||
}
|
||||
h2 {
|
||||
font-size: 14px;
|
||||
}
|
||||
th {
|
||||
font-size: 12px;
|
||||
}
|
||||
td {
|
||||
font-size: 10px;
|
||||
}
|
||||
td:not(.pin-data) {
|
||||
border: none !important;
|
||||
}
|
||||
td.pin-data {
|
||||
border-width: 3px;
|
||||
border-radius: 10px;
|
||||
width: 10px;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
html, tr {
|
||||
background-color: white !important;
|
||||
color: black !important;
|
||||
}
|
||||
table {
|
||||
width: auto;
|
||||
border-collapse: separate;
|
||||
}
|
||||
.table-wrapper {
|
||||
column-count: 4;
|
||||
}
|
||||
table, tbody, tr {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
<script type="text/javascript">
|
||||
var connectorData = [
|
||||
`{ "pins": [ { "pin": 1, "id": "TLE6240_PIN_12", "class": "outputs", "function": "IDLE close", "ts_name": "D01 - IDLE close", "type": "gp_low" }, { "pin": 2, "id": "TLE6240_PIN_11", "class": "outputs", "function": "IDLE open", "ts_name": "D02 - IDLE open", "type": "gp_low" }, { "pin": 3, "id": "TLE6240_PIN_2", "class": "outputs", "function": "FAN 2 relay", "ts_name": "D03 - FAN 2 relay", "type": "gp_low" }, { "pin": 4, "id": "MC33972_PIN_8", "class": "switch_inputs", "function": "California ID Din", "ts_name": "D04 - California ID Din", "type": "av" }, { "pin": 5, "id": "GPIOH_7", "class": "outputs", "function": "Self Shutdown", "ts_name": "D05 - Self Shutdown", "type": "gp_high" }, { "pin": 6, "id": "TLE6240_PIN_10", "class": "outputs", "function": "Absorber purge valve", "ts_name": "D06 - Absorber purge valve", "type": "gp_low" }, { "pin": 7, "id": "MC33810_0_GD_0", "class": "outputs", "function": "Ignition 4", "ts_name": "D07 - Ignition Cyl 4", "type": "ign" }, { "pin": 8, "id": "MC33810_1_GD_2", "class": "outputs", "function": "Ignition 2", "ts_name": "D08 - Ignition Cyl 2", "type": "ign" }, { "pin": 9, "id": "MC33810_0_GD_1", "class": "outputs", "function": "Ignition 3", "ts_name": "D09 - Ignition Cyl 3", "type": "ign" }, { "pin": 10, "id": "MC33810_1_GD_3", "class": "outputs", "function": "Ignition 1", "ts_name": "D10 - Ignition Cyl 1", "type": "ign" }, { "pin": 11, "id": "MC33810_0_OUT_1", "class": "outputs", "function": "Injector 3", "ts_name": "D11 - Injector 3", "type": "inj" }, { "pin": 12, "id": "MC33810_1_OUT_0", "class": "outputs", "function": "Injector 2", "ts_name": "D12 - Injector 2", "type": "inj" }, { "pin": 13, "id": "MC33810_0_OUT_0", "class": "outputs", "function": "Injector 1", "ts_name": "D13 - Injector 1", "type": "inj" }, { "pin": 14, "function": "Power GND", "type": "pgnd" }, { "pin": 15, "function": "Ignition GND", "type": "pgnd" }, { "pin": 16, "id": "MC33810_1_GD_1", "class": "outputs", "function": "Ignition 6", "ts_name": "D16 - Ignition Cyl 6", "type": "ign" }, { "pin": 17, "id": "TLE6240_PIN_1", "class": "outputs", "function": "FAN 1 relay", "ts_name": "D17 - FAN 1 relay", "type": "gp_low" }, { "pin": 18, "id": "TLE6240_PIN_9", "class": "outputs", "function": "Auxillary air valve", "ts_name": "D18 - Auxillary air valve", "type": "gp_low" }, { "pin": 19, "id": "TLE6240_PIN_7", "class": "outputs", "function": "Check Engine indicator", "ts_name": "D19 - Check Engine indicator", "type": "gp_low" }, { "pin": 20, "id": "TLE6240_PIN_16", "class": "outputs", "function": "Inertia-Resonance Super-Charger control", "ts_name": "D20 - Inertia-Resonance Super-Charger control", "type": "gp_low" }, { "pin": 21, "id": "MC33810_0_GD_3", "class": "outputs", "function": "Ignition 5", "ts_name": "D21 - Ignition Cyl 5", "type": "ign" }, { "pin": 22, "id": "TLE6240_PIN_6", "class": "outputs", "function": "EGR control", "ts_name": "D22 - EGR control", "type": "gp_low" }, { "pin": 23, "id": "TLE6240_PIN_5", "class": "outputs", "function": "Fuel Pump relay", "ts_name": "D23 - Fuel Pump relay", "type": "gp_low" }, { "pin": 24, "function": "Injector GND", "type": "pgnd" }, { "pin": 25, "function": "Injector GND", "type": "pgnd" }, { "pin": 26, "id": "MC33810_1_OUT_1", "class": "outputs", "function": "Injector 4", "ts_name": "D26 - Injector 4", "type": "inj" } ] }`,
|
||||
`{ "pins": [ { "pin": 1, "id": "MC33810_0_OUT_2", "class": "outputs", "function": "Injector 5", "ts_name": "A01 - Injector 5", "type": "inj" }, { "pin": 2, "function": "12V supply from Main Relay", "type": "12V", "color": "black" }, { "pin": 3, "id": "EFI_ADC_14", "class": "analog_inputs", "function": "CLT sensor", "ts_name": "A03 - Coolant t Ain", "type": "at" }, { "pin": 4, "id": "EFI_ADC_9", "class": "analog_inputs", "function": "CLT sensor", "ts_name": "A04 - EGR t Ain", "type": "at" }, { "pin": 5, "id": "EFI_ADC_8", "class": "analog_inputs", "function": "Narrow AFR Bank 2", "ts_name": "A06 - Oxyg 2 Ain", "type": "av" }, { "pin": 6, "id": "EFI_ADC_15", "class": "analog_inputs", "function": "Narrow AFR Bank 1", "ts_name": "A06 - Oxyg 1 Ain", "type": "av" }, { "pin": 7, "id": "GPIOH_12", "class": "event_inputs", "function": "Cam VR+", "ts_name": "A07 - Cam VR+", "type": "vr" }, { "pin": 8, "id": "GPIOE_9", "class": "event_inputs", "function": "Crank 2 VR+", "ts_name": "A08 - Crank 2 VR+", "type": "vr" }, { "pin": 9, "function": "Cam and Crank 2 VR sensor GND", "type": "sgnd" }, { "pin": 10, "function": "Cam and Crank 2 VR sensors shield", "type": "sgnd" }, { "pin": 11, "function": "Power GND", "type": "pgnd" }, { "pin": 12, "id": "MC33810_1_OUT_2", "class": "outputs", "function": "Injector 6", "ts_name": "A12 - Injector 6", "type": "inj" }, { "pin": 13, "function": "12V supply from Main Relay", "type": "12V" }, { "pin": 14, "function": "Ground (Body)", "type": "pgnd" }, { "pin": 15, "function": "Backup 12V supply (always on)", "type": "12V" }, { "pin": 16, "id": "EFI_ADC3_10", "class": "analog_inputs", "function": "Atm Pressure Sensor", "ts_name": "A16 - Atm Pressure Sensor Ain", "type": "av" }, { "pin": 17, "function": "AFR sensors shield", "type": "sgnd" }, { "pin": 18, "id": "EFI_ADC_11", "class": "analog_inputs", "function": "AUX0 Ain", "ts_name": "A18 - AUX0 Ain", "type": "av" }, { "pin": 19, "id": "MC33972_PIN_22", "class": "switch_inputs", "function": "AC Ctrl Din", "ts_name": "A19 - AC Ctrl Din", "type": "av" }, { "pin": 20, "id": "MC33972_PIN_21", "class": "switch_inputs", "function": "Torque Ctrl Din", "ts_name": "A20 - Torque Ctrl Din", "type": "av" }, { "pin": 11, "function": "Sensors GND", "type": "sgnd" }, { "pin": 22, "function": "Power GND", "type": "pgnd" } ] } `,
|
||||
`{ "pins": [ { "pin": 1, "id": "GPIOH_10", "class": "event_inputs", "function": "Crank 1 VR+", "ts_name": "A08 - Crank 1 VR+", "type": "vr" }, { "pin": 2, "function": "Crank 1 VR sensors GND", "type": "sgnd" }, { "pin": 3, "function": "Crank 1 VR sensors shield", "type": "sgnd" }, { "pin": 4, "function": "Knock sensors shield", "type": "sgnd" }, { "pin": 5, "function": "Knock input 1" }, { "pin": 6, "function": "Knock input 1" }, { "pin": 7, "function": "SSM Tx (5V UART)" }, { "pin": 8, "function": "SSM Rx (5V UART)" }, { "pin": 9, "id": "MC33972_PIN_16", "class": "switch_inputs", "function": "Air Condition request Din", "ts_name": "C09 - Air Condition request Din", "type": "av" }, { "pin": 10, "id": "MC33972_PIN_5", "class": "switch_inputs", "function": "Starter Din", "ts_name": "C10 - Starter Din", "type": "av" }, { "pin": 11, "function": "Opt Supply (+12)", "type": "5v" }, { "pin": 12, "id": "MC33972_PIN_6", "class": "switch_inputs", "function": "Memory SW Din", "ts_name": "C12 - Memory SW Din", "type": "av" }, { "pin": 13, "id": "MC33972_PIN_7", "class": "switch_inputs", "function": "Test SW Din", "ts_name": "C13 - Test SW Din", "type": "av" }, { "pin": 14, "id": "TLE6240_PIN_4", "class": "outputs", "function": "FPump modulator (low = high flow)", "ts_name": "C14 - FPump modulator", "type": "gp_low" }, { "pin": 15, "id": "TLE6240_PIN_8", "class": "outputs", "function": "AUX1 OD out", "ts_name": "C15 - AUX1 OD out", "type": "gp_low" }, { "pin": 16, "id": "TLE6240_PIN_3", "class": "outputs", "function": "Tacho out", "ts_name": "C16 - Tacho out", "type": "gp_low" } ] } `,
|
||||
`{ "pins": [ { "pin": 1, "color": null, "function": "TPS sensor GND", "type": "sgnd" }, { "pin": 2, "id": "EFI_ADC_12", "class": "analog_inputs", "function": "TPS Ain", "ts_name": "B02 - TPS Ain", "type": "av" }, { "pin": 3, "function": "TPS Analog supply (+5)", "type": "5v" }, { "pin": 4, "function": "MAP Supply (+12)", "type": "5v" }, { "pin": 5, "id": "EFI_ADC_3", "class": "analog_inputs", "function": "MAF Ain", "ts_name": "B05 - MAF Ain", "type": "av" }, { "pin": 6, "color": null, "function": "MAF sensor GND", "type": "sgnd" }, { "pin": 7, "id": "GPIO_UNASSIGNED", "class": "switch_inputs", "function": "Power Steering Switch", "ts_name": "B07 - Power Steering Switch", "type": "av" }, { "pin": 8, "id": "TLE6240_PIN_15", "class": "outputs", "function": "AC clutch", "ts_name": "B08 - AC clutch", "type": "gp_low" }, { "pin": 9, "id": "MC33972_PIN_20", "class": "switch_inputs", "function": "P pos Din", "ts_name": "B09 - P pos Din", "type": "av" }, { "pin": 10, "id": "MC33972_PIN_19", "class": "switch_inputs", "function": "N pos Din", "ts_name": "B10 - N pos Din", "type": "av" }, { "pin": 11, "id": "GPIOD_14", "class": "event_inputs", "function": "Speed Din", "ts_name": "B11 - Speed Din", "type": "din" }, { "pin": 12, "id": "MC33972_PIN_17", "class": "switch_inputs", "function": "IGN Din", "ts_name": "B12 - IGN Din", "type": "av" } ] } `,
|
||||
///DATA///
|
||||
];
|
||||
|
||||
function hideEmptyColumns(table) {
|
||||
var rows = table.querySelector('tbody').children;
|
||||
var tableHead = table.querySelector("thead>tr")
|
||||
var cols = tableHead.children
|
||||
for (var i = 0; i < cols.length; i++) {
|
||||
var empty = true;
|
||||
for (var ii = 0; ii < rows.length; ii++) {
|
||||
empty = rows[ii].children[i].textContent.length > 0 ? false : empty;
|
||||
}
|
||||
if (empty) {
|
||||
tableHead.querySelectorAll('th')[i].style.display = 'none';
|
||||
for (var ii = 0; ii < rows.length; ii++) {
|
||||
rows[ii].children[i].style.display = 'none';
|
||||
}
|
||||
} else {
|
||||
tableHead.querySelectorAll('th')[i].style.display = '';
|
||||
for (var ii = 0; ii < rows.length; ii++) {
|
||||
rows[ii].children[i].style.display = '';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function addRow(table, pin, pdiv) {
|
||||
var template = document.getElementById("table-template");
|
||||
var clone = template.content.cloneNode(true);
|
||||
var row = clone.querySelector(".data");
|
||||
var cells = row.children;
|
||||
for (var i = 0; i < cells.length; i++) {
|
||||
var cell = cells[i];
|
||||
cell.textContent = Array.isArray(pin[cell.dataset.field]) ? pin[cell.dataset.field].join(", ") : pin[cell.dataset.field];
|
||||
}
|
||||
clone.querySelector(".pin-data").dataset.type = pin.type;
|
||||
if (pdiv) {
|
||||
row.addEventListener('click', function(table, pin, pdiv) {
|
||||
clickPin(table.parentElement.parentElement.parentElement.querySelector(".info-table tbody"), pin, pdiv);
|
||||
table.parentElement.parentElement.parentElement.scrollIntoView()
|
||||
}.bind(null, table, pin, pdiv));
|
||||
}
|
||||
table.appendChild(clone);
|
||||
}
|
||||
|
||||
function clickPin(table, pin, pdiv) {
|
||||
table.parentElement.style.display = "table";
|
||||
table.innerHTML = "";
|
||||
addRow(table, pin, pdiv);
|
||||
var pins = document.querySelectorAll(".pin-marker");
|
||||
for (var i = 0; i < pins.length; i++) {
|
||||
if (pins[i].dataset.type == pin.type) {
|
||||
pins[i].classList.add("highlight");
|
||||
} else {
|
||||
pins[i].classList.remove("highlight");
|
||||
}
|
||||
pins[i].classList.remove("selected");
|
||||
}
|
||||
pdiv.classList.add("selected");
|
||||
hideEmptyColumns(table.parentElement);
|
||||
}
|
||||
|
||||
window.addEventListener('load', function() {
|
||||
for (var c = 0; c < connectorData.length; c++) {
|
||||
var connector = JSON.parse(connectorData[c]);
|
||||
var template = document.getElementById("connector-template");
|
||||
var clone = template.content.cloneNode(true);
|
||||
document.body.appendChild(clone);
|
||||
var sdiv = document.body.lastChild.previousSibling;
|
||||
var img = sdiv.querySelector(".connector-img");
|
||||
img.addEventListener('load', function(connector, sdiv, img) {
|
||||
var cdiv = sdiv.querySelector(".connector-div");
|
||||
var ptemplate = document.getElementById("pin-template");
|
||||
var imgHeight = img.naturalHeight;
|
||||
var imgWidth = img.naturalWidth;
|
||||
var table = sdiv.querySelector(".info-table").querySelector("tbody");
|
||||
var fullTable = sdiv.querySelector(".pinout-table").querySelector("tbody");
|
||||
for (var i = 0; i < connector.pins.length; i++) {
|
||||
var pin = connector.pins[i];
|
||||
if (!pin.pin) {
|
||||
continue;
|
||||
}
|
||||
var pinfo = {};
|
||||
for (var ii = 0; ii < connector.info.pins.length; ii++) {
|
||||
if (connector.info.pins[ii].pin == pin.pin) {
|
||||
pinfo = connector.info.pins[ii];
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!pinfo.x) {
|
||||
addRow(fullTable, connector.pins[i], null);
|
||||
continue;
|
||||
}
|
||||
var closest = 1000000;
|
||||
for (var ii = 0; ii < connector.info.pins.length; ii++) {
|
||||
var tinfo = connector.info.pins[ii];
|
||||
var distance = Math.pow((tinfo.x - pinfo.x), 2) + Math.pow((tinfo.y - pinfo.y), 2);
|
||||
if (tinfo.pin != pin.pin && (!closest || distance < closest)) {
|
||||
closest = distance;
|
||||
}
|
||||
}
|
||||
var pclone = ptemplate.content.cloneNode(true);
|
||||
var pdiv = pclone.querySelector("div");
|
||||
pdiv.textContent = pinfo.pin;
|
||||
pdiv.style.top = ((pinfo.y / imgHeight) * 100) + "%";
|
||||
pdiv.style.left = ((pinfo.x / imgWidth) * 100) + "%";
|
||||
pdiv.dataset.type = pin.type;
|
||||
pdiv.addEventListener("click", function(table, pin, pdiv) {
|
||||
clickPin(table, pin, pdiv);
|
||||
}.bind(null, table, pin, pdiv));
|
||||
closest = Math.sqrt(closest);
|
||||
var divheight = cdiv.clientHeight;
|
||||
var divwidth = cdiv.clientWidth;
|
||||
var mult = cdiv.querySelector("img").naturalHeight / divheight;
|
||||
var newheight = (closest / mult)
|
||||
var pxheight = divheight * 0.08;
|
||||
if (newheight < pxheight) {
|
||||
pxheight = newheight;
|
||||
}
|
||||
var height = (pxheight / divheight) * 100;
|
||||
var width = (pxheight / divwidth) * 100;
|
||||
pdiv.style.height = "calc(" + height + "% - 0.21vw)";
|
||||
pdiv.style.width = "calc(" + width + "% - 0.21vw)";
|
||||
pdiv.style.marginTop = "-" + (width / 2) + "%";
|
||||
pdiv.style.marginLeft = "-" + (width / 2) + "%";
|
||||
pdiv.style.fontSize = (height * 1.8) + "px";
|
||||
pdiv.style.fontSize = (pxheight * 0.5) + "px";
|
||||
window.addEventListener('beforeprint', function(pdiv, width, divwidth, event) {
|
||||
pdiv.style.fontSize = "calc(calc(" + width + "px * min(640, " + divwidth + ")) * 0.0055)";
|
||||
}.bind(null, pdiv, width, divwidth));
|
||||
window.addEventListener('afterprint', function(pdiv, pxheight, event) {
|
||||
pdiv.style.fontSize = (pxheight * 0.5) + "px";
|
||||
}.bind(null, pdiv, pxheight));
|
||||
cdiv.appendChild(pdiv);
|
||||
addRow(fullTable, connector.pins[i], pdiv);
|
||||
}
|
||||
hideEmptyColumns(sdiv.querySelector('.pinout-table'));
|
||||
}.bind(null, connector, sdiv, img));
|
||||
img.src = connector.info.image.file;
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<template id="pin-template">
|
||||
<div class="pin-marker"></div>
|
||||
</template>
|
||||
|
||||
<template id="table-template">
|
||||
<tr class="data">
|
||||
<td class="pin-data" data-field="pin"></td>
|
||||
<td class="ts-data" data-field="ts_name"></td>
|
||||
<td class="type-data" data-field="type"</td>
|
||||
<td class="function-data" data-field="function"></td>
|
||||
<td class="color-data" data-field="color"></td>
|
||||
</tr>
|
||||
</template>
|
||||
|
||||
<template id="connector-template">
|
||||
<div class="container">
|
||||
<div class="connector-container">
|
||||
<div class="connector-div">
|
||||
<img class="connector-img"></img>
|
||||
</div>
|
||||
</div>
|
||||
<table class="info-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="pin-header" data-field="pin">Pin Number</th>
|
||||
<th class="ts-header" data-field="ts_name">TS Name</th>
|
||||
<th class="type-header" data-field="type">Type</th>
|
||||
<th class="function-header" data-field="function">Typical Function</th>
|
||||
<th class="color-header" data-field="color">Pigtail Color</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
<h2>Full Pinout Table</h2>
|
||||
<div class="table-wrapper">
|
||||
<table class="pinout-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="pin-header" data-field="pin">Pin Number</th>
|
||||
<th class="ts-header" data-field="ts_name">TS Name</th>
|
||||
<th class="type-header" data-field="type">Type</th>
|
||||
<th class="function-header" data-field="function">Typical Function</th>
|
||||
<th class="color-header" data-field="color">Pigtail Color</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
</body>
|
||||
</html>
|