sequence is working

This commit is contained in:
2018-04-22 18:47:46 +02:00
parent 265fb457ac
commit 9dcb33bb7b
3 changed files with 22 additions and 7 deletions

View File

@@ -63,9 +63,10 @@ bool Clock::is_equal_to_timer(const Timer &a_timer)
the_compared_time = *localtime(&the_time); the_compared_time = *localtime(&the_time);
the_wday = the_compared_time.tm_wday; the_wday = the_compared_time.tm_wday;
#if 0
printf ("=>Timer: (%.2d h %.2d) Now: (%.2d h %.2d) week day:%d\n", a_timer.get_hour(),a_timer.get_minute(), printf ("=>Timer: (%.2d h %.2d) Now: (%.2d h %.2d) week day:%d\n", a_timer.get_hour(),a_timer.get_minute(),
the_compared_time.tm_hour, the_compared_time.tm_min, the_compared_time.tm_wday); the_compared_time.tm_hour, the_compared_time.tm_min, the_compared_time.tm_wday);
#endif
the_compared_time.tm_hour = a_timer.get_hour(); the_compared_time.tm_hour = a_timer.get_hour();
the_compared_time.tm_min = a_timer.get_minute(); the_compared_time.tm_min = a_timer.get_minute();
@@ -93,7 +94,7 @@ bool Clock::is_expired(const Sequence &a_sequence)
time_t the_time = time(NULL); time_t the_time = time(NULL);
the_compared_time = *localtime(&the_time); the_compared_time = *localtime(&the_time);
printf ("=>Now: (%.2d h %.2d)\n", the_compared_time.tm_hour, the_compared_time.tm_min); // printf ("=>Now: (%.2d h %.2d)\n", the_compared_time.tm_hour, the_compared_time.tm_min);
the_compared_time.tm_hour = a_sequence.get_timer().get_hour(); the_compared_time.tm_hour = a_sequence.get_timer().get_hour();
@@ -103,7 +104,7 @@ bool Clock::is_expired(const Sequence &a_sequence)
the_diff = difftime(the_time, the_expired); the_diff = difftime(the_time, the_expired);
printf ("%.f seconds of diff between current time and Timer time.\n", the_diff); // printf ("%.f seconds of diff between current time and Timer time.\n", the_diff);
if (the_diff == 0) if (the_diff == 0)
return true; return true;

View File

@@ -27,6 +27,8 @@
#include <json-c/json.h> #include <json-c/json.h>
#include "devices/devices-manager.h"
#include "domo.h" #include "domo.h"
#include "sequence.h" #include "sequence.h"
@@ -213,6 +215,8 @@ void Sequence::start(DevicesManager *a_device_manager)
m_is_in_progress = true; m_is_in_progress = true;
m_current_action = 0; m_current_action = 0;
m_current_duration = 0; m_current_duration = 0;
a_device_manager->set_state(m_actions[m_current_action].get_capability(), m_actions[m_current_action].get_device_id(), true);
} }
/*! ---------------------------------------------------------------------------- /*! ----------------------------------------------------------------------------
@@ -232,5 +236,16 @@ void Sequence::stop(void)
*/ */
bool Sequence::switch_to_next_action(DevicesManager *a_device_manager) bool Sequence::switch_to_next_action(DevicesManager *a_device_manager)
{ {
printf("switch_to_next_action current: %d, size: %ld\n", m_current_action, m_actions.size());
if ((m_current_action + 1) >= m_actions.size())
{
printf("sequence is done.\n");
return false;
}
m_current_duration += m_actions[m_current_action].get_duration();
// TODO STOP DEVICE MANAGER
m_current_action++;
// TODO START DEVICE MANAGER
return true; return true;
} }

View File

@@ -197,13 +197,13 @@ int SequencesManager::expire(void)
{ {
std::vector<Sequence>::iterator the_seq_it; std::vector<Sequence>::iterator the_seq_it;
Clock the_clock; Clock the_clock;
fprintf(stderr, "**** >> Manage timers....\n"); // fprintf(stderr, "**** >> Manage timers....\n");
for (the_seq_it = m_sequences.begin(); the_seq_it != m_sequences.end(); the_seq_it++) for (the_seq_it = m_sequences.begin(); the_seq_it != m_sequences.end(); the_seq_it++)
{ {
if ((*the_seq_it).is_active()) if ((*the_seq_it).is_active())
{ {
printf("sequence %d active.\n", (*the_seq_it).get_id()); // printf("sequence %d active.\n", (*the_seq_it).get_id());
if (!(*the_seq_it).is_in_progress()) if (!(*the_seq_it).is_in_progress())
{ {
// should the sequence start ? // should the sequence start ?
@@ -220,11 +220,10 @@ int SequencesManager::expire(void)
if (the_clock.is_expired((*the_seq_it))) if (the_clock.is_expired((*the_seq_it)))
{ {
if (!(*the_seq_it).switch_to_next_action(m_devices_manager)) { if (!(*the_seq_it).switch_to_next_action(m_devices_manager)) {
fprintf(stdout, "Sequence Stopt\n"); fprintf(stdout, "Sequence Stop\n");
(*the_seq_it).stop(); (*the_seq_it).stop();
} }
} }
} }
} }
} }