CLIC Video Lab Automation Project

Sajid H. Sadi
Columbia University
New York, NY 10027
USA
shs54@columbia.edu

Abstract

The goal of the project was to exert a level of control over the equipment of the CLIC lab video subsystem over HTTP. This has been accomplished with the creation of a program that operates through the Common Gateway Interface (CGI) protocol to control the linked video switches and the VCR/DVD players in the lab. While the actual interconnects are not yet implemented, the software produced can succcessfully issue the commands necessary for the proper handling of the aforementioned hardware.

Introduction

While there has been some research in remote/automatic control of public lecture spaces, this project differs in that it does not have as ambitious a goal, focusing instead on simply allowing remote control of the lab equipment over an easily accisible medium. The core problem lies in implementing control over the necessary hardware and in the transfer of this control to CGI, which is essentially a stateless environment. This is complicated by the fact that the control codes for each peice of equipment is unique in content and format, requiring essentially a separate set of functions for each device controlled. Though present, the problem of stateless programming is comparatively less of a hurdle, and is circumvented by using files and passed data to maintain state information to the extent necessary.

Related Work

Who else has been doing something similar and how your effort is different.

Background

Before discussing the structure of the program, it is necessary to discuss the equipment in question. Though there are many other components in the lab's audio/video system, the parts of concert are:

All except for the VCR and the DVD player accept serial input/output using standard RS-232 connections, and simple ASCII commands that can control most functions of the devices. The command codes are available in the manuals provided with the devices as well as at the respective websites of the manufacturers. The essential connection is as follows: Connection Map

The two video sources are controlled by controlling the Slink-e device, which is capable of emulating the infrared signals of the remotes of those devices in order to control their functions. Only the common basic functionality is supported in this manner, since the interface is intended for normal usage and not as a complete replacement for equipment setups. The control of the two matrix switches is by individual. However, it is clear that in many cases the two should be controlled directly, and this is reflected in the program design.

Architecture

In writing the code for his project there was an option of either writing one module per device or a module for each general function. While the module division based on devices seems more logical at first glance, it is programmatically less feasible since related code is spread through many files. Currently there is one specialized module for controlling both of the video switches, the module to control communication with the devices, a module to manage template matching, an utility module, and the main program module. This organization allows related functions to be grouped together and greatly simplifies debugging, since it is much easier to make changes to related code. Furthermore, this obviates the need for separate modules to tie together devices.

All the project code is written in plain ANSI C. However, the Slink-e control class is written in Python (available online from the manufacturer's website), and is not directly part of the project. The templates are all written in normal HTML, though some portions use Javascript (tested in Netscape 4.7 and Mozilla 0.95).

Program Documentation

System Requirements

Installation

The program will now be available under <http://<web_root_logical>/cgi-bin/clic_control.cgi>.

Configuration

Program Operation Map

Flow Chart

Caveats

Future Enhancements

Acknowledgements


Last updated: 2002-01-17 by Sajid H. Sadi