Skip to content

Commit d9a0009

Browse files
committed
Add test chen circuit pressure too high to start inspiration
1 parent 0a5525f commit d9a0009

File tree

4 files changed

+118
-57
lines changed

4 files changed

+118
-57
lines changed

src/application/tasks/ventilation.c

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,6 @@
2424
*/
2525
static int start_current_breath_cycle = 0;
2626

27-
/*
28-
* the time the current breath cycle was supposed to start
29-
*/
30-
// static int breath_cycle_duration = 125; //to do replace this value by the real one
31-
3227
/*
3328
* Phase of the ventilation
3429
* This should always be one of
@@ -50,6 +45,10 @@ uint32_t get_circuit_pressure() {
5045

5146

5247
void ventilation(){
48+
/*Attention there is no initialisation of start_current_breath_cycle for the
49+
* ventilation to start as soon as the code is called this will lead to a
50+
* a waiting period of breath_cycle_duration for the first ventilation preiod
51+
*/
5352
switch (ventilation_phase) {
5453
case EXPIRATORY_PAUSE:
5554
start_inspiration();
@@ -76,13 +75,13 @@ void start_inspiration(){
7675
uint32_t current_time = get_current_time();
7776
uint32_t RR = 15;
7877
uint32_t breath_cycle_duration;
79-
get_respiratory_rate(& RR);
78+
get_respiratory_rate(&RR);
8079
breath_cycle_duration = 60000 / RR;
8180
if (current_time >= start_current_breath_cycle + breath_cycle_duration) {
82-
start_current_breath_cycle = current_time;
8381
if (get_circuit_pressure() > MAX_CIRCUIT_PRESSURE_FOR_OPENING_INS_VALVE_CSP) {
8482
dss();
8583
} else {
84+
start_current_breath_cycle = current_time;
8685
open_inspiratory_valve();
8786
ventilation_phase = INSPIRATION;
8887
}

test/test_runner.c

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,22 @@
22
#include "test_util.h"
33

44
int main(int argc, char **argv) {
5+
test(getCircuitPressure_validValues_returnsMeanPressure,
6+
"getCircuitPressure_validValues_returnsMeanPressure");
57
test(startInspiration_afterOneInspiration_openInspiratoryValve,
6-
"startInspiration_afterOneInspiration_openInspiratoryValve");
8+
"startInspiration_afterOneInspiration_openInspiratoryValve");
79
test(startInspiration_afterOneInspiration_setsVentilationPhaseToInspiration,
8-
"startInspiration_afterOneInspiration_setsVentilationPhaseToInspiration");
10+
"startInspiration_afterOneInspiration_setsVentilationPhaseToInspiration");
911
test(startInspiration_afterTwoInspirations_updatesStartCurrentBreathCycle,
10-
"startInspiration_afterTwoInspirations_updatesStartCurrentBreathCycle");
12+
"startInspiration_afterTwoInspirations_updatesStartCurrentBreathCycle");
1113
test(startInspiration_duringInspiration_doesNotUpdateStartOfcurrentBreathCycle,
12-
"startInspiration_duringInspiration_doesNotUpdateStartOfcurrentBreathCycle");
14+
"startInspiration_duringInspiration_doesNotUpdateStartOfcurrentBreathCycle");
1315
test(startInspiration_duringInspiration_doesNotChangeVentilationPhase,
14-
"startInspiration_duringInspiration_doesNotChangeVentilationPhase"),
15-
test(startInspiration_duringInspiration_doesNotopenInspiratoryValve,
16-
"startInspiration_duringInspiration_doesNotopenInspiratoryValve");
17-
test(getCircuitPressure_validValues_returnsMeanPressure,
18-
"getCircuitPressure_validValues_returnsMeanPressure");
16+
"startInspiration_duringInspiration_doesNotChangeVentilationPhase");
17+
test(startInspiration_duringInspiration_doesNotopenInspiratoryValve,
18+
"startInspiration_duringInspiration_doesNotopenInspiratoryValve");
19+
test(startInspiration_circuitPressureToHigh_DoesNotStartCurrentBreathCycle,
20+
"startInspiration_circuitPressureToHigh_DoesNotStartCurrentBreathCycle");
1921

2022
int result = print_result();
2123
return !result;

test/ventilation_test.c

Lines changed: 98 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -17,22 +17,41 @@ void reset_to_inspiration_start();
1717
int get_ventilation_phase();
1818
int get_start_current_breath_cycle();
1919

20+
int getCircuitPressure_validValues_returnsMeanPressure() {
21+
uint32_t inspiratory[2] = {35, 53};
22+
uint32_t expiratory[2] = {40, 53};
23+
24+
status_t status[2] = {STATUS_OK, STATUS_OK};
25+
26+
set_inspiratory_pressure(inspiratory, status);
27+
set_expiratory_pressure(expiratory, status);
28+
29+
uint32_t circuit_pressure = get_circuit_pressure();
30+
//The integer division of an odd number by two is the floor value
31+
assertTrue(circuit_pressure == 37);
32+
33+
circuit_pressure = get_circuit_pressure();
34+
//The integer divion of an even number by two is as expected
35+
assertTrue(circuit_pressure == 53);
36+
37+
}
38+
2039
int startInspiration_afterOneInspiration_openInspiratoryValve() {
2140
//initialize the function get_respiratory_rate
22-
uint32_t RR[1] = {7500000};
41+
uint32_t RR[1] = {20};
2342
status_t status[1] = {STATUS_OK};
2443
set_respiratory_rate(RR, status);
2544

2645
//initialize the function get_current_time
27-
int times[1] = {RR[0] + 1};
46+
int breath_cycle_duration = 60000/RR[0];
47+
int times[1] = {breath_cycle_duration + 1};
2848
set_current_time(times);
2949

3050
//initialize the function to get circuit pressure
31-
uint32_t inspiratory[2] = {12, 53};
32-
uint32_t expiratory[2] = {14, 53};
33-
status_t status_pressure[2] = {STATUS_OK, STATUS_OK};
34-
set_inspiratory_pressure(inspiratory, status_pressure);
35-
set_expiratory_pressure(expiratory, status_pressure);
51+
uint32_t inspiratory[1] = {12};
52+
uint32_t expiratory[1] = {14};
53+
set_inspiratory_pressure(inspiratory, status);
54+
set_expiratory_pressure(expiratory, status);
3655

3756
//reinitialize the system to be sure that the valve wasn't previously open
3857
close_inspiratory_valve();
@@ -46,20 +65,20 @@ int startInspiration_afterOneInspiration_openInspiratoryValve() {
4665

4766
int startInspiration_afterOneInspiration_setsVentilationPhaseToInspiration() {
4867
//initialize the function get_respiratory_rate
49-
uint32_t RR[1] = {7500000};
68+
uint32_t RR[1] = {20};
5069
status_t status[1] = {STATUS_OK};
5170
set_respiratory_rate(RR, status);
5271

5372
//initialize the function get_current_time
54-
int times[1] = {RR[0] * 2 + 2};
73+
int breath_cycle_duration = 60000/RR[0];
74+
int times[1] = {(breath_cycle_duration + 1) * 2};
5575
set_current_time(times);
5676

5777
//initialize the function to get circuit pressure
58-
uint32_t inspiratory[2] = {12, 53};
59-
uint32_t expiratory[2] = {14, 53};
60-
status_t status_pressure[2] = {STATUS_OK, STATUS_OK};
61-
set_inspiratory_pressure(inspiratory, status_pressure);
62-
set_expiratory_pressure(expiratory, status_pressure);
78+
uint32_t inspiratory[1] = {12};
79+
uint32_t expiratory[1] = {14};
80+
set_inspiratory_pressure(inspiratory, status);
81+
set_expiratory_pressure(expiratory, status);
6382

6483
reset_to_inspiration_start();
6584

@@ -70,17 +89,23 @@ int startInspiration_afterOneInspiration_setsVentilationPhaseToInspiration() {
7089
}
7190

7291
int startInspiration_afterTwoInspirations_updatesStartCurrentBreathCycle() {
73-
//initialize the function get_current_time
74-
//initialize the function get_respiratory_rate
75-
uint32_t RR[1] = {7500000};
92+
//initialize the function get_respiratory_rate
93+
uint32_t RR[1] = {20};
7694
status_t status[1] = {STATUS_OK};
7795
set_respiratory_rate(RR, status);
7896

7997
//initialize the function get_current_time
80-
int time = RR[0] * 3 + 3;
98+
int breath_cycle_duration = 60000/RR[0];
99+
int time = (breath_cycle_duration + 1) * 3;
81100
int times[1] = {time};
82101
set_current_time(times);
83102

103+
//initialize the function to get circuit pressure
104+
uint32_t inspiratory[1] = {12};
105+
uint32_t expiratory[1] = {14};
106+
set_inspiratory_pressure(inspiratory, status);
107+
set_expiratory_pressure(expiratory, status);
108+
84109
reset_to_inspiration_start();
85110

86111
start_inspiration();
@@ -94,16 +119,15 @@ int startInspiration_duringInspiration_doesNotopenInspiratoryValve() {
94119
set_current_time (times);
95120

96121
//initialize the function get_respiratory_rate
97-
uint32_t RR[1] = {7500000};
122+
uint32_t RR[1] = {20};
98123
status_t status[1] = {STATUS_OK};
99124
set_respiratory_rate(RR, status);
100125

101126
//initialize the function to get circuit pressure
102-
uint32_t inspiratory[2] = {35, 53};
103-
uint32_t expiratory[2] = {40, 53};
104-
status_t status_pressure[2] = {STATUS_OK, STATUS_OK};
105-
set_inspiratory_pressure(inspiratory, status_pressure);
106-
set_expiratory_pressure(expiratory, status_pressure);
127+
uint32_t inspiratory[1] = {12};
128+
uint32_t expiratory[1] = {14};
129+
set_inspiratory_pressure(inspiratory, status);
130+
set_expiratory_pressure(expiratory, status);
107131

108132
close_inspiratory_valve();
109133
reset_to_inspiration_start();
@@ -114,27 +138,21 @@ int startInspiration_duringInspiration_doesNotopenInspiratoryValve() {
114138
assertTrue(inspiratory_valve_status == VALVE_CLOSE);
115139
}
116140

117-
int getCircuitPressure_validValues_returnsMeanPressure() {
118-
uint32_t inspiratory[2] = {35, 53};
119-
uint32_t expiratory[2] = {40, 53};
141+
int startInspiration_duringInspiration_doesNotChangeVentilationPhase() {
142+
int times[1] = {0};
143+
set_current_time (times);
120144

121-
status_t status[2] = {STATUS_OK, STATUS_OK};
145+
//initialize the function get_respiratory_rate
146+
uint32_t RR[1] = {20};
147+
status_t status[1] = {STATUS_OK};
148+
set_respiratory_rate(RR, status);
122149

150+
//initialize the function to get circuit pressure
151+
uint32_t inspiratory[1] = {12};
152+
uint32_t expiratory[1] = {14};
123153
set_inspiratory_pressure(inspiratory, status);
124154
set_expiratory_pressure(expiratory, status);
125155

126-
uint32_t circuit_pressure = get_circuit_pressure();
127-
assertTrue(circuit_pressure == 37);
128-
129-
circuit_pressure = get_circuit_pressure();
130-
assertTrue(circuit_pressure == 53);
131-
132-
}
133-
134-
int startInspiration_duringInspiration_doesNotChangeVentilationPhase() {
135-
int times[1] = {0};
136-
set_current_time (times);
137-
138156
reset_to_inspiration_start();
139157

140158
start_inspiration();
@@ -148,6 +166,46 @@ int startInspiration_duringInspiration_doesNotUpdateStartOfcurrentBreathCycle()
148166
int times[1] = {time};
149167
set_current_time (times);
150168

169+
//initialize the function get_respiratory_rate
170+
uint32_t RR[1] = {20};
171+
status_t status[1] = {STATUS_OK};
172+
set_respiratory_rate(RR, status);
173+
174+
//initialize the function to get circuit pressure
175+
uint32_t inspiratory[1] = {12};
176+
uint32_t expiratory[1] = {14};
177+
set_inspiratory_pressure(inspiratory, status);
178+
set_expiratory_pressure(expiratory, status);
179+
180+
reset_to_inspiration_start();
181+
182+
start_inspiration();
183+
184+
int time_of_start_current_breath_cycle = get_start_current_breath_cycle();
185+
assertTrue(time_of_start_current_breath_cycle != time);
186+
}
187+
188+
int startInspiration_circuitPressureToHigh_DoesNotStartCurrentBreathCycle() {
189+
//initialize the function get_current_time
190+
//initialize the function get_respiratory_rate
191+
uint32_t RR[1] = {20};
192+
status_t status[1] = {STATUS_OK};
193+
set_respiratory_rate(RR, status);
194+
195+
196+
197+
//initialize the function get_current_time
198+
int breath_cycle_duration = 60000/RR[0];
199+
int time = (breath_cycle_duration + 1) * 4;
200+
int times[1] = {time};
201+
set_current_time(times);
202+
203+
//initialize the function to get circuit pressure
204+
uint32_t inspiratory[1] = {100};
205+
uint32_t expiratory[1] = {100};
206+
set_inspiratory_pressure(inspiratory, status);
207+
set_expiratory_pressure(expiratory, status);
208+
151209
reset_to_inspiration_start();
152210

153211
start_inspiration();

test/ventilation_test.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
*
44
*/
55

6+
int getCircuitPressure_validValues_returnsMeanPressure();
7+
68
int startInspiration_afterOneInspiration_openInspiratoryValve();
79

810
int startInspiration_duringInspiration_doesNotopenInspiratoryValve();
@@ -15,4 +17,4 @@ int startInspiration_afterTwoInspirations_updatesStartCurrentBreathCycle();
1517

1618
int startInspiration_duringInspiration_doesNotUpdateStartOfcurrentBreathCycle();
1719

18-
int getCircuitPressure_validValues_returnsMeanPressure();
20+
int startInspiration_circuitPressureToHigh_DoesNotStartCurrentBreathCycle();

0 commit comments

Comments
 (0)