#ifndef DRIVERS_GPIO_H_
#define DRIVERS_GPIO_H_
#include <stdint.h>
#include <stdbool.h>
#include <driverlib/gpio.h>
typedef enum
{
GPI001_LS_DH_CLEAN_DOWN,
GPI002_LS_DH_CLEAN_LEFT,
GPI003_LS_DH_CLEAN_RIGHT,
GPI004_LS_DH_CLEAN_UP,
GPI005_LS_DH_LID_CLEANING,
GPI006_LS_DH_LID_CLOSED,
GPI007_LS_DH_LID_OPEN,
GPI008_LS_DH_SPARE1,
GPI009_LS_DRYER_LID_CLOSED,
GPI010_LS_DRYER_LID_OPEN,
GPI011_LS_DRYER_SPARE1,
GPI012_LS_DRYER_SPARE2,
GPI013_LS_DRYER_SPARE3,
GPI014_LS_DRYER_SPARE4,
GPI015_LS_LOADARM_LEFT,
GPI016_LS_LOADARM_RIGHT,
GPI017_GPI_PS1_DC_OK,
GPI018_GPI_PANSW1,
GPI019_GPI_PANSW2,
GPI020_GPI_PANSW3,
GPI021_GPI_PANSW4,
GPI022_GPI_PANSW5,
GPI023_GPI_PANSW6,
GPI024_GPI_PWRBUTTON,
GPI025_GPI_TACTSW1,
GPI026_GPI_TACTSW2,
GPI027_GPI_TACTSW3,
GPI028_GPI_TACTSW4,
GPI029_GPI_EXTWINDER_1,
GPI030_GPI_EXTWINDER_2,
GPI031_GPI_EXTWINDER_3,
GPI032_LS_DISPENSER_25_1,
GPI033_LS_DISPENSER_25_2,
GPI034_LS_DISPENSER_25_3,
GPI035_LS_DISPENSER_25_4,
GPI036_LS_DISPENSER_25_5,
GPI037_LS_DISPENSER_25_6,
GPI038_LS_DISPENSER_25_7,
GPI039_LS_DISPENSER_25_8,
GPI040_LS_DISPENSER_50_1,
GPI041_LS_DISPENSER_50_2,
GPI042_LS_DISPENSER_50_3,
GPI043_LS_DISPENSER_50_4,
GPI044_LS_DISPENSER_50_5,
GPI045_LS_DISPENSER_50_6,
GPI046_LS_DISPENSER_50_7,
GPI047_LS_DISPENSER_50_8,
GPI048_LS_DISPENSER_75_1,
GPI049_LS_DISPENSER_75_2,
GPI050_LS_DISPENSER_75_3,
GPI051_LS_DISPENSER_75_4,
GPI052_LS_DISPENSER_75_5,
GPI053_LS_DISPENSER_75_6,
GPI054_LS_DISPENSER_75_7,
GPI055_LS_DISPENSER_75_8,
GPI056_LS_DISPENSER_DOWN_1,
GPI057_LS_DISPENSER_DOWN_2,
GPI058_LS_DISPENSER_DOWN_3,
GPI059_LS_DISPENSER_DOWN_4,
GPI060_LS_DISPENSER_DOWN_5,
GPI061_LS_DISPENSER_DOWN_6,
GPI062_LS_DISPENSER_DOWN_7,
GPI063_LS_DISPENSER_DOWN_8,
GPI064_LS_DISPENSER_SPARE_1,
GPI065_LS_DISPENSER_SPARE_2,
GPI066_LS_DISPENSER_SPARE_3,
GPI067_LS_DISPENSER_SPARE_4,
GPI068_LS_DISPENSER_SPARE_5,
GPI069_LS_DISPENSER_SPARE_6,
GPI070_LS_DISPENSER_SPARE_7,
GPI071_LS_DISPENSER_SPARE_8,
GPI072_LS_DISPENSER_UP_1,
GPI073_LS_DISPENSER_UP_2,
GPI074_LS_DISPENSER_UP_3,
GPI075_LS_DISPENSER_UP_4,
GPI076_LS_DISPENSER_UP_5,
GPI077_LS_DISPENSER_UP_6,
GPI078_LS_DISPENSER_UP_7,
GPI079_LS_DISPENSER_UP_8,
GPI080_MIDTANK1_LVL1_FLOAT,
GPI081_MIDTANK1_LVL2_FLOAT,
GPI082_MIDTANK1_LVL3_FLOAT,
GPI083_MIDTANK1_LVL4_FLOAT,
GPI084_MIDTANK2_LVL1_FLOAT,
GPI085_MIDTANK2_LVL2_FLOAT,
GPI086_MIDTANK2_LVL3_FLOAT,
GPI087_MIDTANK2_LVL4_FLOAT,
GPI088_MIDTANK3_LVL1_FLOAT,
GPI089_MIDTANK3_LVL2_FLOAT,
GPI090_MIDTANK3_LVL3_FLOAT,
GPI091_MIDTANK3_LVL4_FLOAT,
GPI092_MIDTANK4_LVL1_FLOAT,
GPI093_MIDTANK4_LVL2_FLOAT,
GPI094_MIDTANK4_LVL3_FLOAT,
GPI095_MIDTANK4_LVL4_FLOAT,
GPI096_MIDTANK5_LVL1_FLOAT,
GPI097_MIDTANK5_LVL2_FLOAT,
GPI098_MIDTANK5_LVL3_FLOAT,
GPI099_MIDTANK5_LVL4_FLOAT,
GPI100_MIDTANK6_LVL1_FLOAT,
GPI101_MIDTANK6_LVL2_FLOAT,
GPI102_MIDTANK6_LVL3_FLOAT,
GPI103_MIDTANK6_LVL4_FLOAT,
GPI104_MIDTANK7_LVL1_FLOAT,
GPI105_MIDTANK7_LVL2_FLOAT,
GPI106_MIDTANK7_LVL3_FLOAT,
GPI107_MIDTANK7_LVL4_FLOAT,
GPI108_MIDTANK8_LVL1_FLOAT,
GPI109_MIDTANK8_LVL2_FLOAT,
GPI110_MIDTANK8_LVL3_FLOAT,
GPI111_MIDTANK8_LVL4_FLOAT,
GPI112_LS_SCREW_LEFT,
GPI113_LS_SCREW_RIGHT,
GPI114_SW_SPARE,
GPI115_SW_SPOOL_EXISTS,
GPI116_LS_LDANCER1_DOWN,
GPI117_LS_LDANCER1_UP,
GPI118_LS_LDANCER2_DOWN,
GPI119_LS_LDANCER2_UP,
GPI120_LS_LLOADMOTOR_DOWN,
GPI121_LS_LLOADMOTOR_UP,
GPI122_LS_LPIVOT_DOWN,
GPI123_LS_LPIVOT_UP,
GPI124_LS_LSPARE1,
GPI125_LS_LSPARE2,
GPI126_LS_PIVOT_SPARE1,
GPI127_LS_PIVOT_SPARE2,
GPI128_LS_RLOADMOTOR_UP,
GPI129_GPI_TFEED_BREAK_1,
GPI130_GPI_TFEED_BREAK_2,
GPI131_LS_RDANCER_DOWN,
GPI132_LS_RDANCER_UP,
GPI133_LS_RLOADMOTOR_DOWN,
GPI134_LS_RLOADRAM_DOWN, //F1_LS_RDANCER_LONG
GPI135_LS_RLOADRAM_UP,
GPI136_LS_RSPARE1,
GPI137_LS_RSPARE2,
GPI138_LS_SPARE1_1,
GPI139_LS_SPARE1_2,
GPI140_LS_SPARE1_3,
GPI141_LS_SPARE1_4,
GPI142_LS_SPARE2_1,
GPI143_LS_SPARE2_2,
GPI144_LS_SPARE2_3,
GPI145_LS_SPARE2_4,
GPI146_GPI_AIRFLOW_FLAP,
GPI147_GPI_BLOWER_TACH,
GPI148_GPI_CHILLER_FAULT,
GPI149_GPI_CHILLER_STAT1,
GPI150_GPI_SW_FILTER_PRES,
GPI151_GPI_WCONTAINER_FULL,
GPI152_GPI_WCONTAINER_WARN,
NUM_OF_GPIO_INT
}GPIOInt_t;
#define STATUS_GREEN_LED_ON ROM_GPIOPinWrite(GPIO_PORTN_BASE, GPIO_PIN_1, GPIO_PIN_1) //Turn ON STATUS Green LED
#define STATUS_RED_LED_ON ROM_GPIOPinWrite(GPIO_PORTS_BASE, GPIO_PIN_0, GPIO_PIN_0) //Turn ON STATUS Red LED
#define ACTIVITY_RED_LED_ON ROM_GPIOPinWrite(GPIO_PORTN_BASE, GPIO_PIN_0, GPIO_PIN_0) //Turn ON ACTIVITY Red LED
#define ACTIVITY_GREEN_LED_ON ROM_GPIOPinWrite(GPIO_PORTJ_BASE, GPIO_PIN_0, GPIO_PIN_0) //Turn ON ACTIVITY Green LED
#define COMM_RED_LED_ON ROM_GPIOPinWrite(GPIO_PORTP_BASE, GPIO_PIN_4, GPIO_PIN_4) //Turn ON COMM Red LED
#define COMM_GREEN_LED_ON ROM_GPIOPinWrite(GPIO_PORTJ_BASE, GPIO_PIN_1, GPIO_PIN_1) //Turn ON COMM Green LED
#define STATUS_GREEN_LED_OFF ROM_GPIOPinWrite(GPIO_PORTN_BASE, GPIO_PIN_1, 0) //Turn OFF STATUS Green LED
#define STATUS_RED_LED_OFF ROM_GPIOPinWrite(GPIO_PORTS_BASE, GPIO_PIN_0, 0) //Turn OFF STATUS Red LED
#define ACTIVITY_RED_LED_OFF ROM_GPIOPinWrite(GPIO_PORTN_BASE, GPIO_PIN_0, 0) //Turn OFF ACTIVITY Red LED
#define ACTIVITY_GREEN_LED_OFF ROM_GPIOPinWrite(GPIO_PORTJ_BASE, GPIO_PIN_0, 0) //Turn OFF ACTIVITY Green LED
#define COMM_RED_LED_OFF ROM_GPIOPinWrite(GPIO_PORTP_BASE, GPIO_PIN_4, 0) //Turn OFF Red LED LED
#define COMM_GREEN_LED_OFF ROM_GPIOPinWrite(GPIO_PORTJ_BASE, GPIO_PIN_1, 0) //Turn OFF COMM Green LED
#define STATUS_GREEN_LED_CHANGE_MODE ROM_GPIOPinWrite(GPIO_PORTN_BASE, GPIO_PIN_1, (ROM_GPIOPinRead(GPIO_PORTN_BASE, GPIO_PIN_1) ^ GPIO_PIN_1));
#define ACTIVITY_RED_LED_CHANGE_MODE ROM_GPIOPinWrite(GPIO_PORTN_BASE, GPIO_PIN_0, (ROM_GPIOPinRead(GPIO_PORTN_BASE, GPIO_PIN_0) ^ GPIO_PIN_0));
#define COMM_RED_CHANGE_MODE ROM_GPIOPinWrite(GPIO_PORTP_BASE, GPIO_PIN_4, (ROM_GPIOPinRead(GPIO_PORTP_BASE, GPIO_PIN_4) ^ GPIO_PIN_4));
typedef void (*GPIOIntCallback)(GPIOInt_t arg);
void GPIOInit(void);
bool PollGPIO (uint8_t index);
void GPIOEnableInterrupt(GPIOInt_t gpioInt, GPIOIntCallback callBack, uint32_t type);
void GPIODisableInterrupt(GPIOInt_t gpioInt,GPIOIntCallback callBack);
#endif /* DRIVERS_GPIO_H_ */