/****************************************************************************/
/* Copyright 2010 MBARI.                                                    */
/* MBARI Proprietary Information. All rights reserved.                      */
/****************************************************************************/
#ifndef DIG_IO_H
#define DIG_IO_H

#define TOTAL_OUT_BITS  32

#define OUT_BIT_0 LATDbits.LATD6 // UART_1_*SHDN
#define OUT_BIT_1 LATEbits.LATE0 // INSTR_1_ON
#define OUT_BIT_2 LATEbits.LATE2 // INSTR_2_ON
#define OUT_BIT_3 LATEbits.LATE4 // INSTR_3_ON
#define OUT_BIT_4 LATEbits.LATE7 // INSTR_4_ON
#define OUT_BIT_5 LATEbits.LATE1 // INSTR_1_OFF
#define OUT_BIT_6 LATEbits.LATE3 // INSTR_2_OFF
#define OUT_BIT_7 LATEbits.LATE5 // INSTR_3_OFF

#define OUT_BIT_8 LATEbits.LATE6 // INSTR_4_OFF
#define OUT_BIT_9 LATDbits.LATD7 // UART_2_*SHDN
#define OUT_BIT_10 LATDbits.LATD8 // UART_3_*SHDN
#define OUT_BIT_11 LATFbits.LATF5 // "Test LED"
#define OUT_BIT_12 LATFbits.LATF6 // DC-DC_CNTL
#define OUT_BIT_13 LATGbits.LATG2 // ADC_*SHDN
#define OUT_BIT_14 LATDbits.LATD11
#define OUT_BIT_15 LATFbits.LATF4

#define OUT_BIT_16 LATBbits.LATB1
#define OUT_BIT_17 LATBbits.LATB2 
#define OUT_BIT_18 LATBbits.LATB3 
#define OUT_BIT_19 LATBbits.LATB4 
#define OUT_BIT_20 LATBbits.LATB5 
#define OUT_BIT_21 LATBbits.LATB8 
#define OUT_BIT_22 LATBbits.LATB9 
#define OUT_BIT_23 LATCbits.LATC13 

#define OUT_BIT_24 LATCbits.LATC14 
#define OUT_BIT_25 dummyBit
#define OUT_BIT_26 dummyBit
#define OUT_BIT_27 dummyBit
#define OUT_BIT_28 dummyBit 
#define OUT_BIT_29 dummyBit  
#define OUT_BIT_30 dummyBit 
#define OUT_BIT_31 dummyBit 

#define TOTAL_IN_BITS  8

#define IN_BIT_0 PORTFbits.RF0 // INSTR_1_STATE
#define IN_BIT_1 PORTFbits.RF1 // INSTR_2_STATE
#define IN_BIT_2 PORTFbits.RF2 // INSTR_3_STATE
#define IN_BIT_3 PORTFbits.RF3 // INSTR_4_STATE
#define IN_BIT_4 PORTGbits.RG3 // ADC_BUSY
#define IN_BIT_5 dummyBit
#define IN_BIT_6 dummyBit
#define IN_BIT_7 dummyBit

#define UART_1_SHDN OUT_BIT_0
#define INSTR_1_ON  OUT_BIT_1
#define INSTR_2_ON  OUT_BIT_2
#define INSTR_3_ON  OUT_BIT_3
#define INSTR_4_ON  OUT_BIT_4
#define INSTR_1_OFF OUT_BIT_5
#define INSTR_2_OFF OUT_BIT_6
#define INSTR_3_OFF OUT_BIT_7
#define INSTR_4_OFF OUT_BIT_8
#define UART_2_SHDN OUT_BIT_9
#define UART_3_SHDN OUT_BIT_10
#define LED_BIT     OUT_BIT_11
#define DC_CTRL     OUT_BIT_12
#define ADC_SHDN    OUT_BIT_13
#define SPI_CS      LATGbits.LATG6
#define ADC_BUSY    PORTGbits.RG3	//Input bit

/* init registers */
void digInit(); 

void digSetBlinky(int state);
int  digGetBlinky();


/* Need these?? */

/* power bit API */
void digSetOutBit(int bit, int state);
int digGetOutBit(int bit);

void digSetOutPort(unsigned int val);
unsigned int digGetOutPort(void);

/* unimplemented input API */
int digGetInBit(int bit);

unsigned int digGetInPort(void);

#endif

