mirror of
https://github.com/letscontrolit/ESPEasy.git
synced 2026-07-27 19:57:38 +00:00
Merge branch 'mega' into httpResponseParser
This commit is contained in:
@@ -86,3 +86,5 @@ dependencies.lock
|
||||
.dummy/
|
||||
|
||||
.cache/
|
||||
|
||||
src/src/CustomBuild/CompiletimeDefines_generated.h
|
||||
|
||||
@@ -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!**
|
||||
|
||||
|
|
||||
@@ -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
|
||||
***********
|
||||
|
||||
@@ -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
@@ -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
@@ -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);
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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}
|
||||
|
||||
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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
|
||||
@@ -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()
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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,
|
||||
]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user