4.2. Funciones

En este apartado de detalla el uso que se ha dado de las clases implementadas y su interacción entre ambas con el objetivo de conseguir la funcionalidad descrita en el capítulo de requisitos.

4.2.1. Iniciar el diálogo con la matriz

En la figura 4-7 se puede ver el caso en el que el usuario presiona el botón 'Conectarse a la matriz' con el objeto de comenzar a utilizar la aplicación. El objeto Ventana Principal encargado de recoger el evento, indica al objeto Matriz que debe ordenar la apertura de la conexión con la matriz y el lanzamiento de la hebra encargada de escucharla. Ésta última espera la confirmación del acceso a ésta.

Una vez recibido el acceso, la hebra leerá los siguiente mensajes que la matriz nos envíe [1] , se analizarán en el objeto mensaje y se actualizarán los eventos activados y desactivados de la matriz. Finalmente éstos serán consultados por la interfaz para actualizar su caja de texto conteniendo los eventos activados.

4.2.2. Cambiar las entradas/salidas de audio y vídeo

Cuando el objetivo del cliente es modificar las entradas de audio y vídeo, el esquema seguido es el resumido en la figura 4-8. Nuestra interfaz captura el evento, el objeto Matriz ordena al objeto Mensaje que cree y envíe consecutivamente (a través del objeto Conexión) los mensajes de activación y desactivación del evento que deseemos. Recordemos pues, que para la activación/desactivación de una entrada o salida, es necesario mandar el 'InputChannelOn' seguido del 'InputChannelOff'. Por último la matriz nos responderá con los eventos activados o desactivados.

Si lo que hacemos es activar una nueva salida, la matriz de vídeo y audio nos responderá con el nuevo evento activado. Pero si por el contrario activamos una nueva entrada, la matriz nos devolverá la desactivación de la anterior entrada, la activación de la actual y sus salidas en el caso de estar activadas. Al ser analizadas estas respuestas, los eventos serán eliminados o insertados en sus respectivas listas de eventos activados o desactivados.

4.2.3. Desplazar una determinada cámara

Al presionar nuestro usuario una dirección, se invoca al objeto Cámara que a su vez invocará al objeto Mensaje para que sea generado el mensaje de activación y enviado a la matriz de vídeo y audio por medio del objeto Conexión. Mientras tanto, el thread de lectura habrá recibido el mensaje de confirmación de la activación del evento lanzado por la matriz.

Una vez que el usuario suelte la dirección, ocurrirá justo lo mismo, con la diferencia que los mensajes llevarán la orden de desactivación del evento en lugar de la de activación.

4.2.4. Grabar una posición para la cámara seleccionada

Este caso reflejado por la figura 4-10 es muy parecido al anterior, con la excepción de que se usa otro objeto ventana (Ventana Guardar Posición) y sobre todo, que después de mandar la activación, debemos esperar a que la matriz escriba en nuestra conexión la confirmación de la desactivación del evento. En este momento sabremos que la posición elegida fue guardada[2]

Debemos aclarar que donde en nuestro esquema vemos que el hilo que escucha la matriz ha recibido dos mensajes, puede haber recibido en medio otros (por ejemplo GetMessages), pero para simplificar se realiza el estudio sobre el caso mas sencillo posible.

4.2.5. Personalizar tiempo de recorrido automático

En este caso, se crea un nuevo thread que se encarga de lanzar peticiones de posiciones a la matriz con un tiempo de espera entre las mismas. En el ejemplo la hebra encargada del recorrido ha enviado los eventos necesarios para que la cámara se sitúe en la posición uno, es ahora cuando debería esperar el tiempo elegido por el usuario y hacer luego lo mismo con la posición dos, tres y cuatro.

4.2.6. Regular el volumen de las entradas de audio

El diagrama para ésta función es muy similar al de un desplazamiento normal.

La única diferencia con el diagrama de 'Desplazar una determinada cámara' es que después de recibir la confirmación de activación del evento por parte de la matriz, nuestra hebra de escucha comenzará a recibir mensajes LevelValueSet. Recibiremos uno por cada unidad que suba/baje el volumen (dos en nuestro ejemplo). La orden de fin de esta subida/bajada se realizará igual que la de un desplazamiento, siendo confirmado por la matriz con el envío por parte de ésta de un OutputChannelOff.

Notas

[1]

en nuestro esquema sólo hemos representado un mensaje para simplificarlo, pero serán varios los recibidos

[2]

El esquema no lo indica para evitar complicar el esquema, pero finalmente se debe actualizar la interfaz.