Merge branch 'mega' into httpResponseParser

This commit is contained in:
chromoxdor
2025-06-27 12:00:28 +02:00
committed by GitHub
35 changed files with 1027 additions and 991 deletions
+2
View File
@@ -86,3 +86,5 @@ dependencies.lock
.dummy/
.cache/
src/src/CustomBuild/CompiletimeDefines_generated.h
+5
View File
@@ -30,6 +30,11 @@
"require_upload_port": true,
"speed": 460800
},
"espidf": {
"custom_sdkconfig": [
"CONFIG_FREERTOS_UNICORE=y"
]
},
"url": "https://en.wikipedia.org/wiki/ESP32",
"vendor": "Espressif"
}
@@ -0,0 +1,54 @@
Migrate from SPIFFS to LittleFS (ESP32)
=======================================
Since Espressif IDF 5.x framework (ESP32 chips only), the SPIFFS file-system is no longer supported. As ESPEasy is using a specially crafted framework-release that still included SPIFFS support, we have been able to keep support for SPIFFS, but this requires quite some effort. To reduce that effort, and because SPIFFS won't be made available after IDF 5.1.x for ESPEasy (mega-20250430), it is strongly advised to migrate to a LittleFS build.
NB: A build can not have support for both SPIFFS *and* LittleFS. (Technical limitation.)
Using the 4 steps below, a safe (and easy) migration path is available:
1) Upgrade to the last release with SPIFFS support
--------------------------------------------------
For the best experience, and to ensure a stable running system, the last release of ESPEasy **still including SPIFFS** should be used. This can be downloaded from `Github Release mega-20250430 <https://github.com/letscontrolit/ESPEasy/releases/tag/mega-20250430>`_
.. note:: **The last release that includes ESP32 wth SPIFFS support is** `mega-20250430 <https://github.com/letscontrolit/ESPEasy/releases/tag/mega-20250430>`_
To ensure an uninterrupted upgrade, the ESPEasy P2P network feature should be **disabled** by setting the **ESPEasy p2p UDP port** to ``0`` on the Tools/Advanced page (take note of the port number before setting it to 0), and save that setting. This prevents the sometimes busy, high-priority, P2P traffic to interrupt the download process. After the migration is completed this can of course be re-enabled.
After saving the P2P port setting, the ESP must be rebooted to take the unit out of the P2P network.
In the previous paragraph is shown how to select the correct binary for upgrading. After a successful upgrade, the ESP will be rebooted, and should be left running for *at least* 5 minutes to ensure that the WiFi configuration is stored in the NVS (non-volatile storage) partiton of the flash (this is a background process, activated ~5 minutes after a successful connection to WiFI), to facilitate that these settings can be used to reconnect to WiFi after upgrading to a LittleFS build.
2) Backup the current configuration and file-system content
-----------------------------------------------------------
As all ESP32 builds include support for creating a .tar archive backup, this feature should now be used to create an up-to-date system backup, by using the :cyan:`Backup files` button (as opposed to the :cyan:`Save` button that only stores the configuration files), and storing the archive on a persistent storage medium (local disk, USB stick, network storage, etc.).
NB: Depending on the browser used, it may be needed to confirm that the created archive should *really* be stored, so don't forget to confirm that!
3) Upgrade to the matching LittleFS release
-------------------------------------------
After the backup is created, the matching release with LittleFS support can be downloaded from the `Github Releases page <https://github.com/letscontrolit/ESPEasy/releases>`_ (If your build is not (yet) included, then please request it via a support issue. If your build was without the _ETH suffix, then you should pick the build *with* _ETH, as non-Ethernet builds are discontinued to reduce the number of builds.)
As long as the flash partitioning is the same (``4M316k``, ``8M1M`` etc.) the upgrade can be done via OTA. If the partitioning is different, either the `ESPEasy Web Flash tool <https://td-er.nl/ESPEasy/>`_ or the Espressif Flash Download tool should be used to install the update (flash partitioning can not be changed via an OTA update).
Once the new binary is installed, and the ESP rebooted, the unit should automatically connect to WiFi, as it has the last used credentials stored in the NVS partition. Might that fail, the initial setup via the Setup portal should be started.
4) Restore the backup
---------------------
Now that the unit is available via WiFi again, the backup we created in step **2)** can be restored so alle previously configured devices, controllers, rules, settings, etc. are available again.
From the Tools page, select the :cyan:`Load` button, and browse to the location of the backup .tar file to select it. After the restore is finished, the unit **must** be rebooted immediately (a :cyan:`Reboot` button is available), so the freshly restored settings won't be overwritten by any settings kept in memory.
After that mandatory reboot it is the moment to re-enable the P2P network, by restoring the **ESPEasy p2p UDP port** setting, on the Tools/Advanced page, with the port number noted in step **1)**. The default P2P port is ``8266``.
This requires another reboot to activate the P2P network again.
|
When these steps are completed, the migration from SPIFFS to LittleFS is **successfully completed!**
|
+1 -44
View File
@@ -1019,50 +1019,7 @@ Firmware update
Via the :cyan:`Update Firmware` button, you can browse for an updated firmware, downloaded from the Releases page, an Actions run, or self-built, and install that. When using the same flash configuration (``4M1M``, ``4M316k``, ``8M1M``, etc.) and file system type (SPIFFS v.s. LittleFS) all settings will be preserved. When uncertain, the configuration should be saved first, using either the Save (or Backup files if available) button above.
Migrate from SPIFFS to LittleFS (ESP32)
=======================================
Since IDF 5.x framework (ESP32 chips only), the SPIFFS file-system is no longer supported. As ESPEasy is using a specially crafted framework-release that still includes SPIFFS support, we still have support for SPIFFS, but this requires quite some effort. To reduce that effort, and because SPIFFS won't be made available after IDF 5.1.x for ESPEasy, it is strongly advised to migrate to a LittleFS build.
NB: A build can not have support for both SPIFFS *and* LittleFS. (Technical limitation.)
Using the 4 steps below, a safe (and easy) migration path is available:
1) Upgrade to the latest release
--------------------------------
For the best experience, and to ensure a stable running system, a very recent release of ESPEasy should be used. This can be downloaded from the `Github Releases page <https://github.com/letscontrolit/ESPEasy/releases>`_
Releases that no longer include SPIFFS support will be clearly marked.
In the previous paragraph is shown how to select the correct binary for upgrading. After a successful upgrade, the ESP will be rebooted, and should be left running for *at least* 5 minutes to ensure that the WiFi configuration is stored in the NVS (non-volatile storage) partiton of the flash (this is a background process, activated ~5 minutes after a successful connection to WiFI), so this can be used to reconnect to WiFi after upgrading to a LittleFS build.
2) Backup the current configuration and file-system content
-----------------------------------------------------------
As all ESP32 builds include support for creating a .tar archive backup, this feature should now be used to create an up-to-date system backup, by using the :cyan:`Backup files` button (as opposed to the :cyan:`Save` button that only stores the configuration files), and storing the archive on a persistent storage medium (local disk, USB stick, network storage, etc.).
NB: Depending on the browser used, it may be needed to confirm that the created archive should *really* be stored, so don't forget to confirm that!
3) Upgrade to the matching LittleFS release
-------------------------------------------
After the backup is created, the matching release with LittleFS support cna be downloaded from the `Github Releases page <https://github.com/letscontrolit/ESPEasy/releases>`_ (If your build is not (yet) included, then please request it via a support issue.)
As long as the flash partitioning is the same (``4M316k``, ``8M1M`` etc.) the upgrade can be done via OTA. If the partitioning is different, either the `ESPEasy Web Flash tool <https://td-er.nl/ESPEasy/>`_ or the Espressif Flash Download tool should be used to install the update (flash partitioning can not be changed via an OTA update).
Once the new binary is installed, and the ESP rebooted, the unit should automatically connect to WiFi, as it has the last used credentials stored in the NVS partition. Might that fail, the initial setup via the Setup portal should be started.
4) Restore the backup
---------------------
Now that the unit is available via WiFi again, the backup we created in step **2)** can be restored so alle previously configured devices, controllers, rules, settings, etc. are available again.
From the Tools page, select the :cyan:`Load` button, and browse to the location of the backup .tar file to select it. After the restore is finished, the unit **must** be rebooted immediately (a :cyan:`Reboot` button is available), so the freshly restored settings won't be overwritten by any settings kept in memory.
When these steps are completed, the migration from SPIFFS to LittleFS is **successfully completed!**
|
.. include:: ../Reference/Migrate_SPIFFS_to_LittleFS.rst
File system
***********
+1
View File
@@ -36,6 +36,7 @@ Welcome to ESP Easy's documentation!
Participate/Documentation.rst
Participate/ProjectStructure.rst
Reference/Flashing.rst
Reference/Migrate_SPIFFS_to_LittleFS.rst
Reference/Safety.rst
Reference/Command.rst
Reference/Events.rst
+129 -109
View File
@@ -198,22 +198,13 @@ void MFRC522::PCD_Init() {
digitalWrite(_chipSelectPin, HIGH);
// If a valid pin number has been set, pull device out of power down / reset state.
if (_resetPowerDownPin != UNUSED_PIN) {
// First set the resetPowerDownPin as digital input, to check the MFRC522 power down mode.
pinMode(_resetPowerDownPin, INPUT);
if (digitalRead(_resetPowerDownPin) == LOW) { // The MFRC522 chip is in power down mode.
pinMode(_resetPowerDownPin, OUTPUT); // Now set the resetPowerDownPin as digital output.
digitalWrite(_resetPowerDownPin, LOW); // Make sure we have a clean LOW state.
delayMicroseconds(2); // 8.8.1 Reset timing requirements says about 100ns. Let us be generous: 2μsl
digitalWrite(_resetPowerDownPin, HIGH); // Exit power down mode. This triggers a hard reset.
// Section 8.8.2 in the datasheet says the oscillator start-up time is the start up time of the crystal + 37,74μs. Let us be generous: 50ms.
delay(50);
hardReset = true;
}
if (_resetPowerDownPin != UNUSED_PIN)
{
pinMode(_resetPowerDownPin, OUTPUT);
PCD_HardReset();
}
if (!hardReset) { // Perform a soft reset if we haven't triggered a hard reset above.
else
{ // Perform a soft reset if we haven't triggered a hard reset above.
PCD_Reset();
}
@@ -233,6 +224,11 @@ void MFRC522::PCD_Init() {
PCD_WriteRegister(TxASKReg, 0x40); // Default 0x00. Force a 100 % ASK modulation independent of the ModGsPReg register setting
PCD_WriteRegister(ModeReg, 0x3D); // Default 0x3F. Set the preset value for the CRC coprocessor for the CalcCRC command to 0x6363 (ISO 14443-3 part 6.2.4)
PCD_WriteRegister(CWGsPReg, 0b111111); // conductance of the p-driver output
PCD_WriteRegister(ModGsPReg, 0b111111); // conductance of the p-driver output
PCD_WriteRegister(GsNReg, 0b11111111); // impedance of the n-driver
PCD_AntennaOn(); // Enable the antenna driver pins TX1 and TX2 (they were disabled by the reset)
} // End PCD_Init()
@@ -271,6 +267,18 @@ void MFRC522::PCD_Reset() {
} while ((PCD_ReadRegister(CommandReg) & (1 << 4)) && (++count) < 3);
} // End PCD_Reset()
void MFRC522::PCD_HardReset()
{
if (_resetPowerDownPin != UNUSED_PIN)
{
digitalWrite(_resetPowerDownPin, LOW); // Make sure we have a clean LOW state.
delayMicroseconds(2); // 8.8.1 Reset timing requirements says about 100ns. Let us be generous: 2μsl
digitalWrite(_resetPowerDownPin, HIGH); // Exit power down mode. This triggers a hard reset.
// Section 8.8.2 in the datasheet says the oscillator start-up time is the start up time of the crystal + 37,74μs. Let us be generous: 50ms.
delay(50);
}
}
/**
* Turns the antenna on by enabling pins TX1 and TX2.
* After a reset these pins are disabled.
@@ -291,7 +299,7 @@ void MFRC522::PCD_AntennaOff() {
/**
* Get the current MFRC522 Receiver Gain (RxGain[2:0]) value.
* See 9.3.3.6 / table 98 in http://www.nxp.com/documents/data_sheet/MFRC522.pdf
* See 9.3.3.6 / table 98 in https://www.nxp.com/docs/en/data-sheet/MFRC522.pdf
* NOTE: Return value scrubbed with (0x07<<4)=01110000b as RCFfgReg may use reserved bits.
*
* @return Value of the RxGain, scrubbed to the 3 bits used.
@@ -302,7 +310,7 @@ uint8_t MFRC522::PCD_GetAntennaGain() {
/**
* Set the MFRC522 Receiver Gain (RxGain) to value specified by given mask.
* See 9.3.3.6 / table 98 in http://www.nxp.com/documents/data_sheet/MFRC522.pdf
* See 9.3.3.6 / table 98 in https://www.nxp.com/docs/en/data-sheet/MFRC522.pdf
* NOTE: Given mask is scrubbed with (0x07<<4)=01110000b as RCFfgReg may use reserved bits.
*/
void MFRC522::PCD_SetAntennaGain(uint8_t mask) {
@@ -314,7 +322,7 @@ void MFRC522::PCD_SetAntennaGain(uint8_t mask) {
/**
* Performs a self-test of the MFRC522
* See 16.1.1 in http://www.nxp.com/documents/data_sheet/MFRC522.pdf
* See 16.1.1 in https://www.nxp.com/docs/en/data-sheet/MFRC522.pdf
*
* @return Whether or not the test passed. Or false if no firmware reference is available.
*/
@@ -368,21 +376,28 @@ bool MFRC522::PCD_PerformSelfTest() {
// Pick the appropriate reference values
const uint8_t *reference;
switch (version) {
case 0x88: // Fudan Semiconductor FM17522 clone
reference = FM17522_firmware_reference;
break;
case 0x90: // Version 0.0
reference = MFRC522_firmware_referenceV0_0;
break;
case 0x91: // Version 1.0
reference = MFRC522_firmware_referenceV1_0;
break;
case 0x92: // Version 2.0
reference = MFRC522_firmware_referenceV2_0;
break;
default: // Unknown version
return false; // abort test
switch(version) {
// Fudan Semiconductor clone:
case 0xb2: // FM17522
reference = FM17522_firmware_referenceB2;
break;
case 0x88: // FM17522
reference = FM17522_firmware_reference88;
break;
case 0x89: // FM17522E
reference = FM17522E_firmware_reference;
break;
case 0x90: // Version 0.0
reference = MFRC522_firmware_referenceV0_0;
break;
case 0x91: // Version 1.0
reference = MFRC522_firmware_referenceV1_0;
break;
case 0x92: // Version 2.0
reference = MFRC522_firmware_referenceV2_0;
break;
default: // Unknown version
return false; // abort test
}
// Verify that the results match up to our expectations
@@ -463,6 +478,8 @@ MFRC522::StatusCode MFRC522::PCD_CommunicateWithPICC( uint8_t command, ///< The
uint8_t rxAlign, ///< In: Defines the bit position in backData[0] for the first bit received. Default 0.
bool checkCRC ///< In: True => The last two bytes of the response is assumed to be a CRC_A that must be validated.
) {
const long software_timeout_ms = 36; // 36ms
// Prepare values for BitFramingReg
uint8_t txLastBits = validBits ? *validBits : 0;
uint8_t bitFraming = (rxAlign << 4) + txLastBits; // RxAlign = BitFramingReg[6..4]. TxLastBits = BitFramingReg[2..0]
@@ -481,8 +498,9 @@ MFRC522::StatusCode MFRC522::PCD_CommunicateWithPICC( uint8_t command, ///< The
// In PCD_Init() we set the TAuto flag in TModeReg. This means the timer automatically starts when the PCD stops transmitting.
// Each iteration of the do-while-loop takes 17.86μs.
// TODO check/modify for other architectures than Arduino Uno 16bit
uint16_t i;
for (i = 2000; i > 0; i--) {
long t_delta=0;
long t_start=millis();
while(t_delta < software_timeout_ms) {
uint8_t n = PCD_ReadRegister(ComIrqReg); // ComIrqReg[7..0] bits are: Set1 TxIRq RxIRq IdleIRq HiAlertIRq LoAlertIRq ErrIRq TimerIRq
if (n & waitIRq) { // One of the interrupts that signal success has been set.
break;
@@ -490,9 +508,11 @@ MFRC522::StatusCode MFRC522::PCD_CommunicateWithPICC( uint8_t command, ///< The
if (n & 0x01) { // Timer interrupt - nothing received in 25ms
return STATUS_TIMEOUT;
}
delay(1); // prevents bus flood
t_delta = millis() - t_start;
}
// 35.7ms and nothing happend. Communication with the MFRC522 might be down.
if (i == 0) {
if(t_delta >= software_timeout_ms) {
return STATUS_TIMEOUT;
}
@@ -868,7 +888,7 @@ MFRC522::StatusCode MFRC522::PICC_HaltA() {
/**
* Executes the MFRC522 MFAuthent command.
* This command manages MIFARE authentication to enable a secure communication to any MIFARE Mini, MIFARE 1K and MIFARE 4K card.
* The authentication is described in the MFRC522 datasheet section 10.3.1.9 and http://www.nxp.com/documents/data_sheet/MF1S503x.pdf section 10.1.
* The authentication is described in the MFRC522 datasheet section 10.3.1.9 and https://www.nxp.com/docs/en/data-sheet/MF1S503x.pdf section 10.1.
* For use with MIFARE Classic PICCs.
* The PICC must be selected - ie in state ACTIVE(*) - before calling this function.
* Remember to call PCD_StopCrypto1() after communicating with the authenticated PICC - otherwise no new communications can start.
@@ -1346,36 +1366,36 @@ const __FlashStringHelper *MFRC522::PICC_GetTypeName(PICC_Type piccType ///< One
* Dumps debug info about the connected PCD to Serial.
* Shows all known firmware versions
*/
void MFRC522::PCD_DumpVersionToSerial() {
void MFRC522::PCD_DumpVersionToSerial(Print &logPrint) {
// Get the MFRC522 firmware version
uint8_t v = PCD_ReadRegister(VersionReg);
Serial.print(F("Firmware Version: 0x"));
Serial.print(v, HEX);
logPrint.print(F("Firmware Version: 0x"));
logPrint.print(v, HEX);
// Lookup which version
switch(v) {
case 0x88: Serial.println(F(" = (clone)")); break;
case 0x90: Serial.println(F(" = v0.0")); break;
case 0x91: Serial.println(F(" = v1.0")); break;
case 0x92: Serial.println(F(" = v2.0")); break;
case 0x12: Serial.println(F(" = counterfeit chip")); break;
default: Serial.println(F(" = (unknown)"));
case 0x88: logPrint.println(F(" = (clone)")); break;
case 0x90: logPrint.println(F(" = v0.0")); break;
case 0x91: logPrint.println(F(" = v1.0")); break;
case 0x92: logPrint.println(F(" = v2.0")); break;
case 0x12: logPrint.println(F(" = counterfeit chip")); break;
default: logPrint.println(F(" = (unknown)"));
}
// When 0x00 or 0xFF is returned, communication probably failed
if ((v == 0x00) || (v == 0xFF))
Serial.println(F("WARNING: Communication failure, is the MFRC522 properly connected?"));
logPrint.println(F("WARNING: Communication failure, is the MFRC522 properly connected?"));
} // End PCD_DumpVersionToSerial()
/**
* Dumps debug info about the selected PICC to Serial.
* Dumps debug info about the selected PICC to logPrint.
* On success the PICC is halted after dumping the data.
* For MIFARE Classic the factory default key of 0xFFFFFFFFFFFF is tried.
*/
void MFRC522::PICC_DumpToSerial(Uid *uid ///< Pointer to Uid struct returned from a successful PICC_Select().
) {
, Print &logPrint) {
MIFARE_Key key;
// Dump UID, SAK and Type
PICC_DumpDetailsToSerial(uid);
PICC_DumpDetailsToSerial(uid, logPrint);
// Dump contents
PICC_Type piccType = PICC_GetType(uid->sak);
@@ -1387,11 +1407,11 @@ void MFRC522::PICC_DumpToSerial(Uid *uid ///< Pointer to Uid struct returned fro
for (uint8_t i = 0; i < 6; i++) {
key.keyByte[i] = 0xFF;
}
PICC_DumpMifareClassicToSerial(uid, piccType, &key);
PICC_DumpMifareClassicToSerial(uid, piccType, &key, logPrint);
break;
case PICC_TYPE_MIFARE_UL:
PICC_DumpMifareUltralightToSerial();
PICC_DumpMifareUltralightToSerial(logPrint);
break;
case PICC_TYPE_ISO_14443_4:
@@ -1399,7 +1419,7 @@ void MFRC522::PICC_DumpToSerial(Uid *uid ///< Pointer to Uid struct returned fro
case PICC_TYPE_ISO_18092:
case PICC_TYPE_MIFARE_PLUS:
case PICC_TYPE_TNP3XXX:
Serial.println(F("Dumping memory contents not implemented for that PICC type."));
logPrint.println(F("Dumping memory contents not implemented for that PICC type."));
break;
case PICC_TYPE_UNKNOWN:
@@ -1408,36 +1428,36 @@ void MFRC522::PICC_DumpToSerial(Uid *uid ///< Pointer to Uid struct returned fro
break; // No memory dump here
}
Serial.println();
logPrint.println();
PICC_HaltA(); // Already done if it was a MIFARE Classic PICC.
} // End PICC_DumpToSerial()
/**
* Dumps card info (UID,SAK,Type) about the selected PICC to Serial.
* Dumps card info (UID,SAK,Type) about the selected PICC to logPrint.
*/
void MFRC522::PICC_DumpDetailsToSerial(Uid *uid ///< Pointer to Uid struct returned from a successful PICC_Select().
) {
, Print &logPrint) {
// UID
Serial.print(F("Card UID:"));
logPrint.print(F("Card UID:"));
for (uint8_t i = 0; i < uid->size; i++) {
if(uid->uidByte[i] < 0x10)
Serial.print(F(" 0"));
logPrint.print(F(" 0"));
else
Serial.print(F(" "));
Serial.print(uid->uidByte[i], HEX);
logPrint.print(F(" "));
logPrint.print(uid->uidByte[i], HEX);
}
Serial.println();
logPrint.println();
// SAK
Serial.print(F("Card SAK: "));
logPrint.print(F("Card SAK: "));
if(uid->sak < 0x10)
Serial.print(F("0"));
Serial.println(uid->sak, HEX);
logPrint.print(F("0"));
logPrint.println(uid->sak, HEX);
// (suggested) PICC type
PICC_Type piccType = PICC_GetType(uid->sak);
Serial.print(F("PICC type: "));
Serial.println(PICC_GetTypeName(piccType));
logPrint.print(F("PICC type: "));
logPrint.println(PICC_GetTypeName(piccType));
} // End PICC_DumpDetailsToSerial()
/**
@@ -1447,7 +1467,7 @@ void MFRC522::PICC_DumpDetailsToSerial(Uid *uid ///< Pointer to Uid struct retur
void MFRC522::PICC_DumpMifareClassicToSerial( Uid *uid, ///< Pointer to Uid struct returned from a successful PICC_Select().
PICC_Type piccType, ///< One of the PICC_Type enums.
MIFARE_Key *key ///< Key A used for all sectors.
) {
, Print &logPrint) {
uint8_t no_of_sectors = 0;
switch (piccType) {
case PICC_TYPE_MIFARE_MINI:
@@ -1471,9 +1491,9 @@ void MFRC522::PICC_DumpMifareClassicToSerial( Uid *uid, ///< Pointer to Uid st
// Dump sectors, highest address first.
if (no_of_sectors) {
Serial.println(F("Sector Block 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 AccessBits"));
logPrint.println(F("Sector Block 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 AccessBits"));
for (int8_t i = no_of_sectors - 1; i >= 0; i--) {
PICC_DumpMifareClassicSectorToSerial(uid, key, i);
PICC_DumpMifareClassicSectorToSerial(uid, key, i, logPrint);
}
}
PICC_HaltA(); // Halt the PICC before stopping the encrypted session.
@@ -1488,7 +1508,7 @@ void MFRC522::PICC_DumpMifareClassicToSerial( Uid *uid, ///< Pointer to Uid st
void MFRC522::PICC_DumpMifareClassicSectorToSerial(Uid *uid, ///< Pointer to Uid struct returned from a successful PICC_Select().
MIFARE_Key *key, ///< Key A for the sector.
uint8_t sector ///< The sector to dump, 0..39.
) {
, Print &logPrint) {
MFRC522::StatusCode status;
uint8_t firstBlock; // Address of lowest address to dump actually last block dumped)
uint8_t no_of_blocks; // Number of blocks in sector
@@ -1533,32 +1553,32 @@ void MFRC522::PICC_DumpMifareClassicSectorToSerial(Uid *uid, ///< Pointer to U
// Sector number - only on first line
if (isSectorTrailer) {
if(sector < 10)
Serial.print(F(" ")); // Pad with spaces
logPrint.print(F(" ")); // Pad with spaces
else
Serial.print(F(" ")); // Pad with spaces
Serial.print(sector);
Serial.print(F(" "));
logPrint.print(F(" ")); // Pad with spaces
logPrint.print(sector);
logPrint.print(F(" "));
}
else {
Serial.print(F(" "));
logPrint.print(F(" "));
}
// Block number
if(blockAddr < 10)
Serial.print(F(" ")); // Pad with spaces
logPrint.print(F(" ")); // Pad with spaces
else {
if(blockAddr < 100)
Serial.print(F(" ")); // Pad with spaces
logPrint.print(F(" ")); // Pad with spaces
else
Serial.print(F(" ")); // Pad with spaces
logPrint.print(F(" ")); // Pad with spaces
}
Serial.print(blockAddr);
Serial.print(F(" "));
logPrint.print(blockAddr);
logPrint.print(F(" "));
// Establish encrypted communications before reading the first block
if (isSectorTrailer) {
status = PCD_Authenticate(PICC_CMD_MF_AUTH_KEY_A, firstBlock, key, uid);
if (status != STATUS_OK) {
Serial.print(F("PCD_Authenticate() failed: "));
Serial.println(GetStatusCodeName(status));
logPrint.print(F("PCD_Authenticate() failed: "));
logPrint.println(GetStatusCodeName(status));
return;
}
}
@@ -1566,19 +1586,19 @@ void MFRC522::PICC_DumpMifareClassicSectorToSerial(Uid *uid, ///< Pointer to U
byteCount = sizeof(buffer);
status = MIFARE_Read(blockAddr, buffer, &byteCount);
if (status != STATUS_OK) {
Serial.print(F("MIFARE_Read() failed: "));
Serial.println(GetStatusCodeName(status));
logPrint.print(F("MIFARE_Read() failed: "));
logPrint.println(GetStatusCodeName(status));
continue;
}
// Dump data
for (uint8_t index = 0; index < 16; index++) {
if(buffer[index] < 0x10)
Serial.print(F(" 0"));
logPrint.print(F(" 0"));
else
Serial.print(F(" "));
Serial.print(buffer[index], HEX);
logPrint.print(F(" "));
logPrint.print(buffer[index], HEX);
if ((index % 4) == 3) {
Serial.print(F(" "));
logPrint.print(F(" "));
}
}
// Parse sector trailer data
@@ -1609,22 +1629,22 @@ void MFRC522::PICC_DumpMifareClassicSectorToSerial(Uid *uid, ///< Pointer to U
if (firstInGroup) {
// Print access bits
Serial.print(F(" [ "));
Serial.print((g[group] >> 2) & 1, DEC); Serial.print(F(" "));
Serial.print((g[group] >> 1) & 1, DEC); Serial.print(F(" "));
Serial.print((g[group] >> 0) & 1, DEC);
Serial.print(F(" ] "));
logPrint.print(F(" [ "));
logPrint.print((g[group] >> 2) & 1, DEC); logPrint.print(F(" "));
logPrint.print((g[group] >> 1) & 1, DEC); logPrint.print(F(" "));
logPrint.print((g[group] >> 0) & 1, DEC);
logPrint.print(F(" ] "));
if (invertedError) {
Serial.print(F(" Inverted access bits did not match! "));
logPrint.print(F(" Inverted access bits did not match! "));
}
}
if (group != 3 && (g[group] == 1 || g[group] == 6)) { // Not a sector trailer, a value block
int32_t value = (int32_t(buffer[3])<<24) | (int32_t(buffer[2])<<16) | (int32_t(buffer[1])<<8) | int32_t(buffer[0]);
Serial.print(F(" Value=0x")); Serial.print(value, HEX);
Serial.print(F(" Adr=0x")); Serial.print(buffer[12], HEX);
logPrint.print(F(" Value=0x")); logPrint.print(value, HEX);
logPrint.print(F(" Adr=0x")); logPrint.print(buffer[12], HEX);
}
Serial.println();
logPrint.println();
}
return;
@@ -1633,41 +1653,41 @@ void MFRC522::PICC_DumpMifareClassicSectorToSerial(Uid *uid, ///< Pointer to U
/**
* Dumps memory contents of a MIFARE Ultralight PICC.
*/
void MFRC522::PICC_DumpMifareUltralightToSerial() {
void MFRC522::PICC_DumpMifareUltralightToSerial(Print &logPrint) {
MFRC522::StatusCode status;
uint8_t byteCount;
uint8_t buffer[18];
uint8_t i;
Serial.println(F("Page 0 1 2 3"));
logPrint.println(F("Page 0 1 2 3"));
// Try the mpages of the original Ultralight. Ultralight C has more pages.
for (uint8_t page = 0; page < 16; page +=4) { // Read returns data for 4 pages at a time.
// Read pages
byteCount = sizeof(buffer);
status = MIFARE_Read(page, buffer, &byteCount);
if (status != STATUS_OK) {
Serial.print(F("MIFARE_Read() failed: "));
Serial.println(GetStatusCodeName(status));
logPrint.print(F("MIFARE_Read() failed: "));
logPrint.println(GetStatusCodeName(status));
break;
}
// Dump data
for (uint8_t offset = 0; offset < 4; offset++) {
i = page + offset;
if(i < 10)
Serial.print(F(" ")); // Pad with spaces
logPrint.print(F(" ")); // Pad with spaces
else
Serial.print(F(" ")); // Pad with spaces
Serial.print(i);
Serial.print(F(" "));
logPrint.print(F(" ")); // Pad with spaces
logPrint.print(i);
logPrint.print(F(" "));
for (uint8_t index = 0; index < 4; index++) {
i = 4 * offset + index;
if(buffer[i] < 0x10)
Serial.print(F(" 0"));
logPrint.print(F(" 0"));
else
Serial.print(F(" "));
Serial.print(buffer[i], HEX);
logPrint.print(F(" "));
logPrint.print(buffer[i], HEX);
}
Serial.println();
logPrint.println();
}
}
} // End PICC_DumpMifareUltralightToSerial()
+32 -9
View File
@@ -64,7 +64,7 @@ const uint8_t MFRC522_firmware_referenceV2_0[] PROGMEM = {
};
// Clone
// Fudan Semiconductor FM17522 (0x88)
const uint8_t FM17522_firmware_reference[] PROGMEM = {
const uint8_t FM17522_firmware_reference88[] PROGMEM = {
0x00, 0xD6, 0x78, 0x8C, 0xE2, 0xAA, 0x0C, 0x18,
0x2A, 0xB8, 0x7A, 0x7F, 0xD3, 0x6A, 0xCF, 0x0B,
0xB1, 0x37, 0x63, 0x4B, 0x69, 0xAE, 0x91, 0xC7,
@@ -74,6 +74,28 @@ const uint8_t FM17522_firmware_reference[] PROGMEM = {
0x51, 0x64, 0xAB, 0x3E, 0xE9, 0x15, 0xB5, 0xAB,
0x56, 0x9A, 0x98, 0x82, 0x26, 0xEA, 0x2A, 0x62
};
// Another "FM17522" ic form Aliexpress
const uint8_t FM17522_firmware_referenceB2[] PROGMEM = {
0x00, 0xeb, 0x44, 0x85, 0xfa, 0x9a, 0x78, 0x01,
0x74, 0xe5, 0x1c, 0x7a, 0x0a, 0xa0, 0x71, 0xe1,
0xf3, 0xfa, 0x96, 0x6d, 0x28, 0xa1, 0x34, 0x46,
0x3a, 0x1c, 0x32, 0x96, 0xb9, 0xe6, 0x44, 0x87,
0x0a, 0x45, 0x98, 0xa9, 0x36, 0x60, 0x89, 0x0f,
0x06, 0x9b, 0x7b, 0x17, 0xb3, 0x0c, 0x1a, 0x6c,
0x1a, 0xae, 0x2c, 0xac, 0x0e, 0x6f, 0x2e, 0x02,
0x2b, 0xcb, 0x8a, 0xb2, 0x45, 0xdd, 0x7e, 0x3c
};
// Fudan Semiconductor FM17522E (0x89)
const uint8_t FM17522E_firmware_reference[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x80, 0x00, 0x04, 0xcc, 0xc8, 0x00,
0x10, 0x04, 0x00, 0xc0, 0x00, 0x90, 0x00, 0x20,
0x00, 0x00, 0x23, 0x00, 0x38, 0x06, 0x01, 0x33,
0x98, 0xf3, 0x80, 0x06, 0xc0, 0xf9, 0x80, 0x08,
0x27, 0x04, 0x23, 0x82, 0x21, 0x12, 0xf9, 0xc7
};
class MFRC522 {
public:
@@ -173,7 +195,7 @@ public:
};
// MFRC522 RxGain[2:0] masks, defines the receiver's signal voltage gain factor (on the PCD).
// Described in 9.3.3.6 / table 98 of the datasheet at http://www.nxp.com/documents/data_sheet/MFRC522.pdf
// Described in 9.3.3.6 / table 98 of the datasheet at https://www.nxp.com/docs/en/data-sheet/MFRC522.pdf
enum PCD_RxGain : uint8_t {
RxGain_18dB = 0x00 << 4, // 000b - 18 dB, minimum
RxGain_23dB = 0x01 << 4, // 001b - 23 dB
@@ -210,7 +232,7 @@ public:
PICC_CMD_MF_INCREMENT = 0xC1, // Increments the contents of a block and stores the result in the internal data register.
PICC_CMD_MF_RESTORE = 0xC2, // Reads the contents of a block into the internal data register.
PICC_CMD_MF_TRANSFER = 0xB0, // Writes the contents of the internal data register to a block.
// The commands used for MIFARE Ultralight (from http://www.nxp.com/documents/data_sheet/MF0ICU1.pdf, Section 8.6)
// The commands used for MIFARE Ultralight (from https://www.nxp.com/docs/en/data-sheet/MF0ICU1.pdf, Section 8.6)
// The PICC_CMD_MF_READ and PICC_CMD_MF_WRITE can also be used for MIFARE Ultralight.
PICC_CMD_UL_WRITE = 0xA2 // Writes one 4 uint8_t page to the PICC.
};
@@ -292,6 +314,7 @@ public:
void PCD_Init(uint8_t resetPowerDownPin);
void PCD_Init(uint8_t chipSelectPin, uint8_t resetPowerDownPin);
void PCD_Reset();
void PCD_HardReset();
void PCD_AntennaOn();
void PCD_AntennaOff();
uint8_t PCD_GetAntennaGain();
@@ -344,12 +367,12 @@ public:
static const __FlashStringHelper *PICC_GetTypeName(PICC_Type type);
// Support functions for debuging
void PCD_DumpVersionToSerial();
void PICC_DumpToSerial(Uid *uid);
void PICC_DumpDetailsToSerial(Uid *uid);
void PICC_DumpMifareClassicToSerial(Uid *uid, PICC_Type piccType, MIFARE_Key *key);
void PICC_DumpMifareClassicSectorToSerial(Uid *uid, MIFARE_Key *key, uint8_t sector);
void PICC_DumpMifareUltralightToSerial();
void PCD_DumpVersionToSerial(Print &logPrint);
void PICC_DumpToSerial(Uid *uid, Print &logPrint);
void PICC_DumpDetailsToSerial(Uid *uid, Print &logPrint);
void PICC_DumpMifareClassicToSerial(Uid *uid, PICC_Type piccType, MIFARE_Key *key, Print &logPrint);
void PICC_DumpMifareClassicSectorToSerial(Uid *uid, MIFARE_Key *key, uint8_t sector, Print &logPrint);
void PICC_DumpMifareUltralightToSerial(Print &logPrint);
// Advanced functions for MIFARE
void MIFARE_SetAccessBits(uint8_t *accessBitBuffer, uint8_t g0, uint8_t g1, uint8_t g2, uint8_t g3);
+3 -35
View File
@@ -162,43 +162,11 @@ extra_scripts = ${esp82xx_common.extra_scripts}
; Updated ESP-IDF to the latest stable 4.0.1
; See: https://github.com/platformio/platform-espressif32/releases
; IDF 4.4 = platform-espressif32 3.4.x = espressif/arduino-esp32 tag 2.0.4
; Just for those who lost track of the extremely confusing numbering schema.
; For MUSTFIX_CLIENT_TIMEOUT_IN_SECONDS See: https://github.com/espressif/arduino-esp32/pull/6676
[core_esp32_IDF5_1_4__3_1_0_SPIFFS]
platform = https://github.com/tasmota/platform-espressif32/releases/download/2024.09.10/platform-espressif32.zip
platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/3202/framework-arduinoespressif32-all-release_v5.1-41a885b.zip
build_flags = -DESP32_STAGE
-DESP_IDF_VERSION_MAJOR=5
-DLIBRARIES_NO_LOG=1
-DDISABLE_SC16IS752_SPI
-DCONFIG_PM_ENABLE=0
-DESP_IDF_STILL_NEEDS_SPI_REGISTERS_FIXED
-DPR_9453_FLUSH_TO_CLEAR=clear
;-DETH_TYPE_JL1101_SUPPORTED
; -DCONFIG_LWIP_L2_TO_L3_COPY
; -DETH_SPI_SUPPORTS_NO_IRQ=1
-DCONFIG_FREERTOS_USE_TICKLESS_IDLE=1
-DCONFIG_FREERTOS_IDLE_TIME_BEFORE_SLEEP=3
-DNEOPIXEL_ESP32_RMT_DEFAULT
-DCRON_USE_LOCAL_TIME
-I$PROJECT_DIR/src/include
-include "sdkconfig.h"
-include "ESPEasy_config.h"
-include "esp32x_fixes.h"
-Wnull-dereference
lib_ignore =
lib_extra_dirs =
lib/lib_ssl
; ESP_IDF 5.3.1
[core_esp32_IDF5_3_2__3_1_0_LittleFS]
; ESP_IDF 5.4.1
[core_esp32_IDF5_4_1__3_2_0_LittleFS]
platform = https://github.com/Jason2866/platform-espressif32.git#Arduino/IDF54
platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/3538/framework-arduinoespressif32-all-release_v5.4-8f5ad6d7.zip
platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/3743/framework-arduinoespressif32-all-release_v5.4-a4437683.zip
build_flags = -DESP32_STAGE
-DESP_IDF_VERSION_MAJOR=5
-DLIBRARIES_NO_LOG=1
+204 -473
View File
@@ -1,42 +1,5 @@
;;; ESP32 test build ********************************************************************;
; Status of the ESP32 support is still considered "beta" ;
; Most plugins work just fine on ESP32. ;
; Especially some plugins using serial may not run very well (GPS does run fine). ;
; ***************************************************************************************;
[esp32_base]
extends = common, core_esp32_IDF5_1_4__3_1_0_SPIFFS
upload_speed = 460800
upload_before_reset = default_reset
upload_after_reset = hard_reset
extra_scripts = pre:tools/pio/pre_esp32.py
post:tools/pio/post_esp32.py
${extra_scripts_default.extra_scripts}
post:tools/pio/copy_files.py
; you can disable debug linker flag to reduce binary size (comment out line below), but the backtraces will become less readable
; tools/pio/extra_linker_flags.py
; fix the platform package to use gcc-ar and gcc-ranlib to enable lto linker plugin
; more detail: https://embeddedartistry.com/blog/2020/04/13/prefer-gcc-ar-to-ar-in-your-buildsystems/
; pre:tools/pio/apply_patches.py
build_unflags = -Wall
-fno-lto
build_flags = ${core_esp32_IDF5_1_4__3_1_0_SPIFFS.build_flags}
; ${mqtt_flags.build_flags}
-DMQTT_MAX_PACKET_SIZE=2048
-DCONFIG_FREERTOS_ASSERT_DISABLE
-DCONFIG_LWIP_ESP_GRATUITOUS_ARP
-fno-strict-aliasing
-flto=auto
-Wswitch
-DCORE_DEBUG_LEVEL=ARDUHAL_LOG_LEVEL_NONE
monitor_filters = esp32_exception_decoder
lib_ignore =
${core_esp32_IDF5_1_4__3_1_0_SPIFFS.lib_ignore}
[esp32_base_idf5]
extends = common, core_esp32_IDF5_3_2__3_1_0_LittleFS
extends = common, core_esp32_IDF5_4_1__3_2_0_LittleFS
upload_speed = 460800
upload_before_reset = default_reset
upload_after_reset = hard_reset
@@ -55,7 +18,7 @@ extra_scripts = pre:tools/pio/pre_esp32.py
; However LTO cannot optimize builds with text section literals and thus will result in quite a lot larger builds (80k - 140k larger)
build_unflags = -Wall
-fno-lto
build_flags = ${core_esp32_IDF5_3_2__3_1_0_LittleFS.build_flags}
build_flags = ${core_esp32_IDF5_4_1__3_2_0_LittleFS.build_flags}
; ${mqtt_flags.build_flags}
-DMQTT_MAX_PACKET_SIZE=2048
-DCONFIG_FREERTOS_ASSERT_DISABLE
@@ -69,17 +32,7 @@ build_flags = ${core_esp32_IDF5_3_2__3_1_0_LittleFS.build_flags}
-DLWIP_IPV6=1
monitor_filters = esp32_exception_decoder
lib_ignore =
${core_esp32_IDF5_3_2__3_1_0_LittleFS.lib_ignore}
; -flto cannot be used for ESP32 C3!
; See: https://github.com/letscontrolit/ESPEasy/pull/3845#issuecomment-1014857366
; TD-er: 2022-01-20: Disabled for now as it also resulted in obscure linker errors on ESP32-S2 and ESP32 running custom builds.
;build_flags = ${esp32_base.build_flags}
; -flto
;build_unflags = ${esp32_base.build_unflags}
; -fexceptions
; -fno-lto
${core_esp32_IDF5_4_1__3_2_0_LittleFS.lib_ignore}
[esp32_always]
@@ -93,503 +46,282 @@ lib_ignore = ESP8266Ping
TinyWireM
LittleFS_esp32
Adafruit NeoPixel
${esp32_base.lib_ignore}
${esp32_base_idf5.lib_ignore}
[esp32_common]
extends = esp32_base
lib_ignore = ${esp32_always.lib_ignore}
ESP32_ping
${no_ir.lib_ignore}
ESP32 BLE Arduino
build_flags = ${esp32_base.build_flags}
-DESP32_CLASSIC
extra_scripts = ${esp32_base.extra_scripts}
build_unflags = ${esp32_base.build_unflags}
-fexceptions
[esp32_common_LittleFS]
[esp32_common_LittleFS_ETH]
extends = esp32_base_idf5
build_flags = ${esp32_base_idf5.build_flags}
; -mtext-section-literals
-DFEATURE_ETHERNET=1
-DESP32_CLASSIC
-DUSE_LITTLEFS
build_unflags = ${esp32_base_idf5.build_unflags}
extra_scripts = ${esp32_common.extra_scripts}
extra_scripts = ${esp32_base_idf5.extra_scripts}
board_build.filesystem = littlefs
lib_ignore = ${esp32_always.lib_ignore}
ESP32_ping
ESP32 BLE Arduino
${core_esp32_IDF5_3_2__3_1_0_LittleFS.lib_ignore}
${esp32_base_idf5.lib_ignore}
[esp32_IRExt]
extends = esp32_common
[esp32_IRExt_LittleFS_ETH]
extends = esp32_common_LittleFS_ETH
lib_ignore = ${esp32_always.lib_ignore}
ESP32_ping
build_flags = ${esp32_common.build_flags}
build_flags = ${esp32_common_LittleFS_ETH.build_flags}
-DFEATURE_ETHERNET=1
-DFEATURE_ARDUINO_OTA=1
-DPLUGIN_BUILD_NORMAL_IRext
-DCOLLECTION_FEATURE_RTTTL=1
extra_scripts = ${esp32_common.extra_scripts}
-DLIMIT_BUILD_SIZE
extra_scripts = ${esp32_common_LittleFS_ETH.extra_scripts}
pre:tools/pio/ir_build_check.py
[esp32_custom_base]
extends = esp32_common
build_flags = ${esp32_common.build_flags}
-DPLUGIN_BUILD_CUSTOM
extra_scripts = ${esp32_common.extra_scripts}
pre:tools/pio/pre_custom_esp32.py
[esp32_custom_base_LittleFS]
extends = esp32_common_LittleFS
build_flags = ${esp32_common_LittleFS.build_flags}
extends = esp32_common_LittleFS_ETH
build_flags = ${esp32_common_LittleFS_ETH.build_flags}
-DPLUGIN_BUILD_CUSTOM
extra_scripts = ${esp32_common_LittleFS.extra_scripts}
extra_scripts = ${esp32_common_LittleFS_ETH.extra_scripts}
pre:tools/pio/pre_custom_esp32.py
[env:custom_ESP32_4M316k_ETH]
extends = esp32_custom_base
board = esp32_4M
build_flags = ${esp32_custom_base.build_flags}
-DFEATURE_ETHERNET=1
; [env:custom_ESP32_4M316k_LittleFS]
; extends = esp32_custom_base_LittleFS
; board = esp32_4M
[env:custom_ESP32_16M8M_LittleFS_ETH]
extends = esp32_custom_base_LittleFS
board = esp32_16M8M
board_upload.flash_size = 16MB
build_flags = ${esp32_custom_base_LittleFS.build_flags}
-DFEATURE_ETHERNET=1
[env:custom_IR_ESP32_4M316k_ETH]
extends = esp32_common
board = esp32_4M
build_flags = ${esp32_common.build_flags}
-DPLUGIN_BUILD_CUSTOM
-DPLUGIN_BUILD_IR
-DFEATURE_ETHERNET=1
lib_ignore = ${esp32_always.lib_ignore}
ESP32_ping
extra_scripts = ${esp32_common.extra_scripts}
pre:tools/pio/pre_custom_esp32_IR.py
pre:tools/pio/ir_build_check.py
[env:custom_ESP32_4M2M_NO_OTA_LittleFS_ETH]
extends = esp32_custom_base_LittleFS
board = esp32_4M2M
build_flags = ${esp32_custom_base_LittleFS.build_flags}
-DNO_HTTP_UPDATER
-DFEATURE_ETHERNET=1
[env:normal_ESP32_4M316k_ETH]
extends = esp32_common
board = esp32_4M
lib_ignore = ${esp32_common.lib_ignore}
${no_ir.lib_ignore}
build_flags = ${esp32_common.build_flags}
-DFEATURE_ETHERNET=1
; [env:normal_ESP32_4M316k_LittleFS]
; extends = esp32_common_LittleFS
; board = esp32_4M
; lib_ignore = ${esp32_common_LittleFS.lib_ignore}
; ${no_ir.lib_ignore}
[env:collection_A_ESP32_4M316k_ETH]
extends = esp32_common
board = esp32_4M
build_flags = ${esp32_common.build_flags}
-DFEATURE_ARDUINO_OTA=1
-DPLUGIN_SET_COLLECTION_ESP32
-DCOLLECTION_FEATURE_RTTTL=1
-DFEATURE_ETHERNET=1
[env:collection_B_ESP32_4M316k_ETH]
extends = esp32_common
board = esp32_4M
build_flags = ${esp32_common.build_flags}
-DFEATURE_ARDUINO_OTA=1
-DPLUGIN_SET_COLLECTION_B_ESP32
-DCOLLECTION_FEATURE_RTTTL=1
-DFEATURE_ETHERNET=1
[env:collection_C_ESP32_4M316k_ETH]
extends = esp32_common
board = esp32_4M
build_flags = ${esp32_common.build_flags}
-DFEATURE_ARDUINO_OTA=1
-DPLUGIN_SET_COLLECTION_C_ESP32
-DCOLLECTION_FEATURE_RTTTL=1
-DFEATURE_ETHERNET=1
[env:collection_D_ESP32_4M316k_ETH]
extends = esp32_common
board = esp32_4M
build_flags = ${esp32_common.build_flags}
-DFEATURE_ARDUINO_OTA=1
-DPLUGIN_SET_COLLECTION_D_ESP32
-DCOLLECTION_FEATURE_RTTTL=1
-DFEATURE_ETHERNET=1
[env:collection_E_ESP32_4M316k_ETH]
extends = esp32_common
board = esp32_4M
build_flags = ${esp32_common.build_flags}
-DFEATURE_ARDUINO_OTA=1
-DPLUGIN_SET_COLLECTION_E_ESP32
-DCOLLECTION_FEATURE_RTTTL=1
-DFEATURE_ETHERNET=1
[env:collection_F_ESP32_4M316k_ETH]
extends = esp32_common
board = esp32_4M
build_flags = ${esp32_common.build_flags}
-DFEATURE_ARDUINO_OTA=1
-DPLUGIN_SET_COLLECTION_F_ESP32
-DCOLLECTION_FEATURE_RTTTL=1
-DFEATURE_ETHERNET=1
[env:collection_G_ESP32_4M316k_ETH]
extends = esp32_common
board = esp32_4M
build_flags = ${esp32_common.build_flags}
-DFEATURE_ARDUINO_OTA=1
-DPLUGIN_SET_COLLECTION_G_ESP32
-DCOLLECTION_FEATURE_RTTTL=1
-DFEATURE_ETHERNET=1
[env:collection_A_ESP32_IRExt_4M316k]
extends = esp32_IRExt
board = esp32_4M
build_flags = ${esp32_IRExt.build_flags}
-DPLUGIN_SET_COLLECTION_ESP32
[env:collection_B_ESP32_IRExt_4M316k]
extends = esp32_IRExt
board = esp32_4M
build_flags = ${esp32_IRExt.build_flags}
-DPLUGIN_SET_COLLECTION_B_ESP32
[env:collection_C_ESP32_IRExt_4M316k]
extends = esp32_IRExt
board = esp32_4M
build_flags = ${esp32_IRExt.build_flags}
-DPLUGIN_SET_COLLECTION_C_ESP32
[env:collection_D_ESP32_IRExt_4M316k]
extends = esp32_IRExt
board = esp32_4M
build_flags = ${esp32_IRExt.build_flags}
-DPLUGIN_SET_COLLECTION_D_ESP32
[env:collection_E_ESP32_IRExt_4M316k]
extends = esp32_IRExt
board = esp32_4M
build_flags = ${esp32_IRExt.build_flags}
-DPLUGIN_SET_COLLECTION_E_ESP32
[env:collection_F_ESP32_IRExt_4M316k]
extends = esp32_IRExt
board = esp32_4M
build_flags = ${esp32_IRExt.build_flags}
-DPLUGIN_SET_COLLECTION_F_ESP32
[env:collection_G_ESP32_IRExt_4M316k]
extends = esp32_IRExt
board = esp32_4M
build_flags = ${esp32_IRExt.build_flags}
-DPLUGIN_SET_COLLECTION_G_ESP32
[env:energy_ESP32_4M316k_ETH]
extends = esp32_common
board = esp32_4M
build_flags = ${esp32_common.build_flags}
-DFEATURE_ARDUINO_OTA=1
-DPLUGIN_ENERGY_COLLECTION
-DFEATURE_ETHERNET=1
[env:display_ESP32_4M316k_ETH]
extends = esp32_common
board = esp32_4M
build_flags = ${esp32_common.build_flags}
-DFEATURE_ARDUINO_OTA=1
-DPLUGIN_DISPLAY_COLLECTION
-D ST7789_EXTRA_INIT=1
-D P116_EXTRA_ST7789=1
-DFEATURE_ETHERNET=1
[env:climate_ESP32_4M316k_ETH]
extends = esp32_common
board = esp32_4M
build_flags = ${esp32_common.build_flags}
-DFEATURE_ARDUINO_OTA=1
-DPLUGIN_CLIMATE_COLLECTION
-DFEATURE_ETHERNET=1
[env:climate_ESP32_4M316k_LittleFS_ETH]
extends = esp32_common_LittleFS
board = esp32_4M
lib_ignore = ${esp32_always.lib_ignore}
ESP32_ping
${esp32_common_LittleFS.lib_ignore}
${no_ir.lib_ignore}
build_flags = ${esp32_common_LittleFS.build_flags}
-DPLUGIN_CLIMATE_COLLECTION
-DFEATURE_ETHERNET=1
[env:neopixel_ESP32_4M316k_ETH]
extends = esp32_common
board = esp32_4M
build_flags = ${esp32_common.build_flags}
-DFEATURE_ARDUINO_OTA=1
-DFEATURE_SD=1
-D PLUGIN_NEOPIXEL_COLLECTION
-DFEATURE_ETHERNET=1
; [env:custom_ESP32_4M316k_ETH]
; extends = env:custom_ESP32_4M316k
; build_flags = ${env:custom_ESP32_4M316k.build_flags}
; -DFEATURE_ETHERNET=1
[env:custom_ESP32_4M316k_LittleFS_ETH]
extends = esp32_custom_base_LittleFS
board = esp32_4M
build_flags = ${esp32_custom_base_LittleFS.build_flags}
-DFEATURE_ETHERNET=1
; [env:custom_IR_ESP32_4M316k_ETH]
; extends = env:custom_IR_ESP32_4M316k
; build_flags = ${env:custom_IR_ESP32_4M316k.build_flags}
; -DFEATURE_ETHERNET=1
; extra_scripts = ${env:custom_IR_ESP32_4M316k.extra_scripts}
[env:custom_IR_ESP32_16M8M_LittleFS_ETH]
extends = esp32_common_LittleFS
[env:custom_ESP32_16M8M_LittleFS_ETH]
extends = env:custom_ESP32_4M316k_LittleFS_ETH
board = esp32_16M8M
board_upload.flash_size = 16MB
build_flags = ${esp32_common_LittleFS.build_flags}
build_flags = ${env:custom_ESP32_4M316k_LittleFS_ETH.build_flags}
[env:custom_IR_ESP32_4M316k_LittleFS_ETH]
extends = esp32_common_LittleFS_ETH
board = esp32_4M
build_flags = ${esp32_common_LittleFS_ETH.build_flags}
-DPLUGIN_BUILD_CUSTOM
-DPLUGIN_BUILD_IR
-DFEATURE_ETHERNET=1
lib_ignore = ${esp32_always.lib_ignore}
ESP32_ping
${esp32_common_LittleFS.lib_ignore}
extra_scripts = ${esp32_common.extra_scripts}
extra_scripts = ${esp32_common_LittleFS_ETH.extra_scripts}
pre:tools/pio/pre_custom_esp32_IR.py
pre:tools/pio/ir_build_check.py
; [env:normal_ESP32_4M316k_ETH]
; extends = env:normal_ESP32_4M316k
; build_flags = ${env:normal_ESP32_4M316k.build_flags}
; -DFEATURE_ETHERNET=1
[env:custom_ESP32_4M2M_NO_OTA_LittleFS_ETH]
extends = env:custom_ESP32_4M316k_LittleFS_ETH
board = esp32_4M2M
build_flags = ${env:custom_ESP32_4M316k_LittleFS_ETH.build_flags}
-DNO_HTTP_UPDATER
[env:normal_ESP32_4M316k_LittleFS_ETH]
extends = esp32_common_LittleFS
[env:collection_A_ESP32_4M316k_LittleFS_ETH]
extends = esp32_common_LittleFS_ETH
board = esp32_4M
build_flags = ${esp32_common_LittleFS_ETH.build_flags}
-DFEATURE_ARDUINO_OTA=1
-DPLUGIN_SET_COLLECTION_ESP32
-DCOLLECTION_FEATURE_RTTTL=1
[env:collection_B_ESP32_4M316k_LittleFS_ETH]
extends = esp32_common_LittleFS_ETH
board = esp32_4M
build_flags = ${esp32_common_LittleFS_ETH.build_flags}
-DFEATURE_ARDUINO_OTA=1
-DPLUGIN_SET_COLLECTION_B_ESP32
-DCOLLECTION_FEATURE_RTTTL=1
[env:collection_C_ESP32_4M316k_LittleFS_ETH]
extends = esp32_common_LittleFS_ETH
board = esp32_4M
build_flags = ${esp32_common_LittleFS_ETH.build_flags}
-DFEATURE_ARDUINO_OTA=1
-DPLUGIN_SET_COLLECTION_C_ESP32
-DCOLLECTION_FEATURE_RTTTL=1
[env:collection_D_ESP32_4M316k_LittleFS_ETH]
extends = esp32_common_LittleFS_ETH
board = esp32_4M
build_flags = ${esp32_common_LittleFS_ETH.build_flags}
-DFEATURE_ARDUINO_OTA=1
-DPLUGIN_SET_COLLECTION_D_ESP32
-DCOLLECTION_FEATURE_RTTTL=1
[env:collection_E_ESP32_4M316k_LittleFS_ETH]
extends = esp32_common_LittleFS_ETH
board = esp32_4M
build_flags = ${esp32_common_LittleFS_ETH.build_flags}
-DFEATURE_ARDUINO_OTA=1
-DPLUGIN_SET_COLLECTION_E_ESP32
-DCOLLECTION_FEATURE_RTTTL=1
[env:collection_F_ESP32_4M316k_LittleFS_ETH]
extends = esp32_common_LittleFS_ETH
board = esp32_4M
build_flags = ${esp32_common_LittleFS_ETH.build_flags}
-DFEATURE_ARDUINO_OTA=1
-DPLUGIN_SET_COLLECTION_F_ESP32
-DCOLLECTION_FEATURE_RTTTL=1
[env:collection_G_ESP32_4M316k_LittleFS_ETH]
extends = esp32_common_LittleFS_ETH
board = esp32_4M
build_flags = ${esp32_common_LittleFS_ETH.build_flags}
-DFEATURE_ARDUINO_OTA=1
-DPLUGIN_SET_COLLECTION_G_ESP32
-DCOLLECTION_FEATURE_RTTTL=1
[env:collection_A_ESP32_IRExt_4M316k_LittleFS_ETH]
extends = esp32_IRExt_LittleFS_ETH
board = esp32_4M
build_flags = ${esp32_IRExt_LittleFS_ETH.build_flags}
-DPLUGIN_SET_COLLECTION_ESP32
[env:collection_B_ESP32_IRExt_4M316k_LittleFS_ETH]
extends = esp32_IRExt_LittleFS_ETH
board = esp32_4M
build_flags = ${esp32_IRExt_LittleFS_ETH.build_flags}
-DPLUGIN_SET_COLLECTION_B_ESP32
[env:collection_C_ESP32_IRExt_4M316k_LittleFS_ETH]
extends = esp32_IRExt_LittleFS_ETH
board = esp32_4M
build_flags = ${esp32_IRExt_LittleFS_ETH.build_flags}
-DPLUGIN_SET_COLLECTION_C_ESP32
[env:collection_D_ESP32_IRExt_4M316k_LittleFS_ETH]
extends = esp32_IRExt_LittleFS_ETH
board = esp32_4M
build_flags = ${esp32_IRExt_LittleFS_ETH.build_flags}
-DPLUGIN_SET_COLLECTION_D_ESP32
[env:collection_E_ESP32_IRExt_4M316k_LittleFS_ETH]
extends = esp32_IRExt_LittleFS_ETH
board = esp32_4M
build_flags = ${esp32_IRExt_LittleFS_ETH.build_flags}
-DPLUGIN_SET_COLLECTION_E_ESP32
[env:collection_F_ESP32_IRExt_4M316k_LittleFS_ETH]
extends = esp32_IRExt_LittleFS_ETH
board = esp32_4M
build_flags = ${esp32_IRExt_LittleFS_ETH.build_flags}
-DPLUGIN_SET_COLLECTION_F_ESP32
[env:collection_G_ESP32_IRExt_4M316k_LittleFS_ETH]
extends = esp32_IRExt_LittleFS_ETH
board = esp32_4M
build_flags = ${esp32_IRExt_LittleFS_ETH.build_flags}
-DPLUGIN_SET_COLLECTION_G_ESP32
[env:energy_ESP32_4M316k_LittleFS_ETH]
extends = esp32_common_LittleFS_ETH
board = esp32_4M
build_flags = ${esp32_common_LittleFS_ETH.build_flags}
-DFEATURE_ARDUINO_OTA=1
-DPLUGIN_ENERGY_COLLECTION
[env:display_ESP32_4M316k_LittleFS_ETH]
extends = esp32_common_LittleFS_ETH
board = esp32_4M
build_flags = ${esp32_common_LittleFS_ETH.build_flags}
-DFEATURE_ARDUINO_OTA=1
-DPLUGIN_DISPLAY_COLLECTION
-D ST7789_EXTRA_INIT=1
-D P116_EXTRA_ST7789=1
[env:climate_ESP32_4M316k_LittleFS_ETH]
extends = esp32_common_LittleFS_ETH
board = esp32_4M
lib_ignore = ${esp32_always.lib_ignore}
ESP32_ping
${esp32_common_LittleFS.lib_ignore}
${esp32_common_LittleFS_ETH.lib_ignore}
${no_ir.lib_ignore}
build_flags = ${esp32_common_LittleFS.build_flags}
-DFEATURE_ETHERNET=1
build_flags = ${esp32_common_LittleFS_ETH.build_flags}
-DPLUGIN_CLIMATE_COLLECTION
[env:normal_ESP32_IRExt_4M316k_ETH]
extends = esp32_IRExt
[env:neopixel_ESP32_4M316k_LittleFS_ETH]
extends = esp32_common_LittleFS_ETH
board = esp32_4M
build_flags = ${esp32_IRExt.build_flags}
-DFEATURE_ETHERNET=1
build_flags = ${esp32_common_LittleFS_ETH.build_flags}
-DFEATURE_ARDUINO_OTA=1
-DFEATURE_SD=1
-D PLUGIN_NEOPIXEL_COLLECTION
; [env:collection_A_ESP32_4M316k_ETH]
; extends = env:collection_A_ESP32_4M316k
; build_flags = ${env:collection_A_ESP32_4M316k.build_flags}
; -DFEATURE_ETHERNET=1
; -DCOLLECTION_FEATURE_RTTTL=1
; [env:collection_B_ESP32_4M316k_ETH]
; extends = env:collection_B_ESP32_4M316k
; build_flags = ${env:collection_B_ESP32_4M316k.build_flags}
; -DFEATURE_ETHERNET=1
; -DCOLLECTION_FEATURE_RTTTL=1
; [env:collection_C_ESP32_4M316k_ETH]
; extends = env:collection_C_ESP32_4M316k
; build_flags = ${env:collection_C_ESP32_4M316k.build_flags}
; -DFEATURE_ETHERNET=1
; -DCOLLECTION_FEATURE_RTTTL=1
[env:custom_IR_ESP32_16M8M_LittleFS_ETH]
extends = esp32_common_LittleFS_ETH
board = esp32_16M8M
board_upload.flash_size = 16MB
build_flags = ${esp32_common_LittleFS_ETH.build_flags}
-DPLUGIN_BUILD_CUSTOM
-DPLUGIN_BUILD_IR
lib_ignore = ${esp32_always.lib_ignore}
ESP32_ping
${esp32_common_LittleFS_ETH.lib_ignore}
extra_scripts = ${esp32_common_LittleFS_ETH.extra_scripts}
pre:tools/pio/pre_custom_esp32_IR.py
pre:tools/pio/ir_build_check.py
; [env:collection_D_ESP32_4M316k_ETH]
; extends = env:collection_D_ESP32_4M316k
; build_flags = ${env:collection_D_ESP32_4M316k.build_flags}
; -DFEATURE_ETHERNET=1
; -DCOLLECTION_FEATURE_RTTTL=1
; [env:collection_E_ESP32_4M316k_ETH]
; extends = env:collection_E_ESP32_4M316k
; build_flags = ${env:collection_E_ESP32_4M316k.build_flags}
; -DFEATURE_ETHERNET=1
; -DCOLLECTION_FEATURE_RTTTL=1
; [env:collection_F_ESP32_4M316k_ETH]
; extends = env:collection_F_ESP32_4M316k
; build_flags = ${env:collection_F_ESP32_4M316k.build_flags}
; -DFEATURE_ETHERNET=1
; -DCOLLECTION_FEATURE_RTTTL=1
[env:normal_ESP32_4M316k_LittleFS_ETH]
extends = esp32_common_LittleFS_ETH
board = esp32_4M
lib_ignore = ${esp32_always.lib_ignore}
ESP32_ping
${esp32_common_LittleFS_ETH.lib_ignore}
${no_ir.lib_ignore}
build_flags = ${esp32_common_LittleFS_ETH.build_flags}
; [env:collection_G_ESP32_4M316k_ETH]
; extends = env:collection_G_ESP32_4M316k
; build_flags = ${env:collection_G_ESP32_4M316k.build_flags}
; -DFEATURE_ETHERNET=1
; -DCOLLECTION_FEATURE_RTTTL=1
; [env:energy_ESP32_4M316k_ETH]
; extends = env:energy_ESP32_4M316k
; build_flags = ${env:energy_ESP32_4M316k.build_flags}
; -DFEATURE_ETHERNET=1
[env:normal_ESP32_IRExt_4M316k_LittleFS_ETH]
extends = esp32_IRExt_LittleFS_ETH
board = esp32_4M
build_flags = ${esp32_IRExt_LittleFS_ETH.build_flags}
; [env:display_ESP32_4M316k_ETH]
; extends = env:display_ESP32_4M316k
; build_flags = ${env:display_ESP32_4M316k.build_flags}
; -DFEATURE_ETHERNET=1
; [env:climate_ESP32_4M316k_ETH]
; extends = env:climate_ESP32_4M316k
; build_flags = ${env:climate_ESP32_4M316k.build_flags}
; -DFEATURE_ETHERNET=1
; [env:neopixel_ESP32_4M316k_ETH]
; extends = env:neopixel_ESP32_4M316k
; build_flags = ${env:neopixel_ESP32_4M316k.build_flags}
; -DFEATURE_ETHERNET=1
; [env:collection_A_ESP32_IRExt_4M316k_ETH]
; extends = esp32_IRExt
; board = esp32_4M
; build_flags = ${esp32_IRExt.build_flags}
; -DPLUGIN_SET_COLLECTION_ESP32
; -DFEATURE_ETHERNET=1
; [env:collection_B_ESP32_IRExt_4M316k_ETH]
; extends = esp32_IRExt
; board = esp32_4M
; build_flags = ${esp32_IRExt.build_flags}
; -DPLUGIN_SET_COLLECTION_B_ESP32
; -DFEATURE_ETHERNET=1
; [env:collection_C_ESP32_IRExt_4M316k_ETH]
; extends = esp32_IRExt
; board = esp32_4M
; build_flags = ${esp32_IRExt.build_flags}
; -DPLUGIN_SET_COLLECTION_C_ESP32
; -DFEATURE_ETHERNET=1
; [env:collection_D_ESP32_IRExt_4M316k_ETH]
; extends = esp32_IRExt
; board = esp32_4M
; build_flags = ${esp32_IRExt.build_flags}
; -DPLUGIN_SET_COLLECTION_D_ESP32
; -DFEATURE_ETHERNET=1
; [env:collection_E_ESP32_IRExt_4M316k_ETH]
; extends = esp32_IRExt
; board = esp32_4M
; build_flags = ${esp32_IRExt.build_flags}
; -DPLUGIN_SET_COLLECTION_E_ESP32
; -DFEATURE_ETHERNET=1
; [env:collection_F_ESP32_IRExt_4M316k_ETH]
; extends = esp32_IRExt
; board = esp32_4M
; build_flags = ${esp32_IRExt.build_flags}
; -DPLUGIN_SET_COLLECTION_F_ESP32
; -DFEATURE_ETHERNET=1
; [env:collection_G_ESP32_IRExt_4M316k_ETH]
; extends = esp32_IRExt
; board = esp32_4M
; build_flags = ${esp32_IRExt.build_flags}
; -DPLUGIN_SET_COLLECTION_G_ESP32
; -DFEATURE_ETHERNET=1
; [env:energy_ESP32_IRExt_4M316k_ETH]
; extends = esp32_IRExt
; board = esp32_4M
; build_flags = ${esp32_IRExt.build_flags}
; -DPLUGIN_ENERGY_COLLECTION
; -DFEATURE_ETHERNET=1
; [env:display_ESP32_IRExt_4M316k_ETH]
; extends = esp32_IRExt
; board = esp32_4M
; build_flags = ${esp32_IRExt.build_flags}
; -DPLUGIN_DISPLAY_COLLECTION
; -DFEATURE_ETHERNET=1
; [env:climate_ESP32_IRExt_4M316k_ETH]
; extends = esp32_IRExt
; board = esp32_4M
; build_flags = ${esp32_IRExt.build_flags}
; -DPLUGIN_CLIMATE_COLLECTION
; -DFEATURE_ETHERNET=1
; [env:neopixel_ESP32_IRExt_4M316k_ETH]
; extends = esp32_IRExt
; board = esp32_4M
; build_flags = ${esp32_IRExt.build_flags}
; -D PLUGIN_NEOPIXEL_COLLECTION
; -DFEATURE_ETHERNET=1
; ESP32 MAX builds 16M flash ------------------------------
; A Lolin D32 PRO with 16MB Flash, allowing 4MB sketch size, and file storage using the default (SPIFFS) filesystem
[env:max_ESP32_16M1M_ETH]
extends = esp32_common
board = esp32_16M1M
board_upload.flash_size = 16MB
lib_ignore = ${esp32_always.lib_ignore}
ESP32_ping
build_flags = ${esp32_common.build_flags}
-DFEATURE_ARDUINO_OTA=1
-DPLUGIN_BUILD_MAX_ESP32
-DPLUGIN_BUILD_IR_EXTENDED
-D ST7789_EXTRA_INIT=1
-D P116_EXTRA_ST7789=1
-DFEATURE_ETHERNET=1
; [env:max_ESP32_16M1M_ETH]
; extends = env:max_ESP32_16M1M
; build_flags = ${env:max_ESP32_16M1M.build_flags}
; -DFEATURE_ETHERNET=1
; A Lolin D32 PRO with 16MB Flash, allowing 4MB sketch size, and file storage using LittleFS filesystem
[env:max_ESP32_16M8M_LittleFS_ETH]
extends = esp32_common_LittleFS
extends = esp32_common_LittleFS_ETH
board = esp32_16M8M
board_upload.flash_size = 16MB
lib_ignore = ${esp32_always.lib_ignore}
ESP32_ping
${esp32_common_LittleFS.lib_ignore}
build_flags = ${esp32_common_LittleFS.build_flags}
${esp32_common_LittleFS_ETH.lib_ignore}
build_flags = ${esp32_common_LittleFS_ETH.build_flags}
-DFEATURE_ARDUINO_OTA=1
-DPLUGIN_BUILD_MAX_ESP32
-DPLUGIN_BUILD_IR_EXTENDED
-DFEATURE_ETHERNET=1
-D ST7789_EXTRA_INIT=1
-D P116_EXTRA_ST7789=1
extra_scripts = ${esp32_common.extra_scripts}
extra_scripts = ${esp32_common_LittleFS_ETH.extra_scripts}
board_build.filesystem = littlefs
; If you have a board with Ethernet integrated and 16MB Flash, then this configuration could be enabled, it's based on the max_ESP32_16M8M_LittleFS definition
@@ -597,7 +329,6 @@ board_build.filesystem = littlefs
; extends = env:max_ESP32_16M8M_LittleFS
; board = ${env:max_ESP32_16M8M_LittleFS.board}
; build_flags = ${env:max_ESP32_16M8M_LittleFS.build_flags}
; -DFEATURE_ETHERNET=1
+2 -2
View File
@@ -3,8 +3,8 @@
[esp32_solo1_common_LittleFS]
extends = esp32_base_idf5
board = esp32_solo1_4M
platform = https://github.com/Jason2866/platform-espressif32.git#Arduino/IDF53
platform_packages = framework-arduino-solo1 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/3507/framework-arduinoespressif32-solo1-release_v5.3-2952ac93.zip
;platform = https://github.com/Jason2866/platform-espressif32.git#Arduino/IDF53
;platform_packages = framework-arduino-solo1 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/3507/framework-arduinoespressif32-solo1-release_v5.3-2952ac93.zip
build_flags = ${esp32_base_idf5.build_flags}
-DFEATURE_ARDUINO_OTA=1
-DUSE_LITTLEFS
+1 -3
View File
@@ -14,11 +14,11 @@ lib_ignore = ${esp32_base_idf5.lib_ignore}
NeoPixelBus
NeoPixelBus_wrapper
Adafruit NeoMatrix via NeoPixelBus
board = esp32c2
[env:safeboot_ESP32c2_4M_LittleFS]
extends = esp32c2_common_LittleFS
board = esp32c2
build_flags = ${esp32c2_common_LittleFS.build_flags}
-DPLUGIN_BUILD_CUSTOM
-DPLUGIN_BUILD_SAFEBOOT
@@ -37,7 +37,6 @@ extra_scripts = ${esp32c2_common_LittleFS.extra_scripts}
[env:custom_ESP32c2_4M316k_LittleFS]
extends = esp32c2_common_LittleFS
board = esp32c2
build_flags = ${esp32c2_common_LittleFS.build_flags}
-DPLUGIN_BUILD_CUSTOM
extra_scripts = ${esp32c2_common_LittleFS.extra_scripts}
@@ -45,7 +44,6 @@ extra_scripts = ${esp32c2_common_LittleFS.extra_scripts}
[env:normal_ESP32c2_4M316k_LittleFS]
extends = esp32c2_common_LittleFS
board = esp32c2
build_flags = ${esp32c2_common_LittleFS.build_flags}
lib_ignore = ${esp32c2_common_LittleFS.lib_ignore}
${no_ir.lib_ignore}
+29 -110
View File
@@ -1,23 +1,8 @@
[esp32c3_common]
extends = esp32_base
lib_ignore = ${esp32_always.lib_ignore}
ESP32_ping
${no_ir.lib_ignore}
ESP32 BLE Arduino
build_flags = ${esp32_base.build_flags}
-DFEATURE_ARDUINO_OTA=1
-DESP32C3
extra_scripts = ${esp32_base.extra_scripts}
build_unflags = ${esp32_base.build_unflags}
-fexceptions
[esp32c3_common_LittleFS]
extends = esp32_base_idf5
build_flags = ${esp32_base_idf5.build_flags}
-DFEATURE_ARDUINO_OTA=1
-DFEATURE_ETHERNET=1
-DUSE_LITTLEFS
-DESP32C3
extra_scripts = ${esp32_base_idf5.extra_scripts}
@@ -25,155 +10,90 @@ build_unflags = ${esp32_base_idf5.build_unflags}
-fexceptions
board_build.filesystem = littlefs
lib_ignore = ${esp32_base_idf5.lib_ignore}
[env:custom_ESP32c3_4M316k_CDC]
extends = esp32c3_common
board = esp32c3cdc
build_flags = ${esp32c3_common.build_flags}
-DPLUGIN_BUILD_CUSTOM
extra_scripts = ${esp32c3_common.extra_scripts}
pre:tools/pio/pre_custom_esp32.py
[env:custom_IR_ESP32c3_4M316k_CDC]
extends = esp32c3_common
board = esp32c3cdc
build_flags = ${esp32c3_common.build_flags}
-DPLUGIN_BUILD_CUSTOM
-DPLUGIN_BUILD_IR
lib_ignore = ${esp32_always.lib_ignore}
ESP32_ping
extra_scripts = ${esp32c3_common.extra_scripts}
pre:tools/pio/pre_custom_esp32_IR.py
pre:tools/pio/ir_build_check.py
; [env:custom_ESP32c3_4M316k_LittleFS_CDC]
; extends = esp32c3_common_LittleFS
; board = esp32c3cdc
; build_flags = ${esp32c3_common_LittleFS.build_flags}
; -DPLUGIN_BUILD_CUSTOM
; extra_scripts = ${esp32c3_common_LittleFS.extra_scripts}
; pre:tools/pio/pre_custom_esp32.py
[env:custom_ESP32c3_4M316k_LittleFS_CDC_ETH]
extends = esp32c3_common_LittleFS
board = esp32c3cdc
build_flags = ${esp32c3_common_LittleFS.build_flags}
-DPLUGIN_BUILD_CUSTOM
-DFEATURE_ETHERNET=1
extra_scripts = ${esp32c3_common_LittleFS.extra_scripts}
pre:tools/pio/pre_custom_esp32.py
[env:normal_ESP32c3_4M316k_CDC]
extends = esp32c3_common
board = esp32c3cdc
lib_ignore = ${esp32_common.lib_ignore}
${no_ir.lib_ignore}
[env:normal_ESP32c3_4M316k_LittleFS_CDC_ETH]
extends = esp32c3_common_LittleFS
board = esp32c3cdc
build_flags = ${esp32c3_common_LittleFS.build_flags}
-DFEATURE_ETHERNET=1
lib_ignore = ${esp32c3_common_LittleFS.lib_ignore}
${no_ir.lib_ignore}
[env:collection_A_ESP32c3_4M316k_CDC]
extends = esp32c3_common
board = esp32c3cdc
build_flags = ${esp32c3_common.build_flags}
[env:collection_A_ESP32c3_4M316k_LittleFS_CDC_ETH]
extends = esp32c3_common_LittleFS
build_flags = ${esp32c3_common_LittleFS.build_flags}
-DPLUGIN_SET_COLLECTION_ESP32
-DCOLLECTION_FEATURE_RTTTL=1
[env:collection_B_ESP32c3_4M316k_CDC]
extends = esp32c3_common
board = esp32c3cdc
build_flags = ${esp32c3_common.build_flags}
[env:collection_B_ESP32c3_4M316k_LittleFS_CDC_ETH]
extends = esp32c3_common_LittleFS
build_flags = ${esp32c3_common_LittleFS.build_flags}
-DPLUGIN_SET_COLLECTION_B_ESP32
-DCOLLECTION_FEATURE_RTTTL=1
[env:collection_C_ESP32c3_4M316k_CDC]
extends = esp32c3_common
board = esp32c3cdc
build_flags = ${esp32c3_common.build_flags}
[env:collection_C_ESP32c3_4M316k_LittleFS_CDC_ETH]
extends = esp32c3_common_LittleFS
build_flags = ${esp32c3_common_LittleFS.build_flags}
-DPLUGIN_SET_COLLECTION_C_ESP32
-DCOLLECTION_FEATURE_RTTTL=1
[env:collection_D_ESP32c3_4M316k_CDC]
extends = esp32c3_common
board = esp32c3cdc
build_flags = ${esp32c3_common.build_flags}
[env:collection_D_ESP32c3_4M316k_LittleFS_CDC_ETH]
extends = esp32c3_common_LittleFS
build_flags = ${esp32c3_common_LittleFS.build_flags}
-DPLUGIN_SET_COLLECTION_D_ESP32
-DCOLLECTION_FEATURE_RTTTL=1
[env:collection_E_ESP32c3_4M316k_CDC]
extends = esp32c3_common
board = esp32c3cdc
build_flags = ${esp32c3_common.build_flags}
[env:collection_E_ESP32c3_4M316k_LittleFS_CDC_ETH]
extends = esp32c3_common_LittleFS
build_flags = ${esp32c3_common_LittleFS.build_flags}
-DPLUGIN_SET_COLLECTION_E_ESP32
-DCOLLECTION_FEATURE_RTTTL=1
[env:collection_F_ESP32c3_4M316k_CDC]
extends = esp32c3_common
board = esp32c3cdc
build_flags = ${esp32c3_common.build_flags}
[env:collection_F_ESP32c3_4M316k_LittleFS_CDC_ETH]
extends = esp32c3_common_LittleFS
build_flags = ${esp32c3_common_LittleFS.build_flags}
-DPLUGIN_SET_COLLECTION_F_ESP32
-DCOLLECTION_FEATURE_RTTTL=1
[env:collection_G_ESP32c3_4M316k_CDC]
extends = esp32c3_common
board = esp32c3cdc
build_flags = ${esp32c3_common.build_flags}
[env:collection_G_ESP32c3_4M316k_LittleFS_CDC_ETH]
extends = esp32c3_common_LittleFS
build_flags = ${esp32c3_common_LittleFS.build_flags}
-DPLUGIN_SET_COLLECTION_G_ESP32
-DCOLLECTION_FEATURE_RTTTL=1
[env:energy_ESP32c3_4M316k_CDC]
extends = esp32c3_common
board = esp32c3cdc
build_flags = ${esp32c3_common.build_flags}
-D PLUGIN_ENERGY_COLLECTION
[env:energy_ESP32c3_4M316k_LittleFS_CDC_ETH]
extends = esp32c3_common_LittleFS
board = esp32c3cdc
build_flags = ${esp32c3_common_LittleFS.build_flags}
-D PLUGIN_ENERGY_COLLECTION
-DFEATURE_ETHERNET=1
[env:display_ESP32c3_4M316k_CDC]
extends = esp32c3_common
board = esp32c3cdc
build_flags = ${esp32c3_common.build_flags}
[env:display_ESP32c3_4M316k_LittleFS_CDC_ETH]
extends = esp32c3_common_LittleFS
build_flags = ${esp32c3_common_LittleFS.build_flags}
-D PLUGIN_DISPLAY_COLLECTION
-D ST7789_EXTRA_INIT=1
-D P116_EXTRA_ST7789=1
[env:climate_ESP32c3_4M316k_CDC]
extends = esp32c3_common
board = esp32c3cdc
build_flags = ${esp32c3_common.build_flags}
[env:climate_ESP32c3_4M316k_LittleFS_CDC_ETH]
extends = esp32c3_common_LittleFS
build_flags = ${esp32c3_common_LittleFS.build_flags}
-D PLUGIN_CLIMATE_COLLECTION
[env:neopixel_ESP32c3_4M316k_CDC]
extends = esp32c3_common
board = esp32c3cdc
build_flags = ${esp32c3_common.build_flags}
-DFEATURE_ARDUINO_OTA=1
-DFEATURE_SD=1
-DPLUGIN_NEOPIXEL_COLLECTION
[env:neopixel_ESP32c3_4M316k_LittleFS_CDC_ETH]
extends = esp32c3_common_LittleFS
board = esp32c3cdc
build_flags = ${esp32c3_common_LittleFS.build_flags}
-DFEATURE_ARDUINO_OTA=1
-DFEATURE_SD=1
-DFEATURE_ETHERNET=1
-DPLUGIN_NEOPIXEL_COLLECTION
[env:max_ESP32c3_16M8M_LittleFS_CDC_ETH]
@@ -182,7 +102,6 @@ board = esp32c3cdc-16M
build_flags = ${esp32c3_common_LittleFS.build_flags}
-DFEATURE_ARDUINO_OTA=1
-DFEATURE_SD=1
-DFEATURE_ETHERNET=1
-DPLUGIN_BUILD_MAX_ESP32
-DPLUGIN_BUILD_IR_EXTENDED
extra_scripts = ${esp32c3_common_LittleFS.extra_scripts}
+25 -2
View File
@@ -1,5 +1,3 @@
[esp32c6_common_LittleFS]
extends = esp32_base_idf5
build_flags = ${esp32_base_idf5.build_flags}
@@ -30,6 +28,31 @@ build_flags = ${esp32c6_common_LittleFS.build_flags}
lib_ignore = ${esp32c6_common_LittleFS.lib_ignore}
${no_ir.lib_ignore}
[env:energy_ESP32c6_4M316k_LittleFS_CDC_ETH]
extends = esp32c6_common_LittleFS
build_flags = ${esp32c6_common_LittleFS.build_flags}
-D PLUGIN_ENERGY_COLLECTION
[env:display_ESP32c6_4M316k_LittleFS_CDC_ETH]
extends = esp32c6_common_LittleFS
build_flags = ${esp32c6_common_LittleFS.build_flags}
-D PLUGIN_DISPLAY_COLLECTION
-D ST7789_EXTRA_INIT=1
-D P116_EXTRA_ST7789=1
[env:climate_ESP32c6_4M316k_LittleFS_CDC_ETH]
extends = esp32c6_common_LittleFS
build_flags = ${esp32c6_common_LittleFS.build_flags}
-D PLUGIN_CLIMATE_COLLECTION
[env:neopixel_ESP32c6_4M316k_LittleFS_CDC_ETH]
extends = esp32c6_common_LittleFS
build_flags = ${esp32c6_common_LittleFS.build_flags}
-DFEATURE_ARDUINO_OTA=1
-DFEATURE_SD=1
-DPLUGIN_NEOPIXEL_COLLECTION
[env:max_ESP32c6_8M1M_LittleFS_CDC_ETH]
extends = esp32c6_common_LittleFS
+36 -78
View File
@@ -1,24 +1,8 @@
[esp32s2_common]
extends = esp32_base
lib_ignore = ${esp32_always.lib_ignore}
ESP32_ping
${no_ir.lib_ignore}
ESP32 BLE Arduino
build_flags = ${esp32_base.build_flags}
-DFEATURE_ARDUINO_OTA=1
-DESP32S2
extra_scripts = ${esp32_base.extra_scripts}
build_unflags = ${esp32_base.build_unflags}
-fexceptions
[esp32s2_common_LittleFS]
extends = esp32_base_idf5
build_flags = ${esp32_base_idf5.build_flags}
-DFEATURE_ARDUINO_OTA=1
-DFEATURE_ETHERNET=1
-DUSE_LITTLEFS
-DESP32S2
extra_scripts = ${esp32_base_idf5.extra_scripts}
@@ -28,23 +12,6 @@ board_build.filesystem = littlefs
lib_ignore = ${esp32_base_idf5.lib_ignore}
[env:custom_ESP32s2_4M316k_CDC]
extends = esp32s2_common
board = esp32s2cdc
build_flags = ${esp32s2_common.build_flags}
-DPLUGIN_BUILD_CUSTOM
-DESP_CONSOLE_USB_CDC=y
extra_scripts = ${esp32s2_common.extra_scripts}
pre:tools/pio/pre_custom_esp32.py
[env:neopixel_ESP32s2_4M316k_CDC]
extends = esp32s2_common
board = esp32s2cdc
build_flags = ${esp32s2_common.build_flags}
-DFEATURE_ARDUINO_OTA=1
-DFEATURE_SD=1
-DPLUGIN_NEOPIXEL_COLLECTION
[env:neopixel_ESP32s2_4M316k_LittleFS_CDC_ETH]
extends = esp32s2_common_LittleFS
board = esp32s2cdc
@@ -52,29 +19,22 @@ build_flags = ${esp32s2_common_LittleFS.build_flags}
-DFEATURE_ARDUINO_OTA=1
-DFEATURE_SD=1
-DPLUGIN_NEOPIXEL_COLLECTION
-DFEATURE_ETHERNET=1
[env:custom_IR_ESP32s2_4M316k_CDC]
extends = esp32s2_common
[env:custom_IR_ESP32s2_4M316k_LittleFS_CDC_ETH]
extends = esp32s2_common_LittleFS
board = esp32s2cdc
build_flags = ${esp32s2_common.build_flags}
build_flags = ${esp32s2_common_LittleFS.build_flags}
-DPLUGIN_BUILD_CUSTOM
-DPLUGIN_BUILD_IR
lib_ignore = ${esp32_always.lib_ignore}
ESP32_ping
extra_scripts = ${esp32s2_common.extra_scripts}
extra_scripts = ${esp32s2_common_LittleFS.extra_scripts}
pre:tools/pio/pre_custom_esp32_IR.py
pre:tools/pio/ir_build_check.py
[env:normal_ESP32s2_4M316k_CDC]
extends = esp32s2_common
board = esp32s2cdc
lib_ignore = ${esp32s2_common.lib_ignore}
${no_ir.lib_ignore}
[env:custom_ESP32s2_4M316k_LittleFS_CDC_ETH]
extends = esp32s2_common_LittleFS
board = esp32s2cdc
@@ -83,7 +43,6 @@ lib_ignore = ${esp32s2_common_LittleFS.lib_ignore}
build_flags = ${esp32s2_common_LittleFS.build_flags}
-DPLUGIN_BUILD_CUSTOM
-DESP_CONSOLE_USB_CDC=y
-DFEATURE_ETHERNET=1
extra_scripts = ${esp32s2_common_LittleFS.extra_scripts}
pre:tools/pio/pre_custom_esp32.py
@@ -94,77 +53,76 @@ extends = esp32s2_common_LittleFS
board = esp32s2cdc
build_flags = ${esp32s2_common_LittleFS.build_flags}
-DESP_CONSOLE_USB_CDC=y
-DFEATURE_ETHERNET=1
lib_ignore = ${esp32s2_common_LittleFS.lib_ignore}
${no_ir.lib_ignore}
[env:collection_A_ESP32s2_4M316k_CDC]
extends = esp32s2_common
[env:collection_A_ESP32s2_4M316k_LittleFS_CDC_ETH]
extends = esp32s2_common_LittleFS
board = esp32s2cdc
build_flags = ${esp32s2_common.build_flags}
build_flags = ${esp32s2_common_LittleFS.build_flags}
-DPLUGIN_SET_COLLECTION_ESP32
-DCOLLECTION_FEATURE_RTTTL=1
[env:collection_B_ESP32s2_4M316k_CDC]
extends = esp32s2_common
[env:collection_B_ESP32s2_4M316k_LittleFS_CDC_ETH]
extends = esp32s2_common_LittleFS
board = esp32s2cdc
build_flags = ${esp32s2_common.build_flags}
build_flags = ${esp32s2_common_LittleFS.build_flags}
-DPLUGIN_SET_COLLECTION_B_ESP32
-DCOLLECTION_FEATURE_RTTTL=1
[env:collection_C_ESP32s2_4M316k_CDC]
extends = esp32s2_common
[env:collection_C_ESP32s2_4M316k_LittleFS_CDC_ETH]
extends = esp32s2_common_LittleFS
board = esp32s2cdc
build_flags = ${esp32s2_common.build_flags}
build_flags = ${esp32s2_common_LittleFS.build_flags}
-DPLUGIN_SET_COLLECTION_C_ESP32
-DCOLLECTION_FEATURE_RTTTL=1
[env:collection_D_ESP32s2_4M316k_CDC]
extends = esp32s2_common
[env:collection_D_ESP32s2_4M316k_LittleFS_CDC_ETH]
extends = esp32s2_common_LittleFS
board = esp32s2cdc
build_flags = ${esp32s2_common.build_flags}
build_flags = ${esp32s2_common_LittleFS.build_flags}
-DPLUGIN_SET_COLLECTION_D_ESP32
-DCOLLECTION_FEATURE_RTTTL=1
[env:collection_E_ESP32s2_4M316k_CDC]
extends = esp32s2_common
[env:collection_E_ESP32s2_4M316k_LittleFS_CDC_ETH]
extends = esp32s2_common_LittleFS
board = esp32s2cdc
build_flags = ${esp32s2_common.build_flags}
build_flags = ${esp32s2_common_LittleFS.build_flags}
-DPLUGIN_SET_COLLECTION_E_ESP32
-DCOLLECTION_FEATURE_RTTTL=1
[env:collection_F_ESP32s2_4M316k_CDC]
extends = esp32s2_common
[env:collection_F_ESP32s2_4M316k_LittleFS_CDC_ETH]
extends = esp32s2_common_LittleFS
board = esp32s2cdc
build_flags = ${esp32s2_common.build_flags}
build_flags = ${esp32s2_common_LittleFS.build_flags}
-DPLUGIN_SET_COLLECTION_F_ESP32
-DCOLLECTION_FEATURE_RTTTL=1
[env:collection_G_ESP32s2_4M316k_CDC]
extends = esp32s2_common
[env:collection_G_ESP32s2_4M316k_LittleFS_CDC_ETH]
extends = esp32s2_common_LittleFS
board = esp32s2cdc
build_flags = ${esp32s2_common.build_flags}
build_flags = ${esp32s2_common_LittleFS.build_flags}
-DPLUGIN_SET_COLLECTION_G_ESP32
-DCOLLECTION_FEATURE_RTTTL=1
[env:energy_ESP32s2_4M316k_CDC]
extends = esp32s2_common
[env:energy_ESP32s2_4M316k_LittleFS_CDC_ETH]
extends = esp32s2_common_LittleFS
board = esp32s2cdc
build_flags = ${esp32s2_common.build_flags}
build_flags = ${esp32s2_common_LittleFS.build_flags}
-D PLUGIN_ENERGY_COLLECTION
[env:display_ESP32s2_4M316k_CDC]
extends = esp32s2_common
[env:display_ESP32s2_4M316k_LittleFS_CDC_ETH]
extends = esp32s2_common_LittleFS
board = esp32s2cdc
build_flags = ${esp32s2_common.build_flags}
build_flags = ${esp32s2_common_LittleFS.build_flags}
-D PLUGIN_DISPLAY_COLLECTION
-D ST7789_EXTRA_INIT=1
-D P116_EXTRA_ST7789=1
[env:climate_ESP32s2_4M316k_CDC]
extends = esp32s2_common
[env:climate_ESP32s2_4M316k_LittleFS_CDC_ETH]
extends = esp32s2_common_LittleFS
board = esp32s2cdc
build_flags = ${esp32s2_common.build_flags}
build_flags = ${esp32s2_common_LittleFS.build_flags}
-D PLUGIN_CLIMATE_COLLECTION
+42 -77
View File
@@ -1,28 +1,12 @@
[esp32s3_common]
extends = esp32_base
lib_ignore = ${esp32_always.lib_ignore}
ESP32_ping
${no_ir.lib_ignore}
ESP32 BLE Arduino
build_flags = ${esp32_base.build_flags}
-DFEATURE_ARDUINO_OTA=1
-DESP32S3
extra_scripts = ${esp32_base.extra_scripts}
build_unflags = ${esp32_base.build_unflags}
-fexceptions
[esp32s3_common_LittleFS]
extends = esp32_base_idf5
lib_ignore = ${esp32_common_LittleFS.lib_ignore}
lib_ignore = ${esp32_common_LittleFS_ETH.lib_ignore}
ESP32_ping
${esp32_base_idf5.lib_ignore}
build_flags = ${esp32_base_idf5.build_flags}
; -mtext-section-literals
-DFEATURE_ARDUINO_OTA=1
-DFEATURE_ETHERNET=1
-DUSE_LITTLEFS
-DESP32S3
extra_scripts = ${esp32_base_idf5.extra_scripts}
@@ -31,35 +15,28 @@ build_unflags = ${esp32_base_idf5.build_unflags}
board_build.filesystem = littlefs
[env:custom_ESP32s3_4M316k_CDC]
extends = esp32s3_common
[env:custom_ESP32s3_4M316k_LittleFS_CDC_ETH]
extends = esp32s3_common_LittleFS
board = esp32s3cdc-qio_qspi
build_flags = ${esp32s3_common.build_flags}
build_flags = ${esp32s3_common_LittleFS.build_flags}
-DPLUGIN_BUILD_CUSTOM
extra_scripts = ${esp32s3_common.extra_scripts}
extra_scripts = ${esp32s3_common_LittleFS.extra_scripts}
pre:tools/pio/pre_custom_esp32.py
[env:custom_IR_ESP32s3_4M316k_CDC]
extends = esp32s3_common
[env:custom_IR_ESP32s3_4M316k_LittleFS_CDC_ETH]
extends = esp32s3_common_LittleFS
board = esp32s3cdc-qio_qspi
build_flags = ${esp32s3_common.build_flags}
build_flags = ${esp32s3_common_LittleFS.build_flags}
-DPLUGIN_BUILD_CUSTOM
-DPLUGIN_BUILD_IR
lib_ignore = ${esp32_always.lib_ignore}
ESP32_ping
extra_scripts = ${esp32s3_common.extra_scripts}
extra_scripts = ${esp32s3_common_LittleFS.extra_scripts}
pre:tools/pio/pre_custom_esp32_IR.py
pre:tools/pio/ir_build_check.py
[env:normal_ESP32s3_4M316k_CDC]
extends = esp32s3_common
board = esp32s3cdc-qio_qspi
lib_ignore = ${esp32s3_common.lib_ignore}
${no_ir.lib_ignore}
[env:normal_ESP32s3_4M316k_LittleFS_CDC_ETH]
extends = esp32s3_common_LittleFS
board = esp32s3cdc-qio_qspi
@@ -68,85 +45,78 @@ lib_ignore = ${esp32s3_common_LittleFS.lib_ignore}
build_flags = ${esp32s3_common_LittleFS.build_flags}
-DFEATURE_ARDUINO_OTA=1
-DFEATURE_SD=1
-DFEATURE_ETHERNET=1
[env:collection_A_ESP32s3_4M316k_CDC]
extends = esp32s3_common
[env:collection_A_ESP32s3_4M316k_LittleFS_CDC_ETH]
extends = esp32s3_common_LittleFS
board = esp32s3cdc-qio_qspi
build_flags = ${esp32s3_common.build_flags}
build_flags = ${esp32s3_common_LittleFS.build_flags}
-DPLUGIN_SET_COLLECTION_ESP32
-DCOLLECTION_FEATURE_RTTTL=1
[env:collection_B_ESP32s3_4M316k_CDC]
extends = esp32s3_common
[env:collection_B_ESP32s3_4M316k_LittleFS_CDC_ETH]
extends = esp32s3_common_LittleFS
board = esp32s3cdc-qio_qspi
build_flags = ${esp32s3_common.build_flags}
build_flags = ${esp32s3_common_LittleFS.build_flags}
-DPLUGIN_SET_COLLECTION_B_ESP32
-DCOLLECTION_FEATURE_RTTTL=1
[env:collection_C_ESP32s3_4M316k_CDC]
extends = esp32s3_common
[env:collection_C_ESP32s3_4M316k_LittleFS_CDC_ETH]
extends = esp32s3_common_LittleFS
board = esp32s3cdc-qio_qspi
build_flags = ${esp32s3_common.build_flags}
build_flags = ${esp32s3_common_LittleFS.build_flags}
-DPLUGIN_SET_COLLECTION_C_ESP32
-DCOLLECTION_FEATURE_RTTTL=1
[env:collection_D_ESP32s3_4M316k_CDC]
extends = esp32s3_common
[env:collection_D_ESP32s3_4M316k_LittleFS_CDC_ETH]
extends = esp32s3_common_LittleFS
board = esp32s3cdc-qio_qspi
build_flags = ${esp32s3_common.build_flags}
build_flags = ${esp32s3_common_LittleFS.build_flags}
-DPLUGIN_SET_COLLECTION_D_ESP32
-DCOLLECTION_FEATURE_RTTTL=1
[env:collection_E_ESP32s3_4M316k_CDC]
extends = esp32s3_common
[env:collection_E_ESP32s3_4M316k_LittleFS_CDC_ETH]
extends = esp32s3_common_LittleFS
board = esp32s3cdc-qio_qspi
build_flags = ${esp32s3_common.build_flags}
build_flags = ${esp32s3_common_LittleFS.build_flags}
-DPLUGIN_SET_COLLECTION_E_ESP32
-DCOLLECTION_FEATURE_RTTTL=1
[env:collection_F_ESP32s3_4M316k_CDC]
extends = esp32s3_common
[env:collection_F_ESP32s3_4M316k_LittleFS_CDC_ETH]
extends = esp32s3_common_LittleFS
board = esp32s3cdc-qio_qspi
build_flags = ${esp32s3_common.build_flags}
build_flags = ${esp32s3_common_LittleFS.build_flags}
-DPLUGIN_SET_COLLECTION_F_ESP32
-DCOLLECTION_FEATURE_RTTTL=1
[env:collection_G_ESP32s3_4M316k_CDC]
extends = esp32s3_common
[env:collection_G_ESP32s3_4M316k_LittleFS_CDC_ETH]
extends = esp32s3_common_LittleFS
board = esp32s3cdc-qio_qspi
build_flags = ${esp32s3_common.build_flags}
build_flags = ${esp32s3_common_LittleFS.build_flags}
-DPLUGIN_SET_COLLECTION_G_ESP32
-DCOLLECTION_FEATURE_RTTTL=1
[env:energy_ESP32s3_4M316k_CDC]
extends = esp32s3_common
[env:energy_ESP32s3_4M316k_LittleFS_CDC_ETH]
extends = esp32s3_common_LittleFS
board = esp32s3cdc-qio_qspi
build_flags = ${esp32s3_common.build_flags}
build_flags = ${esp32s3_common_LittleFS.build_flags}
-D PLUGIN_ENERGY_COLLECTION
[env:display_ESP32s3_4M316k_CDC]
extends = esp32s3_common
[env:display_ESP32s3_4M316k_LittleFS_CDC_ETH]
extends = esp32s3_common_LittleFS
board = esp32s3cdc-qio_qspi
build_flags = ${esp32s3_common.build_flags}
build_flags = ${esp32s3_common_LittleFS.build_flags}
-D PLUGIN_DISPLAY_COLLECTION
-D ST7789_EXTRA_INIT=1
-D P116_EXTRA_ST7789=1
[env:climate_ESP32s3_4M316k_CDC]
extends = esp32s3_common
[env:climate_ESP32s3_4M316k_LittleFS_CDC_ETH]
extends = esp32s3_common_LittleFS
board = esp32s3cdc-qio_qspi
build_flags = ${esp32s3_common.build_flags}
build_flags = ${esp32s3_common_LittleFS.build_flags}
-D PLUGIN_CLIMATE_COLLECTION
[env:neopixel_ESP32s3_4M316k_CDC]
extends = esp32s3_common
board = esp32s3cdc-qio_qspi
build_flags = ${esp32s3_common.build_flags}
-DFEATURE_ARDUINO_OTA=1
-DFEATURE_SD=1
-DPLUGIN_NEOPIXEL_COLLECTION
[env:neopixel_ESP32s3_4M316k_LittleFS_CDC_ETH]
extends = esp32s3_common_LittleFS
@@ -155,14 +125,13 @@ build_flags = ${esp32s3_common_LittleFS.build_flags}
-DFEATURE_ARDUINO_OTA=1
-DFEATURE_SD=1
-DPLUGIN_NEOPIXEL_COLLECTION
-DFEATURE_ETHERNET=1
[env:custom_ESP32s3_8M1M_LittleFS_CDC_ETH]
extends = esp32s3_common_LittleFS
board = esp32s3cdc-qio_qspi-8M
build_flags = ${esp32s3_common_LittleFS.build_flags}
-DFEATURE_ETHERNET=1
-DFEATURE_ARDUINO_OTA=1
-DPLUGIN_BUILD_CUSTOM
-DFEATURE_SD=1
@@ -178,7 +147,6 @@ board = esp32s3cdc-qio_opi-8M
extends = esp32s3_common_LittleFS
board = esp32s3cdc-qio_qspi-8M
build_flags = ${esp32s3_common_LittleFS.build_flags}
-DFEATURE_ETHERNET=1
-DFEATURE_ARDUINO_OTA=1
-DPLUGIN_BUILD_MAX_ESP32
-DPLUGIN_BUILD_IR_EXTENDED
@@ -196,7 +164,6 @@ board = esp32s3cdc-qio_opi-8M
extends = esp32s3_common_LittleFS
board = esp32s3cdc-qio_qspi-16M
build_flags = ${esp32s3_common_LittleFS.build_flags}
-DFEATURE_ETHERNET=1
-DFEATURE_ARDUINO_OTA=1
-DPLUGIN_BUILD_CUSTOM
-DPLUGIN_BUILD_IR_EXTENDED
@@ -213,7 +180,6 @@ board = esp32s3cdc-qio_opi-16M
extends = esp32s3_common_LittleFS
board = esp32s3cdc-qio_qspi-16M
build_flags = ${esp32s3_common_LittleFS.build_flags}
-DFEATURE_ETHERNET=1
-DFEATURE_ARDUINO_OTA=1
-DPLUGIN_BUILD_MAX_ESP32
-DPLUGIN_BUILD_IR_EXTENDED
@@ -226,7 +192,6 @@ extra_scripts = ${esp32s3_common_LittleFS.extra_scripts}
extends = esp32s3_common_LittleFS
board = esp32s3cdc-qio_opi-16M
build_flags = ${esp32s3_common_LittleFS.build_flags}
-DFEATURE_ETHERNET=1
-DFEATURE_ARDUINO_OTA=1
-DPLUGIN_BUILD_MAX_ESP32
-DPLUGIN_BUILD_IR_EXTENDED
+8 -8
View File
@@ -50,14 +50,14 @@ extra_scripts = ${extra_scripts_esp8266.extra_scripts}
[env:spec_debug_custom_ESP32_16M8M]
extends = esp32_common_LittleFS
extends = esp32_common_LittleFS_ETH
build_type = ${debug_pio.build_type}
check_tool = ${debug_pio.check_tool}
check_flags = ${debug_pio.check_flags}
platform = ${esp32_common_LittleFS.platform}
build_flags = ${esp32_common_LittleFS.build_flags} ${debug_pio.build_flags} -DPLUGIN_BUILD_CUSTOM
platform = ${esp32_common_LittleFS_ETH.platform}
build_flags = ${esp32_common_LittleFS_ETH.build_flags} ${debug_pio.build_flags} -DPLUGIN_BUILD_CUSTOM
board = esp32_16M8M
extra_scripts = ${esp32_common_LittleFS.extra_scripts}
extra_scripts = ${esp32_common_LittleFS_ETH.extra_scripts}
pre:tools/pio/pre_custom_esp32.py
[env:spec_debug_max_ESP32_16M8M]
@@ -65,7 +65,7 @@ extends = esp32_base_idf5
build_type = ${debug_pio.build_type}
check_tool = ${debug_pio.check_tool}
check_flags = ${debug_pio.check_flags}
lib_ignore = ${esp32_common_LittleFS.lib_ignore}
lib_ignore = ${esp32_common_LittleFS_ETH.lib_ignore}
build_flags = ${esp32_base_idf5.build_flags}
${debug_pio.build_flags}
-DESP32_CLASSIC
@@ -87,7 +87,7 @@ extends = esp32_base_idf5
build_type = ${debug_pio.build_type}
check_tool = ${debug_pio.check_tool}
check_flags = ${debug_pio.check_flags}
lib_ignore = ${esp32_common_LittleFS.lib_ignore}
lib_ignore = ${esp32_common_LittleFS_ETH.lib_ignore}
build_flags = ${esp32_base_idf5.build_flags}
${debug_pio.build_flags}
-DESP32_CLASSIC
@@ -107,7 +107,7 @@ extends = esp32_base_idf5
build_type = ${debug_pio.build_type}
check_tool = ${debug_pio.check_tool}
check_flags = ${debug_pio.check_flags}
lib_ignore = ${esp32_common_LittleFS.lib_ignore}
lib_ignore = ${esp32_common_LittleFS_ETH.lib_ignore}
build_flags = ${esp32_base_idf5.build_flags}
${debug_pio.build_flags}
-DESP32_CLASSIC
@@ -128,7 +128,7 @@ extends = esp32_base_idf5
build_type = ${debug_pio.build_type}
check_tool = ${debug_pio.check_tool}
check_flags = ${debug_pio.check_flags}
lib_ignore = ${esp32_common_LittleFS.lib_ignore}
lib_ignore = ${esp32_common_LittleFS_ETH.lib_ignore}
build_flags = ${esp32_base_idf5.build_flags}
${debug_pio.build_flags}
-DESP32_CLASSIC
+27 -4
View File
@@ -36,7 +36,7 @@ boolean Plugin_111(uint8_t function, struct EventStruct *event, String& string)
{
auto& dev = Device[++deviceCount];
dev.Number = PLUGIN_ID_111;
dev.Type = DEVICE_TYPE_SPI2;
dev.Type = DEVICE_TYPE_SPI3;
dev.VType = Sensor_VType::SENSOR_TYPE_ULONG;
dev.ValueCount = 1;
dev.SendDataOption = true;
@@ -59,9 +59,23 @@ boolean Plugin_111(uint8_t function, struct EventStruct *event, String& string)
{
event->String1 = formatGpioName_output(F("CS PIN")); // P111_CS_PIN
event->String2 = formatGpioName_output_optional(F("RST PIN ")); // P111_RST_PIN
event->String3 = formatGpioName_input_optional(F("IRQ PIN ")); // P111_IRQ_PIN
break;
}
case PLUGIN_WEBFORM_SHOW_GPIO_DESCR:
{
string = event->String1;
string += concat(F("CS: "), formatGpioLabel(CONFIG_PIN1, false));
string += event->String1;
string += concat(F("RST: "), formatGpioLabel(CONFIG_PIN2, false));
string += event->String1;
string += concat(F("IRQ: "), formatGpioLabel(CONFIG_PIN3, false));
success = true;
break;
}
case PLUGIN_SET_DEFAULTS:
{
P111_REMOVALTIMEOUT = 500; // Default 500 msec reset delay
@@ -70,8 +84,17 @@ boolean Plugin_111(uint8_t function, struct EventStruct *event, String& string)
case PLUGIN_WEBFORM_LOAD:
{
addFormSubHeader(F("Options"));
P111_data_struct *P111_data = static_cast<P111_data_struct *>(getPluginTaskData(event->TaskIndex));
if (nullptr != P111_data) {
uint8_t v{};
const String version = P111_data->PCD_getVersion(v);
if (v != 0 && v != 0xFF) {
addRowLabel(F("Reader Version"));
addHtml(version);
}
}
addFormSubHeader(F("Options"));
{
const __FlashStringHelper *removaltype[] = {
F("None"),
@@ -116,7 +139,7 @@ boolean Plugin_111(uint8_t function, struct EventStruct *event, String& string)
case PLUGIN_INIT:
{
initPluginTaskData(event->TaskIndex, new (std::nothrow) P111_data_struct(P111_CS_PIN, P111_RST_PIN));
initPluginTaskData(event->TaskIndex, new (std::nothrow) P111_data_struct(P111_CS_PIN, P111_RST_PIN, P111_IRQ_PIN));
P111_data_struct *P111_data = static_cast<P111_data_struct *>(getPluginTaskData(event->TaskIndex));
if (nullptr != P111_data) {
@@ -163,7 +186,7 @@ boolean Plugin_111(uint8_t function, struct EventStruct *event, String& string)
P111_data_struct *P111_data = static_cast<P111_data_struct *>(getPluginTaskData(event->TaskIndex));
if (nullptr != P111_data) {
success = P111_data->plugin_fifty_per_second();
success = P111_data->plugin_fifty_per_second(event);
}
break;
}
@@ -2,6 +2,12 @@
#include "../CustomBuild/ESPEasy_buildinfo.h"
#ifdef ESP32
#if __has_include("CompiletimeDefines_generated.h")
#include "../CustomBuild/CompiletimeDefines_generated.h"
#endif
#endif
// This file will be "patched" at compiletime by
// tools/pio/generate-compiletime-defines.py
// Therefore this one may not include ESPEasy_common.h
@@ -39,6 +45,7 @@ uint16_t get_build_nr() {
const __FlashStringHelper* get_binary_filename() {
#ifndef SET_BUILD_BINARY_FILENAME
#pragma message ( "Build firmware filename is not set" )
return F("firmware.bin");
#else // ifndef SET_BUILD_BINARY_FILENAME
return F(SET_BUILD_BINARY_FILENAME);
@@ -57,6 +64,8 @@ uint32_t get_build_unixtime() {
#ifdef SET_BUILD_UNIXTIME
return SET_BUILD_UNIXTIME;
#else
#pragma message ( "Build (Unix)time not set" )
// Return some Unix time which we know is in the (somewhat recent) past
return 1664582400; // Sat Oct 01 2022 00:00:00 GMT+0000
#endif
@@ -66,6 +75,7 @@ const __FlashStringHelper * get_build_date_RFC1123() {
#ifdef SET_BUILD_TIME_RFC1123
return F(SET_BUILD_TIME_RFC1123);
#else
#pragma message ( "Build date in RFC1123 notation is not set" )
return F("-1");
#endif
}
@@ -82,6 +92,7 @@ const __FlashStringHelper* get_build_origin() {
const __FlashStringHelper* get_build_platform() {
#ifndef SET_BUILD_PLATFORM
#pragma message ( "Build platform not set" )
return F("");
#else // ifndef SET_BUILD_PLATFORM
return F(SET_BUILD_PLATFORM);
+9 -6
View File
@@ -10,8 +10,8 @@ RulesCalculate_t RulesCalculate{};
/*******************************************************************************************
* Helper functions to actually interact with the rules calculation functions.
* *****************************************************************************************/
int CalculateParam(const String& TmpStr, int errorValue) {
int32_t returnValue = errorValue;
int64_t CalculateParam(const String& TmpStr, int64_t errorValue) {
int64_t returnValue = errorValue;
if (TmpStr.length() == 0) {
return returnValue;
@@ -20,7 +20,7 @@ int CalculateParam(const String& TmpStr, int errorValue) {
// Minimize calls to the Calulate function.
// Only if TmpStr starts with '=' then call Calculate(). Otherwise do not call it
if (TmpStr[0] != '=') {
if (!validIntFromString(TmpStr, returnValue)) {
if (!validInt64FromString(TmpStr, returnValue)) {
return errorValue;
}
} else {
@@ -37,10 +37,13 @@ int CalculateParam(const String& TmpStr, int errorValue) {
strformat(F("CALCULATE PARAM: %s = %.6g"), TmpStr.c_str(), roundf(param)));
}
#endif // ifndef BUILD_NO_DEBUG
} else {
return errorValue;
// return integer only as it's valid only for variable indices and device/task id
#if FEATURE_USE_DOUBLE_AS_ESPEASY_RULES_FLOAT_TYPE
return round(param);
#else
return roundf(param);
#endif
}
returnValue = roundf(param); // return integer only as it's valid only for device and task id
}
return returnValue;
}
+2 -2
View File
@@ -17,8 +17,8 @@ extern RulesCalculate_t RulesCalculate;
* Helper functions to actually interact with the rules calculation functions.
* *****************************************************************************************/
int CalculateParam(const String& TmpStr,
int errorValue = 0);
int64_t CalculateParam(const String& TmpStr,
int64_t errorValue = 0ll);
CalculateReturnCode Calculate_preProcessed(const String & preprocessd_input,
ESPEASY_RULES_FLOAT_TYPE& result);
+3 -3
View File
@@ -45,9 +45,9 @@ bool getGpioInfo(int gpio, int& pinnr, bool& input, bool& output, bool& warning)
output = false;
} else {
// See: https://www.letscontrolit.com/forum/viewtopic.php?p=71880#p71874
if ((gpio == 12) || (gpio == 13)) {
// SPIHD/GPIO12
// SPIWP/GPIO13
if ((gpio == 12) || (gpio == 13)) {
// SPIHD/GPIO12
// SPIWP/GPIO13
if ((ESP.getFlashChipMode() != FM_DOUT) &&
(ESP.getFlashChipMode() != FM_DIO)) {
input = false;
+80
View File
@@ -0,0 +1,80 @@
#include "../Helpers/PrintToLog.h"
#include "../Helpers/StringConverter.h"
PrintToLog::PrintToLog(uint8_t logLevel) : _logLevel(logLevel)
{
_logLevelActive = loglevelActiveFor(_logLevel);
}
PrintToLog::PrintToLog(uint8_t logLevel, const String& logPrefix)
: _prefix(logPrefix), _logLevel(logLevel)
{
_logLevelActive = loglevelActiveFor(_logLevel);
}
PrintToLog::PrintToLog(uint8_t logLevel, const __FlashStringHelper *logPrefix)
: _prefix(logPrefix), _logLevel(logLevel)
{
_logLevelActive = loglevelActiveFor(_logLevel);
}
PrintToLog::~PrintToLog()
{
sendToLog();
}
PrintToLog::operator bool() const
{
return loglevelActiveFor(_logLevel);
}
void PrintToLog::flush()
{
// For compatibility
sendToLog();
}
void PrintToLog::sendToLog()
{
// Update cached loglevel
_logLevelActive = loglevelActiveFor(_logLevel);
if (_logLevelActive) {
if (!_str.isEmpty()) {
if (_prefix.isEmpty()) {
addLogMove(_logLevel, _str);
} else {
addLog(_logLevel, concat(_prefix, _str));
}
}
}
_str.clear();
}
void PrintToLog::clear() {
_str.clear();
_logLevelActive = loglevelActiveFor(_logLevel);
}
size_t PrintToLog::length() const
{
return _str.length();
}
bool PrintToLog::reserve(unsigned int size) { return _str.reserve(size); }
size_t PrintToLog::write(uint8_t c)
{
if (!_logLevelActive) { return 0; }
_str += (char)c;
return 1;
}
String PrintToLog::get() const
{
if (!_str.isEmpty() && !_prefix.isEmpty()) {
return concat(_prefix, _str);
}
return _str;
}
+49
View File
@@ -0,0 +1,49 @@
#ifndef HELPERS_PRINTTOLOG_H
#define HELPERS_PRINTTOLOG_H
#include "../../ESPEasy_common.h"
class PrintToLog : public Print
{
public:
PrintToLog(uint8_t logLevel);
PrintToLog(uint8_t logLevel,
const String& logPrefix);
PrintToLog(uint8_t logLevel,
const __FlashStringHelper *logPrefix);
virtual ~PrintToLog();
// Check if loglevel is active
operator bool() const;
void flush() override;
void sendToLog();
void clear();
size_t length() const;
bool reserve(unsigned int size);
size_t write(uint8_t c) override;
String get() const;
private:
String _prefix;
String _str;
uint8_t _logLevel{};
// Cached loglevel to speed up write.
bool _logLevelActive{};
}; // class PrintToLog
#endif // ifndef HELPERS_PRINTTOLOG_H
+21
View File
@@ -0,0 +1,21 @@
#include "../Helpers/PrintToString.h"
void PrintToString::clear() { _str.clear(); }
size_t PrintToString::length() const
{
return _str.length();
}
bool PrintToString::reserve(unsigned int size) { return _str.reserve(size); }
size_t PrintToString::write(uint8_t c)
{
_str += (char)c;
return 1;
}
const String& PrintToString::get() const
{
return _str;
}
+29
View File
@@ -0,0 +1,29 @@
#ifndef HELPERS_PRINTTOSTRING_H
#define HELPERS_PRINTTOSTRING_H
#include "../../ESPEasy_common.h"
class PrintToString : public Print
{
public:
virtual ~PrintToString() {}
void clear();
size_t length() const;
bool reserve(unsigned int size);
size_t write(uint8_t c) override;
const String& get() const;
private:
String _str;
}; // class PrintToString
#endif // HELPERS_PRINTTOSTRING_H
+4 -3
View File
@@ -303,10 +303,11 @@ bool parse_pct_v_num_pct(String& s, boolean useURLencode, int start_pos)
const int pos_closing_pct = s.indexOf('%', v_index + 1);
const String arg = s.substring(v_index + 2 + (isv_ ? 1 : 0), pos_closing_pct);
String valArg(arg);
const int32_t i = CalculateParam(arg, -1);
constexpr int64_t errorvalue = -1;
const int64_t i = CalculateParam(arg, errorvalue);
// addLog(LOG_LEVEL_INFO, strformat(F("s: '%s', calc parse: %s => %d"), s.c_str(), arg.c_str(), i));
if (i != -1) { // We're calculating a numeric index like %v=1+%v2%%, so have to use the result for the value
valArg = String(i);
if (i != errorvalue) { // We're calculating a numeric index like %v=1+%v2%%, so have to use the result for the value
valArg = ll2String(i);
}
// Need to replace the entire arg
+2 -1
View File
@@ -440,7 +440,8 @@ void ICACHE_RAM_ATTR P098_data_struct::process_limit_switch(
ISR_noInterrupts();
{
// Don't call gpio_config.readState() here
const bool pinState = gpio_config.inverted ? digitalRead(gpio_config.gpio) == 0 : digitalRead(gpio_config.gpio) != 0;
const bool pinState =
(DIRECT_pinRead_ISR(gpio_config.gpio) != 0) ^ gpio_config.inverted;
const uint64_t currentTime = getMicros64();
+6 -5
View File
@@ -4,22 +4,23 @@
#include "../../_Plugin_Helper.h"
#ifdef USES_P098
# include <GPIO_Direct_Access.h>
# define P098_LIMIT_SWITCH_TRIGGERPOS_MARGIN 10
struct P098_GPIO_config {
byte high() const {
uint8_t high() const {
return inverted ? 0 : 1;
}
byte low() const {
uint8_t low() const {
return inverted ? 1 : 0;
}
// Don't call this from ISR functions.
bool readState() const {
const bool state = digitalRead(gpio) != 0;
return inverted ? !state : state;
return (DIRECT_pinRead_ISR(gpio) != 0) ^ inverted;
}
uint64_t timer_us = 100000;
+104 -8
View File
@@ -3,6 +3,7 @@
#ifdef USES_P111
# include "../PluginStructs/P111_data_struct.h"
# include "../Helpers/PrintToString.h"
// Needed also here for PlatformIO's library finder as the .h file
// is in a directory which is excluded in the src_filter
@@ -10,11 +11,16 @@
# include <MFRC522.h>
P111_data_struct::P111_data_struct(int8_t csPin,
int8_t rstPin)
: mfrc522(nullptr), _csPin(csPin), _rstPin(rstPin)
int8_t rstPin,
int8_t irqPin)
: mfrc522(nullptr), _csPin(csPin), _rstPin(rstPin), _irqPin(irqPin)
{}
P111_data_struct::~P111_data_struct() {
if (validGpio(_irqPin)) {
detachInterrupt(digitalPinToInterrupt(_irqPin));
}
delete mfrc522;
mfrc522 = nullptr;
}
@@ -26,7 +32,18 @@ void P111_data_struct::init() {
if (mfrc522 != nullptr) {
mfrc522->PCD_Init(); // Initialize MFRC522 reader
mfrc522->PCD_WriteRegister(MFRC522::ComIEnReg, 0b10100000); // enable receiver interrupt
mfrc522->PCD_WriteRegister(MFRC522::DivIEnReg, 0x80); // Set as CMOS output pin
initPhase = P111_initPhases::Ready;
if (validGpio(_irqPin)) {
pinMode(_irqPin, INPUT);
attachInterruptArg(
digitalPinToInterrupt(_irqPin),
reinterpret_cast<void (*)(void *)>(mfrc522_interrupt),
this, FALLING);
}
}
}
@@ -116,10 +133,15 @@ bool P111_data_struct::reset(int8_t csPin,
if ((resetPin != -1) &&
(initPhase == P111_initPhases::Ready)) {
if (loglevelActiveFor(LOG_LEVEL_INFO)) {
String log = F("MFRC522: Reset on pin: ");
log += resetPin;
addLogMove(LOG_LEVEL_INFO, log);
addLogMove(
LOG_LEVEL_INFO,
concat(F("MFRC522: Reset on pin: "), resetPin));
}
init();
return true;
// FIXME TD-er: Remove the rest of this function.
pinMode(resetPin, OUTPUT);
digitalWrite(resetPin, LOW);
timeToWait = 100;
@@ -140,6 +162,8 @@ bool P111_data_struct::reset(int8_t csPin,
digitalWrite(csPin, LOW);
mfrc522->PCD_Init(csPin, resetPin); // Init MFRC522 module
mfrc522->PCD_WriteRegister(MFRC522::ComIEnReg, 0b10100000); // enable receiver interrupt
mfrc522->PCD_WriteRegister(MFRC522::DivIEnReg, 0x80); // Set as CMOS output pin
// If you set Antenna Gain to Max it will increase reading distance
mfrc522->PCD_SetAntennaGain(mfrc522->RxGain_max);
@@ -206,14 +230,37 @@ uint8_t P111_data_struct::readPassiveTargetID(uint8_t *uid,
uid[i] = mfrc522->uid.uidByte[i];
}
*uidLength = 4;
#ifndef BUILD_NO_DEBUG
if (loglevelActiveFor(LOG_LEVEL_DEBUG))
{
PrintToString p2str;
mfrc522->PICC_DumpToSerial(&(mfrc522->uid), p2str);
if (p2str.length()) {
addLog(LOG_LEVEL_DEBUG, concat(F("MFRC522: "), p2str.get()));
}
}
#endif
mfrc522->PICC_HaltA(); // Stop reading
return P111_NO_ERROR;
}
void P111_data_struct::mfrc522_interrupt(P111_data_struct * self)
{
self->_irq_pin_time_micros = getMicros64();
}
/*********************************************************************************************
* Handle regular read and reset processing
********************************************************************************************/
bool P111_data_struct::plugin_ten_per_second(struct EventStruct *event) {
return loop(event);
}
bool P111_data_struct::loop(struct EventStruct *event) {
bool success = false;
if (((initPhase == P111_initPhases::ResetDelay1) || // Whichever handler comes first
@@ -226,8 +273,10 @@ bool P111_data_struct::plugin_ten_per_second(struct EventStruct *event) {
}
counter++; // This variable replaces a static variable in the original implementation
const bool ComIrqReg_bits = (mfrc522->PCD_ReadRegister(MFRC522::ComIrqReg) & (1<<5)) != 0;
mfrc522->PCD_WriteRegister(MFRC522::ComIrqReg, 0x34);
if (counter == 3) { // Only every 3rd 0.1 second we do a read
if (counter >= 10 || ComIrqReg_bits) { // Only every 3rd 0.1 second we do a read
counter = 0;
uint32_t key = P111_NO_KEY;
@@ -258,7 +307,7 @@ bool P111_data_struct::plugin_ten_per_second(struct EventStruct *event) {
} else {
log += F("Old Tag: ");
}
log += key;
log += formatToHex_decimal(key);
if (!removedTag) {
log += F(" card: ");
@@ -280,7 +329,7 @@ bool P111_data_struct::plugin_ten_per_second(struct EventStruct *event) {
/*********************************************************************************************
* Handle timers instead of using delay()
********************************************************************************************/
bool P111_data_struct::plugin_fifty_per_second() {
bool P111_data_struct::plugin_fifty_per_second(struct EventStruct *event) {
if ((initPhase == P111_initPhases::ResetDelay1) ||
(initPhase == P111_initPhases::ResetDelay2)) {
timeToWait -= 20; // milliseconds
@@ -297,7 +346,54 @@ bool P111_data_struct::plugin_fifty_per_second() {
}
}
}
if (_irq_pin_time_micros > _last_served_irq_pin_time_micros) {
_last_served_irq_pin_time_micros = _irq_pin_time_micros;
//addLog(LOG_LEVEL_INFO, F("P111: acting on interrupt"));
loop(event);
}
return true;
}
String P111_data_struct::PCD_getVersion(uint8_t& v) {
v = 0xFF;
if (mfrc522) {
v = mfrc522->PCD_ReadRegister(MFRC522::VersionReg);
if (v != 0xFF && v != 0) {
// Human readable version.
String res = concat(formatToHex(v, 2), F(" = "));
switch(v) {
case 0xb2:
res += F("FM17522_1");
break;
case 0x88:
res += F("FM17522");
break;
case 0x89:
res += F("FM17522E");
break;
case 0x90:
res += F("v0.0");
break;
case 0x91:
res += F("v1.0");
break;
case 0x92:
res += F("v2.0");
break;
case 0x12:
res += F("counterfeit chip");
break;
default:
res += F("(unknown)");
break;
}
return res;
}
}
return EMPTY_STRING;
}
#endif // ifdef USES_P111
+15 -2
View File
@@ -8,6 +8,7 @@
# define P111_CS_PIN PIN(0)
# define P111_RST_PIN PIN(1)
# define P111_IRQ_PIN PIN(2)
# define P111_TAG_AUTOREMOVAL PCONFIG(0)
# define P111_SENDRESET PCONFIG(1)
# define P111_REMOVALVALUE PCONFIG_LONG(0)
@@ -31,16 +32,21 @@ enum class P111_initPhases : uint8_t {
struct P111_data_struct : public PluginTaskData_base {
P111_data_struct(int8_t csPin,
int8_t rstPin);
int8_t rstPin,
int8_t irqPin);
P111_data_struct() = delete;
virtual ~P111_data_struct();
void init();
bool plugin_ten_per_second(struct EventStruct *event);
bool plugin_fifty_per_second();
bool plugin_fifty_per_second(struct EventStruct *event);
String PCD_getVersion(uint8_t& v);
private:
bool loop(struct EventStruct *event);
MFRC522 *mfrc522 = nullptr;
uint8_t counter = 0;
@@ -53,14 +59,21 @@ private:
uint8_t readPassiveTargetID(uint8_t *uid,
uint8_t *uidLength);
static void mfrc522_interrupt(P111_data_struct * self);
int32_t timeToWait = 0;
int8_t _csPin;
int8_t _rstPin;
int8_t _irqPin;
uint8_t errorCount = 0;
bool removedState = true; // On startup, there will usually not be a tag nearby
P111_initPhases initPhase = P111_initPhases::Undefined;
int64_t _last_served_irq_pin_time_micros{};
ESPEASY_VOLATILE(int64_t) _irq_pin_time_micros = -1;
};
#endif // ifdef USES_P111
+9
View File
@@ -0,0 +1,9 @@
#include "../WebServer/HTML_Print.h"
#include "../Globals/TXBuffer.h"
size_t HTML_Print::write(uint8_t c)
{
TXBuffer += (char)c;
return 1;
}
+20
View File
@@ -0,0 +1,20 @@
#ifndef WEBSERVER_HTML_PRINT_H
#define WEBSERVER_HTML_PRINT_H
#include "../../ESPEasy_common.h"
// Class to redirect any function expecting a Print stream to output to the TXBuffer of our webserver.
class HTML_Print : public Print
{
public:
virtual ~HTML_Print() {}
size_t write(uint8_t c) override;
};
#endif // WEBSERVER_HTML_PRINT_H
+32 -1
View File
@@ -114,6 +114,33 @@ def gen_compiletime_defines():
env.Append(CXXFLAGS=defines)
def gen_compiletime_defines_headerfile():
"""
BUILD_DIR = env.subst("$BUILD_DIR")
PROJECT_DIR = env.subst("$PROJECT_DIR")
PROJECT_SRC_DIR = env.subst("$PROJECT_SRC_DIR")
"""
PROJECT_SRC_DIR = env.subst("$PROJECT_SRC_DIR")
header_file = os.path.join(PROJECT_SRC_DIR, 'src/CustomBuild/CompiletimeDefines_generated.h')
with open(header_file, 'w') as f:
lines = [
"#pragma once\n",
"// Generated compile time defines\n",
"// Do not edit this file\n",
"\n",
"#define SET_BUILD_BINARY_FILENAME \"{}\"\n".format(create_binary_filename()),
"#define SET_BOARD_NAME \"{}\"\n".format(get_board_name()),
"#define SET_BUILD_PLATFORM \"{}\"\n".format(platform.platform()),
"#define SET_BUILD_GIT_HEAD \"{}\"\n".format(get_git_description()),
"#define SET_BUILD_CDN_URL \"{}\"\n".format(get_cdn_url_prefix()),
"#define SET_BUILD_VERSION {}\n".format(compute_version_date()),
"#define SET_BUILD_UNIXTIME {}\n".format(create_build_unixtime()),
"#define SET_BUILD_TIME_RFC1123 \"{}\"\n".format(create_RFC1123_build_date())
]
f.writelines(lines)
print("\u001b[32m Compile time defines \u001b[0m")
deduct_flags_from_pioenv()
@@ -137,4 +164,8 @@ print("\u001b[33m --flash-mode: \u001b[0m {}".format(env.BoardConfig().get("bui
if "esp32" in env.BoardConfig().get("build.core"):
print("\u001b[33m memory_type: \u001b[0m {}".format(env.BoardConfig().get("build.arduino.memory_type", "-")))
gen_compiletime_defines()
# Generate header file 'CustomBuild/CompiletimeDefines_generated.h'
gen_compiletime_defines_headerfile()
else:
# ESP8266 cannot be built with __has_include, so we generate CXXFLAGS defines
gen_compiletime_defines()
+26 -2
View File
@@ -33,10 +33,18 @@ def create_display_text(description, version, families):
esp32_split.append('C2')
if 'ESP32-C3' in families:
esp32_split.append('C3')
if 'ESP32-C6' in families:
if 'ESP32-C5' in families:
esp32_split.append('C5')
if 'ESP32-C61' in families:
esp32_split.append('C61')
elif 'ESP32-C6' in families:
esp32_split.append('C6')
if 'ESP32-H2' in families:
if 'ESP32-H21' in families:
esp32_split.append('H21')
elif 'ESP32-H2' in families:
esp32_split.append('H2')
if 'ESP32-P4' in families:
esp32_split.append('P4')
if len(esp32_split) > 0:
fam_split.append('ESP32-' + '/'.join(esp32_split))
@@ -74,10 +82,18 @@ def parse_filename(file, version, variant, file_suffix):
chipFamily = 'ESP32-C2'
elif 'ESP32c3' in variant:
chipFamily = 'ESP32-C3'
elif 'ESP32c5' in variant:
chipFamily = 'ESP32-C5'
elif 'ESP32c61' in variant:
chipFamily = 'ESP32-C61'
elif 'ESP32c6' in variant:
chipFamily = 'ESP32-C6'
elif 'ESP32h21' in variant:
chipFamily = 'ESP32-H21'
elif 'ESP32h2' in variant:
chipFamily = 'ESP32-H2'
elif 'ESP32p4' in variant:
chipFamily = 'ESP32-P4'
else:
chipFamily = 'ESP32'
@@ -384,6 +400,14 @@ def generate_manifest_files(bin_folder, output_prefix):
' See <a href="../" >../</a> for last official build.\n',
' <br>\n',
' <a href="all.zip" >all.zip</a> containing all bin files in a single zip file.\n',
' <br>\n',
' <br>\n',
' <h2>Migrate ESP32 installs from SPIFFS to LittleFS</h2>\n',
' From 2025/06/26 onward, there will be no longer SPIFFS builds for ESP32-xx.\n',
' <br>\n',
' See <a href="https://espeasy.readthedocs.io/en/latest/Reference/Migrate_SPIFFS_to_LittleFS.html" >Migrate from SPIFFS to LittleFS (ESP32)</a> in the documentation on how to migrate older (ESP32) SPIFFS installs to LittleFS\n',
' <script>\n',
' const selectEl = document.querySelector(".pick-variant select");\n',
' const installEl = document.querySelector("esp-web-install-button");\n',
+4 -4
View File
@@ -55,14 +55,14 @@ def esp32_create_combined_bin(source, target, env):
cmd = [
"--chip",
chip,
"merge_bin",
"merge-bin",
"-o",
new_file_name,
"--flash_mode",
"--flash-mode",
flash_mode,
"--flash_freq",
"--flash-freq",
flash_freq,
"--flash_size",
"--flash-size",
flash_size,
]