Skip to content

Commit b164e1b

Browse files
author
Pawel Kazmierzewski
committed
Merge branch 'feature/MicroScenatios_contents' into develop
2 parents 9c79dcb + 5106189 commit b164e1b

File tree

7 files changed

+53
-85
lines changed

7 files changed

+53
-85
lines changed

src/scenarios/LucidDreamScenario.cpp

Lines changed: 0 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -34,81 +34,3 @@ LucidDreamScenario::LucidDreamScenario(const ncScenarioInitArgs *args)
3434
this->addTriggersToRefreshList({rem_detected_trigger});
3535

3636
}
37-
38-
39-
// ncUpdateOutput LucidDreamScenario::update(const ncScenarioInput *updateArgs) {
40-
// unsigned long long remDuration =
41-
// updateArgs->scenarioSpecific.lucidDream.timestamp - m_remStartTimestamp;
42-
43-
// if (m_remDetected)
44-
// if (remDuration >= 180000 &&
45-
// !m_remCounted) { // TODO: 180000 needs to be a parameter
46-
// m_remCounter++;
47-
// m_remCounted = true;
48-
// }
49-
50-
// if (updateArgs->scenarioSpecific.lucidDream.currentSleep_stage == REM) {
51-
// if (!m_remDetected) {
52-
// m_remStartTimestamp = updateArgs->scenarioSpecific.lucidDream.timestamp;
53-
// remDuration = 0;
54-
// m_remDetected = true;
55-
// m_remCounted = false;
56-
// } else {
57-
// }
58-
// } else {
59-
// if (m_remDetected) {
60-
// m_remDetected = false;
61-
// m_remCounted = false;
62-
// }
63-
// m_lucidLoaded = false;
64-
// }
65-
66-
// switch (m_remCounter) {
67-
// case 0:
68-
// case 1:
69-
// case 2:
70-
// break;
71-
// case 3:
72-
// if (remDuration >= 300000) { // TODO: 300000 needs to ba a parameter
73-
// if (!m_lucidLoaded) {
74-
// lucidDreamSequence(240000, 5, 5000, 1000,
75-
// updateArgs->scenarioSpecific.lucidDream.timestamp);
76-
// m_lucidLoaded = true;
77-
// return UPDATE_NEW_DATA;
78-
// }
79-
// }
80-
// break;
81-
// default:
82-
// if (remDuration >= 600000) { // TODO: 600000 needs to ba a parameter
83-
// if (!m_lucidLoaded) {
84-
// lucidDreamSequence(240000, 5, 5000, 1000,
85-
// updateArgs->scenarioSpecific.lucidDream.timestamp);
86-
// m_lucidLoaded = true;
87-
// return UPDATE_NEW_DATA;
88-
// }
89-
// }
90-
// break;
91-
// }
92-
93-
// return UPDATE_OK;
94-
// }
95-
96-
// void LucidDreamScenario::lucidDreamSequence(unsigned long length,
97-
// unsigned long numberOfActions,
98-
// unsigned long actionDuration,
99-
// unsigned long actionPeriod,
100-
// unsigned long timestamp) {
101-
// ncAtomicInstruction instruction;
102-
// uint8_t intensities[7];
103-
// std::memset(intensities, 63, sizeof(intensities));
104-
// size_t len;
105-
// for (unsigned long i = 0; i < numberOfActions; ++i) {
106-
// device_set_func(instruction.data, &len,
107-
// DEV_POWER_LED | DEV_RIGHT_RED_LED | DEV_LEFT_RED_LED,
108-
// FUN_TYPE_BLINK, intensities, actionDuration / 100,
109-
// actionPeriod / 100, 0);
110-
// instruction.time = timestamp;
111-
// pushInstruction(instruction);
112-
// timestamp += numberOfActions > 1 ? length / (numberOfActions - 1) : 0;
113-
// }
114-
// }

src/scenarios/SleepScenario.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,9 @@ SleepScenario::SleepScenario(const ncScenarioInitArgs *args)
6363

6464
// init and register hard wakeup
6565
auto hard_wakeup_scenario =
66-
std::shared_ptr<HardWakeupMicroScenario>(new HardWakeupMicroScenario());
67-
// [TODO] install triggers
66+
std::shared_ptr<HardWakeupMicroScenario>(
67+
new HardWakeupMicroScenario(ncWakeUpSequenceIntensity::WAKEUP_ALARM_MEDIUM));
68+
hard_wakeup_scenario->installActivationTrigger(absolute_wake_trigger);
6869
this->addScenarioWithPriority(hard_wakeup_scenario, kHardWakeupPriority);
6970

7071
// init and register smart wakeup
Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,35 @@
1+
#include "MicroScenarioSequenceLibrary.h"
12
#include "HardWakeupMicroScenario.h"
23

4+
HardWakeupMicroScenario::HardWakeupMicroScenario(ncWakeUpSequenceIntensity intensity):
5+
m_activationRegistered(false),
6+
m_intensity(intensity) {}
7+
38
HardWakeupMicroScenario::MicroScenarioUpdate
49
HardWakeupMicroScenario::update(bool did_activate, bool last_instructions) {
5-
// [TODO]
6-
return {};
10+
11+
/* tirgger fired sending sequence */
12+
if(did_activate && !m_activationRegistered){
13+
m_activationRegistered = true;
14+
return {MicroScenarioState::WANTS_FOCUS, {
15+
sequence::wakeUpSequence(static_cast<wakeUpSequenceIntensity>(m_intensity))}, {}};
16+
}
17+
18+
/* clean sequnce */
19+
if(last_instructions){
20+
if(m_activationRegistered){
21+
return {MicroScenarioState::WANTS_FOCUS, {sequence::killSequence()}, {}};
22+
}
23+
else{
24+
return {MicroScenarioState::FINISHED, {}, {}};
25+
}
26+
}
27+
28+
if(m_activationRegistered && !did_activate){
29+
m_activationRegistered = false;
30+
return {MicroScenarioState::WANTS_FOCUS, {
31+
sequence::wakeUpSequence(wakeUpSequenceIntensity::WU_ALARM_OFF)}, {}};
32+
}
33+
34+
return {MicroScenarioState::IDLE, {}, {}};
735
}

src/scenarios/microscenarios/HardWakeupMicroScenario.h

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,22 +16,38 @@
1616
#include "MicroScenario.h"
1717
#include "NeuroonApiCommons.h"
1818
#include "TimeTrigger.h"
19+
#include "NeuroonMaskScenariosApi.h"
1920
#include <vector>
2021

22+
typedef enum{
23+
WAKEUP_ALARM_SOFT = 0x01,
24+
WAKEUP_ALARM_MEDIUM,
25+
WAKEUP_ALARM_HARD,
26+
WAKEUP_ALARM_OFF
27+
}ncWakeUpSequenceIntensity;
28+
2129
class HardWakeupMicroScenario : public MicroScenario {
2230

2331
private:
2432
const int kHardwakeupTime = 1;
2533
const int kWokenUp = 2;
2634
const int kLostSignal = 3;
2735

36+
bool m_activationRegistered;
37+
ncWakeUpSequenceIntensity m_intensity;
38+
2839
public:
2940

41+
HardWakeupMicroScenario(ncWakeUpSequenceIntensity);
3042
virtual ~HardWakeupMicroScenario() {}
3143

3244
virtual MicroScenarioUpdate update(bool did_activate,
3345
bool last_instructions) override;
3446

47+
void installActivationTrigger(std::shared_ptr<const IScenarioTrigger> t) {
48+
return this->installTriggerForKey(t, kHardwakeupTime);
49+
}
50+
3551
};
3652

3753
#endif /* !HARDWAKEUPMICROSCENARIO_H */

src/scenarios/microscenarios/MicroScenarioSequenceLibrary.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@ namespace sequence{
252252
return instructions;
253253
}
254254

255-
std::vector<ncAtomicInstruction> wakeUpSequence(ncWakeUpSequenceIntensity mode){
255+
std::vector<ncAtomicInstruction> wakeUpSequence(wakeUpSequenceIntensity mode){
256256
switch(mode){
257257
case WU_ALARM_SOFT: return getSoftAlarm();
258258
case WU_ALARM_MEDIUM: return getMediumAlarm();

src/scenarios/microscenarios/MicroScenarioSequenceLibrary.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,15 @@ typedef enum{
1818
WU_ALARM_MEDIUM,
1919
WU_ALARM_HARD,
2020
WU_ALARM_OFF
21-
}ncWakeUpSequenceIntensity;
21+
}wakeUpSequenceIntensity;
2222

2323
namespace sequence{
2424

2525
std::vector<ncAtomicInstruction> descendSequence(unsigned int);
2626
std::vector<ncAtomicInstruction> parametrizedSinusLikeSequence(unsigned int, unsigned int,
2727
unsigned int, unsigned int, unsigned int);
2828
std::vector<ncAtomicInstruction> artificialDawnSequence(unsigned int);
29-
std::vector<ncAtomicInstruction> wakeUpSequence(ncWakeUpSequenceIntensity);
29+
std::vector<ncAtomicInstruction> wakeUpSequence(wakeUpSequenceIntensity);
3030
std::vector<ncAtomicInstruction> lucidDreamSequence();
3131
std::vector<ncAtomicInstruction> circadianShiftSequence();
3232
std::vector<ncAtomicInstruction> noContactSequence();

src/scenarios/microscenarios/SmartWakeupMicroScenario.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#include "SmartWakeupMicroScenario.h"
2+
#include "MicroScenarioSequenceLibrary.h"
23

34
SmartWakeupMicroScenario::MicroScenarioUpdate
45
SmartWakeupMicroScenario::update(bool did_activate, bool last_instructions) {

0 commit comments

Comments
 (0)