/*********************************************************************
 *           Flowcode Peripheral Slot Allocation Header File
 *
 * File: includes.c
 *
 * (c) 2011 Matrix Multimedia Ltd.
 * http://www.matrixmultimedia.com
 *
 * Software License Agreement
 *
 * The software supplied herewith by Matrix Multimedia Ltd (the
 * “Company”) for its Flowcode graphical programming language is
 * intended and supplied to you, the Company’s customer, for use
 * solely and exclusively on the Company's products. The software
 * is owned by the Company, 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 licence.
 *
 * 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.
 *
 * Changelog:
 *
 *  date  | by | description
 * -------+----+-----------------------------------------------------
 * 160911 | BR | Created
 * 011211 | BR | Converted to new dynamic defines mechanism
 * 280612 | BR | Added new PWM - up to 16 channels
 * 120313 | LM | FC_CAL_xxx defines changed to MX_CAL_xxx
 * 260413 | LM | moved CALFUNCTION defines for case of missing REF1
 ****************************************************************/


#if defined MX_MIAC_MODULE_DSP || defined MX_MIAC_MODULE_AVR
	#include "MIAC\MIAC_CAL_API.c"
#endif

#ifdef MX_CAL_STARM

//	#include "STARM\STARM_CAL_TypeDefs.c"	//Variable Type Definitions
	#include "STARM\STARM_CAL_IO.c"		//I/O Definitions and Functions
	#include "STARM\STARM_CAL_Delay.c"	//Delay Definitions
	#include "STARM\STARM_CAL_String.c"	//String Definitions
	#include "STARM\STARM_CAL_Float.c"	//Float Definitions

	#include "STARM\STARM_CAL_CLOCKS.c"

	#ifdef USE_FLOWCODE_ICD			//ICD SPECIFICS
		#include "STARM\STARM_CAL_ICD.c"
	#endif
	#ifdef USE_FLOWCODE_ICD2		//ICD2 SPECIFICS
		#include "STARM\STARM_CAL_ICD2.c"
	#endif
#endif


//Sniff to see if any ADC channels are being used
#ifdef	MX_ADC_REF
  #ifdef MX_CAL_PIC
	#include "PIC\PIC_CAL_ADC.c"
  #endif
  #ifdef MX_CAL_PIC16
	#include "PIC16BIT\PIC16BIT_CAL_ADC.c"
  #endif
  #ifdef MX_CAL_PIC32
  #include "PIC32BIT\PIC32BIT_CAL_ADC.c"
  #endif
  #ifdef MX_CAL_AVR
	#include "AVR\AVR_CAL_ADC.c"
  #endif
  #ifdef MX_CAL_STARM
	#include "STARM\STARM_CAL_ADC.c"
  #elif defined MX_CAL_ARM
	#include "ARM\ARM_CAL_ADC.c"
  #endif
#endif


//Sniff to see if any DAC channels are being used
#define CALFUNCTION(type, name, args) type CAL_APPEND(name, MX_DAC_NUM) args
#ifdef	MX_DAC_REF1
  #define MX_DAC_NUM 1
  #ifdef MX_CAL_PIC
	#include "PIC\PIC_CAL_DAC.c"
  #endif
  #ifdef MX_CAL_PIC16
	#include "PIC16BIT\PIC16BIT_CAL_DAC.c"
  #endif
  #ifdef MX_CAL_PIC32
    //#include "PIC32BIT\PIC32BIT_CAL_DAC.c"
  #endif
  #ifdef MX_CAL_AVR
	//#include "AVR\AVR_CAL_DAC.c"
  #endif
  #ifdef MX_CAL_STARM
	#include "STARM\STARM_CAL_DAC.c"
  #elif defined MX_CAL_ARM
	//#include "ARM\ARM_CAL_DAC.c"
  #endif
  #undef MX_DAC_NUM
#endif
#ifdef	MX_DAC_REF2
  #define MX_DAC_NUM 2
  #ifdef MX_CAL_PIC
	#include "PIC\PIC_CAL_DAC.c"
  #endif
  #ifdef MX_CAL_PIC16
	#include "PIC16BIT\PIC16BIT_CAL_DAC.c"
  #endif
  #ifdef MX_CAL_PIC32
    //#include "PIC32BIT\PIC32BIT_CAL_DAC.c"
  #endif
  #ifdef MX_CAL_AVR
	//#include "AVR\AVR_CAL_DAC.c"
  #endif
  #ifdef MX_CAL_STARM
	#include "STARM\STARM_CAL_DAC.c"
  #elif defined MX_CAL_ARM
	//#include "ARM\ARM_CAL_DAC.c"
  #endif
  #undef MX_DAC_NUM
#endif
#ifdef	MX_DAC_REF3
  #define MX_DAC_NUM 3
  #ifdef MX_CAL_PIC
	#include "PIC\PIC_CAL_DAC.c"
  #endif
  #ifdef MX_CAL_PIC16
	#include "PIC16BIT\PIC16BIT_CAL_DAC.c"
  #endif
  #ifdef MX_CAL_PIC32
    //#include "PIC32BIT\PIC32BIT_CAL_DAC.c"
  #endif
  #ifdef MX_CAL_AVR
	//#include "AVR\AVR_CAL_DAC.c"
  #endif
  #ifdef MX_CAL_STARM
	#include "STARM\STARM_CAL_DAC.c"
  #elif defined MX_CAL_ARM
	//#include "ARM\ARM_CAL_DAC.c"
  #endif
  #undef MX_DAC_NUM
#endif
#ifdef	MX_DAC_REF4
  #define MX_DAC_NUM 4
  #ifdef MX_CAL_PIC
	#include "PIC\PIC_CAL_DAC.c"
  #endif
  #ifdef MX_CAL_PIC16
	#include "PIC16BIT\PIC16BIT_CAL_DAC.c"
  #endif
  #ifdef MX_CAL_PIC32
    //#include "PIC32BIT\PIC32BIT_CAL_DAC.c"
  #endif
  #ifdef MX_CAL_AVR
	//#include "AVR\AVR_CAL_DAC.c"
  #endif
  #ifdef MX_CAL_STARM
	#include "STARM\STARM_CAL_DAC.c"
  #elif defined MX_CAL_ARM
	//#include "ARM\ARM_CAL_DAC.c"
  #endif
  #undef MX_DAC_NUM
#endif
#ifdef CALFUNCTION
	#undef CALFUNCTION
#endif


//Sniff to see if any Internal CAN components are being used (External CAN uses SPI)
#define CALFUNCTION(type, name, args) type CAL_APPEND(name, MX_CAN_NUM) args
#ifdef	MX_CAN_REF1
  #define MX_CAN_NUM 1
  #ifdef MX_CAL_PIC
	#include "PIC\PIC_CAL_CAN.c"
  #endif
  #ifdef MX_CAL_PIC16
	#include "PIC16BIT\PIC16BIT_CAL_CAN.c"
  #endif
  #ifdef MX_CAL_PIC32
    #include "PIC32BIT\PIC32BIT_CAL_CAN.c"
  #endif
  #ifdef MX_CAL_AVR
	#include "AVR\AVR_CAL_CAN.c"
  #endif
  #ifdef MX_CAL_ARM
	#error "Internal CAN not supported on ARM AT91SAM7S devices"
  #endif
  #undef MX_CAN_NUM
#endif
#ifdef	MX_CAN_REF2
  #define MX_CAN_NUM 2
  #ifdef MX_CAL_PIC
	#include "PIC\PIC_CAL_CAN.c"
  #endif
  #ifdef MX_CAL_PIC16
	#include "PIC16BIT\PIC16BIT_CAL_CAN.c"
  #endif
  #ifdef MX_CAL_PIC32
    #include "PIC32BIT\PIC32BIT_CAL_CAN.c"
  #endif
  #ifdef MX_CAL_AVR
	#include "AVR\AVR_CAL_CAN.c"
  #endif
  #ifdef MX_CAL_ARM
	#error "Internal CAN not supported on ARM AT91SAM7S devices"
  #endif
  #undef MX_CAN_NUM
#endif
#ifdef CALFUNCTION
	#undef CALFUNCTION
#endif


//Sniff to see if any Cap Touch components are being used
#ifdef	MX_CAPTOUCH_REF
  #ifdef MX_CAL_PIC
	#include "PIC\PIC_CAL_CAPTOUCH.c"
  #endif
  #ifdef MX_CAL_PIC16
	#error "Cap Touch not currently supported on 16-bit PIC devices"
  #endif
  #ifdef MX_CAL_AVR
	#error "Cap Touch not currently supported on AVR devices"
  #endif
  #ifdef MX_CAL_ARM
	#error "Cap Touch not currently supported on ARM AT91SAM7S devices"
  #endif
#endif


//Sniff to see if any EEPROM memory is being used
#ifdef	MX_EEPROM_REF
  #ifdef MX_CAL_PIC
	#include "PIC\PIC_CAL_EEPROM.c"
  #endif
  #ifdef MX_CAL_PIC16
	#include "PIC16BIT\PIC16BIT_CAL_EEPROM.c"
  #endif
  #ifdef MX_CAL_AVR
	#include "AVR\AVR_CAL_EEPROM.c"
  #endif
  #ifdef MX_CAL_ARM
	#include "ARM\ARM_CAL_EEPROM.c"
  #endif
#endif


//Sniff to see if any Flash memory is being used
#ifdef	MX_FLASH_REF
  #ifdef MX_CAL_PIC
	#include "PIC\PIC_CAL_FLASH.c"
  #endif
  #ifdef MX_CAL_PIC16
	#include "PIC16BIT\PIC16BIT_CAL_FLASH.c"
  #endif
  #ifdef MX_CAL_AVR
	#include "AVR\AVR_CAL_FLASH.c"
  #endif
  #ifdef MX_CAL_ARM
	#include "ARM\ARM_CAL_FLASH.c"
  #endif
#endif


//Sniff to see if any I2C Channels are being used
#define CALFUNCTION(type, name, args) type CAL_APPEND(name, MX_I2C_NUM) args
#ifdef	MX_I2C_REF1
  #define MX_I2C_NUM 1
  #ifdef MX_CAL_PIC
	#include "PIC\PIC_CAL_I2C.c"
  #endif
  #ifdef MX_CAL_PIC16
	#include "PIC16BIT\PIC16BIT_CAL_I2C.c"
  #endif
  #ifdef MX_CAL_PIC32
  #include "PIC32BIT\PIC32BIT_CAL_I2C.c"
  #endif
  #ifdef MX_CAL_AVR
	#include "AVR\AVR_CAL_I2C.c"
  #endif
  #ifdef MX_CAL_STARM
    #include "STARM\STARM_CAL_I2C.c"
  #elif defined MX_CAL_ARM
	#include "ARM\ARM_CAL_I2C.c"
  #endif
  #undef MX_I2C_NUM
#endif
#ifdef	MX_I2C_REF2
  #define MX_I2C_NUM 2
  #ifdef MX_CAL_PIC
	#include "PIC\PIC_CAL_I2C.c"
  #endif
  #ifdef MX_CAL_PIC16
	#include "PIC16BIT\PIC16BIT_CAL_I2C.c"
  #endif
  #ifdef MX_CAL_PIC32
  #include "PIC32BIT\PIC32BIT_CAL_I2C.c"
  #endif
  #ifdef MX_CAL_AVR
	#include "AVR\AVR_CAL_I2C.c"
  #endif
  #ifdef MX_CAL_STARM
    #include "STARM\STARM_CAL_I2C.c"
  #elif defined MX_CAL_ARM
	#include "ARM\ARM_CAL_I2C.c"
  #endif
  #undef MX_I2C_NUM
#endif
#ifdef	MX_I2C_REF3
  #define MX_I2C_NUM 3
  #ifdef MX_CAL_PIC
	#include "PIC\PIC_CAL_I2C.c"
  #endif
  #ifdef MX_CAL_PIC16
	#include "PIC16BIT\PIC16BIT_CAL_I2C.c"
  #endif
  #ifdef MX_CAL_PIC32
  #include "PIC32BIT\PIC32BIT_CAL_I2C.c"
  #endif
  #ifdef MX_CAL_AVR
	#include "AVR\AVR_CAL_I2C.c"
  #endif
  #ifdef MX_CAL_STARM
    #include "STARM\STARM_CAL_I2C.c"
  #elif defined MX_CAL_ARM
	#include "ARM\ARM_CAL_I2C.c"
  #endif
  #undef MX_I2C_NUM
#endif
#ifdef	MX_I2C_REF4
  #define MX_I2C_NUM 4
  #ifdef MX_CAL_PIC
	#include "PIC\PIC_CAL_I2C.c"
  #endif
  #ifdef MX_CAL_PIC16
	#include "PIC16BIT\PIC16BIT_CAL_I2C.c"
  #endif
  #ifdef MX_CAL_PIC32
  #include "PIC32BIT\PIC32BIT_CAL_I2C.c"
  #endif
  #ifdef MX_CAL_AVR
	#include "AVR\AVR_CAL_I2C.c"
  #endif
  #ifdef MX_CAL_STARM
    #include "STARM\STARM_CAL_I2C.c"
  #elif defined MX_CAL_ARM
	#include "ARM\ARM_CAL_I2C.c"
  #endif
  #undef MX_I2C_NUM
#endif
#ifdef	MX_I2C_REF5
  #define MX_I2C_NUM 5
  #ifdef MX_CAL_PIC
	#include "PIC\PIC_CAL_I2C.c"
  #endif
  #ifdef MX_CAL_PIC16
	#include "PIC16BIT\PIC16BIT_CAL_I2C.c"
  #endif
  #ifdef MX_CAL_PIC32
  #include "PIC32BIT\PIC32BIT_CAL_I2C.c"
  #endif
  #ifdef MX_CAL_AVR
	#include "AVR\AVR_CAL_I2C.c"
  #endif
  #ifdef MX_CAL_STARM
    #include "STARM\STARM_CAL_I2C.c"
  #elif defined MX_CAL_ARM
	#include "ARM\ARM_CAL_I2C.c"
  #endif
  #undef MX_I2C_NUM
#endif
#ifdef	MX_I2C_REF6
  #define MX_I2C_NUM 6
  #ifdef MX_CAL_PIC
	#include "PIC\PIC_CAL_I2C.c"
  #endif
  #ifdef MX_CAL_PIC16
	#include "PIC16BIT\PIC16BIT_CAL_I2C.c"
  #endif
  #ifdef MX_CAL_PIC32
  #include "PIC32BIT\PIC32BIT_CAL_I2C.c"
  #endif
  #ifdef MX_CAL_AVR
	#include "AVR\AVR_CAL_I2C.c"
  #endif
  #ifdef MX_CAL_STARM
    #include "STARM\STARM_CAL_I2C.c"
  #elif defined MX_CAL_ARM
	#include "ARM\ARM_CAL_I2C.c"
  #endif
  #undef MX_I2C_NUM
#endif
#ifdef CALFUNCTION
	#undef CALFUNCTION
#endif


//Sniff to see if any PWM channels are being used
#define CALFUNCTION(type, name, args) type CAL_APPEND(name, MX_PWM_NUM) args
#ifdef	MX_PWM_REF1
  #define MX_PWM_NUM 1
  #ifdef MX_CAL_PIC
	#include "PIC\PIC_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_PIC16
	#include "PIC16BIT\PIC16BIT_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_PIC32
  #include "PIC32BIT\PIC32BIT_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_AVR
	#include "AVR\AVR_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_STARM
	#include "STARM\STARM_CAL_PWM.c"
  #elif defined MX_CAL_ARM
	#include "ARM\ARM_CAL_PWM.c"
  #endif
  #undef MX_PWM_NUM
#endif
#ifdef	MX_PWM_REF2
  #define MX_PWM_NUM 2
  #ifdef MX_CAL_PIC
	#include "PIC\PIC_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_PIC16
	#include "PIC16BIT\PIC16BIT_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_PIC32
  #include "PIC32BIT\PIC32BIT_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_AVR
	#include "AVR\AVR_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_STARM
	#include "STARM\STARM_CAL_PWM.c"
  #elif defined MX_CAL_ARM
	#include "ARM\ARM_CAL_PWM.c"
  #endif
  #undef MX_PWM_NUM
#endif
#ifdef	MX_PWM_REF3
  #define MX_PWM_NUM 3
  #ifdef MX_CAL_PIC
	#include "PIC\PIC_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_PIC16
	#include "PIC16BIT\PIC16BIT_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_PIC32
  #include "PIC32BIT\PIC32BIT_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_AVR
	#include "AVR\AVR_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_STARM
	#include "STARM\STARM_CAL_PWM.c"
  #elif defined MX_CAL_ARM
	#include "ARM\ARM_CAL_PWM.c"
  #endif
  #undef MX_PWM_NUM
#endif
#ifdef	MX_PWM_REF4
  #define MX_PWM_NUM 4
  #ifdef MX_CAL_PIC
	#include "PIC\PIC_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_PIC16
	#include "PIC16BIT\PIC16BIT_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_PIC32
  #include "PIC32BIT\PIC32BIT_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_AVR
	#include "AVR\AVR_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_STARM
	#include "STARM\STARM_CAL_PWM.c"
  #elif defined MX_CAL_ARM
	#include "ARM\ARM_CAL_PWM.c"
  #endif
  #undef MX_PWM_NUM
#endif
#ifdef	MX_PWM_REF5
  #define MX_PWM_NUM 5
  #ifdef MX_CAL_PIC
	#include "PIC\PIC_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_PIC16
	#include "PIC16BIT\PIC16BIT_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_PIC32
  #include "PIC32BIT\PIC32BIT_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_AVR
	#include "AVR\AVR_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_STARM
	#include "STARM\STARM_CAL_PWM.c"
  #elif defined MX_CAL_ARM
	#include "ARM\ARM_CAL_PWM.c"
  #endif
  #undef MX_PWM_NUM
#endif
#ifdef	MX_PWM_REF6
  #define MX_PWM_NUM 6
  #ifdef MX_CAL_PIC
	#include "PIC\PIC_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_PIC16
	#include "PIC16BIT\PIC16BIT_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_PIC32
  #include "PIC32BIT\PIC32BIT_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_AVR
	#include "AVR\AVR_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_STARM
	#include "STARM\STARM_CAL_PWM.c"
  #elif defined MX_CAL_ARM
	#include "ARM\ARM_CAL_PWM.c"
  #endif
  #undef MX_PWM_NUM
#endif
#ifdef	MX_PWM_REF7
  #define MX_PWM_NUM 7
  #ifdef MX_CAL_PIC
	#include "PIC\PIC_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_PIC16
	#include "PIC16BIT\PIC16BIT_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_PIC32
  #include "PIC32BIT\PIC32BIT_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_AVR
	#include "AVR\AVR_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_STARM
	#include "STARM\STARM_CAL_PWM.c"
  #elif defined MX_CAL_ARM
	#include "ARM\ARM_CAL_PWM.c"
  #endif
  #undef MX_PWM_NUM
#endif
#ifdef	MX_PWM_REF8
  #define MX_PWM_NUM 8
  #ifdef MX_CAL_PIC
	#include "PIC\PIC_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_PIC16
	#include "PIC16BIT\PIC16BIT_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_PIC32
  #include "PIC32BIT\PIC32BIT_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_AVR
	#include "AVR\AVR_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_STARM
	#include "STARM\STARM_CAL_PWM.c"
  #elif defined MX_CAL_ARM
	#include "ARM\ARM_CAL_PWM.c"
  #endif
  #undef MX_PWM_NUM
#endif
#ifdef	MX_PWM_REF9
  #define MX_PWM_NUM 9
  #ifdef MX_CAL_PIC
	#include "PIC\PIC_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_PIC16
	#include "PIC16BIT\PIC16BIT_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_PIC32
  #include "PIC32BIT\PIC32BIT_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_AVR
	#include "AVR\AVR_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_STARM
	#include "STARM\STARM_CAL_PWM.c"
  #elif defined MX_CAL_ARM
	#include "ARM\ARM_CAL_PWM.c"
  #endif
  #undef MX_PWM_NUM
#endif
#ifdef	MX_PWM_REF10
  #define MX_PWM_NUM 10
  #ifdef MX_CAL_PIC
	#include "PIC\PIC_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_PIC16
	#include "PIC16BIT\PIC16BIT_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_PIC32
  #include "PIC32BIT\PIC32BIT_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_AVR
	#include "AVR\AVR_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_STARM
	#include "STARM\STARM_CAL_PWM.c"
  #elif defined MX_CAL_ARM
	#include "ARM\ARM_CAL_PWM.c"
  #endif
  #undef MX_PWM_NUM
#endif
#ifdef	MX_PWM_REF11
  #define MX_PWM_NUM 11
  #ifdef MX_CAL_PIC
	#include "PIC\PIC_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_PIC16
	#include "PIC16BIT\PIC16BIT_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_PIC32
  #include "PIC32BIT\PIC32BIT_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_AVR
	#include "AVR\AVR_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_STARM
	#include "STARM\STARM_CAL_PWM.c"
  #elif defined MX_CAL_ARM
	#include "ARM\ARM_CAL_PWM.c"
  #endif
  #undef MX_PWM_NUM
#endif
#ifdef	MX_PWM_REF12
  #define MX_PWM_NUM 12
  #ifdef MX_CAL_PIC
	#include "PIC\PIC_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_PIC16
	#include "PIC16BIT\PIC16BIT_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_PIC32
  #include "PIC32BIT\PIC32BIT_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_AVR
	#include "AVR\AVR_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_STARM
	#include "STARM\STARM_CAL_PWM.c"
  #elif defined MX_CAL_ARM
	#include "ARM\ARM_CAL_PWM.c"
  #endif
  #undef MX_PWM_NUM
#endif
#ifdef	MX_PWM_REF13
  #define MX_PWM_NUM 13
  #ifdef MX_CAL_PIC
	#include "PIC\PIC_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_PIC16
	#include "PIC16BIT\PIC16BIT_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_PIC32
  #include "PIC32BIT\PIC32BIT_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_AVR
	#include "AVR\AVR_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_STARM
	#include "STARM\STARM_CAL_PWM.c"
  #elif defined MX_CAL_ARM
	#include "ARM\ARM_CAL_PWM.c"
  #endif
  #undef MX_PWM_NUM
#endif
#ifdef	MX_PWM_REF14
  #define MX_PWM_NUM 14
  #ifdef MX_CAL_PIC
	#include "PIC\PIC_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_PIC16
	#include "PIC16BIT\PIC16BIT_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_PIC32
  #include "PIC32BIT\PIC32BIT_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_AVR
	#include "AVR\AVR_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_STARM
	#include "STARM\STARM_CAL_PWM.c"
  #elif defined MX_CAL_ARM
	#include "ARM\ARM_CAL_PWM.c"
  #endif
  #undef MX_PWM_NUM
#endif
#ifdef	MX_PWM_REF15
  #define MX_PWM_NUM 15
  #ifdef MX_CAL_PIC
	#include "PIC\PIC_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_PIC16
	#include "PIC16BIT\PIC16BIT_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_PIC32
  #include "PIC32BIT\PIC32BIT_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_AVR
	#include "AVR\AVR_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_STARM
	#include "STARM\STARM_CAL_PWM.c"
  #elif defined MX_CAL_ARM
	#include "ARM\ARM_CAL_PWM.c"
  #endif
  #undef MX_PWM_NUM
#endif
#ifdef	MX_PWM_REF16
  #define MX_PWM_NUM 16
  #ifdef MX_CAL_PIC
	#include "PIC\PIC_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_PIC16
	#include "PIC16BIT\PIC16BIT_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_PIC32
  #include "PIC32BIT\PIC32BIT_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_AVR
	#include "AVR\AVR_CAL_PWM.c"
  #endif
  #ifdef MX_CAL_STARM
	#include "STARM\STARM_CAL_PWM.c"
  #elif defined MX_CAL_ARM
	#include "ARM\ARM_CAL_PWM.c"
  #endif
  #undef MX_PWM_NUM
#endif
#ifdef CALFUNCTION
	#undef CALFUNCTION
#endif



//Sniff to see if any RTC peripherals are being used
#define CALFUNCTION(type, name, args) type CAL_APPEND(name, MX_RTC_NUM) args
#ifdef	MX_RTC_INTERNAL
  #define MX_RTC_NUM 1
  #ifdef MX_CAL_PIC
	#include "PIC\PIC_CAL_RTC.c"
  #endif
  #ifdef MX_CAL_PIC16
	#include "PIC16BIT\PIC16BIT_CAL_RTC.c"
  #endif
  #ifdef MX_CAL_PIC32
    #include "PIC32BIT\PIC32BIT_CAL_RTC.c"
  #endif
  #ifdef MX_CAL_AVR
	//#include "AVR\AVR_CAL_RTC.c"
  #endif
  #ifdef MX_CAL_STARM
	#include "STARM\STARM_CAL_RTC.c"
  #elif defined MX_CAL_ARM
	//#include "ARM\ARM_CAL_RTC.c"
  #endif
  #undef MX_RTC_NUM
#endif
#ifdef CALFUNCTION
	#undef CALFUNCTION
#endif




//Sniff to see if any SPI channels are being used
#define CALFUNCTION(type, name, args) type CAL_APPEND(name, MX_SPI_NUM) args
#ifdef	MX_SPI_REF1
  #define MX_SPI_NUM 1
  #ifdef MX_CAL_PIC
	#include "PIC\PIC_CAL_SPI.c"
  #endif
  #ifdef MX_CAL_PIC16
	#include "PIC16BIT\PIC16BIT_CAL_SPI.c"
  #endif
  #ifdef MX_CAL_PIC32
  #include "PIC32BIT\PIC32BIT_CAL_SPI.c"
  #endif
  #ifdef MX_CAL_AVR
	#include "AVR\AVR_CAL_SPI.c"
  #endif
  #if defined MX_CAL_STARM
	#include "STARM\STARM_CAL_SPI.c"
  #elif defined MX_CAL_ARM
	#include "ARM\ARM_CAL_SPI.c"
  #endif
  #undef MX_SPI_NUM
#endif
#ifdef	MX_SPI_REF2
  #define MX_SPI_NUM 2
  #ifdef MX_CAL_PIC
	#include "PIC\PIC_CAL_SPI.c"
  #endif
  #ifdef MX_CAL_PIC16
	#include "PIC16BIT\PIC16BIT_CAL_SPI.c"
  #endif
  #ifdef MX_CAL_PIC32
  #include "PIC32BIT\PIC32BIT_CAL_SPI.c"
  #endif
  #ifdef MX_CAL_AVR
	#include "AVR\AVR_CAL_SPI.c"
  #endif
  #if defined MX_CAL_STARM
	#include "STARM\STARM_CAL_SPI.c"
  #elif defined MX_CAL_ARM
	#include "ARM\ARM_CAL_SPI.c"
  #endif
  #undef MX_SPI_NUM
#endif
#ifdef	MX_SPI_REF3
  #define MX_SPI_NUM 3
  #ifdef MX_CAL_PIC
	#include "PIC\PIC_CAL_SPI.c"
  #endif
  #ifdef MX_CAL_PIC16
	#include "PIC16BIT\PIC16BIT_CAL_SPI.c"
  #endif
  #ifdef MX_CAL_PIC32
  #include "PIC32BIT\PIC32BIT_CAL_SPI.c"
  #endif
  #ifdef MX_CAL_AVR
	#include "AVR\AVR_CAL_SPI.c"
  #endif
  #if defined MX_CAL_STARM
	#include "STARM\STARM_CAL_SPI.c"
  #elif defined MX_CAL_ARM
	#include "ARM\ARM_CAL_SPI.c"
  #endif
  #undef MX_SPI_NUM
#endif
#ifdef	MX_SPI_REF4
  #define MX_SPI_NUM 4
  #ifdef MX_CAL_PIC
	#include "PIC\PIC_CAL_SPI.c"
  #endif
  #ifdef MX_CAL_PIC16
	#include "PIC16BIT\PIC16BIT_CAL_SPI.c"
  #endif
  #ifdef MX_CAL_PIC32
  #include "PIC32BIT\PIC32BIT_CAL_SPI.c"
  #endif
  #ifdef MX_CAL_AVR
	#include "AVR\AVR_CAL_SPI.c"
  #endif
  #if defined MX_CAL_STARM
	#include "STARM\STARM_CAL_SPI.c"
  #elif defined MX_CAL_ARM
	#include "ARM\ARM_CAL_SPI.c"
  #endif
  #undef MX_SPI_NUM
#endif
#ifdef	MX_SPI_REF5
  #define MX_SPI_NUM 5
  #ifdef MX_CAL_PIC
	#include "PIC\PIC_CAL_SPI.c"
  #endif
  #ifdef MX_CAL_PIC16
	#include "PIC16BIT\PIC16BIT_CAL_SPI.c"
  #endif
  #ifdef MX_CAL_PIC32
  #include "PIC32BIT\PIC32BIT_CAL_SPI.c"
  #endif
  #ifdef MX_CAL_AVR
	#include "AVR\AVR_CAL_SPI.c"
  #endif
  #if defined MX_CAL_STARM
	#include "STARM\STARM_CAL_SPI.c"
  #elif defined MX_CAL_ARM
	#include "ARM\ARM_CAL_SPI.c"
  #endif
  #undef MX_SPI_NUM
#endif
#ifdef	MX_SPI_REF6
  #define MX_SPI_NUM 6
  #ifdef MX_CAL_PIC
	#include "PIC\PIC_CAL_SPI.c"
  #endif
  #ifdef MX_CAL_PIC16
	#include "PIC16BIT\PIC16BIT_CAL_SPI.c"
  #endif
  #ifdef MX_CAL_PIC32
  #include "PIC32BIT\PIC32BIT_CAL_SPI.c"
  #endif
  #ifdef MX_CAL_AVR
	#include "AVR\AVR_CAL_SPI.c"
  #endif
  #if defined MX_CAL_STARM
	#include "STARM\STARM_CAL_SPI.c"
  #elif defined MX_CAL_ARM
	#include "ARM\ARM_CAL_SPI.c"
  #endif
  #undef MX_SPI_NUM
#endif
#ifdef CALFUNCTION
	#undef CALFUNCTION
#endif


//Sniff to see if any UARTS are being used
#define CALFUNCTION(type, name, args) type CAL_APPEND(name, MX_UART_NUM) args
#ifdef	MX_UART_REF1
  #define MX_UART_NUM 1
  #if defined MX_CAL_PIC
	#include "PIC\PIC_CAL_UART.c"
  #elif defined MX_CAL_PIC16
	#include "PIC16BIT\PIC16BIT_CAL_UART.c"
  #elif defined MX_CAL_PIC32
  #include "PIC32BIT\PIC32BIT_CAL_UART.c"
  #elif defined MX_CAL_AVR
	#include "AVR\AVR_CAL_UART.c"
  #elif defined MX_CAL_STARM
	#include "STARM\STARM_CAL_UART.c"
  #elif defined MX_CAL_ARM
	#include "ARM\ARM_CAL_UART.c"
  #endif
  #undef MX_UART_NUM
#endif
#ifdef	MX_UART_REF2
  #define MX_UART_NUM 2
  #if defined MX_CAL_PIC
	#include "PIC\PIC_CAL_UART.c"
  #elif defined MX_CAL_PIC16
	#include "PIC16BIT\PIC16BIT_CAL_UART.c"
  #elif defined MX_CAL_PIC32
  #include "PIC32BIT\PIC32BIT_CAL_UART.c"
  #elif defined MX_CAL_AVR
	#include "AVR\AVR_CAL_UART.c"
  #elif defined MX_CAL_STARM
	#include "STARM\STARM_CAL_UART.c"
  #elif defined MX_CAL_ARM
	#include "ARM\ARM_CAL_UART.c"
  #endif
  #undef MX_UART_NUM
#endif
#ifdef	MX_UART_REF3
  #define MX_UART_NUM 3
  #if defined MX_CAL_PIC
	#include "PIC\PIC_CAL_UART.c"
  #elif defined MX_CAL_PIC16
	#include "PIC16BIT\PIC16BIT_CAL_UART.c"
  #elif defined MX_CAL_PIC32
  #include "PIC32BIT\PIC32BIT_CAL_UART.c"
  #elif defined MX_CAL_AVR
	#include "AVR\AVR_CAL_UART.c"
  #elif defined MX_CAL_STARM
	#include "STARM\STARM_CAL_UART.c"
  #elif defined MX_CAL_ARM
	#include "ARM\ARM_CAL_UART.c"
  #endif
  #undef MX_UART_NUM
#endif
#ifdef	MX_UART_REF4
  #define MX_UART_NUM 4
  #if defined MX_CAL_PIC
	#include "PIC\PIC_CAL_UART.c"
  #elif defined MX_CAL_PIC16
	#include "PIC16BIT\PIC16BIT_CAL_UART.c"
  #elif defined MX_CAL_PIC32
  #include "PIC32BIT\PIC32BIT_CAL_UART.c"
  #elif defined MX_CAL_AVR
	#include "AVR\AVR_CAL_UART.c"
  #elif defined MX_CAL_STARM
	#include "STARM\STARM_CAL_UART.c"
  #elif defined MX_CAL_ARM
	#include "ARM\ARM_CAL_UART.c"
  #endif
  #undef MX_UART_NUM
#endif
#ifdef	MX_UART_REF5
  #define MX_UART_NUM 5
  #if defined MX_CAL_PIC
	#include "PIC\PIC_CAL_UART.c"
  #elif defined MX_CAL_PIC16
	#include "PIC16BIT\PIC16BIT_CAL_UART.c"
  #elif defined MX_CAL_PIC32
  #include "PIC32BIT\PIC32BIT_CAL_UART.c"
  #elif defined MX_CAL_AVR
	#include "AVR\AVR_CAL_UART.c"
  #elif defined MX_CAL_STARM
	#include "STARM\STARM_CAL_UART.c"
  #elif defined MX_CAL_ARM
	#include "ARM\ARM_CAL_UART.c"
  #endif
  #undef MX_UART_NUM
#endif
#ifdef	MX_UART_REF6
  #define MX_UART_NUM 6
  #if defined MX_CAL_PIC
	#include "PIC\PIC_CAL_UART.c"
  #elif defined MX_CAL_PIC16
	#include "PIC16BIT\PIC16BIT_CAL_UART.c"
  #elif defined MX_CAL_PIC32
  #include "PIC32BIT\PIC32BIT_CAL_UART.c"
  #elif defined MX_CAL_AVR
	#include "AVR\AVR_CAL_UART.c"
  #elif defined MX_CAL_STARM
	#include "STARM\STARM_CAL_UART.c"
  #elif defined MX_CAL_ARM
	#include "ARM\ARM_CAL_UART.c"
  #endif
  #undef MX_UART_NUM
#endif
#ifdef	MX_UART_REF7
  #define MX_UART_NUM 7
  #if defined MX_CAL_PIC
	#include "PIC\PIC_CAL_UART.c"
  #elif defined MX_CAL_PIC16
	#include "PIC16BIT\PIC16BIT_CAL_UART.c"
  #elif defined MX_CAL_PIC32
  #include "PIC32BIT\PIC32BIT_CAL_UART.c"
  #elif defined MX_CAL_AVR
	#include "AVR\AVR_CAL_UART.c"
  #elif defined MX_CAL_STARM
	#include "STARM\STARM_CAL_UART.c"
  #elif defined MX_CAL_ARM
	#include "ARM\ARM_CAL_UART.c"
  #endif
  #undef MX_UART_NUM
#endif
#ifdef	MX_UART_REF8
  #define MX_UART_NUM 8
  #if defined MX_CAL_PIC
	#include "PIC\PIC_CAL_UART.c"
  #elif defined MX_CAL_PIC16
	#include "PIC16BIT\PIC16BIT_CAL_UART.c"
  #elif defined MX_CAL_PIC32
  #include "PIC32BIT\PIC32BIT_CAL_UART.c"
  #elif defined MX_CAL_AVR
	#include "AVR\AVR_CAL_UART.c"
  #elif defined MX_CAL_STARM
	#include "STARM\STARM_CAL_UART.c"
  #elif defined MX_CAL_ARM
	#include "ARM\ARM_CAL_UART.c"
  #endif
  #undef MX_UART_NUM
#endif
#ifdef	MX_UART_REF9
  #define MX_UART_NUM 9
  #if defined MX_CAL_PIC
	#include "PIC\PIC_CAL_UART.c"
  #elif defined MX_CAL_PIC16
	#include "PIC16BIT\PIC16BIT_CAL_UART.c"
  #elif defined MX_CAL_PIC32
  #include "PIC32BIT\PIC32BIT_CAL_UART.c"
  #elif defined MX_CAL_AVR
	#include "AVR\AVR_CAL_UART.c"
  #elif defined MX_CAL_STARM
	#include "STARM\STARM_CAL_UART.c"
  #elif defined MX_CAL_ARM
	#include "ARM\ARM_CAL_UART.c"
  #endif
  #undef MX_UART_NUM
#endif
#ifdef	MX_UART_REF10
  #define MX_UART_NUM 10
  #if defined MX_CAL_PIC
	#include "PIC\PIC_CAL_UART.c"
  #elif defined MX_CAL_PIC16
	#include "PIC16BIT\PIC16BIT_CAL_UART.c"
  #elif defined MX_CAL_PIC32
  #include "PIC32BIT\PIC32BIT_CAL_UART.c"
  #elif defined MX_CAL_AVR
	#include "AVR\AVR_CAL_UART.c"
  #elif defined MX_CAL_STARM
	#include "STARM\STARM_CAL_UART.c"
  #elif defined MX_CAL_ARM
	#include "ARM\ARM_CAL_UART.c"
  #endif
  #undef MX_UART_NUM
#endif
#ifdef CALFUNCTION
	#undef CALFUNCTION
#endif

