diff --git a/src/gilles/gameloop/gameloop.c b/src/gilles/gameloop/gameloop.c index 26882b5..cbb6773 100644 --- a/src/gilles/gameloop/gameloop.c +++ b/src/gilles/gameloop/gameloop.c @@ -13,9 +13,11 @@ #include "../simulatorapi/simapi/simapi/simmapper.h" #include "../slog/slog.h" +#include + #define DEFAULT_UPDATE_RATE 100 -#define ADDRESS "tcp://localhost:1883" +#define ADDRESS "tcp://mqtt.brak:1883" #define CLIENTID "gilles" #define TOPIC "telemetry" //#define PAYLOAD "Hello, MQTT!" @@ -33,6 +35,8 @@ int winx, winy; int win23y, win23x; + + void handle_winch(int sig) { endwin(); @@ -180,12 +184,68 @@ int looper(Simulator simulator, Parameters* p) if (mqtt_connected == true && simdata->simstatus > 0) { - char payloads[5][60]; - sprintf(payloads[0], "telemetry,lap=%i,session=%s gas=%04f", simdata->lap, newdatestring, simdata->gas); - sprintf(payloads[1], "telemetry,lap=%i,session=%s brake=%04f", simdata->lap, newdatestring, simdata->brake); - sprintf(payloads[2], "telemetry,lap=%i,session=%s steer=%04f", simdata->lap, newdatestring, simdata->brake); - sprintf(payloads[3], "telemetry,lap=%i,session=%s gear=%04i", simdata->lap, newdatestring, simdata->gear); - sprintf(payloads[4], "telemetry,lap=%i,session=%s speed=%04i", simdata->lap, newdatestring, simdata->velocity); + char payloads[16][10]; + + //sprintf(payloads[0], "telemetry,lap=%i,session=%s gas=%04f", simdata->lap, newdatestring, simdata->gas); + //sprintf(payloads[1], "telemetry,lap=%i,session=%s brake=%04f", simdata->lap, newdatestring, simdata->brake); + //sprintf(payloads[2], "telemetry,lap=%i,session=%s steer=%04f", simdata->lap, newdatestring, simdata->brake); + //sprintf(payloads[3], "telemetry,lap=%i,session=%s gear=%04i", simdata->lap, newdatestring, simdata->gear); + //sprintf(payloads[4], "telemetry,lap=%i,session=%s speed=%04i", simdata->lap, newdatestring, simdata->velocity); + + sprintf(payloads[0], "%04f", simdata->clutch); + sprintf(payloads[1], "%04f", simdata->brake); + sprintf(payloads[2], "%04f", simdata->gas); + sprintf(payloads[3], "%04f", simdata->handbrake); + sprintf(payloads[4], "%04f", simdata->steer); + sprintf(payloads[5], "%i", simdata->rpms); + sprintf(payloads[6], "%i", simdata->gear); + sprintf(payloads[7], "%04f", simdata->velocity * 0.2777778); + sprintf(payloads[8], "%08f", simdata->trackdistancearound); + sprintf(payloads[9], "%08f", simdata->worldposx); + sprintf(payloads[10], "%08f", simdata->worldposy); + sprintf(payloads[11], "%08f", simdata->worldposz); + sprintf(payloads[12], "%i", simdata->playerlaps); + sprintf(payloads[13], "%i", simdata->currentlapinseconds); + sprintf(payloads[14], "%i", simdata->lastlapinseconds); + sprintf(payloads[15], "%i", simdata->lapisvalid); + + json_object *root = json_object_new_object(); + if (!root) + return 1; + // {"module":"log"} + + json_object *child = json_object_new_object(); + json_object_object_add(root, "time", json_object_new_string("1669657644794")); //unix time milliseconds + + /* these get placed into the topic path + json_object_object_add(root, "CarModel", json_object_new_string(simdata->car)); + json_object_object_add(root, "GameName", json_object_new_string("Assetto Corsa (64 bit"))); + json_object_object_add(root, "SessionId", json_object_new_string("1669233672")); + json_object_object_add(root, "SessionTypeName", json_object_new_string("Practice")); + json_object_object_add(root, "TrackCode", json_object_new_string(simdata->track)); + */ + + json_object_object_add(child, "Clutch", json_object_new_string(payloads[1])); + json_object_object_add(child, "Brake", json_object_new_string(payloads[1])); + json_object_object_add(child, "Throtte", json_object_new_string(payloads[2])); + json_object_object_add(child, "HandBrake", json_object_new_string(payloads[3])); + json_object_object_add(child, "SteeringAngle", json_object_new_string(payloads[4])); + json_object_object_add(child, "Rpms", json_object_new_string(payloads[5])); + json_object_object_add(child, "Gear", json_object_new_string(payloads[6])); + json_object_object_add(child, "SpeedMs", json_object_new_string(payloads[7])); + json_object_object_add(child, "DistanceRoundTrack", json_object_new_string(payloads[8])); + json_object_object_add(child, "WorldPosition_x", json_object_new_string(payloads[9])); + json_object_object_add(child, "WorldPosition_y", json_object_new_string(payloads[10])); + json_object_object_add(child, "WorldPosition_z", json_object_new_string(payloads[11])); + json_object_object_add(child, "CurrentLap", json_object_new_string(payloads[12])); + json_object_object_add(child, "CurrentLapTime", json_object_new_string(payloads[13])); + json_object_object_add(child, "LapTimePrevious", json_object_new_string(payloads[14])); + json_object_object_add(child, "CurrentLapIsValid", json_object_new_string(payloads[15])); + json_object_object_add(child, "PreviousLapWasValid", json_object_new_string("1")); + + json_object_object_add(root, "telemetry", child); + + slogi(json_object_to_json_string_ext(root, JSON_C_TO_STRING_PRETTY)); for (int k =0; k < 5; k++) {