Logo Search packages:      
Sourcecode: libgphoto2 version File versions  Download package

mesalib.h

/*
 * Copyright  2000-2001, Brian Beattie <beattie@aracnet.com>, et. al.
 *
 *    This software was created with the help of proprietary
 *      information belonging to StarDot Technologies
 *
 * Permission to copy and use and modify this file is granted
 * provided the above notices are retained, intact.
 *
 */

#ifndef MESALIB_H
#define MESALIB_H

#include <_stdint.h>
#include <gphoto2/gphoto2-port.h>

#define CHECK(result) {int res = (result); if (res < 0) return (res);}

/* MESA commands */
#define     NOP         0x01  /* No operation */
#define MESA_VERSION          0x05  /* Send Version command */
#define XMIT_TEST 0x09  /* Send test sequent */
#define RAM_TEST  0x0d  /* Test Camera RAM */
#define SEND_RAM  0x15  /* Send Ram contents */
#define SNAP_IMAGE      0x19  /* Snap an Image (no flash or shutter) */
#define SND_BLACK 0x1d  /* Send Black level bytes */
#define SNAP_VIEW 0x21  /* Snap (and Send) viewfinder image */
#define XTRA_STP_BIT    0x25  /* Stop bits (extra time between bytes */
#define SND_VIEW  0x29  /* Send viewfinder image */
#define SNAP_PICTURE    0x2d  /* Snap a picture */
#define     SND_ID            0x35  /* Send Manufacture/year/week of manufacture */
#define AT_COMMAND      0x41  /* Modem Detect command */
#define SND_IMAGE 0x49  /* Send image stored in RAM */
#define     RCV_TEST    0x4d  /* Echo six bytes */
#define IMAGE_CNT 0x55  /* Send count of images */
#define     LD_IMAGE    0x59  /* Load Image from EEPROM into RAM */
#define EEPROM_INFO     0x5d  /* Send information about EEPROM */
#define SND_THUMB 0x61  /* Send Thumbnail of image */
#define SET_SPEED 0x69  /* Set serial link speed */
#define FEATURES  0x6d  /* Send features */
#define SND_IMG_INFO    0x71  /* Send Image Info */

#define     CMD_ACK           0x21  /* Command ACK */

#define RAM_IMAGE_NUM   0x10000     /* image number for image in RAM */

/* RAM Test results */
#define RAM_GOOD  0x2a  /* RAM tests good */
#define RAM_ERROR 0x2d  /* RAM error detected */
#define EE_ERROR  0x45  /* Failure to restore EEPROM dir */

/* DownLoad ViewFinder */
#define ALL_LOWRES      0xff  /* Send all of a LowRES 64x48 viewfinder */
#define EVEN_LOWRES     0xfe  /* Send even rows of LowRES */
#define ODD_LOWRES      0xfd  /* Send odd rows of LowRES */
#define NONE            0xfc  /* Send nothing (for Snap Viewfinder) */
#define ALL_HIRES 0xfb  /* Send All of a HighRES 128x96 viewfinder */
#define EVEN_HIRES      0xfa  /* Send even rows of HiRES */
#define ODD_HIRES 0xf9  /* Send odd rows of HiRES */

/* Feature bits */
struct mesa_feature {
      uint8_t     feature_bits_lo;
#define HAVE_FLASH      0x01        /* Flash present */
#define HAVE_RES_SW     0x02        /* Resolution switch present */
#define FLASH_FILL      0x04        /* Flash is in Fill mode */
#define FLASH_READY     0x08        /* Flash is charged and ready */
#define LOW_RES         0x10        /* Switch is in low res position */
#define DUAL_IRIS 0x20        /* Dual Iris is present */
#define AC_PRESENT      0x40        /* AC Adapter is connected */
#define FLASH_ON  0x80        /* Flash is on */
      uint8_t     feature_bits_hi;
#define     IRIS_ADJUST 0x1f
#define BAT_VALID 0x20        /* Battery level valid */
#define NO_PWR_LIGHT    0x40        /* No power light */
#define     BAT_DIGITAL 0x80        /* Battery level is binary */
      uint8_t     battery_level;    /* Battery level */
      uint8_t     battery_zero;     /* Battery dead level */
      uint8_t     battery_full;     /* Battery full level */
};

/* Send Image */
struct mesa_image_arg {
      uint16_t    row;        /* row to start sending */
      uint16_t    start;            /* 0x1e */
      uint8_t     send;       /* 0x04 */
      uint8_t     skip;       /* 0x00 */
      uint16_t    repeat;           /* 0xA0 */
      uint8_t     row_cnt;    /* 0x20 */
      uint8_t     inc1;       /* 0x01 */
      uint8_t     inc2;       /* 0x80 */
      uint8_t     inc3;       /* 0x00 */
      uint8_t     inc4;       /* 0x00 */
};

struct mesa_id {
      uint16_t    man;  /* 12bit manufacturer ID */
      uint16_t    year; /* year of manufacture - 1996 */
      uint8_t     ver;  /* 4bit version */
      uint8_t     week; /* week of manufacture 0 - 51 */
};

#define MESA_THUMB_SZ   (64*60)     /* (64x60x4)/8 */

struct mesa_image_info {
      uint32_t    num_bytes;  /* size of image in eeprom */
      uint8_t     standard_res;     /* image is standard res */
};

#define MESA_VERSION_SZ 7     /* min. buffer length needed for mesa_version */
#define MESA_EEPROM_SZ 49     /* min. buffer length needed for mesa_eeprom_info */

void
mesa_flush( GPPort *port, int timeout );
int
mesa_read( GPPort *port, uint8_t *b, int s, int timeout2, int timeout1 );
int
mesa_send_command( GPPort *port, uint8_t *cmd, int n, int ackTimeout );
int
mesa_port_open( GPPort *port );
int
mesa_port_close( GPPort *port );
int
mesa_reset( GPPort *port );
int
mesa_set_speed( GPPort *port, int speed );
int
mesa_version( GPPort *port,char *version_string);
int
mesa_transmit_test( GPPort *port );
int
mesa_ram_test( GPPort *port );
int
mesa_read_row( GPPort *port, uint8_t *r, struct mesa_image_arg *s );
int
mesa_snap_image( GPPort *port, uint16_t exposure );
int
mesa_black_levels( GPPort *port, uint8_t r[2] );
int
mesa_snap_view( GPPort *port, uint8_t *r, unsigned int hi_res, unsigned int zoom,
      unsigned int row, unsigned int col, uint16_t exposure,
      uint8_t download );
int
mesa_set_stopbits( GPPort *port, unsigned int bits );
int
mesa_download_view( GPPort *port, uint8_t *r, uint8_t download );
int
mesa_snap_picture( GPPort *port, uint16_t exposure );
int
mesa_send_id( GPPort *port, struct mesa_id *id );
int
mesa_modem_check( GPPort *port );
int
mesa_read_image( GPPort *port, uint8_t *r, struct mesa_image_arg *s );
int
mesa_recv_test( GPPort *port, uint8_t r[6] );
int
mesa_get_image_count( GPPort *port );
int
mesa_load_image( GPPort *port, int image);
int
mesa_eeprom_info( GPPort *port, int long_read, uint8_t info[MESA_EEPROM_SZ] );
int32_t
mesa_read_thumbnail( GPPort *port, int picture, uint8_t *image );
int
mesa_read_features( GPPort *port, struct mesa_feature *f );
int
mesa_battery_check( GPPort *port );
int32_t
mesa_read_image_info( GPPort *port, int i, struct mesa_image_info *info );
uint8_t *
mesa_get_image( GPPort *port, int image );

#endif /* MESALIB_H */

Generated by  Doxygen 1.6.0   Back to index