Instituto de Astronomía 1 UNAM Publicaciones Técnicas [email protected] Aceptación: 14-08-2012 Recepción: 23-08-2011 Reporte Técnico RT-2012-04 Manejo vía TCP/IP de cámaras Finger Lake Instruments (FLI). E. Colorado, D. Hiriart. Instituto de Astronomía. Universidad Nacional Autónoma de México. Km. 103 Carretera Tijuana-Ensenada, Ensenada, B. C., México. RESUMEN: Este documento describe la programación de control desarrollada para manejar las cámaras de la compañía Finger Lake Instruments” (FLI) a través de un servidor TCP/IP. El programa fue desarrollado en el lenguaje de programación C/C++ y permite el control y la adquisición de imágenes vía internet. El programa es ejecutando en una computadora dedicada de la marca Sheevaplug” de bajo costo y consumo eléctrico. Esto permite estandarizar el manejo de las cámaras FLI del OAN-SPM a través de la red de internet y facilitar su operación robótica y remota. El programa ha sido probado con éxito en la cámara FLI utilizada en los instrumentos POLIMA y MEXMAN del telescopio de 0.84 m del OANSPM. Contenido 1. INTRODUCCIÓN ---------------------------------------------------------------------------------------------------------------------- 3 2. OBJETIVOS ---------------------------------------------------------------------------------------------------------------------------- 3 3. DESARROLLO ------------------------------------------------------------------------------------------------------------------------- 3 3.1. EL PROGRAMA FLI_SERVER2 ------------------------------------------------------------------------------------------- 3 3.2. LISTA DE MANDOS VÍA RED -------------------------------------------------------------------------------------------- 6 3.3. DEPENDENCIAS DE SOFTWARE ---------------------------------------------------------------------------------------- 9 3.4. MÓDULO KERNEL DE LINUX-------------------------------------------------------------------------------------------- 9 3.5. EJECUCIÓN DEL PROGRAMA ------------------------------------------------------------------------------------------- 9 4. INSTALACIÓN ------------------------------------------------------------------------------------------------------------------------- 9 4.1. INSTALACIÓN DE LOS MANEJADORES (DRIVERS) ----------------------------------------------------------------- 9 4.2. INSTALACIÓN DEL PROGRAMA SERVIDOR FLI_SERVER2 ------------------------------------------------------ 10 5. CONFIGURACIÓN ------------------------------------------------------------------------------------------------------------------ 10 5.1. CONFIGURACIÓN DE LA RED ----------------------------------------------------------------------------------------- 10 5.2. SCRIPT DE INICIALIZACIÓN ------------------------------------------------------------------------------------------- 11 6. PRUEBA DEL SISTEMA ------------------------------------------------------------------------------------------------------------ 12 7. LA MINI COMPUTADORA “HEEVAPLUG ----------------------------------------------------------------------------------- 12 7.1. SISTEMA OPERATIVO EN TARJETA SD DE 4GB -------------------------------------------------------------------- 13 7.2. VARIABLES DE AMBIENTE DE U-BOOT ----------------------------------------------------------------------------- 13 8. CONCLUSIONES -------------------------------------------------------------------------------------------------------------------- 15 Colorado, Hiriart. 9. OTROS PROGRAMAS RELACIONADOS ---------------------------------------------------------------------------------------- 15 10. BIBLIOGRAFÍA --------------------------------------------------------------------------------------------------------------------- 16 11. APÉNDICE A ----------------------------------------------------------------------------------------------------------------------- 16 A.1. LISTADO DEL PROGRAMA APAGAME_ SRV.PY. ------------------------------------------------------------------ 16 A.2. REFERENCIA DE SOFTWARE DEL PROGRAMA FLI_SERVER2. ------------------------------------------------- 17 Publicaciones Técnicas IAUNAM RT-2012-04 2 Colorado, Hiriart. 1. INTRODUC CIÓN El Observatorio Astronómico Nacional en la sierra de San Pedro Mártir, B.C. (OAN-SPM) cuenta con varias cámaras de la compañía Finger Lakes Instruments (FLI) que se utilizan en los telescopios de 1.5 y 0.84 metros. Para estandarizar el manejo de las cámaras a través de la red de internet, desarrollamos un programa modular de bajo nivel en el lenguaje de programación C++ para el control y adquisición de imágenes. El programa se ejecuta en una computadora dedicada SheevaPlug de bajo costo y bajo consumo eléctrico. Esta computadora funciona como un puente entre la red de internet y la cámara FLI. La SheevaPlug recibe mandos TCP/IP a través de la red de internet, los convierte en mandos apropiados para las cámaras FLI y los envía a la cámara vía un puerto USB. Asimismo, la SheevaPlug hace accesible a la red las imágenes obtenidas y toda la información del estatus de la cámara. La interacción con la SheevaPlug se puede realizar desde cualquier computadora autorizada que esté conectada a internet. El desarrollo de este programa es de propósito general y se ha utilizado con éxito en el telescopio de 0.84 m del OAN-SPM en el polarímetro de imagen POLIMA que utiliza una cámara FLI de la serie ProLine PL3041-UV. En este documento se describe la programación desarrollada. 2. OBJETIVOS El propósito de este paquete de programas es tener una plataforma común para el control de todas las cámaras FLI para permitir el control y la transferencia de imágenes vía red (protocolo TCP/IP) de manera que sea posible el uso remoto o robótico de la cámaras FLI. 3. DESARROLLO En esta sección se describen los detalles técnicos del programa, así como la lista de mandos y parámetros que el programa recibe y manda a través de la red de internet utilizando el puerto 9710 del protocolo de comunicaciones de red TCP/IP. El programa llamado fli_server2 fue desarrollado para el sistema operativo Linux en C++ utilizando las librerías externas libfli-1.99 de la compañía FLI para el manejo de bajo nivel de sus cámaras. Esta librería se puede descargar de la siguiente dirección electrónica: http://www.flicamera.com/software/index.htm. 3.1. EL PROGRAMA FLI_SERVER2 La Figura 1 muestra el diagrama de flujo del programa fli_server . El programa realiza las siguientes funciones al iniciar: o Carga nuestra clase en C++ FLI o Abre un socket como servidor utilizando el puerto TCP/IP 9710. o Entra en un ciclo de espera para recibir instrucciones, a través de la red de internet, de un cliente vía el protocolo TCP/IP. Publicaciones Técnicas IAUNAM RT-2012-04 3 Colorado, Hiriart. o Al recibir una instrucción, el programa abre una hebra (cómputo paralelo) para ejecutar el mando recibido. Inicio fli_server2 Procesar mando, es una instruccion valida? Carga clase FLI (FLI ccd;) SI Abre puerto 9710 de comunicación TCP/IP como servidor Ejecuta mando NO No Regresar resultados del mando via red Llego comunicación via Red? SI Abrir hebra para procesar mando Continuar Destruir Hebra Figura 1: Diagrama de flujo principal. La primera instrucción que el programa de control debe recibir es la instrucción de inicialización )N)T . La Figura 2 muestra el diagrama de flujo del programa para la ejecución de esta instrucción. Las operaciones que realiza al recibir esta instrucción son las siguientes: o Busca una cámara de la compañía FLI conectada el puerto USB y establece una conexión. o Muestra el modelo de la cámara encontrada. o Lee las dimensiones del dispositivo CCD instalado en la cámara. o Reserva memoria para almacenar la imagen adquirida. o Maneja la celda Peltier para controlar la temperatura del CCD. o Regresa la información encontrada al cliente. Publicaciones Técnicas IAUNAM RT-2012-04 4 Colorado, Hiriart. Inicio Mando “INIT” Busca cámara marca FLI USB y establece una conexión Lee modelo de la cámara y lee las dimisiones del CCD instalado Reserva memoria RAM para almacer una imagen Enciende la Celda Peltier y la pone a Regular a -30 grados Celsius Regresa la información de la cámara via red al cliente Figura 2: Diagrama de flujo de instrucción "INIT". Por ejemplo, al recibir la instrucción vía red EXPONE ETIME=100 XSIZE=2048 YSIZE=2048 CBIN=1 RBIN=1 CORG=0 RORG=0 DARK=0 , se le está indicando al programa fli_server2 que debe de tomar una imagen completa de 100 milisegundos y el programa realizará los siguientes pasos: Programará el tiempo de exposición a la cámara. Mandará a exponer una imagen al CCD. Capturará la imagen resultante y la almacenará en RAM. Leerá la temperatura del CCD, la temperatura externa y el porcentaje utilizado de la celda Peltier. o Regresará al cliente conectado la leyenda BINARIO x , Donde x = numero de pixeles leídos del CCD. o Cierra el canal de comunicación con el cliente y espera una nueva conexión. o o o o Publicaciones Técnicas IAUNAM RT-2012-04 5 Colorado, Hiriart. 3.2. LISTA DE MANDOS VÍA RED A continuación se listan los mandos aceptados vía red. Estos mandos siempre regresan al último la cadena de caracteres CLOSE \n TABLA 1 Mandos vía red. Argumento Descripción Regresa INIT Busca las cámaras FLI conectadas a los puertos USB e inicializa la primera cámara encontrada. info Library version: Software Development Library for Linux 1.99 info type: /dev/fliusb0, ->USB info Model: PL3041 info pixel size: 0.000015 x 0.000015 info Array area: (0, 0)(2080, 2112) info Visible area: (16, 32)(2064, 2080) info Work Size: 2048, 2048 LEE_TEMP -35.0 GOOD ->CCD INIT OK CLOSE Cierra la comunicación con la cámara. GET_TEMP SET_TEMP Lee la temperatura de la cámara. X Donde x = temperatura deseada a regular de la cámara en grados Celsius. Publicaciones Técnicas IAUNAM RT-2012-04 LEE_TEMP x Donde x = temperatura de la cámara en grados Celsius. Fija la temperatura a regular por la celda Peltier de la cámara. 6 Colorado, Hiriart. TABLA 2 Mandos vía red (Continuación) LEE_TEMP_BASE x LEE_TEMP_BASE Lee la temperatura de la base de la cámara. LEE_POWER Lee el porcentaje de potencia utilizada por la celda Peltier. donde x = temperatura de la base del CCD en grados Celsius. LEE_POWER x donde x = Porcentaje de utilización de la celda Peltier. t xsize ysize binning xorg yorg shutter dark t =Tiempo en milisegundos. xsize= Tamaño de columnas de la imagen deseada. ysize=Tamaño de renglones de la imagen deseada. EXPONE binning=Factor de binning, puede ser 1,2 ó 3. xorg =Columna inicial de la imagen. yorg =Renglón inicial de la imagen. TIME_REMAINING x BINARIO y LEE_TEMP z Manda a exponer una TERMINE imagen completa o parcial, pudiendo Donde x = Milisegundos restar el dark. faltantes de exposición. y=Numero de pixeles adquiridos. z=Temperatura actual del CCD. shutter=0 ó 1. Con 1 se abre el shutter. dark=0 ó 1. Con 1 a la imagen resultante se le sustraerá automáticamente un dark. Publicaciones Técnicas IAUNAM RT-2012-04 7 Colorado, Hiriart. TABLA 3 Mandos vía red (Continuación) MANDABIN Manda vía el socket TCP/IP la última imagen guardada en RAM. STATUS Pide el estado del servidor, si se está comunicando con la cámara. Este mando no regresa la palabra CLOSE al final. Regresara BUSY o READY. Nota: No mandar otros comandos a la cámara si el estado es BUSY. X Donde x=0, si se desea la cámara a 2 MHz @ 2 canales. SET_CAM_MODE x=1, si se desea la cámara a 2 MHz @ 1 canal. Cambia el modo de lectura del CCD. x=2, si se desea la cámara a 500 Khz @ 1 canal. GET_CAM_MODE Regresa el modo de lectura actual. Ver mando anterior. GET_CAM_STRING Regresa una cadena de texto con la información de la cámara encontrada. SALIR Termina la ejecución del programa servidor. Publicaciones Técnicas IAUNAM RT-2012-04 CAM_MODE x Donde x= Modo de lectura actual. CAM_MODE_STRING x Donde x= Cadena de caracteres indicando el modo de lectura actual. 8 Colorado, Hiriart. 3.3. DEPENDENCIAS DE SOFTWARE Si se desea recompilar el programa, se deberán tener las bibliotecas de la compañía FL) libfli1.99 http://www.flicamera.com/software/index.html) y se podrá compilar utilizando los siguientes pasos: 1. g++ -DHAVE_CONFIG_H -I. -I.. -g -O2 -MT fli.o -MD -MP -MF .deps/fli.Tpo -c -o fli.o fli.cpp 2. gcc -DHAVE_CONFIG_H -I. -I.. -g -O2 -MT fli_call.o -MD -MP -MF .deps/fli_call.Tpo -c o fli_call.o fli_call.c 3. g++ -DHAVE_CONFIG_H -I. -I.. -g -O2 -MT fli_server2.o -MD -MP -MF .deps/fli_server2.Tpo -c -o fli_server2.o fli_server2.cpp 4. g++ -DHAVE_CONFIG_H -I. -I.. -g -O2 -MT server.o -MD -MP -MF .deps/server.Tpo -c -o server.o server.cpp 5. g++ -g -O2 -o fli_server2 fli.o fli_call.o fli_server2.o server.o ./libfli.a -lm -lpthread -static Este programa fue probado utilizando el sistema operativo Linux Ubuntu 10.04 LTS con el kernel 2.6.32-35. La versión final se ejecuta en la PC dedicada SheevaPlug con sistema operativo Debian con kernel 2.6.32-5-Kirkwood. 3.4. MÓDULO KERNEL DE LINUX Para la comunicación vía USB con la cámara, las bibliotecas utilizan el módulo del kernel llamado fliusb.ko el cual es cargado al iniciar la PC. Este módulo es proporcionado por la compañía FLI. El módulo fue programado para los kernels de Linux 2.6.xx. Si se desea compilar este módulo, se deberá instalar el paquete de los encabezados del kernel de la siguiente manera sudo apt-get install linux-headers-$(uname -r) y seguir con las instrucciones que le proporcione la compañía FLI. 3.5. EJECUCIÓN DEL PROGRAMA No es necesario ninguna instrucción especial o parámetro adicional para correr el programa, simplemente ejecútelo desde una terminal de internet mediante el mando ./fli_server2 4. INSTALACIÓN En esta sección se describe la instalación de los programas y manejadores ( drivers ) de las cámaras de la compañía FLI. 4.1. INSTALACIÓN DE LOS MANEJADORES (DRIVERS) Para instalar los drivers de la cámara en una PC con Linux se deben descargar de http://www.flicamera.com/software/index.html el paquete SDk Download de Linux el cual se Publicaciones Técnicas IAUNAM RT-2012-04 9 Colorado, Hiriart. desempaquetará (fliusb-1.1.tgz, luego se ejecutará el mando make el cual generará el módulo fliusb.ko. Como superusuario, copiar el módulo al directorio /lib/modules/ .6. -5kirkwood/kernel/drivers/usb/ Para instalar las bibliotecas de la cámara se desempaquetará el archivo libfli-1.99.tgz y se ejecutará el mando make . Como superusuario, ejecutar el mando make install . 4.2. INSTALACIÓN DEL PROGRAMA SERVIDOR FLI_SERVER2 El programa fli_server está compilado de manera estática para el procesador ARM de la PC SheevaPlug , así que sólo es necesario correrlo y estará listo para recibir mandos vía internet en protocolo TCP/IP por el puerto 9710. 5. CONFIGURA CIÓN En esta sección se describirán las diferentes secciones donde hay que configurar nuestro sistema. 5.1. CONFIGURACIÓN DE LA RED La SheevaPlug está configurada con una IP estática de la red de instrumentos de los telescopios del OAN-SPM. El archivo con los datos de su configuración se encuentra en /etc/network/interface y su contenido deberá ser el siguiente: TABLA 4 Configuración de la red. auto lo iface lo inet loopback # The primary network interface allow-hotplug eth0 auto eth0 iface eth0 inet static address 192.168.0.41 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.0.255 gateway 192.168.0.254 Publicaciones Técnicas IAUNAM RT-2012-04 10 Colorado, Hiriart. 5.2. SCRIPT DE INICIALIZACIÓN Al iniciar la SheevaPlug , automáticamente se ejecuta el script de inicialización del sistema operativo /etc/rc.local en el cual le anexamos la línea /root/boot.sh & . En el archivo boot.sh, estarán contenidos todos los procesos de inicialización de nuestro sistema. La Tabla 5 muestra el contenido de este archivo. Donde el archivo apagame_srv.py ver Apéndice se utiliza para apagar remotamente la PC de manera segura. TABLA 5 Archivo de inicialización boot.sh. echo "configurando flicam" modprobe fliusb2 #cargar servidor cd /root #para apagar vía red ./apagame_srv.py & ./loop.sh El archivo loop.sh se utiliza para ejecutar el programa servidor. La Tabla 6 muestra el contenido del archivo loop.sh . TABLA 6 Archivo de ciclo del programa servidor. echo "fli cam server infinite Loop" ./fli_server2 ./loop.sh Publicaciones Técnicas IAUNAM RT-2012-04 11 Colorado, Hiriart. 6. PRUEBA DEL SISTEMA Una forma rápida de probar y usar este programa es la siguiente: 1. Ejecutar el programa: o /root/fli-server2 &. 2. Inicializar la cámara utilizando el siguiente mando: o hose localhost 9710 –out echo INIT . 3. Obtener una imagen de la cámara de un segundo utilizando el siguiente mando: o echo EXPONE ETIME= XSIZE=2048 YSIZE=2048 CBIN=1 RBIN=1 CORG= RORG= DARK= | hose localhost --slave. 4. Pedir la imagen resultante en binario: o echo "MANDABIN " | hose localhost 9710 --slave >imagen.bin. Estos mandos se pueden ejecutar desde cualquier PC compatible con el sistema operativo Unix / Linux, las cuales tengan instalado el paquete netpipes . Para esto, cambiar la palabra localhost por el IP de la PC en donde se encuentre conectada la cámara, en este caso es 192.168.0.41. Otro ejemplo, utilizando otra PC como cliente, donde se almacenarían las imágenes y también se desplegarían, sería la siguiente secuencia de mandos: hose 192.168.0.41 9710 –out echo INIT echo EXPONE ETIME= XSIZE= 4 YSIZE= 4 CBIN= RBIN= CORG= RORG= DARK= | hose 192.168.0.41 9710 –slave echo "MANDABIN " | hose 192.168.0.41 9710 --slave >imagen.bin y para la visualización de la imagen resultante en la pantalla, utilizaríamos el paquete astronómico Saoimage DS9 de la siguiente manera: cat imagen.bin | xpaset ds9 array [xdim=2048,ydim=2048,zdim=1,bitpix=16] 7. LA MINI COMPUTADORA SHEEVAPLUG La Figura 3 muestra varias imágenes de la SheevaPlug . La SheevaPlug es una pequeña PC de sólo 110 mm de largo por 69.5 mm de ancho y de un bajo consumo eléctrico (5 Watts) que permite las capacidades de cómputo que un servidor de cómputo en un espacio reducido. La SheevaPlug forma parte de las computadoras tipo plug computer que son conectadas plug directamente a un tomacorriente eléctrico y tiene la apariencia de un adaptador de voltaje CA/CD. Publicaciones Técnicas IAUNAM RT-2012-04 12 Colorado, Hiriart. Figura 3: Imágenes de la PC “SheevaPlug”. Esta PC se conecta directamente a un tomacorriente eléctrico de 115 VAC. Entre las principales características de cómputo de la SheevaPlug se encuentran las siguientes: Procesador ARM de 1.5 GHz Memoria RAM de 512MB DDR2 (400 MHz) Memoria NAND Flash de 512MB Puerto Ethernet de 100Mhz Puerto USB 2.0 Puerto lector de tarjetas SD Reloj de tiempo real con batería. Debido a su buena capacidad de cómputo para el manejo de la cámara se escogió este modelo, además de su bajo consumo eléctrico y baja disipación de calor. 7.1. SISTEMA OPERATIVO EN TARJETA SD DE 4GB Para un fácil respaldo y manejo de los programas, el sistema operativo de la Sheeva Plug se actualizó y se utilizó una tarjeta externa SD card de una capacidad de GB donde contiene el sistema operativo Linux basado en Debian con el kernel 2.6.32-kirkwood armv5tel. 7.2. VARIABLES DE AMBIENTE DE U-BOOT Al encender la SheevaPlug ejecutará su programa básico llamado U-BOOT. Éste se encargará de hacer las primeras configuraciones básicas, tal como el programa BIOS los hace en una PC compatible con IBM. Según sus variables definidas, el U-BOOT iniciará desde la memoria interna tipo flash o desde la memoria externa en la SD card . Por omisión, al encender la SheevaPlug inicializa utilizando la memoria interna. Se modificaron las variables de U-BOOT para que al encender la SheevaPlug inicie con la memoria externa en la SD card . La Tabla 7 muestra los valores de las variables del ambiente de U-BOOT. Publicaciones Técnicas IAUNAM RT-2012-04 13 Colorado, Hiriart. TABLA 7 Variables de ambiente de U-Boot. baudrate=115200 loads_echo=0 rootpath=/mnt/ARM_FS/ run_diag=yes console=console=ttyS0,115200 mtdparts=nand_mtd:0xc0000@0(uboot)ro,0x1ff00000@0x100000(root) CASset=min MALLOC_len=1 ethprime=egiga0 bootargs_end=:::DB88FXX81:eth0:none image_name=uImage standalone=fsload 0x2000000 $(image_name);setenv bootargs $(console) root=/dev/mtdblock0 rw ip=$(ipaddr):$(serverip)$(bootargs_end) $(mvPhoneConfig); bootm; ethaddr=00:50:43:9e:25:12 ethmtu=1500 mvPhoneConfig=mv_phone_config=dev0:fxs,dev1:fxs mvNetConfig=mv_net_config=(00:11:88:0f:62:81,0:1:2:3),mtu=1500 usb0Mode=host yuk_ethaddr=00:00:00:EE:51:81 nandEcc=1bit netretry=no rcvrip=169.254.100.100 loadaddr=0x02000000 autoload=no ethact=egiga0 arcNumber=2097 boot_nand=nand read.e 0x2000000 0x100000 0x400000 bootargs_console=console=ttyS0,115200 bootargs_root=root=/dev/mmcblk0p2 bootcmd_mmc=mmcinit; ext2load mmc 0:1 0x01100000 /uInitrd; ext2load mmc 0:1 0x00800000 /uImage bootcmd=setenv bootargs $(bootargs_console) $(bootargs_root); run bootcmd_mmc; bootm 0x00800000 0x01100000 ipaddr=192.168.0.76 serverip=192.168.0.14 netmask=255.255.255.0 bootargs_tftp=console=ttyS0,115200 ramdisk_size=16384 root=/dev/ram botea_tfpt=setenv bootargs $(bootargs_tftp); tftp 0xe00000 uMulti; bootm 0xe00000 stdin=serial stdout=serial stderr=serial mainlineLinux=yes Publicaciones Técnicas IAUNAM RT-2012-04 14 Colorado, Hiriart. enaMonExt=no enaCpuStream=no enaWrAllo=no pexMode=RC disL2Cache=no setL2CacheWT=yes disL2Prefetch=yes enaICPref=yes enaDCPref=yes sata_dma_mode=yes netbsd_en=no vxworks_en=no bootdelay=3 disaMvPnp=no enaAutoRecovery=yes pcieTune=no bootargs=console=ttyS0,115200 root=/dev/mmcblk0p2 Environment size: 1598/131068 bytes 8. CONCLUSIONES El programa descrito ha funcionado exitosamente y sin ningún problema desde febrero de 2011 hasta el presente con una cámara FLI de la serie ProLine Modelo PL3041-UV en el telescopio de 0.84 m en el OAN-SPM, en el polarímetro de imagen POLIMA y la rueda de filtros MEXMAN. Además, el convertir el manejo de la cámara de USB a un manejo vía internet, nos permite mayor flexibilidad para utilizar la cámara de una manera robótica o remota. 9. OTROS PROG RAMAS RELA CIONADO S Existe una aplicación gráfica para el usuario, la cual utiliza a este programa y se documentará por separado en el escrito Interfaz gráfica para el manejo de los CCD científicos en Python . Está desarrollado en Python + Gtk. Publicaciones Técnicas IAUNAM RT-2012-04 15 Colorado, Hiriart. 10. BIBLIOGRAFÍA o Begining Linux Programming. Richard Stones y Neil Matthew. Wrox Press. o FLI SDK Developing Tools. http://www.flicamera.com/downloads/FLI_SDK_Documentation.pdf o Slackware Linux Unleashed Bao Ha, Tina Nguyen Editorial Sams o SheevaPlug Computer Forums http://www.plugcomputer.org/plugforum/ 11. APÉNDICE A A.1. LISTADO DEL PROGRAMA APAGAME_ SRV.PY. #!/usr/bin/env python import os import socket import SocketServer import threading import thread #---------------------------------------------------------------class MyTCPHandler(SocketServer.StreamRequestHandler): def handle(self): data = self.rfile.readline().strip() print "llego:",data miApp.procesa(data) self.request.send('ok \n') #---------------------------------------------------------------class RUCAFAKE: def __init__(self): # valores default self.mando='/sbin/poweroff' #---------------------------------------------------------------#Identifica y procesa los datos recibidos def procesa(self,dato): Publicaciones Técnicas IAUNAM RT-2012-04 16 Colorado, Hiriart. data = str(dato) try: txt = data.split() if txt[0] == "APAGAME": print 'clave',txt[1] print self.mando try: os.system(self.mando) except: print "Error" except IndexError, e: pass #---------------------------------------------------------------if __name__ == "__main__": HOST, PORT = "0.0.0.0", 4953 # Create the server, binding to localhost on port 4967 SocketServer.allow_reuse_address= True server = SocketServer.TCPServer((HOST, PORT), MyTCPHandler) miApp = RUCAFAKE() print "Escuchando en el puerto", PORT server.serve_forever() A.2. REFERENCIA DE SOFTWARE DEL PROGRAMA FLI_SERVER2. A continuación se listan las referencias de las funciones del programa fli_server2 . Esta referencia se realizó con el programa doxygen . Publicaciones Técnicas IAUNAM RT-2012-04 17 fli_server2 2.12 Generated by Doxygen 1.6.3 Mon Jul 2 09:18:16 2012 Contents 1 Class Index 1.1 19 Class List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 File Index 2.1 21 File List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Class Documentation 3.1 3.2 19 21 23 cam_t Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.1.1 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.1.1.1 dname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.1.1.2 domain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.1.1.3 name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 FLI Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.2.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.2.2 Constructor & Destructor Documentation . . . . . . . . . . . . . . . . . . . . . . 25 3.2.2.1 FLI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.2.2.2 ∼FLI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Member Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.2.3.1 close . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.2.3.2 deinterlace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.2.3.3 estadistica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.2.3.4 expose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.2.3.5 get_filter_pos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.2.3.6 GetMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.2.3.7 GetMode_String . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.2.3.8 init . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.2.3.9 init_filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 3.2.3.10 lee_cooler_power . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.2.3.11 lee_temperatura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.2.3 ii CONTENTS 3.2.4 3.2.3.12 lee_temperatura_base . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.2.3.13 manda_imagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.2.3.14 pon_temperatura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.2.3.15 set_filter_pos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3.2.3.16 SetMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3.2.3.17 showinfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3.2.3.18 tabla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 3.2.3.19 update . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.2.4.1 basetemp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.2.4.2 busy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.2.4.3 cancela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.2.4.4 cbin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.2.4.5 ccd_init . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.2.4.6 ccdtemp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.2.4.7 cols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.2.4.8 corg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.2.4.9 dark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.2.4.10 debug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.2.4.11 do_deinterlace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.2.4.12 do_estadistica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.2.4.13 error_string . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.2.4.14 etime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.2.4.15 full_image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.2.4.16 imagePixels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.2.4.17 imagesize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.2.4.18 maxcols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.2.4.19 maxpixels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.2.4.20 maxrows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.2.4.21 model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.2.4.22 power . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.2.4.23 rbin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.2.4.24 rorg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.2.4.25 rows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.2.4.26 v_cols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.2.4.27 v_corg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen CONTENTS 3.3 3.4 iii 3.2.4.28 v_rorg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.2.4.29 v_rows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 micliente Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 3.3.1 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 3.3.1.1 instruccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 3.3.1.2 ip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 3.3.1.3 local_fd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 server Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 3.4.1 Constructor & Destructor Documentation . . . . . . . . . . . . . . . . . . . . . . 43 3.4.1.1 server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 3.4.1.2 ∼server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Member Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . 44 3.4.2.1 checa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 3.4.2.2 init . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 3.4.2.3 netclose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 3.4.2.4 responde_cliente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 3.4.2.5 revisa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 3.4.2.6 set_ip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 3.4.3.1 busy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 3.4.3.2 CANCELA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 3.4.3.3 client_sockfd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 3.4.3.4 debug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 3.4.3.5 fileSal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 3.4.3.6 instruccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 3.4.3.7 ip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 3.4.3.8 op . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 3.4.3.9 procesando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 3.4.3.10 salida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 3.4.3.11 status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 3.4.2 3.4.3 4 File Documentation 4.1 47 fli.cpp File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.1.1 Define Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 4.1.1.1 info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 4.1.1.2 LIBVERSIZ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 4.1.1.3 TRYFUNC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen iv CONTENTS 4.1.1.4 warnc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 4.1.2.1 findcams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 4.1.2.2 findfilters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 4.1.2.3 writeraw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Variable Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 4.1.3.1 __progname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 4.1.3.2 maxushort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 4.1.3.3 mutex_busy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 4.1.3.4 red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 fli.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.2.1 Define Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.2.1.1 _ERROR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.2.1.2 _NO_ERROR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.2.1.3 BUFF_SIZ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.2.1.4 FALSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.2.1.5 TRUE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 fli_call.c File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 4.3.1 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 4.3.1.1 findcams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 4.3.1.2 findfilters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 4.3.1.3 writeraw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 fli_call.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 4.4.1 Define Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 4.4.1.1 info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 4.4.1.2 LIBVERSIZ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 4.4.1.3 TRYFUNC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 4.4.1.4 warnc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 fli_server2.cpp File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 4.5.1 Define Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 4.5.1.1 FALSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 4.5.1.2 MyVersion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 4.5.1.3 PORT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 4.5.1.4 TRUE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 4.5.2.1 60 4.1.2 4.1.3 4.2 4.3 4.4 4.5 4.5.2 casi_expone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen CONTENTS 4.5.2.2 main . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 4.5.2.3 onthread_procesa_mando . . . . . . . . . . . . . . . . . . . . . . . . . 64 4.5.2.4 procesa_mando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 4.5.2.5 test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Variable Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 4.5.3.1 ccd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 4.5.3.2 i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 4.5.3.3 lista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 4.5.3.4 mutex_busy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 4.5.3.5 red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 4.5.3.6 res . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 4.5.3.7 t_result . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 4.5.3.8 thread_mando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 4.5.3.9 thread_red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 libfli.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 4.6.1 Define Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 4.6.1.1 DllExport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 4.6.1.2 DllImport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 4.6.1.3 FLI_BGFLUSH_START . . . . . . . . . . . . . . . . . . . . . . . . . 78 4.6.1.4 FLI_BGFLUSH_STOP . . . . . . . . . . . . . . . . . . . . . . . . . . 78 4.6.1.5 FLI_CAMERA_DATA_READY . . . . . . . . . . . . . . . . . . . . . 78 4.6.1.6 FLI_CAMERA_STATUS_EXPOSING . . . . . . . . . . . . . . . . . . 78 4.6.1.7 FLI_CAMERA_STATUS_IDLE . . . . . . . . . . . . . . . . . . . . . 78 4.6.1.8 FLI_CAMERA_STATUS_MASK . . . . . . . . . . . . . . . . . . . . 78 4.6.1.9 FLI_CAMERA_STATUS_READING_CCD . . . . . . . . . . . . . . . 78 4.6.1.10 FLI_CAMERA_STATUS_UNKNOWN . . . . . . . . . . . . . . . . . 78 4.6.1.11 FLI_CAMERA_STATUS_WAITING_FOR_TRIGGER . . . . . . . . . 78 4.6.1.12 FLI_FAN_SPEED_OFF . . . . . . . . . . . . . . . . . . . . . . . . . . 78 4.6.1.13 FLI_FAN_SPEED_ON . . . . . . . . . . . . . . . . . . . . . . . . . . 78 4.6.1.14 FLI_FOCUSER_STATUS_HOME . . . . . . . . . . . . . . . . . . . . 78 4.6.1.15 FLI_FOCUSER_STATUS_HOMING . . . . . . . . . . . . . . . . . . 78 4.6.1.16 FLI_FOCUSER_STATUS_LEGACY . . . . . . . . . . . . . . . . . . . 78 4.6.1.17 FLI_FOCUSER_STATUS_LIMIT . . . . . . . . . . . . . . . . . . . . 78 4.6.1.18 FLI_FOCUSER_STATUS_MOVING_IN . . . . . . . . . . . . . . . . 78 4.6.1.19 FLI_FOCUSER_STATUS_MOVING_MASK . . . . . . . . . . . . . . 78 4.6.1.20 FLI_FOCUSER_STATUS_MOVING_OUT . . . . . . . . . . . . . . . 78 4.5.3 4.6 v Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen vi CONTENTS 4.6.1.21 FLI_FOCUSER_STATUS_UNKNOWN . . . . . . . . . . . . . . . . . 78 4.6.1.22 FLI_FRAME_TYPE_DARK . . . . . . . . . . . . . . . . . . . . . . . 78 4.6.1.23 FLI_FRAME_TYPE_FLOOD . . . . . . . . . . . . . . . . . . . . . . 78 4.6.1.24 FLI_FRAME_TYPE_NORMAL . . . . . . . . . . . . . . . . . . . . . 78 4.6.1.25 FLI_FRAME_TYPE_RBI_FLUSH . . . . . . . . . . . . . . . . . . . . 78 4.6.1.26 FLI_INVALID_DEVICE . . . . . . . . . . . . . . . . . . . . . . . . . 78 4.6.1.27 FLI_IO_P0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 4.6.1.28 FLI_IO_P1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 4.6.1.29 FLI_IO_P2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 4.6.1.30 FLI_IO_P3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 4.6.1.31 FLI_MODE_16BIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 4.6.1.32 FLI_MODE_8BIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 4.6.1.33 FLI_SHUTTER_CLOSE . . . . . . . . . . . . . . . . . . . . . . . . . 80 4.6.1.34 FLI_SHUTTER_EXTERNAL_EXPOSURE_CONTROL . . . . . . . . 80 4.6.1.35 FLI_SHUTTER_EXTERNAL_TRIGGER . . . . . . . . . . . . . . . . 80 4.6.1.36 FLI_SHUTTER_EXTERNAL_TRIGGER_HIGH . . . . . . . . . . . . 80 4.6.1.37 FLI_SHUTTER_EXTERNAL_TRIGGER_LOW . . . . . . . . . . . . 80 4.6.1.38 FLI_SHUTTER_OPEN . . . . . . . . . . . . . . . . . . . . . . . . . . 80 4.6.1.39 FLI_TEMPERATURE_BASE . . . . . . . . . . . . . . . . . . . . . . 80 4.6.1.40 FLI_TEMPERATURE_CCD . . . . . . . . . . . . . . . . . . . . . . . 80 4.6.1.41 FLI_TEMPERATURE_EXTERNAL . . . . . . . . . . . . . . . . . . . 80 4.6.1.42 FLI_TEMPERATURE_INTERNAL . . . . . . . . . . . . . . . . . . . 80 4.6.1.43 FLIDEBUG_ALL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 4.6.1.44 FLIDEBUG_FAIL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 4.6.1.45 FLIDEBUG_INFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 4.6.1.46 FLIDEBUG_NONE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 4.6.1.47 FLIDEBUG_WARN . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 4.6.1.48 FLIDEVICE_CAMERA . . . . . . . . . . . . . . . . . . . . . . . . . 80 4.6.1.49 FLIDEVICE_ENUMERATE_BY_CONNECTION . . . . . . . . . . . 80 4.6.1.50 FLIDEVICE_FILTERWHEEL . . . . . . . . . . . . . . . . . . . . . . 80 4.6.1.51 FLIDEVICE_FOCUSER . . . . . . . . . . . . . . . . . . . . . . . . . 80 4.6.1.52 FLIDEVICE_HS_FILTERWHEEL . . . . . . . . . . . . . . . . . . . . 80 4.6.1.53 FLIDEVICE_NONE . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 4.6.1.54 FLIDEVICE_RAW . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 4.6.1.55 FLIDOMAIN_INET . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 4.6.1.56 FLIDOMAIN_NONE . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen CONTENTS 4.6.2 4.6.3 vii 4.6.1.57 FLIDOMAIN_PARALLEL_PORT . . . . . . . . . . . . . . . . . . . . 80 4.6.1.58 FLIDOMAIN_SERIAL . . . . . . . . . . . . . . . . . . . . . . . . . . 80 4.6.1.59 FLIDOMAIN_SERIAL_1200 . . . . . . . . . . . . . . . . . . . . . . . 80 4.6.1.60 FLIDOMAIN_SERIAL_19200 . . . . . . . . . . . . . . . . . . . . . . 80 4.6.1.61 FLIDOMAIN_USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 4.6.1.62 LIBFLIAPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Typedef Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 4.6.2.1 flibgflush_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 4.6.2.2 flibitdepth_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 4.6.2.3 flichannel_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 4.6.2.4 flidebug_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 4.6.2.5 flidev_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 4.6.2.6 flidomain_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 4.6.2.7 fliframe_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 4.6.2.8 flimode_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 4.6.2.9 flishutter_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 4.6.2.10 flistatus_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.2.11 flitdiflags_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.2.12 flitdirate_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.1 FLICancelExposure . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.2 FLIClose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.3 FLIConfigureIOPort . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.4 FLIControlBackgroundFlush . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.5 FLIControlShutter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.6 FLICreateList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.7 FLIDeleteList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.8 FLIEndExposure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.9 FLIExposeFrame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.10 FLIFlushRow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.11 FLIFreeList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.12 FLIGetArrayArea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.13 FLIGetCameraMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.14 FLIGetCameraModeString . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.15 FLIGetCoolerPower . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.16 FLIGetDeviceStatus . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen viii CONTENTS 4.6.3.17 FLIGetExposureStatus . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.18 FLIGetFilterCount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.19 FLIGetFilterPos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.20 FLIGetFocuserExtent . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.21 FLIGetFWRevision . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.22 FLIGetHWRevision . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.23 FLIGetLibVersion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.24 FLIGetModel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.25 FLIGetPixelSize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.26 FLIGetSerialString . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.27 FLIGetStepperPosition . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.28 FLIGetStepsRemaining . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.29 FLIGetTemperature . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.30 FLIGetVisibleArea . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.31 FLIGrabFrame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.32 FLIGrabRow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.33 FLIGrabVideoFrame . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.34 FLIHomeDevice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.35 FLIHomeFocuser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.36 FLIList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.37 FLIListFirst . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.38 FLIListNext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.39 FLILockDevice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.40 FLIOpen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.41 FLIReadIOPort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.42 FLIReadTemperature . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.43 FLISetBitDepth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.44 FLISetCameraMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.45 FLISetDAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.46 FLISetDebugLevel . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.47 FLISetExposureTime . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.48 FLISetFanSpeed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.49 FLISetFilterPos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.50 FLISetFrameType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.51 FLISetHBin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.52 FLISetImageArea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen CONTENTS ix 4.6.3.53 FLISetNFlushes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.54 FLISetTDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.55 FLISetTemperature . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.56 FLISetVBin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.57 FLIStartVideoMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.58 FLIStepMotor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.59 FLIStepMotorAsync . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.60 FLIStopVideoMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.61 FLITriggerExposure . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.62 FLIUnlockDevice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.63 FLIUsbBulkIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6.3.64 FLIWriteIOPort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.7 server.cpp File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 4.8 server.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 18 CONTENTS Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen Chapter 1 Class Index 1.1 Class List Here are the classes, structs, unions and interfaces with brief descriptions: cam_t . . FLI . . . micliente server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 24 42 43 20 Class Index Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen Chapter 2 File Index 2.1 File List Here is a list of all files with brief descriptions: fli.cpp . . . . . fli.h . . . . . . fli_call.c . . . . fli_call.h . . . fli_server2.cpp libfli.h . . . . . server.cpp . . . server.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 53 54 58 59 73 85 86 22 File Index Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen Chapter 3 Class Documentation 3.1 cam_t Struct Reference #include <fli_call.h> Public Attributes • flidomain_t domain • char ∗ dname • char ∗ name 3.1.1 Member Data Documentation 3.1.1.1 char∗ cam_t::dname 3.1.1.2 flidomain_t cam_t::domain 3.1.1.3 char∗ cam_t::name The documentation for this struct was generated from the following file: • fli_call.h 24 Class Documentation 3.2 FLI Class Reference #include <fli.h> Collaboration diagram for FLI: cam_t cam FLI Public Member Functions • • • • • • • • • • • • • • • • • • • • • FLI () int expose (int msec, int myfd) void estadistica (int ∗minn, int ∗maxx, double ∗mean, double ∗stdev, int ∗saturated) void showinfo (void) double lee_temperatura (void) double lee_temperatura_base (void) double lee_cooler_power (void) void update (void) void pon_temperatura (double temp) void close (void) int init (int myfd) void manda_imagen (int myfd) int deinterlace (int cols, int rows) void tabla (unsigned short ∗iptr, int cuantos) void SetMode (flimode_t mode_index) flimode_t GetMode () char ∗ GetMode_String (flimode_t mode_index) int init_filters (int myfd) void set_filter_pos (int myfd, int pos) int get_filter_pos (int myfd) ∼FLI () Public Attributes • double ccdtemp • double basetemp Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 3.2 FLI Class Reference • • • • • • • • • • • • • • • • • • • • • • • • • • • double power bool debug bool busy bool ccd_init bool do_estadistica bool dark bool full_image bool cancela int cbin int rbin int corg int rorg int etime int cols int rows int imagesize int imagePixels int maxpixels long maxrows long maxcols long v_corg long v_rorg long v_cols long v_rows char model [BUFF_SIZ] char error_string [255] bool do_deinterlace 3.2.1 Detailed Description Author Colorado <[email protected]> 3.2.2 Constructor & Destructor Documentation 3.2.2.1 FLI::FLI () 64 { 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 cout <<"\nFLI class ready \n"; debug=FALSE; ccd_init=FALSE; //maxcols=cols=2154; //maxrows=rows=4608; maxcols=cols=2081; maxrows=rows=2113; maxpixels=maxcols*maxrows; imagesize=cols*rows*2; imagePixels=cols*rows; //shutter=TRUE; etime=100; cbin=1; Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 25 26 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 } 3.2.2.2 101 { 102 103 104 } Class Documentation rbin=1; rorg=0; corg=0; busy=FALSE; ccdtemp=-10.0; do_estadistica=FALSE; dark=FALSE; cancela=FALSE; //do_deinterlace=true; do_deinterlace=false; v_corg=16; v_rorg=32; v_cols=2064; v_rows=2080; is_filter_init=FALSE; FLI::∼FLI () cout <<"\nFLI class Ended \n"; close(); Here is the call graph for this function: FLI::~FLI FLI::close 3.2.3 Member Function Documentation 3.2.3.1 void FLI::close (void) 107 { 108 109 110 111 112 113 114 115 116 117 118 119 120 121 } FLIClose cout <<"\nCerrando driver de FLI :"<<cam[0].name<<endl; cout <<"\nccd init :"<<ccd_init<<endl; if ( ccd_init ) { ccd_init=FALSE; TRYFUNC ( FLIClose, dev ); cout <<"\nCerre dev"; free ( cam[1].name ); cout <<"\nFree Name "; free ( cam ); cout <<"\nFree Cam \n"; } Here is the call graph for this function: FLI::close FLIClose Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 3.2 FLI Class Reference 3.2.3.2 457 { 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 } int FLI::deinterlace (int cols, int rows) unsigned short *old_iptr; unsigned short *new_iptr; int img_size; int half; cout <<"deinterlace cols="<<cols<<" rows=" <<rows<<endl; old_iptr = img; //tabla(old_iptr,10); img_size = maxcols * maxrows * sizeof ( u_int16_t ); /* Allocate a new buffer to hold the deinterlaced image. */ if ( ( new_iptr = ( u_int16_t * ) malloc ( img_size ) ) == NULL ) { sprintf ( error_string, "Error in allocating memory for deinterla cing. \nSaving interlaced image to disk." ); free ( new_iptr ); exit ( 1 ); //return _ERROR; } cout <<"Reserve memoria temporar de "<<img_size<<endl; int i; if ( ( float ) cols/2 != ( int ) cols/2 ) { sprintf ( error_string, "Number of cols must be EVEN for split-se rial readout. \nSkipping deinterlace." ); free ( new_iptr ); return _ERROR; } half=cols*rows/2; cout <<"mitad "<<half<<endl; for ( i=0;i< ( cols*rows ) /2;i++ ) { * ( new_iptr+i ) = * ( old_iptr+ ( 2*i ) ); //cout <<i<<"(A) <-- (old)"<<2*i<<endl; //* ( new_iptr+ ( cols*rows )-i-1 ) = * ( old_iptr+ ( 2*i ) +1 ); //ultiam prueba asi: * ( new_iptr+ ( half*2 )-i-1 ) = * ( old_iptr+ ( 2*i ) +1 ); //asi estaba * ( new_iptr+ ( half ) +i+1 ) = * ( old_iptr+ ( 2*i ) +1 ); //cout <<" (B) "<<half+i+1<< " <-- old="<< 2*i+1 <<endl; //if (i <20) { //cout <<i<<"(A) <-- (old)"<<2*i<<" (B) "<<half+i+1<< " <-- old="<<2*i+1<<endl; } } //tabla(new_iptr,10); memcpy ( old_iptr, new_iptr, cols*rows*sizeof ( unsigned short ) ); free ( new_iptr ); return _NO_ERROR; Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 27 28 3.2.3.3 402 { 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 Class Documentation void FLI::estadistica (int ∗ minn, int ∗ maxx, double ∗ mean, double ∗ stdev, int ∗ saturated) unsigned short j; long i; double sum=0.0,sum2=0.0; *saturated=0; for ( i=0;i<imagePixels;i++ ) { j=img[i]; //cout <<i<<".-"<<j<<" "; if ( j > *maxx ) *maxx=j; if ( j < *minn ) *minn=j; if ( j>= maxushort ) *saturated++; sum = sum+ ( double ) j; sum2=sum2+ ( double ) ( j ) * ( double ) ( j ); } printf ( "sat %d of %d \n",*saturated,imagePixels ); *mean= ( double ) sum/imagePixels; *stdev = pow ( ( sum2 - ( sum*sum ) / ( double ) ( imagePixels ) ) / ( ( double ) ( imagePixels -1 ) ),0.5 ); 423 } 3.2.3.4 int FLI::expose (int msec, int myfd) 182 { 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 long tmp1; char manda[100]; long nrow; //modificar coordenadas por area visible corg+=v_corg; rorg+=v_rorg; showinfo(); TRYFUNC ( FLISetExposureTime, dev, msec ); TRYFUNC ( FLISetHBin, dev, cbin ); TRYFUNC ( FLISetVBin, dev, rbin ); cout <<"cbin="<<cbin<< " rbin=" <<rbin<<endl; cout <<"corg="<<corg<< " cols=" <<cols<<endl; cout <<"rorg="<<rorg<< " rows=" <<rows<<endl; //setting imagen size /* TRYFUNC ( FLISetImageArea, dev, corg, rorg, (corg + cols ) / cbin, (rorg + rows ) / rbin ); TRYFUNC ( FLISetImageArea, dev, corg*cbin, rorg*rbin, corg + (cols *cbin) , rorg + (rows*rbin) */ TRYFUNC ( FLISetImageArea, dev, corg, rorg, corg + ( cols ) , rorg + ( rows ) ); ); cout <<"Image upper left corner "<<corg<<" , "<<rorg <<endl; cout <<"Image lower right corner "<<corg+cols<<" , "<<rorg + rows <<en dl; 215 Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 3.2 FLI Class Reference 216 //cout <<"FLISetImageArea "<<corg*cbin<<" "<<rorg*rbin<<" "<< corg + (cols *cbi n)<<" "<< rorg + (rows*rbin)<<endl; 217 218 cout <<"FLISetImageArea "<<corg<<" "<<rorg<<" "<< corg + ( cols ) <<" "<< rorg + ( rows ) <<endl; 219 220 221 222 //tipo de imagen? 223 if ( dark ) 224 { 225 cout <<"Vamos hacer un dark \n"; 226 TRYFUNC ( FLISetFrameType, dev, FLI_FRAME_TYPE_DARK ); 227 } 228 else 229 { 230 cout <<"Vamos hacer una imagen normal \n"; 231 TRYFUNC ( FLISetFrameType, dev, FLI_FRAME_TYPE_NORMAL ); 232 } 233 234 TRYFUNC ( FLIExposeFrame, dev ); 235 236 do 237 { 238 TRYFUNC ( FLIGetExposureStatus, dev, &tmp1 ); 239 if ( r ) 240 break; 241 242 //usleep ( tmp1 * 1000 ); 243 sprintf ( manda,"TIME_REMAINING %ld \n",tmp1 ); 244 red.responde_cliente ( manda,myfd ); 245 //verificar si hay que cancelar 246 if ( cancela ) 247 { 248 //do_cancela ( ); 249 TRYFUNC ( FLICancelExposure, dev ); 250 printf ( "Abortando Expose......!!!!!!!!!! :( ;( \n" ); 251 sprintf ( manda,"CANCELADO \n" ); 252 red.responde_cliente ( manda,myfd ); 253 cancela=FALSE; 254 return 0; 255 } 256 usleep ( 100000 ); 257 } 258 while ( tmp1 ); 259 printf ( "Ya termine exposicion, voy a leer la imagen del CCD ........... ........................\n" ); 260 for ( nrow = 0; nrow < rows; nrow++ ) 261 { 262 TRYFUNC ( FLIGrabRow, dev, &img[nrow * cols], cols ); 263 if ( r ) 264 break; 265 } 266 267 268 //grabar imagen 269 //TRYFUNC ( writeraw, ( char * ) "imagen.bin", cols, rows, img ); 270 printf ( "Ya termine exposicion ***************************************** **************************\n" ); 271 return !r; 272 } Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 29 30 Class Documentation Here is the call graph for this function: FLICancelExposure FLIExposeFrame FLIGetExposureStatus FLIGrabRow FLISetExposureTime FLI::expose FLISetFrameType FLISetHBin FLISetImageArea FLISetVBin server::responde_cliente FLI::showinfo 3.2.3.5 int FLI::get_filter_pos (int myfd) 626 { 627 628 629 630 631 632 long pos; char manda[100]; if (!is_filter_init){ printf ("Rueda de filtros NO inicializada, voy a Inicializarla.. \n"); 633 634 635 636 637 638 639 640 641 642 643 644 645 646 } init_filters(myfd); printf ("Rueda de filtros: Voy a HOME...\n"); set_filter_pos(myfd,0); } printf("Reading filter position \n"); TRYFUNC(FLIGetFilterPos,dev_filter,&pos); sprintf ( manda,"FLI_POS %ld \n",pos ); printf(manda); red.responde_cliente ( manda,myfd ); return pos; Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 3.2 FLI Class Reference 31 Here is the call graph for this function: FLIGetFilterPos server::responde_cliente FLI::get_filter_pos FLIFreeList FLI::init_filters findfilters FLISetFilterPos FLIOpen FLIList FLI::set_filter_pos 3.2.3.6 flimode_t FLI::GetMode () 540 { 541 542 543 544 545 546 } static flimode_t mode_index; //FLISetCameraMode(flidev_t dev, flimode_t mode_index) TRYFUNC ( FLIGetCameraMode, dev, &mode_index ); return mode_index; Here is the call graph for this function: FLI::GetMode FLIGetCameraMode char ∗ FLI::GetMode_String (flimode_t mode_index) 3.2.3.7 549 { 550 551 552 553 554 555 //flimode_t mode_index; static char mode_string[BUFF_SIZ]; cout <<"index ="<<mode_index<<endl; TRYFUNC ( FLIGetCameraModeString, dev, mode_index, mode_string,BUFF_SIZ ) ; 556 557 558 559 } cout <<"mode string ="<<mode_string<<endl; return mode_string; Here is the call graph for this function: FLI::GetMode_String 3.2.3.8 275 { 276 277 278 FLIGetCameraModeString int FLI::init (int myfd) int numcams; int i=0, flushes = 2; long tmp1, tmp2, tmp3, tmp4, Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen img_rows, row_width; 32 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 Class Documentation double d1, d2; char buff[BUFF_SIZ]; int img_size; if ( ccd_init==TRUE ) { sprintf ( buff,"info red.responde_cliente sprintf ( buff,"info v_corg, v_rorg, v_cols, v_rows ); red.responde_cliente sprintf ( buff,"info red.responde_cliente red.responde_cliente Model: %s\n",model ); ( buff,myfd ); Visible area: (%ld, %ld)(%ld, %ld) \n", ( buff,myfd ); Work Size: %d, %d \n", cols,rows ); ( buff,myfd ); ( ( char * ) "GOOD ->CCD INIT OK \n",myfd ); return 0; } cout << "Inicializando CCD" << endl; //TRYFUNC ( FLISetDebugLevel, NULL /* "NO HOST" */, FLIDEBUG_ALL ); //TRYFUNC ( FLISetDebugLevel, NULL /* "NO HOST" */, FLIDEBUG_FAIL ); TRYFUNC ( FLIGetLibVersion, libver, LIBVERSIZ ); info ( "Library version ’%s’", libver ); sprintf ( buff,"info Library version: %s\n",libver ); red.responde_cliente ( buff,myfd ); numcams=findcams ( FLIDOMAIN_USB, &cam ); printf ( "cams: %d \n", numcams ); if ( numcams<1 ) { //hay problemas ccd_init=FALSE; red.responde_cliente ( ( char * ) "FAIL ->Hay problemas con la in icializacion \n",myfd ); return -1; } printf ( "\naqui 1\n" ); info ( "Trying camera ’%s’ from %s domain", cam[i].name, cam[i].dname ); sprintf ( buff,"info type: %s, -->%s\n",cam[i].name, cam[i].dname ); red.responde_cliente ( buff,myfd ); TRYFUNC ( FLIOpen, &dev, cam[i].name, FLIDEVICE_CAMERA | cam[i].domain ); printf ( "Resultado %ld",r ); if ( r<0 ) { //hay problemas ccd_init=FALSE; red.responde_cliente ( ( char * ) "FAIL ->Hay problemas con la in icializacion \n",myfd ); return -1; } cout << "dev:" << dev <<endl; printf ( "\naqui 2\n" ); TRYFUNC ( FLIGetModel, dev, model, BUFF_SIZ ); info ( "Model: %s", model ); sprintf ( buff,"info Model: %s\n",model ); red.responde_cliente ( buff,myfd ); TRYFUNC ( FLIGetHWRevision, dev, &tmp1 ); info ( "Hardware Rev: %ld", tmp1 ); Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 3.2 FLI Class Reference 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 } TRYFUNC ( FLIGetFWRevision, dev, &tmp1 ); info ( "Firmware Rev: %ld", tmp1 ); TRYFUNC ( FLIGetPixelSize, dev, &d1, &d2 ); info ( "Pixel Size: %f x %f", d1, d2 ); sprintf ( buff,"info pixel size: %f x %f\n",d1, d2 ); red.responde_cliente ( buff,myfd ); TRYFUNC ( FLIGetArrayArea, dev, &tmp1, &tmp2, &maxcols, &maxrows ); info ( "Array area: (%ld, %ld)(%ld, %ld)", tmp1, tmp2, maxcols, maxrows ); sprintf ( buff,"info Array area: (%ld, %ld)(%ld, %ld) \n", tmp1, tmp2, maxcols, maxrows ); red.responde_cliente ( buff,myfd ); TRYFUNC ( FLIGetVisibleArea, dev, &v_corg, &v_rorg, &v_cols, &v_rows ); info ( "Visible area: (%ld, %ld)(%ld, %ld)", v_corg, v_rorg, v_cols, v_rows ); cols=row_width = ( v_cols - v_corg ) / cbin; rows=img_rows = ( v_rows - v_rorg ) / rbin; sprintf ( buff,"info Visible area: (%ld, %ld)(%ld, %ld) \n", v_corg, v_rorg, v_cols, v_rows ); red.responde_cliente ( buff,myfd ); sprintf ( buff,"info Work Size: %d, %d \n", cols,rows ); red.responde_cliente ( buff,myfd ); //poner modo 16 bits, algunas camaras no lo soportan TRYFUNC ( FLISetBitDepth, dev, FLI_MODE_16BIT ); tmp1=v_corg; tmp2=v_rorg; tmp3=v_cols; tmp4=v_rows; cout <<"FLISetImageArea "<<tmp1<<" "<<tmp2<<" "<<tmp1 + ( tmp3 - tmp1 ) < <" "<<tmp2 + ( tmp4 - tmp2 ) / rbin<<endl; TRYFUNC ( FLISetImageArea, dev, tmp1, tmp2, tmp1 + ( tmp3 - tmp1 ) / cbin, tmp2 + ( tmp4 - tmp2 ) / rbin ); TRYFUNC ( FLISetNFlushes, dev, flushes ); TRYFUNC ( FLIGetTemperature, dev, &ccdtemp ); info ( "Temperature: %f", ccdtemp ); sprintf ( buff,"LEE_TEMP %2.1f\n",ccdtemp ); red.responde_cliente ( buff,myfd ); //img_size = img_rows * row_width * sizeof ( u_int16_t ); img_size = maxcols * maxrows * sizeof ( u_int16_t ); printf ( "Voy a reservar memoria de %d Bytes \n", img_size ); if ( ( img = ( u_int16_t * ) malloc ( img_size ) ) == NULL ) { err ( 1, "malloc() failed" ); exit ( 1 ); } printf ( "Image buffer: 0x%X ( %d ) \n", img, img ); ccd_init=TRUE; red.responde_cliente ( ( char * ) "GOOD ->CCD INIT OK \n",myfd ); return 1; Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 33 34 Class Documentation Here is the call graph for this function: FLIFreeList findcams FLIList FLIGetArrayArea FLIGetFWRevision FLIGetHWRevision FLIGetLibVersion FLIGetModel FLIGetPixelSize FLI::init FLIGetTemperature FLIGetVisibleArea FLIOpen FLISetBitDepth FLISetImageArea FLISetNFlushes server::responde_cliente 3.2.3.9 562 { 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 int FLI::init_filters (int myfd) int numcams; int i=0, flushes = 2; long tmp1, tmp2, tmp3, tmp4, double d1, d2; char buff[BUFF_SIZ]; int img_size; img_rows, row_width; cout << "Inicializando Rueda de filtros" << endl; //TRYFUNC ( FLISetDebugLevel, NULL /* "NO HOST" */, FLIDEBUG_ALL ); //TRYFUNC ( FLISetDebugLevel, NULL /* "NO HOST" */, FLIDEBUG_FAIL ); numcams=findfilters ( FLIDOMAIN_USB, &cam ); printf ( "cams: %d \n", numcams ); if ( numcams<1 ) { //hay problemas ccd_init=FALSE; red.responde_cliente ( ( char * ) "FAIL ->Hay problemas con la in icializacion de la rueda de filtros \n",myfd ); return -1; Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 3.2 FLI Class Reference 586 587 588 589 590 35 } printf ( "\naqui 1\n" ); info ( "Trying filter wheels ’%s’ from %s domain", cam[i].name, cam[i].dn ame ); 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 } sprintf ( buff,"info type: %s, -->%s\n",cam[i].name, cam[i].dname ); red.responde_cliente ( buff,myfd ); TRYFUNC ( FLIOpen, &dev_filter, cam[i].name, FLIDEVICE_FILTERWHEEL | cam[ i].domain ); printf ( "Resultado %ld",r ); if ( r<0 ) { //hay problemas ccd_init=FALSE; red.responde_cliente ( ( char * ) "FAIL ->Hay problemas con la in icializacion de la rueda de filtros\n",myfd ); return -1; } cout << "dev:" << dev_filter <<endl; printf ( "\naqui 2\n" ); is_filter_init=TRUE; return 1; Here is the call graph for this function: FLIFreeList findfilters FLIList FLI::init_filters FLIOpen server::responde_cliente 3.2.3.10 double FLI::lee_cooler_power (void) 153 { 154 155 156 } TRYFUNC ( FLIGetCoolerPower return power; ,dev, &power); Here is the call graph for this function: FLI::lee_cooler_power FLIGetCoolerPower 3.2.3.11 double FLI::lee_temperatura (void) 140 { 141 142 143 } TRYFUNC ( FLIGetTemperature, dev, &ccdtemp ); return ccdtemp; Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 36 Class Documentation Here is the call graph for this function: FLI::lee_temperatura FLIGetTemperature 3.2.3.12 double FLI::lee_temperatura_base (void) 146 { 147 148 149 150 } //TRYFUNC ( FLIGetTemperature, dev, &ccdtemp ); TRYFUNC ( FLIReadTemperature ,dev, FLI_TEMPERATURE_BASE, &basetemp); return basetemp; Here is the call graph for this function: FLI::lee_temperatura_base FLIReadTemperature 3.2.3.13 void FLI::manda_imagen (int myfd) 427 { 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 } int i; int tx=0; unsigned short pixel; //char manda[100]; FILE *fnet; cout <<"En mandabin con descriptor "<<myfd<<endl; fnet = fdopen ( dup ( myfd ), "w" ); if ( ( fnet == NULL ) ) { cout <<" Err en el fdopen fnet\n"; } cout <<"Voy a madar imagen via red "<<imagePixels<<" Fd="<<myfd<<endl; tx=0; for ( i=0;i<imagePixels;i++ ) { pixel=img[i]; tx+=fwrite ( &pixel,sizeof ( pixel ),1,fnet ); } cout <<i<<" Mande = "<<pixel<<" bytes, actual de="<<tx<<" (Total="<<image Pixels<<" )"<<endl; fflush ( fnet ); fclose ( fnet ); 3.2.3.14 void FLI::pon_temperatura (double temp) 160 { 161 162 163 164 } cout << "Regular temperatura a:" << temp <<endl; TRYFUNC ( FLISetTemperature, dev, temp ); cout << "dev:" << dev <<endl; Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 3.2 FLI Class Reference 37 Here is the call graph for this function: FLI::pon_temperatura FLISetTemperature 3.2.3.15 void FLI::set_filter_pos (int myfd, int pos) 613 { 614 615 616 if (!is_filter_init){ printf ("Rueda de filtros NO inicializada, voy a Inicializarla.. \n"); 617 618 619 620 621 622 623 } init_filters(myfd); } printf("Moving filter to: %d \n",pos); TRYFUNC(FLISetFilterPos,dev_filter,pos); cout << "dev:" << dev_filter <<endl; Here is the call graph for this function: FLIFreeList FLISetFilterPos findfilters FLI::init_filters FLIOpen FLI::set_filter_pos FLIList server::responde_cliente 3.2.3.16 void FLI::SetMode (flimode_t mode_index) 531 { 532 533 534 535 } //FLISetCameraMode(flidev_t dev, flimode_t mode_index) TRYFUNC ( FLISetCameraMode, dev, mode_index ); Here is the call graph for this function: FLI::SetMode 3.2.3.17 void FLI::showinfo (void) 167 { 168 169 170 171 172 173 printf printf printf printf printf printf ( ( ( ( ( ( "\n "\n "\n "\n "\n "\n Showinfo:" ); Modelo=%s",model ); ETIME=%d",etime ); XSIZE=%d",cols ); YSIZE=%d",rows ); CBIN=%d",cbin ); Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen FLISetCameraMode 38 174 175 176 177 178 179 } Class Documentation printf printf printf printf printf ( ( ( ( ( "\n "\n "\n "\n "\n RBIN=%d",rbin ); CORG=%d",corg ); RORG=%d",rorg ); DARK=%d",dark ); DEBUG=%d\n",debug ); 3.2.3.18 void FLI::tabla (unsigned short ∗ iptr, int cuantos) 519 { 520 521 522 523 524 525 526 527 528 } unsigned short pixel; int i; for ( i=0;i<cuantos;i++ ) { pixel=iptr[i]; cout <<i<<" = "<<pixel<<endl; } 3.2.3.19 void FLI::update (void) 124 { 125 126 127 128 129 130 131 132 133 134 135 136 137 } int x,y; x=maxcols/cbin; y=maxrows/rbin; // revisa que el numero de columnas y renglones sea par if ( x % 2 != 0 ) x--; //quitarle un numero para hacerlo par if ( y % 2 != 0 ) y--; //quitarle un numero para hacerlo par maxpixels=x*y; imagesize=cols*rows*2; imagePixels=cols*rows; Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 3.2 FLI Class Reference Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 39 40 Class Documentation 3.2.4 Member Data Documentation 3.2.4.1 double FLI::basetemp 3.2.4.2 bool FLI::busy 3.2.4.3 bool FLI::cancela 3.2.4.4 int FLI::cbin 3.2.4.5 bool FLI::ccd_init 3.2.4.6 double FLI::ccdtemp 3.2.4.7 int FLI::cols 3.2.4.8 int FLI::corg 3.2.4.9 bool FLI::dark 3.2.4.10 bool FLI::debug 3.2.4.11 bool FLI::do_deinterlace 3.2.4.12 bool FLI::do_estadistica 3.2.4.13 char FLI::error_string[255] 3.2.4.14 int FLI::etime 3.2.4.15 bool FLI::full_image 3.2.4.16 int FLI::imagePixels 3.2.4.17 int FLI::imagesize 3.2.4.18 long FLI::maxcols 3.2.4.19 int FLI::maxpixels 3.2.4.20 long FLI::maxrows 3.2.4.21 char FLI::model[BUFF_SIZ] 3.2.4.22 double FLI::power 3.2.4.23 int FLI::rbin 3.2.4.24 int FLI::rorg 3.2.4.25 int FLI::rows 3.2.4.26 long FLI::v_cols 3.2.4.27 long FLI::v_corg 3.2.4.28 long FLI::v_rorg 3.2.4.29 long FLI::v_rows Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 3.2 FLI Class Reference • fli.h • fli.cpp Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 41 42 Class Documentation 3.3 micliente Struct Reference #include <server.h> Public Attributes • string instruccion • int local_fd • char ip [20] 3.3.1 Member Data Documentation 3.3.1.1 string micliente::instruccion 3.3.1.2 char micliente::ip[20] 3.3.1.3 int micliente::local_fd The documentation for this struct was generated from the following file: • server.h Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 3.4 server Class Reference 3.4 server Class Reference #include <server.h> Public Member Functions • • • • • • • • server () ∼server () void init (int myport) void netclose (void) void set_ip (char ∗newip) void revisa () int checa () void responde_cliente (char ∗mensaje, int myfd) Public Attributes • • • • • • • • • • • short op char ip [20] short procesando bool salida bool busy short status short debug char instruccion [200] bool CANCELA int client_sockfd FILE ∗ fileSal 3.4.1 Constructor & Destructor Documentation 3.4.1.1 server::server () 34 { 35 36 37 38 39 } 3.4.1.2 42 { 43 44 } cout <<"Net Server V1.2 loaded..."<<endl; ch=1; CANCELA=false; salida=false; server::∼server () cout <<"Closing server side..."<<endl; Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 43 44 Class Documentation 3.4.2 Member Function Documentation 3.4.2.1 int server::checa () 85 { 86 // 87 88 89 90 91 92 int i; debug=1; if ( debug ) cout <<"Esperando datos de red\n"<<endl; client_len=sizeof ( client_address ); //esperar una nueva conexion client_sockfd=accept ( server_sockfd, ( struct sockaddr * ) &client_addre ss, ( size_t * ) &client_len ); 93 94 //cout <<"FD del cliente "<<client_sockfd<<endl; 95 //if ( client_sockfd<0 ) 96 return client_sockfd; 97 /* 98 set_ip ( inet_ntoa ( client_address.sin_addr ) ); // return the IP 99 100 if ( debug >1 ) printf ( "\nadding client on fd %d \n",client_sockfd ); 101 i=read ( client_sockfd,&instruccion,sizeof ( instruccion ) ); 102 103 return ( i ); 104 */ 105 } //end red_revisa 3.4.2.2 void server::init (int myport) 48 { 49 50 51 52 53 54 55 56 57 58 59 60 61 62 int e; int flag = 1; if ( debug ) printf ( "\nServer init...\n" ); //crea socket para el servidor sin nombre server_sockfd=socket ( AF_INET,SOCK_STREAM,0 ); //define las caracteristicas del socket server_address.sin_family=AF_INET; server_address.sin_addr.s_addr=htonl ( INADDR_ANY ); server_address.sin_port=htons ( myport ); memset ( server_address.sin_zero, ’\0’, sizeof server_address.sin_zero ); //fijar opciones del socket e=setsockopt ( server_sockfd, SOL_SOCKET, SO_REUSEADDR,&flag, sizeof ( fl ag ) ); 63 64 65 66 67 68 69 if ( debug ) printf ( "\nsetsockopt=%d",e ); if ( e<0 ) perror ( "Error:" ); //asignar el nombre al socket, fijar mi ip y puerto server_len=sizeof ( server_address ); e=bind ( server_sockfd, ( struct sockaddr * ) &server_address,server_len ); 70 71 72 73 74 75 76 77 78 if ( debug ) printf ( "\nbind=%d",e ); if ( e<0 ) { perror ( "Error: Al conectarse por via red BIND:" ); printf ( "\nEsperar un minuto antes de volver a correr el program a\n\n" ); exit ( 1 ); } //crea queue para 5 conexiones e=listen ( server_sockfd,5 ); Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 3.4 server Class Reference 79 80 81 } 3.4.2.3 108 { 109 110 111 112 } 3.4.2.4 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 if ( debug ) printf ( "\nlisten=%d",e ); if ( debug ) printf ( "\nserver init...END \n" ); void server::netclose (void) if ( debug ) printf ( "\nCerrando conexiones de red del servidor" ); close ( server_sockfd ); if ( debug ) printf ( "\nYA CERRE TODAS LA CONEXIONES red\n" ); void server::responde_cliente (char ∗ mensaje, int myfd) { static int i=0; //FILE *fnet; char salida[200]; int j; strcpy ( salida,mensaje ); /* fnet = fdopen ( dup ( myfd ), "w" ); if ( ( fnet == NULL ) ) { cout <<" Err en el fdopen fnet casi_expone\n"; } fwrite ( salida,strlen ( salida ),1,fnet ); //fflush(fnet); fclose ( fnet ); i++; cout <<"mande a cliente ("<<myfd<<") : "<<salida<<" #="<<i<<endl; */ i++; j=write(myfd,salida,strlen ( salida )); cout <<"mande a cliente ("<<myfd<<") : "<<salida<<" #="<<j<<endl; } 3.4.2.5 void server::revisa () 3.4.2.6 void server::set_ip (char ∗ newip) 115 { 116 117 118 119 } //if (debug) printf("old ip %s",ip); strcpy ( ip,newip ); //if (debug) printf("new ip %s \n",newip); Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 45 46 Class Documentation 3.4.3 Member Data Documentation 3.4.3.1 bool server::busy 3.4.3.2 bool server::CANCELA 3.4.3.3 int server::client_sockfd 3.4.3.4 short server::debug 3.4.3.5 FILE∗ server::fileSal 3.4.3.6 char server::instruccion[200] 3.4.3.7 char server::ip[20] 3.4.3.8 short server::op 3.4.3.9 short server::procesando 3.4.3.10 bool server::salida 3.4.3.11 short server::status The documentation for this class was generated from the following files: • server.h • server.cpp Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen Chapter 4 File Documentation 4.1 fli.cpp File Reference #include "fli.h" #include <sys/types.h> #include <iostream> #include <cstdlib> #include <math.h> #include <sys/time.h> #include <arpa/inet.h> #include <sys/socket.h> #include <netinet/in.h> #include <stdio.h> #include <string> #include <sys/stat.h> #include <stdarg.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <fcntl.h> #include <err.h> #include <limits.h> #include <errno.h> Include dependency graph for fli.cpp: fli.cpp sys/types.h iostream cstdlib math.h sys/time.h arpa/inet.h sys/socket.h netinet/in.h stdio.h string sys/stat.h stdarg.h stdlib.h unistd.h string.h fcntl.h err.h limits.h errno.h 48 File Documentation This graph shows which files directly or indirectly include this file: fli.cpp Defines • • • • #define TRYFUNC(f,...) #define info(format, args...) printf("%s: " format "\n", __progname, ## args) #define warnc(c, format, args...) warnx(format ": %s", ## args, strerror(c)) #define LIBVERSIZ 1024 Functions • int findcams (flidomain_t domain, cam_t ∗∗cam) • int writeraw (char ∗filename, int width, int height, void ∗data) • int findfilters (flidomain_t domain, cam_t ∗∗cam) Variables • • • • const unsigned short maxushort = 65534 const char ∗ __progname server red pthread_mutex_t mutex_busy 4.1.1 Define Documentation 4.1.1.1 #define info(format, args...) printf("%s: " format "\n", __progname, ## args) 4.1.1.2 #define LIBVERSIZ 1024 4.1.1.3 #define TRYFUNC(f, ...) Value: do { if ((r = f(__VA_ARGS__))) warnc(-r, #f "() failed"); } while (0) \ \ \ 4.1.1.4 #define warnc(c, format, args...) warnx(format ": %s", ## args, strerror(c)) 4.1.2 Function Documentation 4.1.2.1 int findcams (flidomain_t domain, cam_t ∗∗ cam) 25 { 26 27 long r; char **tmplist; Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 4.1 fli.cpp File Reference 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 } 49 int numcams = 0; printf ( "\nfinding cams...\n" ); TRYFUNC ( FLIList, domain | FLIDEVICE_CAMERA, &tmplist ); if ( tmplist != NULL && tmplist[0] != NULL ) { int i, cams = 0; for ( i = 0; tmplist[i] != NULL; i++ ) cams++; if ( ( *cam = (cam_t*)realloc ( *cam, ( numcams + cams ) * sizeof ( cam_t ) ) ) == NULL ) err ( 1, "realloc() failed" ); for ( i = 0; tmplist[i] != NULL; i++ ) { int j; cam_t *tmpcam = *cam + i; for ( j = 0; tmplist[i][j] != ’\0’; j++ ) if ( tmplist[i][j] == ’;’ ) { tmplist[i][j] = ’\0’; break; } tmpcam->domain = domain; switch ( domain ) { case FLIDOMAIN_PARALLEL_PORT: tmpcam->dname = "parallel port"; break; case FLIDOMAIN_USB: tmpcam->dname = "USB"; break; case FLIDOMAIN_SERIAL: tmpcam->dname = "serial"; break; case FLIDOMAIN_INET: tmpcam->dname = "inet"; break; default: tmpcam->dname = "Unknown domain"; break; } tmpcam->name = strdup ( tmplist[i] ); } numcams += cams; } TRYFUNC ( FLIFreeList, tmplist ); printf ( "Encontre %d camaras \n",numcams ); return numcams; Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 50 File Documentation Here is the call graph for this function: FLIFreeList findcams FLIList 4.1.2.2 118 { 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 int findfilters (flidomain_t domain, cam_t ∗∗ cam) long r; char **tmplist; int numcams = 0; printf ( "\nfinding filter wheels\n" ); TRYFUNC ( FLIList, domain | FLIDEVICE_FILTERWHEEL, &tmplist ); printf("list %d \n",tmplist); printf("list %d \n",tmplist[0]); if ( tmplist != NULL && tmplist[0] != NULL ) { int i, cams = 0; for ( i = 0; tmplist[i] != NULL; i++ ) cams++; if ( ( *cam = (cam_t*)realloc ( *cam, ( numcams + cams ) * sizeof ( cam_t ) ) ) == NULL ) err ( 1, "realloc() failed" ); for ( i = 0; tmplist[i] != NULL; i++ ) { int j; cam_t *tmpcam = *cam + i; for ( j = 0; tmplist[i][j] != ’\0’; j++ ) if ( tmplist[i][j] == ’;’ ) { tmplist[i][j] = ’\0’; break; } tmpcam->domain = domain; switch ( domain ) { case FLIDOMAIN_PARALLEL_PORT: tmpcam->dname = "parallel port"; break; case FLIDOMAIN_USB: tmpcam->dname = "USB"; break; case FLIDOMAIN_SERIAL: tmpcam->dname = "serial"; break; case FLIDOMAIN_INET: tmpcam->dname = "inet"; break; default: Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 4.1 fli.cpp File Reference 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 } 51 tmpcam->dname = "Unknown domain"; break; } tmpcam->name = strdup ( tmplist[i] ); } } numcams += cams; else { printf ( "No Encontre NADA \n" ); } TRYFUNC ( FLIFreeList, tmplist ); printf ( "Encontre %d camaras \n",numcams ); return numcams; Here is the call graph for this function: FLIFreeList findfilters FLIList 4.1.2.3 92 { 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 } int writeraw (char ∗ filename, int width, int height, void ∗ data) int fd, size, err; if ( ( fd = open ( filename, O_WRONLY | O_CREAT | /* O_EXCL */ O_TRUNC, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH ) ) == -1 ) { warn ( "open(%s) failed", filename ); return -errno; } size = width * height * sizeof ( u_int16_t ); if ( ( err = write ( fd, data, size ) ) != size ) { warn ( "write() failed" ); err = -errno; } else err = 0; close ( fd ); return err; Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 52 File Documentation 4.1.3 Variable Documentation 4.1.3.1 const char∗ __progname 4.1.3.2 const unsigned short maxushort = 65534 4.1.3.3 pthread_mutex_t mutex_busy 4.1.3.4 server red Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 4.2 fli.h File Reference 53 4.2 fli.h File Reference #include "libfli.h" #include "fli_call.h" Include dependency graph for fli.h: fli.h libfli.h fli_call.h sys/types.h This graph shows which files directly or indirectly include this file: fli.h fli_server2.cpp Classes • class FLI Defines • • • • • #define TRUE 1 #define FALSE 0 #define BUFF_SIZ 4096 #define _ERROR -1 #define _NO_ERROR 0 4.2.1 Define Documentation 4.2.1.1 #define _ERROR -1 4.2.1.2 #define _NO_ERROR 0 4.2.1.3 #define BUFF_SIZ 4096 4.2.1.4 #define FALSE 0 4.2.1.5 #define TRUE 1 Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 54 File Documentation 4.3 fli_call.c File Reference #include <sys/types.h> #include <sys/stat.h> #include <stdarg.h> #include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <string.h> #include <fcntl.h> #include <err.h> #include <limits.h> #include <errno.h> #include "libfli.h" #include "fli_call.h" Include dependency graph for fli_call.c: fli_call.c sys/stat.h stdarg.h stdlib.h stdio.h unistd.h string.h fcntl.h err.h limits.h errno.h libfli.h fli_call.h sys/types.h Functions • int findcams (flidomain_t domain, cam_t ∗∗cam) • int findfilters (flidomain_t domain, cam_t ∗∗cam) • int writeraw (char ∗filename, int width, int height, void ∗data) 4.3.1 Function Documentation 4.3.1.1 int findcams (flidomain_t domain, cam_t ∗∗ cam) 25 { 26 27 28 29 30 31 32 33 34 35 36 37 long r; char **tmplist; int numcams = 0; printf ( "\nfinding cams...\n" ); TRYFUNC ( FLIList, domain | FLIDEVICE_CAMERA, &tmplist ); if ( tmplist != NULL && tmplist[0] != NULL ) { int i, cams = 0; Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 4.3 fli_call.c File Reference 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 } 55 for ( i = 0; tmplist[i] != NULL; i++ ) cams++; if ( ( *cam = (cam_t*)realloc ( *cam, ( numcams + cams ) * sizeof ( cam_t ) ) ) == NULL ) err ( 1, "realloc() failed" ); for ( i = 0; tmplist[i] != NULL; i++ ) { int j; cam_t *tmpcam = *cam + i; for ( j = 0; tmplist[i][j] != ’\0’; j++ ) if ( tmplist[i][j] == ’;’ ) { tmplist[i][j] = ’\0’; break; } tmpcam->domain = domain; switch ( domain ) { case FLIDOMAIN_PARALLEL_PORT: tmpcam->dname = "parallel port"; break; case FLIDOMAIN_USB: tmpcam->dname = "USB"; break; case FLIDOMAIN_SERIAL: tmpcam->dname = "serial"; break; case FLIDOMAIN_INET: tmpcam->dname = "inet"; break; default: tmpcam->dname = "Unknown domain"; break; } tmpcam->name = strdup ( tmplist[i] ); } numcams += cams; } TRYFUNC ( FLIFreeList, tmplist ); printf ( "Encontre %d camaras \n",numcams ); return numcams; Here is the call graph for this function: FLIFreeList findcams FLIList Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 56 4.3.1.2 118 { 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 File Documentation int findfilters (flidomain_t domain, cam_t ∗∗ cam) long r; char **tmplist; int numcams = 0; printf ( "\nfinding filter wheels\n" ); TRYFUNC ( FLIList, domain | FLIDEVICE_FILTERWHEEL, &tmplist ); printf("list %d \n",tmplist); printf("list %d \n",tmplist[0]); if ( tmplist != NULL && tmplist[0] != NULL ) { int i, cams = 0; for ( i = 0; tmplist[i] != NULL; i++ ) cams++; if ( ( *cam = (cam_t*)realloc ( *cam, ( numcams + cams ) * sizeof ( cam_t ) ) ) == NULL ) err ( 1, "realloc() failed" ); for ( i = 0; tmplist[i] != NULL; i++ ) { int j; cam_t *tmpcam = *cam + i; for ( j = 0; tmplist[i][j] != ’\0’; j++ ) if ( tmplist[i][j] == ’;’ ) { tmplist[i][j] = ’\0’; break; } tmpcam->domain = domain; switch ( domain ) { case FLIDOMAIN_PARALLEL_PORT: tmpcam->dname = "parallel port"; break; case FLIDOMAIN_USB: tmpcam->dname = "USB"; break; case FLIDOMAIN_SERIAL: tmpcam->dname = "serial"; break; case FLIDOMAIN_INET: tmpcam->dname = "inet"; break; default: tmpcam->dname = "Unknown domain"; break; } tmpcam->name = strdup ( tmplist[i] ); } } numcams += cams; else { printf ( "No Encontre NADA \n" ); } Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 4.3 fli_call.c File Reference 182 183 184 185 186 187 } 57 TRYFUNC ( FLIFreeList, tmplist ); printf ( "Encontre %d camaras \n",numcams ); return numcams; Here is the call graph for this function: FLIFreeList findfilters FLIList 4.3.1.3 92 { 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 } int writeraw (char ∗ filename, int width, int height, void ∗ data) int fd, size, err; if ( ( fd = open ( filename, O_WRONLY | O_CREAT | /* O_EXCL */ O_TRUNC, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH ) ) == -1 ) { warn ( "open(%s) failed", filename ); return -errno; } size = width * height * sizeof ( u_int16_t ); if ( ( err = write ( fd, data, size ) ) != size ) { warn ( "write() failed" ); err = -errno; } else err = 0; close ( fd ); return err; Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 58 File Documentation 4.4 fli_call.h File Reference This graph shows which files directly or indirectly include this file: fli_call.h fli.h fli_call.c fli_server2.cpp Classes • struct cam_t Defines • • • • #define TRYFUNC(f,...) #define info(format, args...) printf("%s: " format "\n", __progname, ## args) #define warnc(c, format, args...) warnx(format ": %s", ## args, strerror(c)) #define LIBVERSIZ 1024 4.4.1 Define Documentation 4.4.1.1 #define info(format, args...) printf("%s: " format "\n", __progname, ## args) 4.4.1.2 #define LIBVERSIZ 1024 4.4.1.3 #define TRYFUNC(f, ...) Value: do { if ((r = f(__VA_ARGS__))) warnc(-r, #f "() failed"); } while (0) 4.4.1.4 \ \ \ #define warnc(c, format, args...) warnx(format ": %s", ## args, strerror(c)) Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 4.5 fli_server2.cpp File Reference 59 4.5 fli_server2.cpp File Reference #include <iostream> #include <cstdlib> #include <pthread.h> #include <string.h> #include <string> #include <list> #include <ctype.h> #include <signal.h> #include <semaphore.h> #include "server.h" #include "fli.h" #include "libfli.h" Include dependency graph for fli_server2.cpp: fli_server2.cpp iostream cstdlib pthread.h string.h list string ctype.h sys/time.h signal.h arpa/inet.h semaphore.h server.h sys/socket.h fli.h netinet/in.h sys/types.h Defines • • • • #define PORT 9710 #define MyVersion "2.12" #define TRUE 1 #define FALSE 0 Functions • • • • • void ∗ onthread_procesa_mando (void ∗arg) int procesa_mando (int myfd, char ∗txt) void casi_expone (char ∗params, int myfd) void test () int main (int argc, char ∗argv[ ]) Variables • server red • pthread_t thread_red Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen stdio.h libfli.h fli_call.h 60 File Documentation • • • • • • • pthread_mutex_t mutex_busy void ∗ t_result int res pthread_t thread_mando list< micliente > lista list< micliente >::iterator i FLI ccd 4.5.1 Define Documentation 4.5.1.1 #define FALSE 0 4.5.1.2 #define MyVersion "2.12" 4.5.1.3 #define PORT 9710 4.5.1.4 #define TRUE 1 4.5.2 Function Documentation 4.5.2.1 void casi_expone (char ∗ params, int myfd) 426 { 427 float t; 428 char mensaje[200]; 429 int rx; 430 int minn=70000, maxx=0,saturated=0; 431 double mean,stdev; 432 int error; 433 434 strcpy ( mensaje,params ); 435 cout <<"En casi expone con params = "<<mensaje<<endl; 436 437 438 //ETIME=100 XSIZE=100 YSIZE=100 CBIN=1 RBIN=1 CORG=0 RORG=0 DARK=0 LO OP=1 439 //ETIME=100 XSIZE=2184 YSIZE=1472 CBIN=1 RBIN=1 CORG=0 RORG=0 DARK=0 440 rx=sscanf ( mensaje,"ETIME=%d XSIZE=%d YSIZE=%d CBIN=%d RBIN=%d CORG=%d RORG=%d DARK=%d "\ 441 ,&ccd.etime,&ccd.cols,&ccd.rows,&ccd.cbin,&ccd.rbin,&ccd. corg,&ccd.rorg,&ccd.dark ); 442 cout <<"Tengo "<<rx<<" Parametros \n"; 443 444 ccd.showinfo(); 445 446 if ( !ccd.ccd_init ) 447 { 448 cout <<"No has hecho el INIT CCDTYPE ....SOB \n"; 449 ccd.init ( myfd ); 450 } 451 /* 452 // revisa que el numero de columnas y renglones sea par 453 if ( ccd.cols % 2 != 0 ) ccd.cols--; //quitarle un numero para ha cerlo par 454 if ( ccd.rows % 2 != 0 ) ccd.rows--; //quitarle un numero para ha cerlo par 455 */ 456 ccd.update(); //actualiza varios parametros 457 458 if ( ccd.maxpixels==ccd.imagePixels ) Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 4.5 fli_server2.cpp File Reference 459 { 460 ccd.full_image=TRUE; 461 cout << "Full image Request!" <<endl; 462 } 463 else 464 { 465 ccd.full_image=FALSE; 466 cout << "ROI image Request!" <<endl; 467 } 468 cout<<"Max pixels= "<<ccd.maxpixels<<endl; 469 cout<<"Img pixels= "<<ccd.imagePixels<<endl; 470 471 //**************************************** 472 ccd.cancela=!ccd.expose ( ccd.etime,myfd ); 473 474 if ( !ccd.cancela ) 475 { 476 sprintf ( mensaje,"BINARIO %d \n",ccd.imagePixels ); 477 red.responde_cliente ( mensaje,myfd ); 478 479 //mandar la temperatura 480 t=ccd.lee_temperatura(); 481 sprintf ( mensaje,"LEE_TEMP %2.1f\n",t ); 482 red.responde_cliente ( mensaje,myfd ); 483 484 //V0.97 485 if ( ccd.do_deinterlace ) 486 { 487 cout <<"Vamos hacer deinterlace por la lectura DUAL"<<end l; 488 error=ccd.deinterlace ( ccd.cols, ccd.rows ); 489 490 if ( error<0 ) 491 { 492 cout <<"deinterlace error= "<<ccd.error_string<<e ndl; 493 } 494 } else cout <<"Usamos solo un canal de salida \n"; 495 496 if ( ccd.do_estadistica ) 497 { 498 ccd.estadistica ( &minn,&maxx,&mean, &stdev, &saturated ) ; 499 //printf ( "Estadistica min=%d, max=%d, mean=%3.2f stdev= %3.2f saturated= %d\n",minn,maxx,mean,stdev,saturated ); 500 sprintf ( mensaje,"ESTADISTICA min=%d, max=%d, mean=%3.2f stdev=%3.2f saturated=%d\n",minn,maxx,mean,stdev,saturated ); 501 //cout <<mensaje; 502 red.responde_cliente ( mensaje,myfd ); 503 } else cout <<"No vamos hacer estadistica \n"; 504 } 505 else 506 { 507 strcpy ( mensaje,"CANCELADO \n" ); 508 cout <<mensaje; 509 red.responde_cliente ( mensaje,myfd ); 510 } 511 512 //**************************************** 513 ccd.cancela=false; 514 printf ( "\n Expose DONE! \n" ); 515 red.responde_cliente ( ( char * ) "TERMINE \n",myfd ); 516 } Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 61 62 File Documentation Here is the call graph for this function: FLIGrabRow FLISetExposureTime FLISetFrameType FLISetHBin FLISetVBin FLI::deinterlace FLICancelExposure FLI::estadistica FLIExposeFrame FLI::expose FLIGetExposureStatus FLI::showinfo FLISetImageArea casi_expone server::responde_cliente FLISetNFlushes FLIFreeList findcams FLIList FLIGetArrayArea FLIGetFWRevision FLI::init FLIGetHWRevision FLI::lee_temperatura FLIGetLibVersion FLI::update FLIGetModel FLIGetPixelSize FLIGetVisibleArea FLIOpen FLISetBitDepth FLIGetTemperature 4.5.2.2 118 { 119 120 121 122 123 124 int main (int argc, char ∗ argv[ ]) //cam_t *cam = NULL; int mycliente; pthread_attr_t tattr; system ( "clear" ); cout << "\nUNAM-IA-OAN ENSENADA" << endl; Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 4.5 fli_server2.cpp File Reference 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 63 cout << "\nHello, world!, FLI CaM Server is running, "<<MyVersion l<< endl; cout << "2011 By E. Colorado " << endl; red.procesando=FALSE; red.busy=FALSE; << end //control de procesos en thread //inializar RED tipo servidor red.salida=false; red.init ( PORT ); cout <<"Ready using Sever port: "<<PORT<<endl; cout <<"looping..."; red.op=111; //modificar para que no se cicle //thread y mutex res=pthread_mutex_init ( &mutex_busy,NULL ); if ( res!=0 ) { perror ( "Fallo Mutex" ); exit ( EXIT_FAILURE ); } //atributos del thread pthread_attr_init ( &tattr ); pthread_attr_setdetachstate ( &tattr,PTHREAD_CREATE_DETACHED ); do { cout << "main red checa \n"; mycliente=red.checa(); //espera aqui hast que exista dato //cout << "Recibi de red= "<<red.instruccion<<endl; //generar nuevo thread res=pthread_create ( &thread_mando,&tattr,onthread_procesa_mando, ( void * ) mycliente ); if ( res!=0 ) { perror ( "Fallo Thread onthread_procesa_mando" ); exit ( EXIT_FAILURE ); } cout <<"salida= "<<red.salida<<endl; cout <<"Thread onthread_procesa_mando OK"<<endl; 159 160 161 162 163 164 165 166 167 } 168 while ( !red.salida ); 169 170 //cerrar todo 171 pthread_mutex_destroy ( &mutex_busy ); 172 cout << "mutex destroy \n" ; 173 red.netclose(); 174 cout << "red close \n" ; 175 176 cout <<"\n FLI Server DONE! \n"; 177 178 return EXIT_SUCCESS; 179 } Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 64 File Documentation Here is the call graph for this function: FLI::showinfo FLI::expose FLISetImageArea FLI::pon_temperatura FLISetTemperature FLI::estadistica server::responde_cliente server::checa FLIGetLibVersion FLI::manda_imagen server::init main casi_expone FLI::update FLISetCameraMode FLI::deinterlace FLIGetModel server::netclose FLI::SetMode FLIGetPixelSize onthread_procesa_mando FLIGetVisibleArea FLISetBitDepth FLI::init FLISetNFlushes FLI::lee_temperatura findcams procesa_mando FLIGetArrayArea FLI::get_filter_pos FLIGetFilterPos 74 { 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 FLI::init_filters FLIGetHWRevision FLISetFilterPos FLIGetTemperature FLI::close FLI::set_filter_pos FLI::GetMode FLIClose FLIOpen test FLIGetCameraMode findfilters FLI::GetMode_String 4.5.2.3 FLIGetFWRevision FLI::lee_cooler_power FLIGetCoolerPower FLI::lee_temperatura_base FLIReadTemperature FLIGetCameraModeString void ∗ onthread_procesa_mando (void ∗ arg) int myfd; char txt[200]; int local; int i; bool resp=TRUE; //ignorar senales signal ( SIGCHLD, SIG_IGN ); signal ( SIGPIPE, SIG_IGN ); //traernos cliente nuevo de los argumentos local= ( int ) arg; myfd=local; cout <<"Cliente local es "<<myfd <<endl; memset ( txt,0,200 ); //if ( ccd.debug ) cout <<"En thread procesa_mando"<<endl; //LEER LO DE LA RED cout <<"Voy a leer de red hasta "<<sizeof ( txt ) <<" char "<<endl; i=read ( myfd,&txt,sizeof ( txt ) ); cout <<"Lei de red "<<i<< " ->"<<txt<<endl; Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 4.5 fli_server2.cpp File Reference 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 } 65 resp=procesa_mando ( myfd,txt ); //cierra conexion del cliente if ( resp ) red.responde_cliente ( ( char * ) "CLOSE \n",myfd ); usleep ( 200000 ); cout <<"Cerrando socket con cliente...\n"; close ( myfd ); cout << "-------------------------------"<<endl ; //if ( ccd.debug ) cout << "thread procesa_mando exit \n" ; //memset ( txt,0,200 ); //esperar un rato a que cierre el socket sleep ( 5 ); pthread_exit ( 0 ); Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 66 File Documentation Here is the call graph for this function: FLI::showinfo FLIExposeFrame FLIGetExposureStatus FLIGrabRow FLI::expose FLICancelExposure FLISetImageArea FLIGetFWRevision FLIGetHWRevision FLIGetLibVersion FLIGetModel casi_expone FLI::init FLIGetPixelSize FLI::deinterlace FLIGetVisibleArea FLI::estadistica FLISetBitDepth FLI::update FLISetNFlushes FLI::lee_temperatura findcams FLIGetArrayArea FLI::SetMode FLIGetTemperature FLISetCameraMode server::responde_cliente onthread_procesa_mando FLIOpen FLIGetFilterPos FLI::get_filter_pos procesa_mando FLI::init_filters FLI::set_filter_pos FLI::close FLIClose FLI::GetMode FLIGetCameraMode findfilters FLISetFilterPos test FLI::GetMode_String FLI::lee_cooler_power FLIGetCoolerPower FLI::lee_temperatura_base FLIReadTemperature FLIGetCameraModeString FLI::manda_imagen FLI::pon_temperatura FLISetTemperature Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 4.5 fli_server2.cpp File Reference 4.5.2.4 183 { 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 67 int procesa_mando (int myfd, char ∗ txt) static char *comando,*parametro; int r,j,i; char mensaje[200]; double f; int resp =TRUE; cout <<myfd<<" <- "<<txt<<endl; r=strlen ( txt ); cout <<"llegaron "<<r<<" datos \n"; if ( r<3 ) { cout <<"No llegaron suficientes datos !!!!!!!\n"; return resp; } //pasar los datos a mayusculas for ( i = 0; txt[i]; i++ ) txt[i] = toupper ( txt[i] ); parametro=NULL; //para que no haya basura comando=NULL; comando = strtok ( txt," " ); cout <<"comando="<<comando<<endl; parametro=strtok ( NULL,"\n" ); if ( parametro!=NULL ) { cout <<"parametros="<<parametro<<endl; } r=strlen ( comando ); cout <<r<<" lenght"<<endl; red.op=100; j=strcmp ( comando,"SALIR" );if ( !j ) j=strcmp ( comando,"INIT" ); if ( !j ) j=strcmp ( comando,"EXPONE" ); if ( !j ) j=strcmp ( comando,"GET_TEMP" );if ( !j ) j=strcmp ( comando,"LEE_TEMP" );if ( !j ) j=strcmp ( comando,"SET_TEMP" );if ( !j ) //j=strcmp ( comando,"GET_FULL" );if ( !j ) j=strcmp ( comando,"MANDABIN" );if ( !j ) j=strcmp ( comando,"CLOSE" ); if ( !j ) j=strcmp ( comando,"CANCELA" ); if ( !j ) j=strcmp ( comando,"STATUS" ); if ( !j ) j=strcmp ( comando,"ESTATUS" ); if ( !j ) j=strcmp ( comando,"TEST" ); if ( !j ) //modos de salida y velocidad de la camara j=strcmp ( comando,"SET_CAM_MODE" ); if ( !j j=strcmp ( comando,"GET_CAM_MODE" ); if ( !j j=strcmp ( comando,"GET_CAM_STRING" ); if ( !j //V2.1 j=strcmp ( comando,"LEE_TEMP_BASE" );if ( !j ) j=strcmp ( comando,"LEE_POWER" );if ( !j ) //V2.12 j=strcmp ( comando,"INIT_FILTERS" );if ( !j ) j=strcmp ( comando,"SET_FILTER_POS" );if ( !j ) j=strcmp ( comando,"GET_FILTER_POS" );if ( !j ) printf ( " ...(red.op=%d)\n",red.op ); switch ( red.op ) { case 0: Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen red.op=0; red.op=1; red.op=2; red.op=3; red.op=3; red.op=4; red.op=5; red.op=6; red.op=7; red.op=8; red.op=9; red.op=9; red.op=10; ) red.op=11; ) red.op=12; ) red.op=13; red.op=14; red.op=15; red.op=16; red.op=17; red.op=18; 68 File Documentation 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 { printf ( "Hay que salir \n" ); red.salida=true; ccd.close(); break; } case 1: { printf ( "INIT \n" ); ccd.init ( myfd ); break; } case 2: { //EXPONE //realmente no necesito el mutex ? printf ( "expone \n" ); pthread_mutex_lock ( &mutex_busy ); ccd.busy=TRUE; pthread_mutex_unlock ( &mutex_busy ); casi_expone ( parametro,myfd ); pthread_mutex_lock ( &mutex_busy ); ccd.busy=FALSE; pthread_mutex_unlock ( &mutex_busy ); break; } case 3: { //temp cout << "Leyendo temperatura del CCD" << endl; if ( !ccd.busy ) { f = ccd.lee_temperatura(); } else { f=ccd.ccdtemp; cout <<"CCD ocupado, te voy a dar la Temp. anteri or.. \n"; 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 } sprintf ( mensaje,"LEE_TEMP %2.1f\n",f ); red.responde_cliente ( mensaje,myfd ); cout << "CCD Temp=" << f<<endl; break; } case 4: { printf ( "set temp \n" ); sscanf ( parametro,"%lf",&f ); printf ( "set temp to %3.2lf\n",f ); ccd.pon_temperatura ( f ); break; } case 6: { //MANDABIN cout <<"Vamos hacer mandabin \n"; ccd.manda_imagen ( myfd ); resp=FALSE; break; } case 7: { Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 4.5 fli_server2.cpp File Reference 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 printf ( "close fli driver \n" ); ccd.close( ); break; } case 8: { cout<<"CANCELANDO!!!!!!!!!!!!!!!!!!!"<<endl; ccd.cancela=TRUE; break; } case 9: { cout<<"Mandando Status:"<<endl; if ( ccd.busy ) strcpy ( mensaje,"BUSY \n" ); else strcpy ( mensaje,"READY \n" ); red.responde_cliente ( mensaje,myfd ); break; } case 10: test(); break; case 11: printf ( "set cam mode \n" ); sscanf ( parametro,"%d",&i ); printf ( "set cam mode %d\n",i ); ccd.SetMode ( i ); case 12: printf ( "get cam mode \n" ); i=ccd.GetMode(); sprintf ( mensaje,"CAM_MODE %d\n",i ); cout <<mensaje; red.responde_cliente ( mensaje,myfd ); break; case 13: sscanf ( parametro,"%d",&i ); printf ( "get cam mode string %d\n",i ); char *t; t=ccd.GetMode_String ( i ); sprintf ( mensaje,"CAM_MODE_STRING %s\n",t ); cout <<mensaje; red.responde_cliente ( mensaje,myfd ); break; case 14: { //temp_base cout << "Leyendo temperatura de la base del CCD" << endl; 361 362 363 364 365 366 367 368 if ( !ccd.busy ) { f = ccd.lee_temperatura_base(); } else { f=ccd.basetemp; cout <<"CCD ocupado, te voy a dar la Temp. base a nterior.. \n"; 369 370 371 372 373 374 375 376 377 378 } sprintf ( mensaje,"LEE_TEMP_BASE %2.1f\n",f ); red.responde_cliente ( mensaje,myfd ); cout << "CCD Base Temp=" << f<<endl; break; } case 15: { //power cout << "Leyendo el cooler power" << endl; Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 69 70 File Documentation 379 380 381 382 383 384 385 386 if ( !ccd.busy ) { f = ccd.lee_cooler_power(); } else { f=ccd.power; cout <<"CCD ocupado, te voy a dar el power anteri or.. \n"; 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 } } sprintf ( mensaje,"LEE_POWER %2.1f\n",f ); red.responde_cliente ( mensaje,myfd ); cout << "CCD cooler power=" << f<<endl; break; } case 16: printf ( "INIT Filters\n" ); ccd.init_filters ( myfd ); break; case 17: printf ( "Move Filters ... \n" ); sscanf ( parametro,"%d",&i ); printf ( "to: %d \n",i ); ccd.set_filter_pos(myfd,i); break; case 18: printf ( "get Filters pos ... \n" ); ccd.get_filter_pos(myfd); break; case 100: { printf ( "!!!!!Mando no Reconocido... \n" ); strcpy ( mensaje,"!!!!!Mando no Reconocido... \n" ); red.responde_cliente ( mensaje,myfd ); break; } } ; //end switch return resp; Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 4.5 fli_server2.cpp File Reference 71 Here is the call graph for this function: FLIGetExposureStatus FLIGrabRow FLISetExposureTime FLICancelExposure FLI::expose FLIExposeFrame FLI::showinfo FLISetImageArea FLISetBitDepth FLISetNFlushes findcams casi_expone FLI::update FLIGetArrayArea FLI::deinterlace FLIGetFWRevision FLI::estadistica FLIGetHWRevision FLI::init FLIGetLibVersion FLIGetModel FLI::lee_temperatura FLIGetPixelSize FLIGetVisibleArea FLIGetTemperature FLIGetFilterPos server::responde_cliente FLI::get_filter_pos FLIOpen FLI::init_filters findfilters FLI::set_filter_pos FLI::close FLIClose FLI::GetMode FLIGetCameraMode FLISetFilterPos procesa_mando FLI::GetMode_String test FLI::lee_cooler_power FLIGetCoolerPower FLI::lee_temperatura_base FLIReadTemperature FLI::manda_imagen FLI::pon_temperatura FLISetTemperature FLI::SetMode FLISetCameraMode Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen FLIGetCameraModeString 72 4.5.2.5 519 { 520 521 522 523 524 525 526 527 } File Documentation void test () cout <<"modo 0 cout <<"modo 1 cout <<"modo 2 //cout <<"modo "<<ccd.GetMode_String ( 0 ) <<endl; "<<ccd.GetMode_String ( 1 ) <<endl; "<<ccd.GetMode_String ( 2 ) <<endl; 3 "<<ccd.GetMode_String(3)<<endl; Here is the call graph for this function: test FLI::GetMode_String 4.5.3 Variable Documentation 4.5.3.1 FLI ccd 4.5.3.2 list<micliente>::iterator i 4.5.3.3 list<micliente> lista 4.5.3.4 pthread_mutex_t mutex_busy 4.5.3.5 server red 4.5.3.6 int res 4.5.3.7 void∗ t_result 4.5.3.8 pthread_t thread_mando 4.5.3.9 pthread_t thread_red FLIGetCameraModeString Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 4.6 libfli.h File Reference 73 4.6 libfli.h File Reference #include <sys/types.h> Include dependency graph for libfli.h: libfli.h sys/types.h This graph shows which files directly or indirectly include this file: libfli.h fli.h fli_call.c fli_server2.cpp Defines • • • • • • • • • • • • • • • • • • • • • #define DllImport __declspec( dllimport ) #define DllExport __declspec( dllexport ) #define FLI_INVALID_DEVICE (-1) #define FLIDOMAIN_NONE (0x00) #define FLIDOMAIN_PARALLEL_PORT (0x01) #define FLIDOMAIN_USB (0x02) #define FLIDOMAIN_SERIAL (0x03) #define FLIDOMAIN_INET (0x04) #define FLIDOMAIN_SERIAL_19200 (0x05) #define FLIDOMAIN_SERIAL_1200 (0x06) #define FLIDEVICE_NONE (0x000) #define FLIDEVICE_CAMERA (0x100) #define FLIDEVICE_FILTERWHEEL (0x200) #define FLIDEVICE_FOCUSER (0x300) #define FLIDEVICE_HS_FILTERWHEEL (0x0400) #define FLIDEVICE_RAW (0x0f00) #define FLIDEVICE_ENUMERATE_BY_CONNECTION (0x8000) #define FLI_FRAME_TYPE_NORMAL (0) #define FLI_FRAME_TYPE_DARK (1) #define FLI_FRAME_TYPE_FLOOD (2) #define FLI_FRAME_TYPE_RBI_FLUSH (FLI_FRAME_TYPE_FLOOD | FLI_FRAME_TYPE_DARK) • #define FLI_MODE_8BIT (0) • #define FLI_MODE_16BIT (1) Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 74 File Documentation • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • #define FLI_SHUTTER_CLOSE (0x0000) #define FLI_SHUTTER_OPEN (0x0001) #define FLI_SHUTTER_EXTERNAL_TRIGGER (0x0002) #define FLI_SHUTTER_EXTERNAL_TRIGGER_LOW (0x0002) #define FLI_SHUTTER_EXTERNAL_TRIGGER_HIGH (0x0004) #define FLI_SHUTTER_EXTERNAL_EXPOSURE_CONTROL (0x0008) #define FLI_BGFLUSH_STOP (0x0000) #define FLI_BGFLUSH_START (0x0001) #define FLI_TEMPERATURE_INTERNAL (0x0000) #define FLI_TEMPERATURE_EXTERNAL (0x0001) #define FLI_TEMPERATURE_CCD (0x0000) #define FLI_TEMPERATURE_BASE (0x0001) #define FLI_CAMERA_STATUS_UNKNOWN (0xffffffff) #define FLI_CAMERA_STATUS_MASK (0x000000ff) #define FLI_CAMERA_STATUS_IDLE (0x00) #define FLI_CAMERA_STATUS_WAITING_FOR_TRIGGER (0x01) #define FLI_CAMERA_STATUS_EXPOSING (0x02) #define FLI_CAMERA_STATUS_READING_CCD (0x03) #define FLI_CAMERA_DATA_READY (0x80000000) #define FLI_FOCUSER_STATUS_UNKNOWN (0xffffffff) #define FLI_FOCUSER_STATUS_HOMING (0x00000004) #define FLI_FOCUSER_STATUS_MOVING_IN (0x00000001) #define FLI_FOCUSER_STATUS_MOVING_OUT (0x00000002) #define FLI_FOCUSER_STATUS_MOVING_MASK (0x00000007) #define FLI_FOCUSER_STATUS_HOME (0x00000080) #define FLI_FOCUSER_STATUS_LIMIT (0x00000040) #define FLI_FOCUSER_STATUS_LEGACY (0x10000000) #define FLIDEBUG_NONE (0x00) #define FLIDEBUG_INFO (0x01) #define FLIDEBUG_WARN (0x02) #define FLIDEBUG_FAIL (0x04) #define FLIDEBUG_ALL (FLIDEBUG_INFO | FLIDEBUG_WARN | FLIDEBUG_FAIL) #define FLI_IO_P0 (0x01) #define FLI_IO_P1 (0x02) #define FLI_IO_P2 (0x04) #define FLI_IO_P3 (0x08) #define FLI_FAN_SPEED_OFF (0x00) #define FLI_FAN_SPEED_ON (0xffffffff) #define LIBFLIAPI long Typedefs • • • • • • • • typedef long flidev_t typedef long flidomain_t typedef long fliframe_t typedef long flibitdepth_t typedef long flishutter_t typedef long flibgflush_t typedef long flichannel_t typedef long flidebug_t Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 4.6 libfli.h File Reference • • • • typedef long flimode_t typedef long flistatus_t typedef long flitdirate_t typedef long flitdiflags_t Functions • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • LIBFLIAPI FLIOpen (flidev_t ∗dev, char ∗name, flidomain_t domain) LIBFLIAPI FLISetDebugLevel (char ∗host, flidebug_t level) LIBFLIAPI FLIClose (flidev_t dev) LIBFLIAPI FLIGetLibVersion (char ∗ver, size_t len) LIBFLIAPI FLIGetModel (flidev_t dev, char ∗model, size_t len) LIBFLIAPI FLIGetPixelSize (flidev_t dev, double ∗pixel_x, double ∗pixel_y) LIBFLIAPI FLIGetHWRevision (flidev_t dev, long ∗hwrev) LIBFLIAPI FLIGetFWRevision (flidev_t dev, long ∗fwrev) LIBFLIAPI FLIGetArrayArea (flidev_t dev, long ∗ul_x, long ∗ul_y, long ∗lr_x, long ∗lr_y) LIBFLIAPI FLIGetVisibleArea (flidev_t dev, long ∗ul_x, long ∗ul_y, long ∗lr_x, long ∗lr_y) LIBFLIAPI FLISetExposureTime (flidev_t dev, long exptime) LIBFLIAPI FLISetImageArea (flidev_t dev, long ul_x, long ul_y, long lr_x, long lr_y) LIBFLIAPI FLISetHBin (flidev_t dev, long hbin) LIBFLIAPI FLISetVBin (flidev_t dev, long vbin) LIBFLIAPI FLISetFrameType (flidev_t dev, fliframe_t frametype) LIBFLIAPI FLICancelExposure (flidev_t dev) LIBFLIAPI FLIGetExposureStatus (flidev_t dev, long ∗timeleft) LIBFLIAPI FLISetTemperature (flidev_t dev, double temperature) LIBFLIAPI FLIGetTemperature (flidev_t dev, double ∗temperature) LIBFLIAPI FLIGetCoolerPower (flidev_t dev, double ∗power) LIBFLIAPI FLIGrabRow (flidev_t dev, void ∗buff, size_t width) LIBFLIAPI FLIExposeFrame (flidev_t dev) LIBFLIAPI FLIFlushRow (flidev_t dev, long rows, long repeat) LIBFLIAPI FLISetNFlushes (flidev_t dev, long nflushes) LIBFLIAPI FLISetBitDepth (flidev_t dev, flibitdepth_t bitdepth) LIBFLIAPI FLIReadIOPort (flidev_t dev, long ∗ioportset) LIBFLIAPI FLIWriteIOPort (flidev_t dev, long ioportset) LIBFLIAPI FLIConfigureIOPort (flidev_t dev, long ioportset) LIBFLIAPI FLILockDevice (flidev_t dev) LIBFLIAPI FLIUnlockDevice (flidev_t dev) LIBFLIAPI FLIControlShutter (flidev_t dev, flishutter_t shutter) LIBFLIAPI FLIControlBackgroundFlush (flidev_t dev, flibgflush_t bgflush) LIBFLIAPI FLISetDAC (flidev_t dev, unsigned long dacset) LIBFLIAPI FLIList (flidomain_t domain, char ∗∗∗names) LIBFLIAPI FLIFreeList (char ∗∗names) LIBFLIAPI FLISetFilterPos (flidev_t dev, long filter) LIBFLIAPI FLIGetFilterPos (flidev_t dev, long ∗filter) LIBFLIAPI FLIGetFilterCount (flidev_t dev, long ∗filter) LIBFLIAPI FLIStepMotor (flidev_t dev, long steps) LIBFLIAPI FLIStepMotorAsync (flidev_t dev, long steps) LIBFLIAPI FLIGetStepperPosition (flidev_t dev, long ∗position) LIBFLIAPI FLIGetStepsRemaining (flidev_t dev, long ∗steps) LIBFLIAPI FLIHomeFocuser (flidev_t dev) Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 75 76 File Documentation • LIBFLIAPI FLICreateList (flidomain_t domain) • LIBFLIAPI FLIDeleteList (void) • LIBFLIAPI FLIListFirst (flidomain_t ∗domain, char ∗filename, size_t fnlen, char ∗name, size_t namelen) • LIBFLIAPI FLIListNext (flidomain_t ∗domain, char ∗filename, size_t fnlen, char ∗name, size_t namelen) • LIBFLIAPI FLIReadTemperature (flidev_t dev, flichannel_t channel, double ∗temperature) • LIBFLIAPI FLIGetFocuserExtent (flidev_t dev, long ∗extent) • LIBFLIAPI FLIUsbBulkIO (flidev_t dev, int ep, void ∗buf, long ∗len) • LIBFLIAPI FLIGetDeviceStatus (flidev_t dev, long ∗status) • LIBFLIAPI FLIGetCameraModeString (flidev_t dev, flimode_t mode_index, char ∗mode_string, size_t siz) • LIBFLIAPI FLIGetCameraMode (flidev_t dev, flimode_t ∗mode_index) • LIBFLIAPI FLISetCameraMode (flidev_t dev, flimode_t mode_index) • LIBFLIAPI FLIHomeDevice (flidev_t dev) • LIBFLIAPI FLIGrabFrame (flidev_t dev, void ∗buff, size_t buffsize, size_t ∗bytesgrabbed) • LIBFLIAPI FLISetTDI (flidev_t dev, flitdirate_t tdi_rate, flitdiflags_t flags) • LIBFLIAPI FLIGrabVideoFrame (flidev_t dev, void ∗buff, size_t size) • LIBFLIAPI FLIStopVideoMode (flidev_t dev) • LIBFLIAPI FLIStartVideoMode (flidev_t dev) • LIBFLIAPI FLIGetSerialString (flidev_t dev, char ∗serial, size_t len) • LIBFLIAPI FLIEndExposure (flidev_t dev) • LIBFLIAPI FLITriggerExposure (flidev_t dev) • LIBFLIAPI FLISetFanSpeed (flidev_t dev, long fan_speed) Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 4.6 libfli.h File Reference Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 77 78 File Documentation 4.6.1 Define Documentation 4.6.1.1 #define DllExport __declspec( dllexport ) 4.6.1.2 #define DllImport __declspec( dllimport ) 4.6.1.3 #define FLI_BGFLUSH_START (0x0001) 4.6.1.4 #define FLI_BGFLUSH_STOP (0x0000) 4.6.1.5 #define FLI_CAMERA_DATA_READY (0x80000000) 4.6.1.6 #define FLI_CAMERA_STATUS_EXPOSING (0x02) 4.6.1.7 #define FLI_CAMERA_STATUS_IDLE (0x00) 4.6.1.8 #define FLI_CAMERA_STATUS_MASK (0x000000ff) 4.6.1.9 #define FLI_CAMERA_STATUS_READING_CCD (0x03) 4.6.1.10 #define FLI_CAMERA_STATUS_UNKNOWN (0xffffffff) 4.6.1.11 #define FLI_CAMERA_STATUS_WAITING_FOR_TRIGGER (0x01) 4.6.1.12 #define FLI_FAN_SPEED_OFF (0x00) 4.6.1.13 #define FLI_FAN_SPEED_ON (0xffffffff) 4.6.1.14 #define FLI_FOCUSER_STATUS_HOME (0x00000080) 4.6.1.15 #define FLI_FOCUSER_STATUS_HOMING (0x00000004) 4.6.1.16 #define FLI_FOCUSER_STATUS_LEGACY (0x10000000) 4.6.1.17 #define FLI_FOCUSER_STATUS_LIMIT (0x00000040) 4.6.1.18 #define FLI_FOCUSER_STATUS_MOVING_IN (0x00000001) 4.6.1.19 #define FLI_FOCUSER_STATUS_MOVING_MASK (0x00000007) 4.6.1.20 #define FLI_FOCUSER_STATUS_MOVING_OUT (0x00000002) 4.6.1.21 #define FLI_FOCUSER_STATUS_UNKNOWN (0xffffffff) 4.6.1.22 #define FLI_FRAME_TYPE_DARK (1) 4.6.1.23 #define FLI_FRAME_TYPE_FLOOD (2) 4.6.1.24 #define FLI_FRAME_TYPE_NORMAL (0) 4.6.1.25 #define FLI_FRAME_TYPE_RBI_FLUSH (FLI_FRAME_TYPE_FLOOD | FLI_FRAME_TYPE_DARK) 4.6.1.26 #define FLI_INVALID_DEVICE (-1) Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen An opaque handle used by library functions to refer to FLI hardware. 4.6 libfli.h File Reference Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 79 80 File Documentation 4.6.1.27 #define FLI_IO_P0 (0x01) 4.6.1.28 #define FLI_IO_P1 (0x02) 4.6.1.29 #define FLI_IO_P2 (0x04) 4.6.1.30 #define FLI_IO_P3 (0x08) 4.6.1.31 #define FLI_MODE_16BIT (1) 4.6.1.32 #define FLI_MODE_8BIT (0) 4.6.1.33 #define FLI_SHUTTER_CLOSE (0x0000) 4.6.1.34 #define FLI_SHUTTER_EXTERNAL_EXPOSURE_CONTROL (0x0008) 4.6.1.35 #define FLI_SHUTTER_EXTERNAL_TRIGGER (0x0002) 4.6.1.36 #define FLI_SHUTTER_EXTERNAL_TRIGGER_HIGH (0x0004) 4.6.1.37 #define FLI_SHUTTER_EXTERNAL_TRIGGER_LOW (0x0002) 4.6.1.38 #define FLI_SHUTTER_OPEN (0x0001) 4.6.1.39 #define FLI_TEMPERATURE_BASE (0x0001) 4.6.1.40 #define FLI_TEMPERATURE_CCD (0x0000) 4.6.1.41 #define FLI_TEMPERATURE_EXTERNAL (0x0001) 4.6.1.42 #define FLI_TEMPERATURE_INTERNAL (0x0000) 4.6.1.43 #define FLIDEBUG_ALL (FLIDEBUG_INFO | FLIDEBUG_WARN | FLIDEBUG_FAIL) 4.6.1.44 #define FLIDEBUG_FAIL (0x04) 4.6.1.45 #define FLIDEBUG_INFO (0x01) 4.6.1.46 #define FLIDEBUG_NONE (0x00) 4.6.1.47 #define FLIDEBUG_WARN (0x02) 4.6.1.48 #define FLIDEVICE_CAMERA (0x100) 4.6.1.49 #define FLIDEVICE_ENUMERATE_BY_CONNECTION (0x8000) 4.6.1.50 #define FLIDEVICE_FILTERWHEEL (0x200) 4.6.1.51 #define FLIDEVICE_FOCUSER (0x300) 4.6.1.52 #define FLIDEVICE_HS_FILTERWHEEL (0x0400) 4.6.1.53 #define FLIDEVICE_NONE (0x000) Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 4.6.1.54 #define FLIDEVICE_RAW (0x0f00) 4.6.1.55 #define FLIDOMAIN_INET (0x04) 4.6.1.56 #define FLIDOMAIN_NONE (0x00) 4.6 libfli.h File Reference 81 See also FLIControlBackgroundFlush 4.6.2.2 typedef long flibitdepth_t The gray-scale bit depth for an FLI camera device. Valid bit depths are {FLI_MODE_8BIT} and {FLI_MODE_16BIT}. See also FLISetBitDepth 4.6.2.3 typedef long flichannel_t Type used to determine which temperature channel to read. Valid channel types are {FLI_TEMPERATURE_INTERNAL} and {FLI_TEMPERATURE_EXTERNAL}. See also FLIReadTemperature 4.6.2.4 typedef long flidebug_t Type specifying library debug levels. Valid debug levels are {FLIDEBUG_NONE}, {FLIDEBUG_INFO}, {FLIDEBUG_WARN}, and {FLIDEBUG_FAIL}. See also FLISetDebugLevel 4.6.2.5 typedef long flidev_t 4.6.2.6 typedef long flidomain_t The domain of an FLI device. This consists of a bitwise ORed combination of interface method and device type. Valid interfaces are {FLIDOMAIN_PARALLEL_PORT}, {FLIDOMAIN_USB}, {FLIDOMAIN_SERIAL}, and {FLIDOMAIN_INET}. Valid device types are {FLIDEVICE_CAMERA}, {FLIDOMAIN_FILTERWHEEL}, and {FLIDOMAIN_FOCUSER}. See also FLIOpen FLIList Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 82 File Documentation 4.6.2.7 typedef long fliframe_t The frame type for an FLI CCD camera device. Valid frame types are {FLI_FRAME_TYPE_NORMAL} and {FLI_FRAME_TYPE_DARK}. See also FLISetFrameType 4.6.2.8 typedef long flimode_t 4.6.2.9 typedef long flishutter_t Type used for shutter operations for an FLI camera device. Valid shutter types are {FLI_SHUTTER_CLOSE}, {FLI_SHUTTER_OPEN}, {FLI_SHUTTER_EXTERNAL_TRIGGER}, {FLI_SHUTTER_EXTERNAL_TRIGGER_LOW}, and {FLI_SHUTTER_EXTERNAL_TRIGGER_HIGH}. See also FLIControlShutter Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 4.6 libfli.h File Reference Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 83 84 File Documentation 4.6.2.10 typedef long flistatus_t 4.6.2.11 typedef long flitdiflags_t 4.6.2.12 typedef long flitdirate_t 4.6.3 Function Documentation 4.6.3.1 LIBFLIAPI FLICancelExposure (flidev_t dev) 4.6.3.2 LIBFLIAPI FLIClose (flidev_t dev) 4.6.3.3 LIBFLIAPI FLIConfigureIOPort (flidev_t dev, long ioportset) 4.6.3.4 LIBFLIAPI FLIControlBackgroundFlush (flidev_t dev, flibgflush_t bgflush) 4.6.3.5 LIBFLIAPI FLIControlShutter (flidev_t dev, flishutter_t shutter) 4.6.3.6 LIBFLIAPI FLICreateList (flidomain_t domain) 4.6.3.7 LIBFLIAPI FLIDeleteList (void) 4.6.3.8 LIBFLIAPI FLIEndExposure (flidev_t dev) 4.6.3.9 LIBFLIAPI FLIExposeFrame (flidev_t dev) 4.6.3.10 LIBFLIAPI FLIFlushRow (flidev_t dev, long rows, long repeat) 4.6.3.11 LIBFLIAPI FLIFreeList (char ∗∗ names) 4.6.3.12 LIBFLIAPI FLIGetArrayArea (flidev_t dev, long ∗ ul_x, long ∗ ul_y, long ∗ lr_x, long ∗ lr_y) 4.6.3.13 LIBFLIAPI FLIGetCameraMode (flidev_t dev, flimode_t ∗ mode_index) 4.6.3.14 LIBFLIAPI FLIGetCameraModeString (flidev_t dev, flimode_t mode_index, char ∗ mode_string, size_t siz) 4.6.3.15 LIBFLIAPI FLIGetCoolerPower (flidev_t dev, double ∗ power) 4.6.3.16 LIBFLIAPI FLIGetDeviceStatus (flidev_t dev, long ∗ status) 4.6.3.17 LIBFLIAPI FLIGetExposureStatus (flidev_t dev, long ∗ timeleft) 4.6.3.18 LIBFLIAPI FLIGetFilterCount (flidev_t dev, long ∗ filter) 4.6.3.19 LIBFLIAPI FLIGetFilterPos (flidev_t dev, long ∗ filter) 4.6.3.20 LIBFLIAPI FLIGetFocuserExtent (flidev_t dev, long ∗ extent) 4.6.3.21 LIBFLIAPI FLIGetFWRevision (flidev_t dev, long ∗ fwrev) 4.6.3.22 LIBFLIAPI FLIGetHWRevision (flidev_t dev, long ∗ hwrev) on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 4.6.3.23 LIBFLIAPI FLIGetLibVersion (char ∗ ver, Generated size_t len) 4.6.3.24 LIBFLIAPI FLIGetModel (flidev_t dev, char ∗ model, size_t len) 4.6.3.25 LIBFLIAPI FLIGetPixelSize (flidev_t dev, double ∗ pixel_x, double ∗ pixel_y) 4.7 server.cpp File Reference 85 4.7 server.cpp File Reference #include "server.h" #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <unistd.h> #include <sys/time.h> #include <sys/ioctl.h> #include <pthread.h> #include <signal.h> #include <semaphore.h> #include <iostream> #include <string.h> #include <string> #include <list> Include dependency graph for server.cpp: server.cpp server.h sys/time.h arpa/inet.h sys/types.h sys/socket.h stdlib.h netinet/in.h stdio.h string Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen unistd.h sys/ioctl.h pthread.h signal.h semaphore.h iostream string.h list 86 File Documentation 4.8 server.h File Reference #include <sys/time.h> #include <arpa/inet.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <stdio.h> #include <string> Include dependency graph for server.h: server.h sys/time.h arpa/inet.h sys/types.h sys/socket.h netinet/in.h stdio.h string This graph shows which files directly or indirectly include this file: server.h fli_server2.cpp server.cpp Classes • struct micliente • class server Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen Index ∼FLI FLI, 26 ∼server server, 43 _ERROR fli.h, 53 _NO_ERROR fli.h, 53 __progname fli.cpp, 52 basetemp FLI, 40 BUFF_SIZ fli.h, 53 busy FLI, 40 server, 46 cam_t, 23 dname, 23 domain, 23 name, 23 CANCELA server, 46 cancela FLI, 40 casi_expone fli_server2.cpp, 60 cbin FLI, 40 ccd fli_server2.cpp, 72 ccd_init FLI, 40 ccdtemp FLI, 40 checa server, 44 client_sockfd server, 46 close FLI, 26 cols FLI, 40 corg FLI, 40 dark FLI, 40 debug FLI, 40 server, 46 deinterlace FLI, 26 DllExport libfli.h, 78 DllImport libfli.h, 78 dname cam_t, 23 do_deinterlace FLI, 40 do_estadistica FLI, 40 domain cam_t, 23 error_string FLI, 40 estadistica FLI, 27 etime FLI, 40 expose FLI, 28 FALSE fli.h, 53 fli_server2.cpp, 60 fileSal server, 46 findcams fli.cpp, 48 fli_call.c, 54 findfilters fli.cpp, 50 fli_call.c, 55 FLI, 24 ∼FLI, 26 88 basetemp, 40 busy, 40 cancela, 40 cbin, 40 ccd_init, 40 ccdtemp, 40 close, 26 cols, 40 corg, 40 dark, 40 debug, 40 deinterlace, 26 do_deinterlace, 40 do_estadistica, 40 error_string, 40 estadistica, 27 etime, 40 expose, 28 FLI, 25 full_image, 40 get_filter_pos, 30 GetMode, 31 GetMode_String, 31 imagePixels, 40 imagesize, 40 init, 31 init_filters, 34 lee_cooler_power, 35 lee_temperatura, 35 lee_temperatura_base, 36 manda_imagen, 36 maxcols, 40 maxpixels, 40 maxrows, 40 model, 40 pon_temperatura, 36 power, 40 rbin, 40 rorg, 40 rows, 40 set_filter_pos, 37 SetMode, 37 showinfo, 37 tabla, 38 update, 38 v_cols, 40 v_corg, 40 v_rorg, 40 v_rows, 40 fli.cpp, 47 __progname, 52 findcams, 48 findfilters, 50 info, 48 INDEX LIBVERSIZ, 48 maxushort, 52 mutex_busy, 52 red, 52 TRYFUNC, 48 warnc, 48 writeraw, 51 fli.h, 53 _ERROR, 53 _NO_ERROR, 53 BUFF_SIZ, 53 FALSE, 53 TRUE, 53 FLI_BGFLUSH_START libfli.h, 78 FLI_BGFLUSH_STOP libfli.h, 78 fli_call.c, 54 findcams, 54 findfilters, 55 writeraw, 57 fli_call.h, 58 info, 58 LIBVERSIZ, 58 TRYFUNC, 58 warnc, 58 FLI_CAMERA_DATA_READY libfli.h, 78 FLI_CAMERA_STATUS_EXPOSING libfli.h, 78 FLI_CAMERA_STATUS_IDLE libfli.h, 78 FLI_CAMERA_STATUS_MASK libfli.h, 78 FLI_CAMERA_STATUS_READING_CCD libfli.h, 78 FLI_CAMERA_STATUS_UNKNOWN libfli.h, 78 FLI_CAMERA_STATUS_WAITING_FOR_TRIGGER libfli.h, 78 FLI_FAN_SPEED_OFF libfli.h, 78 FLI_FAN_SPEED_ON libfli.h, 78 FLI_FOCUSER_STATUS_HOME libfli.h, 78 FLI_FOCUSER_STATUS_HOMING libfli.h, 78 FLI_FOCUSER_STATUS_LEGACY libfli.h, 78 FLI_FOCUSER_STATUS_LIMIT libfli.h, 78 FLI_FOCUSER_STATUS_MOVING_IN Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen INDEX libfli.h, 78 FLI_FOCUSER_STATUS_MOVING_MASK libfli.h, 78 FLI_FOCUSER_STATUS_MOVING_OUT libfli.h, 78 FLI_FOCUSER_STATUS_UNKNOWN libfli.h, 78 FLI_FRAME_TYPE_DARK libfli.h, 78 FLI_FRAME_TYPE_FLOOD libfli.h, 78 FLI_FRAME_TYPE_NORMAL libfli.h, 78 FLI_FRAME_TYPE_RBI_FLUSH libfli.h, 78 FLI_INVALID_DEVICE libfli.h, 78 FLI_IO_P0 libfli.h, 78 FLI_IO_P1 libfli.h, 80 FLI_IO_P2 libfli.h, 80 FLI_IO_P3 libfli.h, 80 FLI_MODE_16BIT libfli.h, 80 FLI_MODE_8BIT libfli.h, 80 fli_server2.cpp, 59 casi_expone, 60 ccd, 72 FALSE, 60 i, 72 lista, 72 main, 62 mutex_busy, 72 MyVersion, 60 onthread_procesa_mando, 64 PORT, 60 procesa_mando, 66 red, 72 res, 72 t_result, 72 test, 72 thread_mando, 72 thread_red, 72 TRUE, 60 FLI_SHUTTER_CLOSE libfli.h, 80 FLI_SHUTTER_EXTERNAL_EXPOSURE_CONTROL libfli.h, 80 FLI_SHUTTER_EXTERNAL_TRIGGER Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 89 libfli.h, 80 FLI_SHUTTER_EXTERNAL_TRIGGER_HIGH libfli.h, 80 FLI_SHUTTER_EXTERNAL_TRIGGER_LOW libfli.h, 80 FLI_SHUTTER_OPEN libfli.h, 80 FLI_TEMPERATURE_BASE libfli.h, 80 FLI_TEMPERATURE_CCD libfli.h, 80 FLI_TEMPERATURE_EXTERNAL libfli.h, 80 FLI_TEMPERATURE_INTERNAL libfli.h, 80 flibgflush_t libfli.h, 80 flibitdepth_t libfli.h, 81 FLICancelExposure libfli.h, 84 flichannel_t libfli.h, 81 FLIClose libfli.h, 84 FLIConfigureIOPort libfli.h, 84 FLIControlBackgroundFlush libfli.h, 84 FLIControlShutter libfli.h, 84 FLICreateList libfli.h, 84 FLIDEBUG_ALL libfli.h, 80 FLIDEBUG_FAIL libfli.h, 80 FLIDEBUG_INFO libfli.h, 80 FLIDEBUG_NONE libfli.h, 80 flidebug_t libfli.h, 81 FLIDEBUG_WARN libfli.h, 80 FLIDeleteList libfli.h, 84 flidev_t libfli.h, 81 FLIDEVICE_CAMERA libfli.h, 80 FLIDEVICE_ENUMERATE_BY_CONNECTION libfli.h, 80 FLIDEVICE_FILTERWHEEL 90 libfli.h, 80 FLIDEVICE_FOCUSER libfli.h, 80 FLIDEVICE_HS_FILTERWHEEL libfli.h, 80 FLIDEVICE_NONE libfli.h, 80 FLIDEVICE_RAW libfli.h, 80 FLIDOMAIN_INET libfli.h, 80 FLIDOMAIN_NONE libfli.h, 80 FLIDOMAIN_PARALLEL_PORT libfli.h, 80 FLIDOMAIN_SERIAL libfli.h, 80 FLIDOMAIN_SERIAL_1200 libfli.h, 80 FLIDOMAIN_SERIAL_19200 libfli.h, 80 flidomain_t libfli.h, 81 FLIDOMAIN_USB libfli.h, 80 FLIEndExposure libfli.h, 84 FLIExposeFrame libfli.h, 84 FLIFlushRow libfli.h, 84 fliframe_t libfli.h, 81 FLIFreeList libfli.h, 84 FLIGetArrayArea libfli.h, 84 FLIGetCameraMode libfli.h, 84 FLIGetCameraModeString libfli.h, 84 FLIGetCoolerPower libfli.h, 84 FLIGetDeviceStatus libfli.h, 84 FLIGetExposureStatus libfli.h, 84 FLIGetFilterCount libfli.h, 84 FLIGetFilterPos libfli.h, 84 FLIGetFocuserExtent libfli.h, 84 FLIGetFWRevision INDEX libfli.h, 84 FLIGetHWRevision libfli.h, 84 FLIGetLibVersion libfli.h, 84 FLIGetModel libfli.h, 84 FLIGetPixelSize libfli.h, 84 FLIGetSerialString libfli.h, 84 FLIGetStepperPosition libfli.h, 84 FLIGetStepsRemaining libfli.h, 84 FLIGetTemperature libfli.h, 84 FLIGetVisibleArea libfli.h, 84 FLIGrabFrame libfli.h, 84 FLIGrabRow libfli.h, 84 FLIGrabVideoFrame libfli.h, 84 FLIHomeDevice libfli.h, 84 FLIHomeFocuser libfli.h, 84 FLIList libfli.h, 84 FLIListFirst libfli.h, 84 FLIListNext libfli.h, 84 FLILockDevice libfli.h, 84 flimode_t libfli.h, 82 FLIOpen libfli.h, 84 FLIReadIOPort libfli.h, 84 FLIReadTemperature libfli.h, 84 FLISetBitDepth libfli.h, 84 FLISetCameraMode libfli.h, 84 FLISetDAC libfli.h, 84 FLISetDebugLevel libfli.h, 84 FLISetExposureTime Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen INDEX libfli.h, 84 FLISetFanSpeed libfli.h, 84 FLISetFilterPos libfli.h, 84 FLISetFrameType libfli.h, 84 FLISetHBin libfli.h, 84 FLISetImageArea libfli.h, 84 FLISetNFlushes libfli.h, 84 FLISetTDI libfli.h, 84 FLISetTemperature libfli.h, 84 FLISetVBin libfli.h, 84 flishutter_t libfli.h, 82 FLIStartVideoMode libfli.h, 84 flistatus_t libfli.h, 82 FLIStepMotor libfli.h, 84 FLIStepMotorAsync libfli.h, 84 FLIStopVideoMode libfli.h, 84 flitdiflags_t libfli.h, 84 flitdirate_t libfli.h, 84 FLITriggerExposure libfli.h, 84 FLIUnlockDevice libfli.h, 84 FLIUsbBulkIO libfli.h, 84 FLIWriteIOPort libfli.h, 84 full_image FLI, 40 get_filter_pos FLI, 30 GetMode FLI, 31 GetMode_String FLI, 31 i Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 91 fli_server2.cpp, 72 imagePixels FLI, 40 imagesize FLI, 40 info fli.cpp, 48 fli_call.h, 58 init FLI, 31 server, 44 init_filters FLI, 34 instruccion micliente, 42 server, 46 ip micliente, 42 server, 46 lee_cooler_power FLI, 35 lee_temperatura FLI, 35 lee_temperatura_base FLI, 36 libfli.h, 73 DllExport, 78 DllImport, 78 FLI_BGFLUSH_START, 78 FLI_BGFLUSH_STOP, 78 FLI_CAMERA_DATA_READY, 78 FLI_CAMERA_STATUS_EXPOSING, 78 FLI_CAMERA_STATUS_IDLE, 78 FLI_CAMERA_STATUS_MASK, 78 FLI_CAMERA_STATUS_READING_CCD, 78 FLI_CAMERA_STATUS_UNKNOWN, 78 FLI_CAMERA_STATUS_WAITING_FOR_TRIGGER, 78 FLI_FAN_SPEED_OFF, 78 FLI_FAN_SPEED_ON, 78 FLI_FOCUSER_STATUS_HOME, 78 FLI_FOCUSER_STATUS_HOMING, 78 FLI_FOCUSER_STATUS_LEGACY, 78 FLI_FOCUSER_STATUS_LIMIT, 78 FLI_FOCUSER_STATUS_MOVING_IN, 78 FLI_FOCUSER_STATUS_MOVING_MASK, 78 FLI_FOCUSER_STATUS_MOVING_OUT, 78 FLI_FOCUSER_STATUS_UNKNOWN, 78 FLI_FRAME_TYPE_DARK, 78 FLI_FRAME_TYPE_FLOOD, 78 92 INDEX FLI_FRAME_TYPE_NORMAL, 78 FLI_FRAME_TYPE_RBI_FLUSH, 78 FLI_INVALID_DEVICE, 78 FLI_IO_P0, 78 FLI_IO_P1, 80 FLI_IO_P2, 80 FLI_IO_P3, 80 FLI_MODE_16BIT, 80 FLI_MODE_8BIT, 80 FLI_SHUTTER_CLOSE, 80 FLI_SHUTTER_EXTERNAL_EXPOSURE_CONTROL, 80 FLI_SHUTTER_EXTERNAL_TRIGGER, 80 FLI_SHUTTER_EXTERNAL_TRIGGER_HIGH, 80 FLI_SHUTTER_EXTERNAL_TRIGGER_LOW, 80 FLI_SHUTTER_OPEN, 80 FLI_TEMPERATURE_BASE, 80 FLI_TEMPERATURE_CCD, 80 FLI_TEMPERATURE_EXTERNAL, 80 FLI_TEMPERATURE_INTERNAL, 80 flibgflush_t, 80 flibitdepth_t, 81 FLICancelExposure, 84 flichannel_t, 81 FLIClose, 84 FLIConfigureIOPort, 84 FLIControlBackgroundFlush, 84 FLIControlShutter, 84 FLICreateList, 84 FLIDEBUG_ALL, 80 FLIDEBUG_FAIL, 80 FLIDEBUG_INFO, 80 FLIDEBUG_NONE, 80 flidebug_t, 81 FLIDEBUG_WARN, 80 FLIDeleteList, 84 flidev_t, 81 FLIDEVICE_CAMERA, 80 FLIDEVICE_ENUMERATE_BY_CONNECTION, 80 FLIDEVICE_FILTERWHEEL, 80 FLIDEVICE_FOCUSER, 80 FLIDEVICE_HS_FILTERWHEEL, 80 FLIDEVICE_NONE, 80 FLIDEVICE_RAW, 80 FLIDOMAIN_INET, 80 FLIDOMAIN_NONE, 80 FLIDOMAIN_PARALLEL_PORT, 80 FLIDOMAIN_SERIAL, 80 FLIDOMAIN_SERIAL_1200, 80 FLIDOMAIN_SERIAL_19200, 80 flidomain_t, 81 FLIDOMAIN_USB, 80 FLIEndExposure, 84 FLIExposeFrame, 84 FLIFlushRow, 84 fliframe_t, 81 FLIFreeList, 84 FLIGetArrayArea, 84 FLIGetCameraMode, 84 FLIGetCameraModeString, 84 FLIGetCoolerPower, 84 FLIGetDeviceStatus, 84 FLIGetExposureStatus, 84 FLIGetFilterCount, 84 FLIGetFilterPos, 84 FLIGetFocuserExtent, 84 FLIGetFWRevision, 84 FLIGetHWRevision, 84 FLIGetLibVersion, 84 FLIGetModel, 84 FLIGetPixelSize, 84 FLIGetSerialString, 84 FLIGetStepperPosition, 84 FLIGetStepsRemaining, 84 FLIGetTemperature, 84 FLIGetVisibleArea, 84 FLIGrabFrame, 84 FLIGrabRow, 84 FLIGrabVideoFrame, 84 FLIHomeDevice, 84 FLIHomeFocuser, 84 FLIList, 84 FLIListFirst, 84 FLIListNext, 84 FLILockDevice, 84 flimode_t, 82 FLIOpen, 84 FLIReadIOPort, 84 FLIReadTemperature, 84 FLISetBitDepth, 84 FLISetCameraMode, 84 FLISetDAC, 84 FLISetDebugLevel, 84 FLISetExposureTime, 84 FLISetFanSpeed, 84 FLISetFilterPos, 84 FLISetFrameType, 84 FLISetHBin, 84 FLISetImageArea, 84 FLISetNFlushes, 84 FLISetTDI, 84 FLISetTemperature, 84 FLISetVBin, 84 flishutter_t, 82 FLIStartVideoMode, 84 Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen INDEX flistatus_t, 82 FLIStepMotor, 84 FLIStepMotorAsync, 84 FLIStopVideoMode, 84 flitdiflags_t, 84 flitdirate_t, 84 FLITriggerExposure, 84 FLIUnlockDevice, 84 FLIUsbBulkIO, 84 FLIWriteIOPort, 84 LIBFLIAPI, 80 LIBFLIAPI libfli.h, 80 LIBVERSIZ fli.cpp, 48 fli_call.h, 58 lista fli_server2.cpp, 72 local_fd micliente, 42 main fli_server2.cpp, 62 manda_imagen FLI, 36 maxcols FLI, 40 maxpixels FLI, 40 maxrows FLI, 40 maxushort fli.cpp, 52 micliente, 42 instruccion, 42 ip, 42 local_fd, 42 model FLI, 40 mutex_busy fli.cpp, 52 fli_server2.cpp, 72 MyVersion fli_server2.cpp, 60 name cam_t, 23 netclose server, 45 onthread_procesa_mando fli_server2.cpp, 64 op server, 46 Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen 93 pon_temperatura FLI, 36 PORT fli_server2.cpp, 60 power FLI, 40 procesa_mando fli_server2.cpp, 66 procesando server, 46 rbin FLI, 40 red fli.cpp, 52 fli_server2.cpp, 72 res fli_server2.cpp, 72 responde_cliente server, 45 revisa server, 45 rorg FLI, 40 rows FLI, 40 salida server, 46 server, 43 ∼server, 43 busy, 46 CANCELA, 46 checa, 44 client_sockfd, 46 debug, 46 fileSal, 46 init, 44 instruccion, 46 ip, 46 netclose, 45 op, 46 procesando, 46 responde_cliente, 45 revisa, 45 salida, 46 server, 43 set_ip, 45 status, 46 server.cpp, 85 server.h, 86 set_filter_pos FLI, 37 set_ip 94 INDEX server, 45 SetMode FLI, 37 showinfo FLI, 37 status server, 46 t_result fli_server2.cpp, 72 tabla FLI, 38 test fli_server2.cpp, 72 thread_mando fli_server2.cpp, 72 thread_red fli_server2.cpp, 72 TRUE fli.h, 53 fli_server2.cpp, 60 TRYFUNC fli.cpp, 48 fli_call.h, 58 update FLI, 38 v_cols FLI, 40 v_corg FLI, 40 v_rorg FLI, 40 v_rows FLI, 40 warnc fli.cpp, 48 fli_call.h, 58 writeraw fli.cpp, 51 fli_call.c, 57 Generated on Mon Jul 2 09:18:16 2012 for fli_server2 by Doxygen