X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FSocket%2FProtocols%2FDVB%2FDVBFrontendHandle.cc;h=d53ef98543abbb1d9a8b7c1c471339eef8f20c5a;hb=HEAD;hp=032b5dbc2acdab40cba5c11498f4f7f386a4dcbe;hpb=7661548b20e6c7627f54bff87e0758396fd523ef;p=senf.git diff --git a/senf/Socket/Protocols/DVB/DVBFrontendHandle.cc b/senf/Socket/Protocols/DVB/DVBFrontendHandle.cc index 032b5db..d53ef98 100644 --- a/senf/Socket/Protocols/DVB/DVBFrontendHandle.cc +++ b/senf/Socket/Protocols/DVB/DVBFrontendHandle.cc @@ -2,24 +2,29 @@ // // Copyright (C) 2007 // Fraunhofer Institute for Open Communication Systems (FOKUS) -// Competence Center NETwork research (NET), St. Augustin, GERMANY -// Anton Gillert -// Thorsten Horstmann // -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. +// The contents of this file are subject to the Fraunhofer FOKUS Public License +// Version 1.0 (the "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// http://senf.berlios.de/license.html // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. +// The Fraunhofer FOKUS Public License Version 1.0 is based on, +// but modifies the Mozilla Public License Version 1.1. +// See the full license text for the amendments. // -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the -// Free Software Foundation, Inc., -// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// Software distributed under the License is distributed on an "AS IS" basis, +// WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +// for the specific language governing rights and limitations under the License. +// +// The Original Code is Fraunhofer FOKUS code. +// +// The Initial Developer of the Original Code is Fraunhofer-Gesellschaft e.V. +// (registered association), Hansastraße 27 c, 80686 Munich, Germany. +// All Rights Reserved. +// +// Contributor(s): +// Thorsten Horstmann +// Anton Gillert /** \file \brief DVBFrontendHandle non-inline non-template implementation */ @@ -48,7 +53,7 @@ prefix_ void senf::DVBFrontendSocketProtocol::init_client(unsigned short adapter string devFrontend = str( boost::format("/dev/dvb/adapter%d/frontend%d") % adapter % device); int f = open(devFrontend.c_str(), flags); if (f < 0) - SENF_THROW_SYSTEM_EXCEPTION("")<< "Could not open frontend device of DVB adapter " << devFrontend << "."; + SENF_THROW_SYSTEM_EXCEPTION("Could not open frontend device of DVB adapter ") << devFrontend << "."; fd(f); } @@ -69,7 +74,7 @@ prefix_ void senf::DVBFrontendSocketProtocol::tune(const struct dvb_frontend_par { // tuning if (::ioctl(fd(), FE_SET_FRONTEND, &frontend) ) - SENF_THROW_SYSTEM_EXCEPTION("") << "ioctl FE_SET_FRONTEND failed. Socket should initialized with r/w permissions.";; + SENF_THROW_SYSTEM_EXCEPTION("ioctl FE_SET_FRONTEND failed. Socket should initialized with r/w permissions."); } prefix_ void senf::DVBFrontendSocketProtocol::tuneDVB_T(unsigned int frequency, @@ -168,7 +173,7 @@ prefix_ dvb_frontend_info senf::DVBFrontendSocketProtocol::getInfo() ::memset(&info, 0, sizeof(struct dvb_frontend_info)); if (::ioctl(fd(), FE_GET_INFO, &info)) { - SENF_THROW_SYSTEM_EXCEPTION("") << "Could not read on fildescriptor."; + SENF_THROW_SYSTEM_EXCEPTION("Could not read on fildescriptor."); } return info; } @@ -200,7 +205,7 @@ prefix_ dvb_frontend_event senf::DVBFrontendSocketProtocol::getEvent() const{ struct dvb_frontend_event ev ; ::memset(&ev, 0, sizeof(struct dvb_frontend_event)); - +std::cerr<<"DVBFrontendSocketProtocol::getEvent\n"; if (::ioctl(fd(), FE_GET_EVENT, &ev)) { switch(errno) { case EBADF: @@ -209,6 +214,9 @@ prefix_ dvb_frontend_event senf::DVBFrontendSocketProtocol::getEvent() const{ case EWOULDBLOCK: SENF_THROW_SYSTEM_EXCEPTION( "No event pending and device is in nonblocking mode." ); break; + case EINTR: + // TODO: ignore EINTR. which might be caused by watchdog signals. This is possibly not the solution, but should work + break; default: SENF_THROW_SYSTEM_EXCEPTION("Errno: ") << errno; }