Преглед изворни кода

rate limiting piu_main and displaying package info

* if the PIU isn't detected, the error messages go haywire
  so rate limit them (rate limiting is coarse so it drops
  some messages, will have to look at better solutions later)
* display config, firmware and package information in the
  initial UI screen
* fiddling with spacing for package info
Abram Connelly пре 6 година
родитељ
комит
1581319fdf
2 измењених фајлова са 28 додато и 9 уклоњено
  1. 16 8
      busunit/DIUv2/html/js/diu_ui-ORG.js
  2. 12 1
      busunit/PIU/piu_main.c

+ 16 - 8
busunit/DIUv2/html/js/diu_ui-ORG.js

@@ -27,8 +27,8 @@ var _fqADDRESS = _ADDRESS + ":" + _PORT;
 var BG_COLOR = "#f7f7f7";
 var TEXT_COLOR = "#444444";
 
-var DIU_UI_VERSION = "0.1.6";
-var DIU_UI_VERSION_DATE = "2019-12-10 22:13:00";
+var DIU_UI_VERSION = "0.1.7";
+var DIU_UI_VERSION_DATE = "2019-12-10";
 
 var g_snd = {
   "reject_fare" : "",
@@ -593,7 +593,7 @@ function _sp(str, align, pad) {
   else if (align == "right") {
     var pfx = "";
     for (var i=0; i<n; i++) { pfx += " "; }
-    str = prx + str;
+    str = pfx + str;
   }
 
   return str;
@@ -635,8 +635,19 @@ function _cb_status(inp) {
     html_a.push("Last Token Read (" + m["last_token"] + ")");
     html_a.push("GPS: " + has_gps + gps_str + "");
     html_a.push(" ");
-    html_a.push("Package   Version   Installed");
-    html_a.push(_sp("ui") + _sp(DIU_UI_VERSION) + _sp(DIU_UI_VERSION_DATE) + "");
+
+    // some site specific fiddling to display package information
+    //
+    html_a.push(_sp("Package") + _sp("Version", "left", 18) + _sp("Installed", "right", 12));
+    html_a.push(_sp("ui") + _sp(DIU_UI_VERSION, "left", 18) + _sp(DIU_UI_VERSION_DATE, "right", 12) + "");
+
+    for (var _ii=0; _ii<3; _ii++) {
+      var key = "pkg" + _ii;
+      if (key in g_ctx.diu_status) {
+        var aval = g_ctx.diu_status[key].split(" ");
+        html_a.push(_sp(aval[0]) + _sp(aval[1], "left", 18) + _sp(aval[2], "right", 12));
+      }
+    }
     html_a.push(" ");
 
     if ("IMEI" in m) { html_a.push("IMEI = " + m["IMEI"] + ""); }
@@ -648,9 +659,6 @@ function _cb_status(inp) {
       html_a[ii] = html_a[ii].replace(/ /g, '&nbsp;');
     }
 
-    //span_str = "<div style='float:left; width: 100%; margin: 0 auto; display:block; text-align:left;  background: #770000; color:#008800;'>";
-    //span_str = "<div style='float:left; width: 100%; text-align:left;  background: #770000; color:#008800;'>";
-    //var div_hdr = "<div style='float:left; width: 100%; text-align:left; '>";
     var div_hdr = "<div class='textrow'>";
     var str = div_hdr + html_a.join("</div><br>" + div_hdr ) + "</div>";
 

+ 12 - 1
busunit/PIU/piu_main.c

@@ -316,6 +316,11 @@ int main(int argc, char **argv) {
   _usec_prv = _usec_now;
   _usec_del = 60000000;
 
+  long long int _usec_ratelimit_now, _usec_ratelimit_prv, _usec_ratelimit_del;
+  _usec_ratelimit_now = get_usec_time();
+  _usec_ratelimit_prv = _usec_ratelimit_now;
+  _usec_ratelimit_del = 1000000;
+
 
   configure_signal_handlers(argv[0]);
   maintain_ipc_hub_connect(argv[0]);
@@ -379,7 +384,13 @@ int main(int argc, char **argv) {
         }
       }
       else {
-        fprintf(stderr, "Cannot open serial port %s for PIU!\n", PASSENGER_UI_PORT);
+
+        _usec_ratelimit_now = get_usec_time();
+        if ((_usec_ratelimit_now - _usec_ratelimit_prv) > _usec_ratelimit_del) {
+          fprintf(stderr, "Cannot open serial port %s for PIU!\n", PASSENGER_UI_PORT);
+          _usec_ratelimit_prv = _usec_ratelimit_now;
+        }
+
       }
     }