]> git.llucax.com Git - z.facultad/75.68/celdas.git/commitdiff
Se corrigen cosas y se vuelve a cambiar la interfaz con el sistema autónomo. Ahora...
authorLeandro Lucarella <llucax@gmail.com>
Mon, 11 Dec 2006 03:04:42 +0000 (03:04 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Mon, 11 Dec 2006 03:04:42 +0000 (03:04 +0000)
trunk/src/SistemaAutonomo.tz
trunk/src/SistemaAutonomoDemo.tz
trunk/src/plugin.cpp
trunk/src/sistemaautonomo.h

index b5e01acf49585e9d85e3dbce27b744a522846239..147c7760b2054a46c37f99cd834243f15cd7a891 100644 (file)
@@ -11,15 +11,24 @@ Object : Teoria (aka Teorias) {
                        executed k = 1 (int) succeeded p = 1 (int):
                ptr = TeoriaNew(name, action, k, p).
                
-       + to add-dato-inicial name theName (string) value theValue (float):
-               TeoriaAddDatoInicial(ptr, theName, theValue).
+       + to set-dato-inicial name theName (string) value theValue (float):
+               TeoriaSetDatoInicial(ptr, theName, theValue).
 
-       + to add-dato-final name theName (string) value theValue (float):
-               TeoriaAddDatoFinal(ptr, theName, theValue).
+       + to set-dato-final name theName (string) value theValue (float):
+               TeoriaSetDatoFinal(ptr, theName, theValue).
+
+       + to get-nombre:
+               return TeoriaGetNombre(ptr).
+
+       + to get-accion:
+               return TeoriaGetAccion(ptr).
 
        - to get-ptr:
                return ptr.
 
+       - to set-ptr ptr p (pointer):
+               ptr = p.
+
        + to destroy:
                TeoriaDelete(ptr).
 }
@@ -39,18 +48,23 @@ Object : SistemaAutonomo {
                SistemaAutonomoSetValue(ptr, theName, theValue).
 
        + to update entorno theEntorno (hash):
+               nombre (string).
                foreach nombre in keys(theEntorno): {
+                       print "Seteando valor de entorno ", nombre, " con ", theEntorno{nombre}.
                        self set value theEntorno{nombre} with-name nombre.
                }
 
        + to plan:
                SistemaAutonomoPlan(ptr).
 
-       + to get-next-action:
-               return SistemaAutonomoGetNextAction(ptr).
+       + to get-next-theory:
+               t (object).
+               t = new Teoria.
+               t set-ptr ptr SistemaAutonomoGetNextTheory(ptr).
+               return t.
 
-       + to validate-current-theory:
-               return SistemaAutonomoValidateCurrentTheory(ptr).
+       + to validate theory theTheory (object):
+               return SistemaAutonomoValidateTheory(ptr, (theTheory get-ptr)).
 
        + to destroy:
                SistemaAutonomoDelete(ptr).
index 37d3d5a03affb89fdda947990d625201864ab91d..5c8fdd416bc803800ebda1e2009bc0e34f448638 100644 (file)
@@ -8,23 +8,47 @@ Control : SistemaAutonomoController {
        + to init:
                teorias (list).
                sa (object).
+               teoria (object).
+               entorno (hash).
 
+               print "Llena entorno".
+               entorno{"sensor1"} = 10.5.
+               entorno{"sensor2"} = 1.5.
+
+               print "Crea Sistema autónomo".
                sa = new SistemaAutonomo.
+
+               print "Crea Teorías".
                teorias = 3 new Teorias.
                teorias{0} init named "t1" with-action 1.
                teorias{1} init named "t2" with-action 2.
                teorias{2} init named "t3" with-action 3.
 
-               (teorias{0}) add-dato-inicial name "sensor1" value 10.5.
-               (teorias{0}) add-dato-inicial name "sensor2" value 0.5.
-               (teorias{1}) add-dato-inicial name "sensor1" value 0.5.
-               (teorias{1}) add-dato-inicial name "sensor2" value 10.5.
-               (teorias{2}) add-dato-inicial name "sensor1" value 5.5.
-               (teorias{2}) add-dato-inicial name "sensor2" value 5.5.
+               print "Carga datos a las teorías".
+               (teorias{0}) set-dato-inicial name "sensor1" value 10.5.
+               (teorias{0}) set-dato-inicial name "sensor2" value 0.5.
+               (teorias{1}) set-dato-inicial name "sensor1" value 0.5.
+               (teorias{1}) set-dato-inicial name "sensor2" value 10.5.
+               (teorias{2}) set-dato-inicial name "sensor1" value 5.5.
+               (teorias{2}) set-dato-inicial name "sensor2" value 5.5.
 
+               print "Agrega teorías al sistema autónomo".
                sa add teoria (teorias{0}).
                sa add teoria (teorias{1}).
                sa add teoria (teorias{2}).
+               print "Actualiza entorno".
+               sa update entorno entorno.
+               print "Calcula el plan".
+               sa plan.
+               print "Obtiene próxima teoría".
+               teoria = sa get-next-theory.
+               print "Obtiene datos de la teoría teoría".
+               print(teoria get-nombre).
+               print(teoria get-accion).
+               print "Valida teoría".
+               if (sa validate theory teoria): {
+                       print "valida".
+               }
 
                free teorias{0}.
                free teorias{1}.
index ed52b4b3c0f78351cf69294663e293c6a961592f..c91f5704fcaa0ad8f81bfe70052b83073ac8556a 100644 (file)
@@ -18,19 +18,36 @@ int SAbrTeoriaNew(brEval args[], brEval* result, void* data)
        return EC_OK;\r
 }\r
 \r
-// void TeoriaAddDatoInicial(pointer{Teoria}, string, float)\r
-int SAbrTeoriaAddDatoInicial(brEval args[], brEval* result, void* data)\r
+// void TeoriaSetDatoInicial(pointer{Teoria}, string, float)\r
+int SAbrTeoriaSetDatoInicial(brEval args[], brEval* result, void* data)\r
 {\r
        CTeoria* t = (CTeoria*) BRPOINTER(args);\r
-       t->datos_iniciales.add(BRSTRING(args+1), BRINT(args+2));\r
+       t->datos_iniciales.set_val(BRSTRING(args+1), BRINT(args+2));\r
        return EC_OK;\r
 }\r
 \r
-// void TeoriaAddDatoFinal(pointer{Teoria}, string, float)\r
-int SAbrTeoriaAddDatoFinal(brEval args[], brEval* result, void* data)\r
+// void TeoriaSetDatoFinal(pointer{Teoria}, string, float)\r
+int SAbrTeoriaSetDatoFinal(brEval args[], brEval* result, void* data)\r
 {\r
        CTeoria* t = (CTeoria*) BRPOINTER(args);\r
-       t->datos_finales.add(BRSTRING(args+1), BRINT(args+2));\r
+       t->datos_finales.set_val(BRSTRING(args+1), BRINT(args+2));\r
+       return EC_OK;\r
+}\r
+\r
+// string TeoriaGetNombre(pointer{Teoria})\r
+int SAbrTeoriaGetNombre(brEval args[], brEval* result, void* data)\r
+{\r
+       CTeoria* t = (CTeoria*) BRPOINTER(args);\r
+       result->set(t->nombre.c_str());\r
+       return EC_OK;\r
+}\r
+\r
+// string TeoriaGetAccion(pointer{Teoria})\r
+int SAbrTeoriaGetAccion(brEval args[], brEval* result, void* data)\r
+{\r
+       // TODO CTeoria* t = (CTeoria*) BRPOINTER(args);\r
+       // TODO result->set(t->accion.c_str());\r
+       result->set("avanzar"); // FIXME\r
        return EC_OK;\r
 }\r
 \r
@@ -64,7 +81,7 @@ int SAbrSistemaAutonomoAddTeoria(brEval args[], brEval* result, void* data)
 int SAbrSistemaAutonomoSetValue(brEval args[], brEval* result, void* data)\r
 {\r
        CSistemaAutonomo* sa = (CSistemaAutonomo*) BRPOINTER(args);\r
-       sa->p_entorno->datos.set_val(BRSTRING(args), BRDOUBLE(args+1));\r
+       sa->p_entorno->datos.set_val(BRSTRING(args+1), BRDOUBLE(args+2));\r
        return EC_OK;\r
 }\r
 \r
@@ -76,20 +93,20 @@ int SAbrSistemaAutonomoPlan(brEval args[], brEval* result, void* data)
        return EC_OK;\r
 }\r
 \r
-// string SistemaAutonomoGetNextAction(pointer{SistemaAutonomo})\r
-int SAbrSistemaAutonomoGetNextAction(brEval args[], brEval* result, void* data)\r
+// pointer SistemaAutonomoGetNextTheory(pointer{SistemaAutonomo})\r
+int SAbrSistemaAutonomoGetNextTheory(brEval args[], brEval* result, void* data)\r
 {\r
        // TODO CSistemaAutonomo* sa = (CSistemaAutonomo*) BRPOINTER(args);\r
-       // TODO sa->get_next_action();\r
-       result->set("avanzar"); // FIXME\r
+       // TODO result->set(sa->get_next_theory());\r
+       result->set(new CTeoria("test", NoOp, 1, 1)); // FIXME\r
        return EC_OK;\r
 }\r
 \r
-// bool SistemaAutonomoValidateCurrentTheory(pointer{SistemaAutonomo})\r
-int SAbrSistemaAutonomoValidateCurrentTheory(brEval args[], brEval* result, void* data)\r
+// bool SistemaAutonomoValidateTheory(pointer{SistemaAutonomo}, pointer{Teoria})\r
+int SAbrSistemaAutonomoValidateTheory(brEval args[], brEval* result, void* data)\r
 {\r
        // TODO CSistemaAutonomo* sa = (CSistemaAutonomo*) BRPOINTER(args);\r
-       // TODO sa->validate_current_theory();\r
+       // TODO result->set(sa->validate_theory((CTeoria*) BRPOINTER(args+1)));\r
        result->set(true); // FIXME\r
        return EC_OK;\r
 }\r
@@ -106,10 +123,14 @@ DLLEXPORT void SAbrFunctions(void *data)
 {\r
        brNewBreveCall(data, "TeoriaNew", SAbrTeoriaNew,\r
                       AT_POINTER, AT_STRING, AT_STRING, AT_INT, AT_INT, 0);\r
-       brNewBreveCall(data, "TeoriaAddDatoInicial", SAbrTeoriaAddDatoInicial,\r
+       brNewBreveCall(data, "TeoriaSetDatoInicial", SAbrTeoriaSetDatoInicial,\r
                       AT_NULL, AT_POINTER, AT_STRING, AT_DOUBLE, 0);\r
-       brNewBreveCall(data, "TeoriaAddDatoFinal", SAbrTeoriaAddDatoFinal,\r
+       brNewBreveCall(data, "TeoriaSetDatoFinal", SAbrTeoriaSetDatoFinal,\r
                       AT_NULL, AT_POINTER, AT_STRING, AT_DOUBLE, 0);\r
+       brNewBreveCall(data, "TeoriaGetNombre", SAbrTeoriaGetNombre,\r
+                      AT_STRING, AT_POINTER, 0);\r
+       brNewBreveCall(data, "TeoriaGetAccion", SAbrTeoriaGetAccion,\r
+                      AT_STRING, AT_POINTER, 0);\r
        brNewBreveCall(data, "TeoriaDelete", SAbrTeoriaDelete,\r
                       AT_NULL, AT_POINTER, 0);\r
        brNewBreveCall(data, "SistemaAutonomoNew", SAbrSistemaAutonomoNew,\r
@@ -120,10 +141,10 @@ DLLEXPORT void SAbrFunctions(void *data)
                       AT_NULL, AT_POINTER, AT_STRING, AT_DOUBLE, 0);\r
        brNewBreveCall(data, "SistemaAutonomoPlan", SAbrSistemaAutonomoPlan,\r
                       AT_NULL, AT_POINTER, 0);\r
-       brNewBreveCall(data, "SistemaAutonomoGetNextAction", SAbrSistemaAutonomoGetNextAction,\r
-                      AT_STRING, AT_POINTER, 0);\r
-       brNewBreveCall(data, "SistemaAutonomoValidateCurrentTheory", SAbrSistemaAutonomoValidateCurrentTheory,\r
-                      AT_INT, AT_POINTER, 0);\r
+       brNewBreveCall(data, "SistemaAutonomoGetNextTheory", SAbrSistemaAutonomoGetNextTheory,\r
+                      AT_POINTER, AT_POINTER, 0);\r
+       brNewBreveCall(data, "SistemaAutonomoValidateTheory", SAbrSistemaAutonomoValidateTheory,\r
+                      AT_INT, AT_POINTER, AT_POINTER, 0);\r
        brNewBreveCall(data, "SistemaAutonomoDelete", SAbrSistemaAutonomoDelete,\r
                       AT_NULL, AT_POINTER, 0);\r
 }\r
index 3179a931a1bc7b2160e0e281d95edffa48c49477..ce08cfa3cbb153c3ebc034af36d4e5667e7d8e88 100644 (file)
@@ -98,6 +98,7 @@ public:
 
        // La funcion que se debe ejecutar para hacer valer la teoria.
        double (*funcion)(CEntorno& e) ;
+       // TODO std::string accion; Debería ser el nombre de la acción que va a realizar el BREVE
 
        // Condiciones finales que deben cumplirsem luego de ejecutar la funcion final valiendo la condicion inicial
        CIndiceMagico<t_dato>   datos_finales ;
@@ -171,6 +172,12 @@ public:
        CIndiceMagico<CTeoria>          teorias ;
 
 public:
+       // Constructor
+       CSistemaAutonomo(): p_entorno(new CEntorno) {}
+
+       // Destructor
+       ~CSistemaAutonomo() { delete p_entorno; }
+
        // Retorna true si los valores de la condicion coinciden con los valores del entorno.
        bool verificar_condicion(CIndiceMagico<t_dato>& datos) ;