/****************************************************************************/
/* Copyright 1995 MBARI                                                     */
/****************************************************************************/
/* Summary  : Camera Application definitions                                */
/* Filename : camera.h                                                      */
/* Author   : Douglas Au                                                    */
/* Project  : Tiburon ROV                                                   */
/* Version  : Version 1.0                                                   */
/* Created  : 02/23/95                                                      */
/* Modified : 02/23/95                                                      */
/* Archived :                                                               */
/****************************************************************************/
/* Modification History:                                                    */
/* $Header: /usr/tiburon/.cvsroot/micro/h/cam.h,v 1.2 1997/09/09 17:30:33 pean Exp $
 * $Log: cam.h,v $
 * Revision 1.2  1997/09/09 17:30:33  pean
 * *** empty log message ***
 *
 * Revision 1.1.1.1  1997/05/02 19:17:18  pean
 * Initial check in of the camera microcontroller software
 *
*/
/****************************************************************************/


typedef struct
{
    Byte        dummy;
    Byte        Status;
    Word        time;
} HSI_PTS_Entry;

/* HSI_PTS_Entry   recv_buf[40];*/

#define TEMP_WARN_THRESH          30    /* Temperature Warn Threshold degs  */
#define TEMP_ALARM_THRESH         45    /* Temperature Alarm Threshold degs */
#define TEMPERATURE_HYSTERESIS     5    /* Temeprature Alarm Hystesis degs  */
#define MAX_TEMP_VALUE           120    /* Maximum temperature measurement  */

#define HUMIDITY_WARN_THRESH      10    /* Set humidity warning to 10% RH   */
#define HUMIDITY_ALARM_THRESH     20    /* Set humidity alarm to 20% RH     */
#define HUMIDITY_HYSTERESIS        2    /* Humidity sensor hysteresis 2%    */


#define GET_TEMPERATURE         0x01    /* Get Temperature Sensor Value     */
#define GET_TEMP_ALARM_STATUS   0x02    /* Get Temperature Alarm Status     */
#define GET_TEMP_ALARM_THRESH   0x03    /* Get Temperature Alarm Threshold  */
#define SET_TEMP_ALARM_THRESH   0x04    /* Set Temperature Alarm Threshold  */

#define GET_HUMIDITY            0x06    /* Get Humidity Sensor Reading      */
#define GET_HUMIDITY_ALARM      0x07    /* Get Humidity Alarm Status        */
#define GET_HUMIDITY_THRESH     0x08    /* Get Humidity Alarm Threshold     */
#define SET_HUMIDITY_THRESH     0x09    /* Set Humidity Alarm Threshold     */

#define GET_WATER_ALARM         0x0a    /* Get water alarm status word      */

    /* servo system */
#define SCALE_MULTIPLY(a, b) ((Int16)(( ((Int32) a) * b)>>8))

#define NUMBER_OF_SERVOS    2

/* Control Servos   */
#define FOCUS_SERVO     0
#define ZOOM_SERVO      1

/* Analog FeedBack Channels */
#define ZOOM_CHANNEL    5
#define FOCUS_CHANNEL   3

#define ZOOM_TACH_CHANNEL   2

/* Stall Processing Constants */
#define SLOW_SPEED      10
#define STALL_COUNT_LIMIT   50
#define STALL_TIME_CONSTANT 253

#define CLOSE_COUNT    100
#define CLOSE_THRESHOLD 50

/* Control Modes */
#define POSITION_MODE   0
#define RATE_MODE       1

/* Control Law Defines */
#define MAX_SERVO_COMMAND   450
#define MAX_ERR              50



/* Camera Servo Commands */
#define SET_FOCUS_SET_POINT     0x10
#define SET_FOCUS_VELOCITY_GAIN 0x11
#define SET_FOCUS_CONTROL_MODE  0x12

#define GET_FOCUS_SET_POINT     0x16
#define GET_FOCUS_POSITION      0x17
#define GET_FOCUS_VELOCITY_GAIN 0x18
#define GET_FOCUS_CONTROL_MODE  0x19


#define SET_ZOOM_SET_POINT      0x20
#define SET_ZOOM_VELOCITY_GAIN  0x21
#define SET_ZOOM_CONTROL_MODE   0x22
#define SET_ZOOM_RATE           0x23
#define GET_ZOOM_RATE           0x24
#define GET_ZOOM_SET_POINT      0x26
#define GET_ZOOM_POSITION       0x27
#define GET_ZOOM_VELOCITY_GAIN  0x28
#define GET_ZOOM_CONTROL_MODE   0x29

#define SEND_CAMERA_COMMAND     0x2E
#define CONTROLLER_STRING       0x2F   /* Send String to  */

#define GET_PWM_RATE            0x30
#define SET_PWM_RATE            0x31

#define SET_COLOR_BARS_MODE     0x32  /*  Set color Bars On of Off          */
#define GET_COLOR_BARS_MODE     0x33
#define SET_MENU_MODE           0x34  /*  Turn Menu's On or OFF             */
#define GET_MENU_MODE           0x35
#define SET_IRIS_MODE           0x36  /*  Turn Manual IRIS on or off        */
#define GET_IRIS_MODE           0x37
#define SET_IRIS_VALUE          0x38
#define GET_IRIS_VALUE          0x39

#define SET_GAIN_MODE           0x3A  /*  Set Auto Gain Low High or off     */
#define GET_GAIN_MODE           0x3B
#define SET_GAIN_VALUE          0x3C /* Set Manual Gain Value              */
#define GET_GAIN_VALUE          0x3D

#define SET_DETAIL_MODE         0x3E /*  Set Detail Low High or Off        */
#define GET_DETAIL_MODE         0x3F

#define SET_SHUTTER_SPEED       0x40 /*  Set Shutter Speed                 */
#define GET_SHUTTER_SPEED       0x41

#define SET_SCENE_FILE          0x42 /*  Set Scene File                    */
#define GET_SCENE_FILE          0x43

#define SET_AWC_MODE            0x44 /*  Set AWC Mode                      */
#define GET_AWC_MODE            0x45

#define SET_ATW_MODE            0x46 /*  Set ATW Mode                      */
#define GET_ATW_MODE            0x47

#define SET_TOTAL_PEDSTAL       0x48 /*  Set Total Pedstal                 */
#define GET_TOTAL_PEDSTAL       0x49

#define SET_RED_PEDSTAL         0x4A /*  Set Red Pedstal                   */
#define GET_RED_PEDSTAL         0x4B

#define SET_BLUE_PEDSTAL        0x4C /*  Set Blue Pedstal                  */
#define GET_BLUE_PEDSTAL        0x4D

#define SET_RED_GAIN            0x4E /*  Set Red Gain                      */
#define GET_RED_GAIN            0x4F

#define SET_BLUE_GAIN           0x50 /*  Set Blue Gain                     */
#define GET_BLUE_GAIN           0x51

#define SET_PAGE_STATE          0x52
#define GET_PAGE_STATE          0x53
#define SET_ITEM_STATE          0x54
#define GET_ITEM_STATE          0x55
#define SET_UP_STATE            0x56
#define GET_UP_STATE            0x57
#define SET_DOWN_STATE          0x58
#define GET_DOWN_STATE          0x59



                                   /* Dummy Command Transmission Message    */
#define DCTM                    0x33
                                      /*  CAMERA DATA TRANSMISSION REQUESTS */
#define DATA1_REQ0              0x81
#define DATA1_REQ1              0x82
#define DATA1_REQ2		0x80
#define DATA2_REQ               0x95
#define DATA3_REQ               0xA5
#define DATA4_REQ               0xB5
#define DATA5_REQ               0xC5
#define DATA6_REQ               0xD5
#define DATA7_REQ               0xE5
#define DATA8_REQ               0xF5
#define CCC_REQ                 0xF9

#define DATA_RESP_NUM           9
#define DATA_RESP_SIZE          4     /* 4 byte data response                */

#define DATA1                   0
#define DATA2                   1
#define DATA3                   2
#define DATA4                   3
#define DATA5                   4
#define DATA6                   5
#define DATA7                   6
#define DATA8                   7
#define CCC                     8

#define BYTE0                   0
#define BYTE1                   1
#define BYTE2                   2
#define CHECKSUM                3

#define DATA1_0                 0x00
#define DATA1_1                 0x26        /*0 = cam and 0 detail mode */
#define DATA1_2                 0x15
#define DATA1_CS                0xC5

#define DATA2_0                 0xD8
#define DATA2_1                 0x03
#define DATA2_2                 0x88
#define DATA2_CS                0x9D

#define DATA4_0                 0x8A
#define DATA4_1                 0x85
#define DATA4_2                 DATA1_2
#define DATA4_CS                0xDC

#define DATA3_0                 0x00
#define DATA3_1                 0x8B
#define DATA3_2                 0x81
#define DATA3_CS                0xF4


#define DATA5_0                 0x00
#define DATA5_1                 DATA1_2
#define DATA5_2                 0x0F
#define DATA5_CS                0xDC

#define DATA7_0                 0x00
#define DATA7_1                 0x00
#define DATA7_2                 0xE5
#define DATA7_CS                0x1B

#define DATA6_0                 DATA1_2
#define DATA6_1                 0x02
#define DATA6_2                 0x26
#define DATA6_CS                0xC3

#define DATA8_0                 0x02
#define DATA8_1                 0x13
#define DATA8_2                 0x67
#define DATA8_CS                0x84



                                   /* Circuit Confirmation Command          */
#define CCC_0                   0x12
#define CCC_1                   0x34
#define CCC_2                   0x78
#define CCC_CS                  0x42

                                     /* DATA1 Word 1 RESPONSES              */
#define AWC_NON_RSP             0x03
#define AWC_RSP                 0x01
#define ABC_RSP                 0x02
#define PAGE_RSP                0x08
#define ITEM_RSP                0x10
#define UP_RSP                  0x20
#define DOWN_RSP                0x40

                                    /* DATA1 Word 2 RESPONSES               */
#define VF_RSP                  0x01
#define ENC_RSP                 0x02
#define ATW_RSP                 0x0C
#define ACH_RSP                 0x04
#define BCH_RSP                 0x08
#define DETAIL_OFF_RSP          0x30
#define DETAIL_LOW_RSP          0x10
#define DETAIL_HIGH_RSP         0x20
#define BAR_RSP                 0x80

                                   /* DATA1 Word 3 RESPONSE Unused          */
#define DATA1_WORD3             0x00
                                   /* DATA1 Word 4 checksum                 */


                                   /* DATA2 Word 1 RESPONSE                 */
#define GAIN_0dB_RSP            0x03
#define GAIN_9dB_RSP            0x01
#define GAIN_18dB_RSP           0x02

#define AGC_LOW_RSP             0x0C
#define AGC_HIGH_RSP            0x04
#define AGC_OFF_RSP             0x08

#define AUTO_IRIS_RSP           0x10
#define SC_COARSE_90_RSP        0x00
#define SC_COARSE_180_RSP       0x40
#define SC_COARSE_270_RSP       0x80
#define SC_COARSE_0_RSP         0xC0

                                   /* DATA2 Word 2 Response                 */
#define SCENE_FILE_USER_RSP     0x0C
#define SCENE_FILE_1_RSP        0x04
#define SCENE_FILE_2_RSP        0x08
#define SCENE_FILE_3_RSP        0x0C
#define SHUTTER_OFF_RSP         0xF0
#define SHUTTER_100_RSP         0x30
#define SHUTTER_500_RSP         0x50
#define SHUTTER_1000_RSP        0x60
#define SHUTTER_SYNCHRO_RSP     0x70
#define SHUTTER_ELC_RSP         0x80

                                   /* DATA8 Word 2 Response                 */
#define MENU_RSP                0x80

                                   /* Camera Application Service Requests   */
#define HUMIDITY_ALARM_SRQ               APPLIC_SRQ_BASE | 0x01
#define TEMPERATURE_ALARM_SRQ            APPLIC_SRQ_BASE | 0x02

#define TEMPERATURE_SENSOR_CHAN 0           /* Temperature sensor           */

#define CAMERA_LINK_UP        TRUE
#define CAMERA_LINK_DOWN      FALSE

#define BARS_ON        TRUE
#define BARS_OFF       FALSE

#define MENU_ON        TRUE
#define MENU_OFF       FALSE

#define PAGE_ON        TRUE
#define PAGE_OFF       FALSE

#define ITEM_ON        TRUE
#define ITEM_OFF       FALSE

#define UP_ON          TRUE
#define UP_OFF         FALSE

#define DOWN_ON        TRUE
#define DOWN_OFF       FALSE

#define AUTO_IRIS_OFF  TRUE
#define AUTO_IRIS_ON   FALSE

#define AUTO_GAIN_OFF  0
#define AUTO_GAIN_LOW  1
#define AUTO_GAIN_HIGH 2

#define GAIN_0DB       0
#define GAIN_9DB       1
#define GAIN_18DB      2

#define DETAIL_OFF     0
#define DETAIL_LOW     1
#define DETAIL_HIGH    2

#define SHUTTER_OFF    0
#define SHUTTER_100    1
#define SHUTTER_500    2
#define SHUTTER_1000   3
#define SHUTTER_SYNCHRO 4
#define SHUTTER_ELC    5

#define SCENE_USER     0
#define SCENE_1        1
#define SCENE_2        2
#define SCENE_3        3

#define HOLD           0
#define AWC            1
#define ABC            2

#define ATW            0
#define ACH            1
#define BCH            2

#define MAX_COUNT      10












