Difference Analysis Generated by HtmlDiff on 10/26/2004 1:34 PM  

Base file: C:\CY4632_RDK_1_21\Firmware\Source Code\RDK Keyboard\debug.c

Modified file: C:\CY4632_RDK_1_3\Firmware\Source Code\RDK Keyboard\debug.c

//--------------------------------------------------------------------------
//
// Debug routines
//
//--------------------------------------------------------------------------
// $Archive: /WirelessUSB/WUSB Kits/CY4632 LS KBM RDK/DocSrc/CD_Root/Firmware/Source Code/RDK Keyboard/debug.c $
// $Modtime: 6/03/04 9:49a9/28/04 2:39p $
// $Revision: 78 $
//--------------------------------------------------------------------------
//
// Copyright 2003-2004, 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.
//
//--------------------------------------------------------------------------

//--------------------------------------
// Included files
//--------------------------------------

#include "ls_config.h"

#ifdef DEBUG

#include "TX8_1.h"

//--------------------------------------
// Local Definitions and Types
//--------------------------------------
//--------------------------------------
// Local Function Declarations
//--------------------------------------

void debug_out_nibble(UINT8 nibble);


//--------------------------------------
// Local Definitions
//--------------------------------------

//--------------------------------------
// debug_init
//--------------------------------------

void debug_init(void)
{
    TX8_1_Start(TX8_PARITY_NONE);
}

///////////////////////////////////////////////////////////////////////////////
//
//  Function:    debug_out_char
//
//  Description: Ouput a character to the serial port
//
// TODO, test more to find out why the data overruns soemtime with testing for empty
//
//  Inputs:      UINT8
//
//  Returns:     void
//
///////////////////////////////////////////////////////////////////////////////

void debug_out_char(UINT8 data)
{
    UINT8 status;
    UINT8 cnt;

    // write a byte
    TX8_1_SendData(data);
    
#if 0    
    // wait for the byte to be sent
    while(!(bTX8_1_ReadTxStatus() & TX8_TX_BUFFER_EMPTY));
    while(!(status & TX8_TX_COMPLETE))
#else
    status = bTX8_1_ReadTxStatus();
    cnt=1;
    while(!(status & TX8_TX_BUFFER_EMPTY))
    { 
       status = bTX8_1_ReadTxStatus();
       cnt++;
    }
#endif
}



///////////////////////////////////////////////////////////////////////////////
//
//  Function:    debug_out_str
//
//  Description: Writes a string to the serial port
//
//  Inputs:      uchar
//
//  Returns:     Void
//
///////////////////////////////////////////////////////////////////////////////

void debug_out_str(const UINT8 *pbStrPtr)
{
   // loop for the null terminated string
   while( *pbStrPtr != 0 )
   {
       // write a character
       debug_out_char( *pbStrPtr );
          
       // point to the next character
          pbStrPtr++;
       
   }
}

///////////////////////////////////////////////////////////////////////////////
//
//  Function:    debug_out_hex
//
//  Description: Converts a byte to a hex value
//
//  Inputs:      uchar
//
//  Returns:     Void
//
///////////////////////////////////////////////////////////////////////////////

void debug_out_hex(UINT8 data)
{
    debug_out_nibble((data >> 4) & 0x0f);
    debug_out_nibble(data & 0x0f);
}



///////////////////////////////////////////////////////////////////////////////
//
//  Function:    debug_out_dec
//
//  Description: Converts a byte to a decimal ascii value
//
//  Inputs:      uchar
//
//  Returns:     Void
//
///////////////////////////////////////////////////////////////////////////////

void debug_out_dec(UINT8 data)
{
    if(data > 99)
    {
        debug_out_nibble(data / 100);
        data %= 100;
        debug_out_nibble(data / 10);
        data %= 10;
        debug_out_nibble(data);
    }
    else if(data > 9)
    {
        debug_out_nibble(data / 10);
        data %= 10;
        debug_out_nibble(data);
    }    
    else
        debug_out_nibble(data);
        
}



///////////////////////////////////////////////////////////////////////////////
//
//  Function:    debug_out_dec_b
//
//  Description: Converts a byte to a decimal ascii value, leading blanks
//
//  Inputs:      uchar
//
//  Returns:     Void
//
///////////////////////////////////////////////////////////////////////////////

void debug_out_dec_b(UINT8 data)
{
     
    if(data > 99)
    {
        debug_out_char(' ');
        debug_out_nibble(data / 100);
        data %= 100;
        debug_out_nibble(data / 10);
        data %= 10;
        debug_out_nibble(data);
    }
    else if(data > 9)
    {
        debug_out_char(' ');
        debug_out_char(' ');
        debug_out_nibble(data / 10);
        data %= 10;
        debug_out_nibble(data);
    }
    else
    {
        debug_out_char(' ');
        debug_out_char(' ');
        debug_out_char(' ');
        debug_out_nibble(data);
    }   
}


///////////////////////////////////////////////////////////////////////////////
//
//  Function:    debug_out_nibble
//
//  Description: Convert a nibble to an ASCII value
//
//  Inputs:      uchar
//
//  Returns:     Void
//
///////////////////////////////////////////////////////////////////////////////

void debug_out_nibble(UINT8 nibble)
{
    if(nibble > 9)
    {
        debug_out_char((nibble - 10) + 'A');
    }
    else
    {
        debug_out_char(nibble + '0');
    }
}


///////////////////////////////////////////////////////////////////////////////
//
//  Function:    debug_out_int_hex
//
//  Description: Converts an integer to a hex value
//
//  Inputs:      uchar
//
//  Returns:     Void
//
///////////////////////////////////////////////////////////////////////////////

void debug_out_int_hex(unsigned int data)
{
    debug_out_nibble((data >> 12) & 0x0f);
    debug_out_nibble((data >> 8) & 0x0f);
    debug_out_nibble((data >> 4) & 0x0f);
    debug_out_nibble(data & 0x0f);
}



///////////////////////////////////////////////////////////////////////////////
//
//  Function:    outIntDec
//
//  Description: Converts an integer to a decimal ascii value
//
//  Inputs:      uchar
//
//  Returns:     Void
//
///////////////////////////////////////////////////////////////////////////////

void debug_out_int_dec(unsigned int data)
{

    if(data > 9999)
    {
        debug_out_nibble(data / 10000);
        data %= 10000;
        debug_out_nibble(data / 1000);
        data %= 1000;
        debug_out_nibble(data / 100);
        data %= 100;
        debug_out_nibble(data / 10);
        data %= 10;
        debug_out_nibble(data);
    }
     else if(data > 999)
    {
        debug_out_nibble(data / 1000);
        data %= 1000;
        debug_out_nibble(data / 100);
        data %= 100;
        debug_out_nibble(data / 10);
        data %= 10;
        debug_out_nibble(data);
    }
    else if(data > 99)
    {
        debug_out_nibble(data / 100);
        data %= 100;
        debug_out_nibble(data / 10);
        data %= 10;
        debug_out_nibble(data);
    }
    else if(data > 9)
    {
        debug_out_nibble(data / 10);
        data %= 10;
        debug_out_nibble(data);
    }
    else  // single digit
    {
        debug_out_nibble(data);
    }    
}


///////////////////////////////////////////////////////////////////////////////
//
//  Function:    debug_out_int_dec_b
//
//  Description: Converts a int to a decimal ascii value, leading blanks
//
//  Inputs:      uchar
//
//  Returns:     Void
//
///////////////////////////////////////////////////////////////////////////////

void debug_out_int_dec_b( unsigned int data )
{
     

    if(data > 9999)
    {
        debug_out_nibble(data / 10000);
        data %= 10000;
        debug_out_nibble(data / 1000);
        data %= 1000;
        debug_out_nibble(data / 100);
        data %= 100;
        debug_out_nibble(data / 10);
        data %= 10;
        debug_out_nibble(data);
    }
    else if(data > 999)
    {
        debug_out_char(' ');
        debug_out_nibble(data / 1000);
        data %= 1000;
        debug_out_nibble(data / 100);
        data %= 100;
        debug_out_nibble(data / 10);
        data %= 10;
        debug_out_nibble(data);
    }
    else if(data > 99)
    {
        debug_out_char(' ');
        debug_out_char(' ');
        debug_out_nibble(data / 100);
        data %= 100;
        debug_out_nibble(data / 10);
        data %= 10;
        debug_out_nibble(data);
    }
    else if(data > 9)
    {
        debug_out_char(' ');
        debug_out_char(' ');
        debug_out_char(' ');
        debug_out_nibble(data / 10);
        data %= 10;
        debug_out_nibble(data);
    }
    else
    {
        debug_out_char(' ');
        debug_out_char(' ');
        debug_out_char(' ');
        debug_out_char(' ');
        debug_out_nibble(data);
    }   
}

#endif //DEBUG