moorescloud / compositor

The compositor allows multiple processes to render to the Holiday simultaneously

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Compositor - multi-process light mixing for Holiday by MooresCloud

The compositor is an always-running background process that opens four named pipes (/run/pipelights.0.fifo through /run/pipelights.3.fifo) and scans them continuously looking for data to render to the Holiday's bulbs.

By convention the pipes are allocated to the following processes

Pipe 0 - System processes (warnings, exceptions, failures) Pipe 1 - IoTAS Pipe 2 - Python processes Pipe 3 - Native processes

At this time there's no pooling mechanism, so it is possible for two processes to be writing to the same FIFO. That could produce - ahem - interesting results.

The data is in the format of 52 lines, each 9 bytes in length (8 characters plus newline)

Flags - 24 bits of ASCII hex in format 0xHHHHHH

NEW_DATA_FLAG 0b0000000000000001 // True if this data is freshly received from pipe REPLACE_FLAG 0b0000000000000010 // if set replace buffer, otherwise mix MASK_FLAG 0b0000000000000100 // if set non-zero bytes are masked in HAS_DATA_FLAG 0b0000000000001000 // Set if there is data to render BRIGHTNESS_FLAG 0b1000000000000000 // Set the brightness in the following 7 bits BRIGHTNESS_MASK 0b0111111100000000 // These are the bits used to determine brightness

App Name - 8 characters of descriptive information: 'IoTASRVC', 'RAINBOWC', etc Bulb RGB value - 24 bits of ASCII hex in format 0xRRGGBB, repeated 50 times

About

The compositor allows multiple processes to render to the Holiday simultaneously


Languages

Language:C 68.9%Language:Python 31.1%