/**
  @Generated Pin Manager Header File

  @Company:
    Microchip Technology Inc.

  @File Name:
    pin_manager.h

  @Summary:
    This is the Pin Manager file generated using MPLAB(c) Code Configurator

  @Description:
    This header file provides implementations for pin APIs for all pins selected in the GUI.
    Generation Information :
        Product Revision  :  MPLAB(c) Code Configurator - 4.0
        Device            :  PIC18LF46K22
        Version           :  1.01
    The generated drivers are tested against the following:
        Compiler          :  XC8 1.35
        MPLAB             :  MPLAB X 3.40

    Copyright (c) 2013 - 2015 released Microchip Technology Inc.  All rights reserved.

    Microchip licenses to you the right to use, modify, copy and distribute
    Software only when embedded on a Microchip microcontroller or digital signal
    controller that is integrated into your product or third party product
    (pursuant to the sublicense terms in the accompanying license agreement).

    You should refer to the license agreement accompanying this Software for
    additional information regarding your rights and obligations.

    SOFTWARE AND DOCUMENTATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,
    EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF
    MERCHANTABILITY, TITLE, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE.
    IN NO EVENT SHALL MICROCHIP OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER
    CONTRACT, NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR
    OTHER LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES
    INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE OR
    CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT OF
    SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES
    (INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.

*/


#ifndef PIN_MANAGER_H
#define PIN_MANAGER_H


char move_F;

#define INPUT   1
#define OUTPUT  0

#define HIGH    1
#define LOW     0

#define ANALOG      1
#define DIGITAL     0

#define PULL_UP_ENABLED      1
#define PULL_UP_DISABLED     0

// get/set s_SPI_MISO aliases
#define s_SPI_MISO_TRIS               TRISAbits.TRISA0
#define s_SPI_MISO_LAT                LATAbits.LATA0
#define s_SPI_MISO_PORT               PORTAbits.RA0
#define s_SPI_MISO_ANS                ANSELAbits.ANSA0
#define s_SPI_MISO_SetHigh()            do { LATAbits.LATA0 = 1; } while(0)
#define s_SPI_MISO_SetLow()             do { LATAbits.LATA0 = 0; } while(0)
#define s_SPI_MISO_Toggle()             do { LATAbits.LATA0 = ~LATAbits.LATA0; } while(0)
#define s_SPI_MISO_GetValue()           PORTAbits.RA0
#define s_SPI_MISO_SetDigitalInput()    do { TRISAbits.TRISA0 = 1; } while(0)
#define s_SPI_MISO_SetDigitalOutput()   do { TRISAbits.TRISA0 = 0; } while(0)
#define s_SPI_MISO_SetAnalogMode()  do { ANSELAbits.ANSA0 = 1; } while(0)
#define s_SPI_MISO_SetDigitalMode() do { ANSELAbits.ANSA0 = 0; } while(0)

// get/set s_SPI_MOSI aliases
#define s_SPI_MOSI_TRIS               TRISAbits.TRISA1
#define s_SPI_MOSI_LAT                LATAbits.LATA1
#define s_SPI_MOSI_PORT               PORTAbits.RA1
#define s_SPI_MOSI_ANS                ANSELAbits.ANSA1
#define s_SPI_MOSI_SetHigh()            do { LATAbits.LATA1 = 1; } while(0)
#define s_SPI_MOSI_SetLow()             do { LATAbits.LATA1 = 0; } while(0)
#define s_SPI_MOSI_Toggle()             do { LATAbits.LATA1 = ~LATAbits.LATA1; } while(0)
#define s_SPI_MOSI_GetValue()           PORTAbits.RA1
#define s_SPI_MOSI_SetDigitalInput()    do { TRISAbits.TRISA1 = 1; } while(0)
#define s_SPI_MOSI_SetDigitalOutput()   do { TRISAbits.TRISA1 = 0; } while(0)
#define s_SPI_MOSI_SetAnalogMode()  do { ANSELAbits.ANSA1 = 1; } while(0)
#define s_SPI_MOSI_SetDigitalMode() do { ANSELAbits.ANSA1 = 0; } while(0)

// get/set s_SPI_SCK aliases
#define s_SPI_SCK_TRIS               TRISAbits.TRISA2
#define s_SPI_SCK_LAT                LATAbits.LATA2
#define s_SPI_SCK_PORT               PORTAbits.RA2
#define s_SPI_SCK_ANS                ANSELAbits.ANSA2
#define s_SPI_SCK_SetHigh()            do { LATAbits.LATA2 = 1; } while(0)
#define s_SPI_SCK_SetLow()             do { LATAbits.LATA2 = 0; } while(0)
#define s_SPI_SCK_Toggle()             do { LATAbits.LATA2 = ~LATAbits.LATA2; } while(0)
#define s_SPI_SCK_GetValue()           PORTAbits.RA2
#define s_SPI_SCK_SetDigitalInput()    do { TRISAbits.TRISA2 = 1; } while(0)
#define s_SPI_SCK_SetDigitalOutput()   do { TRISAbits.TRISA2 = 0; } while(0)
#define s_SPI_SCK_SetAnalogMode()  do { ANSELAbits.ANSA2 = 1; } while(0)
#define s_SPI_SCK_SetDigitalMode() do { ANSELAbits.ANSA2 = 0; } while(0)

// get/set s_SPI_CS aliases
#define s_SPI_CS_TRIS               TRISAbits.TRISA3
#define s_SPI_CS_LAT                LATAbits.LATA3
#define s_SPI_CS_PORT               PORTAbits.RA3
#define s_SPI_CS_ANS                ANSELAbits.ANSA3
#define s_SPI_CS_SetHigh()            do { LATAbits.LATA3 = 1; } while(0)
#define s_SPI_CS_SetLow()             do { LATAbits.LATA3 = 0; } while(0)
#define s_SPI_CS_Toggle()             do { LATAbits.LATA3 = ~LATAbits.LATA3; } while(0)
#define s_SPI_CS_GetValue()           PORTAbits.RA3
#define s_SPI_CS_SetDigitalInput()    do { TRISAbits.TRISA3 = 1; } while(0)
#define s_SPI_CS_SetDigitalOutput()   do { TRISAbits.TRISA3 = 0; } while(0)
#define s_SPI_CS_SetAnalogMode()  do { ANSELAbits.ANSA3 = 1; } while(0)
#define s_SPI_CS_SetDigitalMode() do { ANSELAbits.ANSA3 = 0; } while(0)

// get/set RB0 procedures
#define RB0_SetHigh()    do { LATBbits.LATB0 = 1; } while(0)
#define RB0_SetLow()   do { LATBbits.LATB0 = 0; } while(0)
#define RB0_Toggle()   do { LATBbits.LATB0 = ~LATBbits.LATB0; } while(0)
#define RB0_GetValue()         PORTBbits.RB0
#define RB0_SetDigitalInput()   do { TRISBbits.TRISB0 = 1; } while(0)
#define RB0_SetDigitalOutput()  do { TRISBbits.TRISB0 = 0; } while(0)
#define RB0_SetPullup()     do { WPUBbits.WPUB0 = 1; } while(0)
#define RB0_ResetPullup()   do { WPUBbits.WPUB0 = 0; } while(0)
#define RB0_SetAnalogMode() do { ANSELBbits.ANSB0 = 1; } while(0)
#define RB0_SetDigitalMode()do { ANSELBbits.ANSB0 = 0; } while(0)

// get/set RB1 procedures
#define RB1_SetHigh()    do { LATBbits.LATB1 = 1; } while(0)
#define RB1_SetLow()   do { LATBbits.LATB1 = 0; } while(0)
#define RB1_Toggle()   do { LATBbits.LATB1 = ~LATBbits.LATB1; } while(0)
#define RB1_GetValue()         PORTBbits.RB1
#define RB1_SetDigitalInput()   do { TRISBbits.TRISB1 = 1; } while(0)
#define RB1_SetDigitalOutput()  do { TRISBbits.TRISB1 = 0; } while(0)
#define RB1_SetPullup()     do { WPUBbits.WPUB1 = 1; } while(0)
#define RB1_ResetPullup()   do { WPUBbits.WPUB1 = 0; } while(0)
#define RB1_SetAnalogMode() do { ANSELBbits.ANSB1 = 1; } while(0)
#define RB1_SetDigitalMode()do { ANSELBbits.ANSB1 = 0; } while(0)

// get/set RB2 procedures
#define RB2_SetHigh()    do { LATBbits.LATB2 = 1; } while(0)
#define RB2_SetLow()   do { LATBbits.LATB2 = 0; } while(0)
#define RB2_Toggle()   do { LATBbits.LATB2 = ~LATBbits.LATB2; } while(0)
#define RB2_GetValue()         PORTBbits.RB2
#define RB2_SetDigitalInput()   do { TRISBbits.TRISB2 = 1; } while(0)
#define RB2_SetDigitalOutput()  do { TRISBbits.TRISB2 = 0; } while(0)
#define RB2_SetPullup()     do { WPUBbits.WPUB2 = 1; } while(0)
#define RB2_ResetPullup()   do { WPUBbits.WPUB2 = 0; } while(0)
#define RB2_SetAnalogMode() do { ANSELBbits.ANSB2 = 1; } while(0)
#define RB2_SetDigitalMode()do { ANSELBbits.ANSB2 = 0; } while(0)

// get/set RB4 procedures
#define RB4_SetHigh()    do { LATBbits.LATB4 = 1; } while(0)
#define RB4_SetLow()   do { LATBbits.LATB4 = 0; } while(0)
#define RB4_Toggle()   do { LATBbits.LATB4 = ~LATBbits.LATB4; } while(0)
#define RB4_GetValue()         PORTBbits.RB4
#define RB4_SetDigitalInput()   do { TRISBbits.TRISB4 = 1; } while(0)
#define RB4_SetDigitalOutput()  do { TRISBbits.TRISB4 = 0; } while(0)
#define RB4_SetPullup()     do { WPUBbits.WPUB4 = 1; } while(0)
#define RB4_ResetPullup()   do { WPUBbits.WPUB4 = 0; } while(0)
#define RB4_SetAnalogMode() do { ANSELBbits.ANSB4 = 1; } while(0)
#define RB4_SetDigitalMode()do { ANSELBbits.ANSB4 = 0; } while(0)

// get/set AKC_INT aliases
#define AKC_INT_TRIS               TRISBbits.TRISB7
#define AKC_INT_LAT                LATBbits.LATB7
#define AKC_INT_PORT               PORTBbits.RB7
#define AKC_INT_WPU                WPUBbits.WPUB7
#define AKC_INT_SetHigh()            do { LATBbits.LATB7 = 1; } while(0)
#define AKC_INT_SetLow()             do { LATBbits.LATB7 = 0; } while(0)
#define AKC_INT_Toggle()             do { LATBbits.LATB7 = ~LATBbits.LATB7; } while(0)
#define AKC_INT_GetValue()           PORTBbits.RB7
#define AKC_INT_SetDigitalInput()    do { TRISBbits.TRISB7 = 1; } while(0)
#define AKC_INT_SetDigitalOutput()   do { TRISBbits.TRISB7 = 0; } while(0)
#define AKC_INT_SetPullup()      do { WPUBbits.WPUB7 = 1; } while(0)
#define AKC_INT_ResetPullup()    do { WPUBbits.WPUB7 = 0; } while(0)

// get/set RC0 procedures
#define RC0_SetHigh()    do { LATCbits.LATC0 = 1; } while(0)
#define RC0_SetLow()   do { LATCbits.LATC0 = 0; } while(0)
#define RC0_Toggle()   do { LATCbits.LATC0 = ~LATCbits.LATC0; } while(0)
#define RC0_GetValue()         PORTCbits.RC0
#define RC0_SetDigitalInput()   do { TRISCbits.TRISC0 = 1; } while(0)
#define RC0_SetDigitalOutput()  do { TRISCbits.TRISC0 = 0; } while(0)

// get/set RC1 procedures
#define RC1_SetHigh()    do { LATCbits.LATC1 = 1; } while(0)
#define RC1_SetLow()   do { LATCbits.LATC1 = 0; } while(0)
#define RC1_Toggle()   do { LATCbits.LATC1 = ~LATCbits.LATC1; } while(0)
#define RC1_GetValue()         PORTCbits.RC1
#define RC1_SetDigitalInput()   do { TRISCbits.TRISC1 = 1; } while(0)
#define RC1_SetDigitalOutput()  do { TRISCbits.TRISC1 = 0; } while(0)

// get/set RC2 procedures
#define RC2_SetHigh()    do { LATCbits.LATC2 = 1; } while(0)
#define RC2_SetLow()   do { LATCbits.LATC2 = 0; } while(0)
#define RC2_Toggle()   do { LATCbits.LATC2 = ~LATCbits.LATC2; } while(0)
#define RC2_GetValue()         PORTCbits.RC2
#define RC2_SetDigitalInput()   do { TRISCbits.TRISC2 = 1; } while(0)
#define RC2_SetDigitalOutput()  do { TRISCbits.TRISC2 = 0; } while(0)
#define RC2_SetAnalogMode() do { ANSELCbits.ANSC2 = 1; } while(0)
#define RC2_SetDigitalMode()do { ANSELCbits.ANSC2 = 0; } while(0)

// get/set RC6 procedures
#define RC6_SetHigh()    do { LATCbits.LATC6 = 1; } while(0)
#define RC6_SetLow()   do { LATCbits.LATC6 = 0; } while(0)
#define RC6_Toggle()   do { LATCbits.LATC6 = ~LATCbits.LATC6; } while(0)
#define RC6_GetValue()         PORTCbits.RC6
#define RC6_SetDigitalInput()   do { TRISCbits.TRISC6 = 1; } while(0)
#define RC6_SetDigitalOutput()  do { TRISCbits.TRISC6 = 0; } while(0)
#define RC6_SetAnalogMode() do { ANSELCbits.ANSC6 = 1; } while(0)
#define RC6_SetDigitalMode()do { ANSELCbits.ANSC6 = 0; } while(0)

// get/set RC7 procedures
#define RC7_SetHigh()    do { LATCbits.LATC7 = 1; } while(0)
#define RC7_SetLow()   do { LATCbits.LATC7 = 0; } while(0)
#define RC7_Toggle()   do { LATCbits.LATC7 = ~LATCbits.LATC7; } while(0)
#define RC7_GetValue()         PORTCbits.RC7
#define RC7_SetDigitalInput()   do { TRISCbits.TRISC7 = 1; } while(0)
#define RC7_SetDigitalOutput()  do { TRISCbits.TRISC7 = 0; } while(0)
#define RC7_SetAnalogMode() do { ANSELCbits.ANSC7 = 1; } while(0)
#define RC7_SetDigitalMode()do { ANSELCbits.ANSC7 = 0; } while(0)

// get/set RD0 procedures
#define RD0_SetHigh()    do { LATDbits.LATD0 = 1; } while(0)
#define RD0_SetLow()   do { LATDbits.LATD0 = 0; } while(0)
#define RD0_Toggle()   do { LATDbits.LATD0 = ~LATDbits.LATD0; } while(0)
#define RD0_GetValue()         PORTDbits.RD0
#define RD0_SetDigitalInput()   do { TRISDbits.TRISD0 = 1; } while(0)
#define RD0_SetDigitalOutput()  do { TRISDbits.TRISD0 = 0; } while(0)
#define RD0_SetAnalogMode() do { ANSELDbits.ANSD0 = 1; } while(0)
#define RD0_SetDigitalMode()do { ANSELDbits.ANSD0 = 0; } while(0)

// get/set RD1 procedures
#define RD1_SetHigh()    do { LATDbits.LATD1 = 1; } while(0)
#define RD1_SetLow()   do { LATDbits.LATD1 = 0; } while(0)
#define RD1_Toggle()   do { LATDbits.LATD1 = ~LATDbits.LATD1; } while(0)
#define RD1_GetValue()         PORTDbits.RD1
#define RD1_SetDigitalInput()   do { TRISDbits.TRISD1 = 1; } while(0)
#define RD1_SetDigitalOutput()  do { TRISDbits.TRISD1 = 0; } while(0)
#define RD1_SetAnalogMode() do { ANSELDbits.ANSD1 = 1; } while(0)
#define RD1_SetDigitalMode()do { ANSELDbits.ANSD1 = 0; } while(0)

// get/set BAT_TR aliases
#define BAT_TR_TRIS               TRISDbits.TRISD2
#define BAT_TR_LAT                LATDbits.LATD2
#define BAT_TR_PORT               PORTDbits.RD2
#define BAT_TR_ANS                ANSELDbits.ANSD2
#define BAT_TR_SetHigh()            do { LATDbits.LATD2 = 1; } while(0)
#define BAT_TR_SetLow()             do { LATDbits.LATD2 = 0; } while(0)
#define BAT_TR_Toggle()             do { LATDbits.LATD2 = ~LATDbits.LATD2; } while(0)
#define BAT_TR_GetValue()           PORTDbits.RD2
#define BAT_TR_SetDigitalInput()    do { TRISDbits.TRISD2 = 1; } while(0)
#define BAT_TR_SetDigitalOutput()   do { TRISDbits.TRISD2 = 0; } while(0)
#define BAT_TR_SetAnalogMode()  do { ANSELDbits.ANSD2 = 1; } while(0)
#define BAT_TR_SetDigitalMode() do { ANSELDbits.ANSD2 = 0; } while(0)

// get/set RD3 procedures
#define RD3_SetHigh()    do { LATDbits.LATD3 = 1; } while(0)
#define RD3_SetLow()   do { LATDbits.LATD3 = 0; } while(0)
#define RD3_Toggle()   do { LATDbits.LATD3 = ~LATDbits.LATD3; } while(0)
#define RD3_GetValue()         PORTDbits.RD3
#define RD3_SetDigitalInput()   do { TRISDbits.TRISD3 = 1; } while(0)
#define RD3_SetDigitalOutput()  do { TRISDbits.TRISD3 = 0; } while(0)
#define RD3_SetAnalogMode() do { ANSELDbits.ANSD3 = 1; } while(0)
#define RD3_SetDigitalMode()do { ANSELDbits.ANSD3 = 0; } while(0)

// get/set RD4 procedures
#define RD4_SetHigh()    do { LATDbits.LATD4 = 1; } while(0)
#define RD4_SetLow()   do { LATDbits.LATD4 = 0; } while(0)
#define RD4_Toggle()   do { LATDbits.LATD4 = ~LATDbits.LATD4; } while(0)
#define RD4_GetValue()         PORTDbits.RD4
#define RD4_SetDigitalInput()   do { TRISDbits.TRISD4 = 1; } while(0)
#define RD4_SetDigitalOutput()  do { TRISDbits.TRISD4 = 0; } while(0)
#define RD4_SetAnalogMode() do { ANSELDbits.ANSD4 = 1; } while(0)
#define RD4_SetDigitalMode()do { ANSELDbits.ANSD4 = 0; } while(0)

// get/set SW_EN aliases
#define SW_EN_TRIS               TRISDbits.TRISD5
#define SW_EN_LAT                LATDbits.LATD5
#define SW_EN_PORT               PORTDbits.RD5
#define SW_EN_ANS                ANSELDbits.ANSD5
#define SW_EN_SetHigh()            do { LATDbits.LATD5 = 1; } while(0)
#define SW_EN_SetLow()             do { LATDbits.LATD5 = 0; } while(0)
#define SW_EN_Toggle()             do { LATDbits.LATD5 = ~LATDbits.LATD5; } while(0)
#define SW_EN_GetValue()           PORTDbits.RD5
#define SW_EN_SetDigitalInput()    do { TRISDbits.TRISD5 = 1; } while(0)
#define SW_EN_SetDigitalOutput()   do { TRISDbits.TRISD5 = 0; } while(0)
#define SW_EN_SetAnalogMode()  do { ANSELDbits.ANSD5 = 1; } while(0)
#define SW_EN_SetDigitalMode() do { ANSELDbits.ANSD5 = 0; } while(0)

// get/set RD6 procedures
#define RD6_SetHigh()    do { LATDbits.LATD6 = 1; } while(0)
#define RD6_SetLow()   do { LATDbits.LATD6 = 0; } while(0)
#define RD6_Toggle()   do { LATDbits.LATD6 = ~LATDbits.LATD6; } while(0)
#define RD6_GetValue()         PORTDbits.RD6
#define RD6_SetDigitalInput()   do { TRISDbits.TRISD6 = 1; } while(0)
#define RD6_SetDigitalOutput()  do { TRISDbits.TRISD6 = 0; } while(0)
#define RD6_SetAnalogMode() do { ANSELDbits.ANSD6 = 1; } while(0)
#define RD6_SetDigitalMode()do { ANSELDbits.ANSD6 = 0; } while(0)

// get/set RD7 procedures
#define RD7_SetHigh()    do { LATDbits.LATD7 = 1; } while(0)
#define RD7_SetLow()   do { LATDbits.LATD7 = 0; } while(0)
#define RD7_Toggle()   do { LATDbits.LATD7 = ~LATDbits.LATD7; } while(0)
#define RD7_GetValue()         PORTDbits.RD7
#define RD7_SetDigitalInput()   do { TRISDbits.TRISD7 = 1; } while(0)
#define RD7_SetDigitalOutput()  do { TRISDbits.TRISD7 = 0; } while(0)
#define RD7_SetAnalogMode() do { ANSELDbits.ANSD7 = 1; } while(0)
#define RD7_SetDigitalMode()do { ANSELDbits.ANSD7 = 0; } while(0)

// get/set GNSS_RESET aliases
#define GNSS_RESET_TRIS               TRISEbits.TRISE0
#define GNSS_RESET_LAT                LATEbits.LATE0
#define GNSS_RESET_PORT               PORTEbits.RE0
#define GNSS_RESET_ANS                ANSELEbits.ANSE0
#define GNSS_RESET_SetHigh()            do { LATEbits.LATE0 = 1; } while(0)
#define GNSS_RESET_SetLow()             do { LATEbits.LATE0 = 0; } while(0)
#define GNSS_RESET_Toggle()             do { LATEbits.LATE0 = ~LATEbits.LATE0; } while(0)
#define GNSS_RESET_GetValue()           PORTEbits.RE0
#define GNSS_RESET_SetDigitalInput()    do { TRISEbits.TRISE0 = 1; } while(0)
#define GNSS_RESET_SetDigitalOutput()   do { TRISEbits.TRISE0 = 0; } while(0)
#define GNSS_RESET_SetAnalogMode()  do { ANSELEbits.ANSE0 = 1; } while(0)
#define GNSS_RESET_SetDigitalMode() do { ANSELEbits.ANSE0 = 0; } while(0)

// get/set GNSS_WAKE aliases
#define GNSS_WAKE_TRIS               TRISEbits.TRISE1
#define GNSS_WAKE_LAT                LATEbits.LATE1
#define GNSS_WAKE_PORT               PORTEbits.RE1
#define GNSS_WAKE_ANS                ANSELEbits.ANSE1
#define GNSS_WAKE_SetHigh()            do { LATEbits.LATE1 = 1; } while(0)
#define GNSS_WAKE_SetLow()             do { LATEbits.LATE1 = 0; } while(0)
#define GNSS_WAKE_Toggle()             do { LATEbits.LATE1 = ~LATEbits.LATE1; } while(0)
#define GNSS_WAKE_GetValue()           PORTEbits.RE1
#define GNSS_WAKE_SetDigitalInput()    do { TRISEbits.TRISE1 = 1; } while(0)
#define GNSS_WAKE_SetDigitalOutput()   do { TRISEbits.TRISE1 = 0; } while(0)
#define GNSS_WAKE_SetAnalogMode()  do { ANSELEbits.ANSE1 = 1; } while(0)
#define GNSS_WAKE_SetDigitalMode() do { ANSELEbits.ANSE1 = 0; } while(0)

// get/set A_BAT aliases
#define A_BAT_TRIS               TRISEbits.TRISE2
#define A_BAT_LAT                LATEbits.LATE2
#define A_BAT_PORT               PORTEbits.RE2
#define A_BAT_ANS                ANSELEbits.ANSE2
#define A_BAT_SetHigh()            do { LATEbits.LATE2 = 1; } while(0)
#define A_BAT_SetLow()             do { LATEbits.LATE2 = 0; } while(0)
#define A_BAT_Toggle()             do { LATEbits.LATE2 = ~LATEbits.LATE2; } while(0)
#define A_BAT_GetValue()           PORTEbits.RE2
#define A_BAT_SetDigitalInput()    do { TRISEbits.TRISE2 = 1; } while(0)
#define A_BAT_SetDigitalOutput()   do { TRISEbits.TRISE2 = 0; } while(0)
#define A_BAT_SetAnalogMode()  do { ANSELEbits.ANSE2 = 1; } while(0)
#define A_BAT_SetDigitalMode() do { ANSELEbits.ANSE2 = 0; } while(0)

/**
   @Param
    none
   @Returns
    none
   @Description
    GPIO and peripheral I/O initialization
   @Example
    PIN_MANAGER_Initialize();
 */
void PIN_MANAGER_Initialize (void);

/**
 * @Param
    none
 * @Returns
    none
 * @Description
    Interrupt on Change Handling routine
 * @Example
    PIN_MANAGER_IOC();
 */
void PIN_MANAGER_IOC(void);


/**
 * @Param
    none
 * @Returns
    none
 * @Description
    Interrupt on Change Handler for the IOCB4 pin functionality
 * @Example
    IOCB4_ISR();
 */
void IOCB4_ISR(void);

/**
  @Summary
    Interrupt Handler Setter for IOCB4 pin interrupt-on-change functionality

  @Description
    Allows selecting an interrupt handler for IOCB4 at application runtime
    
  @Preconditions
    Pin Manager intializer called

  @Returns
    None.

  @Param
    InterruptHandler function pointer.

  @Example
    PIN_MANAGER_Initialize();
    IOCB4_SetInterruptHandler(MyInterruptHandler);

*/
void IOCB4_SetInterruptHandler(void* InterruptHandler);

/**
  @Summary
    Dynamic Interrupt Handler for IOCB4 pin

  @Description
    This is a dynamic interrupt handler to be used together with the IOCB4_SetInterruptHandler() method.
    This handler is called every time the IOCB4 ISR is executed and allows any function to be registered at runtime.
    
  @Preconditions
    Pin Manager intializer called

  @Returns
    None.

  @Param
    None.

  @Example
    PIN_MANAGER_Initialize();
    IOCB4_SetInterruptHandler(IOCB4_InterruptHandler);

*/
extern void (*IOCB4_InterruptHandler)(void);

/**
  @Summary
    Default Interrupt Handler for IOCB4 pin

  @Description
    This is a predefined interrupt handler to be used together with the IOCB4_SetInterruptHandler() method.
    This handler is called every time the IOCB4 ISR is executed. 
    
  @Preconditions
    Pin Manager intializer called

  @Returns
    None.

  @Param
    None.

  @Example
    PIN_MANAGER_Initialize();
    IOCB4_SetInterruptHandler(IOCB4_DefaultInterruptHandler);

*/
void IOCB4_DefaultInterruptHandler(void);


/**
 * @Param
    none
 * @Returns
    none
 * @Description
    Interrupt on Change Handler for the IOCB7 pin functionality
 * @Example
    IOCB7_ISR();
 */
void IOCB7_ISR(void);

/**
  @Summary
    Interrupt Handler Setter for IOCB7 pin interrupt-on-change functionality

  @Description
    Allows selecting an interrupt handler for IOCB7 at application runtime
    
  @Preconditions
    Pin Manager intializer called

  @Returns
    None.

  @Param
    InterruptHandler function pointer.

  @Example
    PIN_MANAGER_Initialize();
    IOCB7_SetInterruptHandler(MyInterruptHandler);

*/
void IOCB7_SetInterruptHandler(void* InterruptHandler);

/**
  @Summary
    Dynamic Interrupt Handler for IOCB7 pin

  @Description
    This is a dynamic interrupt handler to be used together with the IOCB7_SetInterruptHandler() method.
    This handler is called every time the IOCB7 ISR is executed and allows any function to be registered at runtime.
    
  @Preconditions
    Pin Manager intializer called

  @Returns
    None.

  @Param
    None.

  @Example
    PIN_MANAGER_Initialize();
    IOCB7_SetInterruptHandler(IOCB7_InterruptHandler);

*/
extern void (*IOCB7_InterruptHandler)(void);

/**
  @Summary
    Default Interrupt Handler for IOCB7 pin

  @Description
    This is a predefined interrupt handler to be used together with the IOCB7_SetInterruptHandler() method.
    This handler is called every time the IOCB7 ISR is executed. 
    
  @Preconditions
    Pin Manager intializer called

  @Returns
    None.

  @Param
    None.

  @Example
    PIN_MANAGER_Initialize();
    IOCB7_SetInterruptHandler(IOCB7_DefaultInterruptHandler);

*/
void IOCB7_DefaultInterruptHandler(void);



#endif // PIN_MANAGER_H
/**
 End of File
*/