Hola a tod@s.
Para realizar las modificaciones del programa RecTimerMgr 0.2.0.0, como añadir el nombre de las cadenas, he tenido que "machacarme" el fichero de canales
/usr/local/etc/dvdplayer/dtv_channel.txt y he visto varias cosas.
En primer lugar el fichero no es de texto como pudiera parecer por su extensión (.txt) sino que es binario, gracias a la información obtenida de Vic1972 en el foro del LG:
http://ms450.foroactivo.net/t149-pro...dtv_channeltxt
Y a lo que he ido indagando por mi cuenta, he realizado rutinas que leen el fichero, comprueban la cabecera y calculan el checksum que tiene al final.
El formato de este fichero es:
* Una cabecera de 4 bytes: 66 00 00 FF
* Un entero de 4 bytes con el número de canales almacenados
Y a partir de aquí hay bloques de 864 bytes para cada canal encontrado, es curioso este valor porque en otros equipos el número de bytes/canal es menor, por ejemplo en el LG este valor es de 576 bytes. Vamos a ver que contiene uno de estos bloques
* Un entero de 2 bytes con el número de canal (el que se usa con el mando a distancia)
* Un entero de 2 bytes con el número lógico de canal (el que obtiene el cuando busca)
* Un entero de 4 bytes con la longitud +1 del nombre de la cadena
* Una cadena de 32 bytes con el nombre de la emisora relleno de ceros
* Un valor de 4 bytes desconocido
* Un valor de 4 bytes desconocido
* Un entero de 4 bytes con la frecuencia del canal en Hz
* Un valor de 4 bytes desconocido
* Un entero de 4 bytes con el ancho de banda del canal? = 8
* Un valor de 12 bytes desconocido
* Un entero de 4 bytes con un valor de 1 para cadenas de TV y de 2 para Radio
* Un entero de 4 bytes con un valor de 10 para cadenas de TV y de 20 para Radio
* Un entero de 4 bytes con la longitud del nombre de la cadena
* Una cadena de 32 bytes con el nombre de la emisora relleno de ceros
* 748 bytes con casi todo ceros que desconozco
Al final de todos los canales tenemos:
* Un entero de 4 bytes con el checksum de todo el contendio anterior del fichero
Como podeis ver, en este tocho aparece el nombre de la cadena 2 veces por "registro" (1 registro = 1 canal), y una vez que he aprendido a calcular el checksum correcto de todo el fichero, se me ocurrieron las siguientes pruebas:
1) Como vi que en la segunda aparición del nombre de la cadena aparecía un caracter 05 de comienzo, justo en aquellas cadenas que al grabar "meten" un caracter extraño delante del nombre de la cadena (Ej. dede telnet: CH10_?La 10), pues procedí a eliminar este caracter, poner la longitud correcta y calcular el checksum del fichero resultante.
Todo fue un éxito, el equipo se "tragó" mi nuevo fichero de canales tan ricamente, pero cuando hice pruebas de grabación, allí estaba, volvía a aparecer el caracter extraño con lo que se demuestra que a la hora de grabar, el nombre no lo coge del fichero.
2) Ya puestos, me dije ¿qué pasaría si a los nombres de cadena "largos" los acorto a 10 caracteres o menos?, y así lo hice, cogí la cadena "TVE-HD Pruebas" y la cambie de nombre, pero como aparece en dos sitios, puse en el primer sitio "TVE1-HD1" de 8 caracteres y ajusté el byte de su longitud y en el segundo sitio hice lo mismo pero poniendo "TVE1-HD2" de 8 caracteres también; así de paso sabría que nombre se usaba (el primero o el segundo) y si se arreglaba el problema de los nombres largos en las grabaciones, programé una grabación de esa cadena, con otra empezada de nombre "legal" por si acaso, y mi gozo en un pozo, el nombre que aparece es el de siempre "CH11_TVE-HD Pru", con lo que se vuelve a demostrar que a la hora de grabar, el nombre no lo coge del fichero.
Ahora tengo el fichero con los nombres "TVE1-HD1" y "TVE1-HD2", funciona todo perfectamente, pero a la hora de grabar sigue usando el nombre "TVE-HD Pruebas".
Conclusiones:
* Tanto la EPG como el nombre de la cadena los coge del "aire" en el momento de necesitarlos.
* Si el equipo no tiene el fichero de canales no funciona
* ¿Para que sirve y para que se usa el fichero de canales?
Saludos