Proyecto

General

Perfil

Descargar (5,1 KB) Estadísticas
| Rama: | Revisión:
29401061 Elisa
//Version 2.0.1: Cambio fichero configuracion, Incluyo nueva libreria gestion fichero

#include <QCoreApplication>
#include <QDebug>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <cstring>
#include <csignal>
#include <fstream>
#include <iostream>
#include <unistd.h>
#include <globales.h>
#include "qsshsocket.h"
#include "dlinkpasswordgen.h"
#include "redrelaylibrary.h"
#include "rs232.h"


using namespace std;
using std::ofstream;
Globales opciones;

//SettingsSIATIC opciones;
DLinkPasswordGen sesion;

int SALIR=1;






//@param estado: 1=Encender ; 0=Apagar ; 2=No hacer Nada ;
void estadoWifi(int estado){
if(estado==2){return;}
sesion.ConnectRouter();
qDebug()<<"Wifi"<<estado;
printf("%s\n", "INICIANDO");
if(estado==1){
sesion.ConectarWIFI();
}else{
sesion.DesconectarWIFI();
}
sleep(6);
//sesion.DisconnectRouter();
return;
}

//@param estado: 1=Encender ; 0=Apagar ; 2=No hacer Nada ;
void estadoRele(int estado){
if(estado==2){return;}
qDebug()<<"Rele"<<estado;
RedRelayLibrary rele;
rele.ConnectRelay();
if(estado==1){
if(rele.GetRelayState(PORT_THREE)==OFF){
rele.SetRelayState(ON,PORT_THREE);
}
}else{
if(rele.GetRelayState(PORT_THREE)==ON){
rele.SetRelayState(OFF,PORT_THREE);
}
}
rele.DisconnectRelay();
sleep(1);
return;
}

//@param estado: 1=Encender ; 0=Apagar ; 2=No hacer Nada ;
void estadoProyector(int estado){
if(estado==2){return;}
qDebug()<<"Proyector"<<estado;
int cport_nr=0, // /dev/ttyS0 (COM1 on windows)
bdrate=9600; // 9600 baud
char mode[]={'8','N','1',0},
str[2][512];
strcpy(str[0], "\x7E\x30\x30\x30\x30\x20\x31\x0D"); //ENCIENDE
strcpy(str[1], "\x7E\x30\x30\x30\x30\x20\x32\x0D"); //APAGA
RS232_OpenComport(cport_nr, bdrate, mode);
if(estado==1){
RS232_cputs(cport_nr, str[0]);
}else{
RS232_cputs(cport_nr, str[1]);
}
RS232_CloseComport(cport_nr);

}


//@param: fin puede ser cierto o falso, si en falso procesa las opciones para arranque, sino para cierre
void procesarOpciones(bool fin){
if(fin){ //Opciones de Cierre
printf("%s\n", "Opciones Cierre");
estadoWifi(opciones.wifiFin());
estadoRele(opciones.sonidoFin());
estadoProyector(opciones.proyectorFin());
}else{ //Opciones de inicio
printf("%s\n", "Opciones INiCIO");
estadoWifi(opciones.wifiInicio());
estadoRele(opciones.sonidoInicio());
estadoProyector(opciones.proyectorInicio());
printf("%s\n", "FIN Opciones Inicio");
}
if(opciones.ActualizarClaveWifi()==1 && !fin){
//Almaceno la clave al inicio
//sesion.ConnectRouter();
printf("%s\n", "Almacenando Clave");
sesion.GeneratePWD();
printf("%s\n", "Fin Clave");
sesion.DisconnectRouter();

}

}

void SignalHandler( int signum ){
printf("%s%d\n", "Señal capturada:", signum);
procesarOpciones(true);
sleep(15);
SALIR=0;
return;
}

int main(int argc, char *argv[])
{

opciones.cargaVariablesEntorno();
qDebug() << "EMPEZAMOS" << endl;
if(opciones.ActualizarClaveWifi()==1){
int i, aux;
char key[9] = "";
srand(time(NULL));
for(i=0; i<4; i++){
if(i==0){
aux=rand()%26;
key[i]=(char)(aux+'a');
key[i+4]=(char)(aux+'a');
}else{
aux=rand()%10;
key[i]=(char)(aux+'0');
key[i+4]=(char)(aux+'0');
}
}
//Obtengo la clave del fichero de texto
printf("%s\n", key);
ofstream out;
out.open("/tmp/clave.txt");
out<<key;
out.close();
}

procesarOpciones(false);

signal(SIGINT, SignalHandler);
signal(SIGHUP, SignalHandler);
signal(SIGINT , SignalHandler);
signal(SIGQUIT , SignalHandler);
signal(SIGILL , SignalHandler);
signal(SIGABRT , SignalHandler);
signal(SIGTRAP , SignalHandler);
signal(SIGIOT , SignalHandler);
signal(SIGFPE , SignalHandler);
signal(SIGKILL , SignalHandler);
signal(SIGBUS , SignalHandler);
signal(SIGSEGV , SIG_IGN);
signal(SIGSYS , SignalHandler);
signal(SIGPIPE , SignalHandler);
signal(SIGALRM , SignalHandler);
signal(SIGTERM , SignalHandler);
signal(SIGUSR1 , SignalHandler);
signal(SIGUSR2 , SignalHandler);
signal(SIGCHLD , SignalHandler);
signal(SIGCLD , SignalHandler);
signal(SIGPWR , SignalHandler);
signal(SIGXCPU , SignalHandler);
signal(SIGSTOP , SignalHandler);
signal(SIGCONT , SignalHandler);
SALIR=1;

while(SALIR==1){
qDebug()<<"durmiendo";
sleep(10);
}

sleep(10);
//return 1;
}