diff -urNad vdr-plugin-sc-0.8.6~/data.c vdr-plugin-sc-0.8.6/data.c --- vdr-plugin-sc-0.8.6~/data.c 2007-12-29 19:41:45.000000000 +0100 +++ vdr-plugin-sc-0.8.6/data.c 2007-12-29 21:10:43.000000000 +0100 @@ -660,7 +660,7 @@ PRINTF(L_CORE_AUEXTERN,"triggered from findkey (type=%X id=%X keynr=%X)",Type,Id,Keynr); lastType=Type; lastId=Id; lastKeynr=Keynr; } - ExternalUpdate(); + ExternalUpdate(Type,Id,Keynr); } return key; } @@ -745,12 +745,15 @@ if(trigger.TimedOut()) { trigger.Set(EXT_AU_INT); if(externalAU) PRINTF(L_CORE_AUEXTERN,"triggered from housekeeping"); - ExternalUpdate(); + ExternalUpdate(0,0,0); } } -void cPlainKeys::ExternalUpdate(void) +void cPlainKeys::ExternalUpdate(int Type, int Id, int Keynr) { + _type = Type; + _id = Id; + _keynr = Keynr; if(externalAU && ScSetup.AutoUpdate>0) { if(last.TimedOut()) { Lock(); @@ -784,7 +787,8 @@ PRINTF(L_CORE_AUEXTERN,"starting..."); cTimeMs start; cPipe pipe; - if(pipe.Open(externalAU,"r")) { + cString cmd = cString::sprintf("%s %c %04X %02X",externalAU, _type, _id, _keynr); + if(pipe.Open(*cmd,"r")) { char buff[1024]; while(fgets(buff,sizeof(buff),pipe)) { char *line=skipspace(stripspace(buff)); diff -urNad vdr-plugin-sc-0.8.6~/data.h vdr-plugin-sc-0.8.6/data.h --- vdr-plugin-sc-0.8.6~/data.h 2007-12-29 19:41:45.000000000 +0100 +++ vdr-plugin-sc-0.8.6/data.h 2007-12-29 20:58:29.000000000 +0100 @@ -248,11 +248,14 @@ static cPlainKeyType *first; cPlainKey *mark; cTimeMs trigger, last; + int _type; + int _id; + int _keynr; // static void Register(cPlainKeyType *pkt, bool Super); cPlainKey *NewFromType(int type); void AddNewKey(cPlainKey *nk, int mode, bool log); - void ExternalUpdate(void); + void ExternalUpdate(int Type=0, int Id=0, int Keynr=0); protected: virtual void Action(void); public: