/*******************************************************************************
 FileName:      HardwareProfile.h
 Dependencies:  See INCLUDES section
 Processor:     PIC18, PIC24, or PIC32 USB Microcontrollers
 Hardware:      The code is natively intended to be used on the 
                following hardware platforms: 
                    PICDEM?FS USB Demo Board
                    Explorer 16 + PIC24 or PIC32 USB PIMs
                The firmware may be modified for use on other USB 
                platforms by editing this file (HardwareProfile.h)
 Compiler:  	Microchip C18 (for PIC18), C30 (for PIC24), or C32 (for PIC32)
 Company:       Microchip Technology, Inc.

 Software License Agreement:

 The software supplied herewith by Microchip Technology Incorporated
 (the “Company? for its PIC?Microcontroller is intended and
 supplied to you, the Company’s customer, for use solely and
 exclusively on Microchip PIC Microcontroller products. The
 software is owned by the Company and/or its supplier, and is
 protected under applicable copyright laws. All rights are reserved.
 Any use in violation of the foregoing restrictions may subject the
 user to criminal sanctions under applicable laws, as well as to
 civil liability for the breach of the terms and conditions of this
 license.

 THIS SOFTWARE IS PROVIDED IN AN “AS IS?CONDITION. NO WARRANTIES,
 WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED
 TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
 PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. THE COMPANY SHALL NOT,
 IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL OR
 CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.

********************************************************************************
 File Description:

 Change History:
  Rev   Date         Description
  1.0   11/19/2004   Initial release
  2.1   02/26/2007   Updated for simplicity and to use common
                     coding style
  2.3   09/15/2008   Broke out each hardware platform into its own
                     "HardwareProfile - xxx.h" file
  3.0   10/12/2009   COM3101 v1.0
*******************************************************************************/

#ifndef HARDWARE_PROFILE_H
#define HARDWARE_PROFILE_H


	//#define USE_SELF_POWER_SENSE_IO
	#define tris_self_power     TRISAbits.TRISA2    // Input
	#define self_power          1
	
	//#define USE_USB_BUS_SENSE_IO
	#define tris_usb_bus_sense  TRISBbits.TRISB0    // Input
	#define USB_BUS_SENSE       0 
	
	/** Board definition ***********************************************/
	//  These defintions will tell the main() function which board is
	//  currently selected.  This will allow the application to add
	//  the correct configuration bits as wells use the correct
	//  initialization functions for the board.  These defitions are only
	//  required in the stack provided demos.  They are not required in
	//  final application design.
            
	#define DEMO_BOARD PIC32MX795F512L_PIM
	#define EXPLORER_16
	#define PIC32MX795F512L_PIM
	
	/** LED ************************************************************/
    #define mInitAllLEDs()      LATE &= 0xFF00; TRISE &= 0xFF00;
    
    #define mLED_1              LATEbits.LATE0
    #define mLED_2              LATEbits.LATE1
    #define mLED_3              LATEbits.LATE2
    #define mLED_4              LATEbits.LATE3
    
    /** SWITCH *********************************************************/
    #define mInitSwitch3()      TRISBbits.TRISB2=1;
    #define mInitSwitch4()      TRISBbits.TRISB3=1;
    #define mInitSwitch5()      TRISBbits.TRISB6=1;
    #define mInitSwitch6()      TRISBbits.TRISB7=1;
    #define mInitAllSwitches()  mInitSwitch3();mInitSwitch4();mInitSwitch5();mInitSwitch6();
    #define sw3                 PORTBbits.RB2
    #define sw4                 PORTBbits.RB3
    #define sw5                 PORTBbits.RB6
    #define sw6                 PORTBbits.RB7
  
    /** LED MACROS *****************************************************/
    #define mGetLED_1()         mLED_1
    #define mGetLED_2()         mLED_2
    #define mGetLED_3()         mLED_3
    #define mGetLED_4()         mLED_4
    #define mLED_1_On()         mLED_1 = 1;
    #define mLED_2_On()         mLED_2 = 1;
    #define mLED_3_On()         mLED_3 = 1;
    #define mLED_4_On()         mLED_4 = 1;
    #define mLED_1_Off()        mLED_1 = 0;
    #define mLED_2_Off()        mLED_2 = 0;
    #define mLED_3_Off()        mLED_3 = 0;
    #define mLED_4_Off()        mLED_4 = 0;
    #define mLED_1_Toggle()     mLED_1 = !mLED_1;
    #define mLED_2_Toggle()     mLED_2 = !mLED_2;
    #define mLED_3_Toggle()     mLED_3 = !mLED_3;
    #define mLED_4_Toggle()     mLED_4 = !mLED_4;
    
    /** LAB SWITCH *****************************************************/
    #define sw  sw3

    /** I/O pin definitions ********************************************/
    #define INPUT_PIN  1
    #define OUTPUT_PIN 0

#endif  //HARDWARE_PROFILE_H
