rusefillc 2021-07-10 11:45:10 -04:00
parent b29cab94aa
commit 36936ebc31
45 changed files with 11664 additions and 0 deletions

View File

@ -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>

View File

@ -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>

View File

@ -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>

1
pinouts-backup/frankenso/yaml.min.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 957 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 957 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

File diff suppressed because one or more lines are too long

View File

@ -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>

Binary file not shown.

After

Width:  |  Height:  |  Size: 979 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 897 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -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>

Binary file not shown.

After

Width:  |  Height:  |  Size: 506 KiB

File diff suppressed because one or more lines are too long

View File

@ -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>

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

File diff suppressed because one or more lines are too long

View File

@ -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>

Binary file not shown.

After

Width:  |  Height:  |  Size: 890 KiB

View File

@ -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>

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

File diff suppressed because one or more lines are too long

View File

@ -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>

Binary file not shown.

After

Width:  |  Height:  |  Size: 378 KiB

View File

@ -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>

Binary file not shown.

After

Width:  |  Height:  |  Size: 422 KiB

File diff suppressed because one or more lines are too long

View File

@ -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>

Binary file not shown.

After

Width:  |  Height:  |  Size: 404 KiB

1
pinouts-backup/proteus/yaml.min.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -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>

1
pinouts-backup/skeleton/yaml.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -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>

File diff suppressed because one or more lines are too long