char Console_APPIO_ReadC(int fd)
{
    char readBuffer = '\0';

#if defined(__APPIO_DEBUG)
    DBSCANF ("%s", &readBuffer);
#elif defined(PIC32_STARTER_KIT)
    DBGETS (pkt.data.buf,pkt.sz);
#endif

    return readBuffer;
}
Example #2
0
// Adjust st7565 resistor ratio and "volume"
void contrastSetup()
{
    char s[256];
    uint8_t tmp8;

    DBPUTS("Enter resistor ratio (0..7)...");
    DBGETS(s, sizeof(s));
    
    tmp8 = s[0] - '0';   //
    if(tmp8 < 8)
    {
        lcdCmd(cRESISTOR_RATIO | tmp8);
        DBPRINTF("Set to %d.\n", tmp8);
    }
    else
    {
        DBPUTS("Invalid range.\n");
    }

    DBPUTS("Enter volume (0..63)...");
    DBGETS(s, sizeof(s));
    
    tmp8 = atoi(s);   //
    if(tmp8 < 64)
    {
        lcdCmd(cVOLUME);
        lcdCmd(tmp8);
        DBPRINTF("Set to %d.\n", tmp8);
    }
    else
    {
        DBPUTS("Invalid range.\n");
    }

    // Clear the do-user-input flag
    //DoUserUserInputSemaphore = 0;
}
void Console_APPIO_Tasks (SYS_MODULE_OBJ object)
{

    /* Update the application state machine based
     * on the current state */
    struct QPacket pkt;
    size_t *sizeRead;

    switch(consAppIOData.state)
    {
        case CONSOLE_APPIO_STATE_INIT:

            /* Initialize APPIO */
            DBINIT();
 
            consAppIOData.state = CONSOLE_APPIO_STATE_READY;

            break;

        case CONSOLE_APPIO_STATE_START_READ:

            if (readQueue.numElem)
            {
                pkt = rdQueueElements[readQueue.tailPos];

                DBGETS (pkt.data.buf, 128);

                if (*(char*)pkt.data.buf != '\0')
                {
                    rdQueueElements[readQueue.tailPos].sz = strlen((char*)pkt.data.buf);                    
                    consAppIOData.state = CONSOLE_APPIO_STATE_READ_COMPLETE;

                }
            }
            break;

        case CONSOLE_APPIO_STATE_READ_COMPLETE:

            sizeRead = &rdQueueElements[readQueue.tailPos].sz;
            
            popQueue(&readQueue);
            
            if (readQueue.numElem == 0)
            {
                if (consAppIOData.rdCallback != NULL)
                {
                    consAppIOData.rdCallback(sizeRead);
                }
                consAppIOData.state = CONSOLE_APPIO_STATE_READY;
            }
            else
            {
                consAppIOData.state = CONSOLE_APPIO_STATE_START_READ;
            }
            break;

        case CONSOLE_APPIO_STATE_READY:

            if (writeQueue.numElem)
            {
                 consAppIOData.state = CONSOLE_APPIO_STATE_START_WRITE;
            }
            else if (readQueue.numElem)
            {
                 consAppIOData.state = CONSOLE_APPIO_STATE_START_READ;
            }
            break;

        case CONSOLE_APPIO_STATE_START_WRITE:

            if (writeQueue.numElem)
            {
                pkt = wrQueueElements[writeQueue.tailPos];

                DBPRINTF("%s",(char*)pkt.data.buf);

                consAppIOData.writeCycleCount = 0;
                consAppIOData.state = CONSOLE_APPIO_STATE_WAIT_FOR_WRITE_COMPLETE;
            }
            break;

        case CONSOLE_APPIO_STATE_WAIT_FOR_WRITE_COMPLETE:

            pkt = wrQueueElements[writeQueue.tailPos];
            
            /* Burn cycles to allow to printf to complete */
            if(consAppIOData.writeCycleCount++ > pkt.sz * 400)
            {
                if (consAppIOData.wrCallback != NULL)
                {
                    consAppIOData.wrCallback((void *)pkt.data.cbuf);
                }

                popQueue(&writeQueue);
                
                if (writeQueue.numElem == 0)
                {
                    consAppIOData.state = CONSOLE_APPIO_STATE_READY;
                }
                else
                {
                    consAppIOData.state = CONSOLE_APPIO_STATE_START_WRITE;
                }
            }
            break;

        case CONSOLE_APPIO_STATE_OPERATIONAL_ERROR:

            /* We arrive at this state if the APPIO driver reports an error on a read or write operation
             We will attempt to recover by flushing the local buffers */

            Console_APPIO_Flush();
            
            break;

        case CONSOLE_APPIO_STATE_CRITICAL_ERROR:
            break;
        default:
            break;
    }
}