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

library

?curdirlinks? - Rev 6

?prevdifflink? - Blame - ?getfile?

//*****************************************************************************
// File Name    : cmdlinetest.c
// 
// Title                : example usage of cmdline (command line) functions
// Revision             : 1.0
// Notes                :       
// Target MCU   : Atmel AVR series
// Editor Tabs  : 4
// 
// Revision History:
// When                 Who                     Description of change
// -----------  -----------     -----------------------
// 21-Jul-2003  pstang          Created the program
//*****************************************************************************


//----- Include Files ---------------------------------------------------------
#include <avr/io.h>                     // include I/O definitions (port names, pin names, etc)
#include <avr/interrupt.h>      // include interrupt support

#include "global.h"             // include our global settings
#include "uart.h"               // include uart function library
#include "rprintf.h"    // include printf function library
#include "a2d.h"                // include A/D converter function library
#include "timer.h"              // include timer function library (timing, PWM, etc)
#include "vt100.h"              // include vt100 terminal support
#include "cmdline.h"    // include cmdline function library

// global variables
u08 Run;

// functions
void goCmdline(void);
void exitFunction(void);
void helpFunction(void);
void dumpArgsStr(void);
void dumpArgsInt(void);
void dumpArgsHex(void);

//----- Begin Code ------------------------------------------------------------
int main(void)
{
        // initialize our libraries
        // initialize the UART (serial port)
        uartInit();
        uartSetBaudRate(9600);
        // make all rprintf statements use uart for output
        rprintfInit(uartSendByte);
        // turn on and initialize A/D converter
        a2dInit();
        // initialize the timer system
        timerInit();
        // initialize vt100 terminal
        vt100Init();

        // configure port B for led output and pushbutton input
        outb(DDRB, 0x0F);
        // all LEDs on
        outb(PORTB, 0x00);
        // wait for hardware to power up
        timerPause(100);
        // all LEDs off
        outb(PORTB, 0x0F);

        // start command line
        goCmdline();

        return 0;
}

void goCmdline(void)
{
        u08 c;

        // print welcome message
        vt100ClearScreen();
        vt100SetCursorPos(1,0);
        rprintfProgStrM("\r\nWelcome to the Command Line Test Suite!\r\n");

        // initialize cmdline system
        cmdlineInit();

        // direct cmdline output to uart (serial port)
        cmdlineSetOutputFunc(uartSendByte);

        // add commands to the command database
        cmdlineAddCommand("exit",               exitFunction);
        cmdlineAddCommand("help",               helpFunction);
        cmdlineAddCommand("dumpargs1",  dumpArgsStr);
        cmdlineAddCommand("dumpargs2",  dumpArgsInt);
        cmdlineAddCommand("dumpargs3",  dumpArgsHex);

        // send a CR to cmdline input to stimulate a prompt
        cmdlineInputFunc('\r');

        // set state to run
        Run = TRUE;

        // main loop
        while(Run)
        {
                // pass characters received on the uart (serial port)
                // into the cmdline processor
                while(uartReceiveByte(&c)) cmdlineInputFunc(c);

                // run the cmdline execution functions
                cmdlineMainLoop();
        }

        rprintfCRLF();
        rprintf("Exited program!\r\n");
}

void exitFunction(void)
{
        // to exit, we set Run to FALSE
        Run = FALSE;
}

void helpFunction(void)
{
        rprintfCRLF();

        rprintf("Available commands are:\r\n");
        rprintf("help      - displays available commands\r\n");
        rprintf("dumpargs1 - dumps command arguments as strings\r\n");
        rprintf("dumpargs2 - dumps command arguments as decimal integers\r\n");
        rprintf("dumpargs3 - dumps command arguments as hex integers\r\n");

        rprintfCRLF();
}

void dumpArgsStr(void)
{
        rprintfCRLF();
        rprintf("Dump arguments as strings\r\n");

        rprintfProgStrM("Arg0: "); rprintfStr(cmdlineGetArgStr(0)); rprintfCRLF();
        rprintfProgStrM("Arg1: "); rprintfStr(cmdlineGetArgStr(1)); rprintfCRLF();
        rprintfProgStrM("Arg2: "); rprintfStr(cmdlineGetArgStr(2)); rprintfCRLF();
        rprintfProgStrM("Arg3: "); rprintfStr(cmdlineGetArgStr(3)); rprintfCRLF();
        rprintfCRLF();
}

void dumpArgsInt(void)
{
        rprintfCRLF();
        rprintf("Dump arguments as integers\r\n");

        // printf %d will work but only if your numbers are less than 16-bit values
        //rprintf("Arg1 as int: %d\r\n", cmdlineGetArgInt(1));
        //rprintf("Arg2 as int: %d\r\n", cmdlineGetArgInt(2));
        //rprintf("Arg3 as int: %d\r\n", cmdlineGetArgInt(3));

        // printfNum is good for longs too
        rprintf("Arg1 as int: "); rprintfNum(10, 10, TRUE, ' ', cmdlineGetArgInt(1)); rprintfCRLF();
        rprintf("Arg2 as int: "); rprintfNum(10, 10, TRUE, ' ', cmdlineGetArgInt(2)); rprintfCRLF();
        rprintf("Arg3 as int: "); rprintfNum(10, 10, TRUE, ' ', cmdlineGetArgInt(3)); rprintfCRLF();
        rprintfCRLF();
}

void dumpArgsHex(void)
{
        rprintfCRLF();
        rprintf("Dump arguments as hex integers\r\n");

        rprintf("Arg1 as hex: "); rprintfNum(16, 8, FALSE, ' ', cmdlineGetArgHex(1)); rprintfCRLF();
        rprintf("Arg2 as hex: "); rprintfNum(16, 8, FALSE, ' ', cmdlineGetArgHex(2)); rprintfCRLF();
        rprintf("Arg3 as hex: "); rprintfNum(16, 8, FALSE, ' ', cmdlineGetArgHex(3)); rprintfCRLF();
        rprintfCRLF();
}
{FILE END}
{FOOTER START}

Powered by WebSVN v2.8.3