{
--size;
ePyObject caid = PyList_GET_ITEM(caid_list, size);
- if (!PyInt_Check(caid))
+ if (!PyLong_Check(caid))
{
char buf[255];
snprintf(buf, 255, "eDVBCIInterfaces::setDescrambleRules entry in caid list is not a long it is '%s'!!", PyObject_TypeStr(caid));
PyErr_SetString(PyExc_StandardError, buf);
return -1;
}
- int tmpcaid = PyInt_AsLong(caid);
+ int tmpcaid = PyLong_AsLong(caid);
if (tmpcaid > 0 && tmpcaid < 0x10000)
slot->possible_caids.insert(tmpcaid);
else
char tmp[255];
snprintf(tmp, 255, "eDVBCIInterfaces::readCICaIds try to get CAIds for CI Slot %d... but just %d slots are available", slotid, m_slots.size());
PyErr_SetString(PyExc_StandardError, tmp);
- return 0;
}
- int idx=0;
- ePyObject list = PyList_New(slot->possible_caids.size());
- for (caidSet::iterator it = slot->possible_caids.begin(); it != slot->possible_caids.end(); ++it)
- PyList_SET_ITEM(list, idx++, PyLong_FromLong(*it));
- return list;
+ else
+ {
+ int idx=0;
+ eDVBCICAManagerSession *ca_manager = slot->getCAManager();
+ const std::vector<uint16_t> *ci_caids = ca_manager ? &ca_manager->getCAIDs() : 0;
+ ePyObject list = PyList_New(ci_caids ? ci_caids->size() : 0);
+ if (ci_caids)
+ {
+ for (std::vector<uint16_t>::const_iterator it = ci_caids->begin(); it != ci_caids->end(); ++it)
+ PyList_SET_ITEM(list, idx++, PyLong_FromLong(*it));
+ }
+ return list;
+ }
+ return 0;
}
int eDVBCISlot::send(const unsigned char *data, size_t len)