SearchMaps

Секция SearchMaps предназначена для определения критериев поиска различных карт в прошивке ECU.

Она состоит из двух основных частей: ObdMap и MapByMap.

"SearchMaps": {
    "ObdMap": {
        "StartSearch": {
            "Masks": [
                "32 05 08 D0 3A 10 17 D0 17 D0 2C D0",
                "32 05 08 D0 3B 10 17 D0 17 D0 2C D1"
            ],
            "AllMasksOffset": 0,
            "$SearchType": "MasksAndSingleOffset"
        },
        "EndSearch": {
            "Masks": [
                "64 00 00 00 00 00 49",
                "64 00 00 00 00 00 32"
            ],
            "AllMasksOffset": 0,
            "$SearchType": "MasksAndSingleOffset"
        },
        "LengthMustBeLessThan": 4000,
        "ValuePresentation": {
            "BytesOrder": "Hi_Lo"
        }
    },
    "MapByMap": [
        {
            "MapType": "Switch",
            "StartSearch": {
                "Masks": [
                    "00 00 00 00 00 00 00 00 00 0B 01 01",
                    "00 00 00 00 00 00 00 00 00 0B 0B 01"
                ],
                "AllMasksOffset": 10,
                "$SearchType": "MasksAndSingleOffset"
            },
            "ItemSize": 1
        },
        {
            "MapType": "Fault",
            "StartSearch": {
                "Masks": [
                    "01 01 01 01 01 01 01 00 FF FF FF FF",
                    "01 01 01 01 01 01 01 00 80 00 80 00"
                ],
                "AllMasksOffset": 10,
                "$SearchType": "MasksAndSingleOffset"
            },
            "ItemSize": 2
        }
    ]
}

ObdMap

Секция ObdMap определяет правила поиска начала и конца карты в прошивке посредством заданных шаблонов (масок) и смещений, а также устанавливает формат представления данных для последующей обработки.

Obd-карта является основной для определения размерности других карт, в которых находятся флаги удаления ошибки (такие как Alarm, Switch, Fault).

"ObdMap": {
    "StartSearch": {
        "Masks": [
            "32 05 08 D0 3A 10 17 D0 17 D0 2C D0",
            "32 05 08 D0 3B 10 17 D0 17 D0 2C D1"
        ],
        "AllMasksOffset": 0,
        "$SearchType": "MasksAndSingleOffset"
    },
    "EndSearch": {
        "Masks": [
            "00 64 00 00 00 00 00 49",
            "01 64 00 00 00 00 00 32"
        ],
        "AllMasksOffset": 1,
        "$SearchType": "MasksAndSingleOffset"
    },
    "LengthMustBeLessThan": 4000,
    "ValuePresentation": {
        "BytesOrder": "Hi_Lo"
    }
}

StartSearch

Masks: Массив строк, каждая из которых представляет последовательность байт для поиска начала карты. Добавление новой строки строго через запятую (,). В данном примере предусмотрены два варианта:

"32 05 08 D0 3A 10 17 D0 17 D0 2C D0",
"32 05 08 D0 3B 10 17 D0 17 D0 2C D1"

AllMasksOffset: Смещение (offset), указывающее, с какого байта начинается карта относительно начала маски. Нумерация начинается с 0. В данном примере значение равно 0, т.е. построение карты начнется с байта со значением 32.

$SearchType: Тип поиска. Используется MasksAndSingleOffset, что означает применение поиск по нескольким маскам с одинаквым смещением.

EndSearch

Masks: Массив строк, каждая из которых представляет последовательность байт для поиска конца карты. Добавление новой строки строго через запятую (,). В данном примере предусмотрены два варианта:

"00 64 00 00 00 00 00 49",
"01 64 00 00 00 00 00 32"

AllMasksOffset: Смещение (offset), указывающее, с какого байта заканчивается карта относительно начала маски. Нумерация начинается с 0. В данном примере значение равно 1, т.е. построение карты закончится не включая байт со значением 64.

$SearchType: Тип поиска. Используется MasksAndSingleOffset, что означает поиск по нескольким маскам с одинаквым смещением.

LengthMustBeLessThan

Ограничение максимальной длины карты, установленное в 4000 байт.

ValuePresentation

BytesOrder: Значение Hi_Lo указывает, что порядок байт определяется от старшего к младшему (big-endian).

MapByMap

В данной секции указывается массив правил для поиска карт типов Switch, Fault, Alarm для отключения ошибок. Количество карт любого типа может быть произвольным. В приведенном примере ищется по одной карте типа Switch и Fault.

Поиск осуществляется по поисковым строкам (маскам). Мы ищем только начало каждой карты, поскольку количество флагов для отключения ошибок рассчитывается на основе количества элементов, найденных в Obd-карте.

"MapByMap": [
{
    "MapType": "Switch",
    "StartSearch": {
        "Masks": [
            "00 00 00 00 00 00 00 00 00 0B 01 01",
            "00 00 00 00 00 00 00 00 00 0B 0B 01"
        ],
        "AllMasksOffset": 10,
        "$SearchType": "MasksAndSingleOffset"
    },
    "ItemSize": 1
},
{
    "MapType": "Fault",
    "StartSearch": {
        "Masks": [
            "01 01 01 01 01 01 01 00 FF FF FF FF",
            "01 01 01 01 01 01 01 00 80 00 80 00"
        ],
        "AllMasksOffset": 10,
        "$SearchType": "MasksAndSingleOffset"
    },
    "ItemSize": 2
}
]

MapType: Тип карты для поиска. Может иметь значения Switch, Fault, Alarm. В данном примере указана карта Switch.

StartSearch: правило поиска начала карты. Включает в себя следующие параметры:

Masks: Массив строк, каждая из которых представляет последовательность байт для поиска начала карты. Добавление новой строки строго через запятую (,). В данном примере предусмотрены два варианта:

"00 00 00 00 00 00 00 00 00 0B 01 01",
"00 00 00 00 00 00 00 00 00 0B 01 0B"

AllMasksOffset: Смещение (offset), указывающее, с какого байта начинается карта относительно начала маски. Нумерация начинается с 0. В данном примере значение равно 10, т.е. построение карты начнется с 10-го байта со значением 01.

$SearchType: Тип поиска. Используется MasksAndSingleOffset, что означает поиск по нескольким маскам с одинаквым смещением.

ItemSize: Размер одного элемента карты, т.е. сколько байт перезаписываем при сбросе ошибки. В данном примере 1 байт.

MapType: Тип карты для поиска. Может иметь значения Switch, Fault, Alarm. В данном примере указана карта Fault.

StartSearch: правило поиска начала карты. Включает в себя следующие параметры:

Masks: Массив строк, каждая из которых представляет последовательность байт для поиска начала карты. Добавление новой строки строго через запятую (,). В данном примере предусмотрены два варианта:

"01 01 01 01 01 01 01 00 FF FF FF FF",
"01 01 01 01 01 01 01 00 80 00 FF FF"

AllMasksOffset: Смещение (offset), указывающее, с какого байта начинается карта относительно начала маски. Нумерация начинается с 0. В данном примере значение равно 10, т.е. построение карты начнется с 10-го байта со значением FF.

$SearchType: Тип поиска. Используется MasksAndSingleOffset, что означает поиск по нескольким маскам с одинаквым смещением.

ItemSize: Размер одного элемента карты, т.е. сколько байт перезаписываем при сбросе ошибки. В данном примере 2 байта.

An error has occurred. This application may no longer respond until reloaded. Reload 🗙