Версия 1852 от yuriks- добавлена возможность установки идента для ридера внешней библиотеки (с фильтра ident в настройках ридера) (уникальный адрес UA также можно указать в настройках ридера ua=xxxxxxxxxxxxxxxx )
- на внешнюю библиотеку можно передать параметры (params=)
- в исходниках внешней библиотеки "oscamlog(0," - пишет в основной лог
пример с обработкой емм (от версии 1852)
исходник внешней библиотеки
Init2 - отличается от Init тем, что в ней передается строка параметров ридера (смотри ниже params=)
#include <string.h>
#define VERSION "External library version 1.1"
struct ecm_request_ext
{
unsigned char *ecm;
short l;
unsigned char *cw;
unsigned short caid;
unsigned long prid;
unsigned short srvid;
unsigned short chid;
};
struct emm_packet_ext
{
unsigned char *emm;
unsigned char l;
unsigned char caid[2];
unsigned char provid[4];
unsigned char hexserial[8];
unsigned type;
};
void (*oscamlog)(unsigned short, const char *,...) = NULL;
char *libparams = NULL;
extern void Init(void (*logptr)(unsigned short, const char *,...))
{
oscamlog = logptr;
oscamlog(0, "[external-reader] %s", VERSION);
};
extern void Init2(void (*logptr)(unsigned short, const char *,...), char *params)
{
oscamlog = logptr;
libparams = params;
oscamlog(0, "[external-reader] %s", VERSION);
if (libparams) {
oscamlog(0, "[external-reader] reader parameter `%s`", libparams);
//parse parameters here
}
};
extern int ProcessECM(struct ecm_request_ext *er)
{
oscamlog(255,"[external-reader] Processing ECM");
memcpy(er->cw,er->ecm,16);
return 1;
};
extern int ProcessEMM(struct emm_packet_ext *ep)
{
oscamlog(255, "[external-reader] Processing EMM %02X %02X", ep->emm[0], ep->emm[3]);
return 1;
}
пример конфига ридера
[testlib external /hdd/libexternal.so ident=0500:040620 ua=00c1bf1d88000000 params=test=params1,test2=param2 delay=100 emmcache=1,1,15]
ua взят с потока от фонаря (идент тоже для примера
картинки конешно нету
и лог
reader thread started (thread=771A34A0, label=testlib, device=/hdd/libexternal.so, detect=cd, mhz=357, cardmhz=357)
testlib card detected
[external-reader] testlib: loading external library `/hdd/libexternal.so`
[external-reader] testlib: using Init2 function for external library `/hdd/libexternal.so` initialization
[external-reader] External library version 1.1
[external-reader] reader parameter `test=params1,test2=param2`
[external-reader] testlib: CAID: 0500 - UA: 00C1BF1D88000000
[external-reader] testlib: adding provider 0500:040620, SA C1BF1D88 (00040620)
[external-reader] testlib: ready for requests
found cardsystem external
init for all local cards done
plain dvbapi-client granted (tuner, au=auto (1 reader))
dvbapi: new program number: 2777 (0500:2777 unknown)
dvbapi: Start descrambling PID #1 (CAID: 0500) 1
tuner (0500&040620/2777/106B/0000/5F:B98A/81=28): found (100 ms) by testlib
dvbapi: emm filters started
tuner (0500&040620/2777/106B/0000/5F:B981/80=28): found (101 ms) by testlib
tuner emmtype=shared (8E,C1), len=110, idx=0, cnt=1: written (0 ms) by testlib
tuner emmtype=shared (8E,C1), len=110, idx=1, cnt=1: written (0 ms) by testlib
tuner emmtype=shared (8E,C1), len=109, idx=2, cnt=1: written (0 ms) by testlib
tuner emmtype=shared (8E,C1), len=110, idx=3, cnt=1: written (0 ms) by testlib
tuner emmtype=shared (8E,C1), len=111, idx=4, cnt=1: written (0 ms) by testlib
tuner emmtype=shared (8E,C1), len=112, idx=5, cnt=1: written (0 ms) by testlib
tuner emmtype=shared (8E,C1), len=111, idx=6, cnt=1: written (0 ms) by testlib
tuner emmtype=shared (8E,C1), len=89, idx=7, cnt=1: written (0 ms) by testlib
tuner emmtype=shared (8E,C1), len=111, idx=8, cnt=1: written (0 ms) by testlib
tuner emmtype=shared (8E,C1), len=101, idx=9, cnt=1: written (0 ms) by testlib
tuner (0500&040620/2777/106B/0000/5F:B99E/81=28): found (101 ms) by testlib
tuner emmtype=shared (8E,C1), len=112, idx=10, cnt=1: written (0 ms) by testlib