Початок тут.
Репо проєкту тут .
Після попереднього поста про навігацію AA на приладовій панелі, мені написали кілька хлопців з MIB2 - InstantCrush з ГП Amundsen та milhen з ГП Delphi (не знаю, як вони у VW називаються). Разом з InstantCrush ми досить швидко змусили мій патч працювати зі штатним меню Navigation у приладці. Водночас я допиляв відображення навігації через меню Media (як у першому пості), а саме:
Пофіксив баги, пов'язані з "чорним екраном" після форс-відключення телефона від AA. Раніше для цього доводилося перезавантажувати ГП.
Злегка "переграв" стрілкове відображення на приладці в меню Media, бо мої гарні стрілочки приладка малювати там відмовлялася. Тепер так:
Використав четвертий рядок (Q4) на приладці в меню Media під рухомий рядок з поточним треком, що грає, а якщо наступна подія по навігації - круговий рух, то в ньому відображатиметься номер з'їзду.
Ось як воно стало виглядати в результаті (тут музика не грає):
А InstantCrush допиляв функціонал для Amundsen (там працюють обидва меню - Navigation і Media):
З milhen ми намагалися змусити працювати патчик на MIB2 Delphi з прошивкою MST2_EU_VW_P0883D, але у делфі логіка АА лежить не в libext.google.gal.receiver.so (/tsd/lib/sal/gal/libext.google.gal.receiver.so), як у Technisat/Preh, а в libautoreceiver.so (/extbin/apps/lib/libautoreceiver.so.1). До кінця розібратися з його структурою мені поки не вдалося, зате вдалося домогтися відображення поточного треку з AA у приладці (AID). Складність з Delphi полягала в тому, що для нього немає тулбокса, і всі дії доводилося виконувати через delphi.sh. Під час однієї із "заливок" через delphi.sh, мій кривий sed завалив runHMI.sh, через що ГП впало в бутлуп :( на щастя, milhen'у вдалося його швидко підняти без реєстрації, смс та usb2ttl адаптерів :) Результат по цьому ГП на поточний момент:
Принцип роботи патча з моменту написання минулого звіту не змінився, і якщо коротко, то полягає він у наступному:
Трохи детальніше тут.
Важливо - /dev/shmem на QNX "замонтовані" прямісінько в RAM, тому саме цей розділ я і обрав для розміщення своїх shared-файликів. Кращого рішення я поки не знайшов.
DISCLAIMER: Все описане нижче тестувалося на ГП MIB2 Bolero та Amundsen з 480-ю прошивкою. Попри те, що я намагався робити патч "універсальним", я не можу гарантувати, що все заведеться на інших прошивках. За завалені юніти відповідальності не несу, все на ваш ризик. А ризик є.
Як розкатати на ГП
Якщо після перезавантаження щось пішло не так (наприклад, не працює/вилітає AA), то відкотити патч можна через те саме меню, пункт Disable AAtoKombi. Він відновить libext.google.gal.receiver.so з бекапу (бекап лежатиме в /tsd/lib/sal/gal/libext.google.gal.receiver.so.aatokombi.bak), видалить підключення AAtoKombi з /tsd/hmi/runHMI.sh і дропне сам файл /tsd/hmi/HMI/jar/AAtoKombi.jar.
По CarPlay новин поки жодних - не було часу.
Також, патч був випробуваний одним авантюристом з Мексики на Seat з VC, все працює ОК :)
PS Тямущих людей запрошую на "рев'ю" на Гітхаб. У мене досвіду з подібним стеком малувато, міг щось упустити/зайво ускладнити.