Теперь перейдем к описанию программной части.
На планшет установлен Cyanogenmod 9 от 13.09.2012 (дальше, к сожалению, автор прекратил поддержку этого железа).
Ядро 3.08+
Для реализации задач в него были добавлены недостающие модули для FT232 и EasyCap.
Вот полная инструкция по установке со стоковой прошивки Android ICS 1.0.
0. Скачать файлы
cm9_nightly_20120913.zip
aurora-v1-v2_legacy-compatibility_v1.zip
Misc.zip (смотри вложение):
bootanimation.zip (IVI by tsynik)
quicksshd.2.0.3.apk
gps.sun4i.so
ftdi_sio.ko
easycap_syntek.ko
USB Sound.zip (смотри вложение):
snd-hwdep.ko
snd-rawmidi.ko
snd-usbmidi-lib.ko
snd-usb-audio.ko
1. Установить
CWM Recovery
2.Установить через CWM прошивку
cm9_nightly_20120913.zip
3. Установить через CWM патч тачскрина
aurora-v1-v2_legacy-compatibility_v1.zip
4. Подключить клавиатуру
5. Включить Wi-Fi и настроить соединение
6. Включить ADB Over Network (Settings->Developer options)
7. На компе подключиться к планшету, подмонтировать системный раздел на запись:
PHP код:
adb connect IP
adb remount
IP посмотреть в свойствах соединения в планшете
8. Установить QuickSSHd
PHP код:
adb install pathto_file/quicksshd.2.0.3.apk
9. Запустить на планшете QuickSSHd и установить пароль
10. Создать соединение в WinSCP c логином root и только что установленным паролем
Протокол выбрать SFTP
11. Сменить плотность экрана на 120:
В WinSCP зайти в папку /system и отредактировать файл build.prop:
PHP код:
ro.sf.lcd_density=160
заменить на
PHP код:
ro.sf.lcd_density=120
12. Установить другой bootanimation (опционально)
В WinSCP зайти в папку /data/local/ и положить туда bootanimation.zip
13. Для работы с GPS:
13.1 В WinSCP зайти в папку /system/lib/hw/ и переименовать gps.sun4i.so в gps.sun4i.so.old
Положить в эту папку новый gps.sun4i.so и сменить права на файл на 0644 (кнопкой F9)
13.2
Для внешнего USB GPS с чипом FT232
С помощью WinSCP положить файл ftdi_sio.ko в /system/lib/modules/
и поменять права на 0644
Для внешнего USB GPS с чипом PL2303 файл pl2303.ko уже лежит в /system/lib/modules/
13.3 С помощью WinSCP зайти в папку /system/etc/init.d
и в файле 02modules
для внешнего USB GPS с чипом FT232
заменить
PHP код:
#!/system/bin/sh
#
insmod /system/lib/modules/btusb.ko
insmod /system/lib/modules/pl2303.ko
insmod /system/lib/modules/tun.ko
echo "done Additional Modules Autoload"
на
PHP код:
#!/system/bin/sh
#
insmod /system/lib/modules/btusb.ko
insmod /system/lib/modules/ftdi_sio.ko
insmod /system/lib/modules/tun.ko
busybox stty -F /dev/ttyUSB0 ispeed 38400
busybox chmod 666 /dev/ttyUSB0
setprop "ro.kernel.android.gps" "ttyUSB0"
#
# Navitel Safe Start fix
#
sed -i 's/SafeExit = 0/SafeExit = 1/g' /data/data/com.navitel/settings.001.ini
echo "done Additional Modules Autoload"
для внешнего USB GPS с чипом PL2303
заменить
PHP код:
#!/system/bin/sh
#
insmod /system/lib/modules/btusb.ko
insmod /system/lib/modules/pl2303.ko
insmod /system/lib/modules/tun.ko
busybox stty -F /dev/ttyUSB0 ispeed 38400
busybox chmod 666 /dev/ttyUSB0
setprop "ro.kernel.android.gps" "ttyUSB0"
#
# Navitel Safe Start fix
#
sed -i 's/SafeExit = 0/SafeExit = 1/g' /data/data/com.navitel/settings.001.ini
echo "done Additional Modules Autoload"
Внимание!
38400 - это скорость порта Вашего GPS приемника, замените на свое значение, если нужно
14. Для корректной работы USB звука - актуально для DAC на PCM2704 и ,любых безымянных USB звуковых карт
14.1 С помощью WinSCP зайти в папку /system/etc/init.d
и в файле 10usbaudio замените его содержимое на
PHP код:
#!/system/bin/sh
#
insmod /system/lib/modules/snd-hwdep.ko
insmod /system/lib/modules/snd-rawmidi.ko
insmod /system/lib/modules/snd-usbmidi-lib.ko
insmod /system/lib/modules/snd-usb-audio.ko
if [ -c /dev/snd/pcmC2D0p ]; then
# valid values for media.audio.out.mode: codec, usb
setprop media.audio.out.mode usb
/system/bin/log -t usb-audio "### Route all audio to USB."
else
/system/bin/log -t usb-audio "### /dev/snd/pcmC2D0p does not exist. Use default output (codec)"
fi
echo "done USB Audio Modules Autoload"
14.2 Скопировать содержимое USB Sound.zip в /system/lib/modules/
и поставить права 0644 для этих файлов с помощью WinSCP (кнопкой F9)
15. Для работы камеры заднего вида на STK1160
15.1 С помощью WinSCP положить файл easycap_syntek.ko в /system/lib/modules/
и поменять права на 0644
15.2 С помощью WinSCP зайти в папку /system/etc/init.d
и в файле 02modules добавить строку
PHP код:
insmod /system/lib/modules/easycap_syntek.ko bars=0
Код прошивки для teensy выложен в предыдущем посте ( teensy_code.zip)
В задачу teensy входит связать программную оболочку в планшете с магнитолой, рулевыми кнопками, термометрами и подогревами сидений. Для передачи-приема данных был использован второй аппаратный UART (первый уже занят USB и использовался для отладки). Со стороны планшета teensy выглядит как COM-порт /dev/ttyUSB1 с baudrate 38400.
Весь интерфейс взаимодействия с пользователем построен с использованием моей оболочки AutoLauncher.
Идеологически это полупрозрачное приложение, стартующее через некоторое время после старта системы (задержка нужна, чтобы USB HDD успел смонтироваться в систему) и висящее поверх остальных программ. Сразу после запуска оболочка пытается загрузить последний использованный плейлист, стартует аудиоплеер с первого трека и запускает Навител. Также в момент старта она отправляет последние использованные настройки звука в teensy (при включении питания прошивка teensy всегда инициализирует аудиоустройство со средними значениями).
После загрузки оболочка может управляться с тачскрина и с рулевых кнопок (только базовые функции - громкость / mute, переключение режимов радио-плеер, переключение треков и запомненных станций радио). Так как оболочка висит поверх остальных приложений, то для выхода на рабочий стол системы есть специальная кнопка в настройках, системные кнопки на нее не действуют. Оболочка в любой момент может быть минимизирована до одной небольшой иконки нажатием на нижнюю кнопку панели.
Оболочка может быть запущена только на Android 4.x и оптимизирована для разрешения 800x480 и плотность экрана 120dpi.
Выполняемые функции:
1. Аудиоплеер MP3, FLAC, APE с поддержкой плейлистов и CUE. Управляется с тачскрина и рулевых кнопок (пауза, переключение треков)
2. FM радио, только 87.5 -108 МГц, только ручная настройка. Управляется с тачскрина и рулевых кнопок (переключение станций)
3. Отображение 4 термометров (идентификаторы жестко забиты в скетче и требуется правка скетча при использовании других DS18B20) - внутрисалонной, внешней, левого и правого подогревов сидений. Управление включением-выключением подогревов и установка пороговых температур включения-выключения раздельно для обоих каналов управления. Управление с тачскрина и включение-выключение с рулевых кнопок
4. Аудиоконтроллер - всплывающее окно при регулировке с рулевых кнопок и включении-выключении mute, громкость / баланс / уровень заднего левого / уровень заднего правого / тембр НЧ / тембр ВЧ - управление с тачскрина и рулевых кнопок
5. Настройка кодов рулевых кнопок
6. Настройка параметров просмотра камеры заднего вида - поддерживаются аналоговые (EasyCap) и сетевые камеры (MPEG4 / H.264)
7. Просмотр изображения с камеры заднего вида в автоматическом режиме по сигналу с фонарей заднего хода и в ручном режиме специальной кнопкой в настройках. Выход из ручного режима - по нажатию на любое место экрана. В обоих режимах изображение обладает наивысшим приоритетом - переход в него происходит из любого режима работы оболочки. После пропадания сигнала с фонарей в автоматическом режиме переключения возврат происходит в предыдущий режим работы.
Скриншоты оболочки
Основной режим
Плеер (немного неудачная фотка - потом заменю)
Радио
Термометры / подогрев
Аудиопараметры
Громкость (всплывающее окно)
Настройки
Камера
Скачать AutoLauncher (версия 800x480, только сетевые камеры)
Скачать AutoLauncher (версия 1024x768 с поддержкой аналоговых камер)
10.03.2013: Обновленная версия AutoLauncher (уменьшено время старта просмотрщика камеры, неблокирующий загрузчик плейлиста на старте программы - актуально для больших плейлистов)
Для 800x480 (120dpi)
Для 1024x768 (132dpi)
07.04.2013
Обновленная версия AutoLauncher
здесь (ускорение загрузки и уменьшено время старта промотрщика камеры):