summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan McGee <dpmcgee@gmail.com>2011-11-15 09:58:15 -0600
committerDan McGee <dpmcgee@gmail.com>2011-11-15 09:58:15 -0600
commit461c432e67075511112ade9a6adf19b6fea7a6e0 (patch)
treeee2c92ea5853cf4a6112f4bda87e0bd80a5028b8
parentf660bec1459cc7d55cffcf024381c9e8af4bc0f2 (diff)
downloadonkyocontrol-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.c9
-rw-r--r--onkyo.c44
2 files changed, 25 insertions, 28 deletions
diff --git a/command.c b/command.c
index bd82551..fe926f2 100644
--- a/command.c
+++ b/command.c
@@ -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') {
diff --git a/onkyo.c b/onkyo.c
index 498165d..5589533 100644
--- a/onkyo.c
+++ b/onkyo.c
@@ -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);
}
}