-
Notifications
You must be signed in to change notification settings - Fork 0
/
protocolo.txt
96 lines (73 loc) · 3.79 KB
/
protocolo.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
PROTOCOLO TORTUGAS 171020
Toda la comunicación se hace con paquetes de 16 bytes de tamaño
fijo. Estos paquetes se transportan por UDP o TCP.
1. TIPOS DE PAQUETES
Todos los paquetes tienen que comenzar con las letras "QSY" seguido
por el tipo del paquete (Type).
Hay cuatro tipos de paquetes:
HELLO: Los NODOS mandan estos paquetes a través de un grupo
multicast UDP. Solo importa el valor del campo ID. La TERMINAL
debe escuchar en el mismo grupo y puerto para encontrar los
nodos en la red.
Una vez que la TERMINAL descubre los nodos, se conecta a ellos
por TCP usando el mismo valor numérico del puerto.
COMMAND: Van de la TERMINAL al NODO. Indican el color (Color)
con el que se tiene que iluminar el NODO, el tiempo que debe
esperar hasta prender la luz (Delay), el paso de la rutina al
cual corresponde este COMMAND (Step), si debería haber un
pitido (S) o el umbral de distancia de apagado del NODO (D).
Por último se coloca el ID del nodo que va a recibir el paquete.
TOUCHE: Van del NODO a la TERMINAL por la misma conexión que
la TERMINAL inició. Se usan para avisar a la TERMINAL que ya
se apagó el NODO. Se incluye el tiempo que tardó en apagarse
desde que se prendió la luz (Delay), el Color con cual se
había iluminado (Color) y el paso que estaba ejecutando (Paso).
Por último se agrega el ID del nodo que envía el touche.
KEEPALIVE: Van del NODO a la TERMINAL. Se envían de forma
periódica para que la TERMINAL detecte la desconexión del NODO
o latencia inaceptablemente alta.
Sólo ID debe estar completado.
2. Formato del paquete
Todos los campos almacenan números sin signo y con orden de bytes
Big-Endian.
0 1 2 3
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 'Q' | 'S' | 'Y' | Type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ID | Color |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Delay |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Step | Configuration |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
2.1 Campos
Type: Un valor numérico que identifica el tipo de paquete.
0: HELLO
1: COMMAND
2: TOUCHE
3: KEEPALIVE
Color: Color que ilumina el nodo junto a otros dos parámetros.
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ROJO | VERDE | AZUL |X X X X|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Delay: en el caso de un paquete COMMAND, es el tiempo en
milisegundos que debe esperar el NODO antes de prenderse.
En el caso de un paquete TOUCHE, es el tiempo en milisegundos
que tardó en ser apagado.
Step: es el número de paso de la rutina que se esté ejecutando.
Cuando el NODO recibe un paquete COMMAND, su respuesta TOUCHE
(si correspondiese) debe tener el mismo número de paso de la
rutina. Si un paquete COMMAND tiene Step igual a cero, el NODO
debe ignorar su desactivación y no responder con TOUCHE.
Configuración: define la distancia a la que se puede apagar
el nodo y si debe emitir sonido al recibir un COMMAND.
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|X X X X X X X X X X X X X X D S|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
D 1: Se puede apagar el nodo a mayor distancia
0: No se puede apagar el nodo a mayor distancia
S 1: El nodo debe emitir sonido al prenderse.
0: El nodo no debe emitir sonido al prenderse.