PCCar.ru - Ваш автомобильный компьютер

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   Общение с машиной (http://pccar.ru/forumdisplay.php?f=14)
-   -   CITROEN-ARDUINO (http://pccar.ru/showthread.php?t=23275)

autowp 06.04.2016 13:02

Цитата:

Сообщение от xmetal (Сообщение 357533)
T_r_D можно понять, ветка не коммерческая зачем рекламировать свои продукты тут, есть же купля/продажа.

Никто ничего не предлагает, с чего вы взяли? Где?
Схемы - бесплатные
Прошивки - бесплатные, код открыт
Программа - бесплатная, код открыт

xmetal 06.04.2016 13:08

autowp, пост 271.

Dmitry8 06.04.2016 13:19

xmetal, там нет ни слова о продаже, в теме на которую ссылка этого тоже нет.
Зато есть неадекватные высказывания в #276. Ну пусть ответит: в чем "кривость"? Пусть предложит свой вариант.

xmetal 06.04.2016 13:31

"Готовое решение" подразумевает: платишь - получаешь готовое. Тема съезжает в оффтоп.

T_r_D 06.04.2016 13:33

Dmitry8
Я достаточно ёмко ответил.
Нет моего варианта. Есть правильный вариант который задуман и реализован компанией Citroen для своего продукта и кривой.
Я написал что надо открыть готовую железку от Citroen и посмотреть что там сделано.

Ну если у вас всё не коммерческое, то где я могу забрать десяток моих новых плат которые по ссылке "готовое решение" бесплатно?

PS.
Про даташит забыл
To prevent a false local wake-up during an open wire at pin WAKE, this pin has a weak pull-up current source towards VBAT. However, in order to protect the transceiver against any EMC immunity issues, it is recommended to connect a not used pin WAKE to pin BAT.

Dmitry8 06.04.2016 13:55

Цитата:

Сообщение от T_r_D (Сообщение 357541)
Dmitry8

PS.
Про даташит забыл
To prevent a false local wake-up during an open wire at pin WAKE, this pin has a weak pull-up current source towards VBAT. However, in order to protect the transceiver against any EMC immunity issues, it is recommended to connect a not used pin WAKE to pin BAT.

И чего? Тут написано: во избежание ложного пробуждения из-за неподключенного пина WAKE , этот пин должен быть "подтянут" резистором на VBAT.
Данная рекомендация выполнена (на схеме R2).
К тому же в схеме не используется "режим сна".

T_r_D 06.04.2016 14:15

Цитата:

Сообщение от Dmitry8 (Сообщение 357543)
И чего? Тут написано: во избежание ложного пробуждения из-за неподключенного пина WAKE , этот пин должен быть "подтянут" резистором на VBAT.
Данная рекомендация выполнена (на схеме R2).
К тому же в схеме не используется "режим сна".

this pin has a weak
1к- не сильно так...

Так где я могу забрать или как получить мои бесплатные платы?
Чего на этот вопрос не отвечаете-то?

Dmitry8 06.04.2016 14:26

Цитата:

Сообщение от T_r_D (Сообщение 357544)
this pin has a weak
1к- не сильно так...

Не понимаю что вы имеете в виду
Смотрим в апноут на стр. 22 находим схему, а на стр. 28 рекомендацию: "The recommended range for the series resistor being attached to the supply pin BAT is 1k
to 2k."

T_r_D 06.04.2016 14:29

Цитата:

Сообщение от Dmitry8 (Сообщение 357546)
Не понимаю что вы имеете в виду
Смотрим в апноут на стр. 22 находим схему, а на стр. 28 рекомендацию: "The recommended range for the series resistor being attached to the supply pin BAT is 1k
to 2k."

Rpull резистор 180к просто так там да?

Чо про платы-то?

autowp 06.04.2016 14:30

Цитата:

Сообщение от T_r_D (Сообщение 357544)
this pin has a weak
1к- не сильно так...

Так где я могу забрать или как получить мои бесплатные платы?
Чего на этот вопрос не отвечаете-то?

Зачем вы передергиваете? Бесплатных плат тут никто не предлагал.
Я за свой счёт вам ничего заказывать не имею желания.

И наша, и ваша бесплатность одинакова - ничего материального мы оба не раздаем. Однако мы "немного бесплатнее", потому что выкладываем коечто нематериальное, в отличии от вас.

autowp 06.04.2016 14:33

Цитата:

Сообщение от T_r_D (Сообщение 357547)
Rpull резистор 180к просто так там да?

180К там на схеме "With local wake-up switch", а рядом схема "No local wake-up implemented" и именно она должна рассматриваться.
Рекомендую открыть любой девайс из машины и срисовать схему, там никаких кнопок нет.

Всё таки не понятно, почему мы до сих пор не видим вашей схемы?

sisoft 06.04.2016 22:41

Цитата:

Сообщение от T_r_D (Сообщение 357516)
sisoft нужно использовать 105 иначе будут пропуски пакетов что не есть хорошо.

можно узнать причину возможных пропусков?

Цитата:

Сообщение от Dmitry8 (Сообщение 357503)
Мы пошли по другому пути: для обмена используем протокол lawicel и отправляем все что есть.

на сейчас примерно так и сделано. протокол гораздо проще - пакеты передаю как 16-ричные строки из ид+данные. отправляю ровно так же. универсальность конечно хорошо, но пока её просто некуда применить.


а по поводу резистора на Wake спор напрасный. единственное, что явно следует из даташита и апноута - что его номинал не должен превышать 180к. это может быть даже просто прямое соединение с BAT, если функционал спячки не используется. на работу точно не влияет.

Dmitry8 07.04.2016 08:27

Цитата:

Сообщение от sisoft (Сообщение 357594)
универсальность конечно хорошо, но пока её просто некуда применить.

Универсальность можно применить, например, используя свой девайс с канхакером(приложение для Win), очень удобно.

sisoft 10.04.2016 23:04

В эти выходные собрал уже систему из радио, дисплея и трансивера (адаптера). В трансивер добавил опциональную генерацию зажигания (ид 0х36) и спокойно наблюдал за шиной при действиях с радио.

Начал велосипедить симулятор дисплея на Kivy. пока пассивный, слушающий только пакеты от радио. соответственно без меню (т.к. его генерирует сам дисплей) и данных от бси.
Внешний вид 1-в-1 скопирован с оригинала - так проще сравнивать что кажет один и другой дисплеи и видеть разницу %)
скрин: http://i.imgur.com/9St7OQH.png


основная масса наработок тут: https://github.com/sisoftrg/citrocan
будет дополняться по мере наличия времени, желания вытаскивать всё это хояйство из машины и прогресса в изучении.

T_r_D 11.04.2016 08:32

sisoft посмотри в скетче последнем. Там есть все id которые отображает дисплей. С меню настроек аудио,громкости, pty, радио лист, треклист(без cd text- сколько болванок пепрепортил и не разу не пролучилось записать его), а так же надпись please wait и pty XXX not found (или как-то так).
Кстати найти бы id от БСИ... Там должно приходить списком все функции которые поддерживает машина. Ну тоесть битами в байте. Так как ответ генерирует сам дисплей когда меняешь настройки.
Я этим займусь как допилю окончательно программную часть для работы без дисплея. Там на самом деле много нюансов как оказалось.

А в 103 там же одини и те же пины под кан и юсб. Поэтому возможно попасть в передачу кана когда шлёш в юсб. Или их можно разнести? Даташит не очень изучал на самом деле.

sisoft 11.04.2016 13:27

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

почти со всем передаваемым от радио дисплею данными я и так разобрался, благодаря экспериментам и базовым данным с таблицы от autowp (которую тоже пополняю). есть конечно ещё белые пятна, но видимо от функционала, которого у меня нет (всякие цд-ченджеры, хандсфри блютусы..), либо адресованное в сторону бси. короче рыть есть куда, но это уже не так важно.

данными от бси (и прочих возможных узлов) не занимался пока совсем, сначала решено добить автономную систему дисплея-радио.

в 103 я усб не использую, поэтому проблема не актуальна. уарта более чем достаточно.

T_r_D 11.04.2016 19:20

sisoft дройд просто отображает инфу и всё. Всю работу делает ардуина.

По сути в дройде только куча текствью которые отображают инфу и всё.
А, ну ещё пересчитывает по формулам данные типо скорости и частоты радио.

T_r_D 12.04.2016 23:46

Интересно, а есть ли в FT кане напряжение аккума?

PS. Вроде всё написал что хотел, дисплей сэмулировал полностью. В главное меню осталось только конфиг машины добавить. Так что на выходных иду снимать дисплей и тестировать сброс трипа и пытаться найти ID в котором опции машины присутствуют. Дисплей кстати на них отвечает по ID 15B. Когда включаешь и выключаешь.

sisoft 13.04.2016 00:39

Напряжение точно есть в канах, но именно в этом неизвестно. Найти будет точно не просто, т.к. во 1х оно с большой вероятностью будет с каким-то множителем, во 2х им сложно манипулировать для поиска реакции, в 3х нигде не выводится. Проще сюда же на свой контроллер завести и померить, ацп'шники всё равно не заняты.

Сегодня снял домой на стол модуль управления климатом. Автономно работает не полноценно - не видит кондёра, не включается авто-режим. но как минимум пометил его айдишники и вытащил что смог покрутить %) дублировать показания на планшет уже можно, а вот можно ли управлять - пока не понятно.

T_r_D 13.04.2016 12:41

Вечером домой приеду и дам инструкцию как с эмулировать дисплей.

С кондишеном интересно- id выложить чтоль. Заменить блок было бы хорошо.

По поводу напряжения- есть идеи. Попробую реализовать

T_r_D 13.04.2016 23:49

Вот описание ID DF


За открытие меню отвечает второй байт.
50HEX 0101 0000 закрыто
70HEX 0111 0000 открыто

Первый байт отвечает за выбор элемента.
Отображает выбраный элемент в реальном времени если меню вызвано через OK
или последний элемент с которым производились действия если меню вызвано через MENU.
При повторном входе в меню любой кнопкой сбрасывается на первый элемент.
(Реальное положение храниться в дисплее).
1HEX 00000001 Alternative frequencies
3HEX 00000011 Regional mode (00000010, но не включается без RDS)
24HEX 00100100 Radio-text information
41HEX 01000001 Track Intro
42HEX 01000010 Track random play
43HEX 01000011 CD Repeat

Нулевой байт отвечает сразу за 2 функции.
при неактивном меню
10HEX 00010000 любое меню кроме основного (в том числе и настройки аудио)
11HEX 00010001 элемен был деактивирован
12HEX 00010010 элемент был активирован
при активном
90HEX 10010000 основное меню
91HEX 10010001 элемент был активирован - передаётся во время нажатия OK. И код элемента в первом байте
92HEX 10010010 элемент был деактивирован - передаётся во время нажатия OK. И код элемента в первом байте

ID ни как не реагирует на открытие BAND!!! (то меню которое по кнопкам 1-6)

для активации функции надо посылать
12,код элемента,50
для деактивации функции надо посылать
11,код элемента,50

стандартные посылки
Меню закрыто 10,0,50
любое меню открыто 10,0,70
основное меню открыто 90,0,70

Тоесть сначала отлавливаем от магнитолы открытие меню, ну например PTY
Это ID 265 ,байт 1, бит 6.
как только появляется в этом бите 1, то нужно каждые 100мс начинать генерировать в шину 10,0,70.
Иначе не будут работать кнопки навигации на магнитоле, а будут так же управлять или радио или воспроизведением как при закрытом меню.

sisoft 14.04.2016 02:21

Хорошо. только автономно дисплейное меню содержит меньше пунктов, чем в машине. видимо из бси передаётся информация о конфигурации, в соответсвии с которой дисплей подстраивает своё меню. описанные выше пункты - как раз из автономного режима. те, поддержку которых ещё в каком-то сообщении заявило радио. тоже надо будет найти.

инфа по климату выложена на страничку autowp. заменить этот блок не выйдет, т.к. это не только экран с кнопками, туда приходит порядка десятка датчиков аналоговых. и сама логика управления агрегатами думаю там же зашита.

тем временем мой симулятор полностью симулирует всё, кроме менюшек всплывающих.
оригинал радио: http://i.imgur.com/XWgY7e7.png, клон: http://i.imgur.com/aOcDhH8.png
оригинал цд: http://i.imgur.com/M3r3OlB.png, клон: http://i.imgur.com/7iSZE4y.png

T_r_D 14.04.2016 08:38

sisoft
Думаешь что пункты меню передаются в дисплей?

Тогда надо искать мультифрейм.

Почему ты думаешь что пунктов содержится в дисплее меньше?
Думаешь есть отдельный ID который который посылает магнитола говоря какие ей нужны пункты?

sisoft 14.04.2016 11:24

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

T_r_D 14.04.2016 12:58

А, ну тогда у нас мысли схожи.
Правда от магнитолы я не предполагал что есть такой пакет

T_r_D 15.04.2016 00:42

А может кто встречал терминал который может слать строки из файла в COM порт с задержкой?
Хочу хитро кормить снятый лог с машины дисплею.

autowp 15.04.2016 00:51

Цитата:

Сообщение от T_r_D (Сообщение 358393)
А может кто встречал терминал который может слать строки из файла в COM порт с задержкой?
Хочу хитро кормить снятый лог с машины дисплею.

CanHacker

T_r_D 15.04.2016 13:54

А интересный вопрос- для ченджера рандом,репит, иинтро в ответах по df имеет другие значения или цд и ченджер прользуют одни настройки?
Веди стаптус этих функций унитх в разных id

alpetgor 18.04.2016 22:42

Добрый день. Хочу прочитать VAN шину в citroen c5 (2002) - не подскажете может где-то уже обсуждалось это, пока не могу ничего найти. Нужно считать нажатие кнопок управления магнитолой. Есть arduino uno, плата mcp2515_can.

T_r_D 19.04.2016 19:48

alpetgor
Старая шина.
Нужно найти как к ней подключится, тоесть какой контроллер нужен для этого, ну а далее копать протокол.
По ПСА вообще мало какой либо инфы.

T_r_D 21.04.2016 13:27

Итак, продолжаем.
Чтоб магнитола видила дисплей в шину нужно слать ID 0x167.
А чтоб сбросить трип нужно слать в этот ID в нулевой байт 8 и состояние дисплея.
Тоесть.
Дисплей без удержания кнопки трипа 0x9,0x6,0xFF,0xFF,0x7F,0xFF,0x0, 0x0
А с удержанием кнопки 0x89,0x6,0xFF,0xFF,0x7F,0xFF,0x0, 0x0

Сама кнопка находится в ID 0x221 ,байт 0 бит 3:
Код выглядит так:
PHP код:

unsigned char DisplayTripReset[8] = {0x89,0x6,0xFF,0xFF,0x7F,0xFF,0x00x0};
            if (
bitRead(buf[0],3) == 1KeyCount KeyCount 1;
            if (
bitRead(buf[0],3) == 0KeyCount 0;
            if (
KeyCount 1CAN.sendMsgBuf(0x16708DisplayTripReset); 

При удержании кнопки этот ID повторяется раз в секунду!

Надо ещё проверить реакцию на 8А, а то реальный дисплей только при значении А и С отзывается на кнопку трипа.
Но похоже важен только последний бит в 0 байте.

Как вы уже поняли я это оттестировал в машине.
Всё работает. Осталось найти меню самой машины и проект с заменой дисплея будет завершён.
Дальше буду делать умный БП для планшета, но это уже не относиться к данной теме.

T_r_D 22.04.2016 16:29

Снял лог, прокрутил дома его. Толи я чо-то не доснимал, толи хз.
Нету показаний опций машины!

sisoft 23.04.2016 20:42

Есть они, точно. Вчера в пробку попал, пока стоял покрутил всё что знаю что бы сравнить с тем, что получал на столе и, соответственно, что приходит извне (из бси).

в итоге получилось как-то так:
- больше опций в меню (включать задний дворник при ЗХ и т.п.)
- статус функций (включены ли блокировка дверей, пассажирские подушки и т.п.). он был и на столе, но пустой.
- журнал предупреждений (на столе его не находил, даже после посылания ошибок)
- меню настройки многофункциональной клавиши (которая на руле рядом с рециркуляцией)


в целом пока был занят, так что больше ничего не копал. зато приехала рамка под планшет, так что продолжение уже скоро %)

T_r_D 25.04.2016 05:12

Цитата:

Сообщение от sisoft (Сообщение 359098)
Есть они, точно. Вчера в пробку попал, пока стоял покрутил всё что знаю что бы сравнить с тем, что получал на столе и, соответственно, что приходит извне (из бси).

в итоге получилось как-то так:
- больше опций в меню (включать задний дворник при ЗХ и т.п.)
- статус функций (включены ли блокировка дверей, пассажирские подушки и т.п.). он был и на столе, но пустой.
- журнал предупреждений (на столе его не находил, даже после посылания ошибок)
- меню настройки многофункциональной клавиши (которая на руле рядом с рециркуляцией)


в целом пока был занят, так что больше ничего не копал. зато приехала рамка под планшет, так что продолжение уже скоро %)

Я тебя чего-то не совсем понял!
Ты нашёл ID который передаёт бси и в котором инфа об опциях?
Просто я знаю ID который передаёт дисплей.
Rew Wipe Activ/Inactiv
15B byte 5 208 activ/192 inactiv.
Но это дисплей передаёт статус функции, а откуда он узнаёт какие опции доступны я не нашёл.

А с рамкой всё просто. Нужно сделать пластину и просверлить 4 отверстия в стойках штатного крепления. Тут где-то фотки есть как я сделал.
Я тоже думал что будет быстро :) Фигушки!
Как только думаешь что всё- появляются косяки!
У меня почему-то пропуски пакетов идут жосткие. Ща наверное попробую сменить библиотеку для MCP.
А может просто из за места подключения в машине так происходит...
Так же день потратил на то, чтоб поставить USB HUB.
Но теперь при подключении хаба если в него вставлена и ардуина и флешка, то софтина думает что флешка тоже по её душу и хочет чтоб её назначили программой по умолчанию.
Короче косяк на косяке!
А ещё нужно всему этому питание организовать и управлять им!

PS А что за статус функций? Он у меня на однострочечном дисплеи вроде вообще не отражается.

sisoft 28.04.2016 21:50

Нет, я пока не искал что-либо от бси, потому что возился без машины. я только знаю, что он есть :)
в принципе у меня есть дамп включения зажигания - попробую в нём покопаться, выфильтровав всё известное и поэкспериментировав с остальным. заниматься отладкой в машине будет менее удобно, поэтому к этой стадии хотел подойти с максимумом знаний и почти готовым софтом, что бы добивать там только данные от бси.

планшет в рамку закрепил похоже - просверлив стойки, но вместо пластины оргстекла вставил просто две спицы, прижало нормально. плюс пришлось вычистить кучу пластика внутри что бы влезло по габаритам и небыло зазора до дисплея. впрочем это уже оффтоп здесь.

есть другой интересный вопрос. почти сразу после включения зажигания бси может выдать порцию сообщений - масла добавить, дверь закрыть и т.п. штатный дисплей загружается быстро и к этому моменту всегда готов, а будет ли планшет готов принять данные так скоро? он может быть банально выключен и очнётся в лучшем случае через минуту.
пока есть идея сделать буфер для избранных сообщений в трансивере на стм32 и сливать его софту планшета, когда он подключится.

T_r_D 29.04.2016 00:16

А штатный дисплей и не выключается! Он всегда работает.
По поводу буфера- идея интересная. Надо подумать. Я как-то это из вида упустил.

Про рамку- ну на оргстекле я плату же закрепил, потом там сооружу стенки и будет коробочка.

Лог я копал как раз. Выкинул всё известное и ни чего не вышло. Не появились пункты на столе. Надо ещё попробовать.

sisoft 29.04.2016 00:43

дисплей тоже не всегда, только когда на шине активность есть, иначе в глубокой спячке.

сейчас собрал на столе опять дисплей+радио+трансивер, слазил в меню.
в меню трип компьютера только задание дистанции до цели и пустой статус функций, в меню персонализации конфигурация дисплея и смена языка.

затем проиграл запись включения зажигания, снова зашёл в меню. в трипе статус функций заполнился и появился журнал предупреждений. в персонализации появился раздел настроек машины с двумя подменю - помощь парковки (галка включеня дворников задних при ЗХ) и освещение/сигнализация (галка проводи-меня-домой и таймер).

статус функций это такой список: http://i.imgur.com/rKrIYkL.png
например упомянутая здесь esp выключается отдельной физической кнопкой и статус прилетает сюда явно от бси.


update: всё нашёл. ид 120 добавляет журнал предупреждений, 2e1 - статус функций, 361 - настройки машины, плюс ещё некоторые мелочи. позже оформлю в описание.

T_r_D 29.04.2016 15:19

2E1 статус функций

byte 0
00000001 Automatic door locking deactivated
00000011 Automatic door locking activated
00000100 Automatic headlamp lighting deactivated
00001100 Automatic headlamp lighting activated
00010000 Passenger's airbag deactivated
00110000 Passenger's airbag activated
01000000 Parking assistance deactivated
11000000 Parking assistance activated

byte 1
00000001 Sport suspension mode activated
00000010 Sport suspension mode deactivated
00000100 Automatic screen wipe deactivated
00001100 Automatic screen wipe activated
00010000 ESP system deactivated
00110000 ESP system activated
01000000 Door unlocking performed
11000000 Door locking performed

byte 2
01000000 Child safety deactivated
11000000 Child safety activated

только 3 байта. С остальными 5 что не делал- ни чего не меняется.

Тоесть 2E1 это просто отображение информации? Изменить в этом меню ни чего нельзя?
Правильно понял?

А 361 это настраиваемые функции?

T_r_D 30.04.2016 12:41

Поиграл я с 361 ID.

Добился только двух пунктов в каждом по подпункту:
Parking assistance
--->Activation of rear wiper in reverce gear

Lighting and signalling
--->Guide-me-home headlamps 60s

Parking assistance байт 3 равный 0х20
Lighting and signalling байт 2 равный 0х10

пробовал во всех шести байтах ставить значения 0х01, 0х02, 0х04, 0х08, 0х10, 0х20, 0х40, 0х80. Кроме этого ни чего не появилось.
Перебирать все значения чтоль теперь?
Знать бы хотябы сколько там пунктов может быть и сколько в них подпунктов.

UPDATE:
А параметры кстати сохраняются в дисплее!
И отдаёт он их по 0х15B.
байт 2
0х21 Дорожка к дому 15с
0х22 30с
0х24 60с
00100000 активность
00000011 биты время

байт 5
0х00 дворник не активен
0х10 дворник активен
00010000 активность.

T_r_D 30.04.2016 12:46

Вот что нашёл, но это от DS4
Define the vehicle parameters

This menu allows you to activate or deactivate
the following equipment, classified in different
categories:
-
"Access to the vehicle" (see the "Access"
section):

"Plip action" (Selective unlocking of the
driver's door),

"Unlocking boot only" (Selective
unlocking of the boot).
"Driving assistance":

"Parking brake automatic" (Automatic
electric parking brake; see the "Driving"
section),

"Rear wipe in reverse gear" (Rear
wiper coupled to reverse gear; see the
"Visibility" section),

"Speeds memorised" (Memorising
speeds; see the "Driving" section).
-
"Vehicle lighting" (see the "Visibility"
section):

"Directional headlamps" (Main/additional
directional lighting),

"Daytime lights" (Daytime running lamps).
-
"Interior lighting" (see the "Visibility"
section:

"Follow-me-home headlamps"
(Automatic operation of headlamps after
switching off the ignition),

"Welcome lighting" (Exterior and interior
welcome lighting).

И ещё где-то на каком-то форуме

PERSONALISATION-CONFIGURATION Персонализация-Конфигурация

Define the vehicle parameters Определить параметры автомобиля

Parking assistance Помощь при парковке
---->Activation of rear wiper in reverse gear Активация заднего стеклоочистителя при включении ЗХ

Lighting and signaling Освещение и сигнальные огни
---->Automatic lighting of headlamp (вкл # выкл) Автоматическое включение головного света
---->Guide-me-home headlamp (вкл # выкл) Функция "дорожка к дому" minute таймер в минутах

Driving assistance Помощь при вождении
---->Directional headlamps (вкл # выкл) Поворот фар в зависимости от угла поворота колес

ТОесть если последнее это наше, то нету ещё одного пункта с подпунктом.


Часовой пояс GMT +4, время: 10:46.

Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot