Piblaster fix (#614)

* Removed -HUP so the default -TERM signal is sent instead.
- hyperiond only listens for TERM and INT. HUP is often used to get an exe to reread its config

Changed pgrep to add '-x' so it wont partial match on the exe name.
- I have multiple instances with multiple hyperiond-instance1 names
- this ensures the service script only kills the right process

* reversing errant change to hyperion.systemd.sh

* Experimental changes to piblaster code to work how i think it should

It is now assumed that the PWM pins in groups of 3 correspond to RGB channels of the led.
                "assignment"       : "rgbrgbrgb",
Would result in:
//Channel number    GPIO number   Led channel
//      0               4             0 red
//      1              17             0 green
//      2              18             0 blue
//      4              27             1 red
//      5              21             1 green
//      6              22             1 blue
//      7              23             2 red
//      8              24             2 green
//      9              25             2 blue

* Ammend pwm channel mapping comments to match the code

* 1st cut of the new more flexible piblaster pin mapping support

it works but is still rough

* removed old "assignment" handling
- prints an error messaage if found and terminates

fixed the switchoff method

* removing iPins hard coded list of valid GPIO pins

* removed iPins array for switchOff function

* code cleanups

input validation

* Handle catching (and ignoring) SIGPIPE.
You can now kill and restart pi-blaster daemon and hyperiond will gracefully recover

* added a binary for testing

* Added sample config and my modified pi-blaster version to support more GPIOs

* moved hyperiond

* removed testing binaries

move sample configuration to the configs directory

* re enabled device config display

* removed sample configuration


Former-commit-id: 95e4d4ea2fb7cb5439e8cd597883a638da61a574
This commit is contained in:
penfold42
2016-04-30 00:00:33 +10:00
committed by brindosch
parent 77996fd65a
commit deed8066b0
3 changed files with 99 additions and 48 deletions

View File

@@ -4,6 +4,9 @@
// STL includes
#include <cstdio>
// jsoncpp includes
#include <json/json.h>
// Hyperion-Leddevice includes
#include <leddevice/LedDevice.h>
@@ -14,9 +17,9 @@ public:
/// Constructs the PiBlaster device which writes to the indicated device and for the assigned
/// channels
/// @param deviceName The name of the output device
/// @param channelAssignment The RGB-Channel assignment (8 characters long)
/// @param gpioMapping The RGB-Channel assignment json object
///
LedDevicePiBlaster(const std::string & deviceName, const std::string & channelAssignment);
LedDevicePiBlaster(const std::string & deviceName, const Json::Value & gpioMapping);
virtual ~LedDevicePiBlaster();
@@ -50,9 +53,8 @@ private:
/// The name of the output device (very likely '/dev/pi-blaster')
const std::string _deviceName;
/// String with eight characters with the rgb-channel assignment per pwm-channel
/// ('r' = red, 'g' = green, 'b' = blue, ' ' = empty)
const std::string _channelAssignment;
int _gpio_to_led[64];
char _gpio_to_color[64];
/// File-Pointer to the PiBlaster device
FILE * _fid;