forked from Makuna/NeoPixelBus
Cleanup
This commit is contained in:
@@ -1,9 +1,6 @@
|
|||||||
/*-------------------------------------------------------------------------
|
/*-------------------------------------------------------------------------
|
||||||
NeoPixel library helper functions for Esp32.
|
NeoPixel library helper functions for Esp32.
|
||||||
|
|
||||||
A BIG thanks to Andreas Merkle for the investigation and implementation of
|
|
||||||
a workaround to the GCC bug that drops method attributes from template methods
|
|
||||||
|
|
||||||
Written by Michael C. Miller.
|
Written by Michael C. Miller.
|
||||||
|
|
||||||
I invest time and resources providing this open source code,
|
I invest time and resources providing this open source code,
|
||||||
@@ -44,6 +41,7 @@ Esp32-hal-rmt.c
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <Arduino.h>
|
#include <Arduino.h>
|
||||||
|
#include "NeoEsp32RmtSpeed.h"
|
||||||
|
|
||||||
extern void AddLog(uint32_t loglevel, PGM_P formatP, ...);
|
extern void AddLog(uint32_t loglevel, PGM_P formatP, ...);
|
||||||
|
|
||||||
@@ -57,78 +55,88 @@ extern "C"
|
|||||||
|
|
||||||
#define RMT_LED_STRIP_RESOLUTION_HZ 40000000 // 40MHz resolution - setting of the "old" driver
|
#define RMT_LED_STRIP_RESOLUTION_HZ 40000000 // 40MHz resolution - setting of the "old" driver
|
||||||
|
|
||||||
typedef struct {
|
struct led_strip_encoder_config_t
|
||||||
|
{
|
||||||
uint32_t resolution; /*!< Encoder resolution, in Hz */
|
uint32_t resolution; /*!< Encoder resolution, in Hz */
|
||||||
} led_strip_encoder_config_t;
|
};
|
||||||
|
|
||||||
typedef struct {
|
struct rmt_led_strip_encoder_t
|
||||||
|
{
|
||||||
rmt_encoder_t base;
|
rmt_encoder_t base;
|
||||||
rmt_encoder_t *bytes_encoder;
|
rmt_encoder_t* bytes_encoder;
|
||||||
rmt_encoder_t *copy_encoder;
|
rmt_encoder_t* copy_encoder;
|
||||||
int state;
|
int state;
|
||||||
rmt_symbol_word_t reset_code;
|
rmt_symbol_word_t reset_code;
|
||||||
} rmt_led_strip_encoder_t;
|
};
|
||||||
|
|
||||||
static size_t rmt_encode_led_strip(rmt_encoder_t *encoder, rmt_channel_handle_t channel, const void *primary_data, size_t data_size, rmt_encode_state_t *ret_state)
|
static size_t rmt_encode_led_strip(rmt_encoder_t* encoder, rmt_channel_handle_t channel, const void* primary_data, size_t data_size, rmt_encode_state_t* ret_state)
|
||||||
{
|
{
|
||||||
rmt_led_strip_encoder_t *led_encoder = __containerof(encoder, rmt_led_strip_encoder_t, base);
|
rmt_led_strip_encoder_t* led_encoder = __containerof(encoder, rmt_led_strip_encoder_t, base);
|
||||||
rmt_encoder_handle_t bytes_encoder = led_encoder->bytes_encoder;
|
rmt_encoder_handle_t bytes_encoder = led_encoder->bytes_encoder;
|
||||||
rmt_encoder_handle_t copy_encoder = led_encoder->copy_encoder;
|
rmt_encoder_handle_t copy_encoder = led_encoder->copy_encoder;
|
||||||
rmt_encode_state_t session_state = RMT_ENCODING_RESET;
|
rmt_encode_state_t session_state = RMT_ENCODING_RESET;
|
||||||
rmt_encode_state_t state = RMT_ENCODING_RESET;
|
rmt_encode_state_t state = RMT_ENCODING_RESET;
|
||||||
size_t encoded_symbols = 0;
|
size_t encoded_symbols = 0;
|
||||||
switch (led_encoder->state) {
|
|
||||||
|
switch (led_encoder->state)
|
||||||
|
{
|
||||||
case 0: // send RGB data
|
case 0: // send RGB data
|
||||||
encoded_symbols += bytes_encoder->encode(bytes_encoder, channel, primary_data, data_size, &session_state);
|
encoded_symbols += bytes_encoder->encode(bytes_encoder, channel, primary_data, data_size, &session_state);
|
||||||
if (session_state & RMT_ENCODING_COMPLETE) {
|
if (session_state & RMT_ENCODING_COMPLETE)
|
||||||
|
{
|
||||||
led_encoder->state = 1; // switch to next state when current encoding session finished
|
led_encoder->state = 1; // switch to next state when current encoding session finished
|
||||||
}
|
}
|
||||||
if (session_state & RMT_ENCODING_MEM_FULL) {
|
if (session_state & RMT_ENCODING_MEM_FULL)
|
||||||
|
{
|
||||||
// static_cast<AnimalFlags>(static_cast<int>(a) | static_cast<int>(b));
|
// static_cast<AnimalFlags>(static_cast<int>(a) | static_cast<int>(b));
|
||||||
state = static_cast<rmt_encode_state_t>(static_cast<uint8_t>(state) | static_cast<uint8_t>(RMT_ENCODING_MEM_FULL));
|
state = static_cast<rmt_encode_state_t>(static_cast<uint8_t>(state) | static_cast<uint8_t>(RMT_ENCODING_MEM_FULL));
|
||||||
goto out; // yield if there's no free space for encoding artifacts
|
goto out; // yield if there's no free space for encoding artifacts
|
||||||
}
|
}
|
||||||
// fall-through
|
// fall-through
|
||||||
case 1: // send reset code
|
case 1: // send reset code
|
||||||
encoded_symbols += copy_encoder->encode(copy_encoder, channel, &led_encoder->reset_code,
|
encoded_symbols += copy_encoder->encode(copy_encoder, channel, &led_encoder->reset_code,
|
||||||
sizeof(led_encoder->reset_code), &session_state);
|
sizeof(led_encoder->reset_code), &session_state);
|
||||||
if (session_state & RMT_ENCODING_COMPLETE) {
|
if (session_state & RMT_ENCODING_COMPLETE)
|
||||||
|
{
|
||||||
led_encoder->state = RMT_ENCODING_RESET; // back to the initial encoding session
|
led_encoder->state = RMT_ENCODING_RESET; // back to the initial encoding session
|
||||||
state = static_cast<rmt_encode_state_t>(static_cast<uint8_t>(state) | static_cast<uint8_t>(RMT_ENCODING_COMPLETE));
|
state = static_cast<rmt_encode_state_t>(static_cast<uint8_t>(state) | static_cast<uint8_t>(RMT_ENCODING_COMPLETE));
|
||||||
}
|
}
|
||||||
if (session_state & RMT_ENCODING_MEM_FULL) {
|
if (session_state & RMT_ENCODING_MEM_FULL)
|
||||||
|
{
|
||||||
state = static_cast<rmt_encode_state_t>(static_cast<uint8_t>(state) | static_cast<uint8_t>(RMT_ENCODING_MEM_FULL));
|
state = static_cast<rmt_encode_state_t>(static_cast<uint8_t>(state) | static_cast<uint8_t>(RMT_ENCODING_MEM_FULL));
|
||||||
goto out; // yield if there's no free space for encoding artifacts
|
goto out; // yield if there's no free space for encoding artifacts
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
out:
|
out:
|
||||||
*ret_state = state;
|
*ret_state = state;
|
||||||
return encoded_symbols;
|
return encoded_symbols;
|
||||||
}
|
}
|
||||||
|
|
||||||
static esp_err_t rmt_del_led_strip_encoder(rmt_encoder_t *encoder)
|
static esp_err_t rmt_del_led_strip_encoder(rmt_encoder_t* encoder)
|
||||||
{
|
{
|
||||||
rmt_led_strip_encoder_t *led_encoder = __containerof(encoder, rmt_led_strip_encoder_t, base);
|
rmt_led_strip_encoder_t* led_encoder = __containerof(encoder, rmt_led_strip_encoder_t, base);
|
||||||
rmt_del_encoder(led_encoder->bytes_encoder);
|
rmt_del_encoder(led_encoder->bytes_encoder);
|
||||||
rmt_del_encoder(led_encoder->copy_encoder);
|
rmt_del_encoder(led_encoder->copy_encoder);
|
||||||
delete led_encoder;
|
delete led_encoder;
|
||||||
return ESP_OK;
|
return ESP_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static esp_err_t rmt_led_strip_encoder_reset(rmt_encoder_t *encoder)
|
static esp_err_t rmt_led_strip_encoder_reset(rmt_encoder_t* encoder)
|
||||||
{
|
{
|
||||||
rmt_led_strip_encoder_t *led_encoder = __containerof(encoder, rmt_led_strip_encoder_t, base);
|
rmt_led_strip_encoder_t* led_encoder = __containerof(encoder, rmt_led_strip_encoder_t, base);
|
||||||
rmt_encoder_reset(led_encoder->bytes_encoder);
|
rmt_encoder_reset(led_encoder->bytes_encoder);
|
||||||
rmt_encoder_reset(led_encoder->copy_encoder);
|
rmt_encoder_reset(led_encoder->copy_encoder);
|
||||||
led_encoder->state = RMT_ENCODING_RESET;
|
led_encoder->state = RMT_ENCODING_RESET;
|
||||||
return ESP_OK;
|
return ESP_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static esp_err_t rmt_new_led_strip_encoder(const led_strip_encoder_config_t *config, rmt_encoder_handle_t *ret_encoder, uint32_t bit0, uint32_t bit1)
|
static esp_err_t rmt_new_led_strip_encoder(const led_strip_encoder_config_t* config, rmt_encoder_handle_t* ret_encoder, uint32_t bit0, uint32_t bit1)
|
||||||
{
|
{
|
||||||
const char* TAG = "TEST_RMT"; //TODO: Remove later
|
const char* TAG = "TEST_RMT"; //TODO: Remove later
|
||||||
|
|
||||||
esp_err_t ret = ESP_OK;
|
esp_err_t ret = ESP_OK;
|
||||||
rmt_led_strip_encoder_t *led_encoder = NULL;
|
rmt_led_strip_encoder_t* led_encoder = NULL;
|
||||||
uint32_t reset_ticks = config->resolution / 1000000 * 50 / 2; // reset code duration defaults to 50us
|
uint32_t reset_ticks = config->resolution / 1000000 * 50 / 2; // reset code duration defaults to 50us
|
||||||
rmt_bytes_encoder_config_t bytes_encoder_config;
|
rmt_bytes_encoder_config_t bytes_encoder_config;
|
||||||
rmt_copy_encoder_config_t copy_encoder_config = {};
|
rmt_copy_encoder_config_t copy_encoder_config = {};
|
||||||
@@ -157,331 +165,37 @@ static esp_err_t rmt_new_led_strip_encoder(const led_strip_encoder_config_t *con
|
|||||||
led_encoder->reset_code = reset_code_config;
|
led_encoder->reset_code = reset_code_config;
|
||||||
*ret_encoder = &led_encoder->base;
|
*ret_encoder = &led_encoder->base;
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
err:
|
err:
|
||||||
// AddLog(2,"RMT:could not init led decoder");
|
// AddLog(2,"RMT:could not init led decoder");
|
||||||
if (led_encoder) {
|
if (led_encoder)
|
||||||
if (led_encoder->bytes_encoder) {
|
{
|
||||||
|
if (led_encoder->bytes_encoder)
|
||||||
|
{
|
||||||
rmt_del_encoder(led_encoder->bytes_encoder);
|
rmt_del_encoder(led_encoder->bytes_encoder);
|
||||||
}
|
}
|
||||||
if (led_encoder->copy_encoder) {
|
if (led_encoder->copy_encoder)
|
||||||
|
{
|
||||||
rmt_del_encoder(led_encoder->copy_encoder);
|
rmt_del_encoder(led_encoder->copy_encoder);
|
||||||
}
|
}
|
||||||
delete led_encoder;
|
delete led_encoder;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define NEOPIXELBUS_RMT_INT_FLAGS (ESP_INTR_FLAG_LOWMED)
|
#define NEOPIXELBUS_RMT_INT_FLAGS (ESP_INTR_FLAG_LOWMED)
|
||||||
|
|
||||||
class NeoEsp32RmtSpeed
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
// next section is probably not needed anymore for IDF 5.1
|
|
||||||
// ClkDiv of 2 provides for good resolution and plenty of reset resolution; but
|
|
||||||
// a ClkDiv of 1 will provide enough space for the longest reset and does show
|
|
||||||
// little better pulse accuracy
|
|
||||||
const static uint8_t RmtClockDivider = 2;
|
|
||||||
|
|
||||||
inline constexpr static uint32_t FromNs(uint32_t ns)
|
template<typename T_SPEED> class NeoEsp32RmtMethodBase
|
||||||
{
|
|
||||||
return ns / NsPerRmtTick;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected:
|
|
||||||
const static uint32_t RmtCpu = 80000000L; // 80 mhz RMT clock
|
|
||||||
const static uint32_t NsPerSecond = 1000000000L;
|
|
||||||
const static uint32_t RmtTicksPerSecond = (RmtCpu / RmtClockDivider);
|
|
||||||
const static uint32_t NsPerRmtTick = (NsPerSecond / RmtTicksPerSecond); // about 25
|
|
||||||
// end of deprecated section
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
class NeoEsp32RmtSpeedBase : public NeoEsp32RmtSpeed
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
// this is used rather than the rmt_symbol_word_t as you can't correctly initialize
|
|
||||||
// it as a static constexpr within the template
|
|
||||||
inline constexpr static uint32_t Item32Val(uint16_t nsHigh, uint16_t nsLow)
|
|
||||||
{
|
|
||||||
return (FromNs(nsLow) << 16) | (1 << 15) | (FromNs(nsHigh));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
class NeoEsp32RmtInvertedSpeedBase : public NeoEsp32RmtSpeed
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
// this is used rather than the rmt_symbol_word_t as you can't correctly initialize
|
|
||||||
// it as a static constexpr within the template
|
|
||||||
inline constexpr static uint32_t Item32Val(uint16_t nsHigh, uint16_t nsLow)
|
|
||||||
{
|
|
||||||
return (FromNs(nsLow) << 16) | (1 << 31) | (FromNs(nsHigh));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
class NeoEsp32RmtSpeedWs2811 : public NeoEsp32RmtSpeedBase
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
const static DRAM_ATTR uint32_t RmtBit0 = Item32Val(300, 950); // TODO: DRAM_ATTR debatable everywhere
|
|
||||||
const static DRAM_ATTR uint32_t RmtBit1 = Item32Val(900, 350);
|
|
||||||
const static DRAM_ATTR uint16_t RmtDurationReset = FromNs(300000); // 300us
|
|
||||||
};
|
|
||||||
|
|
||||||
class NeoEsp32RmtSpeedWs2812x : public NeoEsp32RmtSpeedBase
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
const static DRAM_ATTR uint32_t RmtBit0 = Item32Val(400, 850);
|
|
||||||
const static DRAM_ATTR uint32_t RmtBit1 = Item32Val(800, 450);
|
|
||||||
const static DRAM_ATTR uint16_t RmtDurationReset = FromNs(300000); // 300us
|
|
||||||
};
|
|
||||||
|
|
||||||
class NeoEsp32RmtSpeedSk6812 : public NeoEsp32RmtSpeedBase
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
const static DRAM_ATTR uint32_t RmtBit0 = Item32Val(400, 850);
|
|
||||||
const static DRAM_ATTR uint32_t RmtBit1 = Item32Val(800, 450);
|
|
||||||
const static DRAM_ATTR uint16_t RmtDurationReset = FromNs(80000); // 80us
|
|
||||||
};
|
|
||||||
|
|
||||||
// normal is inverted signal
|
|
||||||
class NeoEsp32RmtSpeedTm1814 : public NeoEsp32RmtInvertedSpeedBase
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
const static DRAM_ATTR uint32_t RmtBit0 = Item32Val(360, 890);
|
|
||||||
const static DRAM_ATTR uint32_t RmtBit1 = Item32Val(720, 530);
|
|
||||||
const static DRAM_ATTR uint16_t RmtDurationReset = FromNs(200000); // 200us
|
|
||||||
};
|
|
||||||
|
|
||||||
// normal is inverted signal
|
|
||||||
class NeoEsp32RmtSpeedTm1829 : public NeoEsp32RmtInvertedSpeedBase
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
const static DRAM_ATTR uint32_t RmtBit0 = Item32Val(300, 900);
|
|
||||||
const static DRAM_ATTR uint32_t RmtBit1 = Item32Val(800, 400);
|
|
||||||
const static DRAM_ATTR uint16_t RmtDurationReset = FromNs(200000); // 200us
|
|
||||||
};
|
|
||||||
|
|
||||||
// normal is inverted signal
|
|
||||||
class NeoEsp32RmtSpeedTm1914 : public NeoEsp32RmtInvertedSpeedBase
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
const static DRAM_ATTR uint32_t RmtBit0 = Item32Val(360, 890);
|
|
||||||
const static DRAM_ATTR uint32_t RmtBit1 = Item32Val(720, 530);
|
|
||||||
const static DRAM_ATTR uint16_t RmtDurationReset = FromNs(200000); // 200us
|
|
||||||
};
|
|
||||||
|
|
||||||
class NeoEsp32RmtSpeed800Kbps : public NeoEsp32RmtSpeedBase
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
const static DRAM_ATTR uint32_t RmtBit0 = Item32Val(400, 850);
|
|
||||||
const static DRAM_ATTR uint32_t RmtBit1 = Item32Val(800, 450);
|
|
||||||
const static DRAM_ATTR uint16_t RmtDurationReset = FromNs(50000); // 50us
|
|
||||||
};
|
|
||||||
|
|
||||||
class NeoEsp32RmtSpeed400Kbps : public NeoEsp32RmtSpeedBase
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
const static DRAM_ATTR uint32_t RmtBit0 = Item32Val(800, 1700);
|
|
||||||
const static DRAM_ATTR uint32_t RmtBit1 = Item32Val(1600, 900);
|
|
||||||
const static DRAM_ATTR uint16_t RmtDurationReset = FromNs(50000); // 50us
|
|
||||||
};
|
|
||||||
|
|
||||||
class NeoEsp32RmtSpeedApa106 : public NeoEsp32RmtSpeedBase
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
const static DRAM_ATTR uint32_t RmtBit0 = Item32Val(350, 1350);
|
|
||||||
const static DRAM_ATTR uint32_t RmtBit1 = Item32Val(1350, 350);
|
|
||||||
const static DRAM_ATTR uint16_t RmtDurationReset = FromNs(50000); // 50us
|
|
||||||
};
|
|
||||||
|
|
||||||
class NeoEsp32RmtSpeedTx1812 : public NeoEsp32RmtSpeedBase
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
const static DRAM_ATTR uint32_t RmtBit0 = Item32Val(300, 600);
|
|
||||||
const static DRAM_ATTR uint32_t RmtBit1 = Item32Val(600, 300);
|
|
||||||
const static DRAM_ATTR uint16_t RmtDurationReset = FromNs(80000); // 80us
|
|
||||||
};
|
|
||||||
|
|
||||||
class NeoEsp32RmtInvertedSpeedWs2811 : public NeoEsp32RmtInvertedSpeedBase
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
const static DRAM_ATTR uint32_t RmtBit0 = Item32Val(300, 950);
|
|
||||||
const static DRAM_ATTR uint32_t RmtBit1 = Item32Val(900, 350);
|
|
||||||
const static DRAM_ATTR uint16_t RmtDurationReset = FromNs(300000); // 300us
|
|
||||||
};
|
|
||||||
|
|
||||||
class NeoEsp32RmtInvertedSpeedWs2812x : public NeoEsp32RmtInvertedSpeedBase
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
const static DRAM_ATTR uint32_t RmtBit0 = Item32Val(400, 850);
|
|
||||||
const static DRAM_ATTR uint32_t RmtBit1 = Item32Val(800, 450);
|
|
||||||
const static DRAM_ATTR uint16_t RmtDurationReset = FromNs(300000); // 300us
|
|
||||||
};
|
|
||||||
|
|
||||||
class NeoEsp32RmtInvertedSpeedSk6812 : public NeoEsp32RmtInvertedSpeedBase
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
const static DRAM_ATTR uint32_t RmtBit0 = Item32Val(400, 850);
|
|
||||||
const static DRAM_ATTR uint32_t RmtBit1 = Item32Val(800, 450);
|
|
||||||
const static DRAM_ATTR uint16_t RmtDurationReset = FromNs(80000); // 80us
|
|
||||||
};
|
|
||||||
|
|
||||||
// normal is inverted signal
|
|
||||||
class NeoEsp32RmtInvertedSpeedTm1814 : public NeoEsp32RmtSpeedBase
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
const static DRAM_ATTR uint32_t RmtBit0 = Item32Val(360, 890);
|
|
||||||
const static DRAM_ATTR uint32_t RmtBit1 = Item32Val(720, 530);
|
|
||||||
const static DRAM_ATTR uint16_t RmtDurationReset = FromNs(200000); // 200us
|
|
||||||
};
|
|
||||||
|
|
||||||
// normal is inverted signal
|
|
||||||
class NeoEsp32RmtInvertedSpeedTm1829 : public NeoEsp32RmtSpeedBase
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
const static DRAM_ATTR uint32_t RmtBit0 = Item32Val(300, 900);
|
|
||||||
const static DRAM_ATTR uint32_t RmtBit1 = Item32Val(800, 400);
|
|
||||||
const static DRAM_ATTR uint16_t RmtDurationReset = FromNs(200000); // 200us
|
|
||||||
};
|
|
||||||
|
|
||||||
// normal is inverted signal
|
|
||||||
class NeoEsp32RmtInvertedSpeedTm1914 : public NeoEsp32RmtSpeedBase
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
const static DRAM_ATTR uint32_t RmtBit0 = Item32Val(360, 890);
|
|
||||||
const static DRAM_ATTR uint32_t RmtBit1 = Item32Val(720, 530);
|
|
||||||
const static DRAM_ATTR uint16_t RmtDurationReset = FromNs(200000); // 200us
|
|
||||||
};
|
|
||||||
|
|
||||||
class NeoEsp32RmtInvertedSpeed800Kbps : public NeoEsp32RmtInvertedSpeedBase
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
const static DRAM_ATTR uint32_t RmtBit0 = Item32Val(400, 850);
|
|
||||||
const static DRAM_ATTR uint32_t RmtBit1 = Item32Val(800, 450);
|
|
||||||
const static DRAM_ATTR uint16_t RmtDurationReset = FromNs(50000); // 50us
|
|
||||||
};
|
|
||||||
|
|
||||||
class NeoEsp32RmtInvertedSpeed400Kbps : public NeoEsp32RmtInvertedSpeedBase
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
const static DRAM_ATTR uint32_t RmtBit0 = Item32Val(800, 1700);
|
|
||||||
const static DRAM_ATTR uint32_t RmtBit1 = Item32Val(1600, 900);
|
|
||||||
const static DRAM_ATTR uint16_t RmtDurationReset = FromNs(50000); // 50us
|
|
||||||
};
|
|
||||||
|
|
||||||
class NeoEsp32RmtInvertedSpeedApa106 : public NeoEsp32RmtInvertedSpeedBase
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
const static DRAM_ATTR uint32_t RmtBit0 = Item32Val(350, 1350);
|
|
||||||
const static DRAM_ATTR uint32_t RmtBit1 = Item32Val(1350, 350);
|
|
||||||
const static DRAM_ATTR uint16_t RmtDurationReset = FromNs(50000); // 50us
|
|
||||||
};
|
|
||||||
|
|
||||||
class NeoEsp32RmtInvertedSpeedTx1812 : public NeoEsp32RmtInvertedSpeedBase
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
const static DRAM_ATTR uint32_t RmtBit0 = Item32Val(300, 600);
|
|
||||||
const static DRAM_ATTR uint32_t RmtBit1 = Item32Val(600, 300);
|
|
||||||
const static DRAM_ATTR uint16_t RmtDurationReset = FromNs(80000); // 80us
|
|
||||||
};
|
|
||||||
|
|
||||||
class NeoEsp32RmtChannel0
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
NeoEsp32RmtChannel0() {};
|
|
||||||
rmt_channel_handle_t RmtChannelNumber = NULL;
|
|
||||||
};
|
|
||||||
|
|
||||||
class NeoEsp32RmtChannel1
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
NeoEsp32RmtChannel1() {};
|
|
||||||
|
|
||||||
rmt_channel_handle_t RmtChannelNumber = NULL;
|
|
||||||
};
|
|
||||||
|
|
||||||
#if !defined(CONFIG_IDF_TARGET_ESP32C6) // C6 only 2 RMT channels ??
|
|
||||||
class NeoEsp32RmtChannel2
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
NeoEsp32RmtChannel2() {};
|
|
||||||
|
|
||||||
rmt_channel_handle_t RmtChannelNumber = NULL;
|
|
||||||
};
|
|
||||||
|
|
||||||
class NeoEsp32RmtChannel3
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
NeoEsp32RmtChannel3() {};
|
|
||||||
|
|
||||||
protected:
|
|
||||||
rmt_channel_handle_t RmtChannelNumber = NULL;
|
|
||||||
};
|
|
||||||
#endif // !defined(CONFIG_IDF_TARGET_ESP32C6)
|
|
||||||
#if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C6)
|
|
||||||
|
|
||||||
class NeoEsp32RmtChannel4
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
NeoEsp32RmtChannel4() {};
|
|
||||||
|
|
||||||
rmt_channel_handle_t RmtChannelNumber = NULL;
|
|
||||||
};
|
|
||||||
|
|
||||||
class NeoEsp32RmtChannel5
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
NeoEsp32RmtChannel5() {};
|
|
||||||
|
|
||||||
rmt_channel_handle_t RmtChannelNumber = NULL;
|
|
||||||
};
|
|
||||||
|
|
||||||
class NeoEsp32RmtChannel6
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
NeoEsp32RmtChannel6() {};
|
|
||||||
|
|
||||||
rmt_channel_handle_t RmtChannelNumber = NULL;
|
|
||||||
};
|
|
||||||
|
|
||||||
class NeoEsp32RmtChannel7
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
NeoEsp32RmtChannel7() {};
|
|
||||||
|
|
||||||
rmt_channel_handle_t RmtChannelNumber = NULL;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// dynamic channel support
|
|
||||||
class NeoEsp32RmtChannelN
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
NeoEsp32RmtChannelN(NeoBusChannel channel) :
|
|
||||||
RmtChannelNumber(RmtChannelNumber)
|
|
||||||
{
|
|
||||||
RmtChannelNumber = NULL;
|
|
||||||
};
|
|
||||||
NeoEsp32RmtChannelN() = delete; // no default constructor
|
|
||||||
rmt_channel_handle_t RmtChannelNumber = NULL;
|
|
||||||
};
|
|
||||||
|
|
||||||
template<typename T_SPEED, typename T_CHANNEL> class NeoEsp32RmtMethodBase
|
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
typedef NeoNoSettings SettingsObject;
|
typedef NeoNoSettings SettingsObject;
|
||||||
|
|
||||||
NeoEsp32RmtMethodBase(uint8_t pin, uint16_t pixelCount, size_t elementSize, size_t settingsSize) :
|
NeoEsp32RmtMethodBase(uint8_t pin, uint16_t pixelCount, size_t elementSize, size_t settingsSize, NeoBusChannel channel = 0) :
|
||||||
_sizeData(pixelCount * elementSize + settingsSize),
|
|
||||||
_pin(pin)
|
|
||||||
{
|
|
||||||
construct();
|
|
||||||
}
|
|
||||||
|
|
||||||
NeoEsp32RmtMethodBase(uint8_t pin, uint16_t pixelCount, size_t elementSize, size_t settingsSize, NeoBusChannel channel) :
|
|
||||||
_sizeData(pixelCount* elementSize + settingsSize),
|
_sizeData(pixelCount* elementSize + settingsSize),
|
||||||
_pin(pin),
|
_pin(pin),
|
||||||
_channel(channel)
|
_channel(NULL)
|
||||||
{
|
{
|
||||||
construct();
|
construct();
|
||||||
}
|
}
|
||||||
@@ -491,8 +205,8 @@ public:
|
|||||||
// wait until the last send finishes before destructing everything
|
// wait until the last send finishes before destructing everything
|
||||||
// arbitrary time out of 10 seconds
|
// arbitrary time out of 10 seconds
|
||||||
|
|
||||||
ESP_ERROR_CHECK_WITHOUT_ABORT(rmt_tx_wait_all_done(_channel.RmtChannelNumber, 10000 / portTICK_PERIOD_MS));
|
ESP_ERROR_CHECK_WITHOUT_ABORT(rmt_tx_wait_all_done(_channel, 10000 / portTICK_PERIOD_MS));
|
||||||
ESP_ERROR_CHECK( rmt_del_channel(_channel.RmtChannelNumber));
|
ESP_ERROR_CHECK(rmt_del_channel(_channel));
|
||||||
|
|
||||||
gpio_matrix_out(_pin, 0x100, false, false);
|
gpio_matrix_out(_pin, 0x100, false, false);
|
||||||
pinMode(_pin, INPUT);
|
pinMode(_pin, INPUT);
|
||||||
@@ -504,7 +218,7 @@ public:
|
|||||||
|
|
||||||
bool IsReadyToUpdate() const
|
bool IsReadyToUpdate() const
|
||||||
{
|
{
|
||||||
return (ESP_OK == rmt_tx_wait_all_done(_channel.RmtChannelNumber, 0));
|
return (ESP_OK == rmt_tx_wait_all_done(_channel, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Initialize()
|
void Initialize()
|
||||||
@@ -519,7 +233,7 @@ public:
|
|||||||
config.flags.invert_out = false; // do not invert output signal
|
config.flags.invert_out = false; // do not invert output signal
|
||||||
config.flags.with_dma = false; // do not need DMA backend
|
config.flags.with_dma = false; // do not need DMA backend
|
||||||
|
|
||||||
ret += rmt_new_tx_channel(&config,&_channel.RmtChannelNumber);
|
ret += rmt_new_tx_channel(&config, &_channel);
|
||||||
led_strip_encoder_config_t encoder_config = {};
|
led_strip_encoder_config_t encoder_config = {};
|
||||||
encoder_config.resolution = RMT_LED_STRIP_RESOLUTION_HZ;
|
encoder_config.resolution = RMT_LED_STRIP_RESOLUTION_HZ;
|
||||||
|
|
||||||
@@ -528,7 +242,7 @@ public:
|
|||||||
ret += rmt_new_led_strip_encoder(&encoder_config, &_led_encoder, T_SPEED::RmtBit0, T_SPEED::RmtBit1);
|
ret += rmt_new_led_strip_encoder(&encoder_config, &_led_encoder, T_SPEED::RmtBit0, T_SPEED::RmtBit1);
|
||||||
|
|
||||||
// ESP_LOGI(TAG, "Enable RMT TX channel");
|
// ESP_LOGI(TAG, "Enable RMT TX channel");
|
||||||
ret += rmt_enable(_channel.RmtChannelNumber);
|
ret += rmt_enable(_channel);
|
||||||
// if (ret) {
|
// if (ret) {
|
||||||
// AddLog(2,"RMT: initialized with error code: %u on pin: %u",ret, _pin);
|
// AddLog(2,"RMT: initialized with error code: %u on pin: %u",ret, _pin);
|
||||||
// }
|
// }
|
||||||
@@ -541,11 +255,11 @@ public:
|
|||||||
// this will time out at 10 seconds, an arbitrarily long period of time
|
// this will time out at 10 seconds, an arbitrarily long period of time
|
||||||
// and do nothing if this happens
|
// and do nothing if this happens
|
||||||
|
|
||||||
if (ESP_OK == ESP_ERROR_CHECK_WITHOUT_ABORT(rmt_tx_wait_all_done(_channel.RmtChannelNumber, 10000 / portTICK_PERIOD_MS)))
|
if (ESP_OK == ESP_ERROR_CHECK_WITHOUT_ABORT(rmt_tx_wait_all_done(_channel, 10000 / portTICK_PERIOD_MS)))
|
||||||
{
|
{
|
||||||
// AddLog(2,"__ %u", _sizeData);
|
// AddLog(2,"__ %u", _sizeData);
|
||||||
// now start the RMT transmit with the editing buffer before we swap
|
// now start the RMT transmit with the editing buffer before we swap
|
||||||
esp_err_t ret = rmt_transmit(_channel.RmtChannelNumber, _led_encoder, _dataEditing, _sizeData, &_tx_config); // 3 for _sizeData
|
esp_err_t ret = rmt_transmit(_channel, _led_encoder, _dataEditing, _sizeData, &_tx_config); // 3 for _sizeData
|
||||||
// AddLog(2,"rmt_transmit: %u", ret);
|
// AddLog(2,"rmt_transmit: %u", ret);
|
||||||
if (maintainBufferConsistency)
|
if (maintainBufferConsistency)
|
||||||
{
|
{
|
||||||
@@ -562,8 +276,8 @@ public:
|
|||||||
|
|
||||||
bool AlwaysUpdate()
|
bool AlwaysUpdate()
|
||||||
{
|
{
|
||||||
// this method requires update to be called only if changes to buffer
|
// this method requires update to be called only if changes to buffer
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t* getData() const
|
uint8_t* getData() const
|
||||||
@@ -577,8 +291,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
void applySettings(const SettingsObject& settings)
|
void applySettings(const SettingsObject& settings)
|
||||||
{
|
{}
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
const size_t _sizeData; // Size of '_data*' buffers
|
const size_t _sizeData; // Size of '_data*' buffers
|
||||||
@@ -586,13 +299,12 @@ private:
|
|||||||
|
|
||||||
rmt_transmit_config_t _tx_config = {};
|
rmt_transmit_config_t _tx_config = {};
|
||||||
rmt_encoder_handle_t _led_encoder = nullptr;
|
rmt_encoder_handle_t _led_encoder = nullptr;
|
||||||
|
rmt_channel_handle_t _channel = nullptr; // holds instance for multi channel support
|
||||||
T_CHANNEL _channel; // holds instance for multi channel support
|
|
||||||
|
|
||||||
|
|
||||||
// Holds data stream which include LED color values and other settings as needed
|
// Holds data stream which include LED color values and other settings as needed
|
||||||
uint8_t* _dataEditing; // exposed for get and set
|
uint8_t* _dataEditing; // exposed for get and set
|
||||||
uint8_t* _dataSending; // used for async send using RMT
|
uint8_t* _dataSending; // used for async send using RMT
|
||||||
|
|
||||||
|
|
||||||
void construct()
|
void construct()
|
||||||
@@ -607,215 +319,31 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
// normal
|
// normal
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedWs2811, NeoEsp32RmtChannelN> NeoEsp32RmtNWs2811Method;
|
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedWs2811> NeoEsp32RmtXWs2811Method;
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedWs2812x, NeoEsp32RmtChannelN> NeoEsp32RmtNWs2812xMethod;
|
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedWs2812x> NeoEsp32RmtXWs2812xMethod;
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedSk6812, NeoEsp32RmtChannelN> NeoEsp32RmtNSk6812Method;
|
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedSk6812> NeoEsp32RmtXSk6812Method;
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedTm1814, NeoEsp32RmtChannelN> NeoEsp32RmtNTm1814Method;
|
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedTm1814> NeoEsp32RmtXTm1814Method;
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedTm1829, NeoEsp32RmtChannelN> NeoEsp32RmtNTm1829Method;
|
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedTm1829> NeoEsp32RmtXTm1829Method;
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedTm1914, NeoEsp32RmtChannelN> NeoEsp32RmtNTm1914Method;
|
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedTm1914> NeoEsp32RmtXTm1914Method;
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedApa106, NeoEsp32RmtChannelN> NeoEsp32RmtNApa106Method;
|
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedApa106> NeoEsp32RmtXApa106Method;
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedTx1812, NeoEsp32RmtChannelN> NeoEsp32RmtNTx1812Method;
|
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedTx1812> NeoEsp32RmtXTx1812Method;
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeed800Kbps, NeoEsp32RmtChannelN> NeoEsp32RmtN800KbpsMethod;
|
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeed800Kbps> NeoEsp32RmtX800KbpsMethod;
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeed400Kbps, NeoEsp32RmtChannelN> NeoEsp32RmtN400KbpsMethod;
|
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeed400Kbps> NeoEsp32RmtX400KbpsMethod;
|
||||||
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedWs2811, NeoEsp32RmtChannel0> NeoEsp32Rmt0Ws2811Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedWs2812x, NeoEsp32RmtChannel0> NeoEsp32Rmt0Ws2812xMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedSk6812, NeoEsp32RmtChannel0> NeoEsp32Rmt0Sk6812Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedTm1814, NeoEsp32RmtChannel0> NeoEsp32Rmt0Tm1814Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedTm1829, NeoEsp32RmtChannel0> NeoEsp32Rmt0Tm1829Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedTm1914, NeoEsp32RmtChannel0> NeoEsp32Rmt0Tm1914Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedApa106, NeoEsp32RmtChannel0> NeoEsp32Rmt0Apa106Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedTx1812, NeoEsp32RmtChannel0> NeoEsp32Rmt0Tx1812Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeed800Kbps, NeoEsp32RmtChannel0> NeoEsp32Rmt0800KbpsMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeed400Kbps, NeoEsp32RmtChannel0> NeoEsp32Rmt0400KbpsMethod;
|
|
||||||
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedWs2811, NeoEsp32RmtChannel1> NeoEsp32Rmt1Ws2811Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedWs2812x, NeoEsp32RmtChannel1> NeoEsp32Rmt1Ws2812xMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedSk6812, NeoEsp32RmtChannel1> NeoEsp32Rmt1Sk6812Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedTm1814, NeoEsp32RmtChannel1> NeoEsp32Rmt1Tm1814Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedTm1829, NeoEsp32RmtChannel1> NeoEsp32Rmt1Tm1829Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedTm1914, NeoEsp32RmtChannel1> NeoEsp32Rmt1Tm1914Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedApa106, NeoEsp32RmtChannel1> NeoEsp32Rmt1Apa106Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedTx1812, NeoEsp32RmtChannel1> NeoEsp32Rmt1Tx1812Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeed800Kbps, NeoEsp32RmtChannel1> NeoEsp32Rmt1800KbpsMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeed400Kbps, NeoEsp32RmtChannel1> NeoEsp32Rmt1400KbpsMethod;
|
|
||||||
|
|
||||||
#if !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C6)
|
|
||||||
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedWs2811, NeoEsp32RmtChannel2> NeoEsp32Rmt2Ws2811Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedWs2812x, NeoEsp32RmtChannel2> NeoEsp32Rmt2Ws2812xMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedSk6812, NeoEsp32RmtChannel2> NeoEsp32Rmt2Sk6812Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedTm1814, NeoEsp32RmtChannel2> NeoEsp32Rmt2Tm1814Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedTm1829, NeoEsp32RmtChannel2> NeoEsp32Rmt2Tm1829Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedTm1914, NeoEsp32RmtChannel2> NeoEsp32Rmt2Tm1914Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedApa106, NeoEsp32RmtChannel2> NeoEsp32Rmt2Apa106Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedTx1812, NeoEsp32RmtChannel2> NeoEsp32Rmt2Tx1812Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeed800Kbps, NeoEsp32RmtChannel2> NeoEsp32Rmt2800KbpsMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeed400Kbps, NeoEsp32RmtChannel2> NeoEsp32Rmt2400KbpsMethod;
|
|
||||||
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedWs2811, NeoEsp32RmtChannel3> NeoEsp32Rmt3Ws2811Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedWs2812x, NeoEsp32RmtChannel3> NeoEsp32Rmt3Ws2812xMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedSk6812, NeoEsp32RmtChannel3> NeoEsp32Rmt3Sk6812Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedTm1814, NeoEsp32RmtChannel3> NeoEsp32Rmt3Tm1814Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedTm1829, NeoEsp32RmtChannel3> NeoEsp32Rmt3Tm1829Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedTm1914, NeoEsp32RmtChannel3> NeoEsp32Rmt3Tm1914Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedApa106, NeoEsp32RmtChannel3> NeoEsp32Rmt3Apa106Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedTx1812, NeoEsp32RmtChannel3> NeoEsp32Rmt3Tx1812Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeed800Kbps, NeoEsp32RmtChannel3> NeoEsp32Rmt3800KbpsMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeed400Kbps, NeoEsp32RmtChannel3> NeoEsp32Rmt3400KbpsMethod;
|
|
||||||
|
|
||||||
#if !defined(CONFIG_IDF_TARGET_ESP32S2)
|
|
||||||
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedWs2811, NeoEsp32RmtChannel4> NeoEsp32Rmt4Ws2811Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedWs2812x, NeoEsp32RmtChannel4> NeoEsp32Rmt4Ws2812xMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedSk6812, NeoEsp32RmtChannel4> NeoEsp32Rmt4Sk6812Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedTm1814, NeoEsp32RmtChannel4> NeoEsp32Rmt4Tm1814Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedTm1829, NeoEsp32RmtChannel4> NeoEsp32Rmt4Tm1829Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedTm1914, NeoEsp32RmtChannel4> NeoEsp32Rmt4Tm1914Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedApa106, NeoEsp32RmtChannel4> NeoEsp32Rmt4Apa106Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedTx1812, NeoEsp32RmtChannel4> NeoEsp32Rmt4Tx1812Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeed800Kbps, NeoEsp32RmtChannel4> NeoEsp32Rmt4800KbpsMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeed400Kbps, NeoEsp32RmtChannel4> NeoEsp32Rmt4400KbpsMethod;
|
|
||||||
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedWs2811, NeoEsp32RmtChannel5> NeoEsp32Rmt5Ws2811Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedWs2812x, NeoEsp32RmtChannel5> NeoEsp32Rmt5Ws2812xMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedSk6812, NeoEsp32RmtChannel5> NeoEsp32Rmt5Sk6812Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedTm1814, NeoEsp32RmtChannel5> NeoEsp32Rmt5Tm1814Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedTm1829, NeoEsp32RmtChannel5> NeoEsp32Rmt5Tm1829Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedTm1914, NeoEsp32RmtChannel5> NeoEsp32Rmt5Tm1914Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedApa106, NeoEsp32RmtChannel5> NeoEsp32Rmt5Apa106Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedTx1812, NeoEsp32RmtChannel5> NeoEsp32Rmt5Tx1812Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeed800Kbps, NeoEsp32RmtChannel5> NeoEsp32Rmt5800KbpsMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeed400Kbps, NeoEsp32RmtChannel5> NeoEsp32Rmt5400KbpsMethod;
|
|
||||||
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedWs2811, NeoEsp32RmtChannel6> NeoEsp32Rmt6Ws2811Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedWs2812x, NeoEsp32RmtChannel6> NeoEsp32Rmt6Ws2812xMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedSk6812, NeoEsp32RmtChannel6> NeoEsp32Rmt6Sk6812Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedTm1814, NeoEsp32RmtChannel6> NeoEsp32Rmt6Tm1814Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedTm1829, NeoEsp32RmtChannel6> NeoEsp32Rmt6Tm1829Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedTm1914, NeoEsp32RmtChannel6> NeoEsp32Rmt6Tm1914Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedApa106, NeoEsp32RmtChannel6> NeoEsp32Rmt6Apa106Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedTx1812, NeoEsp32RmtChannel6> NeoEsp32Rmt6Tx1812Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeed800Kbps, NeoEsp32RmtChannel6> NeoEsp32Rmt6800KbpsMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeed400Kbps, NeoEsp32RmtChannel6> NeoEsp32Rmt6400KbpsMethod;
|
|
||||||
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedWs2811, NeoEsp32RmtChannel7> NeoEsp32Rmt7Ws2811Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedWs2812x, NeoEsp32RmtChannel7> NeoEsp32Rmt7Ws2812xMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedSk6812, NeoEsp32RmtChannel7> NeoEsp32Rmt7Sk6812Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedTm1814, NeoEsp32RmtChannel7> NeoEsp32Rmt7Tm1814Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedTm1829, NeoEsp32RmtChannel7> NeoEsp32Rmt7Tm1829Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedTm1914, NeoEsp32RmtChannel7> NeoEsp32Rmt7Tm1914Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedApa106, NeoEsp32RmtChannel7> NeoEsp32Rmt7Apa106Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeedTx1812, NeoEsp32RmtChannel7> NeoEsp32Rmt7Tx1812Method;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeed800Kbps, NeoEsp32RmtChannel7> NeoEsp32Rmt7800KbpsMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtSpeed400Kbps, NeoEsp32RmtChannel7> NeoEsp32Rmt7400KbpsMethod;
|
|
||||||
|
|
||||||
#endif // !defined(CONFIG_IDF_TARGET_ESP32S2)
|
#endif // !defined(CONFIG_IDF_TARGET_ESP32S2)
|
||||||
#endif // !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C3)
|
#endif // !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C3)
|
||||||
|
|
||||||
// inverted
|
// inverted
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedWs2811, NeoEsp32RmtChannelN> NeoEsp32RmtNWs2811InvertedMethod;
|
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedWs2811> NeoEsp32RmtXWs2811InvertedMethod;
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedWs2812x, NeoEsp32RmtChannelN> NeoEsp32RmtNWs2812xInvertedMethod;
|
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedWs2812x> NeoEsp32RmtXWs2812xInvertedMethod;
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedSk6812, NeoEsp32RmtChannelN> NeoEsp32RmtNSk6812InvertedMethod;
|
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedSk6812> NeoEsp32RmtXSk6812InvertedMethod;
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedTm1814, NeoEsp32RmtChannelN> NeoEsp32RmtNTm1814InvertedMethod;
|
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedTm1814> NeoEsp32RmtXTm1814InvertedMethod;
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedTm1829, NeoEsp32RmtChannelN> NeoEsp32RmtNTm1829InvertedMethod;
|
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedTm1829> NeoEsp32RmtXTm1829InvertedMethod;
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedTm1914, NeoEsp32RmtChannelN> NeoEsp32RmtNTm1914InvertedMethod;
|
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedTm1914> NeoEsp32RmtXTm1914InvertedMethod;
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedApa106, NeoEsp32RmtChannelN> NeoEsp32RmtNApa106InvertedMethod;
|
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedApa106> NeoEsp32RmtXApa106InvertedMethod;
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedTx1812, NeoEsp32RmtChannelN> NeoEsp32RmtNTx1812InvertedMethod;
|
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedTx1812> NeoEsp32RmtXTx1812InvertedMethod;
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeed800Kbps, NeoEsp32RmtChannelN> NeoEsp32RmtN800KbpsInvertedMethod;
|
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeed800Kbps> NeoEsp32RmtX800KbpsInvertedMethod;
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeed400Kbps, NeoEsp32RmtChannelN> NeoEsp32RmtN400KbpsInvertedMethod;
|
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeed400Kbps> NeoEsp32RmtX400KbpsInvertedMethod;
|
||||||
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedWs2811, NeoEsp32RmtChannel0> NeoEsp32Rmt0Ws2811InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedWs2812x, NeoEsp32RmtChannel0> NeoEsp32Rmt0Ws2812xInvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedSk6812, NeoEsp32RmtChannel0> NeoEsp32Rmt0Sk6812InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedTm1814, NeoEsp32RmtChannel0> NeoEsp32Rmt0Tm1814InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedTm1829, NeoEsp32RmtChannel0> NeoEsp32Rmt0Tm1829InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedTm1914, NeoEsp32RmtChannel0> NeoEsp32Rmt0Tm1914InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedApa106, NeoEsp32RmtChannel0> NeoEsp32Rmt0Apa106InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedTx1812, NeoEsp32RmtChannel0> NeoEsp32Rmt0Tx1812InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeed800Kbps, NeoEsp32RmtChannel0> NeoEsp32Rmt0800KbpsInvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeed400Kbps, NeoEsp32RmtChannel0> NeoEsp32Rmt0400KbpsInvertedMethod;
|
|
||||||
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedWs2811, NeoEsp32RmtChannel1> NeoEsp32Rmt1Ws2811InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedWs2812x, NeoEsp32RmtChannel1> NeoEsp32Rmt1Ws2812xInvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedSk6812, NeoEsp32RmtChannel1> NeoEsp32Rmt1Sk6812InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedTm1814, NeoEsp32RmtChannel1> NeoEsp32Rmt1Tm1814InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedTm1829, NeoEsp32RmtChannel1> NeoEsp32Rmt1Tm1829InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedTm1914, NeoEsp32RmtChannel1> NeoEsp32Rmt1Tm1914InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedApa106, NeoEsp32RmtChannel1> NeoEsp32Rmt1Apa106InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedTx1812, NeoEsp32RmtChannel1> NeoEsp32Rmt1Tx1812InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeed800Kbps, NeoEsp32RmtChannel1> NeoEsp32Rmt1800KbpsInvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeed400Kbps, NeoEsp32RmtChannel1> NeoEsp32Rmt1400KbpsInvertedMethod;
|
|
||||||
|
|
||||||
#if !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C6)
|
|
||||||
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedWs2811, NeoEsp32RmtChannel2> NeoEsp32Rmt2Ws2811InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedWs2812x, NeoEsp32RmtChannel2> NeoEsp32Rmt2Ws2812xInvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedSk6812, NeoEsp32RmtChannel2> NeoEsp32Rmt2Sk6812InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedTm1814, NeoEsp32RmtChannel2> NeoEsp32Rmt2Tm1814InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedTm1829, NeoEsp32RmtChannel2> NeoEsp32Rmt2Tm1829InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedTm1914, NeoEsp32RmtChannel2> NeoEsp32Rmt2Tm1914InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedApa106, NeoEsp32RmtChannel2> NeoEsp32Rmt2Apa106InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedTx1812, NeoEsp32RmtChannel2> NeoEsp32Rmt2Tx1812InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeed800Kbps, NeoEsp32RmtChannel2> NeoEsp32Rmt2800KbpsInvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeed400Kbps, NeoEsp32RmtChannel2> NeoEsp32Rmt2400KbpsInvertedMethod;
|
|
||||||
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedWs2811, NeoEsp32RmtChannel3> NeoEsp32Rmt3Ws2811InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedWs2812x, NeoEsp32RmtChannel3> NeoEsp32Rmt3Ws2812xInvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedSk6812, NeoEsp32RmtChannel3> NeoEsp32Rmt3Sk6812InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedTm1814, NeoEsp32RmtChannel3> NeoEsp32Rmt3Tm1814InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedTm1829, NeoEsp32RmtChannel3> NeoEsp32Rmt3Tm1829InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedTm1914, NeoEsp32RmtChannel3> NeoEsp32Rmt3Tm1914InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedApa106, NeoEsp32RmtChannel3> NeoEsp32Rmt3Apa106InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedTx1812, NeoEsp32RmtChannel3> NeoEsp32Rmt3Tx1812InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeed800Kbps, NeoEsp32RmtChannel3> NeoEsp32Rmt3800KbpsInvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeed400Kbps, NeoEsp32RmtChannel3> NeoEsp32Rmt3400KbpsInvertedMethod;
|
|
||||||
|
|
||||||
#if !defined(CONFIG_IDF_TARGET_ESP32S2)
|
|
||||||
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedWs2811, NeoEsp32RmtChannel4> NeoEsp32Rmt4Ws2811InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedWs2812x, NeoEsp32RmtChannel4> NeoEsp32Rmt4Ws2812xInvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedSk6812, NeoEsp32RmtChannel4> NeoEsp32Rmt4Sk6812InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedTm1814, NeoEsp32RmtChannel4> NeoEsp32Rmt4Tm1814InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedTm1829, NeoEsp32RmtChannel4> NeoEsp32Rmt4Tm1829InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedTm1914, NeoEsp32RmtChannel4> NeoEsp32Rmt4Tm1914InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedApa106, NeoEsp32RmtChannel4> NeoEsp32Rmt4Apa106InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedTx1812, NeoEsp32RmtChannel4> NeoEsp32Rmt4Tx1812InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeed800Kbps, NeoEsp32RmtChannel4> NeoEsp32Rmt4800KbpsInvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeed400Kbps, NeoEsp32RmtChannel4> NeoEsp32Rmt4400KbpsInvertedMethod;
|
|
||||||
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedWs2811, NeoEsp32RmtChannel5> NeoEsp32Rmt5Ws2811InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedWs2812x, NeoEsp32RmtChannel5> NeoEsp32Rmt5Ws2812xInvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedSk6812, NeoEsp32RmtChannel5> NeoEsp32Rmt5Sk6812InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedTm1814, NeoEsp32RmtChannel5> NeoEsp32Rmt5Tm1814InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedTm1829, NeoEsp32RmtChannel5> NeoEsp32Rmt5Tm1829InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedTm1914, NeoEsp32RmtChannel5> NeoEsp32Rmt5Tm1914InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedApa106, NeoEsp32RmtChannel5> NeoEsp32Rmt5Apa106InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedTx1812, NeoEsp32RmtChannel5> NeoEsp32Rmt5Tx1812InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeed800Kbps, NeoEsp32RmtChannel5> NeoEsp32Rmt5800KbpsInvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeed400Kbps, NeoEsp32RmtChannel5> NeoEsp32Rmt5400KbpsInvertedMethod;
|
|
||||||
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedWs2811, NeoEsp32RmtChannel6> NeoEsp32Rmt6Ws2811InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedWs2812x, NeoEsp32RmtChannel6> NeoEsp32Rmt6Ws2812xInvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedSk6812, NeoEsp32RmtChannel6> NeoEsp32Rmt6Sk6812InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedTm1814, NeoEsp32RmtChannel6> NeoEsp32Rmt6Tm1814InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedTm1829, NeoEsp32RmtChannel6> NeoEsp32Rmt6Tm1829InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedTm1914, NeoEsp32RmtChannel6> NeoEsp32Rmt6Tm1914InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedApa106, NeoEsp32RmtChannel6> NeoEsp32Rmt6Apa106InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedTx1812, NeoEsp32RmtChannel6> NeoEsp32Rmt6Tx1812InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeed800Kbps, NeoEsp32RmtChannel6> NeoEsp32Rmt6800KbpsInvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeed400Kbps, NeoEsp32RmtChannel6> NeoEsp32Rmt6400KbpsInvertedMethod;
|
|
||||||
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedWs2811, NeoEsp32RmtChannel7> NeoEsp32Rmt7Ws2811InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedWs2812x, NeoEsp32RmtChannel7> NeoEsp32Rmt7Ws2812xInvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedSk6812, NeoEsp32RmtChannel7> NeoEsp32Rmt7Sk6812InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedTm1814, NeoEsp32RmtChannel7> NeoEsp32Rmt7Tm1814InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedTm1829, NeoEsp32RmtChannel7> NeoEsp32Rmt7Tm1829InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedTm1914, NeoEsp32RmtChannel7> NeoEsp32Rmt7Tm1914InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedApa106, NeoEsp32RmtChannel7> NeoEsp32Rmt7Apa106InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeedTx1812, NeoEsp32RmtChannel7> NeoEsp32Rmt7Tx1812InvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeed800Kbps, NeoEsp32RmtChannel7> NeoEsp32Rmt7800KbpsInvertedMethod;
|
|
||||||
typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeed400Kbps, NeoEsp32RmtChannel7> NeoEsp32Rmt7400KbpsInvertedMethod;
|
|
||||||
|
|
||||||
#endif // !defined(CONFIG_IDF_TARGET_ESP32S2)
|
#endif // !defined(CONFIG_IDF_TARGET_ESP32S2)
|
||||||
#endif // !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C6)
|
#endif // !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C6)
|
||||||
@@ -827,73 +355,36 @@ typedef NeoEsp32RmtMethodBase<NeoEsp32RmtInvertedSpeed400Kbps, NeoEsp32RmtChanne
|
|||||||
// will switch to use RMT as the default method
|
// will switch to use RMT as the default method
|
||||||
// The ESP32S2 & ESP32C3 will always defualt to RMT
|
// The ESP32S2 & ESP32C3 will always defualt to RMT
|
||||||
|
|
||||||
#if defined(CONFIG_IDF_TARGET_ESP32S2) || defined(CONFIG_IDF_TARGET_ESP32C3) || defined(CONFIG_IDF_TARGET_ESP32C6) || defined(CONFIG_IDF_TARGET_ESP32S3)
|
typedef NeoEsp32RmtXWs2812xMethod NeoWs2813Method;
|
||||||
|
typedef NeoEsp32RmtXWs2812xMethod NeoWs2812xMethod;
|
||||||
|
typedef NeoEsp32RmtX800KbpsMethod NeoWs2812Method;
|
||||||
|
typedef NeoEsp32RmtXWs2812xMethod NeoWs2811Method;
|
||||||
|
typedef NeoEsp32RmtXSk6812Method NeoSk6812Method;
|
||||||
|
typedef NeoEsp32RmtXTm1814Method NeoTm1814Method;
|
||||||
|
typedef NeoEsp32RmtXTm1829Method NeoTm1829Method;
|
||||||
|
typedef NeoEsp32RmtXTm1914Method NeoTm1914Method;
|
||||||
|
typedef NeoEsp32RmtXSk6812Method NeoLc8812Method;
|
||||||
|
typedef NeoEsp32RmtXApa106Method NeoApa106Method;
|
||||||
|
typedef NeoEsp32RmtXTx1812Method NeoTx1812Method;
|
||||||
|
|
||||||
// RMT channel 1 method is the default method for Esp32S2 & Esp32C3
|
typedef NeoEsp32RmtXWs2812xMethod Neo800KbpsMethod;
|
||||||
typedef NeoEsp32Rmt1Ws2812xMethod NeoWs2813Method;
|
typedef NeoEsp32RmtX400KbpsMethod Neo400KbpsMethod;
|
||||||
typedef NeoEsp32Rmt1Ws2812xMethod NeoWs2812xMethod;
|
|
||||||
typedef NeoEsp32Rmt1800KbpsMethod NeoWs2812Method;
|
|
||||||
typedef NeoEsp32Rmt1Ws2812xMethod NeoWs2811Method;
|
|
||||||
typedef NeoEsp32Rmt1Sk6812Method NeoSk6812Method;
|
|
||||||
typedef NeoEsp32Rmt1Tm1814Method NeoTm1814Method;
|
|
||||||
typedef NeoEsp32Rmt1Tm1829Method NeoTm1829Method;
|
|
||||||
typedef NeoEsp32Rmt1Tm1914Method NeoTm1914Method;
|
|
||||||
typedef NeoEsp32Rmt1Sk6812Method NeoLc8812Method;
|
|
||||||
typedef NeoEsp32Rmt1Apa106Method NeoApa106Method;
|
|
||||||
typedef NeoEsp32Rmt1Tx1812Method NeoTx1812Method;
|
|
||||||
|
|
||||||
typedef NeoEsp32Rmt1Ws2812xMethod Neo800KbpsMethod;
|
typedef NeoEsp32RmtXWs2812xInvertedMethod NeoWs2813InvertedMethod;
|
||||||
typedef NeoEsp32Rmt1400KbpsMethod Neo400KbpsMethod;
|
typedef NeoEsp32RmtXWs2812xInvertedMethod NeoWs2812xInvertedMethod;
|
||||||
|
typedef NeoEsp32RmtXWs2812xInvertedMethod NeoWs2811InvertedMethod;
|
||||||
|
typedef NeoEsp32RmtX800KbpsInvertedMethod NeoWs2812InvertedMethod;
|
||||||
|
typedef NeoEsp32RmtXSk6812InvertedMethod NeoSk6812InvertedMethod;
|
||||||
|
typedef NeoEsp32RmtXTm1814InvertedMethod NeoTm1814InvertedMethod;
|
||||||
|
typedef NeoEsp32RmtXTm1829InvertedMethod NeoTm1829InvertedMethod;
|
||||||
|
typedef NeoEsp32RmtXTm1914InvertedMethod NeoTm1914InvertedMethod;
|
||||||
|
typedef NeoEsp32RmtXSk6812InvertedMethod NeoLc8812InvertedMethod;
|
||||||
|
typedef NeoEsp32RmtXApa106InvertedMethod NeoApa106InvertedMethod;
|
||||||
|
typedef NeoEsp32RmtXTx1812InvertedMethod NeoTx1812InvertedMethod;
|
||||||
|
|
||||||
typedef NeoEsp32Rmt1Ws2812xInvertedMethod NeoWs2813InvertedMethod;
|
typedef NeoEsp32RmtXWs2812xInvertedMethod Neo800KbpsInvertedMethod;
|
||||||
typedef NeoEsp32Rmt1Ws2812xInvertedMethod NeoWs2812xInvertedMethod;
|
typedef NeoEsp32RmtX400KbpsInvertedMethod Neo400KbpsInvertedMethod;
|
||||||
typedef NeoEsp32Rmt1Ws2812xInvertedMethod NeoWs2811InvertedMethod;
|
|
||||||
typedef NeoEsp32Rmt1800KbpsInvertedMethod NeoWs2812InvertedMethod;
|
|
||||||
typedef NeoEsp32Rmt1Sk6812InvertedMethod NeoSk6812InvertedMethod;
|
|
||||||
typedef NeoEsp32Rmt1Tm1814InvertedMethod NeoTm1814InvertedMethod;
|
|
||||||
typedef NeoEsp32Rmt1Tm1829InvertedMethod NeoTm1829InvertedMethod;
|
|
||||||
typedef NeoEsp32Rmt1Tm1914InvertedMethod NeoTm1914InvertedMethod;
|
|
||||||
typedef NeoEsp32Rmt1Sk6812InvertedMethod NeoLc8812InvertedMethod;
|
|
||||||
typedef NeoEsp32Rmt1Apa106InvertedMethod NeoApa106InvertedMethod;
|
|
||||||
typedef NeoEsp32Rmt1Tx1812InvertedMethod NeoTx1812InvertedMethod;
|
|
||||||
|
|
||||||
typedef NeoEsp32Rmt1Ws2812xInvertedMethod Neo800KbpsInvertedMethod;
|
|
||||||
typedef NeoEsp32Rmt1400KbpsInvertedMethod Neo400KbpsInvertedMethod;
|
|
||||||
|
|
||||||
#else // defined(CONFIG_IDF_TARGET_ESP32S2) || defined(CONFIG_IDF_TARGET_ESP32C3)
|
|
||||||
|
|
||||||
// RMT channel 6 method is the default method for Esp32
|
|
||||||
typedef NeoEsp32Rmt6Ws2812xMethod NeoWs2813Method;
|
|
||||||
typedef NeoEsp32Rmt6Ws2812xMethod NeoWs2812xMethod;
|
|
||||||
typedef NeoEsp32Rmt6800KbpsMethod NeoWs2812Method;
|
|
||||||
typedef NeoEsp32Rmt6Ws2812xMethod NeoWs2811Method;
|
|
||||||
typedef NeoEsp32Rmt6Sk6812Method NeoSk6812Method;
|
|
||||||
typedef NeoEsp32Rmt6Tm1814Method NeoTm1814Method;
|
|
||||||
typedef NeoEsp32Rmt6Tm1829Method NeoTm1829Method;
|
|
||||||
typedef NeoEsp32Rmt6Tm1914Method NeoTm1914Method;
|
|
||||||
typedef NeoEsp32Rmt6Sk6812Method NeoLc8812Method;
|
|
||||||
typedef NeoEsp32Rmt6Apa106Method NeoApa106Method;
|
|
||||||
typedef NeoEsp32Rmt6Tx1812Method NeoTx1812Method;
|
|
||||||
|
|
||||||
typedef NeoEsp32Rmt6Ws2812xMethod Neo800KbpsMethod;
|
|
||||||
typedef NeoEsp32Rmt6400KbpsMethod Neo400KbpsMethod;
|
|
||||||
|
|
||||||
typedef NeoEsp32Rmt6Ws2812xInvertedMethod NeoWs2813InvertedMethod;
|
|
||||||
typedef NeoEsp32Rmt6Ws2812xInvertedMethod NeoWs2812xInvertedMethod;
|
|
||||||
typedef NeoEsp32Rmt6Ws2812xInvertedMethod NeoWs2811InvertedMethod;
|
|
||||||
typedef NeoEsp32Rmt6800KbpsInvertedMethod NeoWs2812InvertedMethod;
|
|
||||||
typedef NeoEsp32Rmt6Sk6812InvertedMethod NeoSk6812InvertedMethod;
|
|
||||||
typedef NeoEsp32Rmt6Tm1814InvertedMethod NeoTm1814InvertedMethod;
|
|
||||||
typedef NeoEsp32Rmt6Tm1829InvertedMethod NeoTm1829InvertedMethod;
|
|
||||||
typedef NeoEsp32Rmt6Tm1914InvertedMethod NeoTm1914InvertedMethod;
|
|
||||||
typedef NeoEsp32Rmt6Sk6812InvertedMethod NeoLc8812InvertedMethod;
|
|
||||||
typedef NeoEsp32Rmt6Apa106InvertedMethod NeoApa106InvertedMethod;
|
|
||||||
typedef NeoEsp32Rmt6Tx1812InvertedMethod NeoTx1812InvertedMethod;
|
|
||||||
|
|
||||||
typedef NeoEsp32Rmt6Ws2812xInvertedMethod Neo800KbpsInvertedMethod;
|
|
||||||
typedef NeoEsp32Rmt6400KbpsInvertedMethod Neo400KbpsInvertedMethod;
|
|
||||||
|
|
||||||
#endif // defined(CONFIG_IDF_TARGET_ESP32S2) || defined(CONFIG_IDF_TARGET_ESP32C3) || defined(CONFIG_IDF_TARGET_ESP32C6)
|
|
||||||
|
|
||||||
#endif // defined(NEOPIXEL_ESP32_RMT_DEFAULT) || defined(CONFIG_IDF_TARGET_ESP32S2) || defined(CONFIG_IDF_TARGET_ESP32C3) || defined(CONFIG_IDF_TARGET_ESP32C6)
|
#endif // defined(NEOPIXEL_ESP32_RMT_DEFAULT) || defined(CONFIG_IDF_TARGET_ESP32S2) || defined(CONFIG_IDF_TARGET_ESP32C3) || defined(CONFIG_IDF_TARGET_ESP32C6)
|
||||||
|
|
||||||
|
240
src/internal/methods/ESP/ESP32/NeoEsp32RmtSpeed.h
Normal file
240
src/internal/methods/ESP/ESP32/NeoEsp32RmtSpeed.h
Normal file
@@ -0,0 +1,240 @@
|
|||||||
|
/*-------------------------------------------------------------------------
|
||||||
|
NeoPixel library helper functions for Esp32.
|
||||||
|
|
||||||
|
Written by Michael C. Miller.
|
||||||
|
|
||||||
|
I invest time and resources providing this open source code,
|
||||||
|
please support me by dontating (see https://github.com/Makuna/NeoPixelBus)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------
|
||||||
|
This file is part of the Makuna/NeoPixelBus library.
|
||||||
|
|
||||||
|
NeoPixelBus is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU Lesser General Public License as
|
||||||
|
published by the Free Software Foundation, either version 3 of
|
||||||
|
the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
NeoPixelBus is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU Lesser General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Lesser General Public
|
||||||
|
License along with NeoPixel. If not, see
|
||||||
|
<http://www.gnu.org/licenses/>.
|
||||||
|
-------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
class NeoEsp32RmtSpeed
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
// next section is probably not needed anymore for IDF 5.1
|
||||||
|
// ClkDiv of 2 provides for good resolution and plenty of reset resolution; but
|
||||||
|
// a ClkDiv of 1 will provide enough space for the longest reset and does show
|
||||||
|
// little better pulse accuracy
|
||||||
|
const static uint8_t RmtClockDivider = 2;
|
||||||
|
|
||||||
|
inline constexpr static uint32_t FromNs(uint32_t ns)
|
||||||
|
{
|
||||||
|
return ns / NsPerRmtTick;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
const static uint32_t RmtCpu = 80000000L; // 80 mhz RMT clock
|
||||||
|
const static uint32_t NsPerSecond = 1000000000L;
|
||||||
|
const static uint32_t RmtTicksPerSecond = (RmtCpu / RmtClockDivider);
|
||||||
|
const static uint32_t NsPerRmtTick = (NsPerSecond / RmtTicksPerSecond); // about 25
|
||||||
|
// end of deprecated section
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
class NeoEsp32RmtSpeedBase : public NeoEsp32RmtSpeed
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
// this is used rather than the rmt_symbol_word_t as you can't correctly initialize
|
||||||
|
// it as a static constexpr within the template
|
||||||
|
inline constexpr static uint32_t Item32Val(uint16_t nsHigh, uint16_t nsLow)
|
||||||
|
{
|
||||||
|
return (FromNs(nsLow) << 16) | (1 << 15) | (FromNs(nsHigh));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class NeoEsp32RmtInvertedSpeedBase : public NeoEsp32RmtSpeed
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
// this is used rather than the rmt_symbol_word_t as you can't correctly initialize
|
||||||
|
// it as a static constexpr within the template
|
||||||
|
inline constexpr static uint32_t Item32Val(uint16_t nsHigh, uint16_t nsLow)
|
||||||
|
{
|
||||||
|
return (FromNs(nsLow) << 16) | (1 << 31) | (FromNs(nsHigh));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class NeoEsp32RmtSpeedWs2811 : public NeoEsp32RmtSpeedBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
const static uint32_t RmtBit0 = Item32Val(300, 950);
|
||||||
|
const static uint32_t RmtBit1 = Item32Val(900, 350);
|
||||||
|
const static uint16_t RmtDurationReset = FromNs(300000); // 300us
|
||||||
|
};
|
||||||
|
|
||||||
|
class NeoEsp32RmtSpeedWs2812x : public NeoEsp32RmtSpeedBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
const static uint32_t RmtBit0 = Item32Val(400, 850);
|
||||||
|
const static uint32_t RmtBit1 = Item32Val(800, 450);
|
||||||
|
const static uint16_t RmtDurationReset = FromNs(300000); // 300us
|
||||||
|
};
|
||||||
|
|
||||||
|
class NeoEsp32RmtSpeedSk6812 : public NeoEsp32RmtSpeedBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
const static uint32_t RmtBit0 = Item32Val(400, 850);
|
||||||
|
const static uint32_t RmtBit1 = Item32Val(800, 450);
|
||||||
|
const static uint16_t RmtDurationReset = FromNs(80000); // 80us
|
||||||
|
};
|
||||||
|
|
||||||
|
// normal is inverted signal
|
||||||
|
class NeoEsp32RmtSpeedTm1814 : public NeoEsp32RmtInvertedSpeedBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
const static uint32_t RmtBit0 = Item32Val(360, 890);
|
||||||
|
const static uint32_t RmtBit1 = Item32Val(720, 530);
|
||||||
|
const static uint16_t RmtDurationReset = FromNs(200000); // 200us
|
||||||
|
};
|
||||||
|
|
||||||
|
// normal is inverted signal
|
||||||
|
class NeoEsp32RmtSpeedTm1829 : public NeoEsp32RmtInvertedSpeedBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
const static uint32_t RmtBit0 = Item32Val(300, 900);
|
||||||
|
const static uint32_t RmtBit1 = Item32Val(800, 400);
|
||||||
|
const static uint16_t RmtDurationReset = FromNs(200000); // 200us
|
||||||
|
};
|
||||||
|
|
||||||
|
// normal is inverted signal
|
||||||
|
class NeoEsp32RmtSpeedTm1914 : public NeoEsp32RmtInvertedSpeedBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
const static uint32_t RmtBit0 = Item32Val(360, 890);
|
||||||
|
const static uint32_t RmtBit1 = Item32Val(720, 530);
|
||||||
|
const static uint16_t RmtDurationReset = FromNs(200000); // 200us
|
||||||
|
};
|
||||||
|
|
||||||
|
class NeoEsp32RmtSpeed800Kbps : public NeoEsp32RmtSpeedBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
const static uint32_t RmtBit0 = Item32Val(400, 850);
|
||||||
|
const static uint32_t RmtBit1 = Item32Val(800, 450);
|
||||||
|
const static uint16_t RmtDurationReset = FromNs(50000); // 50us
|
||||||
|
};
|
||||||
|
|
||||||
|
class NeoEsp32RmtSpeed400Kbps : public NeoEsp32RmtSpeedBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
const static uint32_t RmtBit0 = Item32Val(800, 1700);
|
||||||
|
const static uint32_t RmtBit1 = Item32Val(1600, 900);
|
||||||
|
const static uint16_t RmtDurationReset = FromNs(50000); // 50us
|
||||||
|
};
|
||||||
|
|
||||||
|
class NeoEsp32RmtSpeedApa106 : public NeoEsp32RmtSpeedBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
const static uint32_t RmtBit0 = Item32Val(350, 1350);
|
||||||
|
const static uint32_t RmtBit1 = Item32Val(1350, 350);
|
||||||
|
const static uint16_t RmtDurationReset = FromNs(50000); // 50us
|
||||||
|
};
|
||||||
|
|
||||||
|
class NeoEsp32RmtSpeedTx1812 : public NeoEsp32RmtSpeedBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
const static uint32_t RmtBit0 = Item32Val(300, 600);
|
||||||
|
const static uint32_t RmtBit1 = Item32Val(600, 300);
|
||||||
|
const static uint16_t RmtDurationReset = FromNs(80000); // 80us
|
||||||
|
};
|
||||||
|
|
||||||
|
class NeoEsp32RmtInvertedSpeedWs2811 : public NeoEsp32RmtInvertedSpeedBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
const static uint32_t RmtBit0 = Item32Val(300, 950);
|
||||||
|
const static uint32_t RmtBit1 = Item32Val(900, 350);
|
||||||
|
const static uint16_t RmtDurationReset = FromNs(300000); // 300us
|
||||||
|
};
|
||||||
|
|
||||||
|
class NeoEsp32RmtInvertedSpeedWs2812x : public NeoEsp32RmtInvertedSpeedBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
const static uint32_t RmtBit0 = Item32Val(400, 850);
|
||||||
|
const static uint32_t RmtBit1 = Item32Val(800, 450);
|
||||||
|
const static uint16_t RmtDurationReset = FromNs(300000); // 300us
|
||||||
|
};
|
||||||
|
|
||||||
|
class NeoEsp32RmtInvertedSpeedSk6812 : public NeoEsp32RmtInvertedSpeedBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
const static uint32_t RmtBit0 = Item32Val(400, 850);
|
||||||
|
const static uint32_t RmtBit1 = Item32Val(800, 450);
|
||||||
|
const static uint16_t RmtDurationReset = FromNs(80000); // 80us
|
||||||
|
};
|
||||||
|
|
||||||
|
// normal is inverted signal
|
||||||
|
class NeoEsp32RmtInvertedSpeedTm1814 : public NeoEsp32RmtSpeedBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
const static uint32_t RmtBit0 = Item32Val(360, 890);
|
||||||
|
const static uint32_t RmtBit1 = Item32Val(720, 530);
|
||||||
|
const static uint16_t RmtDurationReset = FromNs(200000); // 200us
|
||||||
|
};
|
||||||
|
|
||||||
|
// normal is inverted signal
|
||||||
|
class NeoEsp32RmtInvertedSpeedTm1829 : public NeoEsp32RmtSpeedBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
const static uint32_t RmtBit0 = Item32Val(300, 900);
|
||||||
|
const static uint32_t RmtBit1 = Item32Val(800, 400);
|
||||||
|
const static uint16_t RmtDurationReset = FromNs(200000); // 200us
|
||||||
|
};
|
||||||
|
|
||||||
|
// normal is inverted signal
|
||||||
|
class NeoEsp32RmtInvertedSpeedTm1914 : public NeoEsp32RmtSpeedBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
const static uint32_t RmtBit0 = Item32Val(360, 890);
|
||||||
|
const static uint32_t RmtBit1 = Item32Val(720, 530);
|
||||||
|
const static uint16_t RmtDurationReset = FromNs(200000); // 200us
|
||||||
|
};
|
||||||
|
|
||||||
|
class NeoEsp32RmtInvertedSpeed800Kbps : public NeoEsp32RmtInvertedSpeedBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
const static uint32_t RmtBit0 = Item32Val(400, 850);
|
||||||
|
const static uint32_t RmtBit1 = Item32Val(800, 450);
|
||||||
|
const static uint16_t RmtDurationReset = FromNs(50000); // 50us
|
||||||
|
};
|
||||||
|
|
||||||
|
class NeoEsp32RmtInvertedSpeed400Kbps : public NeoEsp32RmtInvertedSpeedBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
const static uint32_t RmtBit0 = Item32Val(800, 1700);
|
||||||
|
const static uint32_t RmtBit1 = Item32Val(1600, 900);
|
||||||
|
const static uint16_t RmtDurationReset = FromNs(50000); // 50us
|
||||||
|
};
|
||||||
|
|
||||||
|
class NeoEsp32RmtInvertedSpeedApa106 : public NeoEsp32RmtInvertedSpeedBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
const static uint32_t RmtBit0 = Item32Val(350, 1350);
|
||||||
|
const static uint32_t RmtBit1 = Item32Val(1350, 350);
|
||||||
|
const static uint16_t RmtDurationReset = FromNs(50000); // 50us
|
||||||
|
};
|
||||||
|
|
||||||
|
class NeoEsp32RmtInvertedSpeedTx1812 : public NeoEsp32RmtInvertedSpeedBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
const static uint32_t RmtBit0 = Item32Val(300, 600);
|
||||||
|
const static uint32_t RmtBit1 = Item32Val(600, 300);
|
||||||
|
const static uint16_t RmtDurationReset = FromNs(80000); // 80us
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
Reference in New Issue
Block a user