Nicolás Dimov [Sun, 30 Nov 2003 16:27:44 +0000 (16:27 +0000)]
se mejora la conexion entre compuertas, se salvan en el XML, hay un par de cosas que me quedaron colgadas, commiteo para que lo vean y despues arreglo lo demas
* Se agrega la logica del tanque para los flotantes
* Se hace que compilen las logicas al ser incluidas al proyecto
* Se cargan compuertas logicas desde el XML en el modelo y se utilizan
para simular (creo que la AND era la que hice)
Bueno, la Not y la Or es trivial agregarla y la voy a hacer mañana porque me mata
el sueño. La AND esta andando bien, pero por alguna razon el modelo
no lo refleja. Mañana reviso el parser, ya que el XML es correcto.
Nicolás Dimov [Sat, 29 Nov 2003 18:31:56 +0000 (18:31 +0000)]
cuando se eliminann items las compuetas ponen sus estados de las salidas o entradas en false para que se pueda realizar una nueva... esto no anda del todo bien
- Se agrega una version basica de la respuesta XML.
- Se actualizan AC y AM.
- Se actualiza documentacion.
- Se cambia el comando /server/status por /server/info.
- Se cambia el formato de las listas XML.
Known bugs:
- Cuando la respuesta va vacia, me da un parse error el parseo de la respuesta.
No encuentro por que.
Nicolás Dimov [Wed, 26 Nov 2003 19:24:26 +0000 (19:24 +0000)]
-Las compuertas pueden tener n entradas pero solo 1 salida
-La Not puede tener 1 y 1
-Para conectar hay que atinarle a la zona de conexion de las compuetas, cosa que
habria que dibujarlas como en los otros items.
-Una vez hecho un click en una compueta se puede tirar un cable, pero para tirar
otro cable desde la misma compuerta hay que volver a seleccionarla
-Se salvan correctamente estos cambios en el xml
-Puse que pordefecto los tubos y codos tengan capacidad 10, el tanque 100 y la bomba
entrega 10. para no tener que setearlo cada vez que se agrega un item.
-TODO: dibujar los conectores en las compueetas.
- Se agrega la posibilidad de pausar una planta.
- Se agrega la posibilidad de cambiar la velocidad de refresco de la simulacion
de una planta.
- Se cambia el comando /plant/stop a /plant/remove.
- Se hace que la planta empiece en estado pausado en el servidor.
- Se agregan los comandos /plant/start (comienza o reanuda una planta),
/plant/stop (pausa una planta) y /plant/set_frequency (cambia la frecuencia de
refresco).
- Se actualiza la documentacion.
* Se arregla un bug en el constructor al verificar conexiones
* Se ponen un poco mas bonitas las lineas de las conexiones logicas
* Se arregla el modelo para prevenir colcagas cuando el circuito es
realimentado. Entraba en un loop infinito. Ahora simula bien, aunque
en algunos casos se actualiza mal. Voy a tratar de resolverlo pronto.
Nicolás Dimov [Mon, 24 Nov 2003 03:55:12 +0000 (03:55 +0000)]
-Se carga la lista de items al ir haciendo click sobre ellos
-Se corrige una huevada cuando se dibujan los conectores logicos
-No se por que cuando un item rota se borran los conectores
-No se que mas cambie
Se agrega una mejora visual para poder ver los colores de todos
los componentes al mismo tiempo. Esto ira mejorando en cada
item con el correr de la semana.
* Se agregan #ifdef DEBUG a los simulate() del modelo, para poder sacar
los mensages que tira el modelo
* El modelo ahora destruye los items al ser destruido
* Tambien todos los parsers de xml llaman a xmlFreeDoc para liberar la memoria
Nicolás Dimov [Sun, 23 Nov 2003 23:15:49 +0000 (23:15 +0000)]
-Cambie un poco lo que hizo Rich para dibujar los conectores
-Se dibujan cuando se activa la logica
-Tengo que modificar las posiciones de los cuadraditos porque algunos quedan
afuera de la figura
-Hay que arreglar algunos detalles para que no se borren cuando se hace click sobre algun item o cuando se rota el mismo
Pero la idea esta, me parece que asi queda lindo...
Se agrega como crear un cuadradito de color para indicar donde esta la entrada y donde esta
la salida para los conectores logico.
Solo se implemento en Pump y no tiene en cuenta el tema de la rotacion.
Lo que habria que hacer es :
* Terminar bien el pump y elegir una posicion linda para ponerlos
* Hacer que solo aparezcan cuando el checkbox esta activo
* Creo que seria mas lindo dibujar un circulo que un cuadrado (aunque
la deteccion si se haga con un cuadrado que es mas facil)
* Hacerle lo mismo al resto de los items
Se corrige el bug que hacia que aparezca un error EADDRINUSE (que el puerto ya
estaba siendo utilizado) cuando el server se cerraba con conexiones y se trataba
de comenzar de nuevo enseguida.
Varios cambios:
- Se empiezan a emprolijar las cosas, empezando por Runnable:
* Se ponen atributos y signals como privados y se agrega mutex.
* El thread que usa ahora no es joinable, por lo que finish() ahora no
lleva argumentos.
- Se arreglan todas las otras clases (y el programa principal) para que anden
con el nuevo Runnable (haciendo loops de espera cuando deben 'joinear' un
thread).
- Se actuliza el plaqui-client y se le arreglan un par de bugs (ya anda la
opcion desconectar del menu).
- Se implementa el comando /server/stop por completo (usando una conexion
suicida para salir del accept()).
- Se agregan separadores de tipos, constantes, atributos y metodos mas
llamativos :)
* Se agrega el tanque la suma de color (no me gusta como esta, vere si la puedo hacer mas linda)
* El cliente ahra tiene un boton On/Off que apaga o enciende un elemento
dependiendo de su estado actual. Anda para cualquier objeto, despues
voy a filtrar para que solo se pueda usar en exclusa y bomba.
Es muy lindo apagar la bomba de arriba a la derecha y ver como se vacia
el tanque, y cuando se vuelve a encender se llena :-)
* Todos los items, menos el tanque, ya actualizan bien los colores
* El cliente ya muestra bien todos los cambios de color (en el ejemplo
solo se aprecia en la union, que suma rojo+negro)
* Al desconectar se envian /connection/stop/get_host()/7522 pero recibo
un error 404
* Se agrega un poco de color al ejemplo
Faltaría ver si el server ya acepta abrir o cerrar bombas/exclusas de forma manual
para implementarlo en el cliente. Mañana miro el codigo, no toy para leer nada :-)
- Se corrige el bug que hacia que no se deje de transmitir con el comando
/transmission/stop/.
- Aparentemente tambien se arregla el bug de desconexion del cliente (pero no
estoy seguro, despues de cambiar varias cosas creo que al final quedo como al
principio).
* Se completa el cliente. Ya muestra todas las propiedades y el ultimo item que
se selecciono se va actualizando automaticamente
* Se pone por default el puero 7522 en el Cliente
* Se modifica el XML de prueba para llegar a ver como se actualiza el tanque.
Hay un bug en la Division (maldita sea!), vere si llego a encontrar que es antes de mañana.
Se arregla bug en la union que hacia que el flujo inicial este en 0, y eso condicionaba todo el
circuito armado a andal mal.
Ahora el ejemplo del server corre como trompada
* El cliente ahora refleja un poco mejor los datos del server
* Se agregan verificaciones varias para conexion != NULL (se sigue colgando el desconectar)
Se corrigen varios bugs en el parseo del XML de un frame :
* Se estaba buscando propiedad nombre, cuando en realidad se llama name :-)
* Se corrigen los punteros que se utilizan en cada etapa del parseo,habia
cosas mal utilizadas
Ya se puede ver como se actualizan los flujos de los caños!!!!!!!!
En un rato comienzo a poner los otros elementos, tanto en el modelo como en
el cliente
Se emprolija un poco:
- Se mejora mucho el manejo y deteccion de errores.
- Tambien se mejora la informacion de debug poniendo el numero de linea.
- Se pone en todos los objetos que se conectan la parte de la conexion en el
constructor para que pueda capturarse una eventual excepcion.
- Se crea una nueva signal_error para avisar sobre cualquier error que pase en
el run() que no puede lanzar excepciones.
Nicolás Dimov [Wed, 19 Nov 2003 21:23:21 +0000 (21:23 +0000)]
-Los cables que van a las compuertas se posicionan en la entrada o salida y no en la punta de la imagen
-Las compuertas se guardan en el xml con un formato discutible
-muchas cosas quedan por arreglar pero creo que para maniana sirve
-Las compuertas no validan del todo bien su conexionado
-todavia no se pueden conectar compuertas ente si.
Use un criterio de conexion entre compuertas e items medio pedorro
porque la salida de una compuerta siempre se conecta a la entrada de un item y
alreves, la entrada de una compuerta siempre se conecta a la salida de un item.
Esto puede llegar a traer algunas imposibilidades de conexion. lo voy a tener que pensar
con mas tiempo..
Nicolás Dimov [Wed, 19 Nov 2003 03:35:04 +0000 (03:35 +0000)]
-se pueden tirar cables de una manera mas comoda pero como diria TU SAM puede fallar...
MODO DE USO
-accionar el boton logica
-click en una compuerta
-click en la entrada o salida de un item
esto es:
exclusa entrada: al medio y arriba (en el pingorcho)
salida: al medio y abajo
bomba entrada: (en el conector) la mitad superior
salida: mitad inferior
tanque entrada conector superior
salida conector inferior
todo esto es aproximado
igual se van a dar cuenta
ojo que las primeras lineas las tira en cualquier lado (no se por que)
pero cuando rota el item se acomodan
-Se cuelga bastante, asi que tengan cuidado
intenten eliminar lo menos posible
- Se agrega el metodo Model::Simulator::set_open() para abrir y cerrar bombas y
exclusas.
- Se actualiza el server para usarlo y se implementa el comando /plant/set/.
- Se limpia un poco mas las respuestas, ahora son todas (?) XML aunque no
definitivas.