Update RCSwitch.cpp

Use DRAM for ESP32 protocol list and replace ICACHE_RAM_ATTR by IRAM_ATTR for ESP32, so as to avoid core dump when using in conjunction with Wifi
Added support for Holtek's HT12E encoder/decoders
Added 1ByOne Doorbell protocol
This commit is contained in:
Jason2866 2020-07-15 15:41:11 +02:00 committed by GitHub
parent 6f52b0f7cc
commit 60fc491b4d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 16 additions and 7 deletions

View File

@ -13,6 +13,7 @@
- Robert ter Vehn / <first name>.<last name>(at)gmail(dot)com - Robert ter Vehn / <first name>.<last name>(at)gmail(dot)com
- Johann Richard / <first name>.<last name>(at)gmail(dot)com - Johann Richard / <first name>.<last name>(at)gmail(dot)com
- Vlad Gheorghe / <first name>.<last name>(at)gmail(dot)com https://github.com/vgheo - Vlad Gheorghe / <first name>.<last name>(at)gmail(dot)com https://github.com/vgheo
- Matias Cuenca-Acuna
Project home: https://github.com/sui77/rc-switch/ Project home: https://github.com/sui77/rc-switch/
@ -40,17 +41,22 @@
#define memcpy_P(dest, src, num) memcpy((dest), (src), (num)) #define memcpy_P(dest, src, num) memcpy((dest), (src), (num))
#endif #endif
#if defined(ESP8266) || defined(ESP32) #if defined(ESP8266)
// interrupt handler and related code must be in RAM on ESP8266, // interrupt handler and related code must be in RAM on ESP8266,
// according to issue #46. // according to issue #46.
#define RECEIVE_ATTR ICACHE_RAM_ATTR #define RECEIVE_ATTR ICACHE_RAM_ATTR
#define VAR_ISR_ATTR
#elif defined(ESP32)
#define RECEIVE_ATTR IRAM_ATTR
#define VAR_ISR_ATTR DRAM_ATTR
#else #else
#define RECEIVE_ATTR #define RECEIVE_ATTR
#define VAR_ISR_ATTR
#endif #endif
/* Format for protocol definitions: /* Format for protocol definitions:
* {pulselength, Sync bit, "0" bit, "1" bit} * {pulselength, Sync bit, "0" bit, "1" bit, invertedSignal}
* *
* pulselength: pulse length in microseconds, e.g. 350 * pulselength: pulse length in microseconds, e.g. 350
* Sync bit: {1, 31} means 1 high pulse and 31 low pulses * Sync bit: {1, 31} means 1 high pulse and 31 low pulses
@ -69,7 +75,7 @@
* These are combined to form Tri-State bits when sending or receiving codes. * These are combined to form Tri-State bits when sending or receiving codes.
*/ */
#if defined(ESP8266) || defined(ESP32) #if defined(ESP8266) || defined(ESP32)
static const RCSwitch::Protocol proto[] = { static const VAR_ISR_ATTR RCSwitch::Protocol proto[] = {
#else #else
static const RCSwitch::Protocol PROGMEM proto[] = { static const RCSwitch::Protocol PROGMEM proto[] = {
#endif #endif
@ -81,7 +87,10 @@ static const RCSwitch::Protocol PROGMEM proto[] = {
{ 450, { 23, 1 }, { 1, 2 }, { 2, 1 }, true }, // protocol 6 (HT6P20B) { 450, { 23, 1 }, { 1, 2 }, { 2, 1 }, true }, // protocol 6 (HT6P20B)
{ 150, { 2, 62 }, { 1, 6 }, { 6, 1 }, false }, // protocol 7 (HS2303-PT, i. e. used in AUKEY Remote) { 150, { 2, 62 }, { 1, 6 }, { 6, 1 }, false }, // protocol 7 (HS2303-PT, i. e. used in AUKEY Remote)
{ 200, { 3, 130}, { 7, 16 }, { 3, 16}, false}, // protocol 8 Conrad RS-200 RX { 200, { 3, 130}, { 7, 16 }, { 3, 16}, false}, // protocol 8 Conrad RS-200 RX
{ 200, { 130, 7 }, { 16, 7 }, { 16, 3 }, true} // protocol 9 Conrad RS-200 TX { 200, { 130, 7 }, { 16, 7 }, { 16, 3 }, true}, // protocol 9 Conrad RS-200 TX
{ 365, { 18, 1 }, { 3, 1 }, { 1, 3 }, true }, // protocol 10 (1ByOne Doorbell)
{ 270, { 36, 1 }, { 1, 2 }, { 2, 1 }, true }, // protocol 11 (HT12E)
{ 320, { 36, 1 }, { 1, 2 }, { 2, 1 }, true } // protocol 12 (SM5212)
}; };
enum { enum {