CarApp
Notificaciones a celulares al detectar la alarma del auto activada.
Página principal
Estructuras de Datos
Archivos
Lista de archivos
Globales
Todo
Estructuras de Datos
Archivos
Funciones
Variables
Enumeraciones
Valores de enumeraciones
'defines'
control_alarma.c
Ir a la documentación de este archivo.
1
//******************************************************************************
2
// Nombre: control_alarma.c
3
// Versión: 1.0
4
// Descripción: Módulo encargado de controlar las notificaciones a los celulares
5
// predefinidos. Controla las notificaciones mediante una máquina
6
// de estados, la cual envía los mensajes, o realiza la llamada
7
// correspondiente a partir de eventos externos como activación
8
// de la alarma, o expiración del tiempo entre avisos. Tambíen
9
// incluye un proceso para configurar el puerto de interrupción
10
// y la rutina de atención al mismo.
11
// Autores: Juan Martín Ortega, Ramiro Barrón, Andrea Cukerman
12
// IIE, Facultad de Ingeniería, UdelaR
13
// Uruguay
14
// Fecha: Junio 2012
15
//******************************************************************************
16
29
#include "
control_alarma.h
"
30
#include "
gsm.h
"
31
#include "
uart.h
"
32
#include "
timer.h
"
33
#include <io430x22x4.h>
34
#include "
car-app.h
"
35
#include <string.h>
36
37
38
/*
39
* Definición de constantes privadas
40
*/
41
46
enum
alarm_state
{
ENVIAR1
=1,
LLAMAR1
,
ENVIAR2
};
47
53
int
alarm_control_state
;
54
55
64
void
alarm_control
()
65
{
66
char
reply[100];
// Define cadena donde se va a cargar respuesta al usuario
67
switch
(
alarm_control_state
)
68
{
69
case
ENVIAR1
:
send_sms
(
get_first_phone
(),
"ALERTA!! ALARMA ACTIVADA."
);
// Envía sms a primer celular con el texto "ALERTA!! ALARMA ACTIVADA."
70
init_control_timer
();
// Empieza a contar tiempo entre notificaciones
71
alarm_control_state
=
LLAMAR1
;
// Define LLAMAR1 como estado de la máquina de estados alarm_control()
72
P1OUT ^= 0x02;
// Apaga luz verde
73
break
;
74
case
LLAMAR1
:
call
();
// Llama al primer celular
75
alarm_control_state
=
ENVIAR2
;
// Define ENVIAR2 como estado de la máquina de estados alarm_control()
76
P1OUT ^= 0x02;
// Apaga luz verde
77
break
;
78
case
ENVIAR2
: strcpy(reply,
"ALERTA!! ALARMA ACTIVADA. "
);
// Copia "ALERTA!! ALARMA ACTIVADA." en cadena definida anteriormente
79
strcat(reply,
get_first_phone
());
// Agrega a la cadena el primer celular
80
strcat(reply,
" NO RESPONDE."
);
// Agrega a la cadena "NO RESPONDE."
81
send_sms
(
get_second_phone
(), reply);
// Envia sms a segundo celular con la cadena definida anteriormente como texto
82
alarm_control_state
=
ENVIAR1
;
// Define ENVIAR1 como estado de la máquina de estados alarm_control()
83
P1OUT ^= 0x02;
// Apaga luz verde
84
P2IE |= 0x10;
// Habilita interrupciones de P2.4
85
break
;
86
default
:
break
;
87
}
//end switch
88
}
//end alarm_control
89
96
void
conf_alarm_control
()
97
{
98
P1DIR |= 0x02;
// Configura P1.1 como dirección de salida
99
P1DIR &= 0xFD;
// Apaga luz verde
100
P2IE |= 0x10;
// Habilita interrupciones de P2.4
101
P2IES &= 0xEF;
// Configura flanco de subida en P2.4
102
P2IFG &= ~0x10;
// Borra bandera de interrupcion de P2.4
103
}
//end conf_alarm_control
104
112
// Port 2 interrupt service routine
113
#pragma vector=PORT2_VECTOR
114
__interrupt
void
Port_1
(
void
)
115
{
116
alarm_control_state
=
ENVIAR1
;
// Define ENVIAR1 como estado de la máquina de estados alarm_control()
117
if
(
get_status_flag
())
// Verifica si las notificaciones están activadas
118
{
// ACTIVADAS
119
set_control_flag
();
// Prende bandera de control
120
P1OUT ^= 0x02;
// Prende luz verde
121
P2IFG &= ~0x10;
// Borra bandera de interrupcion de P2.4
122
P2IE &= ~0x10;
// Deshabilita interrupciones de P2.4
123
}
//end if
124
else
125
{
// DESACTIVADAS
126
P2IFG &= ~0x10;
// Borra bandera de interrupcion de P2.4
127
P2IE |= 0x10;
// Habilita interrupciones de P2.4
128
}
//end else
129
}
//end ISR
control_alarma.c
Generado por
1.8.1