Exemple #1
0
// Checks DVB devs state
void DVB::checkDVBDevs()
{
    IDevList devs =
        getFactory()->getResources()->getResourceByType(dev::DVB_ALL);
    std::for_each(devs.begin(), devs.end(),
                  boost::bind(&DVB::checkDVBDev, this, _1));
}
Exemple #2
0
// Process changes at the DB
// @param[in] msg - the input message
void DVB::processDB(const IMessagePtr& msg)

{
    BOOST_ASSERT(msg);

    // update DVB devs info from DB
    IDevList devs =
        getFactory()->getResources()->getResourceByType(dev::DVB_ALL);
    std::for_each(devs.begin(), devs.end(),
                  boost::bind(&IDev::update, _1));
}
Exemple #3
0
// Retrives a list with possible device names
const StringList BaseCommand::getDevNames()
{
    StringList result;
    IDevList list =
        getFactory()->getResources()->getResourceByType(dev::DVB_ALL);
    for (IDevList::iterator i = list.begin(); i != list.end(); i++)
    {
        result.push_back((*i)->getStringParam(dev::NAME));
    }

    return result;
}
Exemple #4
0
// Finds a not used dev
void StreamChannel::findFreeDev()
{
    IDevList devs = m_factory->getResources()->getResourceByType(m_type);
    IDevList::iterator find =
        std::find_if(devs.begin(), devs.end(),
                     boost::bind<bool>(CheckFreeDev(), _1,
                                       m_source.getValue()));
    if (find != devs.end())
    {
        m_dev = *find;
    }
}
Exemple #5
0
// Finds a dev by frequency
void StreamChannel::findWorkingDev(const int frequency)
{
    IDevList devs = m_factory->getResources()->getResourceByType(m_type);
    IDevList::iterator find =
        std::find_if(devs.begin(), devs.end(),
                     boost::bind<bool>(CheckDevByFrequency(), _1,
                                       frequency, m_source.getValue()));
    if (find != devs.end())
    {
        m_dev = *find;
    }
}
Exemple #6
0
// Retrives list of possible completions for a n's parameter
const cli::ParameterVector
ScanStart::getCompletion(const cli::ParameterVector& setparams)
{
    cli::ParameterVector res;

    if (setparams.empty())
    {
        // possible source names
        IDevList list =
            getFactory()->getResources()->getResourceByType(dev::DVB_ALL);
        for (IDevList::iterator i = list.begin(); i != list.end(); i++)
        {
            const std::string source = (*i)->getStringParam(dev::SOURCE);
            if (!source.empty())
            {
                const std::string source_name =
                    dvb::Utils::getSourceName(getFactory(),
                                              source);
                if (std::find(res.begin(), res.end(), source_name) ==
                    res.end())
                {
                    res.push_back(source_name);
                }
            }
        }
    }
    else if (setparams.size() == 1)
    {
        IDevPtr dev = getDev(setparams[0]);
        // possible frequency table
        StringList list;
        if (dev->getStringParam(dev::TYPE) == dev::DVB_T)
        {
            list = base::Utils::getFiles(dir::SHARE + "/scan/dvb-t");
        }
        else if (dev->getStringParam(dev::TYPE) == dev::DVB_S)
        {
            list = base::Utils::getFiles(dir::SHARE + "/scan/dvb-s");
        }

        for (StringList::iterator i = list.begin(); i != list.end(); i++)
        {
            const std::string fname = base::Utils::getFileName(*i);
            if (std::find(res.begin(), res.end(), fname) == res.end())
            {
                res.push_back(fname);
            }
        }
    }

    return res;
}
Exemple #7
0
// Retrive dev from parameter
const IDevPtr ScanStart::getDev(const std::string& source_name)
{
    IDevList list =
        getFactory()->getResources()->getResourceByType(dev::DVB_ALL);
    IDevList::iterator dev = std::find_if(
        list.begin(), list.end(),
        boost::bind<bool>(IsMatchResource(), getFactory(), _1, source_name));
    if (dev == list.end())
    {
        throw Exception(__FILE__, __LINE__,
                        "There is no any DVB adapter for '" +
                        source_name + "'");
    }

    return *dev;
}
Exemple #8
0
// Retrives a device by name
const IDevPtr BaseCommand::getDev(const std::string& name)
{
    IDevList list =
        getFactory()->getResources()->getResourceByType(dev::DVB_ALL);
    IDevList::const_iterator i = list.begin();
    for (;i != list.end(); i++)
    {
        if ((*i)->getStringParam(dev::NAME) == name)
            break;
    }

    if (i == list.end())
    {
        throw Exception(__FILE__, __LINE__,
                             "Could not find dev with name: " + name);
    }

    (*i)->update();

    return *i;
}
Exemple #9
0
// Processes SNMP request
const snmp::IDataPtr DVB::processSNMP(const snmp::IDataPtr& req)
{
    BOOST_ASSERT(req);
    snmp::ScalarPtr reqreal =
        boost::dynamic_pointer_cast<snmp::Scalar, snmp::IData>(req);
    BOOST_ASSERT(reqreal);

    const std::string reqstr = reqreal->getValue().toString();
    // support only snmp::GETSTATUSTABLE
    if (reqstr != snmp::GETSTATUSTABLE)
    {
        throw Exception(__FILE__, __LINE__,
                             "Unknown SNMP request: " + reqstr);

    }

    // create the response
    // table with data
    snmp::TablePtr table(new snmp::Table());

    IDevList devs =
        getFactory()->getResources()->getResourceByType(dev::DVB_ALL);
    u_int count = 0;
    for (IDevList::iterator dev = devs.begin(); dev != devs.end();
         dev++, count++)
    {
        // klkIndex      Counter32
        // klkCardName   DisplayString,
        // klkCardType   DisplayString,
        // klkAdapter    Integer32,
        // klkFrontend   Integer32,
        // klkHasLock    TruthValue,
        // klkSignal     Integer32,
        // klkSNR        Integer32,
        // klkBER        Integer32,
        // klkUNC        Counter32,
        // klkRate       Counter32


        snmp::TableRow row;
        try
        {
            row.push_back(count);
            row.push_back((*dev)->getStringParam(dev::NAME));
            const std::string type = (*dev)->getStringParam(dev::TYPE);
            if (type == dev::DVB_S)
            {
                row.push_back(DVB_S_NAME);
            }
            else if (type == dev::DVB_T)
            {
                row.push_back(DVB_T_NAME);
            }
            else if (type == dev::DVB_C)
            {
                row.push_back(DVB_C_NAME);
            }
            else
            {
                row.push_back(NOTAVAILABLE);
            }

            row.push_back((*dev)->getIntParam(dev::ADAPTER));
            row.push_back((*dev)->getIntParam(dev::FRONTEND));
            if ((*dev)->hasParam(dev::HASLOCK))
            {
                row.push_back((*dev)->getIntParam(dev::HASLOCK));
                row.push_back((*dev)->getIntParam(dev::SIGNAL));
                row.push_back((*dev)->getIntParam(dev::SNR));
                row.push_back((*dev)->getIntParam(dev::BER));
                row.push_back((*dev)->getIntParam(dev::UNC));
            }
            else
            {
                row.push_back(0);
                row.push_back(0);
                row.push_back(0);
                row.push_back(0);
                row.push_back(0);
            }

            if ((*dev)->hasParam(dev::RATE))
                row.push_back((*dev)->getIntParam(dev::RATE));
            else
                row.push_back(0);
        }
        catch(...)
        {
            row.clear();
            row.push_back(count);
            row.push_back(NOTAVAILABLE);
            row.push_back(NOTAVAILABLE);
            row.push_back(0);
            row.push_back(0);
            row.push_back(0);
            row.push_back(0);
            row.push_back(0);
            row.push_back(0);
            row.push_back(0);
            row.push_back(0);
        }
        table->addRow(row);
    }

    return table;
}