rendered paste body#! /bin/sh /usr/share/dpatch/dpatch-run
## 04_external-au-params.dpatch
##
## All lines beginning with `## DP:' are a description of the patch.
## DP: No description.
@DPATCH@
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: