diff options
author | Dan McGee <dpmcgee@gmail.com> | 2011-11-15 09:58:15 -0600 |
---|---|---|
committer | Dan McGee <dpmcgee@gmail.com> | 2011-11-15 09:58:15 -0600 |
commit | 461c432e67075511112ade9a6adf19b6fea7a6e0 (patch) | |
tree | ee2c92ea5853cf4a6112f4bda87e0bd80a5028b8 | |
parent | f660bec1459cc7d55cffcf024381c9e8af4bc0f2 (diff) | |
download | onkyocontrol-461c432e67075511112ade9a6adf19b6fea7a6e0.tar.gz onkyocontrol-461c432e67075511112ade9a6adf19b6fea7a6e0.zip |
Simplify some of the zone sleep code
Signed-off-by: Dan McGee <dpmcgee@gmail.com>
-rw-r--r-- | command.c | 9 | ||||
-rw-r--r-- | onkyo.c | 44 |
2 files changed, 25 insertions, 28 deletions
@@ -471,15 +471,14 @@ static int handle_fakesleep(struct receiver *rcvr, return(-1); if(!arg || strcmp(arg, "status") == 0) { - struct timeval when = { 0, 0 }; + time_t when = 0; if(zone == '2') - when = rcvr->zone2_sleep; + when = rcvr->zone2_sleep.tv_sec; else if(zone == '3') - when = rcvr->zone3_sleep; + when = rcvr->zone3_sleep.tv_sec; - mins = when.tv_sec > now.tv_sec ? - (when.tv_sec - now.tv_sec + 59) / 60 : 0; + mins = when > now.tv_sec ? (when - now.tv_sec + 59) / 60 : 0; } else if(strcmp(arg, "off") == 0) { /* clear out any future receiver set sleep time */ if(zone == '2') { @@ -921,6 +921,8 @@ int main(int argc, char *argv[]) /* add our receiver list */ r = receivers; while(r) { + struct timeval diff; + if(r->fd < 0) { r = r->next; continue; @@ -929,39 +931,35 @@ int main(int argc, char *argv[]) maxfd = r->fd > maxfd ? r->fd : maxfd; /* do we need to queue a power off command for sleep? */ - if(r->zone2_sleep.tv_sec || r->zone3_sleep.tv_sec) { - struct timeval diff; - if(r->zone2_sleep.tv_sec) { - diff_timeval(&r->zone2_sleep, &now, &diff); - if(diff.tv_sec >= 0 && diff.tv_usec > 0) { - timeoutval = min_timeval(&timeoutval, &diff); - } else { - process_command(r, "zone2power off"); - r->zone2_sleep.tv_sec = 0; - r->zone2_sleep.tv_usec = 0; - } + if(r->zone2_sleep.tv_sec) { + diff_timeval(&r->zone2_sleep, &now, &diff); + if(diff.tv_sec >= 0 && diff.tv_usec > 0) { + timeoutval = min_timeval(&timeoutval, &diff); + } else { + process_command(r, "zone2power off"); + r->zone2_sleep.tv_sec = 0; + r->zone2_sleep.tv_usec = 0; } - if(r->zone3_sleep.tv_sec) { - diff_timeval(&r->zone3_sleep, &now, &diff); - if(diff.tv_sec >= 0 && diff.tv_usec > 0) { - timeoutval = min_timeval(&timeoutval, &diff); - } else { - process_command(r, "zone3power off"); - r->zone3_sleep.tv_sec = 0; - r->zone3_sleep.tv_usec = 0; - } + } + if(r->zone3_sleep.tv_sec) { + diff_timeval(&r->zone3_sleep, &now, &diff); + if(diff.tv_sec >= 0 && diff.tv_usec > 0) { + timeoutval = min_timeval(&timeoutval, &diff); + } else { + process_command(r, "zone3power off"); + r->zone3_sleep.tv_sec = 0; + r->zone3_sleep.tv_usec = 0; } } /* check for write possibility if we have commands in queue */ if(r->queue) { - struct timeval tv; - if(can_send_command(&(r->last_cmd), &now, &tv)) { + if(can_send_command(&(r->last_cmd), &now, &diff)) { FD_SET(r->fd, &writefds); } else { /* We want the smallest timeout, so replace the * existing if new is smaller. */ - timeoutval = min_timeval(&timeoutval, &tv); + timeoutval = min_timeval(&timeoutval, &diff); } } |