* Track and display automatic vs. manual shifter type setting.
authorUrban Wallasch <urban.wallasch@freenet.de>
Sat, 27 Jul 2019 13:26:42 +0000 (15:26 +0200)
committerUrban Wallasch <urban.wallasch@freenet.de>
Sat, 27 Jul 2019 13:26:42 +0000 (15:26 +0200)
dash.html
telehttpd.c
telelogger.c
telemetry.h
teleshmem.cpp

index b15abdd035c085ff6a4193c2c0f79a61a971b56e..cf3134be0ef6231da6c2e15dd8a175076413540b 100644 (file)
--- a/dash.html
+++ b/dash.html
@@ -96,12 +96,12 @@ x-bar {
 <x-boxleft id="odo" class="cont">
   <x-boxright class="clear"><span class="small" id="nav_dist">-</span><span class="tiny"> km</span></x-boxright>
   <x-boxright class="clear"><span class="small" id="nav_eta">-</span><span class="tiny"> eta</span></x-boxright>
-  <x-boxright class="clear">
+  <x-boxleft class="clear">
     <svg width="50" height="50">
       <circle cx="25" cy="25" r="22" stroke="red" stroke-width="6" fill="white" id="nav_slimitsign"/>
       <text fill="#000" font-size="24" font-family="sans-serif" font-weight="normal" x="10" y="34" id="nav_slimit">---</text>
     </svg>
-  </x-boxright>
+  </x-boxleft>
 </x-boxleft>
 
 <x-bar class="pause" id="pause"> GAME PAUSED </x-bar>
@@ -111,8 +111,8 @@ x-bar {
 
 <script>
 
-function dgear(x) {
-  if ( x > 0 ) return 'A' + x;
+function dgear(x, m) {
+  if ( x > 0 ) return ( m ? '' : 'A' ) + x;
   if ( x < 0 ) return 'R' + Math.abs(x);
   return 'N';
 }
@@ -158,7 +158,7 @@ function loadDoc() {
       document.getElementById("cctrl").innerHTML = Math.round(tele.cctrl * 3.6);
 
       e = document.getElementById("gear");
-      e.innerHTML = dgear(tele.gear_disp);
+      e.innerHTML = dgear(tele.gear_disp, tele.shifter);
       if ( tele.clutch_eff > 0 )
         e.classList.add("hilite");
       else
index 4cc32d9328704609ef737598452ba0461bf4aa6e..0f861e5d63f0bc26728764fc47e47ec025dd7551 100644 (file)
@@ -78,6 +78,7 @@ static void write_telejson( int fd ) {
     write(fd, buf, sprintf( buf, "  \"gear\": %d,\n", telemetry->gear ) );
     write(fd, buf, sprintf( buf, "  \"gear_disp\": %d,\n", telemetry->gear_disp ) );
     write(fd, buf, sprintf( buf, "  \"clutch_eff\": %f,\n", telemetry->clutch_eff ) );
+    write(fd, buf, sprintf( buf, "  \"shifter\": %d,\n", telemetry->shifter ) );
 
     write(fd, buf, sprintf( buf, "  \"fuel\": %f,\n", telemetry->fuel ) );
     write(fd, buf, sprintf( buf, "  \"fuel_warn\": %d,\n", (int)telemetry->fuel_warn ) );
index bf6202578b3d737948735ea6f0aab9a9bd833d5c..17ad2216e28750290cf5467eba42d85649418e2b 100644 (file)
@@ -53,6 +53,7 @@ static int log_console(void) {
         printf( "gear: %d\n", telemetry->gear );
         printf( "gear d: %d\n", telemetry->gear_disp );
         printf( "clutch eff: %.1f\n", telemetry->clutch_eff );
+        printf( "shifter: %s\n", telemetry->shifter ? "manual" : "automatic" );
 
         printf( "fuel: %.1f l\n", telemetry->fuel );
         printf( "fuel warn: %s\n", telemetry->fuel_warn ? "yes" : "no" );
index c0f06ef103a0a8affc36fb4c94ff4b7d59e5d8fe..97ccb5fead22809ab025e1c8e1fb71f2b65335cc 100644 (file)
@@ -30,6 +30,7 @@ struct telemetry_state_t {
     int     gear;       // engine gear
     int     gear_disp;  // displayed gear
     float   clutch_eff; // effective clutch
+    int     shifter;    // 0 = automatic, 1 = manual
 
     float   fuel;       // fuel amount in l
     bool    fuel_warn;  // fuel low warning
index 83b4385b2bf7112dd3fc5001e33b2a01cfa710d9..039b64fe8886332c2a98c4ac5fbf9c263f6547ee 100644 (file)
@@ -164,6 +164,11 @@ SCSAPI_VOID telemetry_configuration(const scs_event_t event, const void *const e
     log_print("Configuration: %s\n", info->id);
 
     for (const scs_named_value_t *current = info->attributes; current->name; ++current) {
+
+        if ( 0 == strcmp( current->name, "shifter.type" ) )
+            telemetry->shifter = !strcmp( current->value.value_string.value, "manual" );
+
+
         log_print("  %s", current->name);
         if (current->index != SCS_U32_NIL) {
             log_print("[%u]", static_cast<unsigned>(current->index));