Уважаемые товарищи, софорумники и просто хорошие люди! У меня это получилось!!! И получилось с Вашей помощью. Без Вас всех я бы еще долго шел к этой цели.
Путем недели!!! бессонных ночей (я реально проводил по 18-20 часов за этим делом) я вычислил все необходимые пакеты и даже написал тестовую программу для Android, которая отправляет это все в конверс через CAN-Hacker по протоколу Lawicel.
Определимся с тем, как будут описываться пакеты для тех, кто еще не в теме:
4D9 DLC 8 XX XX XX XX XX XX XX XX
Это означает, что ID пакета 4D9. Дальше DLC означает сколько будет у нас байт в пакете (в данном случае 8), дальше идут сами байты в шестнадцатеричной системе — от 00 до FF. В десятичной системе будет от 0 до 255.
Что умеем на данный момент:
- Режим «Магнитола выключена», когда все пункты есть, но неактивны.
- Передавать уровни громкости, а их тут пять.
- Отображать экран радио с частотой, RDS, номером канала, типом радио (FM1, FM2 и т.д.)
- Отображать экран AUX.
- Отображать экран CD-MP3 с полной информацией о треке: название папки, название файла и информация из тегов МР3 - альбом, исполнитель, имя трека
- Включать поддержку навигации. Особенно обрадуются те, у кого штатная Sony и они никогда не видели данный пункт у себя в конверсе
1. Режим «Магнитола выключена», когда все пункты есть, но неактивны.
Для этого достаточно отправлять три пакета раз в секунду.
2. Передавать уровни громкости, а их тут пять.
3. Отображать экран радио с частотой, RDS, номером канала, типом радио
4. Отображать экран AUX.
5. Отображать экран CD-MP3 с полной информацией о треке: название папки, название файла и информация из тегов МР3 - альбом, исполнитель, имя трека
В начале пути я думал, что это будет немного сложнее радио, но я ошибался. Было не просто все проанализировать и отсеять множество вариантов. Тестирование проводилось на штатной магнитоле Sony с серой крутилкой. Было выяснено, что магнитола передает инфу о треке только в момент переключения трека, либо когда это запрашивает конверс — когда мы жмем вправо, чтобы получить список треков. Но я пока не дошел до уровня двустороннего общения магнитолы и конверса.
Изначально я думал, что при переключении трека магнитола шлет всего две строчки в конверс, но оказалось это совсем не так...
Оказалось, что при переключении трека, магнитола последовательно шлет сначала название трека, потом название папки, а через около 100-200 мсек всю инфу из MP3 тегов. А вот дальше идет список треков для списка в конверсе, но на данном этапе последнее нам не нужно. Это было для меня настоящим открытием и сильно обрадовало меня, т. к. это расширяет функционал. По логике конверса получается, что, если у нас нет инфы о тегах, мы показываем название папки и имя файла. Далее у нас есть три поля из тегов: Альбом, Исполнитель , Название трека. И что очень интересно — если не заполнен исполнитель (переданы 0x00 вместо символов), то отображается альбом. Получается, что первая строка — название файла, которое меняется на инфу из мр3 тегов, когда они приходят, вторая строка — всегда номер трека. Третья строка — название папки, когда приходят теги — название исполнителя, а если его нет — название альбома. Если нет инфы об альбоме и исполнителе, но есть инфа из тегов мр3, то будет отображаться только первая строка и во второй номер трека.
Попробуем разложить все по полочкам:
Включать поддержку навигации.
За навигацию отвечает ID 4C1. Всегда передаем 8 байт.
В результате полученные данные были опробованы в тестовом приложении для Android. Все как на видео