Example #1
0
void SYS_DEBUG_Print(const char *format, ...)
{
    size_t len = 0;
    size_t padding = 0;
    va_list args;

    va_start( args, format );

    len = vsnprintf(tmpBuf, DEBUG_PRINT_BUFFER_SIZE, format, args);

    va_end( args );

    if (len > 0 && len < DEBUG_PRINT_BUFFER_SIZE)
    {
        tmpBuf[len] = '\0';

        if (len + sysDebugInstance.prtBufPtr >= DEBUG_PRINT_BUFFER_SIZE)
        {
            sysDebugInstance.prtBufPtr = 0;
        }

        strcpy(&printBuffer[sysDebugInstance.prtBufPtr], tmpBuf);
        SYS_CONSOLE_Write(sysDebugInstance.debugConsole, STDOUT_FILENO, &printBuffer[sysDebugInstance.prtBufPtr], len);

        padding = len % 4;

        if (padding > 0 )
        {
            padding = 4 - padding;
        }

        sysDebugInstance.prtBufPtr += len + padding;
    }
}
Example #2
0
// ignore the console handle for now, we support a single system console
static void SendCommandMessage(const void* cmdIoParam, const char* message)
{
    int consoleIndex = 0;

    for (consoleIndex = 0; consoleIndex < SYS_CONSOLE_DEVICE_MAX_INSTANCES; ++consoleIndex)
    {
        SYS_CONSOLE_Write(consoleIndex, STDOUT_FILENO, message, strlen(message));
    }
}
Example #3
0
static void SendCommandCharacter(const void* cmdIoParam, char c)
{
    int consoleIndex = 0;

    for (consoleIndex = 0; consoleIndex < SYS_CONSOLE_DEVICE_MAX_INSTANCES; ++consoleIndex)
    {
        if (SYS_CONSOLE_Status((SYS_MODULE_OBJ)consoleIndex) != SYS_STATUS_READY)
            continue;

        SYS_CONSOLE_Write(consoleIndex, STDOUT_FILENO, (const char*)&c, 1);
    }
}
Example #4
0
void SYS_DEBUG_Message(const char *message)
{
    SYS_CONSOLE_Write(sysDebugInstance.debugConsole, STDOUT_FILENO, message, strlen(message));
}
Example #5
0
void APP_Tasks ( void )
{
    /* Check the application's current state. */
    switch ( appData.state )
    {
        /* Application's initial state. */
        case APP_STATE_INIT:
        {
            SYS_CONSOLE_Flush( SYS_CONSOLE_INDEX_0 );
            
            //ssize_t nr;
            //char myBuffer[] = "\r\npic-CAN-mon";
            //nr = SYS_CONSOLE_Write( SYS_CONSOLE_INDEX_0, STDOUT_FILENO, myBuffer, strlen(myBuffer) );
            //if (nr != strlen(myBuffer))
            //{
            //    // Handle error
            //}
            SYS_PRINT("\r\npicCANmon");
            appData.state = APP_STATE_IDLE;
            break;
        }
        
        case APP_STATE_IDLE:
        {
            PLIB_PORTS_PinToggle(PORTS_ID_0, PORT_CHANNEL_G,
                                 PORTS_BIT_POS_14);
           /* 
            CAN_CHANNEL_EVENT channelEvent;
            channelEvent = PLIB_CAN_ChannelEventGet(CAN_ID_1, CAN_CHANNEL1);
            if((channelEvent & (CAN_RX_CHANNEL_NOT_EMPTY | CAN_RX_CHANNEL_FULL)) != 0) {
                SYS_MESSAGE("\r\nCAN RX\r\n");
                PLIB_PORTS_PinToggle(PORTS_ID_0, PORT_CHANNEL_G,
                                 PORTS_BIT_POS_12);
            }
            */
            
            CAN232_Tasks();
            
            ssize_t nr = 0;
            do {
                nr = SYS_CONSOLE_ReadX( SYS_CONSOLE_INDEX_0, STDIN_FILENO,
                                       &cmdBuffer[cmdTail], 0 );
                if (nr > 0)
                {
                    cmdTail += nr;
                    if (cmdTail >= sizeof(cmdBuffer))
                        cmdTail = 0;
                    //cmdBuffer[cmdTail] = 0;

                    appData.state = APP_STATE_INPUT;

                    PLIB_PORTS_PinToggle(PORTS_ID_0, PORT_CHANNEL_G,
                                         PORTS_BIT_POS_15);
                }
            } while (nr > 0);
            
            break;
        }
        
        case APP_STATE_INPUT:
        {
            appData.state = APP_STATE_IDLE;
            
            if (cmdTail > 0) {
                PLIB_PORTS_PinToggle(PORTS_ID_0, PORT_CHANNEL_G,
                                 PORTS_BIT_POS_13);
                
                char ch = cmdBuffer[cmdTail-1];
                if (ch < ' ') {
                    if (ch == '\r' || ch == '\n') {
                        cmdBuffer[cmdTail] = 0;
                        appData.state = APP_STATE_COMMAND;
                    }
                    cmdTail = 0;
                }
                else 
                {
                    // echo back
                    if (echoInput)
                        SYS_CONSOLE_Write( SYS_CONSOLE_INDEX_0, STDOUT_FILENO,
                                           &cmdBuffer[cmdTail-1], 1);
                }
                
            }
            break;
        }
        
        case APP_STATE_COMMAND: {
            
            //SYS_PRINT("\r\nCMD:%s", cmdBuffer);
            CAN232_Command(cmdBuffer);          
            
            cmdBuffer[0] = 0;   // Reset command buffer
            cmdTail = 0;
            
            appData.state = APP_STATE_IDLE;
            break;
        }

        /* TODO: implement your application state machine.*/

        /* The default state should never be executed. */
        default:
        {
            /* TODO: Handle error in application's state machine. */
            break;
        }
    }
}