|
//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;
|
|
}
|
|
|
|
|