#ifndef PORTHARDWARE_H
#define PORTHARDWARE_H

#include "FreeRTOSConfig.h"

/*-----------------------------------------------------------*/

#define CLR_INT(FLAG_REG, FLAG_MASK) \
		asm volatile(	"push r16\n\t" \
		"ldi r16, %1\n\t" \
		"sts %0, r16\n\t" \
		"pop r16\n\t" \
		: \
		: "i"(_SFR_MEM_ADDR(FLAG_REG)),"i"((uint8_t)(FLAG_MASK)) \
		);

#if ( configUSE_TIMER_INSTANCE == 0 )

	#define TICK_INT_vect			TCB0_INT_vect
	#define INT_FLAGS				TCB0_INTFLAGS
	#define INT_MASK				TCB_CAPT_bm

	#define TICK_init()				{ \
									TCB0.CCMP    = configCPU_CLOCK_HZ / configTICK_RATE_HZ; \
									TCB0.INTCTRL = TCB_CAPT_bm; \
									TCB0.CTRLA   = TCB_ENABLE_bm; \
									}

	#define TICK_stop()				{ \
									TCB0.INTCTRL &= ~TCB_CAPT_bm;\
									TCB0.CTRLA   &= ~TCB_ENABLE_bm; \
									}

#elif ( configUSE_TIMER_INSTANCE == 1 )

	#define TICK_INT_vect			TCB1_INT_vect
	#define INT_FLAGS				TCB1_INTFLAGS
	#define INT_MASK				TCB_CAPT_bm

	#define TICK_init()				{ \
									TCB1.CCMP    = configCPU_CLOCK_HZ / configTICK_RATE_HZ; \
									TCB1.INTCTRL = TCB_CAPT_bm; \
									TCB1.CTRLA   = TCB_ENABLE_bm; \
									}

	#define TICK_stop()				{ \
									TCB1.INTCTRL &= ~TCB_CAPT_bm; \
									TCB1.CTRLA   &= ~TCB_ENABLE_bm; \
									}

#elif ( configUSE_TIMER_INSTANCE == 2 )

	#define TICK_INT_vect			TCB2_INT_vect
	#define INT_FLAGS				TCB2_INTFLAGS
	#define INT_MASK				TCB_CAPT_bm

	#define TICK_init()				{ \
									TCB2.CCMP    = configCPU_CLOCK_HZ / configTICK_RATE_HZ; \
									TCB2.INTCTRL = TCB_CAPT_bm; \
									TCB2.CTRLA   = TCB_ENABLE_bm; \
									}

	#define TICK_stop()				{ \
									TCB2.INTCTRL &= ~TCB_CAPT_bm; \
									TCB2.CTRLA   &= ~TCB_ENABLE_bm; \
									}

#elif ( configUSE_TIMER_INSTANCE == 3 )

	#define TICK_INT_vect			TCB3_INT_vect
	#define INT_FLAGS				TCB3_INTFLAGS
	#define INT_MASK				TCB_CAPT_bm

	#define TICK_init()				{ \
									TCB3.CCMP    = configCPU_CLOCK_HZ / configTICK_RATE_HZ; \
									TCB3.INTCTRL = TCB_CAPT_bm; \
									TCB3.CTRLA   = TCB_ENABLE_bm; \
									}

	#define TICK_stop() 			{ \
									TCB3.INTCTRL &= ~TCB_CAPT_bm; \
									TCB3.CTRLA   &= ~TCB_ENABLE_bm; \
									}

#elif ( configUSE_TIMER_INSTANCE == 4 )

	#define TICK_INT_vect			RTC_CNT_vect
	#define INT_FLAGS				RTC_INTFLAGS
	#define INT_MASK				RTC_OVF_bm

	#define RTC_PERIOD_HZ(x)		(32768 * ( (1.0 / x) ) )
	#define TICK_init()				{ \
									while (RTC.STATUS > 0); \
									RTC.CTRLA    = RTC_PRESCALER_DIV1_gc | 1 << RTC_RTCEN_bp; \
									RTC.PER      = RTC_PERIOD_HZ(configTICK_RATE_HZ); \
									RTC.INTCTRL |= 1 << RTC_OVF_bp; \
									}

	#define TICK_stop()				{ \
									RTC.CTRLA   &= ~(1 << RTC_RTCEN_bp); \
									RTC.INTCTRL &= ~(1 << RTC_OVF_bp); \
									}

#else
#undef TICK_INT_vect
#undef INT_FLAGS
#undef INT_MASK
#error Invalid timer setting
#endif

/*-----------------------------------------------------------*/

#endif /* PORTHARDWARE_H */
