Devserv: A Device Server This program (devserv) receives and carries out requests from local or remote clients to drive serial video devices. The devices supported are the Sony EVI-D30, Canon VC-C1, and Canon VC-C3 cameras and the Panasonic WJ-MX50 video switcher. Devserv communicates with these devices using RS-232. Devserv receives client requests as unicast UDP messages and sends its replies (which are description messages) via IP multicast. Platforms The single-threaded versions of devserv (versions 0.x) were developed and tested under Solaris 2.6 and ported to freeBSD 2.2.7, Irix 6.4, Windows 95, and Windows NT. The multithreaded version (v1.0) runs under Solaris and freeBSD. The Solaris binary includes the CIF communication library. (See our website http://www-itg.lbl.gov/mbone/devserv for information about the CIF communication library.) Compiling and Running The distribution of devserv includes packages with executables or source code for building your own binaries for each of the platforms. These packages have been archived as "src" or "bin" and include the platform and version number in their titles. Devserv was written in C++. Since the build environments and RS232 communication are different under UNIX and Windows, there are separate source as well as executable packages for these environments. All devserv packages include documentation (a README with further details for building or executing devserv under the specific platform and a user manual). In addition, devserv requires a text file that specifies the hardware configuration. This file is also included in each package. Environment: UNIX: You must have read and write permissions for the serial ports you are using. Windows: You must set the HOME variable before running devserv. In the autoexec.bat file or on a DOS shell command line, type an entry such as: "set HOME=C:\". To run devserv: 1). Install the binary in any directory. 2). Install the configuration file in your home directory and edit the file to reflect your device connections. You may also make entries to override the default network addresses and ports, and to specify video information. This file treats any line beginning with "#" as a comment. Under UNIX, this file is .devserv.config. Under Windows, this file is devconfig. Devserv reads this file at startup to learn about the devices it must support. So if you change the hardware configuration, you must edit the device entries in this file. Entries for devices are stored in the following format: device <make> <model> <device_no.> <type> <unit_no.> \ <serial_port> <lens_type> ******** NOTE *************************** The device number given by <device no.> is used for internal device addressing. The addresses should be numbered 1, 2, 3, etc., in order from the closest to the computer to the farthest away. For the Sony EVI-D30, this number is NOT the camera number on the back of the camera unit. The camera numbers 1, 2, and 3 on the back of the Sony EVI-D30 are for use with the hand-held remote commander unit. It is INDEPENDENT OF <unit_no.>. ********************************************** The <type> and <unit_no.> are used by the client to make requests to move the device and <unit_no.> is assigned by the devserv user. It is independent of the <device_no.> which is used only to indicate order of distance from the port to which it is connected. The <serial_port> specifies the serial port to which the device is connected. For UNIX, <serial_port> gives the full pathname for the serial port. For SUN workstations, use /dev/ttya and /dev/ttyb, for ports A and B, respectively. On a PC running freeBSD, use /dev/ttyd0, /dev/ttyd1, /dev/ttyd2, etc. for serial ports COM1, COM2, COM3, etc., respectively. For Windows, just specify COM1, COM2, etc. <lens_type> gives the type of lens for a camera. If left blank, the default is used, which is a standard lens. If the camera is using a wide-angle lens, specify "w" or "W". Here are sample entries for UNIX: device Canon VC-C3 1 camera 1 /dev/ttyb w device Sony EVI-D30 1 camera 2 /dev/ttya device Sony EVI-D30 2 camera 3 /dev/ttya These entries indicate that two Sony EVI-D30 cameras are connected to port A and a Canon VC-C3 camera is connected to port B on a Sun workstation. The Sonys are chained. The client will refer to the Sony cameras as "camera 2" and "camera 3", while devserv will use the device numbers 1 and 2 for internal addressing. The client will refer to the Canon as "camera 1". The Canon is is the first and only device attached to Port B, so it is given a device number of 1. On Windows 95/NT, these entries would be: device Canon VC-C3 1 camera 1 COM2 w device Sony EVI-D30 1 camera 2 COM1 device Sony EVI-D30 2 camera 3 COM1 NOTE: You may use "cam" or "vid" for "camera" and "videoswitch", respectively in the <type> field. 3). On UNIX, run devserv from the command line. On Windows, run from either the DOS shell command line or click on the devserv.exe icon. 4). Devserv supports the following command line options: [-d <debug_level>] [-s 'N' or 'n'] [-t <ttl>] [-h <video_host>] [-v <video_address/video_port/video_ttl>] If the "-d" option is used, the terminal will display output for the category indicated by the given integer. Specify debug_level 0 if you do not want anything displayed; specify 1 if you want only high-level information (e.g., initialization and termination status and error messages, if any); specify 2 if you want to display network events; specify 3 if you want to display communication between devserv and the devices; specify 4 if you want everything displayed. (1 is the default debug_level.) If the "-s" option is used, "N" or "n" means do NOT turn off the power upon termination. If the "-t" option is used, the integer specified for <ttl> overrides the default time-to-live for multicast messages. (1 is the default time-to-live.) If the "-h" option is used, the video_host is the computer that is the source of the camera feed. The default is the local host. This information is included in description messages. If the "-v" option is used, the given string (delimited by "/") specifies the address, port, and time-to-live used by the video tool for media transmission. The default is 0.0.0.0/0/0. This information is included in description messages. 5). Make sure that the main power switches are on "ON" for all devices and that, if you are using the Canon VC-C3, both the main power switch (on the CCU) and the power switches for the pan/tilter and camera control units are on (the three LEDs should be green). The Sony EVI-D30 and the Panasonic WJ-MX50 have auxiliary power switches (in the front of the device) that can be controlled by the computer. The Canon VC-C1 lets a computer control its power, if the main power is manually turned on. Thus, devserv sends "power on" and "power off" commands to the Sony EVI-D30, Canon VC-C1, and Panasonic WJ-MX50. However, the Canon does not allow the power to be controlled by a computer so this must be done manually. 6). See the documentation for your specific platform for further details (for UNIX this is a man page and for Windows this is the file devserv.doc). To do: Add support for more devices (e.g., Panasonic WJ-MX20). Write a multithreaded version for Windows.