{
--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
{
int idx=0;
eDVBCICAManagerSession *ca_manager = slot->getCAManager();
- const std::vector<uint16_t> &ci_caids = ca_manager->getCAIDs();
- ePyObject list = PyList_New(ci_caids.size());
- for (std::vector<uint16_t>::const_iterator it = ci_caids.begin(); it != ci_caids.end(); ++it)
- PyList_SET_ITEM(list, idx++, PyLong_FromLong(*it));
+ 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 eDVBCIInterfaces::setCIClockRate(int slotid, int rate)
+{
+ eDVBCISlot *slot = getSlot(slotid);
+ if (slot)
+ return slot->setClockRate(rate);
+ return -1;
+}
+
int eDVBCISlot::send(const unsigned char *data, size_t len)
{
int res=0;
return 0;
}
+int eDVBCISlot::setClockRate(int rate)
+{
+ char buf[64];
+ snprintf(buf, 64, "/proc/stb/tsmux/ci%d_tsclk", slotid);
+ FILE *ci = fopen(buf, "wb");
+ if (ci)
+ {
+ if (rate)
+ fprintf(ci, "high");
+ else
+ fprintf(ci, "normal");
+ fclose(ci);
+ return 0;
+ }
+ return -1;
+}
+
eAutoInitP0<eDVBCIInterfaces> init_eDVBCIInterfaces(eAutoInitNumbers::dvb, "CI Slots");