Closing laps, stint, and monitoring more data
This commit is contained in:
parent
e240b7fedf
commit
e0cc9de18f
|
|
@ -170,6 +170,7 @@ int mainloop(Parameters* p)
|
||||||
|
|
||||||
|
|
||||||
if (p->simon == true) {
|
if (p->simon == true) {
|
||||||
|
p->program_state = 1;
|
||||||
if (p->cli == true)
|
if (p->cli == true)
|
||||||
{
|
{
|
||||||
if (pthread_create(&ui_thread, NULL, &clilooper, p) != 0)
|
if (pthread_create(&ui_thread, NULL, &clilooper, p) != 0)
|
||||||
|
|
@ -868,18 +869,22 @@ int addstint(struct _h_connection* conn, int sessionid, int driverid, int carid)
|
||||||
int closesession(struct _h_connection* conn, int sessionid)
|
int closesession(struct _h_connection* conn, int sessionid)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
slogt("closing previous session ", sessionid);
|
||||||
// best_lap_id
|
// best_lap_id
|
||||||
|
|
||||||
// session_id | event_id | event_type | track_time | session_name
|
// session_id | event_id | event_type | track_time | session_name
|
||||||
// | start_time | duration_min | elapsed_ms | laps | weather |
|
// | start_time | duration_min | elapsed_ms | laps | weather |
|
||||||
// air_temp | road_temp | start_grip | end_grip | is_finished
|
// air_temp | road_temp | start_grip | end_grip | is_finished
|
||||||
|
|
||||||
char* query = malloc((sizeof(char)*71));
|
char* query = malloc((sizeof(char)*100));
|
||||||
sprintf(query, "UPDATE sessions SET is_finished=1, finished_at=NOW() WHERE sessionid=%i", "sessions", sessionid);
|
sprintf(query, "UPDATE %s SET is_finished=1, finished_at=NOW() WHERE session_id=%i",
|
||||||
|
"sessions", sessionid);
|
||||||
|
|
||||||
int res1 = h_query_update(conn, query);
|
int res1 = h_query_update(conn, query);
|
||||||
|
slogt("running query %s", query);
|
||||||
free(query);
|
free(query);
|
||||||
|
|
||||||
|
slogt("closed previous session");
|
||||||
return res1;
|
return res1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -888,32 +893,42 @@ int closestint(struct _h_connection* conn, int stintid, int stintlaps, int valid
|
||||||
{
|
{
|
||||||
|
|
||||||
// best_lap_id
|
// best_lap_id
|
||||||
|
slogt("closing previous stint ", stintid);
|
||||||
|
|
||||||
char* query = malloc((sizeof(char)*71));
|
char* query = malloc((sizeof(char)*146));
|
||||||
sprintf(query, "UPDATE stints SET %s = %i, %s = %i, is_finished=1, finished_at=NOW() WHERE stintid=%i", "laps", stintlaps, "valid_laps", validstintlaps, stintid);
|
sprintf(query, "UPDATE %s SET %s = %i, %s = %i, is_finished=1, finished_at=NOW() WHERE stint_id=%i",
|
||||||
|
"stints", "laps", stintlaps, "valid_laps", validstintlaps, stintid);
|
||||||
|
|
||||||
int res1 = h_query_update(conn, query);
|
int res1 = h_query_update(conn, query);
|
||||||
|
slogt("running query %s", query);
|
||||||
free(query);
|
free(query);
|
||||||
|
|
||||||
|
slogt("closed previous stint");
|
||||||
return res1;
|
return res1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int closelap(struct _h_connection* conn, int lapid, int sector1, int sector2, int sector3, int cuts, int crashes, int maxspeed, int avgspeed,
|
int closelap(struct _h_connection* conn, int lapid, int sector1, int sector2, int sector3, int cuts, int crashes, int maxspeed, int avgspeed,
|
||||||
int fbraketemp, int rbraketemp, int ftyrewear, int rtyrewear, int ftyretemp, int rtyretemp, int ftyrepress, int rtyrepress)
|
double fbraketemp, double rbraketemp, double ftyrewear, double rtyrewear, double ftyretemp, double rtyretemp, double ftyrepress, double rtyrepress)
|
||||||
{
|
{
|
||||||
|
|
||||||
// stint laps
|
// stint laps
|
||||||
// lap_id | stint_id | sector_1 | sector_2 | sector_3 | grip | tyre | time | cuts | crashes
|
// lap_id | stint_id | sector_1 | sector_2 | sector_3 | grip | tyre | time | cuts | crashes
|
||||||
// max_speed | avg_speed | finished_at
|
// max_speed | avg_speed | finished_at
|
||||||
|
|
||||||
char* query = malloc((sizeof(char)*171));
|
slogt("closing previous lap ", lapid);
|
||||||
sprintf(query, "UPDATE laps SET %s=%f, %s=%f, %s=%f, %s=%f, %s=%f, %s=%f, %s=%f, %s=%f, finished_at=NOW() WHERE lapid=%i",
|
|
||||||
"laps", "front_tyre_temp", ftyretemp, "rear_tyre_temp", rtyretemp, "front_tyre_wear", ftyrewear, "rear_tyre_wear", rtyrewear,
|
char* query = malloc((sizeof(char)*360));
|
||||||
"front_tyre_press", ftyrepress, "rear_tyre_press", rtyrepress, "front_brake_temp", fbraketemp, "rear_brake_temp", rbraketemp, lapid);
|
sprintf(query, "UPDATE %s SET %s=%i, %s=%i, %s=%i, %s=%f, %s=%f, %s=%f, %s=%f, %s=%f, %s=%f, %s=%f, %s=%f, finished_at=NOW() WHERE lap_id=%i;",
|
||||||
|
"laps", "sector_1", sector1, "sector_2", sector2, "sector_3", sector3, "front_tyre_temp", ftyretemp, "rear_tyre_temp", rtyretemp,
|
||||||
|
"front_tyre_wear", ftyrewear, "rear_tyre_wear", rtyrewear, "front_tyre_press", ftyrepress, "rear_tyre_press", rtyrepress,
|
||||||
|
"front_brake_temp", fbraketemp, "rear_brake_temp", rbraketemp, lapid);
|
||||||
|
|
||||||
|
|
||||||
int res1 = h_query_update(conn, query);
|
int res1 = h_query_update(conn, query);
|
||||||
|
slogt("running query %s", query);
|
||||||
free(query);
|
free(query);
|
||||||
|
|
||||||
|
slogt("closed previous lap");
|
||||||
return res1;
|
return res1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1170,12 +1185,14 @@ void* simviewmysql(void* thargs)
|
||||||
|
|
||||||
// ?? close last session
|
// ?? close last session
|
||||||
|
|
||||||
int pitstatus = 0;
|
int pitstatus = simdata->inpit;
|
||||||
int sessionstatus = 0;
|
int sessionstatus = 0;
|
||||||
int lastpitstatus = -1;
|
int lastpitstatus = pitstatus;
|
||||||
int lastsessionstatus = 0;
|
int lastsessionstatus = 0;
|
||||||
int lap = 0;
|
int lap = 0;
|
||||||
int lastlap = 0;
|
int lastlap = 0;
|
||||||
|
int sector = 0;
|
||||||
|
int lastsector = 0;
|
||||||
|
|
||||||
int stintid = 0;
|
int stintid = 0;
|
||||||
int stintlapid = 0;
|
int stintlapid = 0;
|
||||||
|
|
@ -1220,14 +1237,20 @@ void* simviewmysql(void* thargs)
|
||||||
//double* braketemp1 = malloc(track_samples * sizeof(simdata->braketemp[0]));
|
//double* braketemp1 = malloc(track_samples * sizeof(simdata->braketemp[0]));
|
||||||
//double* braketemp2 = malloc(track_samples * sizeof(simdata->braketemp[0]));
|
//double* braketemp2 = malloc(track_samples * sizeof(simdata->braketemp[0]));
|
||||||
//double* braketemp3 = malloc(track_samples * sizeof(simdata->braketemp[0]));
|
//double* braketemp3 = malloc(track_samples * sizeof(simdata->braketemp[0]));
|
||||||
|
int sectortimes[4];
|
||||||
|
|
||||||
while (go == true && p->program_state >= 0)
|
if (p->program_state < 0)
|
||||||
|
{
|
||||||
|
go = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
while (go == true)
|
||||||
{
|
{
|
||||||
|
|
||||||
slogt("tick %i", tick);
|
slogt("tick %i", tick);
|
||||||
slogt("pos %f", simdata->playerspline);
|
|
||||||
int pos = (int) track_samples * simdata->playerspline;
|
int pos = (int) track_samples * simdata->playerspline;
|
||||||
slogt("normpos %i", pos);
|
slogt("pos %f normpos %i of samples %i", simdata->playerspline, pos, track_samples);
|
||||||
|
|
||||||
steerdata[pos] = simdata->steer;
|
steerdata[pos] = simdata->steer;
|
||||||
acceldata[pos] = simdata->gas;
|
acceldata[pos] = simdata->gas;
|
||||||
brakedata[pos] = simdata->brake;
|
brakedata[pos] = simdata->brake;
|
||||||
|
|
@ -1251,32 +1274,44 @@ void* simviewmysql(void* thargs)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (!simdata->lapisvalid)
|
sessionstatus = simdata->session;
|
||||||
|
lap = simdata->lap;
|
||||||
|
sector = simdata->sectorindex;
|
||||||
|
if (simdata->lapisvalid == false && validind == true)
|
||||||
{
|
{
|
||||||
validind = false;
|
validind = false;
|
||||||
}
|
}
|
||||||
pitstatus = 0;
|
sectortimes[simdata->sectorindex] = simdata->lastsectorinms;
|
||||||
sessionstatus = simdata->session;
|
|
||||||
lap = simdata->lap;
|
|
||||||
if (sessionstatus != lastsessionstatus)
|
if (sessionstatus != lastsessionstatus)
|
||||||
|
{
|
||||||
|
closestint(conn, stintid, stintlaps, validstintlaps);
|
||||||
|
closesession(conn, sessionid);
|
||||||
|
if (sessionstatus > 1)
|
||||||
{
|
{
|
||||||
sessionid = addsession(conn, eventid, simdata->session, simdata->airtemp, simdata->tracktemp);
|
sessionid = addsession(conn, eventid, simdata->session, simdata->airtemp, simdata->tracktemp);
|
||||||
pitstatus = 1;
|
}
|
||||||
|
|
||||||
|
//pitstatus = 1;
|
||||||
stintlaps = 0;
|
stintlaps = 0;
|
||||||
|
validstintlaps = 0;
|
||||||
}
|
}
|
||||||
if (simdata->inpit == true)
|
pitstatus = simdata->inpit;
|
||||||
{
|
if (simdata->inpit == true && pitstatus != lastpitstatus)
|
||||||
pitstatus = 1;
|
|
||||||
}
|
|
||||||
if (pitstatus = 0 && pitstatus != lastpitstatus)
|
|
||||||
{
|
{
|
||||||
|
//pitstatus = 1;
|
||||||
|
//}
|
||||||
|
//if (pitstatus = 0 && pitstatus != lastpitstatus)
|
||||||
|
//{
|
||||||
// close last stint
|
// close last stint
|
||||||
|
|
||||||
closestint(conn, stintid, stintlaps, validstintlaps);
|
closestint(conn, stintid, stintlaps, validstintlaps);
|
||||||
stintid = addstint(conn, sessionid, driverid, carid);
|
stintid = addstint(conn, sessionid, driverid, carid);
|
||||||
stintlaps = 0;
|
stintlaps = 0;
|
||||||
|
validstintlaps = 0;
|
||||||
}
|
}
|
||||||
if (lap != lastlap)
|
if (lap != lastlap)
|
||||||
{
|
{
|
||||||
|
slogt("New lap detected");
|
||||||
stintlaps++;
|
stintlaps++;
|
||||||
if (validind == true)
|
if (validind == true)
|
||||||
{
|
{
|
||||||
|
|
@ -1292,8 +1327,8 @@ void* simviewmysql(void* thargs)
|
||||||
double ftyrepress = (simdata->tyrepressure[0] + simdata->tyrepressure[1])/2;
|
double ftyrepress = (simdata->tyrepressure[0] + simdata->tyrepressure[1])/2;
|
||||||
double rtyrepress = (simdata->tyrepressure[2] + simdata->tyrepressure[3])/2;
|
double rtyrepress = (simdata->tyrepressure[2] + simdata->tyrepressure[3])/2;
|
||||||
|
|
||||||
closelap(conn, stintlapid, 0, 0, 0, 0, 0, 0, 0, fbraketemp, rbraketemp, ftyrewear, rtyrewear, ftyretemp, rtyretemp, ftyrepress, rtyrepress);
|
closelap(conn, stintlapid, sectortimes[1], sectortimes[2], simdata->lastsectorinms, 0, 0, 0, 0, fbraketemp, rbraketemp, ftyrewear, rtyrewear, ftyretemp, rtyretemp, ftyrepress, rtyrepress);
|
||||||
slogt("New lap detected");
|
|
||||||
stintlapid = addstintlap(conn, stintid);
|
stintlapid = addstintlap(conn, stintid);
|
||||||
int telemid = addtelemetry(conn, track_samples, stintlapid);
|
int telemid = addtelemetry(conn, track_samples, stintlapid);
|
||||||
int b = updatetelemetry(conn, telemid, track_samples*sizeof(double), "steer", steerdata);
|
int b = updatetelemetry(conn, telemid, track_samples*sizeof(double), "steer", steerdata);
|
||||||
|
|
@ -1304,14 +1339,25 @@ void* simviewmysql(void* thargs)
|
||||||
b = updatetelemetry(conn, telemid, track_samples*sizeof(int), "speed", speeddata);
|
b = updatetelemetry(conn, telemid, track_samples*sizeof(int), "speed", speeddata);
|
||||||
|
|
||||||
tick = 0;
|
tick = 0;
|
||||||
|
// assume lap is valid until it isn't
|
||||||
|
validind = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
lastpitstatus = pitstatus;
|
lastpitstatus = pitstatus;
|
||||||
lastsessionstatus = sessionstatus;
|
lastsessionstatus = sessionstatus;
|
||||||
|
lastsector = sector;
|
||||||
lastlap = lap;
|
lastlap = lap;
|
||||||
tick++;
|
tick++;
|
||||||
|
|
||||||
|
|
||||||
poll(&mypoll, 1, 1000 / DATA_UPDATE_RATE);
|
poll(&mypoll, 1, 1000 / DATA_UPDATE_RATE);
|
||||||
|
|
||||||
|
if (p->program_state < 0)
|
||||||
|
{
|
||||||
|
closestint(conn, stintid, stintlaps, validstintlaps);
|
||||||
|
closesession(conn, sessionid);
|
||||||
|
go = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
Subproject commit 618920440e0eb60f6209bdb4cb734b366c32780c
|
Subproject commit 28e4bac60095806e11cc0daff4f8b9d35e06fa75
|
||||||
Loading…
Reference in New Issue