CY_ISR(wakeUpInterrupt)
{	
//	CyPmReadStatus();	
	CyPmRestoreClocks();
	
	debug_count++;
			
	ADC_Wakeup();
	DebugUART_Wakeup();
	UART_Wakeup();
	PGA_Wakeup();

		
	//clear interrupt flag
	Rx_wakeUp_ClearInterrupt();
	
	wakeup_isr_Disable();
	rx_isr_Enable();
}


void main()
{
	UART_Start();
	DebugUART_Start();

	ADC_Start();
	//set ADC to config 2
	ADC_SelectConfiguration(2, 0);
	ADC_Start();	
	
 	PGA_Start();

	CYGlobalIntEnable;

	wakeup_isr_ClearPending();
	wakeup_isr_StartEx(wakeUpInterrupt);
	wakeup_isr_Disable();

	adc_isr_StartEx(ADCInterrupt);

	rx_isr_StartEx(UARTRXInterrupt);

	for(;;)
    	{
		switch(state)
		{
			case 1:

				//do stuff

				break;

			
			case 2:
			
				for(;;)
				{
					function();	//THIS IS WHERE THE PROGRAM SKIPS TO. AT THIS POINT, state = 1

				}

				break;
		}

		
		while(!(UART_ReadTxStatus() & UART_TX_STS_FIFO_EMPTY))
		{
			//wait for all UART transmissions to finish before entering alternate active mode
		}
		
		while(!(DebugUART_ReadTxStatus() & DebugUART_TX_STS_FIFO_EMPTY))
		{
			//wait for all DebugUART transmissions to finish before entering alternate active mode
		}
		
	
		ADC_Sleep();
		DebugUART_Sleep();
		UART_Sleep();
		PGA_Sleep();
				
		CyPmSaveClocks();
		
		rx_isr_Disable();
		wakeup_isr_Enable();
		
	/*	while(sleep)
		{
			//remain in alternate active mode and do nothing until wake up signal is received from crank
		}*/
		
		CyPmSleep(PM_SLEEP_TIME_NONE, PM_SLEEP_SRC_PICU);
	}
}

/* [] END OF FILE */
 

						

	
	
	