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); } } }
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 ); }
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; }
static void OBD_errorCallback( CAN_Error_t errorType ) { Log_errorf( "OBD error callback\n", NULL ); return; }
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; } } }