summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--conflictcheck.c16
-rw-r--r--conflictcheck.h4
2 files changed, 19 insertions, 1 deletions
diff --git a/conflictcheck.c b/conflictcheck.c
index ced1009..7b30326 100644
--- a/conflictcheck.c
+++ b/conflictcheck.c
@@ -442,6 +442,7 @@ cList<cConflictCheckTime>* cConflictCheck::CreateConflictList(cList<cConflictChe
int cConflictCheck::ProcessCheckTime(cConflictCheckTime* checkTime)
{
if (!checkTime) return 0;
+
LogFile.Log(3,"check time %s", DAYDATETIME(checkTime->evaltime));
LogFile.Log(3,"detach stopping timers");
@@ -510,6 +511,19 @@ int cConflictCheck::ProcessCheckTime(cConflictCheckTime* checkTime)
}
#if APIVERSNUM >= 10500
+
+eModuleStatus cConflictCheck::CamSlotModuleStatus(cCamSlot *CamSlot)
+{
+ if (!CamSlot) return msNone;
+ if ((int)camSlotStatusArray.size() != CamSlots.Count())
+ for (cCamSlot *CamSlot = CamSlots.First(); CamSlot; CamSlot = CamSlots.Next(CamSlot))
+ camSlotStatusArray.push_back(CamSlot->ModuleStatus());
+ if (CamSlot->Index() < (int)camSlotStatusArray.size())
+ return camSlotStatusArray[CamSlot->Index()];
+ else
+ return msNone;
+}
+
int cConflictCheck::GetDevice(cConflictCheckTimerObj* TimerObj, bool* NeedsDetachReceivers)
{
int Priority = TimerObj->timer->Priority();
@@ -523,7 +537,7 @@ int cConflictCheck::GetDevice(cConflictCheckTimerObj* TimerObj, bool* NeedsDetac
if (Channel->Ca() >= CA_ENCRYPTED_MIN) {
for (cCamSlot *CamSlot = CamSlots.First(); CamSlot; CamSlot = CamSlots.Next(CamSlot)) {
SlotPriority[CamSlot->Index()] = MAXPRIORITY + 1; // assumes it can't be used
- if (CamSlot->ModuleStatus() == msReady) {
+ if (CamSlotModuleStatus(CamSlot) == msReady) {
if (CamSlot->ProvidesCa(Channel->Caids())) {
if (!ChannelCamRelations.CamChecked(Channel->GetChannelID(), CamSlot->SlotNumber())) {
SlotPriority[CamSlot->Index()] = CamSlot->Priority();
diff --git a/conflictcheck.h b/conflictcheck.h
index 545da8b..58df933 100644
--- a/conflictcheck.h
+++ b/conflictcheck.h
@@ -289,6 +289,7 @@ class cConflictCheck
int numDevices;
time_t maxCheck;
+ std::vector<eModuleStatus> camSlotStatusArray;
public:
int relevantConflicts;
int numConflicts;
@@ -308,6 +309,9 @@ class cConflictCheck
int ProcessCheckTime(cConflictCheckTime* checkTime);
bool TimerInConflict(cTimer*);
void EvaluateConflCheckCmd();
+#if APIVERSNUM >= 10500
+ eModuleStatus CamSlotModuleStatus(cCamSlot *CamSlot);
+#endif
};
#endif