Oregano tiene nuevo lider

Luego ya de muchisimos años (parece eterno) alguien con pilas apareció Marc Lorber, quien va a ser el nuevo lider y main developer de Oregano, proyecto que salio de este grupo alguna vez. Marc estaba completando el port a Gtk3 y al nuevo canvas además de tener pilas para arreglar los bugs históricos que arrastramos hace tiempo :).

El main git fue movido a https://github.com/marc-lorber/oregano por lo que es la nueva fuente oficial.

Saludos y Feliz 2012 para todos!

Un tiempo después

No, no voy a comerntar sobre el aburrido programa de “Solita” :D, solo que hoy estuve arreglando unos bugs de Oregano y me di cuenta que habían pasado ya unos 18 meses desde el último commit que hice!

En fin, mucho tiempo, pero ya tengo un lindo TODO de cosas a ir haciendo, con muy baja prioridad por la Tesis, pero que quizás para mi cumple esté para hacer otro release, esperemos no colgarme de nuevo.

Mientras tanto se arreglaron dos bugs molestos :

  • Se arregló el export a PNG con fondo transparente
  • Se implementó finalmente la opción de exportar en escala de grises

oregano_grayscale

Oregano cambia a Git

Hoy terminé de decidir que mover el main repo de Oregano a Git era una buena idea, principalmente porque ya me estaba cansando de hacer branches duplicando directorios :P.

A partir de ahora el source principal estará en GitHub, para todo aquel que quiera hacer un fork o simplemente pullear su propio tree local.

Para migrar el repo desde darcs a git usé la opción que explican acá, un script en ruby que funcionó de los más bien. Trate de usar uno en python que también nombra, pero tenía que instalar algunos módulos y con ruby nada, so, ganó el que menos laburo me dió :).

Lo primero que van a venir a llorar es, de cajón, “¿por qué en GitHub que es privativo? ¿por qué no Gitorious?” o cosas así. La verdad no tengo ninguna razón técnica, ni problemas con ninguno de los servicios. Simplemente en GitHub ya tenía cuenta, ya tenía mi llave pública configurada y ya conocía donde hacer click, so, fue la elección más cómoda simplemente :).

En fin, voy a ir actualizando la documentación, wiki y demás a medida que me acuerde :D.

Ponele un nombre a tu punta de pruebas!

Y si, algún día se iba a dar, y que mejor día que “San Valentín” para demostrarle todo tu amor a tu proyecto favorito 😀 ?. A partir de hoy se le pueden poner nombres a las puntas de pruebas. Nada de adivinar quién es v(1), quién v(2); solo poné “In“, “Out“, y listo!!!

La verdad que no fue trivial ya que en donde necesitaba los nombres ya se había perdido el contexto del Schematic y solo tenía la información que da el Engine (y no soporta cosas lindas como v(1) AS MiNombre, tipo SQL :-P), pero haciendo un par de pases mágicos de punteros entre estructuras, quedó andando. Lo único feo feo feo, es que hay que acordarse que “el último apaga la luz“, que en este caso es liberar la lista de nombre, pero ya veré como mejorarlo más adelante.

Seguro explota en muchos casos, puede fallar :), pero la idea está y abre la puerta a un refactoring (otra vez!!!) del Engine System para ser “Context Aware” del Schematic que se esté simulando.

Espero hacer en estos días cuando complete el soporte para NgSpice, ya que por ahora solo anda con GNUCap.

El screenshot :

Puntas de Pruebas con nombre en oregano

NgSpice ha vuelto!

Luego de haber sido mutilado, el soporte de NgSpice para Oregano fue reescrito hoy. No está probado ni el 10% de todo lo que debería funcionar, pero ya me doy por satisfecho y es ahora de que me siente a esperar los reportes de los usuarios (Ping Tulku!!) con sus afamados problemas :-).

El parser nuevo, a diferencia del viejo estilo preprocesado en perl externamente al programa, utiliza el formato RAW que exporta NgSpice, haciendo mucho más simple la lectora de los valores de los análisis, sin tener que parsear texto.

El shot obligado :

ngspice.png
Con esto ya estarán dadas las condiciones para hacer un nuevo release, que supongo que será este fin de semana, aprovechando que sigo de vacaciones :-). Hay varias cosas que ameritan este release :
  • Nuevo esquema para los engines : Más flexible, más prolijo, más fácil de extender a nuevos engines, y sobre todo, anda. [1]
  • Scons cleanups
  • Instant-apply dialogs!
  • Nuevo log (colorsitos, ordenado, etc)
  • El ProgressDialog ahora muestra que operación se está realizando
  • Models y SubCKT
  • Menu cleanup
  • Mejora en la ventana de ploteo : los ejes son mas claros y se muestra la unidad actual en lugar de usar notacion cientifica.
  • Unos cuantos bugs de usabilidad y detalles reportados por Tulku!

[1] : Antes la salida de ngspice cambiaba segun detalles de la simulacion (db, no db, AC o Trans, etc) y el script en perl se colgaba mal 🙂

Oregano migra a GtkPrint!

Si señores, ya era hora de tener un motor de impresión como la gente :-). Luego de varias consultas por parte de mis beta-testers me decidí migrar el soporte de impresión a la nueva API de impresión de Gtk+.

La migración fue simple, por lo menos para dar un soporte básico. Lo primero que hice fue borrar print.[h|c] que tenían el código de soporte de GnomePrint. Luego portá las funciones de modelo a Cairo (en lugar de usar las viejas API de Art) y por último le agregué el código para que se abra el diálogo de impresión.

oreganoprint.png

No se ilusionen mucho que faltan bastantes cosas por hacer antes de que tenga alguna utilidad :-). Una ventaja de esta migración es que ya tengo el código en el modelo para poder exportar el esquemático a un PNG, PDF, PS, SVG o cualquier otro backend que soporte Cairo, cosa que creo que varios van a agradecer :-).

Por ahora no voy a subir los cambios al repositorio principal, ya que esto me obliga a depender de Gtk+ 2.10, recién salida del horno, por lo que voy a mantener un branch privado hasta completar el código.

Mi pequeño TODO :

  • Agregar Labels de los componentes y textos.
  • Impresión Color y B&W (Qué colores te gustarían???!!)
  • Rótulo y orientación default de la página. (El tamaño es configurable y el circuito se adapta a la página)
  • Si ves algo que debería soportar, y no está en esta lista, dejó un comentario 🙂

UPDATE:

Ya tengo funcionando el diálogo y la código para exportar el esquemático. Actualmente hay soporte (dependiendo si la versión de Cairo instalada lo soporta) para PDF, PS, PNG y SVG (el Inkscape no lo abre bien, pero otros programas si). El ónico que anda realmente bien es el de PNG, el resto tiene varios problemas que sospecho que son de Cairo (ya sean bugs o que me está faltando llamar alguna función).

Models y SubCkt

Una cosa que le venía faltando a Oregano era la posibilidad de utilizar modelos complejos para la simulación, y que por suerte ya quedó en el pasado ;).

Hoy luego de mucho leer sobre Spice, NgSpice y GnuCap logré entender un poco como se usan los modelos (a través del comando .model) y los subcircuitos (a través del comando .subckt). Esto sumado a la magia del .include hacen posible, por ejemplo, utilizar un componente “Diode Bridge” en lugar de tener que poner cuatro diodos :-).

La historia empieza modificando el componente “Diode Bridge” de la biblioteca default para que en lugar de usar el template que no andaba utilice : X_@refdes %1 %2 %3 %4 @model, siendo Mode = DiodeBridge. El X_ le dice al backend que es una llamada a un subcircuito y @refdes es completado con el nombre elegido.

El siguiente paso es crear un archivo DiodeBridge.model en el directorio data/models que contenga la descripción del circuito. El resto de la mágia está ya en el código de generación de la netlist.

El objetivo ahora es tratar de extender más aún este nuevo feature y para eso voy a empezar con los ejemplos que encontró acá. Un punto importante y que yo realmente desconozco, es qué componentes son sumamente necesarios y deberían funcionar out-of-the-box. Si fuera por mí con resistencias ideales me sobra :P, por lo que escucho ofertas!.
El screenshot obligado (perdón, la ventana de plot ocupa mucho lugar y me tapa el fondo :-))

oreganomodels.png