?lang_form? ?lang_select? ?lang_submit? ?lang_endform?
{HEADER END}
{FILE START}

library

?curdirlinks? - Rev 6

?prevdifflink? - Blame - ?getfile?

/*! \file input.c \brief User-Input Functions. */
//*****************************************************************************
//
// File Name    : 'input.c'
// Title                : User-Input Functions
// Author               : Pascal Stang - Copyright (C) 2003
// Created              : 2003.09.11
// Revised              : 2003.09.11
// Version              : 0.1
// Target MCU   : Atmel AVR series
// Editor Tabs  : 4
//
// This code is distributed under the GNU Public License
//              which can be found at http://www.gnu.org/licenses/gpl.txt
//
//*****************************************************************************

//----- Include Files ---------------------------------------------------------
#include "global.h"             // include our global settings
#ifdef __AVR_ATmega128__
#include "uart2.h"
#else
#include "uart.h"
#endif
#include "rprintf.h"    // include printf function library

#include "input.h"

// defines and typedefs
#ifndef INPUT_UART
#define INPUT_UART 1
#endif

// globals

// functions
u08 inputString(u08 termChar, u08 termLen, u08* data)
{
        u08 s=0;
        u08 length=0;

        while(length < termLen)
        {
                // get input
                #ifdef __AVR_ATmega128__
                while(!uartReceiveByte(INPUT_UART,&s));
                #else
                while(!uartReceiveByte(&s));
                #endif
        
                // handle special characters
                if(s == 0x08)                   // backspace
                {
                        if(length > 0)
                        {
                                // echo backspace-space-backspace
                                rprintfChar(0x08);
                                rprintfChar(' ');
                                rprintfChar(0x08);
                                length--;
                        }
                }
                else if(s == termChar)  // termination character
                {
                        // save null-termination
                        data[length] = 0;
                        break;
                }
                else
                {
                        // echo character
                        rprintfChar(s);
                        // save character
                        data[length++] = s;
                }
        }
        return length;
}

u08 asciiHexToByte(u08* string)
{
        // convert 2-byte hex string to byte
        return (asciiHexToNibble(string[0])<<4) + asciiHexToNibble(string[1]);
}

u08 asciiHexToNibble(u08 character)
{
        // convert 1-byte hex ascii character to nibble
        if((character >= 0x30) && (character <= 0x39))
                return character-0x30;
        else if((character >=  'A') && (character <=  'F'))
                return character-'A'+10;
        else if((character >=  'a') && (character <=  'f'))
                return character-'a'+10;
        else return 0;
}
{FILE END}
{FOOTER START}

Powered by WebSVN v2.8.3