Введение

PC-ОС

БП

Дисплей

Координатор

mpg321

В предыдущем разделе было решено использовать по возможности програмные компоненты, готовые к употреблению. mpg321 - это плейер audio-mpg файлов, в т.ч. mp3. Он не единственный в природе, но был выбран по следующим причинам: присутствовал в моём дистрибутиве Zenwalk, им можно управлять с командной строки и даже есть режим для работы с фронт-endом, он достаточно компактен. Не путайте его с mpg123 - такой плейер тоже есть, но речь не о нем.

Особенно интересен режим работы с фронт-endом: для работы в этом режиме приложение (фронт-end - т.е. некая программа, обеспечивающая пользовательский интерфейс) открывает двунаправленный канал ввода-вывода, а затем запускает mpg321 подключенным к этому каналу, указав специальный ключ командной строки. После этого фронт-end отдает по каналу команды на воспроизведение файлов, остановки, паузы и т.д. и получает информацию о состоянии плейера.

Пользователь не пугается командной строки, фронт-end обеспечивает подходящий интерфейс, mpg321 воспроизводит музыку. Каждый занят своим делом.

Пользователь у нас уже есть, mpg321 можно найти даже скомпилированным, остается фронт-end. Его мы напишем сами. А пока не написали, просто убедитесь, что все остальное работает: если в командной строке mpg321 указать имя файла - он его должен воспроизвести:

mpg321 mylikemusic.mp3

Если это работает - больше mpg321 не трогаем. Если нет - лезем в тематические форумы фидо или инета. Хотя лучше сначала проверить подключенность аккустики, корректность определения ядром звуковой карты (и вообще, наличие в ядре oss или alsa) и установки микшера.

alsactl и amixer

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

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

  • Настраиваем параметры amixer'ом (или чем вам больше нравиться, можно даже alsactr, но там мануал шибко длинный): все входы должны быть отключены, особенно микрофонный (от него шума много), выходы main и pcm установлены на уровень 80 %, прочие выходы выключены.
  • Даем команду alsactl store (файловая система /etc должна быть доступна для записи).
  • Проверяем наличие в каком либо из файлов /etc/rc.d/ команды /usr/sbin/alsactl restore - она при последующих загрузках будет восстановливать созданную конфигурацию.

proftpd

Как и многое другое в плейере - ftp - это часть опциональная. Но удобная. Иногда она удобна просто как домашний ftp для перекидывания файлов с одной машины на другую, иногда по прямому назначению - закачивание-удаление файлов с плейера. Выбор пал на proftpd лишь по одной причине - его удалось найти построенным для Zenwalk раньше других. Если бы я использовал FreeBSD - остановился бы на ftpd; proftpd, IMHO, слишком могучая прога для нашей простой задачи.

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

Тонкости, на которые я обращу ваше внимание:

  • /tmp - там proftpd создает для каких-то своих целей специальный файл. Именованный канал или unix-сокет - не важно - /tmp должен быть открыт для записи. Это обсуждалось в предыдущем разделе.
  • Логин для входа - anonymous или deka. Пускает на чтение/запись в директорию /Data.
  • Для клиентского ip 10.0.0.5 запрещает какую-либо модификацию. Этот ip имеет винда - она любит иногда всякие tr*bals.db писать - надоела уже - поэтому с нее только просмотр (обычно я работаю с FreeBSD - она на той же машине, но имеет другой адрес).
  • Файл настройки /etc/proftpd.conf можно взглянуть в ранее упоминавшемся etc.tgz.

sshd

Удаленное управление плейером - штука очень удобная. Как было поставлено в ТЗ, монитора плейер не имеет, а между тем отладку управляющей оболочки, добавление новых возможностей - без полноценной консоли - :((. Можно взять telnet, можно ssh. Последний шифрует трафик, других отличий вроде нет. Шифровать трафик между машинами, соединенными кроссовером, вообще -то ни к чему, но с другой стороны - и не вредно. А вдруг появится хаб и умные дети или еще что...

Как настраивать ssh - говорилось уже много раз. Повторяться не буду, но напомню одну загогулину: ssh можно настроить на работу в режиме "безпарольного" (т.е. без запроса пароля на клиенте), но шифрованного доступа. В этом случае ssh выполнит часть проверок и сразу откроет сессию связи. Как это сделать (LinuxFormat 2 (71) oct 2005, p. 51):

Генерируем публичный и приватный ключи на машине, с которой планируем подключаться к плейеру:

ssh-keygen -t rsa

Парольную фразу оставьте пустой. Переименовываем приватный ключ в ~/.ssh/identity, а публичный ключ копируем на плейер под именем ~/.ssh/authorized_keys.

Если же основная машина работает под виндой, то telneat умеет работать с сохраненным в конфиге паролем, putty, вероятно, тоже.

Владимир