From cbf844cdde559ebd19b7c98d99abd858017951f1 Mon Sep 17 00:00:00 2001
From: tv <tv@krebsco.de>
Date: Thu, 15 Oct 2020 14:53:14 +0200
Subject: [PATCH] tv rpiPackages.433Utils: init at 2018-06-07

---
 .../RPi_utils.codesend.codestring.patch       | 24 +++++++++++
 tv/5pkgs/rpi/433Utils/default.nix             | 42 +++++++++++++++++++
 .../rpi/433Utils/rc-switch.protocols.patch    | 10 +++++
 tv/5pkgs/rpi/433Utils/src.json                |  7 ++++
 4 files changed, 83 insertions(+)
 create mode 100644 tv/5pkgs/rpi/433Utils/RPi_utils.codesend.codestring.patch
 create mode 100644 tv/5pkgs/rpi/433Utils/default.nix
 create mode 100644 tv/5pkgs/rpi/433Utils/rc-switch.protocols.patch
 create mode 100644 tv/5pkgs/rpi/433Utils/src.json

diff --git a/tv/5pkgs/rpi/433Utils/RPi_utils.codesend.codestring.patch b/tv/5pkgs/rpi/433Utils/RPi_utils.codesend.codestring.patch
new file mode 100644
index 000000000..447e42f1d
--- /dev/null
+++ b/tv/5pkgs/rpi/433Utils/RPi_utils.codesend.codestring.patch
@@ -0,0 +1,24 @@
+--- a/RPi_utils/codesend.cpp
++++ b/RPi_utils/codesend.cpp
+@@ -40,18 +40,18 @@ int main(int argc, char *argv[]) {
+     }
+ 
+     // Change protocol and pulse length accroding to parameters
+-    int code = atoi(argv[1]);
++    const char *code = argv[1];
+     if (argc >= 3) protocol = atoi(argv[2]);
+     if (argc >= 4) pulseLength = atoi(argv[3]);
+     
+     if (wiringPiSetup () == -1) return 1;
+-    printf("sending code[%i]\n", code);
++    printf("sending code[%s]\n", code);
+     RCSwitch mySwitch = RCSwitch();
+     if (protocol != 0) mySwitch.setProtocol(protocol);
+     if (pulseLength != 0) mySwitch.setPulseLength(pulseLength);
+     mySwitch.enableTransmit(PIN);
+     
+-    mySwitch.send(code, 24);
++    mySwitch.send(code);
+     
+     return 0;
+ 
diff --git a/tv/5pkgs/rpi/433Utils/default.nix b/tv/5pkgs/rpi/433Utils/default.nix
new file mode 100644
index 000000000..78be6de35
--- /dev/null
+++ b/tv/5pkgs/rpi/433Utils/default.nix
@@ -0,0 +1,42 @@
+{ fetchFromGitHub, stdenv
+, wiringPi ? WiringPi.wiringPi
+, wiringPiDev ? WiringPi.wiringPiDev
+, WiringPi ? rpiPackages.WiringPi
+, rpiPackages
+}:
+
+stdenv.mkDerivation {
+  pname = "433Utils-RPi_utils";
+  version = "2018-06-07";
+
+  src = fetchFromGitHub (stdenv.lib.importJSON ./src.json);
+
+  patches = [
+    ./rc-switch.protocols.patch
+    ./RPi_utils.codesend.codestring.patch
+  ];
+
+  buildPhase = ''
+    runHook postBuild
+
+    make -C RPi_utils
+
+    runHook preBuild
+  '';
+
+  buildInputs = [
+    wiringPi
+    wiringPiDev
+  ];
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/bin
+    for name in send codesend RFSniffer; do
+      cp RPi_utils/$name $out/bin/
+    done
+
+    runHook postInstall
+  '';
+}
diff --git a/tv/5pkgs/rpi/433Utils/rc-switch.protocols.patch b/tv/5pkgs/rpi/433Utils/rc-switch.protocols.patch
new file mode 100644
index 000000000..41304ef8e
--- /dev/null
+++ b/tv/5pkgs/rpi/433Utils/rc-switch.protocols.patch
@@ -0,0 +1,10 @@
+--- a/rc-switch/RCSwitch.cpp
++++ b/rc-switch/RCSwitch.cpp
+@@ -78,6 +78,7 @@ static const RCSwitch::Protocol PROGMEM proto[] = {
+     { 100, { 30, 71 }, {  4, 11 }, {  9,  6 } },    // protocol 3
+     { 380, {  1,  6 }, {  1,  3 }, {  3,  1 } },    // protocol 4
+     { 500, {  6, 14 }, {  1,  2 }, {  2,  1 } },    // protocol 5
++    { 136, {  1, 31 }, {  1,  3 }, {  3,  1 } },    // protocol 6
+ };
+ 
+ enum {
diff --git a/tv/5pkgs/rpi/433Utils/src.json b/tv/5pkgs/rpi/433Utils/src.json
new file mode 100644
index 000000000..3cf232788
--- /dev/null
+++ b/tv/5pkgs/rpi/433Utils/src.json
@@ -0,0 +1,7 @@
+{
+    "owner": "ninjablocks",
+    "repo": "433Utils",
+    "rev": "31c0ea4e158287595a6f6116b6151e72691e1839",
+    "sha256": "04r2qlkdsz46qgpnbizrfccz1i0qlkb1iqz0jzyq4fzvksqp9dg1",
+    "fetchSubmodules": true
+}
\ No newline at end of file