zapit/capmt: prepare merge from ddt

Origin commit data
------------------
Commit: e2fc19bdf7
Author: vanhofen <vanhofen@gmx.de>
Date: 2019-12-16 (Mon, 16 Dec 2019)

Origin message was:
------------------
- zapit/capmt: prepare merge from ddt
This commit is contained in:
vanhofen
2019-12-16 23:54:19 +01:00
parent df4e2d17f4
commit fd895bfd12

View File

@@ -360,93 +360,94 @@ bool CCamManager::SetMode(t_channel_id channel_id, enum runmode mode, bool start
#if ! HAVE_COOL_HARDWARE #if ! HAVE_COOL_HARDWARE
// CI // CI
if (mode && !start) { if (mode && !start) {
INFO("\033[33m (mode && !start) do we really need this?\033[0m");
}
#endif #endif
CaIdVector caids; CaIdVector caids;
cCA::GetInstance()->GetCAIDS(caids); cCA::GetInstance()->GetCAIDS(caids);
//uint8_t list = CCam::CAPMT_FIRST; //uint8_t list = CCam::CAPMT_FIRST;
uint8_t list = CCam::CAPMT_ONLY; uint8_t list = CCam::CAPMT_ONLY;
if (channel_map.size() > 1) if (channel_map.size() > 1)
list = CCam::CAPMT_ADD; list = CCam::CAPMT_ADD;
#ifdef BOXMODEL_CS_HD2 #ifdef BOXMODEL_CS_HD2
int ci_use_count = 0; int ci_use_count = 0;
for (it = channel_map.begin(); it != channel_map.end(); ++it) for (it = channel_map.begin(); it != channel_map.end(); ++it)
{ {
cam = it->second; cam = it->second;
channel = CServiceManager::getInstance()->FindChannel(it->first); channel = CServiceManager::getInstance()->FindChannel(it->first);
if (tunerno >= 0 && tunerno == cDemux::GetSource(cam->getSource())) { if (tunerno >= 0 && tunerno == cDemux::GetSource(cam->getSource())) {
cCA::GetInstance()->SetTS((CA_DVBCI_TS_INPUT)tunerno); cCA::GetInstance()->SetTS((CA_DVBCI_TS_INPUT)tunerno);
ci_use_count++;
break;
} else if (filter_channels) {
if (channel && channel->bUseCI)
ci_use_count++; ci_use_count++;
} else break;
ci_use_count++; } else if (filter_channels) {
} if (channel && channel->bUseCI)
if (ci_use_count == 0) { ci_use_count++;
INFO("CI: not used, disabling TS"); } else
cCA::GetInstance()->SetTS(CA_DVBCI_TS_INPUT_DISABLED); ci_use_count++;
} }
if (ci_use_count == 0) {
INFO("CI: not used, disabling TS");
cCA::GetInstance()->SetTS(CA_DVBCI_TS_INPUT_DISABLED);
}
#endif #endif
for (it = channel_map.begin(); it != channel_map.end(); /*++it*/) for (it = channel_map.begin(); it != channel_map.end(); /*++it*/)
{ {
cam = it->second; cam = it->second;
channel = CServiceManager::getInstance()->FindChannel(it->first); channel = CServiceManager::getInstance()->FindChannel(it->first);
++it; ++it;
if(!channel) if(!channel)
continue; continue;
#if 0 #if 0
if (it == channel_map.end()) if (it == channel_map.end())
list |= CCam::CAPMT_LAST; // FIRST->ONLY or MORE->LAST list |= CCam::CAPMT_LAST; // FIRST->ONLY or MORE->LAST
#endif #endif
cam->makeCaPmt(channel, false, list, caids); cam->makeCaPmt(channel, false, list, caids);
int len; int len;
unsigned char * buffer = channel->getRawPmt(len); unsigned char * buffer = channel->getRawPmt(len);
#if HAVE_COOL_HARDWARE #if HAVE_COOL_HARDWARE
cam->sendCaPmt(channel->getChannelID(), buffer, len, CA_SLOT_TYPE_SMARTCARD); cam->sendCaPmt(channel->getChannelID(), buffer, len, CA_SLOT_TYPE_SMARTCARD);
#endif #endif
if (tunerno >= 0 && tunerno != cDemux::GetSource(cam->getSource())) { if (tunerno >= 0 && tunerno != cDemux::GetSource(cam->getSource())) {
INFO("CI: configured tuner %d do not match %d, skip [%s]", tunerno, cam->getSource(), channel->getName().c_str()); INFO("CI: configured tuner %d do not match %d, skip [%s]", tunerno, cam->getSource(), channel->getName().c_str());
} else if (filter_channels && !channel->bUseCI) { } else if (filter_channels && !channel->bUseCI) {
INFO("CI: filter enabled, CI not used for [%s]", channel->getName().c_str()); INFO("CI: filter enabled, CI not used for [%s]", channel->getName().c_str());
} else if(channel->scrambled) { } else if(channel->scrambled) {
useCI = true; useCI = true;
INFO("CI: use CI for [%s]", channel->getName().c_str()); INFO("CI: use CI for [%s]", channel->getName().c_str());
#if HAVE_COOL_HARDWARE #if HAVE_COOL_HARDWARE
cam->sendCaPmt(channel->getChannelID(), buffer, len, CA_SLOT_TYPE_CI); cam->sendCaPmt(channel->getChannelID(), buffer, len, CA_SLOT_TYPE_CI);
#endif #endif
} }
//list = CCam::CAPMT_MORE; //list = CCam::CAPMT_MORE;
#if ! HAVE_COOL_HARDWARE #if ! HAVE_COOL_HARDWARE
if((oldmask != newmask) || force_update || (oldmask == newmask && mode && start)) if((oldmask != newmask) || force_update || (oldmask == newmask && mode && start))
{ {
//temp debug output //temp debug output
if((oldmask != newmask) || force_update) if((oldmask != newmask) || force_update)
INFO("\033[33m (oldmask != newmask) || force_update)\033[0m"); INFO("\033[33m (oldmask != newmask) || force_update)\033[0m");
else else
INFO("\033[33m (oldmask == newmask && mode && start)\033[0m"); INFO("\033[33m (oldmask == newmask && mode && start)\033[0m");
if(useCI) if(useCI)
{ {
cam->sendCaPmt(channel->getChannelID(), buffer, len, CA_SLOT_TYPE_CI, channel->scrambled, channel->camap, 0, true); cam->sendCaPmt(channel->getChannelID(), buffer, len, CA_SLOT_TYPE_CI, channel->scrambled, channel->camap, 0, true);
}
else
{
INFO("\033[33m no CI needed\033[0m");
//no CI needed
cam->sendCaPmt(channel->getChannelID(), buffer, len, CA_SLOT_TYPE_CI, false /*channel->scrambled*/, channel->camap, mode, start);
}
} }
else
{
INFO("\033[33m no CI needed\033[0m");
//no CI needed
cam->sendCaPmt(channel->getChannelID(), buffer, len, CA_SLOT_TYPE_CI, false /*channel->scrambled*/, channel->camap, mode, start);
}
}
#endif #endif
}
#if ! HAVE_COOL_HARDWARE
} }
#endif
return true; return true;
} }