- Increases linker performance under Linux builds by using Gold linker, if available
- ccache is used if available
- removed statistic class (Stats.cpp) from project due to the missing result (sorry @Brindosch)
- add LGTM bandges for code analysis overview
Signed-off-by: Paulchen-Panther <Paulchen-Panter@protonmail.com>
- Video format MJPEG implemented (libjpeg/qimage)
- Inactive priorities are now skipped correctly (PriorityMuxer.cpp line 297)
- v4l configuration section replaced with an object (preparation for #542)
Protocol Buffer reimplemented to receive image data from third-party apps
The status of the component "UDPListener" is now displayed correctly in WebUI
Global signal names for WebUI added
fix ge2d mode
added ge2d single/combined ioctl call
speed up imageresampler
speed up amvideocap0 mode
added config to choose if amvideocap0 or ge2d grabber should be used
Hue RGB Color Conversion for Brightness is wrong! - use RGB to HSV instead of XYZ Space!
For correct use, reset brightnessFactor back to 1.0 in config! - It was just a Workaround, not the Solution!
Fixed wrong ColorGamut A/B/C Values + Added New Lamp Models: LCT015, LCT016, LCT024
- More i18n
- Easy use of mutual exclusion in JsonAPI with QMutexLocker
- Smoothing type "linear" hidden in the WebUI, because there is currently only one
- Message forwarding implemented again
- For compatibility to home assistants and other remote controls, "activeEffects" and "activeLedColor" has been added to the JSON-RPC
- FlatBuffer clear now the Priority on disconnect
- The information "available V4L2 devices" is now only displayed if the device list is not empty
- LED device "PiBlaster" excluded from OSX build
Due to the wrong interpretation of the OpCode, larger WebSocket frames are interpreted as a binary message. A new implementation of the WebSocket protocol in Hyperion is necessary. The QT class QWebSocketServer does not have this problem. However, this can not be mixed with an existing QTcpServer implementation without using a new WebSocket port.
* Add new Effects
* add schema file for gif based effects
* add background color to snake effect
* add background color to snake effect
* Update schema file for snake effect
* Add function getImage
* add function getImage
* optimize lights.gif
* Add format to GIF schema
* save it
* ws: multiframe receive now works
* port cfg write with autocorrect to jsonprocessor
cleanup
* cleanup
* cleanup
* add support for image data over ws binary frame
* - grabber auto off when not set as active prio
- join aml and fb - on aml platform both grabbers are needed, so they joind in one module and share one prio. user don't the the nasty magic behind
- aml: preparation for direct ge2d access
* just save it, in the middle of ge2d impl
* fix compile issues
* now grabbing works basicly
* add 3d support for ge2d
* next step, we got some video from aml
* switch back to rgba
* cleanup
* code cleanup, remove unused stuff
* - grabber auto off when not set as active prio
- join aml and fb - on aml platform both grabbers are needed, so they joind in one module and share one prio. user don't the the nasty magic behind
- aml: preparation for direct ge2d access
* just save it, in the middle of ge2d impl
* fix compile issues
* now grabbing works basicly
* add 3d support for ge2d
* next step, we got some video from aml
* switch back to rgba
* remove unfinished ge2d stuff
* commit missing changes
* some urgent fixes, needs some beautifying, but it works now
* fixes and refctoring
* move setvideomode to common place
* implement more croping and 3d support
* more api unification
* more refactoring
* osx fix
* next step
* add a mock for osx grabber. Now it is possible to test compile on none osx platforms.
* more unifications ...
* remove obsolete includes and grabbers are not dyn allocated. dispmanx needs rework an probaly not work atm
* first version of dispmanx mock. it compiles, but outputs a black image
* now dispmanx mock works!
* activate mocks in travis linux build
prepare dispmanx to rgb image out
* dispmanx now with image rgb output
fix deadlock with w/h -1 in grabber v4l
cleanups
* fix json
* fix some runtime stuff
* Update FramebufferWrapper.cpp
fix missing code
* unify grabframe
* 3d and croping for amlogic
* fix setimage not working
* make use of templates
save some codelines
* save more code lines
* json websockets: now sending of multiple frames as well es 64bit frame size works. code ideas taken from qtwebsockets
* remove debug stuff
* remove stl stuff
* implement set videomode via json api
* refactor grabbers:
- new base class
- move shared code to base class
* fix osx
* rework all cmakelist files with auto file collection. except leddevices (need further restructuring)
* store current video and grabbing mode
* add json stuff
* remove grabbingmode - we do not want to expose it
* add dynamic smoothing first step
* extend prio muxer to hold smoothing preset id
* add icons for systray
* fix missing changes in prio muxer
* implement specific smoothing params for effects
* refactoring: std::min/max to qMin/Max
* some code optimization
* fix schema and translation
* revoke change of python include order
* fix eol in effect shemas
* optimize random,candle and fadecandy json schemas
* add deployment
* add correct api key
* fix cmake lists and add heroku app name
* Update .gitmodules
sync modules with upstream
* add possibility to start hyperiond as systray app
* cleanup
* - new command line options: --desktop --service to set desired mode (systray icon / console only)
- auto detect x server - if avail run in gui mode
- on osx always run in gui mode
- use existing icon from webconfig, instead of own icon
- add ability to no gice a config file name. If config not given, default config file will be set (home dir, or hyperiond dir, depending on writable state)
* fix warnings and compile error
* use own icon for systray purpose
* use new logo
* - set application properties
- fix force service mode
* update
* resolve qt5w
* test
* Go down
cmake python search won the price for crazy lib searches!
* 2.7 python forced, RPATH
* upstream
* ...
* update
* ...
* 2.7.12 py it picks random versions...
* max 7.12.5....
* Test 14.04 tests
* revoke schema split
* add "getAutoCorrectedConfig" function
* revoke schema split
* revoke schema split
* revoke schema split
* Prevent compiler error if none grabber is available
* revoke schema split
* add "getAutoCorrectedConfig" function
* revoke schema split
* remove "configMigrator"
* remove "configMigrator"
* Change TestConfigFile to show how the autocorrection works
* revoke schema split
* revoke schema split
* remove "ConfigMigrator"
* remove "ConfigMigrator"
* remove "ConfigMigratorBase"
* remove "ConfigMigratorBase"
* Add QJsonUtils.h
* added ability "ignore-required"
It has been added the ability to correct the configuration without having to pay attention to the keyword "required" in the hyperion schema
* Allow Comments in Hyperion Schema
* add ability to ignore the "required" keyword in hyperion schema
* add ability to ignore the "required" keyword in hyperion schema
* add ability to ignore the "required" keyword in hyperion schema
* //Allow Comments in Hyperion Schema
* Update jsonschema.py to version 0.8.0 to support ...
references in json schema
* add RefResolver from jsonschema.py to resolve
references in hyperion schema
* remove dupe code
* split the hyperion schema in separatly files
For better readability
* add function "resolveReferences" to resolve
references in hyperion schema.
* remove CURRENT_CONFIG_VERSION
* remove CURRENT_CONFIG_VERSION
* split the hyperion schema in separatly files
For better readability
* Create schema-backgroundEffect.json
* Add the rest of the Hyperion schema via upload
* Remove Comments in config file
* Add return variable to function writeJson().
fix function resolveReferences().
edit function load() to handle QPair result from schemaChecker.
* edit function validate() to return QPair variable
* fit function loadEffectDefinition()
* fit function checkJson()
* Expand error check by dividing
"_error" variable in "_error" and "_schemaError".
Replace variable "bool" in validate() in QPair
* Extend function "cmd_cfg_set" to handle auto correction
* Extend function "loadConfig" to handle auto correction
* fix function loadConfig()
* Started implementing artnet/DMX support
It compiles, but certainly wont work just yet
* Fix up packet data and length
correct default udp port
The data looks ok in wireshark
* Code cleanup
Sequence runs from 1..255 not 0
fix universe > 255
* code cleanups and force even number of channels
* Fix potential endianness issue
* added support for 'x' channels per fixture with zero padding
its very basic support for now - it needs better multi universe support
* add limit for write to leddevice
* add to default config
* add i18n
* extend xmas effect
* fix indention
* add check for minimum brightness
* adapt effects to fading and new minWriteTime
* remove old latchTime
rename minimumWriteTime to latchTime
make it as dev specific option
* set default for rewriteTime to 1s
pause smoothing on color too
* reenable smoothing for color - it looks nicer :-)
* fix timeout timer
* clean color adjustment
* now a prio duration of "0" means infinity
* implement dynamic 'just in time' initialization
* implement new brightness handling
* cahnge access level
* i18n fix
* - cleanup brightness stuff
- update webserver, now with initial ssl support
* - backlightThreshold is now 0-100 instead 0-1
- better performance for brightness - use piecewise linear instead of sqrt
* Added missing json document compilation to states retrieval.
* Major rework and implemented feature to increase brightness by a configurable factor.
* Made network manager property of the hue bridge class.
* Fixed some errors regarding model id handling.
* Removed early return.
* Update of philips hue schema for new parameter
* no smooth for efx
rework fade effect
* join strobe and fade effects
new effect "breath"
* - make transition efx to smooth mode more smooth
- fixes for pacman
- rework fade base effect - make it more versatile
- fix prios in schema files
- new notify blue effect to demonstrate capability of fade effect
* upd
* update
* update
* update schemachecker
* ...
* fix lowest priority
* zeroconf updates (#421) (#3)
* zeroconf:
add ip
make names more uniq
* tune dns name for webconfig
* update
* update
* update
* update ui
* ...
* min val for gamma
* lost somewhere this
* add status to hyperion object
* update ui
* start of integrating a bonkour service browser
* some experiments
* blub
* bonjour browser via jsonrpc ...
* fix indention
* - make leddevice as component
- extend sysinfo with domain
- add more data for bonjour browser (e.g. split domain and hostname)
* code cleanup
* add translation
* use component names instead of ids
* fix compile
* std::string -> qstring part 1
* more string migration
* more string migration ...
* ...
* more qstring mogrations
add sysinfo via json
* remove unneccessary includes
* integrate sysinfo into webui
* implement rigin for efx
* implement origin for effects and other components
add experimental adalight firmware for arduino with upto 5 pwm channels
* cleanup
* origin ip now with dns lookup
* fix compile
* move some code
* - add more drawing func to effect engine
- make provider rs232 less noisy
- json checks: remove utf8 conversion temporarly and make it compat with py3 again
* fix compile prob
* Adding support for sk6822 timing
This isnt complete, but should be a good starting point for others to learn from.
1) Here is where the led device source is located:
cd libsrc/leddevice
2) Find the files that need changing:
root@loungepi:libsrc/leddevice# grep -ri 2812spi *
CMakeLists.txt: ${CURRENT_SOURCE_DIR}/LedDeviceWs2812SPI.h
CMakeLists.txt: ${CURRENT_SOURCE_DIR}/LedDeviceWs2812SPI.cpp
LedDeviceFactory.cpp: #include "LedDeviceWs2812SPI.h"
LedDeviceFactory.cpp: REGISTER(Ws2812SPI);
LedDeviceSchemas.qrc: <file alias="schema-ws2812spi">schemas/schema-ws2812spi.json</file>
LedDeviceWs2812SPI.cpp:#include "LedDeviceWs2812SPI.h"
LedDeviceWs2812SPI.cpp:LedDeviceWs2812SPI::LedDeviceWs2812SPI(const QJsonObject &deviceConfig)
LedDeviceWs2812SPI.cpp:LedDevice* LedDeviceWs2812SPI::construct(const QJsonObject &deviceConfig)
LedDeviceWs2812SPI.cpp: return new LedDeviceWs2812SPI(deviceConfig);
LedDeviceWs2812SPI.cpp:bool LedDeviceWs2812SPI::init(const QJsonObject &deviceConfig)
LedDeviceWs2812SPI.cpp:int LedDeviceWs2812SPI::write(const std::vector<ColorRgb> &ledValues)
LedDeviceWs2812SPI.h:class LedDeviceWs2812SPI : public ProviderSpi
LedDeviceWs2812SPI.h: LedDeviceWs2812SPI(const QJsonObject &deviceConfig);
3) Copy the existing files as a starting point:
cp LedDeviceWs2812SPI.cpp LedDeviceSk6822SPI.cpp
cp LedDeviceWs2812SPI.h LedDeviceSk6822SPI.h
cp schemas/schema-ws2812spi.json schemas/schema-sk6822spi.json
4) Do some search and replacing:
:%s/Ws2812SPI/Sk6822SPI/g
5) edit the other files (see the diffs in this commit)
* Added wait time and reset time
* Fixed up debugging output and commented it out.
* fix/refactor backlight stuff:
- fix colors dont turn of when backlight 0 and black is set
- add option to use not colored backlight
- fix colored backlight not colored on very low color values
- various code style tunings
* apply needed change to wizard
* backlight disabled on static color and efects
* fix warnings
* try fix udp compiler warnings
* - disable device when error indecates that the problem is not solvable on reconnect
- introduce a preOpenDelay of 2 seconds (currently value is hardcoded)
* rs232:
- make preOpenDelay available via webui
- fix preOpenDelay
- add basic usb serial detection
* - revert 3819ae7
- fix schema files
* make json checks compat with utf8+bom
* make shutdown effect a bit more flexible
* implement 404 for webserver - this is a quick hack, should be refactored later
* add http error pages ... design is more a placebo ;-)
* tune errorpages
fix some cgi related stuff, now only python is possible
executing and reading python file is possilbe, but it cannot receive any data from webui
* fix typo
* fix another typo
* implement config save over http post instead of json
* remove json set config
finish config write thrugh http post
* remove debug code and add failure messages
* fix save issue with white spaces
* implement config save over http post instead of json
* remove json set config
finish config write thrugh http post
* remove debug code and add failure messages
* - fix coloradjustment via hyperion remote
- several small cleanups/refactorings
* fix color is shown as unknown in json serverinfo
* fix active color is not shown when autoselect is reactivated
* add new rgbtransform
* activate rgbtransform
* integrate new transform and gamma in adjustment, disable transform
* fix brighness limit
* advance upper and lower thresholds
* start removing color transform
* adjust configs/schema
* implement json for new color adjustment
* finish hyperion-remote extension for new adjustment settings
* fix typos
* rename luminance to brightness
fix jsonapi for new adjustment
* fix some bugs in adjustments
* fix i18n
* fix gamma via json
* now brighness values goes from 0-1 with 0.5 is the default for all brighness is equal between the channels. less 0.5 all channels scaled down
to new brighness, above 0.5 if possible channel gets brighter - but brighness is not equal between the channels anymore
brighness value curve is now exponential instead of linear - this feels more natural
* hslv cleanup
* Rename test to test123
* Delete test123
* New color Ajustment
Trilinear interpolation between the 8 corners of the color cube (black, red, green, blue, cyan, magenta, yellow, white)
* Renaming
* overloading getadjustmentX()
* Renaming
* Additional renaming
* Added more RgbChannel
* Added more colors to channelAdjustment
* Added additional colors
* Added additional colors
* Added additional colors
* Added additional color adjustments
* Update MultiColorAdjustment.cpp
* Fixed black adjustment
* Color config in array form
* move name to general
add a version for config file
* start impl. config migrator
* fix typo amd set access level
* fix schemaa name
* fix schema
* add structure for config migrator
* add more structural things for config migrator
* fix not all grabber provide live video
* add schema for trails
* move name to general
add a version for config file
* start impl. config migrator
* fix typo amd set access level
* fix schemaa name
* fix schema
* add structure for config migrator
* on v4l screenshot, print out nosignal threshold values
* separate fractional parameters for no signal detection
* fully implement handling for "rainbow grabber"
* hyperion-v4l2 --screenshot can also evaluate best reagion and color for no signal detection
* tune output of no signal detection
* v4l outputs warninsg only, todo: make it adyustable
* typo
* v4l signal detection, now with validation checks
* remove obsolete schema files
* fix code style
* fix text typos
* code style
* on v4l screenshot, print out nosignal threshold values
* separate fractional parameters for no signal detection
* fully implement handling for "rainbow grabber"
* update lightberry sketches
update compilehowwto (windows disclaimer)
some refactoring in main cmakelists + preparation for windows compile
tune ada driver, set delayAfterConnect default to 1.5s because some arduino (e.g. mega r3) needs this
set priority min/max for grabber/network services - prevent colliding prios between webui/background stuff and grabbers/net services
* add check if config is writable. TODO do something usefull in webui
* fix indention error
* fix typo
* fix webui can't write led config
* typo
* fix cmakelists
* change methode of detecting linux
* always output latest version of config file to webui
* fix permissions after default config export
* tune code
* set permissions for exported effects
* use qt setperm instead of chmod
update effects code style a bit
* add fallback when config is not readable
* ui: when sending config, convert to utf8 to save size and avoid jumbo frames (todo: minify it)
jsonclient: add some constants for websocket frames (taken from https://github.com/zaphoyd/websocketpp/blob/master/websocketpp/frame.hpp)
* webui:
refactory of websocket connector
sended json data is always convert to utf8
* always output latest version of config file to webui
* fix permissions after default config export
* tune code
* set permissions for exported effects
* use qt setperm instead of chmod
update effects code style a bit
* add fallback when config is not readable
* refresh for all :-)
remove dups
* - integrate refresh leds for all devices
- fix schemas for led devices
* add minimum for rewrite time
* rewriteTime: add missing info in config examples
* Added latchtime web configuration for ws2801 device.
Fixed default to be 500000ns
* cleaner code using defaults and added "ns" to web schema
* oops... "ns" not "ms"
* rename platform rpi-pwm to rpi. remove original rpi platform
install symlink to bin folder
create effects folder for custom effects
* fix osx jobs evaluation
* - add rewrite time to serial leds
- rework adalight sketch
* add analog output
* adalight: add analog mode: last led
* tune adalight sketch to final state
move refresh code to leddevice base class, so every leddevice can use it
* - implement a global logbuffer
- providerrs232 reduce log spam
* logger add signal and start json push
* implement logger notifier ... need some cleanup
* imlement logview in webui - the layout stuff is basic atm and needs some tuning
* - implement a global logbuffer
- providerrs232 reduce log spam
* logger add signal and start json push
* implement logger notifier ... need some cleanup
* Update EffectEngine.h
* add reloadEffects function
* add readEffects function
* add reloadEffects function
* Call reloadEffects after handleCreateEffectCommand and handleDeleteEffectCommand
* Add ability to delete custom created Effects
* Add deleteEffect function to Hyperion-Remote
* Add deleteEffect function to Hyperion-Remote
* Update schema.json
* Update JsonSchemas.qrc
* Add schema-delete-effect.json
* Add deleteEffect function to JSON RPC
* Add deleteEffect function to JSON RPC
* Add Effect configuration file (.json) to Effect Definition
* Update EffectDefinition.h
* - remove feature of using multiple config files for automaticly start other hyperion instances
- add auto config file creation
- tune service files
* add auto path creation for initial default config
* debian package:
rename service to hyperiond
remove copy of config file
* remove color temperatire, its the same as color adjustment
* remove temperature from schema
* implement most part of v4l only colro settings,
now hyperion update knows from which component the colors come
* update configs
* fix webui config write
* reomve correction and temperature from hyperion-remote
* implement a function for easy json editor creation
* grabber and kodi moved to new editor func
* webui: implement conf editors
* add missing files and remove debug code
* switch rs232 provider to completly async transfer
* start of implementing a seperate init function for leddevices
* rename setconfig to init
* more fixes
* implement missing code
* fix code style
* remove debug code
* remove debug stuff
* set loglevel to original state
* extend image effects
add a basic light clock
* add alpha values to rainbow
* some effect tuning
* make seconds hand optional and change color to yellow
make blue hours hand always visible
* Started work on DMX512 rs232 device
cloned from sedu - no actual changes yet
* Implemented DMX protocol
Added baudrate debugging to ProviderRs232
* Added support for multiple DMX fixture types
* - effects now can use qt image effects
- rainbow swirtl is now suitable for any led layout - including matrix
* fix rainbow effect
* effect: add radialGradient
* fix some js errors
* optimize code
* try fix travis test not working as expected
* fix default config files
* fix config
* first try
* implement hyperion restart. core function is good, but needs a beeter structuring- something for next refactoring session ;-)
* several fixes (including osx)
merge with upstream
some refactoring
* add some eye candy to webui
* implement effects included in hyperiond binary
* cleanup
* remove install of effects dir. People who wants to develop effects has to copy them from github
effect params for initial effects can be changed in config permanently and other effect params can be changed
via json (currently only temporarily)
* fix schema of fadecandy
webui fix display of specific led options
* add leddevice write support
* cleanup
* webui: tune hue code
* when use json effect definition from putsiede hyperiond but want to use py script from inside hyperiond use ad a :
e.g. fade.py needs a fade.py near the json file, but :fade.py is taken from resource inside hyperiond
* add ability to di
* add abiloty to diable effcts via hyperion config
* use effect name instead of script in active effects and prio register
* finally solve open file handle during effect is playing. Now script is read before, then file closed and then t is run by python
* fix some webui things
- led config tabs
- inital loading screen
optimize qrc file generation
fix compile warning in hyperion.cpp
* cleanup
* more cleanup
* initial support for leddevice options
* fix schema and editor init
* fix led editor labels and schema
* add some led schemas
* led config: insert current values. not yet perfect, but it works
* tune editor style
* initial support for leddevice options
* fix schema and editor init
* fix led editor labels and schema
* add some led schemas
* led config: insert current values. not yet perfect, but it works
* split content and js
tune leds config
* implement connection lost page
* split js/html in huebridge
* add js action for connection lost
* extend led config
make connection loss nicer
* tune led code
add menu entry for grabber
* more tuning of webui
* switch back to botstrap textarea
add v4l to components
* add icon
* extend schema for jsoneditor
* implement ledcolors streaming with 4fps
* implement component state
* make hyperion websocket api event based
* implement new websocket handling for generalconf
* migrate all webui stuff to new event based websocket api
some cleanup ... now all html templates are in content
refactoring of web stuff
* add hyperionport to global
start impl. removing advanced key
* separate dashboard
serverinfo is updated every 3 seconds automatily
add input selection
cleanup and remove not needed stuff
* prepare infrastructure for server sided file execution
* webui minor fixes
* fix compile
* implement led layout view with live colors
* live led vies
* fix general conf
unrigister ledcolors request, when not on leds.html
* fix compiler warning
* prepare realtime ledview and enhance ui
* Changed default baud rate in schema for ws2812spi and sk6812spi
* now sets the default baud_rate speed to 2800000 if omitted.
Previously it used the ProviderSPI default which was 1000000 and guaranteed not to work
* Added warnings if the SPI baud rate is likely out of range
Added some debug statements to ProviderSpi
* initial tpm2net rewrite - doesnt compile yet
* new tpm2.net drive compiles.
rename old tmp2net typos to tpm2net
fixed compiler warning in ws2812b
* added packetsize calculations and the end of frame character.
Output looks good on tcpdump
* removed old tpm2net driver
renamed tpm2netnew to tpm2net
* make hyperion websocket api event based
* implement new websocket handling for generalconf
* migrate all webui stuff to new event based websocket api
some cleanup ... now all html templates are in content
refactoring of web stuff
* add hyperionport to global
start impl. removing advanced key
* separate dashboard
serverinfo is updated every 3 seconds automatily
add input selection
cleanup and remove not needed stuff
* prepare infrastructure for server sided file execution
* webui minor fixes
* fix compile
* fix amlogic for newer kernels
crosscompile stay on 32bit aml with kernel 3.10
* add new platform amlogic64. This is used e.g. for new wetek boxes hub and play2
* implement use of multiple v4l devices.
Not all v4l devices are compat with that or must be attaches to different usb controllers
* fix typo in config
spilt grabber components in "GRABBER" and "V4L"
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