Permalink
Browse files

bug fix

Wenn mehrere POWER_GROUP_STATE_REPLAY's kommen, wird in Telican die falsche Gruppe und der falsche Status angezeigt
  • Loading branch information...
RealMerlin committed Jan 28, 2019
1 parent cc771f3 commit a451c98488d71a61745765e025d2ce2695d61c2e
Showing with 11 additions and 4 deletions.
  1. +11 −4 telican/lampe_command.cc
@@ -49,16 +49,23 @@ bool lampe_command::exec(const string &line)
i != lampen.end(); i++)
{
// Lampen-Gruppe besorgen:
uint8_t gruppe = global_installation_data.lampe_gruppe_by_name(*i);
uint8_t gruppe_query = global_installation_data.lampe_gruppe_by_name(*i);

uint8_t status;
uint8_t timer;
m_tcon.send_POWER_GROUP_STATE_QUERY(m_src,
HCAN_MULTICAST_CONTROL,gruppe);
m_tcon.recv_POWER_GROUP_STATE_REPLAY(0, m_src, &gruppe, &status, &timer);
HCAN_MULTICAST_CONTROL,gruppe_query);

uint8_t gruppe_replay;
// Da hier theoretisch auch das Replay des vorherigen Querys kommen kann,
// wird der Recive Vorgang solange ausgefuehrt bis die richtige Gruppe kommt.
do {
m_tcon.recv_POWER_GROUP_STATE_REPLAY(0, m_src,
&gruppe_replay, &status, &timer);
} while (gruppe_query != gruppe_replay);


cout << setw(4) << setfill(' ') << (int)gruppe
cout << setw(4) << setfill(' ') << (int)gruppe_replay
<< " " << (status != 0 ? "ein" : " - ")
<< " " << *i << endl;
}

0 comments on commit a451c98

Please sign in to comment.