Handle impact of excluding pixbuf from build (#3398)
This commit is contained in:
parent
c8f0ec8a92
commit
56c01fa5c8
|
@ -91,6 +91,7 @@ static int apa102_write(lua_State* L) {
|
|||
nbr_frames = buf_len / 4;
|
||||
break;
|
||||
}
|
||||
#ifdef LUA_USE_MODULES_PIXBUF
|
||||
case LUA_TUSERDATA: {
|
||||
pixbuf *buffer = pixbuf_from_lua_arg(L, 3);
|
||||
luaL_argcheck(L, buffer->nchan == 4, 3, "Pixbuf not 4-channel");
|
||||
|
@ -98,6 +99,7 @@ static int apa102_write(lua_State* L) {
|
|||
nbr_frames = buffer->npix;
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
default:
|
||||
return luaL_argerror(L, 3, "String or pixbuf expected");
|
||||
}
|
||||
|
|
|
@ -77,6 +77,7 @@ static int ICACHE_FLASH_ATTR tm1829_write(lua_State* L)
|
|||
pixels = luaL_checklstring(L, 2, &length);
|
||||
break;
|
||||
}
|
||||
#ifdef LUA_USE_MODULES_PIXBUF
|
||||
case LUA_TUSERDATA: {
|
||||
pixbuf *buffer = pixbuf_from_lua_arg(L, 2);
|
||||
luaL_argcheck(L, pixbuf_channels(buffer) == 3, 2, "Bad pixbuf format");
|
||||
|
@ -84,6 +85,7 @@ static int ICACHE_FLASH_ATTR tm1829_write(lua_State* L)
|
|||
length = 3 * buffer->npix;
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
default:
|
||||
return luaL_argerror(L, 2, "String or pixbuf expected");
|
||||
}
|
||||
|
|
|
@ -118,6 +118,7 @@ static int ICACHE_FLASH_ATTR ws2801_writergb(lua_State* L) {
|
|||
case LUA_TSTRING:
|
||||
values = (const uint8_t*) luaL_checklstring(L, 1, &length);
|
||||
break;
|
||||
#ifdef LUA_USE_MODULES_PIXBUF
|
||||
case LUA_TUSERDATA: {
|
||||
pixbuf *buffer = pixbuf_from_lua_arg(L, 1);
|
||||
luaL_argcheck(L, buffer->nchan == 3, 1, "Pixbuf not 3-channel");
|
||||
|
@ -125,6 +126,7 @@ static int ICACHE_FLASH_ATTR ws2801_writergb(lua_State* L) {
|
|||
length = pixbuf_size(buffer);
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
default:
|
||||
return luaL_argerror(L, 1, "pixbuf or string expected");
|
||||
}
|
||||
|
|
|
@ -134,6 +134,7 @@ static int ws2812_write(lua_State* L) {
|
|||
{
|
||||
buffer1 = lua_tolstring(L, 1, &length1);
|
||||
}
|
||||
#ifdef LUA_USE_MODULES_PIXBUF
|
||||
else if (type == LUA_TUSERDATA)
|
||||
{
|
||||
pixbuf *buffer = pixbuf_from_lua_arg(L, 1);
|
||||
|
@ -141,6 +142,7 @@ static int ws2812_write(lua_State* L) {
|
|||
buffer1 = buffer->values;
|
||||
length1 = pixbuf_size(buffer);
|
||||
}
|
||||
#endif
|
||||
else
|
||||
{
|
||||
luaL_argerror(L, 1, "pixbuf or string expected");
|
||||
|
@ -157,6 +159,7 @@ static int ws2812_write(lua_State* L) {
|
|||
{
|
||||
buffer2 = lua_tolstring(L, 2, &length2);
|
||||
}
|
||||
#ifdef LUA_USE_MODULES_PIXBUF
|
||||
else if (type == LUA_TUSERDATA)
|
||||
{
|
||||
pixbuf *buffer = pixbuf_from_lua_arg(L, 2);
|
||||
|
@ -164,6 +167,7 @@ static int ws2812_write(lua_State* L) {
|
|||
buffer2 = buffer->values;
|
||||
length2 = pixbuf_size(buffer);
|
||||
}
|
||||
#endif
|
||||
else
|
||||
{
|
||||
luaL_argerror(L, 2, "pixbuf or string expected");
|
||||
|
@ -177,14 +181,16 @@ static int ws2812_write(lua_State* L) {
|
|||
|
||||
LROT_BEGIN(ws2812, NULL, 0)
|
||||
LROT_FUNCENTRY( init, ws2812_init )
|
||||
#ifdef LUA_USE_MODULES_PIXBUF
|
||||
LROT_FUNCENTRY( newBuffer, pixbuf_new_lua ) // backwards compatibility
|
||||
LROT_FUNCENTRY( write, ws2812_write )
|
||||
LROT_NUMENTRY( FADE_IN, PIXBUF_FADE_IN ) // BC
|
||||
LROT_NUMENTRY( FADE_OUT, PIXBUF_FADE_OUT ) // BC
|
||||
LROT_NUMENTRY( MODE_SINGLE, MODE_SINGLE )
|
||||
LROT_NUMENTRY( MODE_DUAL, MODE_DUAL )
|
||||
LROT_NUMENTRY( SHIFT_LOGICAL, PIXBUF_SHIFT_LOGICAL ) // BC
|
||||
LROT_NUMENTRY( SHIFT_CIRCULAR, PIXBUF_SHIFT_CIRCULAR ) // BC
|
||||
#endif
|
||||
LROT_FUNCENTRY( write, ws2812_write )
|
||||
LROT_NUMENTRY( MODE_SINGLE, MODE_SINGLE )
|
||||
LROT_NUMENTRY( MODE_DUAL, MODE_DUAL )
|
||||
LROT_END(ws2812, NULL, 0)
|
||||
|
||||
static int luaopen_ws2812(lua_State *L) {
|
||||
|
|
|
@ -13,6 +13,15 @@
|
|||
#include "pixbuf.h"
|
||||
#include "color_utils.h"
|
||||
|
||||
#ifdef LUA_USE_MODULES_WS2812_EFFECTS
|
||||
#ifndef LUA_USE_MODULES_PIXBUF
|
||||
# error module pixbuf is required for ws2812_effects
|
||||
#endif
|
||||
#ifndef LUA_USE_MODULES_COLOR_UTILS
|
||||
# error module color_utilsf is required for ws2812_effects
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define CANARY_VALUE 0x32372132
|
||||
|
||||
#define DEFAULT_MODE 0
|
||||
|
|
|
@ -9,6 +9,10 @@ This module provides Lua access to [APA102 RGB LEDs](https://youtu.be/UYvC-hukz-
|
|||
|
||||
source: [Adafruit](https://www.adafruit.com/products/2343)
|
||||
|
||||
!!! caution
|
||||
|
||||
This module has an _optional_ dependency to the [pixbuf module](pixbuf.md) i.e. it can work without. However, if you compile the firmware without pixbuf the respective features will be missing from this module.
|
||||
|
||||
## apa102.write()
|
||||
Send ABGR data in 8 bits to a APA102 chain.
|
||||
|
||||
|
@ -18,7 +22,7 @@ Send ABGR data in 8 bits to a APA102 chain.
|
|||
#### Parameters
|
||||
- `data_pin` any GPIO pin 0, 1, 2, ...
|
||||
- `clock_pin` any GPIO pin 0, 1, 2, ...
|
||||
- `string` payload to be sent to one or more APA102 LEDs.
|
||||
- `data` payload to be sent to one or more APA102 LEDs.
|
||||
|
||||
It may be a [pixbuf](pixbuf) with four channels or a string,
|
||||
composed from a ABGR quadruplet per element:
|
||||
|
|
|
@ -8,14 +8,18 @@ led controller.
|
|||
|
||||
The library uses any GPIO to bitstream the led control commands.
|
||||
|
||||
!!! caution
|
||||
|
||||
This module has an _optional_ dependency to the [pixbuf module](pixbuf.md) i.e. it can work without. However, if you compile the firmware without pixbuf the respective features will be missing from this module.
|
||||
|
||||
## tm1829.write()
|
||||
Send data to a led strip using native chip format.
|
||||
|
||||
#### Syntax
|
||||
`tm1829.write(string)`
|
||||
`tm1829.write(data)`
|
||||
|
||||
#### Parameters
|
||||
- `string` payload to be sent to one or more TM1829 leds. It is either
|
||||
- `data` payload to be sent to one or more TM1829 leds. It is either
|
||||
a 3-channel [pixbuf](pixbuf) (e.g., `pixbuf.TYPE_RGB`) or a string of
|
||||
raw byte values to be sent.
|
||||
|
||||
|
|
|
@ -3,6 +3,9 @@
|
|||
| :----- | :-------------------- | :---------- | :------ |
|
||||
| 2015-07-12 | [Espressif example](https://github.com/CHERTS/esp8266-devkit/blob/master/Espressif/examples/ESP8266/EspLightNode/user/ws2801.c), [Konrad Beckmann](https://github.com/kbeckmann) | [Konrad Beckmann](https://github.com/kbeckmann) | [ws2801.c](../../app/modules/ws2801.c)|
|
||||
|
||||
!!! caution
|
||||
|
||||
This module has an _optional_ dependency to the [pixbuf module](pixbuf.md) i.e. it can work without. However, if you compile the firmware without pixbuf the respective features will be missing from this module.
|
||||
|
||||
## ws2801.init()
|
||||
Initializes the module and sets the pin configuration.
|
||||
|
@ -18,19 +21,24 @@ Initializes the module and sets the pin configuration.
|
|||
`nil`
|
||||
|
||||
## ws2801.write()
|
||||
Sends a string of RGB Data in 24 bits to WS2801. Don't forget to call `ws2801.init()` before.
|
||||
Sends data of RGB Data in 24 bits to WS2801. Don't forget to call `ws2801.init()` before.
|
||||
|
||||
#### Syntax
|
||||
`ws2801.write(string)`
|
||||
`ws2801.write(data)`
|
||||
|
||||
####Parameters
|
||||
- `string` payload to be sent to one or more WS2801.
|
||||
- `data` payload to be sent to one or more WS2801.
|
||||
|
||||
Payload type could be:
|
||||
|
||||
- `string` representing bytes to send
|
||||
It should be composed from an RGB triplet per element.
|
||||
- `R1` the first pixel's red channel value (0-255)
|
||||
- `G1` the first pixel's green channel value (0-255)
|
||||
- `B1` the first pixel's blue channel value (0-255)<br />
|
||||
... You can connect a lot of WS2801...
|
||||
- `R2`, `G2`, `B2` are the next WS2801's Red, Green, and Blue channel values
|
||||
- a [pixbuf](pixbuf) object containing the bytes to send. The pixbuf's type is not checked!
|
||||
|
||||
#### Returns
|
||||
`nil`
|
||||
|
|
|
@ -15,7 +15,7 @@ Note that dual mode is currently not supported for effects.
|
|||
|
||||
!!! caution
|
||||
|
||||
This module depends on the [color utils module](color-utils.md). Things **will** fail if that module is missing in the firmware!
|
||||
This module depends on the [color utils module](color-utils.md) and [pixbuf module](pixbuf.md). Things **will** fail if those modules are missing in the firmware!
|
||||
|
||||
#### Example usage
|
||||
```lua
|
||||
|
|
|
@ -15,6 +15,10 @@ through the serial port (it will be reconfigured to support WS2812-like
|
|||
protocol). If you want to keep access to Lua's console, you will have to
|
||||
use an other input channel like a TCP server (see [example](https://github.com/nodemcu/nodemcu-firmware/blob/release/lua_modules/telnet/telnet.lua))
|
||||
|
||||
!!! caution
|
||||
|
||||
This module has an _optional_ dependency to the [pixbuf module](pixbuf.md) i.e. it can work without. However, if you compile the firmware without pixbuf the respective features will be missing from this module.
|
||||
|
||||
## ws2812.init()
|
||||
Initialize UART1 and GPIO2, should be called once and before write().
|
||||
Initialize UART0 (TXD0) too if `ws2812.MODE_DUAL` is set.
|
||||
|
@ -54,6 +58,7 @@ and the next invocation thereof.
|
|||
- `data2` (optional) payload to be sent to one or more WS2812 like leds through TXD0 (`ws2812.MODE_DUAL` mode required)
|
||||
|
||||
Payload type could be:
|
||||
|
||||
- `nil` nothing is done
|
||||
- `string` representing bytes to send
|
||||
- a [pixbuf](pixbuf) object containing the bytes to send. The pixbuf's type is not checked!
|
||||
|
@ -90,7 +95,7 @@ For this purpose, the [pixbuf](pixbuf) library offers a read/write buffer and
|
|||
convenient functions for pixel value manipulation.
|
||||
|
||||
For backwards-compatibility, `pixbuf.newBuffer()` is aliased as
|
||||
`ws2812.newBuffer`, but this will be removed in the next nodemcu-firmware
|
||||
`ws2812.newBuffer()`, but this will be removed in the next nodemcu-firmware
|
||||
release.
|
||||
|
||||
#### Example
|
||||
|
|
Loading…
Reference in New Issue