Open Digita Services: Project


About the Software

ODS currently consists of two products: a communications library and a download tool. Although these two products currently reside in the same source tree and are distributed together, it is an important goal of the project to maintain a clear line between generic library functions and application-specific features. In other words, we want the library to be suitable for embedding in any application, and so we are taking care not to taint the core library with application-specific code. This distinction will become clearer as the project matures, and the products grow in their own directions.

The ODS communications library is a body of C code that implements the Digita HIS protocol and enables applications to easily interface to Digita cameras. The library API is broken into three levels:

Level-0 API
Provides protocol primitives and basic buffer management for talking to Digita cameras. The Level-0 API is not yet well defined, but will be provided for applications that need low-level access to the camera.

Level-1 API
Provides a set of calls nearly identical to the command set described in the Digita HIS. The Level-1 API is suitable for use by any application, though it requires the application program to perform more detailed management of the camera than the Level-2 API.

Level-2 API
Provides the highest-level and most convenient access to the camera. For example, the ODSInitialize function creates a camera connection, and automatically initializes the communications protocol based on environment variables and command-line flags.

The utility tool, currently called ks, is a small command-line program that uses the comm library to control the camera. Although other, better, tools exist (see the "Related Projects" section) for managing digital cameras, we will probably continue to develop ks to provide support for Digita-specific features not supported by more general-purpose products.


Future Directions

It should go without saying that we intend to flesh out the core comm library. This means fully defining the Level-0 and Level-2 APIs, and completing coding of the Level-1 and Level-2 APIs. We will add support for USB and IrDA connections as soon as linux kernel support for these devices matures.

We intend to develop ks into a tool that can use all the capabilities of Digita cameras:

  • Copying and deleting photos from the camera.
  • Setting photo-specific attributes.
  • Configuring the camera.
  • Taking pictures with the camera.
  • Uploading Digita scripts and firmware upgrades to the camera.
  • Setting user-definable camera attributes, such as the "user copyright string".

EXIF Library

Image files downloaded from Kodak Digita cameras contain embedded files in "EXIF" format. These embedded files contain information about the image, such as the date and time the photo was taken, the lens aperature and flash setting when the photo was taken, etc. When the image file is still in the camera, this information is available through the host interface. But once the image has been downloaded, it is accessible only through the EXIF file.

We want our tools to be able to read and use the information embedded in EXIF format, so the ODS project may eventually add an EXIF-access library as a product seperate from, but used by, the Digita access tools.


A number of external products are candidates for ODS support in the form of plug-ins. These plug-ins would adapt the ODS comm library Level-1 or Level-2 API to the API required by the host product. The external products we're currently thinking of supporting are:

A SANE wrapper around the ODS comm library would enable the GIMP and other SANE-capable tools to download images directly from the camera.

The GNU Photo project is an open-source application for managing collections of digital images, including automated management of digital cameras. Supporting gPhoto would require writing a wrapper around ODS to adapt it to gPhoto's camera API.

Eugene Crosser's command-line tool for downloading images from cameras. Supporting PhotoPC would be similar to supporting gPhoto: by writing an adapter layer between ODS and the PhotoPC API.

Other plans for the future include cross-platform support to ensure that ODS works on all unix OSes, not just Linux.


Related Projects

The Kodak Digitalcam-HOWTO is being written by Dave Burley to ease the usage of digital cameras. Certainly worth a read, it may even teach you something you didn't already know :)

The following project descriptions were taken from the Freshmeat appindex:

The GIMP is the GNU Image Manipulation Program. It is a freely distributed piece of software suitable for such tasks as photo retouching, image composition and image authoring. It can be used as a simple paint program, an expert quality photo retouching program, an online batch processing system, a mass production image renderer, a image format converter, etc.
gPhoto (with the photopc library) allows you to download, organize, and manipulate pictures from your digital camera. It supports a wide range of cameras, and more support is in the works. There's also a mailing list gphoto-kodak for discussion about Kodak cameras, for more information please see
PhotoPC is a "freeware" software which may be used to control and retrieve photos from Epson PhotoPC digital cameras under Unix/Linux, Microsoft Windows 95, Windows NT, and MS-DOS. (This software may also work with Agfa ePhoto, Olympus D-xxxL, and Sanyo digital cameras based on firmware from Sierra Imaging, Inc.) The software is command-line oriented, and does not make use of a graphical user interface (GUI). By using this software with a "batch file" or Windows short-cut icon, photos can be downloaded from the camera quickly, with a minimum off effort.
kdcpi is a perl program written to control the Kodak DC210 and DC200 Digital Cameras. It is command line based, supports downloading pictures, deleting pictures, taking pictures and viewing camera status.

SourceForge rocks!  Valid HTML 4.0!
Viljo Hakala / Last modified: Sat Apr 22 12:53:39 PDT 2000