Ejemplo n.º 1
0
void VertexShader_createShader(VertexShader* shader)
{
    GLint shaderCompiled;
    shader->id = glCreateShader(GL_VERTEX_SHADER);
    glShaderSource(shader->id, 1, &shader->shaderSrc, 0);
    glCompileShader(shader->id);

    glGetShaderiv(shader->id, GL_COMPILE_STATUS, &shaderCompiled);

    if (shaderCompiled == GL_FALSE)
    {
        int infologLength = 0;

        int charsWritten = 0;
        char *infoLog;

        glGetShaderiv(shader->id, GL_INFO_LOG_LENGTH, &infologLength);
        if (infologLength > 0)
        {
            infoLog = (char *) malloc(infologLength);
            glGetShaderInfoLog(shader->id, infologLength, &charsWritten, infoLog);
            Log_errorf("The shader %s failed to compile: %s\n", shader->filePath, infoLog);
            free(infoLog);
        }
        else
        {
            Log_errorf("The shader %s failed to compile\n", shader->filePath);
        }
    }
}
Ejemplo n.º 2
0
static void
OBD_reset( void )
{
    Log_errorf( "Resetting CAN controller\n", NULL );

    g_OBD_dataRequestErrors = 0;

    CAN_reset();

    /* Enable loopback mode for testing */
    CAN_setOperatingMode( CAN_OPMODE_LOOPBACK );
}
Ejemplo n.º 3
0
char* readFile(const char* filename)
{
    FILE *stream = NULL;
    size_t size = 0;
    char *contents = NULL;
    int fileSize = 0;
    stream = fopen(filename, "r");
    if (stream == 0)
    {
        Log_errorf("Unable to load %s\n", filename);
        exit(2);
    }

    fseek(stream, 0L, SEEK_END);
    fileSize = ftell(stream);
    fseek(stream, 0L, SEEK_SET);
    contents = malloc(fileSize + 1);
    assert(contents);
    size = fread(contents, 1, fileSize + 1, stream);
    contents[size] = 0; /* Add terminating zero. */
    fclose(stream);
    return contents;
}
Ejemplo n.º 4
0
static void
OBD_errorCallback( CAN_Error_t errorType )
{
    Log_errorf( "OBD error callback\n", NULL );
    return;
}
Ejemplo n.º 5
0
static void
OBD_clientUpdate( void )
{
    /* OBD client state machine */
    switch ( g_OBD_state_client ) {

        /* IDLE state - wait for sample timer to expire */
        case OBD_STATE_IDLE: {

            /* If in the idle state and the sample expired then request data */
            if ( millis() - g_OBD_timer_max_sample_count_ms >= OBD_TIMER_MAX_SAMPLE_RATE_MS ) {

                /* Handle any errors while requesting data */
                if ( OBD_requestVehicleSpeed() == false ) {
                    g_OBD_dataRequestErrors++;
                    g_OBD_timer_max_sample_count_ms = millis();

                    Log_errorf( "OBD_requestVehicleSpeed() failed %u times\n", g_OBD_dataRequestErrors );

                    if ( g_OBD_dataRequestErrors >= OBD_MAX_NUM_DATA_REQUEST_ERRORS ) {
                        OBD_reset();
                    }
                    return;
                }

                /* Reset error count */
                g_OBD_dataRequestErrors = 0;

                /* Otherwise go to the next state */
                g_OBD_state_client = OBD_STATE_DATA_REQUESTED;

                /* Start the data request timeout timer */
                g_OBD_timer_data_requested_timeout_count_ms = millis();
            }

            break;
        }

        /* DATA_REQUESTED state - wait for data to be returned */
        case OBD_STATE_DATA_REQUESTED: {
            if ( millis() - g_OBD_timer_data_requested_timeout_count_ms >= OBD_TIMER_DATA_REQUESTED_TIMEOUT_MS ) {
                Log_errorf( "OBD data request timed out after %u ms\n", OBD_TIMER_DATA_REQUESTED_TIMEOUT_MS );
                /* If we haven't received a response yet then timeout and go back to idle state */
                g_OBD_state_client = OBD_STATE_IDLE;
            }

            break;
        }

        case OBD_STATE_DATA_RECEIVED: {
            OBD_clientParseResponse();
            break;
        }

        /* invalid state - return to IDLE */
        default: {
            /* debug check since we should never get here */
            ASSERT( false );
            g_OBD_state_client = OBD_STATE_IDLE;

            break;
        }
    }
}