n += snprintf( buf+n, size-n, " \"game_minor_ver\": %"PRIu32",\n", tele->game_minor_ver ); CHKSIZE;
n += snprintf( buf+n, size-n, " \"game_ver_warn\": %"PRIu32",\n", (int)tele->game_ver_warn ); CHKSIZE;
- n += snprintf( buf+n, size-n, " \"paused\": %"PRIi32",\n", (int)tele->paused ); CHKSIZE;
+ n += snprintf( buf+n, size-n, " \"paused\": %"PRIu8",\n", tele->paused ); CHKSIZE;
n += snprintf( buf+n, size-n, " \"timestamp\": %"PRIu64",\n", tele->timestamp ); CHKSIZE;
n += snprintf( buf+n, size-n, " \"game_time\": %"PRIu32",\n", tele->game_time ); CHKSIZE;
+ n += snprintf( buf+n, size-n, " \"placement_isvalid\": %"PRIu8",\n", tele->placement_isvalid ); CHKSIZE;
n += snprintf( buf+n, size-n, " \"x\": %.12f,\n", tele->x ); CHKSIZE;
n += snprintf( buf+n, size-n, " \"y\": %.12f,\n", tele->y ); CHKSIZE;
n += snprintf( buf+n, size-n, " \"z\": %.12f,\n", tele->z ); CHKSIZE;
n += snprintf( buf+n, size-n, " \"shifter\": %"PRIi32",\n", tele->shifter ); CHKSIZE;
n += snprintf( buf+n, size-n, " \"fuel\": %.12f,\n", tele->fuel ); CHKSIZE;
- n += snprintf( buf+n, size-n, " \"fuel_warn\": %"PRIi32",\n", (int)tele->fuel_warn ); CHKSIZE;
+ n += snprintf( buf+n, size-n, " \"fuel_warn\": %"PRIu8",\n", tele->fuel_warn ); CHKSIZE;
n += snprintf( buf+n, size-n, " \"fuel_avg\": %.12f,\n", tele->fuel_avg ); CHKSIZE;
n += snprintf( buf+n, size-n, " \"fuel_range\": %.12f,\n", tele->fuel_range ); CHKSIZE;
n += snprintf( buf+n, size-n, " \"trailer_cnt\": %"PRIu32",\n", tele->trailer_cnt ); CHKSIZE;
- n += snprintf( buf+n, size-n, " \"job_isvalid\": %"PRIi32",\n", (int)tele->job_isvalid ); CHKSIZE;
+ n += snprintf( buf+n, size-n, " \"job_isvalid\": %"PRIu8",\n", tele->job_isvalid ); CHKSIZE;
n += snprintf( buf+n, size-n, " \"job_deltime\": %"PRIu32",\n", tele->job_deltime ); CHKSIZE;
n += snprintf( buf+n, size-n, " \"job_income\": %"PRIu64",\n", tele->job_income ); CHKSIZE;
n += snprintf( buf+n, size-n, " \"job_cargo_mass\": %.12f,\n", tele->job_cargo_mass ); CHKSIZE;
#define TELE_FLAG_ALIVE 0x0001U
+typedef uint8_t bool_t;
+
struct telemetry_state_t {
uint32_t version;
uint32_t flags;
char game_id[10];
uint32_t game_major_ver;
uint32_t game_minor_ver;
- bool game_ver_warn;
- bool paused;
+ bool_t game_ver_warn;
+ bool_t paused;
uint64_t timestamp;
uint64_t raw_rendering_timestamp;
uint32_t game_time; // minutes since beginning of first in-game day
// truck placement and orientation
- bool placement_available;
+ bool_t placement_isvalid;
double x;
double y;
double z;
int32_t shifter; // 0 = automatic, 1 = manual
double fuel; // fuel amount in l
- bool fuel_warn; // fuel low warning
+ bool_t fuel_warn; // fuel low warning
double fuel_avg; // fuel consumption average in l/km
double fuel_range; // estimated range in km
char truck_name[TELE_STRLEN]; // truck model name
uint32_t truck_fwd_gear_cnt; // truck number of forward gears
- bool job_isvalid; // job info is current, i.e. job is in progress
+ bool_t job_isvalid; // job info is current, i.e. job is in progress
uint32_t job_deltime; // job deadline in minutes (see game_time)
uint64_t job_income; // job reward without penalties in in-game currency
double job_cargo_mass; // cargo mass in kg