-
Notifications
You must be signed in to change notification settings - Fork 0
/
AutoPositionManager.h
62 lines (50 loc) · 1.54 KB
/
AutoPositionManager.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include "LoopManager.h"
#ifndef AutoPositionManager_h
#define AutoPositionManager_h
class AutoPositionManager: public Looper {
private:
DataStore *dataStore;
TimeHandler *timeHandler;
StepperManager *stepperManager;
public:
AutoPositionManager(DataStore *dataStore, TimeHandler *timeHandler,
StepperManager *stepperManager) {
this->dataStore = dataStore;
this->timeHandler = timeHandler;
this->stepperManager = stepperManager;
}
void doLoop() {
//TODO state dependant ?
// Serial.println("ZZZ");
if (currentState == SCREEN_MAIN) {
//TODO eviter trop de calcul
//ex : enregistrer upTime et downTime lors de la saisie
DateTime nowDate = timeHandler->getCurrentDate();
DateTime upDate = DateTime(nowDate.year(), nowDate.month(),
nowDate.day(), dataStore->getUpHours(), dataStore->getUpMinutes(), 0);
DateTime downDate = DateTime(nowDate.year(), nowDate.month(),
nowDate.day(), dataStore->getDownHours(), dataStore->getDownMinutes(),
0);
//
long nowTime = nowDate.secondstime();
long upTime = upDate.secondstime();
long downTime = downDate.secondstime();
//
bool shouldBeUp = nowTime > upTime && nowTime < downTime;
//
// Serial.println("AAA");
// Serial.println(shouldBeUp);
// Serial.println(dataStore->getCurrentPosition());
// Serial.println(dataStore->getUpPosition());
// Serial.println(dataStore->getDownPosition());
//
if (shouldBeUp) {
stepperManager->stepTo(dataStore->getUpPosition());
}
else{
stepperManager->stepTo(dataStore->getDownPosition());
}
}
}
};
#endif