[1] MLD-5.x / Development / patches for vdr-plugin-mcli
 

Offline fishfingers

  • Newbie
  • *
  • Posts: 6
    • View Profile
patches for vdr-plugin-mcli
« on: July 28, 2019, 20:01:38 »
Hi Folks,

Here are a few patches for the reel netceiver vdr-plugin-mcli. This is that I needed to get the
netceiver working together with MLD on a raspberrypi. One does of course need the vlan
package installed and configured and a kernel with ipv6 active.

(working is relative, just noticed its not possible to change the channel...)

First lets patch the existing patch to fix the first compile error:

Code: [Select]
diff --git a/src/01_mcli_vdr233.patch b/src/01_mcli_vdr233.patch
index 174613c..534000c 100644
--- a/src/01_mcli_vdr233.patch
+++ b/src/01_mcli_vdr233.patch
@@ -15,7 +15,7 @@
 -                              cChannel *ch = Channels.GetByNumber (cDevice::CurrentChannel ());
 +                              #if defined (APIVERSNUM) && (APIVERSNUM >= 20301)
 +                                       LOCK_CHANNELS_READ;
-+                                       cChannel *ch = Channels->GetByNumber(1,0));
++                                       const cChannel *ch = Channels->GetByNumber(1,0);
 +                              #else
 +                                       cChannel *ch = Channels.GetByNumber (cDevice::CurrentChannel ());
 +                              #endif


Now add a new patch file that fixes the Lock() compile error:

Code: [Select]
diff --git a/src/20_mcli_Lock.patch b/src/20_mcli_Lock.patch
new file mode 100644
index 0000000..cadf986
--- /dev/null
+++ b/src/20_mcli_Lock.patch
@@ -0,0 +1,17 @@
+--- mcli-2015.11.11.orig/filter.c      2015-11-17 12:51:44.000000000 +0100
++++ mcli/filter.c      2019-01-06 21:32:00.983167344 +0100
+@@ -276,9 +276,12 @@
+       cMcliFilter *f = new cMcliFilter (Pid, Tid, Mask);
+       int fh = f->ReadPipe ();
+
+-      Lock ();
++      //Lock (); replace with LOCK_THREAD
++
++      LOCK_THREAD;
+       Add (f);
+-      Unlock ();
++
++      //Unlock (); replace with LOCK_THREAD
+
+       return fh;
+ }

Now add another patch file that removes the string concat warnings (this is of course sort of optional)

Code: [Select]
diff --git a/src/30_mcli_string_warnings.patch b/src/30_mcli_string_warnings.patch
new file mode 100644
index 0000000..f6c6782
--- /dev/null
+++ b/src/30_mcli_string_warnings.patch
@@ -0,0 +1,26 @@
+--- mcli-2015.11.11.orig/mcli.c        2019-01-06 21:25:49.596481613 +0100
++++ mcli/mcli.c        2019-01-07 21:52:52.203089758 +0100
+@@ -888,7 +888,7 @@
+
+ bool cPluginMcli::Start (void)
+ {
+-      isyslog("Mcli v"MCLI_PLUGIN_VERSION" started");
++      isyslog("Mcli v" MCLI_PLUGIN_VERSION " started");
+ #ifdef REELVDR
+     if (access("/dev/dvb/adapter0", F_OK) != 0) //TB: this line allows the client to be used with usb-sticks without conflicts
+ #endif
+
+--- mcli-2015.11.11.orig/mcast/common/version.h        2015-11-17 12:51:44.000000000 +0100
++++ mcli/mcast/common/version.h        2019-01-06 21:27:41.415347777 +0100
+@@ -11,8 +11,8 @@
+ #else
+   #define MCLI_P2PSTR ""
+ #endif
+-#define MCLI_APP_VERSION "0.99.34"MCLI_P2PSTR
+-#define MCLI_COMPILED __DATE__" "__TIME__
+-#define MCLI_VERSION_STR MCLI_APP_VERSION" ("MCLI_COMPILED")"
++#define MCLI_APP_VERSION "0.99.34" MCLI_P2PSTR
++#define MCLI_COMPILED __DATE__ " " __TIME__
++#define MCLI_VERSION_STR MCLI_APP_VERSION " (" MCLI_COMPILED ")"
+ #define MCLI_MAGIC 0xDEADBEEF
+ #define MCLI_VERSION 0x14

Yet another patch file to remove compiler warning - fixup mcli_cam_menu if/else

Code: [Select]

diff --git a/src/40_mcli_cam_menu.patch b/src/40_mcli_cam_menu.patch
new file mode 100644
index 0000000..71fc648
--- /dev/null
+++ b/src/40_mcli_cam_menu.patch
@@ -0,0 +1,15 @@
+--- mcli-2015.11.11.orig/cam_menu.c    2015-11-17 12:51:44.000000000 +0100
++++ mcli/cam_menu.c    2019-01-07 21:46:23.325772542 +0100
+@@ -509,10 +509,11 @@
+                       delete NCUpdate;
+                       NCUpdate=NULL;
+                       return osBack;
+-              } else
++              } else {
+                       SetStatus(NCUpdate->GetStateStr());
+                       Display();
+                       return osContinue;
++              }
+       } // if
+       eOSState ret = cOsdMenu::ProcessKey (Key);
+

Lastly the final change that got it working... add the missing directory where the
mcli socket file lives (/var/tmp).
   
Code: [Select]

diff --git a/template/var/tmp/.gitignore b/template/var/tmp/.gitignore
new file mode 100644
index 0000000..e69de29


If you copy the netcvdiag built in mcli/tools into the system it also
now works. I would have liked to add them to the package but don't
see how to do this.

mfg

Alan

PS The patches are attached...
« Last Edit: July 28, 2019, 22:07:06 by fishfingers »

Offline clausmuus

  • Administrator
  • Expert Member
  • ********
  • Posts: 18028
    • View Profile
    • ClausMuus.de
patches for vdr-plugin-mcli
« Reply #1 on: August 02, 2019, 15:29:51 »
Hi,
where do you get the 01_mcli_vdr233.patch from? I do not have it.
Can you please attache it.
MLD 5.1 - Raspberry PI - 7" Touch TFT - Squeeze Play
MLD 5.1 - lirc yaUsbIR - OctopusNet - XFX GeForce 9300 mit Intel E3200 - 2GB RAM - 6TB HDD - Lian Li PC-C37B - Samsung LE40A559
MLD 5.4 - OctopusNet - ASRock Q1900M - 2GB RAM 250GB HDD

Offline fishfingers

  • Newbie
  • *
  • Posts: 6
    • View Profile
patches for vdr-plugin-mcli
« Reply #2 on: January 20, 2020, 21:46:32 »
Sorry for dropping the ball for quite so long...

Hi,
where do you get the 01_mcli_vdr233.patch from? I do not have it.
Can you please attache it.

I found the  original 01_mcli_vdr233.patch patch on the 'unstable' branch. It
was added with this commit.

Code: [Select]
commit d3c11f4095b15dbffe3289e9cfe4b7be08a78a58
Author: Peter Pfeifer <p3f@minidvblinux.de>
Date:   Thu Mar 30 07:49:37 2017 +0200

    Add Patch for VDR 2.3.3

 src/01_mcli_vdr233.patch | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)






Online rfehr

  • MLD-Developer
  • Expert Member
  • ******
  • Posts: 1014
    • View Profile
patches for vdr-plugin-mcli
« Reply #3 on: January 20, 2020, 21:54:35 »
We are now on     2.4.1. vdr version
1x OctopusNet mit 2x DVB-S2 u. 2x DVB-C
1x Zotac ITX-A Atom 330 als Client
1x RPI2 als Client
1x Cubietruck
1x BananaPi
1x Wetekplay
1x MCC 100
2x RPI3
1x https://www.zotac.com/at/product/mini_pcs/pi335

Offline fishfingers

  • Newbie
  • *
  • Posts: 6
    • View Profile
patches for vdr-plugin-mcli
« Reply #4 on: January 20, 2020, 22:10:53 »
We are now on     2.4.1. vdr version

Yes I am aware of that

- my original patch set (from August) takes this  2.3.3 patch and updates it for 2.4.1 but its
only on the unstable branch which I didn't mention and hence clausmuus couldn't find it...

Offline fishfingers

  • Newbie
  • *
  • Posts: 6
    • View Profile
patches for vdr-plugin-mcli
« Reply #5 on: January 20, 2020, 22:58:00 »

There is also a problem in the mcli/mcast code with the lenght of the network interface
name which is limited to 8 chars via a sscanf format/field lenght (%8s) , it really should be
IFNAMSIZ which is currently 16. I can't see how to redefine value to get  the %s field
width right, so just remove the limit, changing %8s to %s. The  /proc/net/if_inet6 file that is
used as input should never have a longer value anyway.

Code: [Select]
diff --git a/src/50_mcli_longer_interface_name.patch b/src/50_mcli_longer_interface_name.patch
new file mode 100644
index 0000000..1d0115e
--- /dev/null
+++ b/src/50_mcli_longer_interface_name.patch
@@ -0,0 +1,11 @@
+--- mcli/mcast/common/interfaces.c.orig        2019-08-01 19:54:14.985462141 +0000
++++ mcli/mcast/common/interfaces.c     2019-08-01 19:54:50.405244618 +0000
+@@ -81,7 +81,7 @@
+       char buf[255];
+       /* Format "fe80000000000000029027fffe24bbab 02 0a 20 80     eth0" */
+       while (fgets (buf, sizeof (buf), file)) {
+-              if (21 != sscanf (buf, "%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx %x %x %x %x %8s", &addr.s6_addr[0], &addr.s6_addr[1], &addr.s6_addr[2], &addr.s6_addr[3], &addr.s6_addr[4], &addr.s6_addr[5], &addr.s6_addr[6], &addr.s6_addr[7], &addr.s6_addr[8], &addr.s6_addr[9], &addr.s6_addr[10], &addr.s6_addr[11], &addr.s6_addr[12], &addr.s6_addr[13], &addr.s6_addr[14], &addr.s6_addr[15], &ifindex, &prefixlen, &scope, &flags, devname)) {
++              if (21 != sscanf (buf, "%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx %x %x %x %x %s", &addr.s6_addr[0], &addr.s6_addr[1], &addr.s6_addr[2], &addr.s6_addr[3], &addr.s6_addr[4], &addr.s6_addr[5], &addr.s6_addr[6], &addr.s6_addr[7], &addr.s6_addr[8], &addr.s6_addr[9], &addr.s6_addr[10], &addr.s6_addr[11], &addr.s6_addr[12], &addr.s6_addr[13], &addr.s6_addr[14], &addr.s6_addr[15], &ifindex, &prefixlen, &scope, &flags, devname)) {
+
+                       warn ("/proc/net/if_inet6 in wrong format!\n");
+                       continue;


Offline fishfingers

  • Newbie
  • *
  • Posts: 6
    • View Profile
patches for vdr-plugin-mcli
« Reply #6 on: January 21, 2020, 00:01:55 »
Another small change, this time to deliver the tools built as part of the
mcli/mcast tree and not just the vdr plugin and library.

Code: [Select]
diff --git a/Makefile b/Makefile
index 491e8e0..55bcc7e 100644
--- a/Makefile
+++ b/Makefile
@@ -7,4 +7,9 @@ all: ../vdr $(package).$(suffix)
 
 clean: plugin_clean
 
-$(data): $(plugin)
+$(data): $(plugin) $(data_tree)
+       mkdir -p $@/usr/sbin
+       cp -up src/mcli/mcast/client/mcli $@/usr/sbin/mcli
+       cp -up src/mcli/mcast/tool/netcvdiag $@/usr/sbin/netcvdiag
+       cp -up src/mcli/mcast/tool/netcvlogview $@/usr/sbin/netcvlogview
+       cp -up src/mcli/mcast/tool/netcvupdate $@/usr/sbin/netcvupdate


I have still not looked at the channel switching problem mentioned in the original post   ::)
« Last Edit: January 21, 2020, 00:08:17 by fishfingers »

[1] MLD-5.x / Development / patches for vdr-plugin-mcli
 



Users Online Users Online

0 Members and 1 Guest are viewing this topic.