sequence is working
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user