- Allow blocking error dialog for a period of time
authorJoseph Coffland <joseph@cauldrondevelopment.com>
Thu, 15 Feb 2018 05:29:30 +0000 (21:29 -0800)
committerJoseph Coffland <joseph@cauldrondevelopment.com>
Thu, 15 Feb 2018 05:29:30 +0000 (21:29 -0800)
 - Show actual error message on planner errors
 - Reset planner on serious error
 - Fixed console clear
 - Added helful info to Video tab
 - Changed Console tab to Messages
 - Removed spin up/down velocity options, they don't do anything

13 files changed:
CHANGELOG.md
package.json
src/avr/LICENSE
src/avr/src/huanyang.c
src/jade/index.jade
src/jade/templates/console.jade
src/jade/templates/control-view.jade
src/js/app.js
src/js/console.js
src/pwr/config.h
src/py/bbctrl/Planner.py
src/resources/config-template.json
src/stylus/style.styl

index 6a2516eb1c0fb69ea9a0ac9f08e2a9bdceee28d6..b215cbd2b4ac26daae034e933ed388d5ef92e547 100644 (file)
@@ -1,6 +1,15 @@
 Buildbotics CNC Controller Firmware Change Log
 ==============================================
 
+## v0.3.7
+ - Allow blocking error dialog for a period of time
+ - Show actual error message on planner errors
+ - Reset planner on serious error
+ - Fixed console clear
+ - Added helful info to Video tab
+ - Changed "Console" tab to "Messages"
+ - Removed spin up/down velocity options, they don't do anything
+
 ## v0.3.6
  - Set max_usb_current=1 in /boot/config.txt from installer #103
 
index ef0b0a36e4cf0568fc1c4e87d20e88565ecdfba5..b6fd328859b314c720960ace2307a6bb628de582 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "bbctrl",
-  "version": "0.3.6",
+  "version": "0.3.7",
   "homepage": "http://buildbotics.com/",
   "repository": "https://github.com/buildbotics/bbctrl-firmware",
   "license": "GPL-3.0+",
index b08b65785d76c07545bff1ffe110158a624aae86..ac86d6d6a626006f6afb735a60612f63486a3ad5 100644 (file)
@@ -16,9 +16,6 @@ Portions of this software are copyrighted by the following entities:
 
   Copyright (c) 2015 - 2016 Buildbotics LLC
   Copyright (c) 2014 Thomas Nixon, Jonathan Heathcote (cpp_magic.h)
-  Copyright (c) 2013 - 2015 Robert Giseburt
-  Copyright (c) 2010 - 2015 Alden S. Hart, Jr.
-  Copyright (c) 2008 Atmel Corporation (part of clock.c)
   All rights reserved.
 
 Each source code file lists the entities which claim copyright to
index 39d22789a2e286d995ac8e92d989ce0c99133472..84c20559077074480cea9873987da0e3f4eed73e 100644 (file)
@@ -63,11 +63,14 @@ enum {
 };
 
 
+// See VFD manual pg57 3.1.3.d
 enum {
   HUANYANG_TARGET_FREQ,
   HUANYANG_ACTUAL_FREQ,
   HUANYANG_ACTUAL_CURRENT,
   HUANYANG_ACTUAL_RPM,
+  HUANYANG_DCV,
+  HUANYANG_ACV,
   HUANYANG_CONT,
   HUANYANG_TEMPERATURE,
 };
index fc38c53753e45288cbe48d1da7ca5531e3460b2d..1a2e637d50f5a2313ce26dd7e393ccd5a7b1dbb5 100644 (file)
@@ -85,6 +85,16 @@ html(lang="en")
       div(slot="body")
         console
 
+        button.pure-button(@click="block_error_dialog")
+          .fa.fa-ban
+          | &nbsp;Stop
+        label showing errors for
+        input(style="width: 50px", v-model="errorTimeout", number)
+        label seconds.
+
+      div(slot="footer")
+        button.pure-button.pure-button-primary(@click="errorShow = false") Ok
+
     message(:show.sync="confirmUpgrade")
       h3(slot="header") Upgrade Firmware?
       div(slot="body")
index e546e2ed151843a82e521abc732831a904f8a3c1..93bf3b3ec8d982ab96ceb755b8c61c22e0ee62ef 100644 (file)
@@ -3,6 +3,7 @@ script#console-template(type="text/x-template")
     .toolbar
       button.pure-button(title="Clear console.", @click="clear")
         .fa.fa-trash
+        | &nbsp;Clear
 
     table
       tr
index 0e8ddcc7516fb97f1d4831a2dc402f45f260174a..21338432afcf99929325a7d68dfc6ee32ab8efa2 100644 (file)
@@ -161,7 +161,7 @@ script#control-view-template(type="text/x-template")
       label(for="tab3") Jog
 
       input#tab4(type="radio", name="tabs")
-      label(for="tab4") Console
+      label(for="tab4") Messages
 
       input#tab5(type="radio", name="tabs")
       label(for="tab5") Indicators
@@ -251,3 +251,10 @@ script#control-view-template(type="text/x-template")
           img.reload(src="/images/reload.png", @click="load_video",
             title="Reload video")
           img.mjpeg(:src="video_url")
+
+        p(style="padding:0 1em")
+          | Plug in a USB video camera to monitor your machine remotely.
+          | If it's not working, try clicking the reload button or unplugging
+          | and replugging the the camera.
+          | <a href="https://elinux.org/RPi_USB_Webcams" target="_blank">Here
+          | is a list</a> of USB cameras that should work.
index 5d39577899443479a716b5cdade9379c4ae2dfa7..94592646d0c3715b5b297f0e38fd8c3539e088d9 100644 (file)
@@ -33,6 +33,8 @@ module.exports = new Vue({
       config: {motors: [{}]},
       state: {},
       messages: [],
+      errorTimeout: 30,
+      errorTimeoutStart: 0,
       errorShow: false,
       errorMessage: '',
       confirmUpgrade: false,
@@ -95,6 +97,14 @@ module.exports = new Vue({
 
 
     error: function (msg) {
+      // Honor user error blocking
+      if (Date.now() - this.errorTimeoutStart < this.errorTimeout * 1000)
+        return;
+
+      // Wait at least 1 sec to pop up repeated errors
+      if (1 < msg.repeat && Date.now() - msg.ts < 1000) return;
+
+      // Popup error dialog
       this.errorShow = true;
       this.errorMessage = msg.msg;
     }
@@ -108,6 +118,12 @@ module.exports = new Vue({
 
 
   methods: {
+    block_error_dialog: function () {
+      this.errorTimeoutStart = Date.now();
+      this.errorShow = false;
+    },
+
+
     estop: function () {
       if (this.state.xx == 'ESTOPPED') api.put('clear');
       else api.put('estop');
index 62b90eb767d9e812dbbd90f8ab64c4cb33e5d39a..e4bc5ed271eb8f0f3abfebce00dc97a0b7358e34 100644 (file)
@@ -37,6 +37,7 @@ module.exports = {
         msg.repeat = 1;
         messages.unshift(msg);
       }
+      msg.ts = Date.now();
 
       // Write message to browser console for debugging
       var text = JSON.stringify(msg);
@@ -46,13 +47,13 @@ module.exports = {
       else console.log(text);
 
       // Event on errors
-      if (!repeat && (msg.level == 'error' || msg.level == 'critical'))
+      if (msg.level == 'error' || msg.level == 'critical')
         this.$dispatch('error', msg);
     }
   },
 
 
   methods: {
-    clear: function () {messages.length = 0;},
+    clear: function () {messages.splice(0, messages.length);},
   }
 }
index 0da6d6c2782de7905b5f8c2c4d9b3ebac64e0f9b..fa2d8ceb174894d0aed9a72b8fec0a0d4e691953 100644 (file)
@@ -95,7 +95,7 @@ enum {
 #define VOLTAGE_REF_R2 1000
 #define CURRENT_REF_MUL 1970
 
- // Addresses 0x60 to 0x67
+// Addresses 0x60 to 0x67
 #define I2C_ADDR 0x60
 #define I2C_MASK 0b00000111
 
index cd9a9872c6d20a68e4f431eef6c94cba0fc92ccc..a383e6e6d890041278a89ad6b938270584b0dae0 100644 (file)
@@ -206,9 +206,14 @@ class Planner():
 
 
     def next(self):
-        while self.planner.has_more():
-            cmd = self.planner.next()
-            cmd = self.encode(cmd)
-            if cmd is not None: return cmd
+        try:
+            while self.planner.has_more():
+                cmd = self.planner.next()
+                cmd = self.encode(cmd)
+                if cmd is not None: return cmd
 
-        if not self.is_running(): self.mode = 'idle'
+            if not self.is_running(): self.mode = 'idle'
+
+        except Exception as e:
+            self.reset()
+            log.exception(e)
index fa754ba5c1e512631ec0cfa9c5ae9bf215251bd5..bd76c719d8fa3186a73039af25bf0921b4839d0b 100644 (file)
       "default": 99.99,
       "code": "md"
     },
-    "spin-up-velocity": {
-      "type": "float",
-      "unit": "rev/min²",
-      "min": 0,
-      "default": 48000,
-      "code": "su"
-    },
-    "spin-down-velocity": {
-      "type": "float",
-      "unit": "rev/min²",
-      "min": 0,
-      "default": 48000,
-      "code": "sd"
-    },
     "pwm-freq": {
       "type": "int",
       "unit": "Hz",
index 420befcd93a3fbe6e9ce8d708c7c5ae5f5a506cf..06a0d8ab345daa40182610c0e7f6551eed66ed97 100644 (file)
@@ -315,6 +315,7 @@ body
 
   .tabs
     section
+      min-height 250px
       max-height 610px
       overflow-x hidden
       overflow-y auto
@@ -376,6 +377,7 @@ body
 
     td, th
       border 1px solid #ddd
+      padding 2px
 
     tr
       > td