ReadMe
Обзор декодеров VLSI
Электроника
Программное обеспечение:
ЖКИ
VLSI
Разные мелочи
Модули режимов
Отладочный координатор
Пользовательский интерфейс
Фотографии
 
==> Orfey

Пользовательский интерфейс

Этот раздел представляет из себя что-то вроде "руководства пользователя". Здесь плейер, по возможности, рассматривается уже с точки зрения пользователя, а не программиста или электронщика. В отличие от других разделов, здесь было сделано много изменений, поэтому текст является самостоятельным описанием, а не дополнением.

Общие замечания о клавиатуре

Клавиатура плейера состоит из 8-и кнопок, расположенных справа от экрана в два столбца по четыре кнопки в каждом. На рисунке указаны номера кнопок. Большая часть из них имеет различные функции, меняющиеся в зависимости от режима работы плейера, но есть и общие идеи.

В интерфейсе плейера предусмотрен ряд экранных меню. Использование клавиатуры в них идентично: стрелки вверх/вниз (K2, K4), стрелки вправо/влево (перебор значений, выполнение действия - K6, K7), выбор (Enter, Ok - K1), отмена (K0). Экранное меню выбора файла имеет аналогичное управление, за исключением того, что кнопка Ok (K1) в нём не задействована, а кнопка отмены (K0) возвращает управление компоненту, вызвавшему меню (т.е. имеет смысл подтверждения).

В этом меню путевое имя файла разбивается на строки (здесь: "Аквариум/2006 Беспечный русский бродяга/01-Афанасий Никитин.mp3"). Вы можете установить курсор на любую из строк и стрелками вправо/влево изменить выбранную часть путевого имени. Этот интерфейс похож на блуждание по файловому дереву в менеджерах, подобных Norton Commander или FAR, но здесь конечной точкой пути всегда является файл. Т.е. даже если вы делаете выбор среди директорий верхнего уровня, плейер все равно найдет в глубине какой нибудь допустимый полный путь (или не позволит выбрать данную директорию) и сразу отобразит его.

Включение плейера

После подачи питания должен сразу включится дисплей и подсветка, в середине чистого экрана появится надпись "** АГАТ **" (Хотел заставку сделать, но рисовать не умею. Вспомнил экран включения известной советской ПЭВМ. Чем плохо ?).

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

Модули режимов

У плейера есть четыре режима работы: Главное меню, Воспроизведение mp3, Чтение текстов, Звуковой генератор. Переход между последними тремя режимами возможен только через первый режим. Вход в некоторые режимы может быть невозможен, если не удалось инициализировать файловую систему.

Режим Главного меню

На экран выводится главное меню, в нём перечислено шесть пунктов:

  1. Выбрать файл... - нажатие стрелок вправо/влево или Ok активизирует меню выбора файла. Выбранный файл будет использоватся модулем воспроизведения mp3.
  2. Устройство - стрелки вправо/влево выбирают устройство хранения информации (SD или HDD), клавиша Ok инициирует процедуру смены устройства и раздела.
  3. Раздел - стрелки вправо/влево выбирают раздел (логический диск), клавиша Ok инициирует смену устройства и раздела.
  4. Режим - стрелки влево/вправо выбирают режим ("M" - воспроизведение mp3, "T" - чтение текстов, "O" - звуковой генератор), клавиша Ok передает управление выбранному модулю.

Операция смены устройства хранения информации имеет две особенности:

  1. Для надежной смены устройства, после указания номера устройства и раздела, нажмите Ok и выключите, а затем вновь включите питание плейера. Иногда это может не потребоваться (после нажатия Ok плейер нормально перейдет в рабочий режим без дополнительных действий), но так бывает не всегда. Это связано, в частности, с упрощенной схемой управления SD-картой.
  2. В плейере предусмотрена возможность перевода жесткого диска в глубокий сон, если в качестве накопителя выбирается SD-карта. Это может резко снизить энергопотребление, а также использоваться для уменьшения износа мехнических частей жесткого диска. Для этого нужно после успешного выбора SD-карты в качестве носителя вновь войти в Главное меню и нажать Ok на пункте Устройство или Раздел. Жесткий диск будет остановлен до обесточивания плейера.

Порядок нумерации разделов в Orfey'e несколько отличается от принятого в привычных операционных системах: расширенные разделы могут идти до основных, если они упоминаются в таблице разделов первыми (в MS-DOS, Windows 9x, Linux и FreeBSD, в случае единственного накопителя, первыми всегда идут основные разделы и только потом расширенные). Если вы укажете в качестве раздела "0", плейер будет воспринимать всё пространство накопителя как единый раздел (т.е. предполагая отсутствие таблицы разделов - a'la дискета). В разнообразных *NIXах это вполне допустимый вариант (во FreeBSD есть термин: Dangerously Dedicated - система может даже загружаться с такого носителя), в Windows же таким образом может быть отформатирована только дискета и umass storage - накопитель данных со стандартным USB-интерфейсом - флешка, SD карта, ... ну и, если очень хочется - жесткий диск, подключенный через переходник USB <-> ATA (т.е. такой же финт с тем же винтом, но подключенным по нормальному - к ATA-контроллеру - под Windows уже не прокатит).

Режим воспроизведения mp3-файлов

В этом режиме плейер воспроизводит mp3-файл. Существует три подрежима использования экрана и клавиатуры: "обычный", "mp3-инфо" и "эквалайзер". В начале воспроизведения очередного файла плейер переходит в режим "обычный", экран и клавиатура используются при этом следующим образом:

Кнопка K5 (F) переключает дисплей в режим "mp3-инфо", а также используется в комбинациях с другими клавишами:

Комбинация клавишФункция
K4+K6Сохранить закладку (путевое имя файла и позицию в нём).
K0+K2Вернутся к закладке.
F+K0Быстрая перемотка вперёд. Эта комбинация выполняет пропуск примерно 400 Кб данных текущего файла, что соответствует ~10 секундам звучания файла с битрейтом 320 Кбит/с (например, для быстрого обзора музыкального трека) или ~100 секундам для битрейта 32 Кбит/с (листание звуковых книг).
F+K1Меню выбора файла.
F+K2Переход в подрежим "эквалайзер".
F+K3Переход в Главное меню. Он происходит также, если на текущем разделе больше нет файлов.
F+K4Возврат к началу текущего файла.
F+K6Балланс влево.
F+K7Балланс вправо.

Уровни громкости выводятся после преобразования параметров Громкости и Балланса в параметры Громкость Левого, Громкость Правого. Перед воспроизведением очередного файла его полное путевое имя сохраняется в энергонезависимой памяти. В конце воспроизведения очередного файла, если воспроизведение не было прервано пользователем, в энергонезависимой памяти также сохраняются настройки громкости, балланса, состояние режима "инверсия левого" и настройки эквалайзера.

Обратите внимание: при включении плейер переходит на начало последнего воспроизводимого трека. Однако используя закладку (K4+K6) вы можете сохранить и затем вернутся (K0+K2) с месту воспроизведения с точностью до долей секунды, что удобно при прослушивании электронных книг. Правильное восстановление закладки возможно только для файлов, объём которых не превышает 8 Гб (понятно, что на FAT такой файл записать нельзя, но если следующие прошивки начнут поддерживать UFS или EXT2...).

Путевое имя файла выводится по следующим правилам: последние три строки (4-6) - всегда имя файла. Предыдущая (3) строка - каталог, в котором находится файл (если корень - остаётся пустой). Верхняя строка (2) - каталог, в котором находится предыдущий каталог (если корень - остаётся пустой). 2-я и 3-я строки выводятся инверсно. С mp3-тегами плейер не знаком и по возможности их игнорирует.

Подрежим "mp3-инфо" отличается только использованием пространства экрана. Клавиатурные сочетания в нём аналогичны подрежиму "обычный":

Первая строка содержит ту же информацию, что и в подрежиме "обычный". Остальные строки содержат информацию о воспроизводимом файле, причем данные для второй строки (инверсной) возвращает управляющий код mp3-декодера VLSI, а остальные строки берутся из заголовка очередного mp-кадра и декодируются центральным процессором. Очевидно, что содержимое 2-й и 4-й строк должно совпадать. Последняя - шестая - строка - это десятичное представление заголовка кадра.

Подрежим "эквалайзер" почти полностью изменяет информацию на экране и действия комбинаций клавиш. Неизменным остается только комбинация K5+K2 (возврат в режим "обычный") и первая строка экрана:

Помимо упомянутых на фотографии комбинаций есть также следующая: K3+K4 - она переключает режим "инверсия левого" (его состояние отображается во второй строке экрана).

Область низких частот занимает диапазон от 0 до n Гц, где n может быть задана в пределах [0..150] Гц с шагом 10 Гц (клавиши K6, K7). В этом диапазоне эквалайзер может поднимать частотную характеристику в пределах [0..15] Дб с шагом 1 Дб (клавиши K2, K4).

Область средних частот занимает диапазон от n до 48000 Гц, где n может быть задана в пределах [1..15] КГц с шагом 1 КГц (клавиши K0, K1). Регулировка уровня в этой полосе составляет [-12..+10.5] Дб с шагом 1.5 Дб (клавиши K3, K5).

Режим чтения текстов

В этом режиме есть два подрежима: вывод текста и управляющее меню. Выведен может быть любой файл, но, понятно, что точки будут складываться в знакомые буквы, а буквы - в слова, только если выбран текстовый файл в кодировке КОИ-8. Код плейера дополняет абзацы красной строкой (1-3 пробела) и переносит строки по пробелам, по возможности не разрывая слова. Если же разрыв происходит, в конце строки может выводится (если помещается) знак переноса (код, однако, не знаком с правилами переноса, поэтому разрыв может произойти в любом месте слова). В качестве символа разделения абзацев текста ожидается LineFeed (код 10).

Здесь приведена раскладка управляющих клавиш для подрежима вывода текста.

В этом подрежиме весь экран занят выводимым текстом, каких либо поясняющих значков нет.

Вперёд возможна свободная прокрутка, назад - только до начала текущего блока (очередная порция из 512-и знаков).

Клавиши регулировки левого отступа позволяют с точностью до пикселя сдвигать левую границу вывода. Это станная, на первый взгляд, возможность, обусловлена следующим: корпус у плейера прочный, толщина стенок почти 4 мм. Экран расположен на этой глубине, рамка почти полностью прилегает к видимому полю. При внешнем угловом освещении это даёт заметную тень, которая мешает даже при включеной подсветке. Чтобы взгляд не попадал в область тени, иногда имеет смысл смещать текст на 1-4 пикселя вправо.

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

В подрежиме вывода текста процессор плейера переводится в режим пониженного энергопотребления, а VLSI-декодер в состояние сброса, при этом общая потребляемая плейером мощность падает почти в сто раз (если только вы не используете жесткий диск - он может потреблять на порядок большую мощность, чем ядро).

Подрежим управляющего меню выглядит так:

  1. Выбор файла - нажатие стрелок вправо/влево или Ok активизирует меню выбора файла. Выбранный файл будет выведен с начала в подрежиме вывода текста. На файл, выбираемый в режиме Главного меню и в режиме воспроизведения mp3, эта функция не влияет.
  2. Красная строка - стрелки вправо/влево выбирают количество пробелов, которое будет выводится в начале каждого абзаца.
  3. Подсветка - стрелки вправо/влево выбирают режим подсветки ("включена - 1", "выключена - 0"), которое будет использоваться в подрежиме вывода текста (в данном меню и других режимах работы всегда используется "автомат"). Клавиша Ok сохраняет выбранное значение режима подсветки и левого отступа в энергонезависимой памяти.
  4. Закладка - стрелки влево сохраняет путевое имя файла, номер выводимого блока, а также количество пробелов красной строки в энергонезависимой памяти. Стрелка вправо позволяет вернутся к сохранённой закладке. При инициализации модуля выполняется автоматический переход к закладке # 1. Эти две закладки никак не связаны с закладками других модулей. Правильное восстановление закладки возможно только для файлов, объём которых не превышает 32 Мб.
  5. Главное меню - переход в режим Главного меню.

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

Режим звукового генератора

Тут минимум комментариев. Генерируется синусоидальный сигнал, стрелками могут быть заданы частота дискретизации (Гц) и пропуски семплов (из небольшого фиксированного списка), а также уровни левого и правого канала. Нажатие Ok приводит к сохранению значений в энергонезависимой памяти. Эти значения будут считаны во время следующего входа в модуль.

Число в пятой строке - вычисленная результирующая частота сигнала (Гц). Каких либо энергосберегающих функций модуль не имеет.

Сообщения об ошибках и статусе

Сообщения об ошибках и статусе всегда выводятся инверсно в верхней строке дисплея и сопровождаются в конце строки знаками "+" или "-". Сообщения с "-" в конце текста всегда останавливает работу управляющего кода до нажатия любой клавиши. Ниже приводится список возможных сообщений и комментарии о ситуации, в которой они появляются (символ "*" указывает, что знак "+" или "-" выводится в зависимости от успешности выполненной операции. В случае "-" - операция закончилась с ошибкой - подробности можно узнать только используя отладочную прошивку):

Volume saved + - в конце воспроизведения mp3-файла произошло сохранение изменившихся параметров: громкости, балланса и т.д..

FS init: * - результат работы процедур инициализации файловой системы. "-" - какая либо логическая ошибка в загрузочной записи раздела, функционировании накопителя и т.д.. Их может быть много :)

VLSI init: - - ошибка инициализации mp3-декодера. Одновременно выводится также код завершения операции: 1 - через 2 мс после команды сброса линия DREQ не поднялась, 2 - через 5 мкс после команды сброса линия DREQ не упала, 3 - бит программного сброса не упал после установки.

File system init: * - ещё раз дублируется сообщение о статусе файловой системы, теперь уже координатором режимов.

SD init: * - статус физической инициализации SD-карты.

IDE init: * - статус физической инициализации жесткого диска.

Media init: * - тоже самое сообщение, но уже выводимое уровнем файловой системы - ей всё равно, какое конкретно устройство доступно или недоступно.

Partition table: * - результат анализа таблицы разделов и её расширений. "-" можно получить если запросить несуществующий раздел либо если очередной анализируемый сектор не содержит сигнатуры 0x55AA. Ошибки чтения, конечно, тоже учитываются.

Open: * - попытка доступа к файлу по указанному пути.

Read: - - ошибка чтения очередного блока файла.

Next: * - переход к следующему файлу. "-" можно получить, если файлов в данном разделе больше нет.

Prev: * - переход к предыдущему файлу. "-" указывает на то, что данный файл - первый в данном разделе.

* - PAUSE * - - модуль воспроизведения mp3 в состоянии паузы. Это не ошибка, просто задержка до нажатия любой клавиши.

Закладка заложена - - тоже не ошибка, просто сообщение о том, что модуль чтения текстов или модуль воспроизведения mp3 сохранил закладку.

Saved to EEPROM - - аналогично, модуль звукового генератора сохранил параметры в энергонезависимой памяти.

Step: * - переход к очередному блоку в режиме чтения текстов (скроллинг вниз).

Не могу найти закладку * - в случае "-" это означает, что модуль чтения текстов нашел файл, указанный в закладке, но при попытке найти нужную позицию файл оказался короче, чем ожидалось. Это может быть вызвано либо перестановкой имен файлов (FAT Sorter'ом или какими либо ещё операциями с файловой системой) либо просто урезанием файла.

Light & LShift saved - - режим подсветки и левый отступ сохранены в энергонезависимой памяти модулем чтения текста.

Сообщения с "+" на конце часто не могут быть прочитаны - так как никакой задержки после их вывода не происходит, экран будет занят последующей информацией. Они выполняют лишь функции контрольных точек - если код плейера "зависнет", по состоянию дисплея можно будет примерно определить область проблемы (при условии знания управляющего кода, конечно). Строки с "-" являются либо сообщениями о проблемах в функционировании плейера либо просто информируют пользователя о том, что какая-либо операция успешно выполнена, если какие либо иные визуальные (ну или хотя бы аккустические) признаки этого в данный момент отсутствуют.

Несколько сообщений об ошибке могут следовать подряд: ошибка инициализации SD-карты, например, приведёт к последовательности сообщений: "SD init: -", "Media init: -", "FS init: -", "File system init: -".

Владимир