Programa Prototipo Setex

Dependencies:   BatteryPanel-prot-prod Slave-prot-prod mbed GraphicLCD-prot-prod ThermalPrinter-prot-prod LimitSwitches-prot-prod ParkingMeter-prot-prod

Revision:
1:4cdf726a3497
Parent:
0:a1ce6cdc3045
--- a/main.cpp	Tue Jun 04 19:53:44 2019 +0000
+++ b/main.cpp	Mon Jul 22 22:11:36 2019 +0000
@@ -224,7 +224,7 @@
 char Espacio[6];
 char Track2[38]="0000000000000000000000000000000000000";
 
-char Parquimetro[5]="1069";
+char Parquimetro[5]="1068";
 char Municipio[9]="San Jose";//"San Jose";
 char CodigoMunicipio[3]="01";
 
@@ -237,7 +237,7 @@
 char PapelDisponible[5]="0000";
 char Clave[4]= {'4','3','2','2'};
 char Progreso[3];
-int  Precio=300;
+int  Precio=420;
 int  Papel=4000;
 bool MantenimientoInterruption=0;
 uint8_t Message[] ="{\"municipio\":\"Santa Ana\",\"id\":1068,\"place\":\"2222\",\"time\":120,\"t2\":\"%5303105315252296=2108?\"}";
@@ -542,10 +542,10 @@
 {
     uint8_t PositionPlace=0;
     
-    sprintf(Espacio,"_    ");
+    sprintf(Espacio,"_    ");             //char Espacio que contiene la posicion para parquear
 
     Screen.Limits();
-    Screen.PutString(15,12,"Numero de espacio:");
+    Screen.PutString(15,12,"Numero de espacio:");            // interactua con el usuario a traves de la pantalla y el puerto usb
     Screen.PutChar(28,11,'!');
     Screen.PutString(15,34,Espacio);
     Screen.Show();
@@ -554,24 +554,24 @@
     Computer.printf("%s\n",Espacio);
 
     Inicio=BaseClock.read_ms();
-    Keypad_Init();
+    Keypad_Init();                                  //inicia teclado
     while(true) {
-        Fin=BaseClock.read_ms();
+        Fin=BaseClock.read_ms();      
         Transcurrido=Fin-Inicio;
-        if(Transcurrido>TimeOut) {
+        if(Transcurrido>TimeOut) {                  //si se supera el timeout sin presionar teclas se finaliza la operacion de usuario
             Screen.Clean();
             return USER_FINISH;
         }
 
         Tecla=KeyPad_Read();
-        if (Tecla!=NO_KEY) {                                        // Se valida que se ingrese una tecla valida
-            Inicio=BaseClock.read_ms();
+        if (Tecla!=NO_KEY) {                                        // Se verifica que se ingrese una tecla valida
+            Inicio=BaseClock.read_ms();                             //se reinicia la cuenta de tiempo 
             if (((Tecla=='0')||(Tecla=='1')||(Tecla=='2')||(Tecla=='3')||(Tecla=='4')||(Tecla=='5')||(Tecla=='6')||(Tecla=='7')||(Tecla=='8')||(Tecla=='9'))&&(PositionPlace<4)) {                      //Agregar un digito
                 Espacio[PositionPlace]=Tecla;
                 PositionPlace++;
                 Espacio[PositionPlace]='_';
                 Espacio[4]=' ';
-                Espacio[5]='\0';
+                Espacio[5]='\0';                            //agrega el numero correspondiente a Espacio
             }
             if ((Tecla=='B')&&(PositionPlace>0)) {                   //Borrar el ultimo digito
                 Espacio[PositionPlace]=' ';
@@ -580,7 +580,7 @@
                 Espacio[4]=' ';
                 Espacio[5]='\0';
             }                                
-            if (Tecla=='C') {                                       //Cancelar operacion
+            if (Tecla=='C') {                                       //Cancelar operacion, finaliza operacion de usuario
                 Screen.Clean();
                 return USER_FINISH;
             }         
@@ -1456,22 +1456,23 @@
     }
 }
 
-void Usuario(uint8_t Entrada)
+void Usuario(uint8_t Entrada)             //lleva a cabo de las operaciones necesarias para la interaccion con el usuario
 {
     int PrinterState;
-    uint8_t Comando=Entrada;
-    if(Comando==USER_INIT) {
+    uint8_t Comando=Entrada;              //cada paso se va dando por comandos empezando por USER_INIT
+    if(Comando==USER_INIT) {  
         Host.detach();//1800 30 minutosHost.attach(&Interrupt_Host,5);//1800 30 minutos
+        //durante la operacion de usuario se deshabilita la interrupcion de host
         Computer.printf("Usuario iniciar 1\n");
         ParkingMeter.Max232(1);
         Impresora.PowerMax(1);
         Screen.On();
         Screen.Init();
-        Slave.Awake();
-        Slave.Command(COMMAND_ON);
+        Slave.Awake();                          // "despierta" al esclavo 
+        Slave.Command(COMMAND_ON);              //habilita la comunicación con el modem
         BaseClock.start();
         BaseClock.reset();
-        Comando=USER_PLACE;
+        Comando=USER_PLACE;                    //nos envia a la opcion de que el usuario coloque la posicion en que desea parquear
     }
 
     if(Comando==USER_INIT2) {
@@ -1521,18 +1522,18 @@
 
     if(Comando==USER_PLACE) {
         Computer.printf("Usuario espacio\n");
-        CardReaderPower=1;
-        Comando=GetPlace(USER_CARD,15000);        
+        CardReaderPower=1;                   //mientras tanto se va encendiendo la lectora de tarjeta
+        Comando=GetPlace(USER_CARD,15000);   //si se lee sin problema el espacio de parqueo ahora Comando permite leer la tarjeta      
         if(Comando==USER_CARD) {
-            Slave.Command(COMMAND_INIT);
+            Slave.Command(COMMAND_INIT);     //se va iniciando la conexion a la red celular
         }
     }
     
     if(Comando==USER_CARD) {
         Computer.printf("Usuario tarjeta\n");
-        Comando=GetCard(USER_TIME,20000,5000);
+        Comando=GetCard(USER_TIME,20000,5000);  //si se lee sin problema la tarjeta ahora Comando permite leer el tiempo de parqueo
         if(Comando==USER_TIME) {
-            Slave.Command(COMMAND_GPRS);
+            Slave.Command(COMMAND_GPRS);        //va estableciendo conexión a la red de internet
         }
     }
     
@@ -1543,15 +1544,15 @@
 
     if(Comando==USER_TIME) {
         Computer.printf("Usuario tiempo\n");
-        CardReaderPower=0;
-        Comando=GetTime(USER_DATA,15000);
+        CardReaderPower=0;                              //se apaga el lector 
+        Comando=GetTime(USER_DATA,15000);//si se lee sin problema el tiempo de parqueo ahora Comando permite encriptar y enviar los datos al esclavo
         if (Comando==USER_FINISH){
             Slave.Command(COMMAND_END);
         }
         Comando=Continuar(Comando,8000);
     }
 
-    if(Comando==USER_DATA) {
+    if(Comando==USER_DATA) {                      // se encriptan los datos y se envían al esclavo
         Computer.printf("Usuario datos\n");
         Slave.Command(COMMAND_DATA);
         Slave.Encryption_Data(Parquimetro,Municipio,TiempoMinutos,Espacio,Track2);
@@ -1562,7 +1563,7 @@
         Computer.printf("Municipio: %s\n",Municipio);
         Computer.printf("Espacio: %s\n",Espacio);
         Computer.printf("Track2: %s\n",Track2);
-        Comando=Continuar(USER_POST,20000);
+        Comando=Continuar(USER_POST,20000);//una vez que el esclavo tenga los datos con userpost se envían al servidor
         if (Comando==USER_FINISH){
             Slave.Command(COMMAND_END);
         }        
@@ -1572,10 +1573,10 @@
         Computer.printf("Usuario operacion\n");
         Slave.Command(COMMAND_POST);
         Slave.Encryption_Print();
-        Comando=Respuesta1(USER_ANSWER,50);
+        Comando=Respuesta1(USER_ANSWER,50);// imprime en pantalla "realizando operación" y Comando=Useranswer
     }
 
-    if(Comando==USER_ANSWER) {
+    if(Comando==USER_ANSWER) {           //
         Computer.printf("Usuario respuesta\n");
         Slave.Command(COMMAND_ANSWER);
         PrinterState = ImpresoraIniciar();
@@ -3587,19 +3588,19 @@
     Screen.Off();
 }
 
-void InitSistema(){
+void InitSistema(){//iniciar el sistema
     Regulator5V=1;
     wait_ms(50);
-    Screen.On();
+    Screen.On();//encender, iniciar y limpiar pantalla
     Screen.Init();
     Screen.Clean();
-    Keypad_C1.rise(&KeyPad_InterruptDisable);
+    Keypad_C1.rise(&KeyPad_InterruptDisable);//desactivando interrupciones para el teclado
     Keypad_C2.rise(&KeyPad_InterruptDisable);
     Keypad_C3.rise(&KeyPad_InterruptDisable);
     Keypad_C4.rise(&KeyPad_InterruptDisable);
-    Configuracion.rise(&Interrupt_Mantenimiento);
-    CardReader.attach(&Interrupt_CardReader);
-    Host.attach(&Interrupt_Host,5);//1800 30 minutos
+    Configuracion.rise(&Interrupt_Mantenimiento);//activando interrupcion para el modo de configuracion
+    CardReader.attach(&Interrupt_CardReader);//activando interrupcion para el lector de tarjeta
+    Host.attach(&Interrupt_Host,5);//1800 30 minutos interrupcion hosting
     Computer.printf("Prototipo Completo 4\n");
     Screen.Off(); 
     Regulator5V=0;   
@@ -3607,18 +3608,18 @@
 
 int main()
 {
-    InitSistema(); 
+    InitSistema(); //iniciar el sistema
     while(1) {
-        KeyPad_InterruptEnable();
-        Doors.InterruptEnable();
+        KeyPad_InterruptEnable();                //activando interrupciones para el teclado
+        Doors.InterruptEnable();                   //activando interrupciones para los switches de las puertas
         
-        hal_sleep();
+        hal_sleep();                              //en cada ciclo se manda la placa a dormir esperando las interrupciones
         
-        if(KeyPad_Read() != NO_KEY) {
+        if(KeyPad_Read() != NO_KEY) {             //si se detecta alguna tecla presionada
             Regulator5V=1;
             wait_ms(50);
-            ParkingMeter.LedUsuario(1); 
-            Usuario(USER_INIT); 
+            ParkingMeter.LedUsuario(1);           //activa LED3 (rojo) indicando operacion de usuario 
+            Usuario(USER_INIT);                    //empieza operacion de usuario 
             EsperarSim900(5000);
             Host.attach(&Interrupt_Host,5);
             ParkingMeter.LedUsuario(0);