Documente Academic
Documente Profesional
Documente Cultură
4.1 Introducción
El guión de diseño de este programa nos fue dado desde la sede central
inglesa de GSS. Evidentemente las herramientas debían ser parecidas a las
usadas para los otros protocolos, y la forma de programarlas debería ser
similar a las ya realizadas para que pudiera formar parte de un “todo” que será
el programa GSS100.
86
En el proceso de diseño la herramienta que posee el control general de todo el
proceso es Stack Record Tool ya que es desde aquí donde gestionamos el
proceso de grabación de las tramas que nos van llegando, es desde aquí
también donde controlamos la posibilidad de abrir la herramienta con la que
podemos configurar los filtros y de cargar archivos guardados previamente con
posibles filtros o sistemas completos junto con pilas de mensajes que hayan
sido grabados con anterioridad. Esta herramienta es bastante simple ya que
solo se trata de gestionar un botón que aparece en la pantalla y conseguir que
al pulsarlo el equipo comience a grabar mientras que si pulsamos el botón de
stop el equipo deje de almacenar. El proceso de grabado y almacenaje se hace
basándose en las herramientas de canal que estaban hechas previamente de
los anteriores protocolos, no hay diferencia entre almacenar tramas de
ARINC429 que almacenar tramas de AFDX la diferencia es el modo de
tratarlas, que se vera a continuación.
87
Desde esta herramienta debemos también crear las instancias de los filtros ya
que es aquí donde se inicializan, posteriormente en la herramienta de filtros
explicaremos más su funcionamiento y el modo de operar de estos filtros.
88
En estos nodos hay un campo para el End System, para el Virtual Link y así
para todos los detalles del enlace. Con esto se crea un sistema de almacén de
datos, sabiendo todos los datos del enlace podemos rellenar este árbol y tener
una base de datos con todos los sistemas y así saber si los mensajes que nos
llegan son de sistemas esperados o simplemente sistemas nuevos. En cada
columna se hace un análisis de errores y las tramas erróneas se resaltan en un
color distinto para que se sepa que trama es la errónea.
La siguiente de las herramientas, sin comentar las realizadas por mi, será la
herramienta de Activity Tool que es donde podemos ver todo el trafico que
nuestro equipo ha ido escuchando en este bus, en el caso que utilicemos una
red que este conectada a la red de Internet escuchara todas las transacciones
que se hagan para entrar a alguna pagina y estas también quedaran reflejadas,
tanto aquí como en la pila de mensajes podremos ver estas tramas. En la
pantalla principal en esta herramienta veremos un árbol con todo la estructura
de End Systems, particiones, puertos, etc… y con el número de tramas y bytes
que han llegado a cada uno. Podemos guardar todo este tráfico y podemos
cargar tráfico que haya sido previamente guardado.
89
55 Herramienta Activity
90
56 Herramienta Activity con errores
En las dos herramientas que nos quedan por comentar tenemos los útiles para
configurar la estructura de mensaje que podemos enviar o recibir, estructurar
los datos o configurar los datasets que nos van a llegar o vamos a enviar. A su
vez estas herramientas nos dan la posibilidad de configurar el sistema de
puertos que esperamos recibir y así tener perfectamente definido cada uno de
los envíos que vamos a tener.
91
57 Herramienta Configuration
Reseñar que podemos definir la longitud de los datos y que tipo de primitivas
vamos a tener. En la sección que explica el protocolo, podemos ver el tipo de
datos que podemos tener, de todos modos en la sección baja tenemos todo
tipo de datos que podemos encontrar en las primitivas.
92
Para programar esta herramienta comenzamos por buscar si ya hay alguna
estructura de datos realizada y vamos comprobando las compatibilidades y las
longitudes para que todo sea correcto, una vez hecho esto procedemos igual
con las que vamos creando. Para configurar el sistema global hacemos algo
parecido, tras comprobar la configuración establecida procedemos a comprobar
que todo es correcto (los valores no se salen de rango) y a permitir unos
nuevos puertos. Creo que no ha quedado suficientemente claro la forma de
almacenar los valores de los puertos, los End Systems, las particiones, etc…
Tomamos primero el End System, guardamos todos los valores que tengamos
cada uno en una estructura diferente con punteros al siguiente End System y
también un puntero a una lista de los Virtual Links que tiene asociados, estos
se almacenan igualmente y así sucesivamente. Por lo tanto cuando vamos
recorriendo toda la estructura comenzamos por el primer End System y vamos
leyendo todos los datos asociados (virtual links, particiones y puertos) y así
sucesivamente hasta que encontremos lo que necesitamos o bien lleguemos al
final de la estructura.
A partir de aquí nos centraremos en las herramientas que han sido diseñadas
por mi.
93
A continuación debemos buscar en la plataforma GSS100 las
posibilidades que nos da para cumplimentar esta herramienta, este
punto del procedimiento es una base del algoritmo que debemos crear a
continuación.
El siguiente paso será diseñar el algoritmo mediante el cual la
herramienta pueda hacer la función que requiramos, para esto debemos
saber las funcionalidades que tenemos en GSS100 en caso que nos
falte alguna definimos nuevas funciones generales o incluso nuevos
tipos.
Pasamos a continuación a crear el código de la herramienta.
Por último debemos integrar la herramienta junto con el resto de la
plataforma, comprobar que el funcionamiento es el adecuado y depurar
cualquier posible error que pueda surgir.
La herramienta Filter Manager ha sido diseñada para poder editar cada uno de
los filtros o disparadores (triggers) que pueden ser diseñados para lanzar una
de las siguientes acciones, podremos hacer que el dispositivo comience a
grabar, bien pare de grabar o bien solo nos lleve al próximo filtro. Para lanzar
esta herramienta debemos hacerlo desde la pantalla de la herramienta de
Stack Control y como hemos comentado antes es en esta herramienta donde
debemos inicializar cada filtro. En la captura de pantalla a continuación
podemos ver gráficamente esta herramienta, reseñar que aunque no se ve en
esta en el árbol de valores que podemos tomar para hacer el filtro veríamos
también el conjunto de señales que tuviéramos en el sistema.
94
59 Herramienta Filter DIalog
95
comparación, para hacerlas debemos hacer click en alguno de los botones que
tenemos debajo de la cadena de caracteres que es el filtro y darle algún valor
coherente como ya hemos dicho antes.
Una vez pasadas todas las pruebas la herramienta estaba preparada para ser
introducida en todo el sistema.
96
error cada uno de los campos que no sean coherentes con el resto del
mensaje.
Esta herramienta esta controlada por el Stack List Tool ya que es desde ahí
donde podemos elegir el mensaje a mostrar. En cada mensaje podemos ver los
campos de cada una de las cabeceras y la estructura de mensaje, cada vez
que seleccionamos un campo de esta herramienta se destaca los bytes que
correspondan a este campo en el mensaje. La parte baja de la pantalla son los
caracteres del mensaje en hexadecimal y en código ASCII. Cuando recibimos
alguna trama con algún campo de error, se resalta, como ya hemos comentado
antes, lo que podemos ver en la siguiente figura.
97
61 Herramienta Message Details con errores
En todas las herramientas en las que se utilizan tanto las primitivas como las
estructuras de mensaje deben ser creados unos registros para que se vuelvan
a crear referencias a estas estructuras y puedan ser tratadas debidamente. A
su vez en todas las herramientas que utilizan actualizaciones periódicas existe
una función llamada DoDisplayUpdate que es controlada por Delphi mediante
una serie de temporizadores y que se llama automáticamente cada cierto
tiempo, predefinido por el usuario, y es desde ahí donde se refresca la
herramienta. Vamos a adjuntar el código de esta función para comentarla
profundamente ya que es un buen ejemplo de una función de refresco,
encontramos el código en el anexo, punto 2.
Como podemos ver, esta función se basa en varias funciones de GSS100, esto
se debe a que un programa basado en módulos como este tiene un núcleo que
en el que se encuentran las funciones básicas como el control de canal o
control de grabación. Por otra parte con el anterior código podemos ver la
forma de programar en Delphi.
98
Una vez controlado el tema de la actualizaciones pasamos a construir el árbol,
antes de darle valores tenemos que inicializarlo y decirle el numero de nodos o
ramas que va a tener. En esta situación es fácil ya que las cabeceras serán
siempre iguales con los mismos campos, la dificultad vendrá con las
estructuras de mensajes para lo que necesitamos referenciarlas como ya
hemos comentado antes.
En cuanto al código restante solo nos queda destacar el control de cada uno de
los botones que tenemos en la forma así como los CheckBox, que son cada
uno de los campos en los que podemos cliquear y aparece un tick para ser
activado. Destacar por ultimo que junto a cada una de las primitivas que
aparecen en la estructura de mensajes, señales, aparece el valor de estas.
99
4.4.3 Visión en vivo (Live Monitor Tool)
Esta es una herramienta polivalente ya que en ella podemos ver tantos los
datos recibidos como los datos a enviar. La función principal de esta
herramienta, ya sea como receptor o como transmisor es poder ver los datos y
poder ver las estructuras de mensajes con los datos. Llegados a este punto
cabe preguntarse que nos aporta esta herramienta si ya podíamos ver los
datos en la anterior, y es que utilizando esta que estamos comentando
podemos ver la evolución de los datos en un determinado puerto, por lo que
podríamos decir que sirve para comprobar los datos en un puerto mientras que
la anterior servia para comprobar los datos de una trama.
Esta herramienta se puede lanzar tanto por los cauces normales en la barra de
herramientas de GSS100 o en el transmisor cuando pulsamos para cambiar los
datos a transmitir. Si es en datos recibidos, para seleccionar el puerto debemos
100
seleccionarlo en la herramienta Activity. En el caso de recepción será el puerto
que tengamos señalado en la herramienta del transmisor. Podemos diferenciar
si estamos en datos transmitidos o datos recibidos por el radio group que
tenemos en la parte alta de la forma, o también por la identidad que se nos
muestra en el campo Edit justo encima del árbol de datos. Este árbol podemos
elegir si se muestra o no mediante un CheckBox que tenemos en la parte alta.
Vemos una captura de pantalla en el caso que tuviéramos la herramienta como
transmisor.
101
Activity como en el transmisor los datos que vemos no cambiaran, a no ser que
llegue un nuevo mensaje en cuyo caso los datos si se actualizan. Justo esa es
la diferencia con la segunda, ya que en el caso que Pause Updates este
activado solo se vera la ultima información que haya llegado al puerto y no se
actualizara esta, pero si podremos cambiar de puerto.
Como vemos estas funciones trabajan dentro de un conjunto, y una vez creado
el nodo superior (All Node) vamos creando sus respectivos hijos según sea
conveniente y cada función va llamando a la sucesiva. A parte de estas que
mostramos también hay una función para las primitivas, y para las
subprimitivas. El funcionamiento de este código esta bastante claro. Vamos
recorriendo los datos de cada nodo sabiendo si tiene hijos o no y en función de
la respuesta vamos creando cada uno de ellos. A la función que va creando los
hijos tenemos que pasarle una referencia del nodo superior. Vemos que hemos
creado una variable del tipo MsgStructureConfig que es el registro que hemos
estado hablando y en el podemos almacenar todos los valores y además
tenemos funciones que se usan repetidas veces en estos registros tales como
buscar hijos, o crearlos. Como vemos esta función no se destaca por su
complejidad pero me parecía bueno destacarlo para ver como se realiza el
tratamiento de las primitivas.
102
Todas estas herramientas que tienen datos en estructuras de mensajes
necesitan una función que maneje el refresco del árbol de datos. En este caso
se llama RefreshStructure y como ya hemos comentado antes encontramos el
código en el anexo 5.
Por ultimo creo que es conveniente destacar que cada vez que seleccionamos
una primitiva esta se destaca en el campo de datos. Para esto utilizamos la
función ligthselected cuyo código podemos ver en el anexo, punto 6.
Vemos que cada vez que una primitiva es seleccionada en el árbol, tiene que
ser primitiva sino nada se selecciona en la trama, comprobamos su dimensión
y resaltamos toda ella en la trama, hacemos lo mismo para las subprimitivas.
Este ejemplo de función nos sirve para ilustrar la forma de trabajar con los
editores de datos (HexEditor).
Comentar para terminar con esta herramienta que dentro del árbol con la
estructura de mensaje cada nodo debe tener unos datos coherentes respecto
al tipo de nodo que sea, de este modo vamos dando uno por uno estos datos
que posteriormente aparecerán en pantalla, tales como type, length, etc …
Junto con las herramientas propias de sniffer de red, con las que podemos ver
lo que esta pasando por nuestro bus y analizar las tramas, tenemos las
103
siguientes herramientas que nos permiten enviar una serie de tramas ya sea
para este u otro equipo, que nos sirve para probar equipos ante emisiones
erróneas o simplemente para saber el comportamiento del equipo ante una
transmisión normal.
64 Herramienta Transmitter
Como podemos ver se trata de una tabla (grid) en la que tenemos una serie de
columnas que deben ser implementadas por todas las transacciones, para
programar esto vemos que lo mas sencillo es crear un registro para cada una
de las transacciones, que será inicializado al crear una nueva transacción en su
debido botón, e ir rellenando cada uno de los campos. Cada uno de estos
tendrá una serie de restricciones que no se pueden dejar de cumplir de modo
que al intentar cambiar estos valores antes de que estos cambios sean
definitivos se debe comprobar por ejemplo que el valor del puerto no supera el
255 y algunas otras restricciones que se pueden consultar en el protocolo.
Como podemos ver en la anterior captura de pantalla, tenemos en la columna
104
Data una serie de botones que son los que nos permiten acceder al cambio de
datos a enviar, y a su vez la columna de ErrorInyect que es la que lanza la
herramienta de inyección de errores que comentaremos mas tarde.
Podemos ver como primero buscamos si el End System 1.0 ha sido creado con
anterioridad sino ha sido así lo creamos en ese momento. Si ya ha sido creado
lo único que tenemos que hacer es coger ese registro y comprobar que el
virtual link también es el correcto y así hasta llegar al puerto. Por ultimo, una
vez creados todos los nodos correctamente pasamos a dar los valores en la
tabla. En otras funciones en esta misma herramienta procedemos a enviar las
tramas mediante una función del núcleo de GSS100 llamada send, que es una
función del canal. Cada vez que cambiamos alguno de los valores de cada
transacción, tenemos que cambiar la base de datos de los puertos que hemos
creado en la función que contamos arriba, y también deberemos borrar el
antiguo registro con los datos anteriores.
105
Cuando cambiamos alguna celda, como hemos dicho antes, debemos validar
los nuevos datos para que estos sean definitivos. La función en la que
realizamos estos actos es SenderTreeNewText y su código esta con el resto de
códigos en el anexo, punto 8.
Las dos herramientas que nos quedan por comentar son ambas basadas en la
transmisión, pasamos a comentarlas a continuación.
106
65 Herramienta Error Injection
107
inicio de la función damos los valores de las posiciones para que luego el
código pueda ser más fácil de leer.
66 Herramienta Replay
108
velocidad posible (max network speed) o bien podemos definir una tasa para
este reenvío (custom period).
4.5 Conclusiones
109