1. 05 Oct, 2019 6 commits
    • Rahix's avatar
      feat(epicardium): Use panic() for assertion failures · 9d44017b
      Rahix authored
      
      
      Define `__assert_func()` so a failing `assert()` will trigger a panic.
      
      Signed-off-by: Rahix's avatarRahix <rahix@rahix.de>
      9d44017b
    • Rahix's avatar
      feat(epicardium): Add a panic() function · 1536da34
      Rahix authored
      In unrecoverable situations we should provide a common way to output the
      cause of the error and then reset the CPU.  The panic() function is
      mean to be exactly that.  It outputs the error-cause, stack-trace, and
      firmware revision, accompanied by a link to the issue-tracker to
      encourage people to report the error.  After a timeout of ~1.5s it
      resets the CPU and reboots.
      
      Future Work:
      
       - Right now, the stack-trace only has a depth of one which is the
         return address from where panic() was called.  In the future it might
         make sense to provide a deeper stack-trace if a robust implementation
         is possible.
       - Integration of @msgctl
      
      's faultscreen (!79) so users who don't have
         the serial console open at all times can also see what happened.
      
      Signed-off-by: Rahix's avatarRahix <rahix@rahix.de>
      1536da34
    • Rahix's avatar
      feat(serial): Add function to switch serial to synchronous · 5e25bc89
      Rahix authored
      
      
      In severe error conditions, asynchronous prints will never work.  For
      such cases we need a way to make prints happen synchronously again, the
      same way it works during early boot.  Add a serial_return_to_synchronous()
      function which unconditionally switches the serial driver code to
      synchronous mode.
      
      Only use this function in unrecoverable error conditions!
      
      Signed-off-by: Rahix's avatarRahix <rahix@rahix.de>
      5e25bc89
    • Rahix's avatar
      fix(libcard10): Mark card10_reset() as noreturn · 8ac93244
      Rahix authored
      
      
      card10_reset() won't ever return to where it was called from.  Telling
      the compiler this can help with program-flow analysis.
      
      Signed-off-by: Rahix's avatarRahix <rahix@rahix.de>
      8ac93244
    • Rahix's avatar
      Merge 'Draw offscreen lines' · a9e1b238
      Rahix authored
      See merge request card10/firmware!332
      a9e1b238
    • Philip Stewart's avatar
      fix(gfx/display): Draw partially clipped primitives · 14d5abcc
      Philip Stewart authored and Rahix's avatar Rahix committed
      Fix two bugs in the display/gfx module:
      
      1. The animation of the simple_menu used in the main menu had the issue
         that there is a black line visible at the top.  This is due the
         gfx_puts method ignoring lines, where the top pixel of the string is
         above the top of the screen.  As gfx_puts uses gfx_setpixel which in
         turn ignores pixels outside of the screen, remove the check in
         gfx_puts.
      2. X and Y coordinates were cast to unsigned-ints before being given to
         the gfx-library which means calls like circ(0, -10, 30) would be draw
         at coordinates like [0,65526].  Fix this by changing the data-type of
         all coordinates to signed-integers.
      
      Also remove the x and y ranges from the documentation of the individual
      python functions and instead add a general documentation about the
      screen and it's size/coordinate system.
      14d5abcc
  2. 04 Oct, 2019 10 commits
  3. 03 Oct, 2019 4 commits
  4. 01 Oct, 2019 8 commits
  5. 25 Sep, 2019 1 commit
  6. 24 Sep, 2019 4 commits
  7. 22 Sep, 2019 7 commits
    • Rahix's avatar
      Merge 'ECG App update' · ee45bbd8
      Rahix authored
      See merge request card10/firmware!296
      ee45bbd8
    • Daniel Hoffend's avatar
      feat(ecg-app): Refactor ECG App · d7edf7e5
      Daniel Hoffend authored and Rahix's avatar Rahix committed
      New Button-Layout
      =================
      
                /-----------------------\
                |   xxxxxxxxxxxxxxxxx   |
                |                       |
                |                      <> * Pause screen
                |         card10        |
       +------- <>                     <> * During pause: Scroll right.
       |        |                       | * Short press: Toggle between Finger
       |        \-----------------------/    and USB.
      * During pause: Scroll left.        * Long press: Toggle bias on/off.
      * Short press: Toggle LED mode.
      * Long press: Start/stop logging.
      
      Other Changes
      =============
      - Split the bar into negativ [10:5] and positive [5:0] scale and update
        them seperate to have a better visualization.
      - Blink red with backside LEDs on detected pulse.
      - Allow toggling the LED modes on and off (see new button layout).
      - Lock mode & bias during logging.
      d7edf7e5
    • Rahix's avatar
      docs(utime): Document monotonic clock API · d3935ffd
      Rahix authored
      
      
      Signed-off-by: Rahix's avatarRahix <rahix@rahix.de>
      d3935ffd
    • Rahix's avatar
      chore: Update CHANGELOG and docs · db0ff2f6
      Rahix authored
      db0ff2f6
    • Rahix's avatar
      Merge 'Refactor BHI160 App' · 50839184
      Rahix authored
      See merge request card10/firmware!316
      50839184
    • Rahix's avatar
      refactor(preload/bhi): Make app more pythonic · 003aa2a0
      Rahix authored
      
      
      This patch makes the BHI160 app more pythonic and fixes a few
      bugs/issues:
      
      - An exception (including KeyboardInterrupt) will trigger the sensor to
        be closed again.  Otherwise you'd get strange behavior trying to
        reopen then afterwards.
      - Use simple_menu.button_events() instead of home-cooked solution.  This
        should hopefully make the code more future-proof.
      - Fix overlapping text caused by the font-rendering changes.
      
      Signed-off-by: Rahix's avatarRahix <rahix@rahix.de>
      003aa2a0
    • Rahix's avatar
      hack(streams): Discard overflowing samples · d974cd2f
      Rahix authored
      As discussed in card10/firmware!316, this commit prevents I2C lockup by
      discarding overflowing samples instead of blocking until they have been
      read.  This is not ideal as the samples read will not be the most recent
      ones.  A deeper refactor of the sensor-stream internal API can fix this
      in the future.
      
      Cc: @flo_h
      
      
      Signed-off-by: Rahix's avatarRahix <rahix@rahix.de>
      d974cd2f