software:firmware
MakAir Firmware
Changelog

unreleased

Nothing for now

v4.1.0

  • fixed malformatted fatal error telemetry messages (existing ones did not pass CRC checks)
  • implemented new fatal error telemetry messages (SFM sensor failure, battery deep discharge, calibration errors)
  • sending "end of production line" telemetry snapshots (used for the UI to show current EOL step)
  • handling "end of production line" control messages (used to continue to next EOL step)
  • if hardware buttons are disabled, then the "end of production line" will skip the buttons test step
  • added automation and convenience scripts (used to compile and flash to auto-detected serial port)
  • refactored project structure (some directories and files have been moved)

v4.0.0

  • drop support of electronic hardware v1 and v2 (from now on, minimum compatibility is from v3)
  • refactor main loop and breathing control (breathing-related computations are now triggered by a hardware timer)
  • support several breathing modes (PC-CMV stays the default mode, PC-VSAI and PC-AC were added)
  • added volume controlled ventilation modes (VC-CMV and VC-AC were added)
  • telemetry protocol v2 was introduced (basically, this means sending more data)
  • drop support of useless "qualification" and "integration test" modes (both are superseded by the EOL test feature)
  • add a watchdog for the Raspberry Pi (RPi power supply will be restarted if UI misses sending heartbeats)
  • allow to set any setting (current or added) using the serial control protocol (new settings were added, and they can all be changed from UI software)
  • improve breathing control algorithms
  • remove ability to set peak pressure
  • allow to snooze alarms or start/stop breathing using the serial control protocol
  • drop support of old valves and pneumatic systems
  • make mass flow meter more reliable
  • support for SFM mass flow meters (SFM3019 and SFM_3300D)
  • added support for a mass flow meter on the expiratory branch (if it is missing, the expiratory flow rate will be estimated using an algorithm)
  • turn the green LED on when alarms are snoozed
  • added a facility to pre-configure the ventilator settings upon boot, using a patient height setting (submitting the patient height will update all ventilation hyperparameters to optimum values)
  • added configurable alarms for pressure and volume modes, adding to all existing alarms
  • sending more measured values for display, e.g. respiratory durations and cycles per minute
  • a more precise battery voltage value is now sent over the telemetry protocol (this is used for battery SoC estimations)
  • display a special message on LCD screen when watchdog reset was triggered
  • ability to detect in a reliable way when AC gets off, and that power is switched to battery
  • allow to retry pressure calibration when it fails
  • added a ramp-up algorithm on the blower speed controller, in order to prevent current surges in the transformer, which could trigger a temporary handover on batteries (this is a security feature, in cases where batteries would be depleted or not connected, the ventilator would suddenly reboot during use)
  • added a compilation flag to disable all hardware buttons (this is used for touchscreen-only MakAir devices, i.e. non-traditional ones)
  • added basic support for the motherboard V3 EEPROM chip over I2C (disabled by default until stable)
  • a lot of potential exceptions due to possible divisions by zero have been fixed
  • increase the size of the hardware buffer used by telemetry
  • improve Doxygen documentation

v3.0.1

  • fix an issue with the optional mass flow meter

v3.0.0

  • implement a respiratory trigger (this helps the MakAir to respect the patient respiratory reflexes when he/she starts to wake up; disabled by default)
  • add an "end of production line" test program (it is included in the production software and runs when booting while pressing a maintainance button; electronic hardware v2+ required)
  • support Faulhaber motors for valves (they are better, faster, stronger; electronic hardware v2+ required)
  • support an optional mass flow meter (this allows to estimate the volume of inspired air; electronic hardware v2+ required)
  • implement a control protocol to update settings through serial communication (UI on Raspberry Pi can now send new settings values; few more settings are supported compared to physical buttons; electronic hardware v2+ required)
  • support electronic hardware v3
  • improve pressure control
  • improve blower speed regulation
  • fix systick overflow in telemetry protocol
  • update telemetry protocol to send more information
  • include CRC in telemetry messages
  • add a safety to shutdown system if battery is very low (in this situation, everything might get damaged if not shutdown)
  • change some default settings (now, Ppeak starts at 250 mmH2O and Pplateau at 220 mmH2O)

v1.5.4

  • improve dynamic update of the peak pressure command according to the measured plateau pressure
  • fix telemetry bugs
  • fix minor bugs

v1.5.3

  • warn if pressure is not stable enough at startup
  • improve pressure control
  • fix a regression (the PPeak+ button was not functioning anymore)

v1.5.2

  • improve pressure control

v1.5.1

  • calibrate pressure sensor's offset on startup
  • better round displayed pressure values (in cmH2O)
  • minor improvement to the pressure control

v1.5.0

  • rework pressure and blower control (blower will now take more time to ramp up/down but this will greatly improve the stability of injected air volume in many scenario)
  • rework alarms (better pressure alarms, better battery alarms, better snooze behavior)
  • improve even more the measured and displayed pressures (if no plateau pressure if found, screen will now display a ? instead of an uncertain value)
  • tweak the pressure control to make the plateau more accurate
  • fix an issue with blower not restarting in some cases
  • make sysclock more accurate
  • improve code quality (MISRA)
  • add a step in integration test to check O2 pipe

v1.4.0

This release was depublished

v1.3.2

  • fix blower control (it used to unexpectedly slow down a bit from times to times)
  • improve the measured and displayed pressures for peak and plateau

v1.3.1

  • use the green LED near the start button to show whether the breathing mode is ON or not
  • disable alarms related to the breathing cycle when program is stopped
  • fix an issue with a battery alarm being briefly triggered at every boot
  • integration test: open both valves at startup

v1.3.0

  • add a program to test integration
  • support electronic hardware v1 and v2 (v1 by default, v2 through a config flag)
  • implement start/stop (from now on, machine will begin stopped!)
  • handle Emerson valves (through a config flag)
  • improve the way buzzer is controlled

v1.2.3

  • fix an issue with buzzer (sometimes it was stuck buzzing whereas no alarm were triggered)
  • add battery-related alarms

v1.2.2

  • handle several pneumatic systems _(for the first 2 working typologies of prototype)_

v1.2.1

Unreleased

v1.2.0

First release version