/*****************************************************************************
 *
 * Boot menu handling.
 *
 *****************************************************************************
 * FileName:        BOOTmain.c
 * Dependencies:    
 * Processor:       PIC18F with CAN
 * Compiler:       	C18 02.30.00 or higher
 * Linker:          MPLINK 03.20.01 or higher
 * Company:         Microchip Technology Incorporated
 *
 * Software License Agreement
 *
 * The software supplied herewith by Microchip Technology Incorporated
 * (the "Company") is intended and supplied to you, the Company's
 * customer, for use solely and exclusively with products manufactured
 * by the Company. 
 *
 * 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.
 *
 *
 * This is a simple timer function used within the DeviceNet Stack for
 * demonstration.
 * 
 *
 *
 * Author               Date        Comment
 *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * Ross Fosler			08/13/04	...	
 * 
 *****************************************************************************/


#include	<P18cxxx.H>
#include	"TYPES.H"
#include	"menu.h"
#include	"IO.H"
#include	"SRALLOC.H"
#include	"strings.h"
#include	"ledmain.h"
#include	"rb0main.h"
#include	"I2Cmain.h"
#include	"TC74main.h"
#include	"adcmain.h"
#include	"vectors.h"




void Boot_Main(void)
{
	UCHAR uRxBootCmd;

	putrs(MsgHome);			// Clear the screen
	putrs(MsgClear);
	putrs(MsgHome);

	putrs(MsgHeader);		// Put the header on screen

	putrs(MsgBootWarn);		// Issue warning
	putrs(MsgBootWarn2);
	putrs(MsgBootWarn3);
	
	while(1)
	{
		// Process I/O events
		IOProcessEvents();

		// Process I2C events
		I2C_ProcessEvents();

		uRxBootCmd = getc();
		switch (uRxBootCmd)
		{
			case 'y':
			case 'Y':
				_asm
					clrf STKPTR, 0
					goto BootVector
				_endasm
				break;
			case 0:
				break;
			default:
				MainMenu_Update();
				ADC_Init();
				ADC_Update();
				RB0_Init();
				LED_update();
				TC74_Init();
				TC74_ProcessEvents();
				return;
				break;
		}
	}
}
