/*****************************************************************************
* File Name: main.c
*
* Version: 1.0
*
* Description:
* This project demonstrates a simple echo program using the USBUART component.
*
* Operation:
* This project is intended to communicate with a UART/RS-232 terminal on a PC 
* through a USB port. Any information sent to the PSoC via the PC terminal will 
* be echoed back by the PSoC.
*
* Components:
* 1. USBUART component
*
* Design-Wide Resource Settings:
* 1. Clocks: IMO set to 24 MHz.
* 2. Clocks: PLL set to 33 MHz or greater
* 2. Clocks: ILO set to 100 kHz
* 3. Clocks: Bus Clock set to 33 MHz or greater
* 4. Clocks: USB enabled and select 'IMOx2'
*
* Pin-Out Specifications:
* No special hardware connections required other than power and USB connection.
*
* Notes:
*
* Owner:
* DRSW
*
* Hardware Dependency:
* Any hardware dependencies must be listed here.
*
* Code Tested With:
* 1. PSoC Creator 1.0 Beta 4 (Rev ** & Rev *A)
* 2. PSoC Creator 1.0 Beta 4.1 (Rev *B)
* 3. PSoC Creator 1.0 Beta 5.0
******************************************************************************
* Copyright (2009), Cypress Semiconductor Corporation.
******************************************************************************
* This software is owned by Cypress Semiconductor Corporation (Cypress) and is
* protected by and subject to worldwide patent protection (United States and
* foreign), United States copyright laws and international treaty provisions.
* Cypress hereby grants to licensee a personal, non-exclusive, non-transferable
* license to copy, use, modify, create derivative works of, and compile the
* Cypress Source Code and derivative works for the sole purpose of creating
* custom software in support of licensee product to be used only in conjunction
* with a Cypress integrated circuit as specified in the applicable agreement.
* Any reproduction, modification, translation, compilation, or representation of
* this software except as specified above is prohibited without the express
* written permission of Cypress.
*
* Disclaimer: CYPRESS MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH
* REGARD TO THIS MATERIAL, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
* Cypress reserves the right to make changes without further notice to the
* materials described herein. Cypress does not assume any liability arising out
* of the application or use of any product or circuit described herein. Cypress
* does not authorize its products for use as critical components in life-support
* systems where a malfunction or failure may reasonably be expected to result in
* significant injury to the user. The inclusion of Cypress' product in a life-
* support systems application implies that the manufacturer assumes all risk of
* such use and in doing so indemnifies Cypress against all charges. Use may be
* limited by and subject to the applicable Cypress software license agreement.
*****************************************************************************/

#include <device.h>

uint8 Count;
uint8 Buffer[128];

void main()
{	
	/* Initialization Code: */
    CYGlobalIntEnable; 	
	USBUART_1_Start(0, USBUART_1_3V_OPERATION);
	while(!USBUART_1_bGetConfiguration());
	USBUART_1_Init();
	
	/* Main Loop: */
    for(;;)
    {
		Count = USBUART_1_bGetRxCount();
		if(Count != 0)							/* Check for input data from PC */
		{
			USBUART_1_ReadAll(Buffer);
			USBUART_1_Write(Buffer, Count);		/* Echo data back to PC */
			while(!USBUART_1_bTxIsReady()){}		/* Wait for Tx to finish */ 
		}
    }
}

/* [] END OF FILE */
