• Открытое сообщество по моддингу и аппаратному ремонту игровых консолей. Здесь мы разбираем свежие релизы OFW/CFW/HFW и работу мультихоста HEN для PlayStation, обсуждаем сборки UltraNX и Kefir для Nintendo Switch, делимся дампами, проверенным софтом и помогаем устранить любые ошибки. Присоединяйтесь к обсуждениям!

Коды POST / UART Xbox One

ConsoleFiX

Администратор
Регистрация
7 Июн 2021
Сообщения
489
Реакции
43
Баллы
1,092
Веб-сайт
consolefix.ru
<section id="xbox-uart-errors" class="cf-xbox-post">
<div class="cf-xbox-post__head">
<div>
<h2>🔧 Xbox One — UART / POST Error Codes</h2>
<p>
Расшифровка POST-кодов Xbox One, Xbox One S и Xbox One X.
Данные: Xbox One Research.
</p>
</div>
</div>

<div class="cf-xbox-post__controls">
<input
id="cfPostSearch"
type="search"
placeholder="Поиск: E046, EB46, I2C, RAM, APU..."
autocomplete="off"
>

<select id="cfPostConsole">
<option value="">Все модели</option>
<option value="XOP">Xbox One Phat</option>
<option value="XOS">Xbox One S</option>
<option value="XOX">Xbox One X</option>
</select>

<select id="cfPostType">
<option value="">Все типы</option>
<option value="SMC">SMC</option>
<option value="SP">SP</option>
<option value="CPU">CPU</option>
</select>

<label class="cf-xbox-post__check">
<input id="cfPostErrorsOnly" type="checkbox" checked>
Только ошибки
</label>
</div>

<div id="cfPostStatus" class="cf-xbox-post__status">
Загрузка базы кодов…
</div>

<div class="cf-xbox-post__table-wrap">
<table class="cf-xbox-post__table">
<thead>
<tr>
<th>Код</th>
<th>Тип</th>
<th>Модель</th>
<th>Название</th>
<th>Описание / диагностика</th>
</tr>
</thead>
<tbody id="cfPostBody"></tbody>
</table>
</div>

<div class="cf-xbox-post__footer">
Источник:
<a href="https://errors.xboxresearch.com/"
target="_blank"
rel="noopener noreferrer">
Xbox One Research — POST / Error Codes
</a>
</div>
</section>

<style>
.cf-xbox-post {
margin: 32px 0;
padding: 22px;
border: 1px solid #30363d;
border-radius: 14px;
background: #11161c;
color: #e6edf3;
}

.cf-xbox-post h2 {
margin: 0 0 8px;
color: #fff;
}

.cf-xbox-post__head p {
margin: 0 0 20px;
color: #9da7b3;
}

.cf-xbox-post__controls {
display: grid;
grid-template-columns: minmax(240px, 2fr) 1fr 1fr auto;
gap: 10px;
margin-bottom: 16px;
}

.cf-xbox-post input[type="search"],
.cf-xbox-post select {
width: 100%;
min-height: 42px;
padding: 9px 12px;
border: 1px solid #3b4550;
border-radius: 8px;
background: #0b1015;
color: #fff;
}

.cf-xbox-post__check {
display: flex;
align-items: center;
gap: 7px;
white-space: nowrap;
}

.cf-xbox-post__status {
margin: 8px 0 12px;
color: #8b949e;
font-size: 14px;
}

.cf-xbox-post__table-wrap {
overflow-x: auto;
}

.cf-xbox-post__table {
width: 100%;
border-collapse: collapse;
font-size: 14px;
}

.cf-xbox-post__table th,
.cf-xbox-post__table td {
padding: 10px 12px;
border-bottom: 1px solid #2b323a;
vertical-align: top;
text-align: left;
}

.cf-xbox-post__table th {
position: sticky;
top: 0;
background: #192129;
color: #fff;
}

.cf-xbox-post__table tbody tr:hover {
background: rgba(255,255,255,.035);
}

.cf-xbox-post__code {
font-family: Consolas, Monaco, monospace;
font-weight: 700;
color: #58a6ff;
white-space: nowrap;
}

.cf-xbox-post__type {
font-family: Consolas, Monaco, monospace;
color: #d2a8ff;
}

.cf-xbox-post__name {
font-family: Consolas, Monaco, monospace;
font-size: 13px;
color: #79c0ff;
}

.cf-xbox-post__model {
white-space: nowrap;
}

.cf-xbox-post__footer {
margin-top: 15px;
color: #8b949e;
font-size: 13px;
}

.cf-xbox-post__footer a {
color: #58a6ff;
}

@media (max-width: 850px) {
.cf-xbox-post__controls {
grid-template-columns: 1fr;
}

.cf-xbox-post {
padding: 14px;
}

.cf-xbox-post__table {
min-width: 900px;
}
}
</style>

<script>
(() => {
const CSV_URL =
'https://raw.githubusercontent.com/' +
'xboxoneresearch/errorcodes/main/postcodes.csv';

const MODEL_NAMES = {
XOP: 'Xbox One Phat',
XOS: 'Xbox One S',
XOX: 'Xbox One X'
};

const allowedModels = new Set(['XOP', 'XOS', 'XOX']);

const search = document.getElementById('cfPostSearch');
const consoleFilter = document.getElementById('cfPostConsole');
const typeFilter = document.getElementById('cfPostType');
const errorsOnly = document.getElementById('cfPostErrorsOnly');
const tbody = document.getElementById('cfPostBody');
const status = document.getElementById('cfPostStatus');

let rows = [];

function parseCSV(text) {
const table = [];
let row = [];
let field = '';
let quoted = false;

for (let i = 0; i < text.length; i++) {
const ch = text;

if (quoted) {
if (ch === '"') {
if (text[i + 1] === '"') {
field += '"';
i++;
} else {
quoted = false;
}
} else {
field += ch;
}

continue;
}

if (ch === '"') {
quoted = true;
} else if (ch === ',') {
row.push(field);
field = '';
} else if (ch === '\n') {
row.push(field);
table.push(row);
row = [];
field = '';
} else if (ch !== '\r') {
field += ch;
}
}

if (field.length || row.length) {
row.push(field);
table.push(row);
}

if (!table.length)
return [];

const headers = table.shift();

return table
.filter(r => r.some(v => v !== ''))
.map(r =>
Object.fromEntries(
headers.map((h, i) => [h, r ?? ''])
)
);
}

function escapeHTML(value) {
return String(value ?? '')
.replaceAll('&', '&amp;')
.replaceAll('<', '&lt;')
.replaceAll('>', '&gt;')
.replaceAll('"', '&quot;')
.replaceAll("'", '&#039;');
}

function render() {
const q = search.value.trim().toLowerCase();
const model = consoleFilter.value;
const type = typeFilter.value;

const filtered = rows.filter(item => {
if (model && item.Console !== model)
return false;

if (type && item.Type !== type)
return false;

if (errorsOnly.checked && item.IsError !== '1')
return false;

if (q) {
const haystack = [
item.Code,
item.Type,
item.Name,
item.Description,
MODEL_NAMES[item.Console]
].join(' ').toLowerCase();

if (!haystack.includes(q))
return false;
}

return true;
});

tbody.innerHTML = filtered.map(item => `
<tr>
<td class="cf-xbox-post__code">
${escapeHTML(item.Code)}
</td>

<td class="cf-xbox-post__type">
${escapeHTML(item.Type)}
</td>

<td class="cf-xbox-post__model">
${escapeHTML(MODEL_NAMES[item.Console] || item.Console)}
</td>

<td class="cf-xbox-post__name">
${escapeHTML(item.Name)}
</td>

<td>
${escapeHTML(item.Description || 'Описание пока отсутствует')}
</td>
</tr>
`).join('');

status.textContent =
`Найдено записей: ${filtered.length} из ${rows.length}`;
}

async function load() {
try {
const response = await fetch(CSV_URL, {
cache: 'no-cache'
});

if (!response.ok)
throw new Error(`HTTP ${response.status}`);

const csv = await response.text();

rows = parseCSV(csv)
.filter(item => allowedModels.has(item.Console));

rows.sort((a, b) =>
a.Code.localeCompare(
b.Code,
undefined,
{ numeric: true }
)
);

render();

} catch (error) {
console.error(error);

status.textContent =
'Не удалось загрузить базу POST-кодов. ' +
'Используйте ссылку на источник ниже.';
}
}

[search, consoleFilter, typeFilter, errorsOnly]
.forEach(el => el.addEventListener('input', render));

load();
})();
</script>
 
Регистрация
Назад
Сверху