Skip to content

PODM - Proyecto 2 bis: Actividad alternativa para BLE

Notifications You must be signed in to change notification settings

jgm139/control-invaders

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 

Repository files navigation

Proyecto 2 bis: actividad alternativa para BLE

PROGRAMACIÓN OPTIMIZADA PARA DISPOSITIVOS MÓVILES


Autores: Julia García Martínez y Pablo López Iborra



Descripción general del proyecto

Este proyecto implementa un mando en un dispositivo iOS para poder manejar la mirilla de un juego tipo shooter para MacOS. El tipo de control es mediante un trackpad, deslizando la mirilla por la pantalla del iPhone.

La aplicación se comunica mediante BLE haciendo uso de Core Bluetooth.


Estructura del proyecto

Para este trabajo han sido necesarios dos proyectos:

  • El que implementa la parte MacOS, al que hemos denominado InvadersScreen.
  • El que implementa la parte iOS, al que hemos denominado InvadersControlShooter.

Invaders Screen

Se compone del controller ScreenViewController donde se implementa la puesta en escena y la lógica del juego.

Por otro lado, hemos creado la clase extension de ScreenViewController llamada ExtensionsScreenViewController. Aquí implementamos la parte central y peripherical de BLE. Además, también se monta el servicio SHOOT con su correspondiente característica.


Invaders Control Shooter

Se compone del controller ControlViewController donde se implementan los gestos correspondientes para el control de la mirilla.

Primero, tenemos el gesto Pan Gesture Recognizer para poder deslizar la mirilla por la pantalla.

Segundo, contamos con el gesto Tap Gesture Recognizer para que al hacer tap sobre la mirilla se realice el disparo.

Además, en el controller realizamos la normalización de las posiciones para cada coordenada X e Y. De esta manera podemos desplazar la mirilla independientemente del tamaño de la pantalla.

Por otro lado, hemos creado la clase extension de ControlViewController llamada ExtensionsControlViewController. Aquí implementamos la parte central y peripherical de BLE. Además, también se monta el servicio XY con su correspondientes características para cada coordenada.


Struct BLE - Constantes

En ambos proyectos se ha incluído un struct llamado BLE con el nombre de los servicios, características, propiedades y permisos, así como el nombre de cada device.


Dificultades encontradas

En general, terminar de asentar los conocimientos teóricos y prácticos del funcionamiento de BLE ha sido una de las principales dificultades que hemos encontrado a la hora de realizar el trabajo. Además, también debíamos entender en su totalidad la forma en que gestiona Core Bluetooth los distintos elementos que participan en la comunicación.

Por otro lado, la conexión que había entre el macOS y la parte periférica de la parte iOS era una suscripción. Por tanto, debíamos asegurarnos de que cada vez que las coordenadas de la mirilla cambiaran al deslizarla por la pantalla del dispositivo iOS, se actualizara de forma inmediata en el Mac.

Aquí nos encontramos con el problema de actualizar dos características a la vez, puesto que hacíamos dos llamadas seguidas a la función updateValue() de CBPeripheralManagerDelegate. Esto provocaba que la segunda llamada nos devolviera false, ya que la cola de tareas del PeripheralManager se saturaba.

Como solución, implementamos la función peripheralManagerIsReady(toUpdateSubscribers) que se ejecutaba cuando dicha cola quedaba libre, garantizando la correcta actualización de las características.

About

PODM - Proyecto 2 bis: Actividad alternativa para BLE

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages