From 18faa3a65ae90dd72eee94488c551e51294af407 Mon Sep 17 00:00:00 2001 From: Paul Dino Jones Date: Thu, 25 Jan 2024 03:49:15 +0000 Subject: [PATCH] Fix formatting on new code --- src/gilles/gameloop/browseloop.c | 473 ++++++++++++++++--------------- src/gilles/gameloop/gameloop.c | 51 ++-- src/gilles/gameloop/hoeldb.c | 349 ++++++++++++----------- src/gilles/gameloop/telemetry.c | 279 +++++++++--------- src/gilles/gameloop/telemetry.h | 6 +- 5 files changed, 602 insertions(+), 556 deletions(-) diff --git a/src/gilles/gameloop/browseloop.c b/src/gilles/gameloop/browseloop.c index d28302b..bfb72f5 100644 --- a/src/gilles/gameloop/browseloop.c +++ b/src/gilles/gameloop/browseloop.c @@ -104,14 +104,14 @@ void* browseloop(Parameters* p, char* datadir) { struct _h_result result; - struct _h_connection * conn; + struct _h_connection* conn; conn = h_connect_pgsql(p->db_conn); if (conn == NULL) { - slogf("Unable to connect to configured Gilles database. Are the parameters in the config correct? Is the user allowed to access from this address?"); - p->err = E_FAILED_DB_CONN; - return 0; + slogf("Unable to connect to configured Gilles database. Are the parameters in the config correct? Is the user allowed to access from this address?"); + p->err = E_FAILED_DB_CONN; + return 0; } slogt("Starting analyzer"); @@ -326,224 +326,227 @@ void* browseloop(Parameters* p, char* datadir) if (action == 2) { - slogt("going to perform an action"); - int err = E_NO_ERROR; - sessions = getsessions(conn, "Sessions", &sess); - if (sessions < 0) - { - go = false; - } - else - { - curresults = sessions; - } + slogt("going to perform an action"); + int err = E_NO_ERROR; + sessions = getsessions(conn, "Sessions", &sess); + if (sessions < 0) + { + go = false; + } + else + { + curresults = sessions; + } } if (action == 3) { - slogt("going to perform an action"); - - int err = E_NO_ERROR; - stintsid = getstints(conn, "Stints", &stints, stint_useid); + slogt("going to perform an action"); + + int err = E_NO_ERROR; + stintsid = getstints(conn, "Stints", &stints, stint_useid); + curresults = stintsid; + if (stintsid < 0) + { + go = false; + } + else + { curresults = stintsid; - if (stintsid < 0) - { - go = false; - } - else - { - curresults = stintsid; - } + } } if (action == 4) { - slogt("going to perform an action"); + slogt("going to perform an action"); - int err = E_NO_ERROR; - lapsresults = getlaps(conn, "laps", &lapsdb, lap_useid); - slogt("laps query executed"); + int err = E_NO_ERROR; + lapsresults = getlaps(conn, "laps", &lapsdb, lap_useid); + slogt("laps query executed"); + curresults = lapsresults; + if (lapsresults < 0) + { + go = false; + } + else + { curresults = lapsresults; - if (lapsresults < 0) - { - go = false; - } - else - { - curresults = lapsresults; - } + } } if (action > 0) { wclear(bwin1); - switch(screen) { - case SESSIONS_SCREEN: + switch(screen) + { + case SESSIONS_SCREEN: - - for(int i=0; i 0 && selection2 > 0) { - dumptelemetrytofile(conn, datadir, selection1, selection2); + dumptelemetrytofile(conn, datadir, selection1, selection2); - slogi("finished dumping data"); - size_t strsize = strlen(datadir) + strlen(p->gnuplot_file) + 1; - char* plotfile = malloc(strsize); - snprintf(plotfile, strsize, "%s%s", datadir, p->gnuplot_file); - static char* argv1[]={"gnuplot", "-p", "plotfile.gp", NULL}; - argv1[2] = plotfile; - slogi("Using gnu plot file %s", plotfile); - if(!fork()) - { - execv(p->gnuplot_bin, argv1); - } + slogi("finished dumping data"); + size_t strsize = strlen(datadir) + strlen(p->gnuplot_file) + 1; + char* plotfile = malloc(strsize); + snprintf(plotfile, strsize, "%s%s", datadir, p->gnuplot_file); + static char* argv1[]= {"gnuplot", "-p", "plotfile.gp", NULL}; + argv1[2] = plotfile; + slogi("Using gnu plot file %s", plotfile); + if(!fork()) + { + execv(p->gnuplot_bin, argv1); + } } } else { - sloge("No gnuplot binary found or specified"); + sloge("No gnuplot binary found or specified"); } action = 4; } @@ -623,7 +628,7 @@ void* browseloop(Parameters* p, char* datadir) selection++; if (selection > curresults) { - selection = curresults; + selection = curresults; } } if (ch == 'A' || ch == 'k') @@ -631,21 +636,21 @@ void* browseloop(Parameters* p, char* datadir) selection--; if (selection <= 1) { - selection = 1; + selection = 1; } } if (ch == '1') { - selection1 = lapsdb.rows[selection-1].lap_id; - action = 1; + selection1 = lapsdb.rows[selection-1].lap_id; + action = 1; } if (ch == '2') { - selection2 = lapsdb.rows[selection-1].lap_id; - action = 1; + selection2 = lapsdb.rows[selection-1].lap_id; + action = 1; } - + } diff --git a/src/gilles/gameloop/gameloop.c b/src/gilles/gameloop/gameloop.c index dd48430..bb77e63 100644 --- a/src/gilles/gameloop/gameloop.c +++ b/src/gilles/gameloop/gameloop.c @@ -109,7 +109,7 @@ int curses_init() box(win4, 0, 0); } -char * removeSpacesFromStr(char *string) +char* removeSpacesFromStr(char* string) { int non_space_count = 0; @@ -129,7 +129,7 @@ char * removeSpacesFromStr(char *string) void update_date() { time_t rawtime; - struct tm * timeinfo; + struct tm* timeinfo; time ( &rawtime ); timeinfo = localtime ( &rawtime ); sprintf(datestring, "%.24s", asctime (timeinfo)); @@ -171,7 +171,8 @@ int mainloop(Parameters* p) getSim(simdata, simmap, &p->simon, &p->sim); - if (p->simon == true) { + if (p->simon == true) + { p->program_state = 1; if (p->cli == true) { @@ -319,7 +320,8 @@ void* looper(void* thargs) wclear(win3); wclear(win4); - { // window 1 car diagnostics + { + // window 1 car diagnostics char spacer[14]; sprintf(spacer, "\n"); @@ -474,7 +476,8 @@ void* looper(void* thargs) rectangle(18, 18, 22, 22); // right rear } - { // window 2 session info + { + // window 2 session info char spacer[14]; sprintf(spacer, "\n"); @@ -537,7 +540,8 @@ void* looper(void* thargs) wattrset(win2, COLOR_PAIR(1)); } - { // window 3 basic timing and scoring + { + // window 3 basic timing and scoring char spacer[14]; sprintf(spacer, "\n"); @@ -602,7 +606,8 @@ void* looper(void* thargs) wattrset(win3, COLOR_PAIR(1)); } - { // window 4 live standings timing and scoring + { + // window 4 live standings timing and scoring char spacer[14]; sprintf(spacer, "\n"); waddstr(win4, spacer); @@ -637,7 +642,9 @@ void* looper(void* thargs) for(i=0; icars[i].pos) + { break; + } } wattrset(win4, COLOR_PAIR(2)); @@ -667,8 +674,8 @@ void* looper(void* thargs) if(simdata->cars[i].inpitlane == 0 && simdata->cars[i].inpit == 0) { - wattrset(win4, COLOR_PAIR(1)); - wprintw(win4, " ontrack "); + wattrset(win4, COLOR_PAIR(1)); + wprintw(win4, " ontrack "); } else { @@ -730,31 +737,31 @@ void* simviewmysql(void* thargs) SimMap* simmap = p->simmap; struct _h_result result; - struct _h_connection * conn; + struct _h_connection* conn; conn = h_connect_pgsql(p->db_conn); if (conn == NULL) { - slogf("Unable to connect to configured Gilles database. Are the parameters in the config correct? Is the user allowed to access from this address?"); - p->err = E_FAILED_DB_CONN; - return 0; + slogf("Unable to connect to configured Gilles database. Are the parameters in the config correct? Is the user allowed to access from this address?"); + p->err = E_FAILED_DB_CONN; + return 0; } slogi("Starting telemetry"); int trackconfig = gettrack(conn, simdata->track); if (trackconfig == -1) { - slogf("Problem performing select query. Does the db user have read permissions?"); - p->err = E_FAILED_DB_CONN; - return 0; + slogf("Problem performing select query. Does the db user have read permissions?"); + p->err = E_FAILED_DB_CONN; + return 0; } trackconfig = addtrackconfig(conn, trackconfig, simdata->track, simdata->trackdistancearound); if (trackconfig == -1) { - slogf("Problem performing insert query. Does the db user have write permissions?"); - p->err = E_FAILED_DB_CONN; - return 0; + slogf("Problem performing insert query. Does the db user have write permissions?"); + p->err = E_FAILED_DB_CONN; + return 0; } slogt("Detected track configuration id: %i", trackconfig); int eventid = addevent(conn, trackconfig); @@ -854,9 +861,9 @@ void* simviewmysql(void* thargs) if (simdata->inpit == true && pitstatus != lastpitstatus) { //pitstatus = 1; - //} - //if (pitstatus = 0 && pitstatus != lastpitstatus) - //{ + //} + //if (pitstatus = 0 && pitstatus != lastpitstatus) + //{ // close last stint closestint(conn, stintid, stintlaps, validstintlaps); diff --git a/src/gilles/gameloop/hoeldb.c b/src/gilles/gameloop/hoeldb.c index 2505b09..7a489ad 100644 --- a/src/gilles/gameloop/hoeldb.c +++ b/src/gilles/gameloop/hoeldb.c @@ -20,64 +20,70 @@ int getLastInsertID(struct _h_connection* conn) return id; } -void get_row_results(struct _h_result result, DBField* fields, void* rows, size_t rowsize) { - int col, row, i; - char buf[64]; - //sess->hasdata = true; - //sess->rows = result.nb_rows; - slogi("rows: %d, col: %d", result.nb_rows, result.nb_columns); - char* aaa = (char *) rows; - for (row = 0; rowhasdata = true; + //sess->rows = result.nb_rows; + slogi("rows: %d, col: %d", result.nb_rows, result.nb_columns); + char* aaa = (char*) rows; + for (row = 0; rowvalue; - *(int*) a = bb; - break; - case HOEL_COL_TYPE_DOUBLE: - double cc = ((struct _h_type_double *)result.data[row][col].t_data)->value; - *(double*) a = cc; - break; - case HOEL_COL_TYPE_TEXT: - char* ddd = ((struct _h_type_text *)result.data[row][col].t_data)->value; - memcpy(a, ddd, fields[col].size); - break; - case HOEL_COL_TYPE_BLOB: - for (i=0; i<((struct _h_type_blob *)result.data[row][col].t_data)->length; i++) { - printf("%c", *((char*)(((struct _h_type_blob *)result.data[row][col].t_data)->value+i))); - if (i%80 == 0 && i>0) { - printf("\n"); + char* aa = (char*)aaa + (rowsize * row); + for (col=0; colvalue; + *(int*) a = bb; + break; + case HOEL_COL_TYPE_DOUBLE: + double cc = ((struct _h_type_double*)result.data[row][col].t_data)->value; + *(double*) a = cc; + break; + case HOEL_COL_TYPE_TEXT: + char* ddd = ((struct _h_type_text*)result.data[row][col].t_data)->value; + memcpy(a, ddd, fields[col].size); + break; + case HOEL_COL_TYPE_BLOB: + for (i=0; i<((struct _h_type_blob*)result.data[row][col].t_data)->length; i++) + { + printf("%c", *((char*)(((struct _h_type_blob*)result.data[row][col].t_data)->value+i))); + if (i%80 == 0 && i>0) + { + printf("\n"); + } + } + break; + case HOEL_COL_TYPE_DATE: + strftime(a, fields[col].size, "%Y-%m-%d %H:%M:%S", &((struct _h_type_datetime*)result.data[row][col].t_data)->value); + //strftime(buf, 64, "%Y-%m-%d %H:%M:%S", &((struct _h_type_datetime *)result.data[row][col].t_data)->value); + printf("| %s ", buf); + case HOEL_COL_TYPE_NULL: + printf("| [null] "); + break; } - } - break; - case HOEL_COL_TYPE_DATE: - strftime(a, fields[col].size, "%Y-%m-%d %H:%M:%S", &((struct _h_type_datetime *)result.data[row][col].t_data)->value); - //strftime(buf, 64, "%Y-%m-%d %H:%M:%S", &((struct _h_type_datetime *)result.data[row][col].t_data)->value); - printf("| %s ", buf); - case HOEL_COL_TYPE_NULL: - printf("| [null] "); - break; - } + } + printf("|\n"); } - printf("|\n"); - } } int getsessions(struct _h_connection* conn, const char* sessionname, SessionDbo* sess) { struct _h_result result; - struct _h_data * data; + struct _h_data* data; char* query = malloc(515 * sizeof(char)); slogt("Performing query sessions"); sprintf(query, "select sessions.session_id, events.event_id, sessions.event_type, table1.stints, track_config.display_name, cars.car_name, start_time " - "FROM %s JOIN events ON sessions.event_id=events.event_id JOIN track_config ON events.track_config_id=track_config.track_config_id " - "JOIN cars ON sessions.car_id=cars.car_id " - "JOIN (Select session_id, COUNT(stint_id) AS stints FROM stints GROUP BY session_id) AS table1 ON table1.session_id=sessions.session_id " - "ORDER BY session_id DESC LIMIT 25", "Sessions"); + "FROM %s JOIN events ON sessions.event_id=events.event_id JOIN track_config ON events.track_config_id=track_config.track_config_id " + "JOIN cars ON sessions.car_id=cars.car_id " + "JOIN (Select session_id, COUNT(stint_id) AS stints FROM stints GROUP BY session_id) AS table1 ON table1.session_id=sessions.session_id " + "ORDER BY session_id DESC LIMIT 25", "Sessions"); int errcode = h_query_select(conn, query, &result); if (errcode == H_OK) @@ -100,7 +106,7 @@ int getsessions(struct _h_connection* conn, const char* sessionname, SessionDbo* int getstints(struct _h_connection* conn, const char* sessionname, StintDbo* stint, int use_id) { struct _h_result result; - struct _h_data * data; + struct _h_data* data; char* query = malloc(150 * sizeof(char)); slogt("Performing query stints"); @@ -128,7 +134,7 @@ int getstints(struct _h_connection* conn, const char* sessionname, StintDbo* sti int getlaps(struct _h_connection* conn, const char* sessionname, LapDbo* laps, int use_id) { struct _h_result result; - struct _h_data * data; + struct _h_data* data; char* query = malloc(250 * sizeof(char)); slogt("Performing query laps"); @@ -139,7 +145,9 @@ int getlaps(struct _h_connection* conn, const char* sessionname, LapDbo* laps, i laps->rows = malloc(sizeof(LapRowData) * result.nb_rows); get_row_results(result, laps->fields, laps->rows, sizeof(LapRowData)); h_clean_result(&result); - } else { + } + else + { sloge("Error executing query %s returned %i", query, errcode); free(query); return -1; @@ -153,124 +161,135 @@ int gettrack(struct _h_connection* conn, const char* trackname) { - json_t *j_result; + json_t* j_result; char* where_clause = h_build_where_clause(conn, "config_name=%s AND track_name=%s", "default", trackname); json_t* j_query = json_pack("{sss[s]s{s{ssss}}}", "table", "track_config", "columns", "track_config_id", "where", " ", "operator", "raw", - "value", where_clause); + "value", where_clause); char* qq; int res = h_select(conn, j_query, &j_result, &qq); - // Deallocate j_query since it won't be needed anymore - json_decref(j_query); - h_free(where_clause); - int track_config = -1; - // Test query execution result - if (res == H_OK) { - // Print result - //char* dump = json_dumps(j_result, JSON_INDENT(2)); - //slogi("json select result is\n%s", dump); - int index1 = json_array_size(j_result); - //if (index1 == 0) - //{ - // slogw("no config for this track"); - //} - //else { - json_t* jj = json_array_get(j_result, index1-1); - track_config = json_integer_value(json_object_get(jj, "track_config_id")); - //} - // Deallocate data result + // Deallocate j_query since it won't be needed anymore + json_decref(j_query); + h_free(where_clause); + int track_config = -1; + // Test query execution result + if (res == H_OK) + { + // Print result + //char* dump = json_dumps(j_result, JSON_INDENT(2)); + //slogi("json select result is\n%s", dump); + int index1 = json_array_size(j_result); + //if (index1 == 0) + //{ + // slogw("no config for this track"); + //} + //else { + json_t* jj = json_array_get(j_result, index1-1); + track_config = json_integer_value(json_object_get(jj, "track_config_id")); + //} + // Deallocate data result - //free(dump); - } else { - sloge("Error executing select query %s: %d", qq, res); - } - json_decref(j_result); - free(qq); - json_decref(j_query); - h_free(where_clause); - return track_config; + //free(dump); + } + else + { + sloge("Error executing select query %s: %d", qq, res); + } + json_decref(j_result); + free(qq); + json_decref(j_query); + h_free(where_clause); + return track_config; } int getdriver(struct _h_connection* conn, const char* driver_name) { - json_t *j_result; + json_t* j_result; char* where_clause = h_build_where_clause(conn, "driver_name=%s", driver_name); json_t* j_query = json_pack("{sss[s]s{s{ssss}}}","table", "drivers", "columns", "driver_id", "where", " ", "operator", "raw", - "value", where_clause); + "value", where_clause); slogi("Looking for driver named %s", driver_name); char* qq; int res = h_select(conn, j_query, &j_result, &qq); //slogi("here your query: %s", qq); - // Deallocate j_query since it won't be needed anymore - json_decref(j_query); - h_free(where_clause); - int driver_id = -1; - // Test query execution result - if (res == H_OK) { - // Print result - char* dump = json_dumps(j_result, JSON_INDENT(2)); - slogt("json select result is\n%s", dump); - int index1 = json_array_size(j_result); - if (index1 == 0) + // Deallocate j_query since it won't be needed anymore + json_decref(j_query); + h_free(where_clause); + int driver_id = -1; + // Test query execution result + if (res == H_OK) { - slogw("no driver by this name"); + // Print result + char* dump = json_dumps(j_result, JSON_INDENT(2)); + slogt("json select result is\n%s", dump); + int index1 = json_array_size(j_result); + if (index1 == 0) + { + slogw("no driver by this name"); + } + else + { + json_t* jj = json_array_get(j_result, index1-1); + driver_id = json_integer_value(json_object_get(jj, "driver_id")); + } + // Deallocate data result + free(dump); } - else { - json_t* jj = json_array_get(j_result, index1-1); - driver_id = json_integer_value(json_object_get(jj, "driver_id")); + else + { + sloge("Error executing select query %s: %d", qq, res); } - // Deallocate data result - free(dump); - } else { - sloge("Error executing select query %s: %d", qq, res); - } - json_decref(j_result); - free(qq); - json_decref(j_query); - h_free(where_clause); - return driver_id; + json_decref(j_result); + free(qq); + json_decref(j_query); + h_free(where_clause); + return driver_id; } int getcar(struct _h_connection* conn, const char* carname) { - json_t *j_result; + json_t* j_result; char* where_clause = h_build_where_clause(conn, "car_name=%s", carname); json_t* j_query = json_pack("{sss[s]s{s{ssss}}}","table", "cars", "columns", "car_id", "where", " ", "operator", "raw", - "value", where_clause); + "value", where_clause); slogi("Looking for car named %s", carname); char* qq; int res = h_select(conn, j_query, &j_result, &qq); //slogi("here your query: %s", qq); - // Deallocate j_query since it won't be needed anymore + // Deallocate j_query since it won't be needed anymore - int car_id = -1; - // Test query execution result - if (res == H_OK) { - // Print result - char* dump = json_dumps(j_result, JSON_INDENT(2)); - slogt("json select result is\n%s", dump); - int index1 = json_array_size(j_result); - if (index1 == 0) + int car_id = -1; + // Test query execution result + if (res == H_OK) { - slogw("no car by this name"); + // Print result + char* dump = json_dumps(j_result, JSON_INDENT(2)); + slogt("json select result is\n%s", dump); + int index1 = json_array_size(j_result); + if (index1 == 0) + { + slogw("no car by this name"); + } + else + { + json_t* jj = json_array_get(j_result, index1-1); + car_id = json_integer_value(json_object_get(jj, "car_id")); + } + // Deallocate data result + free(dump); } - else { - json_t* jj = json_array_get(j_result, index1-1); - car_id = json_integer_value(json_object_get(jj, "car_id")); + else + { + sloge("Error executing select query %s: %d", qq, res); } - // Deallocate data result - free(dump); - } else { - sloge("Error executing select query %s: %d", qq, res); - } - json_decref(j_result); - free(qq); - json_decref(j_query); - h_free(where_clause); - return car_id; + json_decref(j_result); + free(qq); + json_decref(j_query); + h_free(where_clause); + return car_id; } @@ -282,8 +301,8 @@ int addtrackconfig(struct _h_connection* conn, int trackconfigid, const char* tr { return trackconfigid; } - json_t *root = json_object(); - json_t *json_arr = json_array(); + json_t* root = json_object(); + json_t* json_arr = json_array(); json_object_set_new( root, "table", json_string("track_config") ); json_object_set_new( root, "values", json_arr ); @@ -319,8 +338,8 @@ int addsession(struct _h_connection* conn, int eventid, int carid, int eventtype // session_id | event_id | event_type | track_time | session_name // | start_time | duration_min | elapsed_ms | laps | weather | // air_temp | road_temp | start_grip | - json_t *root = json_object(); - json_t *json_arr = json_array(); + json_t* root = json_object(); + json_t* json_arr = json_array(); json_object_set_new( root, "table", json_string("sessions") ); json_object_set_new( root, "values", json_arr ); @@ -359,8 +378,8 @@ int adddriver(struct _h_connection* conn, int driverid, const char* drivername) { return driverid; } - json_t *root = json_object(); - json_t *json_arr = json_array(); + json_t* root = json_object(); + json_t* json_arr = json_array(); json_object_set_new( root, "table", json_string("drivers") ); json_object_set_new( root, "values", json_arr ); @@ -393,8 +412,8 @@ int adddriver(struct _h_connection* conn, int driverid, const char* drivername) int addevent(struct _h_connection* conn, int track_config) { - json_t *root = json_object(); - json_t *json_arr = json_array(); + json_t* root = json_object(); + json_t* json_arr = json_array(); json_object_set_new( root, "table", json_string("events") ); json_object_set_new( root, "values", json_arr ); @@ -425,8 +444,8 @@ int addstint(struct _h_connection* conn, int sessionid, int driverid, int carid, { - json_t *root = json_object(); - json_t *json_arr = json_array(); + json_t* root = json_object(); + json_t* json_arr = json_array(); json_object_set_new( root, "table", json_string("stints") ); json_object_set_new( root, "values", json_arr ); @@ -468,8 +487,8 @@ int addstintlap(struct _h_connection* conn, int stintid, SimData* simdata) // stint laps // stint_lap_id | stint_id | sector_1 | sector_2 | sector_3 | grip | tyre | time | cuts | crashes // max_speed | avg_speed | finished_at - json_t *root = json_object(); - json_t *json_arr = json_array(); + json_t* root = json_object(); + json_t* json_arr = json_array(); json_object_set_new( root, "table", json_string("laps") ); json_object_set_new( root, "values", json_arr ); @@ -503,8 +522,8 @@ int addcar(struct _h_connection* conn, int carid, const char* carname) { return carid; } - json_t *root = json_object(); - json_t *json_arr = json_array(); + json_t* root = json_object(); + json_t* json_arr = json_array(); json_object_set_new( root, "table", json_string("cars") ); json_object_set_new( root, "values", json_arr ); @@ -534,8 +553,8 @@ int addcar(struct _h_connection* conn, int carid, const char* carname) int addtelemetry(struct _h_connection* conn, int points, int stintid) { - json_t *root = json_object(); - json_t *json_arr = json_array(); + json_t* root = json_object(); + json_t* json_arr = json_array(); json_object_set_new( root, "table", json_string("telemetry") ); json_object_set_new( root, "values", json_arr ); @@ -572,24 +591,24 @@ int closelap(struct _h_connection* conn, int lapid, int sector1, int sector2, in char* query = malloc((sizeof(char)*632)); sprintf(query, "UPDATE %s SET %s=%i, %s=%i, %s=%i, %s=%i, %s=%f, %s=%f, %s=%f, %s=%f, %s=%f, %s=%f, %s=%f, %s=%f, %s=%f, %s=%f, %s=%f, %s=%f, %s=%f, %s=%f, %s=%f, %s=%f, finished_at=NOW() WHERE lap_id=%i;", - "laps", "time", simdata->lastlap, "sector_1", sector1, "sector_2", sector2, "sector_3", sector3, - "right_front_tyre_temp", simdata->tyretemp[1], - "right_rear_tyre_temp", simdata->tyretemp[3], - "right_front_tyre_wear", simdata->tyrewear[1], - "right_rear_tyre_wear", simdata->tyrewear[3], - "right_front_tyre_press",simdata->tyrepressure[1], - "right_rear_tyre_press", simdata->tyrepressure[3], - "right_front_brake_temp",simdata->braketemp[1], - "right_rear_brake_temp", simdata->braketemp[3], - "left_front_tyre_temp", simdata->tyretemp[0], - "left_rear_tyre_temp", simdata->tyretemp[2], - "left_front_tyre_wear", simdata->tyrewear[0], - "left_rear_tyre_wear", simdata->tyrewear[2], - "left_front_tyre_press",simdata->tyrepressure[0], - "left_rear_tyre_press", simdata->tyrepressure[2], - "left_front_brake_temp",simdata->braketemp[0], - "left_rear_brake_temp", simdata->braketemp[2], - lapid); + "laps", "time", simdata->lastlap, "sector_1", sector1, "sector_2", sector2, "sector_3", sector3, + "right_front_tyre_temp", simdata->tyretemp[1], + "right_rear_tyre_temp", simdata->tyretemp[3], + "right_front_tyre_wear", simdata->tyrewear[1], + "right_rear_tyre_wear", simdata->tyrewear[3], + "right_front_tyre_press",simdata->tyrepressure[1], + "right_rear_tyre_press", simdata->tyrepressure[3], + "right_front_brake_temp",simdata->braketemp[1], + "right_rear_brake_temp", simdata->braketemp[3], + "left_front_tyre_temp", simdata->tyretemp[0], + "left_rear_tyre_temp", simdata->tyretemp[2], + "left_front_tyre_wear", simdata->tyrewear[0], + "left_rear_tyre_wear", simdata->tyrewear[2], + "left_front_tyre_press",simdata->tyrepressure[0], + "left_rear_tyre_press", simdata->tyrepressure[2], + "left_front_brake_temp",simdata->braketemp[0], + "left_rear_brake_temp", simdata->braketemp[2], + lapid); int errcode = h_query_update(conn, query); if (errcode != H_OK) diff --git a/src/gilles/gameloop/telemetry.c b/src/gilles/gameloop/telemetry.c index 5d74957..9eb3f89 100644 --- a/src/gilles/gameloop/telemetry.c +++ b/src/gilles/gameloop/telemetry.c @@ -12,109 +12,113 @@ #include "../helper/confighelper.h" #include "../slog/slog.h" -int telem_result(struct _h_result result, int doublefields, int intfields, int* intarrays, double* doublearrays) { - int col, row, i; - char buf[64]; - slogt("rows: %d, col: %d", result.nb_rows, result.nb_columns); - //int* intarrays; - int points = 0; - //int doublefields = 3; - //int intfields = 3; - //int* intarrays; - //int* doublearrays; - //int* intarrays = malloc((sizeof(int)*1736)*3); - //double* doublearrays = malloc((sizeof(double)*1736)*3); - int intarrayoffset = 0; - int doublearrayoffset = 0; +int telem_result(struct _h_result result, int doublefields, int intfields, int* intarrays, double* doublearrays) +{ + int col, row, i; + char buf[64]; + slogt("rows: %d, col: %d", result.nb_rows, result.nb_columns); + //int* intarrays; + int points = 0; + //int doublefields = 3; + //int intfields = 3; + //int* intarrays; + //int* doublearrays; + //int* intarrays = malloc((sizeof(int)*1736)*3); + //double* doublearrays = malloc((sizeof(double)*1736)*3); + int intarrayoffset = 0; + int doublearrayoffset = 0; - for (row = 0; rowvalue; - if (col == 1) - { - points = cc; - } - break; - case HOEL_COL_TYPE_DOUBLE: - //intarrays = malloc((sizeof(int)*1736)*3); - break; - case HOEL_COL_TYPE_TEXT: - slogi("| %s ", ((struct _h_type_text *)result.data[row][col].t_data)->value); - break; - case HOEL_COL_TYPE_BLOB: - int offset2 = 0; + for (row = 0; rowvalue; + if (col == 1) + { + points = cc; + } + break; + case HOEL_COL_TYPE_DOUBLE: + //intarrays = malloc((sizeof(int)*1736)*3); + break; + case HOEL_COL_TYPE_TEXT: + slogi("| %s ", ((struct _h_type_text*)result.data[row][col].t_data)->value); + break; + case HOEL_COL_TYPE_BLOB: + int offset2 = 0; - int j = 0; - i = 2; - if (col < 5) - { - while (i<((struct _h_type_blob *)result.data[row][col].t_data)->length) - { - char sss[10]; - sss[0] = '0'; - sss[1] = 'x'; - sss[2] = *((char*)((struct _h_type_blob *)result.data[row][col].t_data)->value+offset2+2); - sss[3] = *((char*)((struct _h_type_blob *)result.data[row][col].t_data)->value+offset2+3); - sss[4] = *((char*)((struct _h_type_blob *)result.data[row][col].t_data)->value+offset2+4); - sss[5] = *((char*)((struct _h_type_blob *)result.data[row][col].t_data)->value+offset2+5); - sss[6] = *((char*)((struct _h_type_blob *)result.data[row][col].t_data)->value+offset2+6); - sss[7] = *((char*)((struct _h_type_blob *)result.data[row][col].t_data)->value+offset2+7); - sss[8] = *((char*)((struct _h_type_blob *)result.data[row][col].t_data)->value+offset2+8); - sss[9] = *((char*)((struct _h_type_blob *)result.data[row][col].t_data)->value+offset2+9); - long val; - int number = (int)strtol(sss, NULL, 16); - int swapped = __bswap_32(number); + int j = 0; + i = 2; + if (col < 5) + { + while (i<((struct _h_type_blob*)result.data[row][col].t_data)->length) + { + char sss[10]; + sss[0] = '0'; + sss[1] = 'x'; + sss[2] = *((char*)((struct _h_type_blob*)result.data[row][col].t_data)->value+offset2+2); + sss[3] = *((char*)((struct _h_type_blob*)result.data[row][col].t_data)->value+offset2+3); + sss[4] = *((char*)((struct _h_type_blob*)result.data[row][col].t_data)->value+offset2+4); + sss[5] = *((char*)((struct _h_type_blob*)result.data[row][col].t_data)->value+offset2+5); + sss[6] = *((char*)((struct _h_type_blob*)result.data[row][col].t_data)->value+offset2+6); + sss[7] = *((char*)((struct _h_type_blob*)result.data[row][col].t_data)->value+offset2+7); + sss[8] = *((char*)((struct _h_type_blob*)result.data[row][col].t_data)->value+offset2+8); + sss[9] = *((char*)((struct _h_type_blob*)result.data[row][col].t_data)->value+offset2+9); + long val; + int number = (int)strtol(sss, NULL, 16); + int swapped = __bswap_32(number); - intarrays[j+intarrayoffset] = __bswap_32(number); - offset2 = offset2 + 8; - i+=8; - j++; - } - intarrayoffset += points; - } - else - { - while (i<((struct _h_type_blob *)result.data[row][col].t_data)->length) - { - char sss[18]; - sss[0] = '0'; - sss[1] = 'x'; - sss[2] = *((char*)((struct _h_type_blob *)result.data[row][col].t_data)->value+offset2+2); - sss[3] = *((char*)((struct _h_type_blob *)result.data[row][col].t_data)->value+offset2+3); - sss[4] = *((char*)((struct _h_type_blob *)result.data[row][col].t_data)->value+offset2+4); - sss[5] = *((char*)((struct _h_type_blob *)result.data[row][col].t_data)->value+offset2+5); - sss[6] = *((char*)((struct _h_type_blob *)result.data[row][col].t_data)->value+offset2+6); - sss[7] = *((char*)((struct _h_type_blob *)result.data[row][col].t_data)->value+offset2+7); - sss[8] = *((char*)((struct _h_type_blob *)result.data[row][col].t_data)->value+offset2+8); - sss[9] = *((char*)((struct _h_type_blob *)result.data[row][col].t_data)->value+offset2+9); - sss[2+8] = *((char*)((struct _h_type_blob *)result.data[row][col].t_data)->value+offset2+2+8); - sss[3+8] = *((char*)((struct _h_type_blob *)result.data[row][col].t_data)->value+offset2+3+8); - sss[4+8] = *((char*)((struct _h_type_blob *)result.data[row][col].t_data)->value+offset2+4+8); - sss[5+8] = *((char*)((struct _h_type_blob *)result.data[row][col].t_data)->value+offset2+5+8); - sss[6+8] = *((char*)((struct _h_type_blob *)result.data[row][col].t_data)->value+offset2+6+8); - sss[7+8] = *((char*)((struct _h_type_blob *)result.data[row][col].t_data)->value+offset2+7+8); - sss[8+8] = *((char*)((struct _h_type_blob *)result.data[row][col].t_data)->value+offset2+8+8); - sss[9+8] = *((char*)((struct _h_type_blob *)result.data[row][col].t_data)->value+offset2+9+8); - long val; - int64_t number = (int64_t) strtoll(sss, NULL, 16); - int64_t swapped = __bswap_64(number); - double d = *((double*)&swapped); - doublearrays[j+doublearrayoffset] = (double) d; - offset2 = offset2 + 16; - i+=16; - j++; - } - doublearrayoffset += points; + intarrays[j+intarrayoffset] = __bswap_32(number); + offset2 = offset2 + 8; + i+=8; + j++; + } + intarrayoffset += points; + } + else + { + while (i<((struct _h_type_blob*)result.data[row][col].t_data)->length) + { + char sss[18]; + sss[0] = '0'; + sss[1] = 'x'; + sss[2] = *((char*)((struct _h_type_blob*)result.data[row][col].t_data)->value+offset2+2); + sss[3] = *((char*)((struct _h_type_blob*)result.data[row][col].t_data)->value+offset2+3); + sss[4] = *((char*)((struct _h_type_blob*)result.data[row][col].t_data)->value+offset2+4); + sss[5] = *((char*)((struct _h_type_blob*)result.data[row][col].t_data)->value+offset2+5); + sss[6] = *((char*)((struct _h_type_blob*)result.data[row][col].t_data)->value+offset2+6); + sss[7] = *((char*)((struct _h_type_blob*)result.data[row][col].t_data)->value+offset2+7); + sss[8] = *((char*)((struct _h_type_blob*)result.data[row][col].t_data)->value+offset2+8); + sss[9] = *((char*)((struct _h_type_blob*)result.data[row][col].t_data)->value+offset2+9); + sss[2+8] = *((char*)((struct _h_type_blob*)result.data[row][col].t_data)->value+offset2+2+8); + sss[3+8] = *((char*)((struct _h_type_blob*)result.data[row][col].t_data)->value+offset2+3+8); + sss[4+8] = *((char*)((struct _h_type_blob*)result.data[row][col].t_data)->value+offset2+4+8); + sss[5+8] = *((char*)((struct _h_type_blob*)result.data[row][col].t_data)->value+offset2+5+8); + sss[6+8] = *((char*)((struct _h_type_blob*)result.data[row][col].t_data)->value+offset2+6+8); + sss[7+8] = *((char*)((struct _h_type_blob*)result.data[row][col].t_data)->value+offset2+7+8); + sss[8+8] = *((char*)((struct _h_type_blob*)result.data[row][col].t_data)->value+offset2+8+8); + sss[9+8] = *((char*)((struct _h_type_blob*)result.data[row][col].t_data)->value+offset2+9+8); + long val; + int64_t number = (int64_t) strtoll(sss, NULL, 16); + int64_t swapped = __bswap_64(number); + double d = *((double*)&swapped); + doublearrays[j+doublearrayoffset] = (double) d; + offset2 = offset2 + 16; + i+=16; + j++; + } + doublearrayoffset += points; - } - //snprintf( "blob value: %.*s", ((struct _h_type_blob *)result.data[row][col].t_data)->length, ((struct _h_type_blob *)result.data[row][col].t_data)->value); - //char* b = malloc(sizeof(int)*1736); - //for (i=0; i<((struct _h_type_blob *)result.data[row][col].t_data)->length; i++) { - // //slogi("%c", *((char*)(((struct _h_type_blob *)result.data[row][col].t_data)->value+i))); - // memcpy(&b[i], ((struct _h_type_blob *)result.data[row][col].t_data)->value+1*sizeof(char), sizeof(char)); - //} + } + //snprintf( "blob value: %.*s", ((struct _h_type_blob *)result.data[row][col].t_data)->length, ((struct _h_type_blob *)result.data[row][col].t_data)->value); + //char* b = malloc(sizeof(int)*1736); + //for (i=0; i<((struct _h_type_blob *)result.data[row][col].t_data)->length; i++) { + // //slogi("%c", *((char*)(((struct _h_type_blob *)result.data[row][col].t_data)->value+i))); + // memcpy(&b[i], ((struct _h_type_blob *)result.data[row][col].t_data)->value+1*sizeof(char), sizeof(char)); + //} // FILE *out = fopen("memory.bin", "wb"); // if(out != NULL) // { @@ -128,19 +132,19 @@ int telem_result(struct _h_result result, int doublefields, int intfields, int* // } // fclose(out); // } - break; - case HOEL_COL_TYPE_DATE: - strftime(buf, 64, "%Y-%m-%d %H:%M:%S", &((struct _h_type_datetime *)result.data[row][col].t_data)->value); - printf("| %s ", buf); - case HOEL_COL_TYPE_NULL: - slogi("| [null] "); - break; - } + break; + case HOEL_COL_TYPE_DATE: + strftime(buf, 64, "%Y-%m-%d %H:%M:%S", &((struct _h_type_datetime*)result.data[row][col].t_data)->value); + printf("| %s ", buf); + case HOEL_COL_TYPE_NULL: + slogi("| [null] "); + break; + } + } + printf("|\n"); } - printf("|\n"); - } - return points; + return points; } int dumptelemetrytofile(struct _h_connection* conn, char* datadir, int lap1id, int lap2id) @@ -153,16 +157,19 @@ int dumptelemetrytofile(struct _h_connection* conn, char* datadir, int lap1id, i int doublefields = 3; struct _h_result result; - struct _h_data *data; + struct _h_data* data; char* query = malloc(150 * sizeof(char)); sprintf(query, "SELECT lap_id, points FROM %s WHERE %s=%i", "telemetry", "lap_id", lap1id); - if (h_query_select(conn, query, &result) == H_OK) { + if (h_query_select(conn, query, &result) == H_OK) + { //laps->rows = malloc(sizeof(LapRowData) * result.nb_rows); //get_row_results(result, laps->fields, laps->rows, sizeof(LapRowData)); points = telem_result(result, 3, 3, NULL, NULL); //get_stint_result(result, stint); h_clean_result(&result); - } else { + } + else + { printf("Error executing query\n"); } free(query); @@ -174,31 +181,37 @@ int dumptelemetrytofile(struct _h_connection* conn, char* datadir, int lap1id, i double* doublearrays2 = malloc((sizeof(double))*points*doublefields); struct _h_result result1; - struct _h_data * data1; + struct _h_data* data1; char* query1 = malloc(150 * sizeof(char)); sprintf(query1, "SELECT lap_id, points, speed, gear, rpms, brake, accel, steer FROM %s WHERE %s=%i", "telemetry", "lap_id", lap1id); - if (h_query_select(conn, query1, &result1) == H_OK) { + if (h_query_select(conn, query1, &result1) == H_OK) + { //laps->rows = malloc(sizeof(LapRowData) * result.nb_rows); //get_row_results(result, laps->fields, laps->rows, sizeof(LapRowData)); points = telem_result(result1, intfields, doublefields, intarrays1, doublearrays1); //get_stint_result(result, stint); h_clean_result(&result1); - } else { + } + else + { printf("Error executing query\n"); } free(query1); struct _h_result result2; - struct _h_data * data2; + struct _h_data* data2; char* query2 = malloc(150 * sizeof(char)); sprintf(query2, "SELECT lap_id, points, speed, gear, rpms, brake, accel, steer FROM %s WHERE %s=%i", "telemetry", "lap_id", lap2id); - if (h_query_select(conn, query2, &result2) == H_OK) { + if (h_query_select(conn, query2, &result2) == H_OK) + { //laps->rows = malloc(sizeof(LapRowData) * result.nb_rows); //get_row_results(result, laps->fields, laps->rows, sizeof(LapRowData)); points = telem_result(result2, intfields, doublefields, intarrays2, doublearrays2); //get_stint_result(result, stint); h_clean_result(&result2); - } else { + } + else + { printf("Error executing query\n"); } free(query2); @@ -209,12 +222,12 @@ int dumptelemetrytofile(struct _h_connection* conn, char* datadir, int lap1id, i snprintf(datafile, strsize, "%s%s", datadir, filename1); slogt("dumping %i points to file %s", points, datafile); - FILE *out = fopen(datafile, "w"); + FILE* out = fopen(datafile, "w"); fprintf(out, "%s %s %s %s %s %s %s %s %s %s %s %s %s\n", "point", "speed1", "rpms1", "gear1", "brake1", "accel1", "steer1", "speed2", "rpms2", "gear2", "brake2", "accel2", "steer2" ); for (int i=0; i