BASH программы для wifi радио.
Jan. 31st, 2014 12:06 amУ американца было два скрипта: interface.sh и display2.sh. Interface.sh - это основная программа, которая выполняет запуск display2.sh, обрабатывает данные полученные с arduino и запускает воспроизведение конкретной станции на wifi радио.
В моем варианте, display2.sh превратился в скрипт lcd.sh и добавилось еще три файла.
- station-list.sh с массивам содержащим ссылки на аудиопотоки (vAddr), их имена (vName) и число каналов (STATIONS). Как искать ссылки на радио описал здесь.
- time.sh посылающий раз в секунду сообщение о текущем времени. Текущее время имеет формат "<три буквы дня недели> DD.MM.YY hh:mm".
- SendToTTY.sh посылающий раз в три секунды число доступных станций.
Несколько важных замечаний.
1. Для работы моих скриптов требуется интерпретатор команд bash, ибо busybox не понимает массивы.
2. Сообщения в arduino нельзя слать без паузы, хотя это и напрашивается в скрипте SendToTTY.sh, ибо тогда перегрузиться arduino.
3. В качестве устройства терминала надо использовать "/dev/ttyATH0" (название устройства последовательного порта в версии Attitude Adjustment прошивки openwrt), а не "/dev/tts/0" (последовательный порт в версии Kamikaze прошивки openwrt используемой mightyohm).
4. Некоторые станции работать будут воспроизводиться с заеданиями, это вызвано отсутствием математического сопроцессора в ЦПУ роутера: кодеки с использующие инструкции с плавающей точкой работают в роуторе очень медленно. Чаще всего это будут потоки закодированные "aac" или с измененным расширением с flv на mp3 по моему рецепту. Рекомендации гуляющие по интернету по замене поций компилирования с эмуляции плавающей запятой на фиксированную не помогают.
5. Для воспроизведения без ежесекундных пауз необходимо доработать файл "/etc/mpd.conf": разкоментировать блок описывающий устройство oss.
# An example of an OSS output:
#
audio_output {
type "oss"
name "My OSS Device"
device "/dev/dsp" # optional
format "44100:16:2" # optional
## mixer_type "hardware" # optional
## mixer_device "/dev/mixer" # optional
## mixer_control "PCM" # optional}6. Американец требует что бы его имя сохранили в любом коде производном от его, я это сделал.# This work is protected by the
# Creative Commons Attribution-Share Alike 3.0 United States License.
# http://creativecommons.org/licenses/by-sa/3.0/us/
#
( Read more... )