/****************************************************************************/
/* Copyright 2006 MBARI.                                                    */
/* Monterey Bay Aquarium Research Institute Proprietary Information.        */
/* All rights reserved.                                                     */
/****************************************************************************/
#ifndef PH_PROBE_H
#define PH_PROBE_H

#define VS_VERSION  "0.1"
#define DEBUG 0


int8 fire[]="F";
int8 query[]="Q";
int8 status[]= "S";
int8 version[]="V";
int8 actuation[]="A";

char response_message[20]; // String for storing node response back to MVC

// Timing variable initialization
int32 seconds = 0;                      // A running seconds counter for timer 1
int32 T2_seconds = 0;                   // A running seconds counter for timer 2
int8 int_count = 0;                     // Number of interrupts left before a second has elapsed on timer 1
int8 T2_int_count = 0;                  // Number of interrupts left before a second has elapsed on timer 2
int32 ElapsedSeconds = 0;               // A running seconds counter for timer 1
int32 T2_ElapsedSeconds = 0;            // A running seconds counter for timer 2
int8 Elapsed_int_count = 0;             // Number of interrupts elapsed for timer 1
int8 T2_Elapsed_int_count = 0;          // Number of interrupts elapsed for timer 2
int32 Final_Proximity_Milliseconds = 0; // Used to store time between fire and proximity sensor
int32 Final_Actuation_Milliseconds = 0; // Used to store time between fire and pin puller voltage >= 2 volts

// Booleans
Boolean Fired = false;                // Fire command received?
Boolean proximity = false;            // Proximity sensor ISR called?
Boolean actuation_bool = false;       // Actuation voltage above 2 volts?
Boolean proximity_expired = false;    // Set true at 30 seconds past firing if no prox interrupt received
Boolean bad_address = false;          // Address out of range?
Boolean bad_checksum = false;         // Incoming checksum error?
Boolean pin_puller_retracted = false; // did the pin puller retract?


/*
    The ticks per second is based on an 8-bit counter over flowing that
    is driven by a 4 Mhz ocsillator prescaled by 4 and postscaled by 64.

    TICKS_PER_SEC = (OSC_CLK) / (PRESCALE) / (POSTSCALE) / (8_BIT_OVERFLOW)
                  = 4000000   /     4      /      64     /      256
                  = 61.0351
*/
#define TICKS_PER_SEC   61

#define HI  1
#define LO  0

#define ON  1
#define OFF 0

void startTimer(void);
void getElapsedTime(void);
void T2_startTimer(void);
void T2_getElapsedTime(void);

#endif
