GCC Code Coverage Report
Directory: lib/ Exec Total Coverage
File: lib/ValveHandler/ValveHandler.cpp Lines: 42 44 95.5 %
Date: 2020-08-11 11:38:58 Branches: 14 19 73.7 %

Line Branch Exec Source
1
//
2
// Created by nilsb on 02.12.19.
3
//
4
5
#include "ValveHandler.h"
6
#include <Arduino.h>
7
#include <functional>
8
#include <utility>
9
10
static const long switchTime = 5000;
11
12
4
void ValveHandler::openValve() {
13
4
    logging.trace("openValve start");
14

4
    if (valveState == VALVESTATE::OPENING || valveState == VALVESTATE::OPEN) {
15
1
        logging.trace("openValve stop -- not changing state");
16
1
        return;
17
    }
18
3
    if (valveState == VALVESTATE::CLOSING) {
19
2
        logging.trace("openValve: stopping close of valve");
20
2
        digitalWrite(valveClosePin, LOW);
21
    }
22
3
    valveState = VALVESTATE::OPENING;
23
3
    digitalWrite(valveOpenPin, HIGH);
24
3
    callbackHandler->startCallbackTimer(switchTime, ValveHandler::callbackMethod, this);
25
3
    logging.trace("openValve stop");
26
}
27
28
4
void ValveHandler::closeValve() {
29

4
    if (valveState == VALVESTATE::CLOSING || valveState == VALVESTATE::CLOSED) {
30
1
        logging.trace("closeValve stop -- not changing state");
31
1
        return;
32
    }
33
3
    if (valveState == VALVESTATE::OPENING) {
34
2
        logging.trace("closeValve: stopping open of valve");
35
2
        digitalWrite(valveOpenPin, LOW);
36
    }
37
3
    valveState = VALVESTATE::CLOSING;
38
3
    digitalWrite(valveClosePin, HIGH);
39
3
    callbackHandler->startCallbackTimer(switchTime, ValveHandler::callbackMethod, this);
40
}
41
42
5
VALVESTATE ValveHandler::getStatus() {
43
5
    return valveState;
44
}
45
46
2
void ValveHandler::callBack() {
47
2
    logging.trace("callBack start");
48
2
    switch (valveState) {
49
        case VALVESTATE::OPENING:
50
1
            digitalWrite(valveOpenPin, LOW);
51
1
            valveState = VALVESTATE::OPEN;
52
1
            break;
53
        case VALVESTATE::CLOSING:
54
1
            digitalWrite(valveClosePin, LOW);
55
1
            valveState = VALVESTATE::CLOSED;
56
1
            break;
57
        default:
58
            logging.error("Calling callback with unusable State: %s", valveState);
59
            break;
60
    }
61
2
    logging.trace("callBack stop");
62
2
}
63
64
2
void ValveHandler::callbackMethod(void *instance) {
65
2
    auto *handler = static_cast<ValveHandler *>(instance);
66
2
    handler->callBack();
67
68
2
}
69
70
1
ValveHandler::ValveHandler(uint8_t valueOpenPin, uint8_t valveClosePin,
71
                           std::shared_ptr<AbstractCallBackHandler> callbackHandler,
72
                           Logging &log) :
73
        valveOpenPin(valueOpenPin),
74
        valveClosePin(valveClosePin),
75
1
        callbackHandler(std::move(callbackHandler)),
76
        logging(log),
77

5
        valveState(VALVESTATE::UNKNOWN){}
78
79