From: Leandro Lucarella Date: Mon, 11 Dec 2006 03:04:42 +0000 (+0000) Subject: Se corrigen cosas y se vuelve a cambiar la interfaz con el sistema autónomo. Ahora... X-Git-Tag: entrega-20061218~37 X-Git-Url: https://git.llucax.com/z.facultad/75.68/celdas.git/commitdiff_plain/b3f18bf057bda6df83d7ce7abec0372fd0f101b7?ds=inline Se corrigen cosas y se vuelve a cambiar la interfaz con el sistema autónomo. Ahora SistemaAutonomoDemo.tz anda de nuevo. --- diff --git a/trunk/src/SistemaAutonomo.tz b/trunk/src/SistemaAutonomo.tz index b5e01ac..147c776 100644 --- a/trunk/src/SistemaAutonomo.tz +++ b/trunk/src/SistemaAutonomo.tz @@ -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). diff --git a/trunk/src/SistemaAutonomoDemo.tz b/trunk/src/SistemaAutonomoDemo.tz index 37d3d5a..5c8fdd4 100644 --- a/trunk/src/SistemaAutonomoDemo.tz +++ b/trunk/src/SistemaAutonomoDemo.tz @@ -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}. diff --git a/trunk/src/plugin.cpp b/trunk/src/plugin.cpp index ed52b4b..c91f570 100644 --- a/trunk/src/plugin.cpp +++ b/trunk/src/plugin.cpp @@ -18,19 +18,36 @@ int SAbrTeoriaNew(brEval args[], brEval* result, void* data) return EC_OK; } -// void TeoriaAddDatoInicial(pointer{Teoria}, string, float) -int SAbrTeoriaAddDatoInicial(brEval args[], brEval* result, void* data) +// void TeoriaSetDatoInicial(pointer{Teoria}, string, float) +int SAbrTeoriaSetDatoInicial(brEval args[], brEval* result, void* data) { CTeoria* t = (CTeoria*) BRPOINTER(args); - t->datos_iniciales.add(BRSTRING(args+1), BRINT(args+2)); + t->datos_iniciales.set_val(BRSTRING(args+1), BRINT(args+2)); return EC_OK; } -// void TeoriaAddDatoFinal(pointer{Teoria}, string, float) -int SAbrTeoriaAddDatoFinal(brEval args[], brEval* result, void* data) +// void TeoriaSetDatoFinal(pointer{Teoria}, string, float) +int SAbrTeoriaSetDatoFinal(brEval args[], brEval* result, void* data) { CTeoria* t = (CTeoria*) BRPOINTER(args); - t->datos_finales.add(BRSTRING(args+1), BRINT(args+2)); + t->datos_finales.set_val(BRSTRING(args+1), BRINT(args+2)); + return EC_OK; +} + +// string TeoriaGetNombre(pointer{Teoria}) +int SAbrTeoriaGetNombre(brEval args[], brEval* result, void* data) +{ + CTeoria* t = (CTeoria*) BRPOINTER(args); + result->set(t->nombre.c_str()); + return EC_OK; +} + +// string TeoriaGetAccion(pointer{Teoria}) +int SAbrTeoriaGetAccion(brEval args[], brEval* result, void* data) +{ + // TODO CTeoria* t = (CTeoria*) BRPOINTER(args); + // TODO result->set(t->accion.c_str()); + result->set("avanzar"); // FIXME return EC_OK; } @@ -64,7 +81,7 @@ int SAbrSistemaAutonomoAddTeoria(brEval args[], brEval* result, void* data) int SAbrSistemaAutonomoSetValue(brEval args[], brEval* result, void* data) { CSistemaAutonomo* sa = (CSistemaAutonomo*) BRPOINTER(args); - sa->p_entorno->datos.set_val(BRSTRING(args), BRDOUBLE(args+1)); + sa->p_entorno->datos.set_val(BRSTRING(args+1), BRDOUBLE(args+2)); return EC_OK; } @@ -76,20 +93,20 @@ int SAbrSistemaAutonomoPlan(brEval args[], brEval* result, void* data) return EC_OK; } -// string SistemaAutonomoGetNextAction(pointer{SistemaAutonomo}) -int SAbrSistemaAutonomoGetNextAction(brEval args[], brEval* result, void* data) +// pointer SistemaAutonomoGetNextTheory(pointer{SistemaAutonomo}) +int SAbrSistemaAutonomoGetNextTheory(brEval args[], brEval* result, void* data) { // TODO CSistemaAutonomo* sa = (CSistemaAutonomo*) BRPOINTER(args); - // TODO sa->get_next_action(); - result->set("avanzar"); // FIXME + // TODO result->set(sa->get_next_theory()); + result->set(new CTeoria("test", NoOp, 1, 1)); // FIXME return EC_OK; } -// bool SistemaAutonomoValidateCurrentTheory(pointer{SistemaAutonomo}) -int SAbrSistemaAutonomoValidateCurrentTheory(brEval args[], brEval* result, void* data) +// bool SistemaAutonomoValidateTheory(pointer{SistemaAutonomo}, pointer{Teoria}) +int SAbrSistemaAutonomoValidateTheory(brEval args[], brEval* result, void* data) { // TODO CSistemaAutonomo* sa = (CSistemaAutonomo*) BRPOINTER(args); - // TODO sa->validate_current_theory(); + // TODO result->set(sa->validate_theory((CTeoria*) BRPOINTER(args+1))); result->set(true); // FIXME return EC_OK; } @@ -106,10 +123,14 @@ DLLEXPORT void SAbrFunctions(void *data) { brNewBreveCall(data, "TeoriaNew", SAbrTeoriaNew, AT_POINTER, AT_STRING, AT_STRING, AT_INT, AT_INT, 0); - brNewBreveCall(data, "TeoriaAddDatoInicial", SAbrTeoriaAddDatoInicial, + brNewBreveCall(data, "TeoriaSetDatoInicial", SAbrTeoriaSetDatoInicial, AT_NULL, AT_POINTER, AT_STRING, AT_DOUBLE, 0); - brNewBreveCall(data, "TeoriaAddDatoFinal", SAbrTeoriaAddDatoFinal, + brNewBreveCall(data, "TeoriaSetDatoFinal", SAbrTeoriaSetDatoFinal, AT_NULL, AT_POINTER, AT_STRING, AT_DOUBLE, 0); + brNewBreveCall(data, "TeoriaGetNombre", SAbrTeoriaGetNombre, + AT_STRING, AT_POINTER, 0); + brNewBreveCall(data, "TeoriaGetAccion", SAbrTeoriaGetAccion, + AT_STRING, AT_POINTER, 0); brNewBreveCall(data, "TeoriaDelete", SAbrTeoriaDelete, AT_NULL, AT_POINTER, 0); brNewBreveCall(data, "SistemaAutonomoNew", SAbrSistemaAutonomoNew, @@ -120,10 +141,10 @@ DLLEXPORT void SAbrFunctions(void *data) AT_NULL, AT_POINTER, AT_STRING, AT_DOUBLE, 0); brNewBreveCall(data, "SistemaAutonomoPlan", SAbrSistemaAutonomoPlan, AT_NULL, AT_POINTER, 0); - brNewBreveCall(data, "SistemaAutonomoGetNextAction", SAbrSistemaAutonomoGetNextAction, - AT_STRING, AT_POINTER, 0); - brNewBreveCall(data, "SistemaAutonomoValidateCurrentTheory", SAbrSistemaAutonomoValidateCurrentTheory, - AT_INT, AT_POINTER, 0); + brNewBreveCall(data, "SistemaAutonomoGetNextTheory", SAbrSistemaAutonomoGetNextTheory, + AT_POINTER, AT_POINTER, 0); + brNewBreveCall(data, "SistemaAutonomoValidateTheory", SAbrSistemaAutonomoValidateTheory, + AT_INT, AT_POINTER, AT_POINTER, 0); brNewBreveCall(data, "SistemaAutonomoDelete", SAbrSistemaAutonomoDelete, AT_NULL, AT_POINTER, 0); } diff --git a/trunk/src/sistemaautonomo.h b/trunk/src/sistemaautonomo.h index 3179a93..ce08cfa 100644 --- a/trunk/src/sistemaautonomo.h +++ b/trunk/src/sistemaautonomo.h @@ -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 datos_finales ; @@ -171,6 +172,12 @@ public: CIndiceMagico 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& datos) ;