¿Hay un estándar de radio de Linux?
embedded hal (3)
Estamos a punto de embarcarnos en la implementación de un dispositivo que ejecute Linux que (entre otras cosas) se conectará a una radio FM / AM definida por software que también puede recibir datos RDS que describen listas de reproducción y otras cosas similares. Es un dispositivo relativamente estúpido que en su mayoría contiene un DSP o dos que actúan como sintonizadores y, por lo demás, procesan muy poco la señal.
Pensaba que los controladores del kernel para el dispositivo y luego una capa de abstracción de hardware del país de usuario que proporcionaba una interfaz estandarizada y abstraía los detalles de cuándo se recibían los datos de RDS y se manejaban con el manejo de errores y todas las demás cosas desordenadas. ¿Ya hay una capa de usuario como esta? Sería bueno evitar hacerlo, o hacer que nuestras cosas sean compatibles con algo que ya existe para que podamos usar otros proyectos para la interfaz de usuario de la radio si quisiéramos.
Soporte de radio en linux.
¿Parece que estás creando un nuevo dispositivo de radio de hardware? Probablemente necesites compilar un controlador para este dispositivo. Se puede encontrar ayuda para comenzar here , here y here . Si su dispositivo no es nuevo, es posible que ya tenga un controlador en el proyecto Video4Linux2 .
Parece que actualmente hay algunos proyectos relacionados con RDS basados en el módulo del kernel saa6588 .
Según esta página , estas tarjetas tienen actualmente un conjunto de chips SAA6588 :
- Terratec Cinergy 600
- Estación de TV KNC ONE RDS
- Estación de TV KNC One DVR
- TFFOON TV TUNER CARD RDS
- Sundtek MediaTV Pro (soportado por el fabricante)
- Radio FM USB de Sundtek (transmisor / receptor de FM, compatible con el fabricante)
Información específica de RDS
Recomiendo revisar algunos de los proyectos relacionados con Video4Linux2 (v4l2), hay una biblioteca de decodificación RDS . Esta biblioteca se ejecuta en el espacio de usuario, por lo que el trabajo de decodificación RDS se puede hacer allí para usted:
De acuerdo con las especificaciones V4L2, los datos en bruto de los decodificadores RDS se leen desde el dispositivo de radio. Los datos consisten en bloques donde cada bloque tiene una longitud de 3 bytes. Toda la decodificación debe hacerse en el espacio del usuario.
API RDS
Aquí hay una referencia completa de API para Video4Linux2 . Aquí hay una serie de artículos para familiarizarse con ella .
La sección particular para la API de RDS está aquí . Esta página proporciona información sobre cómo obtener una actualización sobre si los datos de RDS están disponibles:
Se puede detectar si una señal RDS está presente observando el campo rxsubchans de struct v4l2_tuner: el V4L2_TUNER_SUB_RDS se configurará si se detectaron datos RDS.
SDR RDS decoder DSP en Gnu Radio Companion
Aunque no es una API oficial, encontré un último proyecto pequeño que vale la pena analizar:
Aquí hay más proyectos relacionados con la radio que vale la pena analizar.
¿Qué hay de GNU Radio ? Tienen soporte de hardware para muchos componentes de radio definidos por software, y un flujo de datos que se conecta fácilmente a través de la GUI con su "GNU Radio Companion" (GRC).
Usan las API de Python y C ++ a las que se puede acceder para su capa de UI. Hay una serie de ejemplos que se pueden encontrar en línea.
Puede valer la pena ver si el consorcio GENIVI ( http://www.genivi.org/ ) tiene una aplicación estándar para esto todavía. Están desarrollando estándares de este tipo específicamente para propósitos de "entretenimiento y entretenimiento" automotrices, y esto parece que caería dentro de su área de estandarización.
Desafortunadamente, parece que no publican sus cosas públicamente, por lo que es posible que tenga que preguntar o enviarles un correo electrónico directamente.