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

Documentacion ots antigua

Sistema de Seguimiento de Objetos (OTS, teleindicadores)

DOCUMENTACION OBSOLETA (22/09/04)

Introducción


El sistema se compone de los siguientes módulos::

MóduloTipoDescripción
misc/libreríaParsing de los ficheros de sico
Lee los ficheros de línea física al formato interno
xdr/libreríaSerialización a xdr, incluyendo trazas
(permite repetición en el simulador)
ctc/Programaprotocolo: Implementa el protocolo con el ctc (ctc.x)
ctcdump: conecta con un ctcsim, difusor, etc
ots/Programa "Object Tracker System"
Parte principal del programa
Lleva la base de datos en tiempo real de qué objetos están en qué zonas, así como los atributos de los objetos y las zonas
vidi/ProgramaInterfaz de usuario del sistema

A continuación se explican un poco más el ots (backend) y el vidi) front-end.

ots


Es el "Object Tracker System". El ejecutable se denomina MIND (Modelo de información de dispositivos).

Esta basado en el modelo de objectos de gtk (aunque no usa gtk). Usa de forma extensiva la glib. Como referencia de uso de glib, se recomienda el devhelp, que es el visualizador de manuales de GNOME2. A continuación voy a hablar de objetos, que se implementan en C simplemente usando estructuras para los datos miembros, y funciones del tipo nombreobjeto_haz_funcion(estructura , restoparams...) para las funciones. No hay encapsulación (ouch!) y la herencia se hace simplemente poniendo el objeto del cual hereda como primer elemento de la estructura (no se soporta tampoco la herencia múltiple).

 MBase
  +----Zonas (estáticas)
  \----Objetos (dinámicas) -- incuye un GC (garbage collector)

Descripción de MBase:

[MBase]
 +---- id: para la tabla hash de cadenas
 +---- domain: p. ej. la Linea11
 +---- subdomain: la clase de objeto (de qué ambito viene; tretra o ctc)
 +---- children: lista de objetos/zonas de la que es "parte de"
 +---- padre: quién es su padre (si es "parte de" alguien)
 \---- atrib: atributos arbitrarios asociados con el objeto

Por último, según el tipo que sea:

  • Objetos: tiene una lista de localizaciones (Zonas) en las que está.
  • MZone: con la lista de objetos que están ahí

Las partes más relevantes son:
  • Parser
  • serializador de xdr "escrito a mano" (por razones de eficiencia) para la comunicación proveedor->OTS y OTS->cliente (nota: otros protocolos que podrían hacer el trabajo en un futuro serían CORBA y BEEP).
  • Mind, que es el que hace de proveedor a los clientes (vamos, el núcleo de que une las librerías de OTS)
  • conversortes: ctc2ots, que convierte al ctc en un generadr para ots.

vidi


Es el programa que da la interfaz gráfica al usuario.
Características:
  • Conectable a tantos host:puerto como se quiera
  • Coge el "mundo" de los ficheros de zona (no los coge del servidor mind; para (1) poder definir zonas con menos cosas (por cuestiones de permisos, etc), y (2) [efecto lateral] poder mostrar las zonas sin estar conectado)
  • se le puede decir las líneas que quieres visualizar al principio (después se pueden cerrar y abrir nuevas vistas de esas y otras lineas desde el interfaz).

Addenda sobre los mensajes


Mensajes prov-ots: se pretende que den la información del tipo de "En este circuito de vía están estos trenes (y sólo estos)"
  • en esta zona están estos (y sólo estos)
  • Entra en zona estos
  • Sale de zona estos
  • Evento de otro OTS (entrando con comun.)

Mensajes ots-cliente
  • entran/salen: lista nec. de objetos
  • objetos (para hacer un dump).

Link to this Page