diff options
author | Hans Verkuil <hverkuil-cisco@xs4all.nl> | 2021-08-25 13:05:21 +0200 |
---|---|---|
committer | Hans Verkuil <hverkuil-cisco@xs4all.nl> | 2021-08-25 13:05:21 +0200 |
commit | 22466798f9a9044fa20ae3bb367d9fc29d37e054 (patch) | |
tree | 5748b9d2ab9c4ce65c71781711c38b2f32f6201e | |
parent | 58f4f974944c182890a09d040418dafa9a431e45 (diff) | |
download | v4l-utils-22466798f9a9044fa20ae3bb367d9fc29d37e054.tar.gz |
cec-compliance: fix broken timer tests
If the remote device doesn't support the Timer Feature, then do
not attempt to test for timer errors or overlapped timers.
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
-rw-r--r-- | utils/cec-compliance/cec-compliance.h | 1 | ||||
-rw-r--r-- | utils/cec-compliance/cec-test-tuner-record-timer.cpp | 9 |
2 files changed, 9 insertions, 1 deletions
diff --git a/utils/cec-compliance/cec-compliance.h b/utils/cec-compliance/cec-compliance.h index 08365e07..2ef5a1f5 100644 --- a/utils/cec-compliance/cec-compliance.h +++ b/utils/cec-compliance/cec-compliance.h @@ -147,6 +147,7 @@ struct remote { __u8 mute; bool has_aud_rate; bool has_deck_ctl; + bool has_analogue_timer; __u8 bcast_sys; __u8 dig_bcast_sys; bool has_rec_tv; diff --git a/utils/cec-compliance/cec-test-tuner-record-timer.cpp b/utils/cec-compliance/cec-test-tuner-record-timer.cpp index 1ba5a135..f52c52dd 100644 --- a/utils/cec-compliance/cec-test-tuner-record-timer.cpp +++ b/utils/cec-compliance/cec-test-tuner-record-timer.cpp @@ -680,7 +680,7 @@ static int send_timer_error(struct node *node, unsigned me, unsigned la, __u8 da fail_on_test(!transmit_timeout(node, &msg, 10000)); fail_on_test(timed_out(&msg)); if (cec_msg_status_is_abort(&msg)) - fail_on_test(abort_reason(&msg) != CEC_OP_ABORT_INVALID_OP); + fail_on_test(abort_reason(&msg) != CEC_OP_ABORT_UNRECOGNIZED_OP); else fail_on_test(!timer_has_error(msg)); @@ -759,6 +759,7 @@ static int timer_prog_set_analog_timer(struct node *node, unsigned me, unsigned if (cec_msg_status_is_abort(&msg)) return OK_PRESUMED; fail_on_test(timer_status_is_valid(msg)); + node->remote[la].has_analogue_timer = true; return OK; } @@ -908,6 +909,9 @@ static int timer_errors(struct node *node, unsigned me, unsigned la, bool intera { struct cec_msg msg; + if (!node->remote[la].has_analogue_timer) + return OK_NOT_SUPPORTED; + /* Day error: November 31, at 6:00 am, for 1 hr. */ fail_on_test(send_timer_error(node, me, la, 31, Nov, 6, 0, 1, 0, CEC_OP_REC_SEQ_ONCE_ONLY)); @@ -973,6 +977,9 @@ static int timer_overlap_warning(struct node *node, unsigned me, unsigned la, bo time_t tomorrow = node->current_time + (24 * 60 * 60); struct tm *t = localtime(&tomorrow); + if (!node->remote[la].has_analogue_timer) + return OK_NOT_SUPPORTED; + /* No overlap: set timer for tomorrow at 8:00 am for 2 hr. */ cec_msg_init(&msg, me, la); cec_msg_set_analogue_timer(&msg, true, t->tm_mday, t->tm_mon + 1, 8, 0, 2, 0, |