@startuml
start
partition init {
:setup serial connection;
:setup Bluetooth
 * init server background task
 * add hook to capture votes;
:setup ballot
 * resolve nextVotingTime
 * clear votes;
:print "ready";
}
while (repeat every few millisecond)
partition loop {
:resolve currentTime;
if (currentTime >= nextVotingTime?) equals (yes) then
:count  and print ballot;
switch (voterCount?)
case (< 5)
:print "ALARM: Too few voters!";
kill
case (<= 8)
:resolve votesPositive;
if (votesPositive < 5 ?) equals (yes) then
:print "ALARM: Bad water quality!";
kill
endif
:setup ballot;
case (> 8)
:print "ALARM: Too many voters!";
kill
endswitch
endif
}
endwhile
-[hidden]->
kill
@enduml