Существует ли стандарт радио Linux?
мы собираемся приступить к реализации устройства под управлением Linux, которое (среди прочего) будет подключено к программному обеспечению FM/AM radio, которое также может получать данные RDS, описывающие плейлисты и другие подобные вещи. Это относительно глупое устройство, которое в основном содержит DSP или два, которые действуют как тюнеры и в противном случае очень мало обрабатывают сигнал.
Я думал, что драйверы ядра для устройства, а затем уровень аппаратной абстракции userland, который предоставил стандартизированный интерфейс и абстрагировал детали точно, когда данные RDS были получены и имели дело с обработкой ошибок и всеми другими беспорядочными вещами. Есть ли уже такой слой userland? Было бы неплохо либо вообще избежать этого, либо сделать наш материал совместимым с чем-то, что уже существует, чтобы мы могли использовать другие проекты для радио UI, если бы захотели.
3 ответов
поддержка радио в linux
похоже, вы создаете новое аппаратное радиоустройство? Вероятно, вам нужно будет создать драйвер для этого устройства. Некоторую помощь в начале работы можно найти здесь, здесь и здесь. Если ваше устройство не является новым, оно уже может иметь драйвер в проекте Video4Linux2.
похоже, что есть некоторые проекты, связанные с RDS, основанные на saa6588 ядра модуль в настоящее время.
по данным на этой странице, эти карты в настоящее время имеют SAA6588:
- Terratec В ОАО Cinergy 600
- KNC ONE TV-Station RDS
- KNC One TV-Station DVR
- ТАЙФУН ТВ-ТЮНЕР КАРТЫ RDS
- Sundtek MediaTV Pro (поддерживается производителем)
- Sundtek USB FM-радио (FM-передатчик / приемник, поддерживается производитель)
RDS конкретной информации
Я бы рекомендовал проверить некоторые из проектов, связанных с Video4Linux2 (v4l2), есть декодирование RDS библиотека. Эта библиотека работает в пространстве пользователей, поэтому работа декодирования RDS может быть выполнена там для вас:
по данным спецификации V4L2, необработанные данные с декодеров РДС читается от радио устройства. Данных состоит из блоков, где каждый блок 3 байт. Все декодирование должно быть сделано в пользовательском пространстве.
RDS API
здесь полная ссылка API для Video4Linux2. Вот это серии статей, чтобы познакомиться с ним.
конкретный раздел для RDS API здесь. На этой странице представлена информация о том, как получить обновление о том, доступны ли данные RDS:
присутствует ли сигнал RDS, можно определить, посмотрев на rxsubchans поле структуры v4l2_tuner: V4L2_TUNER_SUB_RDS будет установлен, если данные RDS были обнаружены.
SDR RDS декодер DSP в Gnu Radio Companion
хотя это не официальный API, я нашел последний небольшой проект, который стоит изучить:
вот еще несколько проектов, связанных с радио стоит посмотреть.
возможно, стоит посмотреть, является ли консорциум GENIVI (http://www.genivi.org/) имеет стандартное приложение для этого еще. Они разрабатывают стандарты такого рода специально для автомобильных "информационно-развлекательных" целей, и это, похоже, подпадает под их область стандартизации.
к сожалению, они не публикуют свои материалы публично, поэтому вам может потребоваться спросить или отправить им электронное письмо напрямую.
как о GNU Radio? Они имеют аппаратную поддержку для множества программных радиоэлементов и поток данных, легко подключаемый через GUI с их "GNU Radio Companion" (GRC).
Они используют API Python и C++, которые могут быть доступны для вашего уровня пользовательского интерфейса. Существует ряд примеров, которые можно найти в интернете.