From patchwork Wed Aug 24 10:31:18 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Johan Fjeldtvedt X-Patchwork-Id: 9297483 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 0B10A607D0 for ; Wed, 24 Aug 2016 10:45:18 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E7C2C28630 for ; Wed, 24 Aug 2016 10:45:17 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id DCB0F28EF0; Wed, 24 Aug 2016 10:45:17 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_HI, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8557C28630 for ; Wed, 24 Aug 2016 10:45:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753548AbcHXKpP (ORCPT ); Wed, 24 Aug 2016 06:45:15 -0400 Received: from mail-wm0-f65.google.com ([74.125.82.65]:34062 "EHLO mail-wm0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754144AbcHXKpM (ORCPT ); Wed, 24 Aug 2016 06:45:12 -0400 Received: by mail-wm0-f65.google.com with SMTP id q128so2043560wma.1 for ; Wed, 24 Aug 2016 03:44:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=qOsvSpHXgX/af6ompoBrEeKnqFNlktTljODg329dvPQ=; b=qXI+AyaBoDN8FwV+8ra1O6gt+wJma+b5OVgJzpnrO3EBP1M8RzbA2c+/s/tyQusqIB Snh+OWWbhxTnJHd4p+fwwsc+ciD3kQnFZrQPgfe/cqwelcCRdb0/D69qTpRKWrNugHLR 9Ec/iGT7kKFYN3xaIvvo7hHZMNaljttW5pLiB+m62yN7V2Hgbs2ZiKuIzvgbVWzX2/Fm z0zALPtdVn9jch8qKgeLPS3KdiVS5wqnwraLSoO4qIgeJHm2/QwcVDQMm5SX32o8Rvpx PcagTWujdjcWfrYuzR5Q2Dm9/zCw0E4oa5XIsar2voiUhyZMN12XdTxbWzUw9MzpiaOe pasQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=qOsvSpHXgX/af6ompoBrEeKnqFNlktTljODg329dvPQ=; b=gJCnZnD7TJoxdWb/MESFEVWlN2v3GgkzBT2GvHwrzDAHEBW0Jr+Bg9Acj0ZmDrA7/6 yyXmim+yc2jEHXm7JvdfF+eQ8EqabKGLjaX3K7cZCiCXfzykPGSyIhBOKXPmOc36IZRF v09iXInQ+4r4ZuI7OdPCs5Pvk+0AQcew1y61vxLN72XqkCjdXsgKrPFMkMynWr5hFLE/ zta71/NHXo94OkAfQrO5ts9JzqV18uU8ya5CW/U+q9qBm/xT9tqVS78D1t+m8I6u9ASn mUieQS/lNjFFU6iViM7DK92o/JOmaffVgVKufDBbI03eKnac8pnOAVdp7bNhoSSJUMqw 1obA== X-Gm-Message-State: AEkoous3hzQc+6TlDezwCKREO4EyHz/cj1xwxjHcmPTmXBRGBoO+3pyPfLt0fxfFQu6tNg== X-Received: by 10.28.26.69 with SMTP id a66mr24934519wma.8.1472034710470; Wed, 24 Aug 2016 03:31:50 -0700 (PDT) Received: from johan-ThinkPad-T460s.cisco.com ([2001:420:44c1:a022:25a3:7e52:4f80:ef86]) by smtp.gmail.com with ESMTPSA id yz6sm9249079wjb.35.2016.08.24.03.31.49 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 24 Aug 2016 03:31:50 -0700 (PDT) From: Johan Fjeldtvedt To: linux-media@vger.kernel.org Cc: Johan Fjeldtvedt Subject: [PATCH] cec tools: exit if device is disconnected Date: Wed, 24 Aug 2016 12:31:18 +0200 Message-Id: <1472034678-13813-2-git-send-email-jaffe1@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1472034678-13813-1-git-send-email-jaffe1@gmail.com> References: <1472034678-13813-1-git-send-email-jaffe1@gmail.com> Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP If the CEC device is disconnected, ioctl will return ENODEV. This is checked for in cec-ctl (when monitoring), cec-follower and cec-compliance, to make these exit when the CEC device disappears. Signed-off-by: Johan Fjeldtvedt --- utils/cec-compliance/cec-compliance.h | 9 +++++++-- utils/cec-ctl/cec-ctl.cpp | 7 ++++++- utils/cec-follower/cec-processing.cpp | 14 ++++++++++++-- 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/utils/cec-compliance/cec-compliance.h b/utils/cec-compliance/cec-compliance.h index cb236fd..6b180c1 100644 --- a/utils/cec-compliance/cec-compliance.h +++ b/utils/cec-compliance/cec-compliance.h @@ -334,10 +334,15 @@ static inline bool transmit_timeout(struct node *node, struct cec_msg *msg, unsigned timeout = 2000) { struct cec_msg original_msg = *msg; + int res; msg->timeout = timeout; - if (doioctl(node, CEC_TRANSMIT, msg) || - !(msg->tx_status & CEC_TX_STATUS_OK)) + res = doioctl(node, CEC_TRANSMIT, msg); + if (res == ENODEV) { + printf("No device.\n"); + exit(1); + } + if (res || !(msg->tx_status & CEC_TX_STATUS_OK)) return false; if (((msg->rx_status & CEC_RX_STATUS_OK) || (msg->rx_status & CEC_RX_STATUS_FEATURE_ABORT)) diff --git a/utils/cec-ctl/cec-ctl.cpp b/utils/cec-ctl/cec-ctl.cpp index 2d0d9e5..10efcbd 100644 --- a/utils/cec-ctl/cec-ctl.cpp +++ b/utils/cec-ctl/cec-ctl.cpp @@ -1945,7 +1945,12 @@ skip_la: struct cec_msg msg = { }; __u8 from, to; - if (doioctl(&node, CEC_RECEIVE, &msg)) + res = doioctl(&node, CEC_RECEIVE, &msg); + if (res == ENODEV) { + printf("No device.\n"); + break; + } + if (res) continue; from = cec_msg_initiator(&msg); diff --git a/utils/cec-follower/cec-processing.cpp b/utils/cec-follower/cec-processing.cpp index 34d65e4..bbe80c5 100644 --- a/utils/cec-follower/cec-processing.cpp +++ b/utils/cec-follower/cec-processing.cpp @@ -979,7 +979,12 @@ void testProcessing(struct node *node) if (FD_ISSET(fd, &ex_fds)) { struct cec_event ev; - if (doioctl(node, CEC_DQEVENT, &ev)) + res = doioctl(node, CEC_DQEVENT, &ev); + if (res == ENODEV) { + printf("No device.\n"); + break; + } + if (res) continue; log_event(ev); if (ev.event == CEC_EVENT_STATE_CHANGE) { @@ -995,7 +1000,12 @@ void testProcessing(struct node *node) if (FD_ISSET(fd, &rd_fds)) { struct cec_msg msg = { }; - if (doioctl(node, CEC_RECEIVE, &msg)) + res = doioctl(node, CEC_RECEIVE, &msg); + if (res == ENODEV) { + printf("No device.\n"); + break; + } + if (res) continue; __u8 from = cec_msg_initiator(&msg);