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 байта.