Example #1
0
static void ProcessEscSequence(SYS_CMD_DEVICE_NODE* pCmdIO)
{
    cmdNode *pNext;

    if(!strcmp(_cmdAppData.seqBuff, _seqUpArrow))
    { // up arrow
        if(_pCurrCmdN)
        {
            pNext = _pCurrCmdN->next;
            if(pNext == _cmdList.head)
            {
                return; // reached the end of list
            }
        }
        else
        {
            pNext = _cmdList.head;
        }

        DisplayNodeMsg(pCmdIO, pNext);
    }
    else if(!strcmp(_cmdAppData.seqBuff, _seqDownArrow))
    { // down arrow
        if(_pCurrCmdN)
        {
            pNext = _pCurrCmdN->prev;
            if(pNext != _cmdList.tail)
            {
                DisplayNodeMsg(pCmdIO, pNext);
            }
        }
    }
    else if(!strcmp(_cmdAppData.seqBuff, _seqRightArrow))
    { // right arrow
        if(pCmdIO->cmdPnt < pCmdIO->cmdEnd)
        {
            (*pCmdIO->pCmdApi->msg)(pCmdIO->cmdIoParam, _seqRightArrow);
            pCmdIO->cmdPnt++;
        }
    }
    else if(!strcmp(_cmdAppData.seqBuff, _seqLeftArrow))
    { // left arrow
        if(pCmdIO->cmdPnt > pCmdIO->cmdBuff)
        {
            pCmdIO->cmdPnt--;
            (*pCmdIO->pCmdApi->msg)(pCmdIO->cmdIoParam, _seqLeftArrow);
        }
    }
    else
    {
        (*pCmdIO->pCmdApi->msg)(pCmdIO->cmdIoParam, " *** Command Processor: unknown command. ***" LINE_TERM);
        (*pCmdIO->pCmdApi->msg)(pCmdIO->cmdIoParam, _promptStr);
    }

}
Example #2
0
static void ProcessEscSequence(_CMDIO_DEV_NODE* pCmdIO)
{
    cmdNode *pNext;
    char    seq[ESC_SEQ_SIZE+1];
    int nChar = 0;
    const void* cmdIoParam = pCmdIO->cmdIoParam;

    while(nChar<ESC_SEQ_SIZE)
    {
        while(!(*pCmdIO->pCmdApi->isRdy)(cmdIoParam));
        seq[nChar++] = (*pCmdIO->pCmdApi->getc)(cmdIoParam);
    }
    seq[nChar] = '\0';

    if(!strcmp(seq, _seqUpArrow))
    { // up arrow
        if(_pCurrCmdN)
        {
            pNext = _pCurrCmdN->next;
            if(pNext == _cmdList.head)
            {
                return; // reached the end of list
            }
        }
        else
        {
            pNext = _cmdList.head;
        }

        DisplayNodeMsg(pCmdIO, pNext);
    }
    else if(!strcmp(seq, _seqDownArrow))
    { // down arrow
        if(_pCurrCmdN)
        {
            pNext = _pCurrCmdN->prev;
            if(pNext != _cmdList.tail)
            {
                DisplayNodeMsg(pCmdIO, pNext);
            }
        }
    }
    else if(!strcmp(seq, _seqRightArrow))
    { // right arrow
        if(pCmdIO->cmdPnt < pCmdIO->cmdEnd)
        {
            (*pCmdIO->pCmdApi->msg)(cmdIoParam, _seqRightArrow);
            pCmdIO->cmdPnt++;
        }
    }
    else if(!strcmp(seq, _seqLeftArrow))
    { // left arrow
        if(pCmdIO->cmdPnt > pCmdIO->cmdBuff)
        {
            pCmdIO->cmdPnt--;
            (*pCmdIO->pCmdApi->msg)(cmdIoParam, _seqLeftArrow);
        }
    }
    else
    {
        (*pCmdIO->pCmdApi->msg)(cmdIoParam, " *** Command Processor: unknown command. ***" LINE_TERM);
        (*pCmdIO->pCmdApi->msg)(cmdIoParam, _promptStr);
    }

}