Compartir la cadena GPS NMEA con NTP

1

Estoy usando GPS como reloj para NTP. Funciona muy bien y NTP se abre /dev/gps0y lo lee bien. También tengo un programa que se puede abrir /dev/gps0para leer (y escribir) en el dispositivo GPS para poder procesar la información y configurarla. ¿Cómo puedo ejecutar ambos al mismo tiempo?

No quiero usar gpsd y me gustaría encontrar alguna forma de compartir el puerto serie sin hacer algo que pueda romper el NTP. Socat, pseudo terminal? ¿Cómo puedo lograr esto fácilmente?

Ozean
fuente
NTP admite un reloj de software que se comunica con NTP mediante la memoria compartida. Si su software de GPS puede poner información de tiempo en la memoria compartida, NTP puede obtenerla. Aquí hay un código de ejemplo que escribí hace años.
David Schwartz
Realmente he hecho esto antes con memoria compartida (gpsd también usa memoria compartida). El problema es que el "cliente" quiere que NTP se ejecute y luego quiere un segundo programa que pueda "aprovechar" el dispositivo serie según sea necesario. Estaba pensando en posix_openpt, pero me preguntaba si había una mejor manera.
Ozean
Puede modificar el código NTP o escribir su propio código para que funcione como un tee.
David Schwartz
dependiendo de la máquina, puede instalar otro puerto serie físico y luego usar uno para nema y pps el otro como puerto serie y luego, como otros han indicado, use el controlador de memoria compartida de ntp.
user3788685
1
Gracias por la ayuda. Resolví esto abriendo pseudo terminales, para ntp y uno para el proceso que analiza las cadenas nmea. es decir, ntpfd = posix_openpt (O-RDWR | O_NOCTTY); grantpt (ntpfd); unlockpt (ntpfd); ptsname_r (ntpfd, buff, sizeof (buff)). Buff contiene el nombre del pseudo-terminal. Lo mismo para parserfd, luego abro y leo los gps y envío lo que recibo a estos fd's. Vinculado el pseudo-terminal asociado con ntpfd a / dev / gps0.
Ozean

Respuestas:

-1

Ignoro la razón por la que no quieres usar gpsd. Yo mismo, te sugiero que lo uses porque esta es probablemente la solución más simple. Si desea tener acceso a las oraciones NMEA, use el programa "gpspipe" mientras se ejecuta gpsd. Probablemente tendrás lo que quieres.

Claude Frantz
fuente
Bienvenido a Super User. Tu publicación necesita ser expandida. Una buena respuesta incluye instrucciones específicas ( no solo enlaces a ellas) y una explicación de cómo o por qué la respuesta responde a la pregunta de los OP. Edite su publicación para agregar detalles que expliquen cómo su solución aborda la pregunta de los OP.
Twisty Impersonator