View this PageEdit this PageUploads to this PageVersions of this PageHomeRecent ChangesSearchHelp Guide

Cliente/servidor Wi-Fi de Linea 8

Estudio de viabilidad Linux del Cliente/servidor Wi-Fi de Linea 8

[Ir a descripción]




Friday, 5 November 2004, 5:31:45 pm
Más sobre la arquitectura

Acaba de terminar el "2nd International RailForum", en donde hemos enseñado el sistema a Matro y cualquira que se quiso pasar por el stand.

Por lo menos me ha servido para probarlo algo (teníamos un enlace radio contra la estación de Campo de las Naciones). Las cosas que he visto son:

  • Reamente bastaría con el autozoom actual para que fuera usable par una persona razonablemente experimentada.
  • Es muy necesario implementar reconexiones tanto en tclient como en prusdlconnect para que cuando se puede la cobertura no se vaya al login (puede llegar a ser molesto). La única cosa a decidir es qué hacer si se pierde la conexión contra tcii-server. Una manera razonable sería "avisar" a prusdlconnect y hacer reintentos de conexión (el avisar sería decirle a prusdlconnect que se desconectase mientras no tengamos un enlace con tcii-server).
  • Hay que buscar una manera de hacer zoom de forma que se ocupe toda la pantalla con el plano. Hay que buscar la manera de pasar de 1024x768 a 640x480 (hay que coger convertir 1.6 píxeles a 1; si lo hago con 1.5 sería 960x720, lo cual se acerca bastante al tamaño del plano).
  • El interfaz de salidas de emergencia se sale de la pantalla

Y así en general no he visto más. Por otro lado habría que terminar la parte de integración de infoglobal.

Wednesday, 6 October 2004, 12:16:04 pm
Cambiar el plano que se muestra

Método 1: usando un mensaje RPC


En f_ui_plano/OrdenesEstacion.Remoto.c hay un "case SET_ESTACION" en el que se procesa el mensaje que se tendria que mandar al ui_plano_remoto.

Hay que formatear un mensaje de SET_ESTACION con
sscanf( sTexto, "%02d%02d%d %d %x %[^\n]", &linea, &estacion, &vestibulo, &TipoNodo, &IdUnivoco, Parametros )

Siendo TipoNodo==TN_PCL (bueno, eso habría que comprobarlo).

En el ui_operador_new se compone esta orden. Habría que usar ago parecido de lo que se hace ahí.

Si no importa el nombre que aparece en la ventana, entonces se puede hacer simplemente quitando los liks siguientes y volviéndolos a crear pero en la nueva estación:
==CUT===
demo@FrontPCI02:~/sistema/V/UI_Plano/ui_plano00$ ls -l | grep Fich| grep Estacion
lrwxr-xr-x 1 demo demo 23 Oct 6 09:32 FichIconosEstacion -> ../../Comun/10191.icons
lrwxr-xr-x 1 demo demo 24 Oct 6 09:32 FichPlanoEstacion -> ../../Comun/10191.Raster
lrwxr-xr-x 1 demo demo 24 Oct 6 09:32 FichTextosEstacion -> ../../Comun/10191.Textos
==CUT===

Método 2: rehaciendo los enlaces y modificando el fichero de estado


Otra manera es mirando la callback del menú de las estaciones (y habría que comprobar cómo lo hace exactamente, ya que en principio hace alguna comprobación adicional con algún timer/fecha que no está expuesta aquí):
  1. Deshace los enlaces
  2. Hace los nuevos
  3. Escribe un fichero que mirará la siguiente vez que arranque y hará que se ponga como "de la nueva estación"
  4. se sale con un exit para que control le vuelva a rrancar

Explicaciones gentileza de Rosa



Tuesday, 28 September 2004, 10:11:20 am
Autozooms y xtoolwait Resulta que el programa xtoolwait hace justamente lo de una espera de que se mapee una ventana en el root window. Eso es justamente lo que necesito para los autozooms :-). Tengo que ver cómo lo hace...

Friday, 24 September 2004, 11:19:43 am
Imprimir desde el PDA Según este mensaje, para comunicar con una impresora laserjet hay que usar el protocolo IrCOMM-3-wire-raw (también llamado IrLPT). Hay que tener cuidado, porque:

Actually, IrLPT is the same as IrCOMM 3 wire raw, but [there] is no obligation for IrCOMM to implement 3 wire raw. IrCOMM is a collection of 4 protocols: 3 wire raw, 3 wire "cooked", 9 wire and centronics, but the standard don't make any of them mandatory. The only responsibility of an implementation is to advertise that is implemented.


Ahora sólo me queda por descubrir qué se necesita para implementar eso, y si el IrCOMM del linux-irda ya tiene implementado dicho protocolo.

Friday, 24 September 2004, 7:50:33 am
Notificación de posición/tamaño de las ventanas al sistema de tcii Habría que modificar los ejecutables de sico para que informaran a un "system tray" en vez de su icono, de su posición. Eso se hace usando XGetSelectionOwner()/XSetSelectionOwner() en el cliente, con un atom preacordado. Hay instrucciones para hacerlo con Motif, ya que el sistema es idéntico al del clipboard (así el xclipboard también sirve de ejemplo):

What GNOME has been talking about is a clipboard manager using the same basic protocol as xclipboard and Motif's clipboard. That is a program that claims the manager selection CLIPBOARD_MANAGER and the selection CLIPBOARD. When it loses the CLIPBOARD selection, it requests data from the new owner, and upon receipt of that data it reclaims the CLIPBOARD selection. Through loss and reclamation of the CLIPBOARD selection, it knows when new clipboard data is available.


El sistema sería equivalente al del "system tray" nombrado arriba, de la siguiente manera:
  1. Localizamos al gestor de zooms usando un método análogo al del clipboard (preguntando por el owner del AUTOZOOM_MANAGER)
  2. La aplicación manda un mensaje de tipo "AUTOZOOM_OPCODE" tal y como se explica aquí cada vez que se muestra u oculta, que contiene como parámetros una bandera que indica si está mapeado o no, sus dimensiones y posición.


Friday, 3 September 2004, 7:14:44 am
Traslado de información de cámaras desde el servidor de tcii al PDA: Notas sobre el brainstoriming de ayer con Javi.

Esquema de los procesos en ejecución:
+-----+
| XXX |
| XXX |                             +----------------------------+
| XXX |                             |                  +-------+ |
|  _  |                             |  []        o o o +-------+ |
+-----+                             +----------------------------+
 PDA:                                TCIISERVER:
 * prusdlconnect                     * pnt_server 0
 * tcii_client                       * pnt_server 1
 * camera_ig                         * tcii_master
                                     * control+apps
                                     * isacd
                                     * crptcii

El esquema de conexión entre los diferentes elementos es:
         PDA1                   TciiServer              PDA2
         ----                   ----------              ----
 ,-------------.            ,------------....
 |prusdlconnect+------------+pnt_server 0|  :
 `-----------+-'            `------------'  :
             |              ,------------....           ,-------------.
             |              |pnt_server 1+--------------+prusdlconnect|
             |              `------------'  :           `-+-----------'
         ,---+-------.      ,-----------.   :      ,------+----.
         |tcii_client+------+tcii_master+----------+tcii_client|
         `-+---------'      `-+---------'   :      `---------+-'
           |                  |  ,------------.              |
  ,--------+.                 |  |control+apps|             ,+--------.
  |camera_ig|                 |  `-----+------'             |camera_ig|
  `---------'                 |     ,--+--.                 `---------'
                              |     |isacd|
                              |     `--+--'
                             ,+------. |
                             |crptcii+-'
                             `-------'

Los problemas que hay que resolver, que surgen si se pone tal y como están los puestos de operador (un isacd, pero cambiando el crp remoto por un crptcii local) son:

  1. Mostrarlo en el pda adecuado: saber qué aplicación(UI en qué display) ha mandado la petición. El isacd sabe qué aplicación ha sido, y se podría tener una tabla que relaciona el numero de aplicación con el display.
  2. Que si otro PDA tiene fijada esa cámara, no le valga a la apli si no está en su "posición de la matriz": ya que si no, validaría siempre como que se ha podido mostrar la cámara cuando en realidad la está mostrando otro PDA.

La solución pasa por poner "n" isacd, uno por cada display, y eso requiere:
  • cambiar la librería de LisIsaCD.c para que admita múltiples instancias.
  • hacer que las aplics (UIs) usen una variable de configuración de DIR_ISA_DATOS en vez de la variable de entorno del mimo nombre (lo usan para saber el directorio donde el isacd guarda el estado.retros).

Thursday, 2 September 2004, 8:25:02 am
Sesiones remotas acesibles usando compresión NX Resulta que los de la distribución LiVux han hecho justo lo que necesit: NxServLiv: sesiones remotas X usando NoMachine's NX oss libraries. Habrá que probarlo...

Tuesday, 31 August 2004, 3:54:24 pm
Por fin está listo el FreeNX(GPL) Ya han terminado el FreeNX(GPL), que son sustitutos libres (y compatibles) del NoMachine NX Server&CLient. El servidor es una script en bash (500 LOC) que llama a las utilidades GPL de NX, el cliente... pues la verdad es que no sé cómo es el cliente. Pero con eso me es suficiente :-).

Tuesday, 24 August 2004, 12:56:37 pm
Alternativas para WSDL:
WSDL4TCLwsdl4tcl downloadIBM DeveloperWorks, IBM Public License
WSDL4PYwsdl4py downloadIBM DeveloperWorks, IBM Public License

Tutoriales:

NOTA: Se supone que los tutoriales de DW:Using WSDL with Tcl y DW:Processing WSDL in Python están bien, pero requieren registro (¡ugh!).

Tuesday, 24 August 2004, 10:07:13 am
Protocolos de autentificación WiFi en Linux Según parece, los demonios que se encargan de la autentificación en la red se llaman "supplicants" (p.ej. wpa_supplicant). He encontrado lo siguiente:
ProtocoloTipoURL
PEAP/EAP-TLS/EAP-TTLSsupplicant&authenticatorhttp://www.open1x.org/ (doc)
LEAPpassword sniffer/crackerhttp://asleap.sf.net
LEAPutilidades tarj. PCI cisco x86 (acu/leapset)Cisco aironet utilities for linux
LEAPLEAP login tarj PCI linux en x86/ppc/...(fuentes)http://www.dberlin.org/~dberlin/airoleap.html
WPAsupplicantwpa_supplicant

Monday, 23 August 2004, 5:55:05 pm
Protocolos wifi (LEAP) http://www.cisco.com/pcgi-bin/tablebuild.pl/aironet-utils-linux

Monday, 23 August 2004, 9:31:43 am
Conversación con José Croce Resulta que el WiFiAPIEntrega.tar.gz que nos han mandado para las PDAs usan QT/Embedded, mientras que habíamos quedado en usar las X.
Me volverá a llamar con el estado actual y "qué pueden hacer". Básicamente le he dicho que:
  • Habíamos quedado en que íbamos a usar las X.
  • Para el proyecto "futuro" necesitamos usar las X. No nos va a ser fácil controlar todo esto desde Qt/Embedded y no podemos contar con ello.
  • Nosostros estamos usando SDL por lo que podemos trabajar bajo Qt/Embedded, pero habrá que ver cómo hacemos para hacer la gestión de poner delante la otra apli, etc.
  • Si quieren usar Qt, deberían usar las Qt completas,que son las que funcionan bajo X.

Thursday, 15 July 2004, 11:19:01 am
Cosas que le vamos a deir que se pueden usar de TCII a 31 de Agosto
  • Venta
    • mettas: consultar estado, contadores, averías.
  • Peaje
    • portón: abrir
    • pupitre: ver contadores, ver estado, cambiar estado
  • Accesos
    • cancelas: consultar estado, abrir, cerrar
  • Control de Instalaciones
    • escaleras (req. integración vídeo): ver estado, arrancar, parar
    • ascensores: ver posición, poner fuera de servicio
    • ventiladores de túnel: arrancar, parar
    • ventiladores de anden: arrancar, parar
    • luz de túnel: ves estado, encender, apagar
    • cámaras: (req. integración vídeo): visualizar
    • megafonía: mensajes pregrabados
  • Teleindicadores
    • carteles teleindicadores: ver mensajes, ver previsión de tiempos de llegada de trenes.
  • PCI
    • detección: visualización del nivel de humos
    • extinción: control de la centralita de extincion y actuación sobre las electroválvulas de extinción.

Tuesday, 29 June 2004, 4:39:26 pm
Elementos a usar:

CaracterísticatecnologíaComentarios
Conexión con el servidor de localización (WSDL/SOAP1.2) pywebsvcs Hacer una pasarela desde el protocolo WSDL a algo más usable desde C
Persistencia XMX Exportar el display tanto al propio servidor en el que está corriendo XMX como al vncserver que corre en el PDA
Compresión NX transportar los datos de X que van desde el XMX al vncserver usando la compresión NX (nxagent, etc)
Integración TVCC librería IG usar el API de IG
Tabbed UIs pwm ¿+devil's pie (usa libwnck.tbz)? ¿con flush/fvwm? Poner las aplicaciones en varios tabs gestionados por el wm. Modificar el PWM para que permita cambiar el color del título, hacerlo parpadear, etc (igual que los tabs del x-chat)
Autentificación DES/3DES + prusdlsoftkey Similar a la desarrollada para el cliente vnc (¿encriptar también la transmisión o sólo la autentificación?)
Plano prusdlconnect Para permitir el trabajo
Cambiar la estación que se ve driver de captura Conexión con un driver pasarela de captura que mande comandos al plano que se ejecuta en remoto
Updated: 23/02/2005 para añadir una referencia a flush.

Descripción del proyecto


Tabla de contenidos:
  • @Introducción


Introducción


En esta página se pretende llevar el diario del estudio de viabilidad de usar para la implementación tanto del cliente como del servidor de wi-fi para la línea 8 en Linux.

Los elementos que componen el sistema son:
Servidores (PCs) de aplicación en linux
  • con el plano+drivers cargados, igual que si fueran una op.
  • con un programa que sirva la "pantalla" a los elementos remotos
    • hay que ver alguna manera de hacer el equilibrado de carga entre varios servidores
    • tiene que servir la pantalla por un medio seguro (ssh?) y que no se puedan conectar a él los que no pertenezcan a este sistema (p.ej. evitando a toda costa tener abierto un puerto VNC estándar al mundo).
    • tiene que ser lo más abierto posible (p.ej. de código y soporte al protocolo) y que realice su tarea de manera "invisible" (es una parte que no interesa al operador).
Clientes (PDAs) también en Linux, usando Wi-Fi
  • aplicación que permite conectarse a los servidores de pantallas
    • que tenga unos mandos en pantalla similares a los del tarantella.
    • que la comunicación establecida sea "segura"
    • código realizado en SICO si es posible.



Attachs: