summaryrefslogtreecommitdiffstats
path: root/pkgs/rpi
diff options
context:
space:
mode:
authortv <tv@krebsco.de>2023-09-11 18:24:28 +0200
committertv <tv@krebsco.de>2023-09-13 18:07:11 +0200
commit0c4f3acb281be6290c55a6e96bc29fab5b5c7a11 (patch)
treedadaec00477a095273475ac345b2066b4748c399 /pkgs/rpi
parentab1d0479e90f11806d4703ec6fffed3d5f782914 (diff)
stockholm -> hrm
Diffstat (limited to 'pkgs/rpi')
-rw-r--r--pkgs/rpi/433Utils/RPi_utils.codesend.codestring.patch24
-rw-r--r--pkgs/rpi/433Utils/default.nix42
-rw-r--r--pkgs/rpi/433Utils/rc-switch.protocols.patch10
-rw-r--r--pkgs/rpi/433Utils/src.json7
-rw-r--r--pkgs/rpi/WiringPi/default.nix61
-rw-r--r--pkgs/rpi/WiringPi/src.json6
-rw-r--r--pkgs/rpi/default.nix11
7 files changed, 161 insertions, 0 deletions
diff --git a/pkgs/rpi/433Utils/RPi_utils.codesend.codestring.patch b/pkgs/rpi/433Utils/RPi_utils.codesend.codestring.patch
new file mode 100644
index 0000000..447e42f
--- /dev/null
+++ b/pkgs/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/pkgs/rpi/433Utils/default.nix b/pkgs/rpi/433Utils/default.nix
new file mode 100644
index 0000000..136e3db
--- /dev/null
+++ b/pkgs/rpi/433Utils/default.nix
@@ -0,0 +1,42 @@
+{ fetchFromGitHub, lib, stdenv
+, wiringPi ? WiringPi.wiringPi
+, wiringPiDev ? WiringPi.wiringPiDev
+, WiringPi ? rpiPackages.WiringPi
+, rpiPackages
+}:
+
+stdenv.mkDerivation {
+ pname = "433Utils-RPi_utils";
+ version = "2018-06-07";
+
+ src = fetchFromGitHub (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/pkgs/rpi/433Utils/rc-switch.protocols.patch b/pkgs/rpi/433Utils/rc-switch.protocols.patch
new file mode 100644
index 0000000..41304ef
--- /dev/null
+++ b/pkgs/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/pkgs/rpi/433Utils/src.json b/pkgs/rpi/433Utils/src.json
new file mode 100644
index 0000000..3cf2327
--- /dev/null
+++ b/pkgs/rpi/433Utils/src.json
@@ -0,0 +1,7 @@
+{
+ "owner": "ninjablocks",
+ "repo": "433Utils",
+ "rev": "31c0ea4e158287595a6f6116b6151e72691e1839",
+ "sha256": "04r2qlkdsz46qgpnbizrfccz1i0qlkb1iqz0jzyq4fzvksqp9dg1",
+ "fetchSubmodules": true
+} \ No newline at end of file
diff --git a/pkgs/rpi/WiringPi/default.nix b/pkgs/rpi/WiringPi/default.nix
new file mode 100644
index 0000000..40fcaea
--- /dev/null
+++ b/pkgs/rpi/WiringPi/default.nix
@@ -0,0 +1,61 @@
+{ fetchFromGitHub, lib, runCommand, stdenv }:
+
+let
+ generic = name: extraAttrs:
+ stdenv.mkDerivation ({
+ pname = "WiringPi-${name}";
+ version = "2020-09-14";
+
+ src = fetchFromGitHub (lib.importJSON ./src.json);
+
+ buildPhase = ''
+ runHook postBuild
+
+ make -C ${name} all
+
+ runHook preBuild
+ '';
+
+ installPhase = ''
+ runHook preInstall
+
+ export DESTDIR=$out
+ export PREFIX=
+ export LDCONFIG=true
+
+ make -C ${name} install
+
+ runHook postInstall
+ '';
+ } // extraAttrs);
+
+ fakeutils = runCommand "fakeutils-1.0" {} /* sh */ ''
+ mkdir -p $out/bin
+ for name in chown chmod; do
+ touch $out/bin/$name
+ chmod +x $out/bin/$name
+ done
+ '';
+in
+
+rec {
+ wiringPi = generic "wiringPi" {};
+ wiringPiDev = generic "devLib" {
+ buildInputs = [
+ wiringPi
+ ];
+ };
+ gpio = generic "gpio" {
+ preInstall = ''
+ # fakeutils cannot be buildInputs because they have to override existing
+ # executables and therefore need to be prepended to the search path.
+ PATH=${fakeutils}/bin:$PATH
+
+ mkdir -p $out/bin
+ '';
+ buildInputs = [
+ wiringPi
+ wiringPiDev
+ ];
+ };
+}
diff --git a/pkgs/rpi/WiringPi/src.json b/pkgs/rpi/WiringPi/src.json
new file mode 100644
index 0000000..edf4e82
--- /dev/null
+++ b/pkgs/rpi/WiringPi/src.json
@@ -0,0 +1,6 @@
+{
+ "owner": "WiringPi",
+ "repo": "WiringPi",
+ "rev": "5c6bab7d4279e8c0cc890984eaa1a69ff3af1c99",
+ "sha256": "1jlx7lb3ybwv06b2dpmsr718d0xj85awl1dgdqc607k50kk25mjb"
+}
diff --git a/pkgs/rpi/default.nix b/pkgs/rpi/default.nix
new file mode 100644
index 0000000..50f8aad
--- /dev/null
+++ b/pkgs/rpi/default.nix
@@ -0,0 +1,11 @@
+self: super:
+
+let
+ mylib = import ../../lib/pure.nix {
+ inherit (super) lib;
+ };
+in
+
+{
+ rpiPackages = mylib.mapNixDir (path: self.callPackage path {}) ./.;
+}