00001 //=========================================================================== 00002 //= controlador.h Noviembre de 1998 = 00003 //=-------------------------------------------------------------------------= 00004 //= Definiciones de clases de CONTROLADORes del toolkit NUKAK = 00005 //=-------------------------------------------------------------------------= 00006 //= ADVERTENCIA: ESTE SOFTWARE NO ESTA CONCEBIDO NI DISENNADO PARA EL USO = 00007 //= EN EQUIPO DE CONTROL EN LINEA EN ENTORNOS PELIGROSOS QUE REQUIERAN UN = 00008 //= DESEMPENNO LIBRE DE FALLAS, COMO LA OPERACION DE PLANTAS NUCLEARES, = 00009 //= SISTEMAS DE NAVEGACION O COMUNICACION EN AVIONES, TRAFICO AEREO, = 00010 //= EQUIPO MEDICO DEL CUAL DEPENDAN VIDAS HUMANAS O SISTEMAS DE ARMAMENTO, = 00011 //= EN LOS CUALES UNA FALLA EN EL SOFTWARE PUEDA IMPLICAR DIRECTAMENTE LA = 00012 //= MUERTE, DANNOS PERSONALES O DANNOS FISICOS Y/O AMBIENTALES GRAVES = 00013 //= ("ACTIVIDADES DE ALGO RIESGO"). = 00014 //=-------------------------------------------------------------------------= 00015 //= Autor original: Oscar J. Chavarro G. A.K.A. JEDILINK. Copyright (c), = 00016 //= 1997 - 2003, oscarchavarro@hotmail.com = 00017 //= AQUYNZA es software libre, y se rige bajo los terminos de la licencia = 00018 //= LGPL de GNU (http://www.gnu.org). Para mayor informacion respecto a la = 00019 //= licencia de uso, consulte el archivo ./doc/LICENCIA en la distribucion. = 00020 //=========================================================================== 00021 00022 #ifndef __CONTROLADOR__ 00023 #define __CONTROLADOR__ 00024 00025 #include "jed_defs.h" 00026 #include "toolkits/util/parsero.h" 00027 #include "core/control/actuador.h" 00028 #include "core/control/sensor.h" 00029 00030 class CONTROLADOR : public ENTIDAD { 00031 /* Notese que un controlador puede ser controlado por otro */ 00032 private: 00033 public: 00034 virtual BOOLEAN leer(TOKENIZADOR *Sabiondo) = 0; 00035 virtual BOOLEAN 00036 resolver(LISTA<SENSOR *> *sensores, LISTA<ACTUADOR *> *actuadores) = 0; 00037 virtual void ejecutar(void) = 0; 00038 }; 00039 00040 class CONTROLADOR_BASICO_COPIA_V : public CONTROLADOR { 00041 private: 00042 SENSOR_VECTOR *Sensor_origen; 00043 ACTUADOR_VECTOR *Actuador_destino; 00044 char *Nombre_sensor_origen; 00045 char *Nombre_actuador_destino; 00046 00047 public: 00048 CONTROLADOR_BASICO_COPIA_V(); 00049 BOOLEAN leer(TOKENIZADOR *Sabiondo); 00050 BOOLEAN resolver(LISTA<SENSOR *> *sensores, LISTA<ACTUADOR *> *actuadores); 00051 void ejecutar(void); 00052 }; 00053 00054 class CONTROLADOR_BASICO_COPIA_E : public CONTROLADOR { 00055 private: 00056 SENSOR_FLOAT *Sensor_origen; 00057 ACTUADOR_FLOAT *Actuador_destino; 00058 char *Nombre_sensor_origen; 00059 char *Nombre_actuador_destino; 00060 00061 public: 00062 CONTROLADOR_BASICO_COPIA_E(); 00063 BOOLEAN leer(TOKENIZADOR *Sabiondo); 00064 BOOLEAN resolver(LISTA<SENSOR *> *sensores, LISTA<ACTUADOR *> *actuadores); 00065 void ejecutar(void); 00066 }; 00067 00068 class CONTROLADOR_DE_VUELO : public CONTROLADOR { 00069 private: 00070 //- Componentes del controlador (entradas y salidas) ------------------- 00071 SENSOR_VECTOR *Sensor_velocidad; // Sensores del mundo virtual 00072 SENSOR_VECTOR *Sensor_orientacion; 00073 SENSOR_FLOAT *Sensor_drapidez; // Sensores del mundo real (control) 00074 SENSOR_FLOAT *Sensor_dyaw; 00075 SENSOR_FLOAT *Sensor_dpitch; 00076 SENSOR_FLOAT *Sensor_droll; 00077 ACTUADOR_VECTOR *Actuador_velocidad; // Actuadores del mundo virtual 00078 ACTUADOR_VECTOR *Actuador_orientacion; 00079 //- Referencias de construccion del controlador ------------------------ 00080 char *Nombre_sensor_velocidad; 00081 char *Nombre_sensor_orientacion; 00082 char *Nombre_sensor_drapidez; 00083 char *Nombre_sensor_dyaw; 00084 char *Nombre_sensor_dpitch; 00085 char *Nombre_sensor_droll; 00086 char *Nombre_actuador_velocidad; 00087 char *Nombre_actuador_orientacion; 00088 public: 00089 CONTROLADOR_DE_VUELO(); 00090 BOOLEAN leer(TOKENIZADOR *Sabiondo); 00091 BOOLEAN resolver(LISTA<SENSOR *> *sensores, LISTA<ACTUADOR *> *actuadores); 00092 void ejecutar(void); 00093 }; 00094 00095 #endif // __CONTROLADOR__ 00096 00097 //=========================================================================== 00098 //= EOF = 00099 //=========================================================================== 00100