If you have more leds configured than the SPI buffer can support you now get this:
[HYPERIOND LedDevice] <DEBUG> <ProviderSpi.cpp:92:writeBytes()> SPI failed to write. errno: 90, Message too long
* Fix throw error so it correctly fails on invalid output hostnames
* Fixed broken default /dev/spidev0.0 string
* UDP devices now use "host" and "port" rather than "output"
* commit debug code to save it due to merge
* migrate first devices to new device registry and configure on runtime
* fadecandy and rs232 resets device if config is set
* try to hunt crash on osx
* test commit if this works with osx
* refactor spi devices
* cleanup
* refactor leddevices file, tinkerforge and ws2812b
* refactor raw usb devices
* refactor udp devices
* - add tpm2net driver
- remove old udp driver from build (files left in place for reference for new udp driver)
- json serverinfo shows available leddevices
* finish rework part 2 of leddevices
* add schemas for leddevices.
currently only compiled in, but not usedx
* Add support for > 170 leds. These are send as multiple packets
Change default latchtime to be smaller
* code cleanup
* more code tidying
added *.swp to gitignore
* Started on support for sACN/E1.31/DMX512
Just a clone of udpraw for now
* It's ALIVE!!
This adds somewhat working DMX512/sACN/E1.31 support.
I've tested it against an ESPixelStick but have no other "real" hardware
TODO:
configure universe#
configure universe and led offset
configure source names (all hard coded now...)
* oops.... forgot that dmx element 0 isnt rgb data but needs to be zero
* added universe support in the config
assorted code cleanups
* start ledclone
* led cloning: clone scan areas from original led
main: show exceptions, better exit
* tune json schema for new option. somwe cleanup
* fix warnings and bug for framebuffer selection. thx to clang brought by new osx buikld on travis
* make ledclone feature work flawlessly for effects too. Effect sees the ledstring without cloned leds.
cloned leds will be inserted just before sending to leddevice
additional: remove warnings and fix code style
* fix warning
* - implement framegrabber type option
- framegrabber autoselect
- integrate x11 grabber in hyperiond
* add doxy
* v4l: select device by name
hyperiond: fix x11 grabber connection to kodichecker
config: tune default prios of boblight and v4l
* make v4l name finding case insensitive
* various fixes:
- add folder for firmware known as working with hyperion
- rs232: add debug message for close and do not repeat "port not found" message more than neccessary
- v4l2: fix grabber started on creation when set to disabled
- cmake: add new platform x86-dev - this as most code coverage and is usefull for test/development. This is not for release
* add hints for effect-args
* multi fix commit
- refactoring leddevicefactory
- adalight: default for "delayAfterConnect" is 1s now - needed for most arduino's because of there special behaviour on open
- fadecandy: new option for disabling configuration send - if you want to keep your fadecandy defaults
- Hyperion.cpp: simplify createSmoothing discussed in #105
- smoothing:
-- add option for continuous output
-- when updatedelay>0 and continousOutput is disabled, buffer is flushed correctly after no input is detected
* add doxygen to travis
* fix code
* fix compile fir ws281x pwm
* remove git merge stuff
* fix compile
* multi fix commit
- refactoring leddevicefactory
- adalight: default for "delayAfterConnect" is 1s now - needed for most arduino's because of there special behaviour on open
- fadecandy: new option for disabling configuration send - if you want to keep your fadecandy defaults
- Hyperion.cpp: simplify createSmoothing discussed in #105
- smoothing:
-- add option for continuous output
-- when updatedelay>0 and continousOutput is disabled, buffer is flushed correctly after no input is detected
* add doxygen to travis
* common ledbuffer for color transform
hyperion class uses a common buffer for all operations on ledColors got from muxer
all color transforms uses new ledBuffer instead of making copies of ledbuffer
other fixes:
fix compile bug in profiler
update doxygen config
* migrate logging for color transform classes
* prepare new logger in hyperion class
* implement hwledcount
* Update Hyperion.cpp
Fix off color
* remove ledscount equivalent from apa102
migrate logging in hyperion.cpp
remove unused and duuplicate colorcorrection - but same is available through tempertature
* remove colorcorrection completly
fix compile
* set colororder back to static
* in remote: using correction is the same as using temperature - correction is obsolete, command not delete atm for compat reasons
* switch to new logger for folowing led devices:
LedDeviceAtmo
LedDeviceFactory
LedDeviceFadeCandy
LedDeviceHyperionUsbasp
LedDeviceLightpack-hidapi
LedDevicePiBlaster
LedDeviceWS281x
LedRs232Device
leddevice base class defines logger already as protected member _log
* migrate to new logger for led devices.
still todo:
LedDeviceWS2812b
LedDeviceWs2812SPI
LedDeviceTinkerforge
LedDeviceLightpack
LedDeviceMultiLightpack
* migrate leddevice tinkerforge to new logger
* migrate Lightpack and MultiLightpack to new logger
* switch to new logger for folowing led devices:
LedDeviceAtmo
LedDeviceFactory
LedDeviceFadeCandy
LedDeviceHyperionUsbasp
LedDeviceLightpack-hidapi
LedDevicePiBlaster
LedDeviceWS281x
LedRs232Device
leddevice base class defines logger already as protected member _log
* migrate to new logger for led devices.
still todo:
LedDeviceWS2812b
LedDeviceWs2812SPI
LedDeviceTinkerforge
LedDeviceLightpack
LedDeviceMultiLightpack
* Fixed compile error when no grabbers are defined
* Remove stupid avahi warning...
* Started on the new integrated UDP listener to replace the python effect.
Cloned boblight server and rename it to be UDP listener
It compiles!, It starts! it seems to work as a second boblight protocol server...
* moving from the exsting TCP to UDP.
i can catch packets now.. need to consider ditching the connection handling
* It kinda works right now.
UDP packets are received, led data is sent and hyperion displays them.
.... for a moment before going back to what it was doing
* It works!
looks like the default priority of 900 was fighting with something else that was also 900
commented out some udp packet debugging
* oops, forgot to add the changes the the previous commit
* resolving merge conflicts
* Fixed random http port due to uninitialized _port
* cleaning up compiler warning
* cleaned up CMakeLists to remove warning:
Note: No relevant classes found. No output generated.
* migrate serialport to qt5 serialport
* remove old serialport
add logging to serialport
* remove try catch - qt serialport uses plain return values
* tiny fix, but not working atm
* make it work, tested with adalight
* cleanup: remove ambiled device
as written at the forum this is no longer supported. All people should move to adalight. They just need to flash a new sketch.
* fix typo
* make hyperion to singelton.
remove arguments for config and hyperion - both are gettable via Hyperion::getInstance
* refactor hyperiond
* remove qt4 comapt
make zeroconf mandatory
refactor hyperiond
* xbmcchecker is now a singleton
* cleanup in hyperiond
zeroconf switchable between static and shared linking
* fix xbmcchecker
* implement make install
set CMAKE_INSTALL_PREFIX e.g. to /opt to install to /opt/hyperion
set ENABLE_SYSTEM_INSTALL to ON to activate installation
after compiling use
make install
or
make install/strip
(for performance/size optimized binaries - compile in Release to get best performance)
* cleanup cmake files
use
cmake -DINSTALL_PREFIX=/opt/hyperion ..
to install all files to hyperion or
cmake -DINSTALL_PREFIX=/usr/
to install to usr. install folders are linux standard. bin go to bin folder and additionals (effects) go to share/hyperion
* add uninstall target - be patient with that, this will remove files from your system
install service files to share/hyperion - if you want to use them you have to make a symlink to your location of service files
* optimize build release script
install service files into hyperion share folder (services not activated, this must be done by distribution package script)
initial support of cmake option -DPLATFORM= option. This selects platform specific cmake flags. no need for -DENABLE_... options (unless you want some special things)
automatic detect for apple build
* update submodule
* fix cmake error when no platform is given
* initial support for deb,rpm and tgz packages - no usefull content atm!
* make packeages contain usefull stuff
* add license
make packes more functional. package specific install missing yet
* implement debian postinstall
* disable rpm generation until it has a working state
* add hypercon compat
* add posibility for multiple config files. first one found is taken
* remove hyperion comaptlayer
services is not started automaticly
* rework debian postinstall:
- remove /opt compatibility complety. This makes more trouble as it is usefull
- when hyperiond already started, restart it
- cleanup
* add deb package dependencies
* wipe out last support for /opt installation
* change default effect path in config to /usr
* revert service files and config files
* remove last occurences of ENABLE_PROTOBUF
fix cmake warnings and make it ready for cmake 3
fix refactoring of hyperiond.cpp creates no objects for network services
* all arguments via reference ...
* fix xbmcchecker not working
* add logger class
* - profiler must be activated with ENABLE_PROFILER, otherwise an error will raise
-> this should prevent profiler gets into release code
* fix profiler
* make logger compat with older/partial c++11 versions (r.g. debian wheezy)
fix description of optionparser
fix atmoorb not compile for qt4. now it should compile for qt5 and 4
* make logger compiles with qt5 too
fix compiler warnings
* remove debug code
Former-commit-id: 6aa41351667caed712b1f28010dbedfca8a6a5a0
* 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
* cleaned up a couple of compiler warnings
* moved bitpair_to_byte initialiser to (hopefully) work with older GCC
* compiler warning in udp driver
removed some tabs in ws2812b.cpp
* formatting - spaces to tabs
* moved rpi_281x to tag sk6812-v1.0
* moving to my fork of rpi_281x
* removed dos line endings
* Found some more "dos" line ending files
Former-commit-id: c756e3ccc153fd36e23a26eff37a1230bdd4b9b4
* 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
* adding support for SK6812 - not working yet
* Changed rpi_ws281x submodule to be penfold42's fork
* Set White to zero for now
* starting on the code to make the White led do stuff
* Added some basic whie led calculation
white = min(r,g,b)
r-=w, g-=w, b-=w
* cleaned up a couple of compiler warnings
* updated strip type to use corrected RGBW strip type
(the SK6812RGBW datasheet is wrong)
* moved bitpair_to_byte initialiser to (hopefully) work with older GCC
* compiler warning in udp driver
removed some tabs in ws2812b.cpp
* formatting - spaces to tabs
* moved rpi_281x to tag sk6812-v1.0
* attempt #3 at migrating the rpi_281x submodule to my fork/branch
* moving to my fork of rpi_281x
* Started implementing multiple RGB to RGBW conversion options
a quick hack has been implemented inside WS281x.cpp but ive started
moving this to RgbToRgbw.cpp for reuse by other led device types
* migrated RGB to RGBW conversion to RgbToRgbw.cpp
Former-commit-id: ff8e9038c4bb8203b71b42d12bf23be4abcc0b3b
* 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
* cleaned up a couple of compiler warnings
* moved bitpair_to_byte initialiser to (hopefully) work with older GCC
* compiler warning in udp driver
removed some tabs in ws2812b.cpp
* formatting - spaces to tabs
* moved rpi_281x to tag sk6812-v1.0
* moving to my fork of rpi_281x
* half way thru re merging the newudp support
* Whoops.... dont know how it compiled before..
* Removed debugging that was commented out
Former-commit-id: ac4330422f93f3d594dfcba5593759288298d25e
* 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
* cleaned up a couple of compiler warnings
* moved bitpair_to_byte initialiser to (hopefully) work with older GCC
* compiler warning in udp driver
removed some tabs in ws2812b.cpp
* formatting - spaces to tabs
Former-commit-id: 42cc7325177c9fcc3d1bd29cbfe72f02118d3233
* 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
* This add a new device type - ws2812spi.
I've (ab)used the SPI interface to send the correct timing pulses to keep the ws2812 happy.
THE RATE IS IMPORTANT!
A FIXED CORE_CLK IS IMPORTANT!
Attach the SPI MOSI pin on the Pi to the DIN pin on your ws2812
"device" :
{
"name" : "MyPi",
"type" : "ws2812spi",
"colorOrder" : "grb",
"output" : "/dev/spidev0.0",
"rate" : 3800000
},
* updated hyperiond.test-binary
* Updated default SPI speed to the "correct" value.
My Pi was undervolted so was dropping the core clock confusing everything
* Code cleanups
explicitly set the final 3 bytes to 0
* Removed latchtime option - not applicable
* updated test binary
Former-commit-id: d3c19c8374999f7a554bb25ca181a8a483f86289
* 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
* started bug fixes for APA strips with more physical leds than configured
* 1st cut of changes to APA102.
now looks at config for "leds" which is the # of hardware leds in the strip.
This enables us to write the correct trailer length in the packet.
Also fixed a bug where switchoff was writing the wrong # of leds
* removed commented out old code
removed debug printf
* included prebuild test binary for Pi2
* Second attempt at the fix.
BEFORE:
If you have more physcial LEDs than defined in the "leds" "index" section of the config there is random junk added to the end of the strip.
WITH THIS FIX:
In the "device" section specify the number of physical leds with:
"leds" : 212,
If this is greater than the number of led indexes, additional LEDs are set to black
If this is smaller than the number of led indexes, it is ignored
* included test binary
* Clean exit if the device config is missing or a non-supported device type is specified
Former-commit-id: 8ae96188fa74d91b13a921e7d5faf6d6ac1c42ee
* 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
* Updated smoothing options for AtmoOrb, can now choose between Orb external or Hyperion's internal smoothing.
With skipSmoothingDif you can set the maximum allowed color difference before overriding / clearing Orb smoothing during faster color change like for instance color <-> black.
* Updated inline documentation.
* Fixed command type typo in AtmoOrb device.
* Corrected variable spelling in AtmoOrb device.
* Make smoothing also match equal values for AtmoOrb smoothing differential
Former-commit-id: 3eede43c2f76fa324f0144aeac0526b8125ad149
No functional changes, but
- files have been renamed
- the device name is now "file" not "test"
Former-commit-id: 3fbc03c3fe1d764654c1d28ebb80562ce6276ab1
2. Adds support for level shifters that invert the data
Config option - "invert" (integer)
if omitted, do not invert
if == 0, do not invert
if !=0, invert
Former-commit-id: fd5b2863a85b11ac3a8444d1e02822f852feb556
The RPi 2 and 3 have two PWM channels and 3 PWM pins available to the
gpio header. BCM18 and BCM12 run on PWM channel 0. BCM13 runs on PWM
channel 1. This change allows BCM13 to be used by allowing the PWM
channel to be specified.
Former-commit-id: 3693ab438c2b369e6307c262d32bba509409e5b9
Add a new WS281x driver which is a wrapper around jgarff's ws281x library which
works on Pi B+, Pi 2, Pi Zero and probably Pi 3 as well.
jgarff's ws281x library is included as a submodule
Former-commit-id: e473dfd36d31b14598da5e56e4b8bf9f2aa7bb24
Adalightapa102 now inherits from RS232Device.
Due to bad initialization, previous CPU usage on RPI1 could reach 60%.
ON RPi2 20%. Now its about 3% with grabber in use.
Former-commit-id: 7ebb72f503ad74a7768deedf648b9e84c0a7cf3c
Added the new Lightstrip plus, hue go and Aura. The first two come with
a new Gamut profile and the Aura is from Living Colors.
Former-commit-id: 83b676bf136095f3069c219810ea361829d81558
I have removed the 'hack' that allowed to use APA102 with original
version of adalight. I have modified adalight code and placed it into
dependencies folder. This change is not backward compatible, so it won't
work with original adalight code.
The reason for the change is that last leds were not acting as they
should (last led red). Additionally with this change and new arduino
code, performance is lot better and lights change much smoother.
I have also changed switchOff method that requires different data sent
to apa102 to turn all leds off.
Enjoy :)
Jacek
Former-commit-id: 624fe6c429aee896b150d23289f0be19e040474d
This fixes a compatibility issue when compiling with gcc 4.6 (which is
the version distributed with raspbian by default)
Former-commit-id: ff8518cbc0627049526138b67f4965cedfdfd4be
This fix the previous limit of 64 APA102 leds, because of too short end frame. Now the end frame is computed accordling to this documentation: https://cpldcpu.wordpress.com/2014/11/30/understanding-the-apa102-superled/. Tested on my 98 leds, it works fine.
I suggest to modify hyperion to allow LED drivers to apply the brightness parameter because APA102 has a parameter for that, without the need to elaborate RGB color to simulate it (result is wrong colors!). Is it possible to introduce such parameter in LED drivers and let the driver apply that?
Former-commit-id: 2d714e6eb075ec57e0973839fe96d2d7a051c57f