This is an automatic generated email to let you know that the following patch 
were queued at the 
http://git.linuxtv.org/cgit.cgi/v4l-utils.git tree:

Subject: cec-compliance: adapter test fixes
Author:  Hans Verkuil <hans.verk...@cisco.com>
Date:    Wed Aug 15 11:14:11 2018 +0200

- Don't attempt to configure the adapter as a TV if the
  physical address isn't 0.0.0.0.
- Add a sleep(1) after testing the logical address handling: the
  last test there is in non-blocking mode, so you need to wait
  a bit until that non-blocking configuration actually finished.

Signed-off-by: Hans Verkuil <hans.verk...@cisco.com>

 utils/cec-compliance/cec-test-adapter.cpp | 24 ++++++++++++++++--------
 1 file changed, 16 insertions(+), 8 deletions(-)

---

http://git.linuxtv.org/cgit.cgi/v4l-utils.git/commit/?id=cadc762b735af62f73b684280ccb2d7c787a7d1c
diff --git a/utils/cec-compliance/cec-test-adapter.cpp 
b/utils/cec-compliance/cec-test-adapter.cpp
index 80263b6872ad..9f47038cb345 100644
--- a/utils/cec-compliance/cec-test-adapter.cpp
+++ b/utils/cec-compliance/cec-test-adapter.cpp
@@ -103,9 +103,11 @@ int testAdapLogAddrs(struct node *node)
                CEC_OP_PRIM_DEVTYPE_TUNER,
                CEC_OP_PRIM_DEVTYPE_AUDIOSYSTEM
        };
-       static const __u8 all_dev_types =
+       static const __u8 all_dev_types[2] = {
                CEC_OP_ALL_DEVTYPE_TV | CEC_OP_ALL_DEVTYPE_RECORD |
-               CEC_OP_ALL_DEVTYPE_AUDIOSYSTEM;
+               CEC_OP_ALL_DEVTYPE_AUDIOSYSTEM,
+               CEC_OP_ALL_DEVTYPE_RECORD | CEC_OP_ALL_DEVTYPE_AUDIOSYSTEM,
+       };
        static const __u8 features[12] = {
                0x90, 0x00, 0x8e, 0x00,
                0xff, 0xff, 0xff, 0xff,
@@ -146,21 +148,26 @@ int testAdapLogAddrs(struct node *node)
 
        fail_on_test(doioctl(node, CEC_ADAP_G_PHYS_ADDR, &pa));
        fail_on_test(pa != node->phys_addr);
+       unsigned skip_tv = pa ? 1 : 0;
+       unsigned available_log_addrs = node->available_log_addrs;
 
+       if (skip_tv && available_log_addrs == CEC_MAX_LOG_ADDRS)
+               available_log_addrs--;
        memset(&laddrs, 0, sizeof(laddrs));
        strcpy(laddrs.osd_name, "Compliance");
-       laddrs.num_log_addrs = node->available_log_addrs;
+       laddrs.num_log_addrs = available_log_addrs;
        laddrs.cec_version = laddrs.num_log_addrs > 2 ?
                CEC_OP_CEC_VERSION_1_4: CEC_OP_CEC_VERSION_2_0;
-       for (unsigned i = 0; i < CEC_MAX_LOG_ADDRS; i++) {
-               laddrs.log_addr_type[i] = la_types[i];
-               laddrs.primary_device_type[i] = prim_dev_types[i];
-               laddrs.all_device_types[i] = all_dev_types;
+
+       for (unsigned i = 0; i < CEC_MAX_LOG_ADDRS - skip_tv; i++) {
+               laddrs.log_addr_type[i] = la_types[i + skip_tv];
+               laddrs.primary_device_type[i] = prim_dev_types[i + skip_tv];
+               laddrs.all_device_types[i] = all_dev_types[skip_tv];
                memcpy(laddrs.features[i], features, sizeof(features));
        }
 
        fail_on_test(doioctl(node, CEC_ADAP_S_LOG_ADDRS, &laddrs));
-       fail_on_test(laddrs.num_log_addrs != node->available_log_addrs);
+       fail_on_test(laddrs.num_log_addrs != available_log_addrs);
        fail_on_test(laddrs.log_addr_mask == 0);
        for (unsigned i = 0; i < laddrs.num_log_addrs; i++) {
                fail_on_test(laddrs.log_addr[i] == CEC_LOG_ADDR_INVALID);
@@ -990,6 +997,7 @@ void testAdapter(struct node &node, struct cec_log_addrs 
&laddrs,
        }
        printf("\tCEC_ADAP_G/S_LOG_ADDRS: %s\n", ok(testAdapLogAddrs(&node)));
        fcntl(node.fd, F_SETFL, fcntl(node.fd, F_GETFL) & ~O_NONBLOCK);
+       sleep(1);
        if (node.caps & CEC_CAP_LOG_ADDRS) {
                struct cec_log_addrs clear = { };
 

_______________________________________________
linuxtv-commits mailing list
linuxtv-commits@linuxtv.org
https://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to