desarrollosconsejeria/siaticControl/3.3-13/Siatic_d/main.cpp.Soditec @ 29401061
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;
|
|||
}
|
|||