diff --git a/arduino/common/include/Arduino_Due_pinout.h b/arduino/common/include/Arduino_Due_pinout.h
index c3a08c592dee9b3bf740760010f1d47f7b8714e0..09be9e08eeb15052fe16560564a384744c682a88 100644
--- a/arduino/common/include/Arduino_Due_pinout.h
+++ b/arduino/common/include/Arduino_Due_pinout.h
@@ -15,14 +15,14 @@ const int pin_pressure_air_regulated= A1;
 const int pin_pressure_buffer       = A2;
 const int pin_pressure_inhale       = A3;
 const int pin_pressure_patient      = A4;
-const int pin_temp           = A5;
-const int pin_p_o2_supply    = A6; 
-const int pin_p_o2_regulated = A7;
-const int pin_p_diff_patient = A8;
+const int pin_temperature_buffer    = A5;
+const int pin_pressure_o2_supply    = A6; 
+const int pin_pressure_o2_regulated = A7;
+const int pin_pressure_diff_patient = A8;
     // leds
-const int pin_led_0          = 0;
-const int pin_led_1          = 1;
-const int pin_led_2          = 2;
+const int pin_led_green          = 0;
+const int pin_led_yellow          = 1;
+const int pin_led_red          = 2;
 
     // buzzer
 const int pin_buzzer         = 9;
diff --git a/arduino/common/include/Arduino_MKR_1010_WIFI_pinout.h b/arduino/common/include/Arduino_MKR_1010_WIFI_pinout.h
index 5e9ff79275360094bd170ae9b7db948f2fe2f03e..ab10d55e62699bac13241f53e1a6e1d567113277 100644
--- a/arduino/common/include/Arduino_MKR_1010_WIFI_pinout.h
+++ b/arduino/common/include/Arduino_MKR_1010_WIFI_pinout.h
@@ -15,15 +15,15 @@ const int pin_pressure_air_regulated  = A1;
 const int pin_pressure_buffer         = A2;
 const int pin_pressure_inhale         = A3;
 const int pin_pressure_patient        = A4;
-const int pin_temp             = A5;
-const int pin_p_o2_supply      = A6;
-// const int pin_p_o2_regulated   = A7;
-// const int pin_p_diff_patient   = A8;
+const int pin_temperature_buffer      = A5;
+const int pin_pressure_o2_supply      = A6;
+// const int pin_pressure_o2_regulated   = A7;
+// const int pin_pressure_diff_patient   = A8;
 
     // leds
-const int pin_led_0          = 7;
-const int pin_led_1          = 8;
-const int pin_led_2          = 9;
+const int pin_led_green          = 7;
+const int pin_led_yellow          = 8;
+const int pin_led_red          = 9;
 
     // buzzer
 const int pin_buzzer         = 0;
diff --git a/arduino/common/include/Arduino_MKR_4000_Vidor_pinout.h b/arduino/common/include/Arduino_MKR_4000_Vidor_pinout.h
index e0519d7d95f15ceaa2b342360f0b503e9ebdb609..e4e08e20d43794e2b2d14bcc7dae0121e529d8a1 100644
--- a/arduino/common/include/Arduino_MKR_4000_Vidor_pinout.h
+++ b/arduino/common/include/Arduino_MKR_4000_Vidor_pinout.h
@@ -15,15 +15,15 @@ const int pin_pressure_air_regulated  = A1;
 const int pin_pressure_buffer         = A2;
 const int pin_pressure_inhale         = A3;
 const int pin_pressure_patient        = A4;
-const int pin_temp             = A5;
-const int pin_p_o2_supply      = A6;
-// const int pin_p_o2_regulated   = A7;
-// const int pin_p_diff_patient   = A8;
+const int pin_temperature_buffer      = A5;
+const int pin_pressure_o2_supply      = A6;
+// const int pin_pressure_o2_regulated   = A7;
+// const int pin_pressure_diff_patient   = A8;
 
     // leds
-const int pin_led_0          = 7;
-const int pin_led_1          = 8;
-const int pin_led_2          = 9;
+const int pin_led_green          = 7;
+const int pin_led_yellow          = 8;
+const int pin_led_red          = 9;
 
     // buzzer
 const int pin_buzzer         = 0;
diff --git a/arduino/common/include/Arduino_Nano_33_IOT_pinout.h b/arduino/common/include/Arduino_Nano_33_IOT_pinout.h
index 6042c005d836b2c2faf39a531187911e42b31981..a22236d0ff47caa2dd96f866b84ea3e62112d6b7 100644
--- a/arduino/common/include/Arduino_Nano_33_IOT_pinout.h
+++ b/arduino/common/include/Arduino_Nano_33_IOT_pinout.h
@@ -17,15 +17,15 @@ const int pin_pressure_air_regulated  = A1;
 const int pin_pressure_buffer         = A2;
 const int pin_pressure_inhale         = A3;
 const int pin_pressure_patient        = A4;
-const int pin_temp             = A5;
-const int pin_p_o2_supply      = A6;
-// const int pin_p_o2_regulated   = A7;
-// const int pin_p_diff_patient   = A8;
+const int pin_temperature_buffer      = A5;
+const int pin_pressure_o2_supply      = A6;
+// const int pin_pressure_o2_regulated   = A7;
+// const int pin_pressure_diff_patient   = A8;
 
     // leds
-const int pin_led_0          = 8;
-const int pin_led_1          = 9;
-const int pin_led_2          = 10;
+const int pin_led_green          = 8;
+const int pin_led_yellow          = 9;
+const int pin_led_red          = 10;
 
     // buzzer
 const int pin_buzzer         = 11;
diff --git a/arduino/common/include/Arduino_Yun_pinout.h b/arduino/common/include/Arduino_Yun_pinout.h
index 6a4d8222d3b34af70d18f06a727a0e6ba3900c3f..d07550c73caf35f467decc5b226308e81ad81df1 100644
--- a/arduino/common/include/Arduino_Yun_pinout.h
+++ b/arduino/common/include/Arduino_Yun_pinout.h
@@ -14,15 +14,15 @@ const int pin_pressure_air_regulated  = A1;
 const int pin_pressure_buffer         = A2;
 const int pin_pressure_inhale         = A3;
 const int pin_pressure_patient        = A4;
-const int pin_temp             = A5;
-// const int pin_p_o2_supply      = A6;
-// const int pin_p_o2_regulated   = A7;
-// const int pin_p_diff_patient   = A8;
+const int pin_temperature_buffer      = A5;
+// const int pin_pressure_o2_supply      = A6;
+// const int pin_pressure_o2_regulated   = A7;
+// const int pin_pressure_diff_patient   = A8;
 
     // leds
-const int pin_led_0          = 0;
-const int pin_led_1          = 1;
-const int pin_led_2          = 2;
+const int pin_led_green          = 0;
+const int pin_led_yellow          = 1;
+const int pin_led_red          = 2;
 
     // buzzer
 const int pin_buzzer         = 9;
diff --git a/arduino/common/include/Arduino_uno_pinout.h b/arduino/common/include/Arduino_uno_pinout.h
index 5dc5317e483f8c5e1afe441fecc2e4134ecd7b7d..664f8f8ba8782b0091305b484f4f2eb8588d3bf3 100644
--- a/arduino/common/include/Arduino_uno_pinout.h
+++ b/arduino/common/include/Arduino_uno_pinout.h
@@ -14,15 +14,15 @@ const int pin_pressure_air_regulated  = A1;
 const int pin_pressure_buffer         = A2;
 const int pin_pressure_inhale         = A3;
 const int pin_pressure_patient        = A4;
-const int pin_temp             = A5;
-// const int pin_p_o2_supply      = A6;
-// const int pin_p_o2_regulated   = A7;
-// const int pin_p_diff_patient   = A8;
+const int pin_temperature_buffer      = A5;
+// const int pin_pressure_o2_supply      = A6;
+// const int pin_pressure_o2_regulated   = A7;
+// const int pin_pressure_diff_patient   = A8;
 
     // leds
-const int pin_led_0          = 0;
-const int pin_led_1          = 1;
-const int pin_led_2          = 2;
+const int pin_led_green          = 0;
+const int pin_led_yellow          = 1;
+const int pin_led_red          = 2;
 
     // buzzer
 const int pin_buzzer         = 9;
diff --git a/arduino/common/include/Arduino_uno_pinout_minisystem.h b/arduino/common/include/Arduino_uno_pinout_minisystem.h
index 4f8da311cfee62802faf055da54a8660827527ed..87722b1063cccd6057566c7058edccf74333919e 100644
--- a/arduino/common/include/Arduino_uno_pinout_minisystem.h
+++ b/arduino/common/include/Arduino_uno_pinout_minisystem.h
@@ -14,15 +14,15 @@ const int pin_pressure_air_regulated  = A0; //lab14
 const int pin_pressure_buffer         = A1; //lab14
 const int pin_pressure_inhale         = A3;
 const int pin_pressure_patient        = A4;
-const int pin_temp             = A5;
-// const int pin_p_o2_supply      = A6;
-// const int pin_p_o2_regulated   = A7;
-// const int pin_p_diff_patient   = A8;
+const int pin_temperature_buffer      = A5;
+// const int pin_pressure_o2_supply      = A6;
+// const int pin_pressure_o2_regulated   = A7;
+// const int pin_pressure_diff_patient   = A8;
 
     // leds
-const int pin_led_0          = 0;
-const int pin_led_1          = 1;
-const int pin_led_2          = 2;
+const int pin_led_green          = 0;
+const int pin_led_yellow          = 1;
+const int pin_led_red          = 2;
 
     // buzzer
 const int pin_buzzer         = 5;
diff --git a/arduino/common/include/huzzah32_pinout.h b/arduino/common/include/huzzah32_pinout.h
index 8747d7ac732ea50af35d82f398858e338d34ecdd..f82cd6fc30634eb1aa2296ce8c26042a8902e639 100644
--- a/arduino/common/include/huzzah32_pinout.h
+++ b/arduino/common/include/huzzah32_pinout.h
@@ -18,15 +18,15 @@ const int pin_pressure_air_regulated = A3; // 39 / INPUT ONLY
 const int pin_pressure_buffer        = A2; // 34 / INPUT ONLY
 const int pin_pressure_inhale        = A0; // DAC2 / 26 ****
 const int pin_pressure_patient       = A7; // 32
-const int pin_temp            = A9; // 33
-const int pin_p_o2_supply     = A10; // 27 
-const int pin_p_o2_regulated  = A6;  // 14
-const int pin_p_diff_patient  = A5;  // 4
+const int pin_temperature_buffer     = A9; // 33
+const int pin_pressure_o2_supply     = A10; // 27 
+const int pin_pressure_o2_regulated  = A6;  // 14
+const int pin_pressure_diff_patient  = A5;  // 4
 
     // leds
-const int pin_led_0          = 17; // TX
-const int pin_led_1          = 16; // RX
-const int pin_led_2          = 15; // A13 ****
+const int pin_led_green          = 17; // TX
+const int pin_led_yellow          = 16; // RX
+const int pin_led_red          = 15; // A13 ****
 
     // buzzer
 const int pin_buzzer         = 22; // I2C SDA
diff --git a/arduino/common/include/nodemcu_32s_pinout.h b/arduino/common/include/nodemcu_32s_pinout.h
index 63517eccfd15f65648593f635bec3bb25ac5fe21..5ed726f864b2c3c5df642d17003747a49470bde1 100644
--- a/arduino/common/include/nodemcu_32s_pinout.h
+++ b/arduino/common/include/nodemcu_32s_pinout.h
@@ -18,15 +18,15 @@ const int pin_pressure_air_regulated    = A3; // IO39  // INPUT ONLY
 const int pin_pressure_buffer           = A6; // IO34  // INPUT ONLY
 const int pin_pressure_inhale           = A7; // IO35  // INPUT ONLY
 const int pin_pressure_patient          = A4; // IO32
-const int pin_temp               = A5; // IO33
-const int pin_p_o2_supply       = A17; // IO27
-const int pin_p_o2_regulated    = A16; // IO14 
-const int pin_p_diff_patient    = A10;  // IO4
+const int pin_temperature_buffer        = A5; // IO33
+const int pin_pressure_o2_supply        = A17; // IO27
+const int pin_pressure_o2_regulated     = A16; // IO14 
+const int pin_pressure_diff_patient     = A10; // IO4
 
     // leds
-const int pin_led_0          = 17;
-const int pin_led_1          = 16;
-const int pin_led_2          = 12; // A15// STRAPPING PIN (prefer as output / high-Z)
+const int pin_led_green        = 17;
+const int pin_led_yellow       = 16;
+const int pin_led_red          = 12; // A15// STRAPPING PIN (prefer as output / high-Z)
 
     // buzzer
 const int pin_buzzer         =  2;   // STRAPPING PIN (prefer as output / High-Z)
diff --git a/arduino/common/lib/CommsControl/CommsCommon.h b/arduino/common/lib/CommsControl/CommsCommon.h
index d1c908ee14ddbd7f1bf4fee5734f4a7a99e74248..20e9313c92367c39ebaf3d6161d01ed6361aa109 100644
--- a/arduino/common/lib/CommsControl/CommsCommon.h
+++ b/arduino/common/lib/CommsControl/CommsCommon.h
@@ -31,7 +31,7 @@
 #define PACKET_DATA  0x40
 #define PACKET_SET   0x20 //set vs get ?
 
-#define HEV_FORMAT_VERSION 0xA0
+#define HEV_FORMAT_VERSION 0xA1
 
 // struct for all data sent
 struct data_format {
diff --git a/arduino/hev_prototype_v1/src/BreathingLoop.cpp b/arduino/hev_prototype_v1/src/BreathingLoop.cpp
index 6a927f345e56e21c2bbd1b892182c04c2d230d72..54095d13cf0fc16b2511d903f77d2fda82af9491 100644
--- a/arduino/hev_prototype_v1/src/BreathingLoop.cpp
+++ b/arduino/hev_prototype_v1/src/BreathingLoop.cpp
@@ -13,9 +13,10 @@ BreathingLoop::BreathingLoop()
     _bl_state = BL_STATES::IDLE;
     _running = false;
     _reset = false;
-//    _next_state;
+    _next_state;
 
     initCalib();
+    resetReadingSums();
 }
 
 BreathingLoop::~BreathingLoop()
@@ -23,7 +24,7 @@ BreathingLoop::~BreathingLoop()
 ;
 }
 
-uint8_t BreathingLoop::getLabCycleMode()
+uint8_t BreathingLoop::getVentilationMode()
 {
     return _ventilation_mode;
 }
@@ -33,18 +34,64 @@ uint8_t BreathingLoop::getFsmState()
     return _bl_state;
 }
 
-void BreathingLoop::updatePressures()
+void BreathingLoop::updateReadings()
 {
-    if (millis() > _reading_time + _reading_timeout) {
+    // calc pressure every 1ms
+    // create averages every 10ms
+    unsigned long tnow = millis();
+    if (tnow > _readings_time + _readings_timeout) {
+        _readings_time = tnow;
+        _readings_N++;
 
-        _reading_time = static_cast<uint32_t>(millis());
+        _readings_sums.pressure_air_supply += analogRead(pin_pressure_air_supply);
+        _readings_sums.pressure_air_regulated += analogRead(pin_pressure_air_regulated);
+        _readings_sums.pressure_buffer += analogRead(pin_pressure_buffer);
+        _readings_sums.pressure_inhale += analogRead(pin_pressure_inhale);
+        _readings_sums.pressure_patient += analogRead(pin_pressure_patient);
+        _readings_sums.temperature_buffer += analogRead(pin_temperature_buffer);
+        _readings_sums.pressure_o2_supply += analogRead(pin_pressure_o2_supply);
+        _readings_sums.pressure_o2_regulated += analogRead(pin_pressure_o2_regulated);
+        _readings_sums.pressure_diff_patient += analogRead(pin_pressure_diff_patient);
     }
-//    data.pressure_buffer = analogRead(pin_pressure_buffer);
 
-    delay(10); //placeholder
-// TODO
-// calc pressure every 1ms
-// create averages;
+    if (tnow > _readings_avgs_time + _readings_avgs_timeout) {
+        _readings_avgs.pressure_air_supply = _readings_sums.pressure_air_supply / _readings_N;
+        _readings_avgs.pressure_air_regulated = _readings_sums.pressure_air_regulated / _readings_N;
+        _readings_avgs.pressure_buffer = _readings_sums.pressure_buffer / _readings_N;
+        _readings_avgs.pressure_inhale = _readings_sums.pressure_inhale / _readings_N;
+        _readings_avgs.pressure_patient = _readings_sums.pressure_patient / _readings_N;
+        _readings_avgs.temperature_buffer = _readings_sums.temperature_buffer / _readings_N;
+        _readings_avgs.pressure_o2_supply = _readings_sums.pressure_o2_supply / _readings_N;
+        _readings_avgs.pressure_o2_regulated = _readings_sums.pressure_o2_regulated / _readings_N;
+        _readings_avgs.pressure_diff_patient = _readings_sums.pressure_diff_patient / _readings_N;
+        resetReadingSums();
+    }
+}
+
+readings BreathingLoop::getReadingAverages()
+{
+    return _readings_avgs;
+
+}
+
+void BreathingLoop::resetReadingSums()
+{
+    unsigned long tnow = millis();
+    _readings_time = tnow;
+    _readings_avgs_time = tnow;
+    _readings_timeout = 1; //ms
+    _readings_avgs_timeout = 10; //ms
+    _readings_N = 0;
+    
+    _readings_sums.pressure_air_supply     = 0;
+    _readings_sums.pressure_air_regulated  = 0;
+    _readings_sums.pressure_buffer         = 0;
+    _readings_sums.pressure_inhale         = 0;
+    _readings_sums.pressure_patient        = 0;
+    _readings_sums.temperature_buffer      = 0;
+    _readings_sums.pressure_o2_supply      = 0;
+    _readings_sums.pressure_o2_regulated   = 0;
+    _readings_sums.pressure_diff_patient   = 0;
 }
 
 //This is used to assign the transitions of the fsm
@@ -258,7 +305,7 @@ bool BreathingLoop::getRunning()
 void BreathingLoop::calibrate()
 {
     // get pressure_air_regulated over 10s calc mean
-    if (_calib_time + _calib_timeout > millis() ){
+    if (millis() > _calib_time + _calib_timeout  ){
         _calib_N++;
         _calib_sum_pressure += analogRead(pin_pressure_air_regulated);
         _calib_avg_pressure = _calib_sum_pressure / _calib_N;
diff --git a/arduino/hev_prototype_v1/src/BreathingLoop.h b/arduino/hev_prototype_v1/src/BreathingLoop.h
index 463e20a73517d8c8f100be0a0a4e977409fb1d64..9acb685ae8283e27b8eecb027c3172d54930104d 100644
--- a/arduino/hev_prototype_v1/src/BreathingLoop.h
+++ b/arduino/hev_prototype_v1/src/BreathingLoop.h
@@ -7,8 +7,8 @@
 // @author Peter Svihra <peter.svihra@cern.ch>
 
 #include <Arduino.h>
-#include "ValvesController.h"
 #include "common.h"
+#include "ValvesController.h"
 
 class BreathingLoop
 {
@@ -16,7 +16,7 @@ class BreathingLoop
 public:
     BreathingLoop();
     ~BreathingLoop();
-    uint8_t getLabCycleMode();
+    uint8_t getVentilationMode();
     uint8_t getFsmState();
     void FSM_assignment();
     void FSM_breathCycle();
@@ -24,7 +24,8 @@ public:
     void doStop();
     void doReset();
     bool getRunning();
-    void updatePressures();
+    void updateReadings();
+    readings getReadingAverages();
     ValvesController * getValvesController();
 
     states_timeouts &getTimeouts();
@@ -69,7 +70,7 @@ private:
     // calibration
     void calibrate();
     void initCalib();
-    float getCalibrationOffset();    
+    float getCalibrationOffset();
     int _calib_N;
     uint32_t _calib_timeout;
     uint32_t _calib_time;
@@ -80,10 +81,15 @@ private:
     uint32_t calculateTimeoutExhale();
     states_timeouts _states_timeouts = {10000, 600, 600, 100, 600, 100, 100, 1000, 500, 600, 400};
 
-    // values reading
-    bool _reading;
-    uint32_t _reading_time;
-    uint32_t _reading_timeout;
+    // readings
+    void resetReadingSums();
+    readings _readings_sums;
+    readings _readings_avgs;
+    uint16_t _readings_N;
+    int _readings_time;
+    int _readings_timeout;
+    int _readings_avgs_time;
+    int _readings_avgs_timeout;
 };
 
 
diff --git a/arduino/hev_prototype_v1/src/common.h b/arduino/hev_prototype_v1/src/common.h
index 3de8ed4cc1bb15fae5a3352edcd6c0c97a2a9cae..386bf918a577dbcce93ff3a10586a6e1a376e51f 100644
--- a/arduino/hev_prototype_v1/src/common.h
+++ b/arduino/hev_prototype_v1/src/common.h
@@ -159,4 +159,17 @@ static alarm_thresholds alarm_threshold_max;
 void setThreshold(ALARM_CODES alarm, alarm_thresholds &thresholds, uint32_t value);
 void setTimeout(CMD_SET_TIMEOUT cmd, fsm_timeouts &timeouts, uint32_t value);
 
+// used for calculating averages
+struct readings{
+    uint16_t pressure_air_supply    = 0;
+    uint16_t pressure_air_regulated = 0;
+    uint16_t pressure_buffer        = 0;
+    uint16_t pressure_inhale        = 0;
+    uint16_t pressure_patient       = 0;
+    uint16_t temperature_buffer     = 0;
+    uint16_t pressure_o2_supply     = 0;
+    uint16_t pressure_o2_regulated  = 0;
+    uint16_t pressure_diff_patient  = 0;
+
+};
 #endif
diff --git a/arduino/hev_prototype_v1/src/main.cpp b/arduino/hev_prototype_v1/src/main.cpp
index 506a65867b19f0dc0613a885163d9f460d50410d..233e70eeb613e844fbedf162af11a0ba940a1f9d 100644
--- a/arduino/hev_prototype_v1/src/main.cpp
+++ b/arduino/hev_prototype_v1/src/main.cpp
@@ -1,4 +1,5 @@
 #include <Arduino.h>
+#include <WiFi.h>
 // #include <MemoryFree.h>
 #include <Wire.h>
 #include <Adafruit_MCP9808.h>
@@ -12,14 +13,8 @@
 
 int ventilation_mode = HEV_MODE_PS;
 
-const uint16_t report_freq = 5 ; // in Hz
-const uint16_t update_freq = 100 ; // in Hz
-
+uint32_t report_timeout = 50; //ms
 uint32_t report_time = 0;
-uint32_t report_timeout = static_cast<uint32_t>(1000 * report_freq);
-
-uint16_t report_cnt = 0;
- 
 float working_pressure = 1;             //?
 float inspiratory_minute_volume = 6000; // ml/min
 float respiratory_rate = 15;            //  10-40 +-1 ;aka breaths_per_min
@@ -66,6 +61,8 @@ float calcExpiratoryMinuteVolume()
 void setup()
 {
 #ifdef CHIP_ESP32
+    WiFi.mode(WIFI_OFF);
+    btStop();
     ledcSetup(pwm_chan_inhale, pwm_frequency, pwm_resolution);
     ledcSetup(pwm_chan_exhale, pwm_frequency, pwm_resolution);
     ledcAttachPin(pin_valve_inhale , pwm_chan_inhale);  
@@ -90,16 +87,16 @@ void setup()
     pinMode(pin_pressure_buffer, INPUT);
     pinMode(pin_pressure_inhale, INPUT);
     pinMode(pin_pressure_patient, INPUT);
-    pinMode(pin_temp, INPUT);
+    pinMode(pin_temperature_buffer, INPUT);
 #ifdef HEV_FULL_SYSTEM
-    pinMode(pin_p_o2_supply, INPUT);
-    pinMode(pin_p_o2_regulated, INPUT);
-    pinMode(pin_p_diff_patient, INPUT);
+    pinMode(pin_pressure_o2_supply, INPUT);
+    pinMode(pin_pressure_o2_regulated, INPUT);
+    pinMode(pin_pressure_diff_patient, INPUT);
 #endif
 
-    pinMode(pin_led_0, OUTPUT);
-    pinMode(pin_led_1, OUTPUT);
-    pinMode(pin_led_2, OUTPUT);
+    pinMode(pin_led_green, OUTPUT);
+    pinMode(pin_led_yellow, OUTPUT);
+    pinMode(pin_led_red, OUTPUT);
 
     pinMode(pin_buzzer, OUTPUT);
     pinMode(pin_button_0, INPUT);
@@ -114,11 +111,6 @@ void loop()
     // buzzer
     // tone(pin, freq (Hz), duration);
 
-    data.fsm_state = breathing_loop.getFsmState();
-    data.readback_mode = breathing_loop.getLabCycleMode();
-    data.pressure_buffer = analogRead(pin_pressure_buffer);
-    data.pressure_inhale = analogRead(pin_pressure_inhale);
-
     bool vin_air, vin_o2, vpurge ;
     float vinhale, vexhale;
     ValvesController *valves_controller = breathing_loop.getValvesController();
@@ -128,27 +120,36 @@ void loop()
     data.readback_valve_inhale = vinhale;
     data.readback_valve_exhale = vexhale;
     data.readback_valve_purge = vpurge;
-    // data.pressure_o2_supply = freeMemory() & 0xFFFF;
-    // data.pressure_o2_regulated = freeMemory() >> 16;
-    // TODO ; add to dataFormat
-    // data.readback_valve_atmosphere = vpurge;
+
+    data.fsm_state = breathing_loop.getFsmState();
+    data.readback_mode = breathing_loop.getVentilationMode();
+    readings readings_avgs = breathing_loop.getReadingAverages();
+    data.pressure_air_supply = readings_avgs.pressure_air_supply;
+    data.pressure_air_regulated = readings_avgs.pressure_air_regulated;
+    data.pressure_buffer = readings_avgs.pressure_buffer;
+    data.pressure_inhale = readings_avgs.pressure_inhale;
+    data.pressure_patient = readings_avgs.pressure_patient;
+    data.temperature_buffer = readings_avgs.temperature_buffer;
+    data.pressure_o2_supply = readings_avgs.pressure_o2_supply;
+    data.pressure_o2_regulated = readings_avgs.pressure_o2_regulated;
+    data.pressure_diff_patient = readings_avgs.pressure_diff_patient;
 
     breathing_loop.FSM_assignment();
     breathing_loop.FSM_breathCycle();
 
-    // writing data to sending ring buffer is defined by frequency
-    // TODO: programmable changing of the report_timeout
-    if (millis() > report_time + report_timeout) {
+    unsigned long tnow = millis();
+    if(tnow > report_time + report_timeout)
+    {
         plSend.setType(PAYLOAD_TYPE::DATA);
         plSend.setData(&data);
         comms.writePayload(plSend);
-        report_time = static_cast<uint32_t>(millis());
+        report_time = tnow;
     }
     // per cycle sender
     comms.sender();
-
     // per cycle receiver
     comms.receiver();
+
     if(comms.readPayload(plReceive)){
       if (plReceive.getType() == PAYLOAD_TYPE::CMD) {
           ui_loop.doCommand(plReceive.getCmd());
@@ -156,5 +157,5 @@ void loop()
       }
     }
 
-    breathing_loop.updatePressures(); //delay(1000/update_freq);
+    breathing_loop.updateReadings(); 
 }