Ticket #5561: dvb_snr_through_proto.diff

File dvb_snr_through_proto.diff, 5.1 KB (added by anonymous, 16 years ago)
  • mythtv/libs/libmythtv/libmythtv.pro

     
    140140HEADERS += channeleditor.h          channelsettings.h
    141141HEADERS += previewgenerator.h       transporteditor.h
    142142HEADERS += importicons.h
     143HEADERS += dvbsignalmeter.h
    143144
    144145SOURCES += programinfo.cpp          proglist.cpp
    145146SOURCES += RingBuffer.cpp           avfringbuffer.cpp
     
    162163SOURCES += channeleditor.cpp        channelsettings.cpp
    163164SOURCES += previewgenerator.cpp     transporteditor.cpp
    164165SOURCES += importicons.cpp
     166SOURCES += dvbsignalmeter.cpp
    165167
    166168# DiSEqC
    167169HEADERS += diseqc.h                 diseqcsettings.h
  • mythtv/libs/libmythtv/dvbsignalmeter.cpp

     
     1// -*- Mode: c++ -*-
     2
     3// C includes
     4#include <cstdio>
     5#include <pthread.h>
     6#include <unistd.h>
     7
     8
     9// MythTV includes - General
     10#include "mythcontext.h"
     11#include "cardutil.h"
     12
     13#include "dvbchannel.h"
     14#include "channel.h"
     15#include "compat.h"
     16
     17#include "dvbsignalmeter.h"
     18
     19
     20int getDVBSignalMeterValues(uint cardid, uint &sig, uint &snr)
     21{
     22    QString device = CardUtil::GetVideoDevice(cardid);
     23    if (device.isEmpty())
     24    {
     25        VERBOSE(VB_IMPORTANT, QString("No Device for cardid=%1").arg(cardid));
     26        return 0;
     27    }
     28
     29    QString card_type = CardUtil::GetRawCardType(cardid);
     30
     31    DVBChannel *channel;
     32   
     33    if ("DVB" == card_type)
     34    {
     35        channel = new DVBChannel(device.toInt());
     36    }
     37    else
     38    {
     39        VERBOSE(VB_IMPORTANT, QString("Not a DVB card; cardid=%1").arg(cardid));
     40        return 0;
     41    }
     42
     43
     44    // explicitly set the cardid
     45    channel->SetCardID(cardid);
     46
     47    // If the backend is running this may fail...
     48    if (!channel->Open())
     49    {
     50        VERBOSE(VB_IMPORTANT, QString("DVB Channel could not be opened; cardid=%1").arg(cardid));
     51        return 0;
     52    }
     53
     54    // Get info from card
     55    sig = (uint) (channel->GetSignalStrength() * 65535);
     56    snr = (uint) (channel->GetSNR() * 65535);
     57
     58    VERBOSE(VB_IMPORTANT,QString("DVBSignalMeter: sig=%1 snr=%2").arg(sig).arg(snr));
     59
     60
     61    channel->Close();
     62    delete channel;
     63   
     64    return 1;
     65}
     66
  • mythtv/libs/libmythtv/dvbsignalmeter.h

     
     1int getDVBSignalMeterValues(uint cardid, uint &sig, uint &snr);
  • mythtv/programs/mythbackend/mainserver.h

     
    133133    void HandleQueryMemStats(PlaybackSock *pbs);
    134134    void HandleBlockShutdown(bool blockShutdown, PlaybackSock *pbs);
    135135   
     136    void HandleDVBSignalQuery(QStringList &tokens, PlaybackSock *pbs);
     137
     138   
    136139    void SendResponse(MythSocket *pbs, QStringList &commands);
    137140
    138141    void getGuideDataThrough(QDateTime &GuideDataThrough);
  • mythtv/programs/mythbackend/mainserver.cpp

     
    4141#include "libmyth/mythcontext.h"
    4242#include "libmyth/util.h"
    4343#include "libmyth/mythdbcon.h"
     44#include "libmythtv/dvbsignalmeter.h"
    4445
    4546#include "mainserver.h"
    4647#include "scheduler.h"
     
    5253#include "storagegroup.h"
    5354#include "compat.h"
    5455
     56
     57
    5558/** Milliseconds to wait for an existing thread from
    5659 *  process request thread pool.
    5760 */
     
    561564        else
    562565            HandleSettingQuery(tokens, pbs);
    563566    }
     567    else if (command == "QUERY_DVBSIGNAL")
     568    {
     569        if (tokens.size() != 2)
     570            VERBOSE(VB_IMPORTANT, "Bad QUERY_DVBSIGNAL");
     571        else
     572            HandleDVBSignalQuery(tokens, pbs);
     573    }
    564574    else if (command == "SET_SETTING")
    565575    {
    566576        if (tokens.size() != 4)
     
    35233533    return;
    35243534}
    35253535
     3536void MainServer::HandleDVBSignalQuery(QStringList &tokens, PlaybackSock *pbs)
     3537{
     3538// Format: HandleDVBSignalQuery <cardid>
     3539// Returns ok/fail signal strength , SNR  string
     3540
     3541    MythSocket *pbssock = NULL;
     3542    if (pbs)
     3543        pbssock = pbs->getSocket();
     3544
     3545    QString cardidstr = tokens[1];
     3546
     3547    QStringList retlist;
     3548   
     3549    uint cardid = (uint) cardidstr.toInt();
     3550    uint sig = 0, snr = 0;
     3551    int ret = getDVBSignalMeterValues( cardid, sig, snr );
     3552
     3553    if(ret == 1)
     3554        retlist << "ok";
     3555    else
     3556        retlist << "fail";
     3557   
     3558    retlist << QString("%1").arg(sig);
     3559    retlist << QString("%1").arg(snr);
     3560   
     3561    if (pbssock)
     3562        SendResponse(pbssock, retlist);
     3563
     3564    return;
     3565}
     3566
     3567
    35263568void MainServer::HandleSetSetting(QStringList &tokens,
    35273569                                  PlaybackSock *pbs)
    35283570{