Nog ff doorgegaan
DVBAPI REQUESTMODE moet op 1 staan, 0 werkt dus niet! OSCAM.DVBAPI mag nu eventueel ook leeg zijn
In de bijlage een oscam-mipsel met mijn patches op basis van svn 6450
reader-seca.c (line 220)
static int32_t seca_do_ecm(struct s_reader * reader, const ECM_REQUEST *er, struct s_ecm_answer *ea)
{
if (er->ecm[3] == 0x00 && er->ecm[4] == 0x6a) { //provid 006A = CDNL uses seca2/seca3 simulcrypt on same caid
int ecm_type = 0;
int seca_version = reader->availkeys[0][1]; //misusing availkeys to store seca_version
if (seca_version == 3) { //assume ecm type same as card in reader
ecm_type = 3;
}
if (seca_version == 2) { //assume ecm type same as card in reader
ecm_type = 2;
}
if (er->ecm[8] == 0x00) { //this is a mediaguard 3 ecm request
ecm_type = 3;
}
if (er->ecm[8] == 0x10) { // first seca2 request byte found
if (er->ecm[9] == 0x01) {//second seca2 ecmrequest byte found
ecm_type = 2;
}
}
if (ecm_type != seca_version){ //only accept ecmrequest for right card!
snprintf( ea->msglog, MSGLOGSIZE, "invalid ecm for cardtype!" );
return ERROR;
}
}
module-dvbapi.c line 602
void dvbapi_start_descrambling(int32_t demux_id) {
int32_t j,k;
int32_t streamcount=0;
demux[demux_id].pidindex = demux[demux_id].curindex;
for (j=0; j<demux[demux_id].ECMpidcount; j++) {
if (demux[demux_id].curindex == j) {
if (demux[demux_id].curindex != j) {
if (demux[demux_id].ECMpids[j].status < 0 || !demux[demux_id].ECMpids[demux[demux_id].curindex].streams)
continue;
dvbapi_start_filter(demux_id, j, demux[demux_id].ECMpids[j].ECM_PID, 0x80, 0xF0, 3000, TYPE_ECM, 0);
}
if (!demux[demux_id].ECMpids[j].index)
demux[demux_id].ECMpids[j].index=dvbapi_get_descindex();
demux[demux_id].ECMpids[j].checked=1;
demux[demux_id].ECMpids[j].irdeto_curchid=demux[demux_id].ECMpids[demux[demux_id].curindex].irdeto_curchid;
for (k=0;k<demux[demux_id].STREAMpidcount;k++) {
if (!demux[demux_id].ECMpids[j].streams || (demux[demux_id].ECMpids[j].streams & (1 << k))) {
dvbapi_set_pid(demux_id, k, demux[demux_id].ECMpids[j].index-1);
}
}
streamcount++;
}
}
cs_log("Start descrambling PID #%d (CAID: %04X) %d", demux[demux_id].curindex, demux[demux_id].ECMpids[demux[demux_id].curindex].CAID, streamcount);
if (cfg.dvbapi_au>0)
dvbapi_start_filter(demux_id, demux[demux_id].pidindex, 0x001, 0x01, 0xFF, 0, TYPE_EMM, 0); //CAT
}
Zo nu ga ik pitten