* Include effective clutch channel in telemetry.
authorUrban Wallasch <urban.wallasch@freenet.de>
Fri, 26 Jul 2019 05:20:01 +0000 (07:20 +0200)
committerUrban Wallasch <urban.wallasch@freenet.de>
Fri, 26 Jul 2019 05:20:01 +0000 (07:20 +0200)
* Indicate clutch state by highliting gear display in dash.html.
* Indicate paused state by dimming default font color in dash.html.

dash.html
telehttpd.c
telelogger.c
telemetry.cpp
telemetry.h

index a1c66eb4124e19b3ab102af11e6a9ee9e3e30cb5..7cb2e822589f7b252c0bb14973403a4c87672381 100644 (file)
--- a/dash.html
+++ b/dash.html
@@ -13,6 +13,11 @@ html, body {
   color: white;
 }
 
+x-content {
+  display: block;
+  width: 100%;
+}
+
 x-boxleft, x-boxright {
   display: block;
   padding: 0.2em;
@@ -46,15 +51,20 @@ x-boxright { float:right; }
 .warn1 { color:#fd0; }
 .warn2 { color:#f20; }
 .setval { color:#0af; }
+.grey { color: #444 !important; }
+.hilite { background-color: #ff0; }
 
 </style>
 </head>
 <body>
 
+<x-page id="page">
+
 <x-boxleft id="speedo" class="cont">
   <x-boxright class="clear"><span class="big" id="speed">--</span><span class="tiny"> km/h</span></x-boxright>
   <x-boxright class="clear"><span class="medium setval" id="cctrl">-</span><span class="tiny"> km/h</span></x-boxright>
   <x-boxleft class="clear"><span class="small setval" id="gear">x</span><span class="tiny">&nbsp;</span></x-boxleft>
+  <!--<x-boxleft><span class="small" id="clutch">x</span><span class="tiny">&nbsp;</span></x-boxleft>-->
   <x-boxright><span class="small" id="rpm">0</span><span class="tiny"> rpm</span></x-boxright>
   <x-boxright class="clear"><span class="small" id="odometer">-</span><span class="tiny"> km</span></x-boxright>
 </x-boxleft>
@@ -71,6 +81,8 @@ x-boxright { float:right; }
   <x-boxright class="clear"><span class="small" id="nav_slimit">-</span><span class="tiny"> km/h</span></x-boxright>
 </x-boxleft>
 
+</x-page>
+
 <script>
 
 function dgear(x) {
@@ -115,7 +127,14 @@ function loadDoc() {
         e.classList.remove("warn2");
       }
       document.getElementById("cctrl").innerHTML = Math.round(tele.cctrl * 3.6);
-      document.getElementById("gear").innerHTML = dgear(tele.gear_disp);
+
+      e = document.getElementById("gear");
+      e.innerHTML = dgear(tele.gear_disp);
+      if ( tele.clutch_eff > 0 )
+        e.classList.add("hilite");
+      else
+        e.classList.remove("hilite");
+
       document.getElementById("rpm").innerHTML = Math.round(tele.rpm);
       document.getElementById("odometer").innerHTML = Math.round(tele.odometer);
 
@@ -132,6 +151,11 @@ function loadDoc() {
       document.getElementById("nav_eta").innerHTML = s2hm(tele.nav_eta);
       document.getElementById("nav_slimit").innerHTML = Math.round(tele.nav_slimit * 3.6);
 
+      e = document.getElementById("page");
+      if ( tele.paused )
+        e.classList.add("grey");
+      else
+        e.classList.remove("grey");
     }
   };
   xhttp.open("GET", "/json", true);
@@ -139,7 +163,7 @@ function loadDoc() {
 }
 var xhttp = new XMLHttpRequest();
 loadDoc();
-window.setInterval(loadDoc, 500);
+window.setInterval(loadDoc, 333);
 </script>
 
 </body>
index 4c095cf0b1bbc68e3dcc9b9707f31f12c11146ed..4cc32d9328704609ef737598452ba0461bf4aa6e 100644 (file)
@@ -77,6 +77,7 @@ static void write_telejson( int fd ) {
     write(fd, buf, sprintf( buf, "  \"rpm\": %f,\n", telemetry->rpm ) );
     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, "  \"fuel\": %f,\n", telemetry->fuel ) );
     write(fd, buf, sprintf( buf, "  \"fuel_warn\": %d,\n", (int)telemetry->fuel_warn ) );
index dbe489f34e87950049dfbad9a21f896875d3c1b1..bf6202578b3d737948735ea6f0aab9a9bd833d5c 100644 (file)
@@ -52,6 +52,7 @@ static int log_console(void) {
         printf( "rpm: %.0f /min\n", telemetry->rpm );
         printf( "gear: %d\n", telemetry->gear );
         printf( "gear d: %d\n", telemetry->gear_disp );
+        printf( "clutch eff: %.1f\n", telemetry->clutch_eff );
 
         printf( "fuel: %.1f l\n", telemetry->fuel );
         printf( "fuel warn: %s\n", telemetry->fuel_warn ? "yes" : "no" );
index 791e3d05be8bd7a72ef437616401b7d2cf270963..aa3802b5b5ff039292f91b9221f3ae73945af75f 100644 (file)
@@ -406,6 +406,7 @@ SCSAPI_RESULT scs_telemetry_init(const scs_u32_t version, const scs_telemetry_in
     version_params->register_for_channel(SCS_TELEMETRY_TRUCK_CHANNEL_engine_rpm, SCS_U32_NIL, SCS_VALUE_TYPE_float, SCS_TELEMETRY_CHANNEL_FLAG_none, telemetry_store_float, &telemetry->rpm);
     version_params->register_for_channel(SCS_TELEMETRY_TRUCK_CHANNEL_engine_gear, SCS_U32_NIL, SCS_VALUE_TYPE_s32, SCS_TELEMETRY_CHANNEL_FLAG_none, telemetry_store_s32, &telemetry->gear);
     version_params->register_for_channel(SCS_TELEMETRY_TRUCK_CHANNEL_displayed_gear, SCS_U32_NIL, SCS_VALUE_TYPE_s32, SCS_TELEMETRY_CHANNEL_FLAG_none, telemetry_store_s32, &telemetry->gear_disp);
+    version_params->register_for_channel(SCS_TELEMETRY_TRUCK_CHANNEL_effective_clutch, SCS_U32_NIL, SCS_VALUE_TYPE_float, SCS_TELEMETRY_CHANNEL_FLAG_none, telemetry_store_float, &telemetry->clutch_eff);
 
     version_params->register_for_channel(SCS_TELEMETRY_TRUCK_CHANNEL_fuel, SCS_U32_NIL, SCS_VALUE_TYPE_float, SCS_TELEMETRY_CHANNEL_FLAG_none, telemetry_store_float, &telemetry->fuel);
     version_params->register_for_channel(SCS_TELEMETRY_TRUCK_CHANNEL_fuel_warning, SCS_U32_NIL, SCS_VALUE_TYPE_bool, SCS_TELEMETRY_CHANNEL_FLAG_none, telemetry_store_bool, &telemetry->fuel_warn);
index f359ca85ce31518d4502063229e92fc5d97c6ffb..c0f06ef103a0a8affc36fb4c94ff4b7d59e5d8fe 100644 (file)
@@ -29,6 +29,7 @@ struct telemetry_state_t {
     float   rpm;        // engine rpm
     int     gear;       // engine gear
     int     gear_disp;  // displayed gear
+    float   clutch_eff; // effective clutch
 
     float   fuel;       // fuel amount in l
     bool    fuel_warn;  // fuel low warning