An Apogee CCD Instrument Module for Chimera Cid Meyers, Earl Bellinger, Adam Biesenbach, Joshua Brown, Joshua Primrose, Dennis Quill, Antonio Kanaan, Paulo Henrique de Silva, Dr Shashi M Kanbur One of the specific goals of the IRES 2010 project was to provide proof-of- concept for the modular system by creating such an instrument module for the Apogee ALTA CCD. The Apogee camera represents a substantial upgrade to the currently-installed SBIG camera; the CCD surface is much larger and capable of considerably higher-resolution images, and the camera’s ancillary systems (cooling, image buffering, etc) are considerably more advanced. Overall, the process of creating the wrapper module was relatively straightforward. The Apogee camera driver relies on TCL, which was not initially present on the test system; however, once that dependency was provided, the wrapper compiled smoothly, allowing for control of the camera from the Python command line. The process of creating the CHIMERA instrument module was also a success, though a qualified one; though the Apogee camera’s fans and cooling can currently be controlled from within the CHIMERA system, the process of actually taking an image is quite complicated, and time on the project ran out before the exact procedure could be discerned and programmed. It seems certain, however, that working out the exposure process would be quite possible given a little more time. Even though the Apogee camera is not fully functional within CHIMERA, it is apparent that the concept is sound, demonstrating the flexibility and versatility of the CHIMERA system’s modular approach. With thanks to the NSF, through award NSF OISE One of the great strengths of the CHIMERA control software is its adaptibility to different hardware. Because of its modular control structure, CHIMERA is able to handle virtually any conceivable configuration of telescope, CCD, dome, etc. that can be controlled by computer. In addition, upgrades to existing installations are quite straightforward, requiring only that the software driver for the upgraded hardware be rewritten, rather than the entire software package. The strength of CHIMERA’s modular flexibility is derived from the interoperability of the Python language and the C or C++ that most hardware drivers are written in. Through the use of special header files and a program called SWIG, it is possible to create an interpreter that can translate the CHIMERA core calls into lower-level commands. This interpreter, or “wrapper,” can be compiled directly into the C driver module, providing an interface which CHIMERA can use to control the hardware. There are four links in the control chain: the hardware driver, or kernel module; the Python module that interfaces with the driver; the CHIMERA “instrument” module, which relays commands from CHIMERA to the Python interface; and the CHIMERA core itself. The only part of the chain that has to be completely re-coded for each new instrument is the instrument module. The driver is provided by the instrument manufacturer, though it has to be recompiled using the special Python header files, the Python interface module is automatically generated by SWIG, and the CHIMERA core remains the same between instruments. The instrument module, however, has to be able to correctly translate CHIMERA’s function calls into something the Python interpreter will understand. In order to facilitate this, the instrument module inherits functionality from CHIMERA’s generic instrument modules, such as camera.py. All of the functions provided by the camera.py interface have to be implemented in the instrument module so that the functionality the core module expects is preserved. This is accomplished, essentially, through trial and error, working from the list of functions provided by the CHIMERA interfaces and manually translating them to the functions that exist in the hardware driver. The process is time-consuming, but unavoidable, as no standardisation with regard to driver calls exists amongst hardware manufacturers. Still, as long as the manufacturer’s code is sane and their documentation adequate, it is considerably easier and faster to work out the translations than it would be to write an entirely new driver for the device.