@alteriom/painlessmesh 1.8.14 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/BRIDGE_TO_INTERNET.md +229 -0
- package/CHANGELOG.md +89 -1
- package/CONTRIBUTING.md +79 -0
- package/README.md +70 -143
- package/docs/README.md +1 -0
- package/docs/api/shared-gateway.md +1207 -0
- package/docs/troubleshooting/common-issues.md +28 -0
- package/docs/troubleshooting/faq.md +113 -12
- package/examples/basic/test/simulator/CMakeLists.txt +40 -0
- package/examples/basic/test/simulator/README.md +149 -0
- package/examples/basic/test/simulator/firmware/basic_firmware.hpp +117 -0
- package/examples/basic/test/simulator/scenarios/basic_mesh_test.yaml +81 -0
- package/examples/bridge/bridge.ino +17 -4
- package/examples/bridge_failover/README.md +81 -0
- package/examples/bridge_failover/bridge_failover.ino +51 -6
- package/examples/sharedGateway/README.md +235 -0
- package/examples/{meshCommandNode → sharedGateway}/platformio.ini +3 -2
- package/examples/sharedGateway/sharedGateway.ino +303 -0
- package/library.json +3 -22
- package/library.properties +1 -1
- package/package.json +3 -3
- package/src/arduino/wifi.hpp +380 -13
- package/src/painlessmesh/gateway.hpp +2120 -0
- package/src/painlessmesh/mesh.hpp +1034 -6
- package/src/painlessmesh/message_tracker.hpp +311 -0
- package/src/painlessmesh/protocol.hpp +6 -0
- package/DOCUMENTATION_INDEX.md +0 -146
- package/docs/API_DESIGN_GUIDELINES.md +0 -414
- package/docs/ARDUINO_LIBRARY_MANAGER_SUBMISSION.md +0 -331
- package/docs/BOOLEAN_NAMING_CONVENTION.md +0 -235
- package/docs/BRIDGE_FAILOVER.md +0 -512
- package/docs/BRIDGE_HEALTH_MONITORING.md +0 -293
- package/docs/CHANNEL_SYNCHRONIZATION.md +0 -209
- package/docs/CREATE_MISSING_RELEASES.md +0 -321
- package/docs/DOCUMENTATION_MIGRATION_PLAN.md +0 -176
- package/docs/FAQ_VERSION_NUMBERS.md +0 -152
- package/docs/IMPLEMENTATION_PLAN_MESH_TOPOLOGY.md +0 -1062
- package/docs/MESH_TOPOLOGY_GUIDE.md +0 -992
- package/docs/MESH_TOPOLOGY_PROGRESS.md +0 -422
- package/docs/MQTT_BRIDGE_COMMANDS.md +0 -894
- package/docs/MQTT_BRIDGE_IMPLEMENTATION_SUMMARY.md +0 -324
- package/docs/MQTT_COMMAND_SCHEMA_PROPOSAL.md +0 -576
- package/docs/MQTT_SCHEMA_COMPLIANCE.md +0 -340
- package/docs/MQTT_SCHEMA_PROPOSALS.md +0 -446
- package/docs/MQTT_SCHEMA_REVIEW.md +0 -690
- package/docs/OTA_COMMANDS_REFERENCE.md +0 -554
- package/docs/PHASE1_GUIDE.md +0 -349
- package/docs/PHASE2_GUIDE.md +0 -543
- package/docs/QUICK_REFERENCE_VERSIONING.md +0 -127
- package/docs/RELEASE_AGENT_SUMMARY.md +0 -386
- package/docs/SCHEMA_VALIDATION_CHECKLIST.md +0 -222
- package/docs/VERSION_MANAGEMENT.md +0 -213
- package/docs/archive/DOCUSAURUS_DEPLOYMENT.md +0 -166
- package/docs/archive/FEATURE_PROPOSALS.md +0 -337
- package/docs/archive/LIBRARY_JSON_FIX.md +0 -98
- package/docs/archive/LIBRARY_STRUCTURE_FIX.md +0 -215
- package/docs/archive/PHASE1_IMPLEMENTATION.md +0 -325
- package/docs/archive/PHASE2_IMPLEMENTATION.md +0 -567
- package/docs/archive/RELEASE_SUMMARY.md +0 -173
- package/docs/archive/SCONS_BUILD_FIX.md +0 -313
- package/docs/archive/TRIGGER_RELEASE.md +0 -280
- package/docs/archive/VECTOR_INCLUDE_FIX.md +0 -129
- package/docs/archive/ota-and-status-enhancements.md +0 -911
- package/docs/archive/ota-status-architecture-diagrams.md +0 -658
- package/docs/archive/ota-status-quick-reference.md +0 -284
- package/docs/design/.gitkeep +0 -1
- package/docs/design/STATION_CREDENTIALS_DESIGN.md +0 -182
- package/docs/development/ARDUINO_COMPLIANCE_SUMMARY.md +0 -71
- package/docs/development/CODE_REFACTORING_RECOMMENDATIONS.md +0 -1011
- package/docs/development/DOCKER_TESTING.md +0 -196
- package/docs/development/PLATFORMIO_USAGE.md +0 -180
- package/docs/development/TESTING_SUMMARY.md +0 -126
- package/docs/development/contributing.md +0 -301
- package/docs/development/documentation.md +0 -583
- package/docs/features/DIAGNOSTICS_API.md +0 -534
- package/docs/implementation/BRIDGE_ARCHITECTURE_IMPLEMENTATION.md +0 -340
- package/docs/implementation/BRIDGE_HEALTH_MONITORING_IMPLEMENTATION.md +0 -213
- package/docs/implementation/BRIDGE_STATUS_FEATURE.md +0 -635
- package/docs/implementation/DIAGNOSTICS_API_IMPLEMENTATION.md +0 -232
- package/docs/implementation/IMPLEMENTATION_COMPLETE.md +0 -228
- package/docs/implementation/IMPLEMENTATION_NTP_TIME_SYNC.md +0 -325
- package/docs/implementation/IMPLEMENTATION_SUMMARY.md +0 -316
- package/docs/implementation/MESSAGE_QUEUE_IMPLEMENTATION.md +0 -405
- package/docs/implementation/MULTI_BRIDGE_IMPLEMENTATION.md +0 -520
- package/docs/implementation/NTP_TIME_SYNC_FEATURE.md +0 -392
- package/docs/improvements/FUTURE_PROPOSALS.md +0 -1016
- package/docs/improvements/IMPLEMENTATION_HISTORY.md +0 -1091
- package/docs/improvements/OTA_STATUS_ENHANCEMENTS.md +0 -709
- package/docs/improvements/README.md +0 -212
- package/docs/internal/CUSTOM_AGENT_ANALYSIS.md +0 -391
- package/docs/internal/ISSUE_65_VERIFICATION.md +0 -947
- package/docs/internal/ISSUE_66_CLOSURE.md +0 -249
- package/docs/internal/ISSUE_66_STATUS.md +0 -316
- package/docs/internal/PR_SUMMARY.md +0 -315
- package/docs/internal/REVIEW_SUMMARY.md +0 -332
- package/docs/multi-bridge-setup.md +0 -1025
- package/docs/platformio-publishing.md +0 -255
- package/docs/platformio-setup-summary.md +0 -121
- package/docs/releases/ANNOUNCEMENT_v1.8.6.md +0 -63
- package/docs/releases/ANNOUNCEMENT_v1.8.7.md +0 -113
- package/docs/releases/BRIDGE_STATUS_SELF_REGISTRATION_FIX.md +0 -221
- package/docs/releases/FEATURE_HISTORY.md +0 -543
- package/docs/releases/GITHUB_RELEASE_v1.8.6.md +0 -71
- package/docs/releases/GITHUB_RELEASE_v1.8.7.md +0 -90
- package/docs/releases/PATCH_v1.7.2.md +0 -262
- package/docs/releases/PATCH_v1.7.3.md +0 -262
- package/docs/releases/PATCH_v1.7.4.md +0 -219
- package/docs/releases/PHASE1_SUMMARY.md +0 -246
- package/docs/releases/PHASE2_SUMMARY.md +0 -499
- package/docs/releases/PUBLISH_v1.8.0_INSTRUCTIONS.md +0 -163
- package/docs/releases/QUICK_START_RELEASES.md +0 -113
- package/docs/releases/RELEASE_CHECKLIST_1.8.10.md +0 -331
- package/docs/releases/RELEASE_CHECKLIST_1.8.9.md +0 -207
- package/docs/releases/RELEASE_CHECKLIST_v1.7.4.md +0 -253
- package/docs/releases/RELEASE_CHECKLIST_v1.7.5.md +0 -315
- package/docs/releases/RELEASE_CHECKLIST_v1.7.6.md +0 -389
- package/docs/releases/RELEASE_CHECKLIST_v1.8.0.md +0 -331
- package/docs/releases/RELEASE_CHECKLIST_v1.8.2.md +0 -309
- package/docs/releases/RELEASE_NOTES_1.7.0.md +0 -539
- package/docs/releases/RELEASE_NOTES_1.8.10.md +0 -239
- package/docs/releases/RELEASE_NOTES_1.8.9.md +0 -213
- package/docs/releases/RELEASE_NOTES_v1.8.0.md +0 -685
- package/docs/releases/RELEASE_NOTES_v1.8.1.md +0 -221
- package/docs/releases/RELEASE_NOTES_v1.8.2.md +0 -421
- package/docs/releases/RELEASE_NOTES_v1.8.3.md +0 -292
- package/docs/releases/RELEASE_NOTES_v1.8.4.md +0 -277
- package/docs/releases/RELEASE_NOTES_v1.8.6.md +0 -205
- package/docs/releases/RELEASE_NOTES_v1.8.7.md +0 -184
- package/docs/releases/RELEASE_PLAN_v1.7.6.md +0 -816
- package/docs/releases/RELEASE_SUMMARY_1.8.10.md +0 -193
- package/docs/releases/RELEASE_SUMMARY_v1.7.4.md +0 -276
- package/docs/releases/RELEASE_SUMMARY_v1.7.5.md +0 -322
- package/docs/releases/RELEASE_SUMMARY_v1.7.6.md +0 -436
- package/docs/releases/RELEASE_SUMMARY_v1.7.7.md +0 -391
- package/docs/releases/RELEASE_SUMMARY_v1.7.8.md +0 -523
- package/docs/releases/RELEASE_SUMMARY_v1.7.9.md +0 -542
- package/docs/troubleshooting/ARDUINO_IDE_VERSION_FIX_SUMMARY.md +0 -229
- package/docs/troubleshooting/ARDUINO_LIBRARY_NAME_FIX.md +0 -197
- package/docs/troubleshooting/CRASH_QUICK_REF.md +0 -93
- package/docs/troubleshooting/ESP32_C6_COMPATIBILITY.md +0 -157
- package/docs/troubleshooting/FREERTOS_ASSERTION_FAILURE.md +0 -288
- package/docs/troubleshooting/FREERTOS_FIX_IMPLEMENTATION.md +0 -267
- package/docs/troubleshooting/NPM_PUBLISHING_ISSUE_SUMMARY.md +0 -110
- package/docs/troubleshooting/PAINLESSMESH_V1.7.4_COMPILATION_ISSUES.md +0 -547
- package/docs/troubleshooting/QUICK_FIX_FREERTOS.md +0 -164
- package/docs/troubleshooting/SENSOR_NODE_CONNECTION_CRASH.md +0 -264
- package/docs/troubleshooting/station-reconnection-issues.md +0 -172
- package/docs/v1.7.7_MQTT_IMPROVEMENTS.md +0 -794
- package/docs/wiki/API-Reference.md +0 -246
- package/docs/wiki/Complete-Documentation.md +0 -123
- package/examples/alteriomImproved/alteriom_sensor_package.hpp +0 -224
- package/examples/alteriomImproved/improved_sensor_node.ino +0 -248
- package/examples/alteriomImproved/platformio.ini +0 -32
- package/examples/alteriomMetricsHealth/alteriom_sensor_package.hpp +0 -796
- package/examples/alteriomMetricsHealth/metrics_health_node.ino +0 -429
- package/examples/alteriomMetricsHealth/platformio.ini +0 -26
- package/examples/alteriomPhase1/alteriom_sensor_package.hpp +0 -224
- package/examples/alteriomPhase1/phase1_features.ino +0 -242
- package/examples/alteriomPhase1/platformio.ini +0 -26
- package/examples/alteriomPhase2/alteriom_sensor_package.hpp +0 -224
- package/examples/alteriomPhase2/phase2_features.ino +0 -186
- package/examples/alteriomPhase2/platformio.ini +0 -26
- package/examples/alteriomSensorNode/alteriom_sensor_node.ino +0 -186
- package/examples/alteriomSensorNode/alteriom_sensor_package.hpp +0 -1227
- package/examples/alteriomSensorNode/platformio.ini +0 -26
- package/examples/bridge/alteriom_sensor_package.hpp +0 -1170
- package/examples/bridge/bridge_health_monitoring_example.ino +0 -188
- package/examples/bridge/enhanced_mqtt_bridge.hpp +0 -610
- package/examples/bridge/enhanced_mqtt_bridge_example.ino +0 -226
- package/examples/bridge/mesh_event_publisher.hpp +0 -253
- package/examples/bridge/mesh_topology_reporter.hpp +0 -303
- package/examples/bridge/mqtt_command_bridge.hpp +0 -459
- package/examples/bridge/mqtt_status_bridge.hpp +0 -519
- package/examples/bridgeAwareSensorNode/alteriom_sensor_package.hpp +0 -1227
- package/examples/bridgeAwareSensorNode/bridgeAwareSensorNode.ino +0 -342
- package/examples/bridgeAwareSensorNode/platformio.ini +0 -26
- package/examples/diagnosticsExample/diagnosticsExample.ino +0 -171
- package/examples/diagnosticsExample/platformio.ini +0 -26
- package/examples/echoNode/echoNode.ino +0 -33
- package/examples/echoNode/platformio.ini +0 -26
- package/examples/meshCommandNode/alteriom_sensor_package.hpp +0 -235
- package/examples/meshCommandNode/meshCommandNode.ino +0 -265
- package/examples/mqttCommandBridge/alteriom_sensor_package.hpp +0 -235
- package/examples/mqttCommandBridge/mesh_event_publisher.hpp +0 -253
- package/examples/mqttCommandBridge/mesh_topology_reporter.hpp +0 -303
- package/examples/mqttCommandBridge/mqttCommandBridge.ino +0 -254
- package/examples/mqttCommandBridge/mqtt_command_bridge.hpp +0 -462
- package/examples/mqttCommandBridge/platformio.ini +0 -27
- package/examples/mqttStatusBridge/mqttStatusBridge.ino +0 -218
- package/examples/mqttStatusBridge/mqtt_status_bridge.hpp +0 -522
- package/examples/mqttStatusBridge/platformio.ini +0 -27
- package/examples/mqttTopologyTest/README.md +0 -467
- package/examples/mqttTopologyTest/mqttTopologyTest.ino +0 -754
- package/examples/mqttTopologyTest/platformio.ini +0 -27
- package/examples/multi_bridge/README.md +0 -346
- package/examples/multi_bridge/primary_bridge.ino +0 -96
- package/examples/multi_bridge/regular_node.ino +0 -141
- package/examples/multi_bridge/secondary_bridge.ino +0 -111
- package/examples/ntpTimeSyncBridge/alteriom_sensor_package.hpp +0 -1383
- package/examples/ntpTimeSyncBridge/ntpTimeSyncBridge.ino +0 -86
- package/examples/ntpTimeSyncNode/alteriom_sensor_package.hpp +0 -1383
- package/examples/ntpTimeSyncNode/ntpTimeSyncNode.ino +0 -109
- package/examples/queued_alarms/README.md +0 -390
- package/examples/queued_alarms/queued_alarms.ino +0 -265
- package/examples/routing_demo/README.md +0 -172
- package/examples/routing_demo/routing_demo.ino +0 -102
- package/examples/rtcIntegration/README.md +0 -294
- package/examples/rtcIntegration/rtcIntegration.ino +0 -210
|
@@ -1,322 +0,0 @@
|
|
|
1
|
-
# painlessMesh v1.7.5 Release Summary
|
|
2
|
-
|
|
3
|
-
**Release Date:** October 19, 2025
|
|
4
|
-
**Release Type:** Patch Release (Bug Fix)
|
|
5
|
-
**Urgency:** High - Critical CI/CD and compatibility fixes
|
|
6
|
-
|
|
7
|
-
## Overview
|
|
8
|
-
|
|
9
|
-
Version 1.7.5 is a critical patch release that addresses TaskScheduler compatibility issues discovered during CI/CD testing of v1.7.4. This release reverts the thread-safe scheduler implementation due to fundamental architectural incompatibilities with TaskScheduler v4.0.x, and fixes build system configuration issues that prevented successful compilation in automated environments.
|
|
10
|
-
|
|
11
|
-
**Key Changes:**
|
|
12
|
-
- Reverted `_TASK_THREAD_SAFE` mode (incompatible with std::function)
|
|
13
|
-
- Fixed PlatformIO Library Dependency Finder (LDF) configuration
|
|
14
|
-
- Corrected include order in example sketches
|
|
15
|
-
- Maintained FreeRTOS crash reduction via semaphore timeout increase
|
|
16
|
-
|
|
17
|
-
## Critical Issues Resolved
|
|
18
|
-
|
|
19
|
-
### 1. TaskScheduler Thread-Safe Mode Incompatibility
|
|
20
|
-
|
|
21
|
-
**Problem:** TaskScheduler v4.0.x cannot use `_TASK_THREAD_SAFE` and `_TASK_STD_FUNCTION` simultaneously due to an architectural limitation in how it handles function pointers vs std::function objects.
|
|
22
|
-
|
|
23
|
-
**Root Cause:**
|
|
24
|
-
- TaskScheduler's thread-safe mode stores raw function pointers in FreeRTOS queues
|
|
25
|
-
- When `_TASK_STD_FUNCTION` is enabled, `processRequests()` attempts to cast these pointers to `std::function` using invalid C-style casts
|
|
26
|
-
- painlessMesh architecture requires `_TASK_STD_FUNCTION` for lambda callbacks throughout the codebase (5+ core files)
|
|
27
|
-
|
|
28
|
-
**Impact:**
|
|
29
|
-
- Compilation failures: "no known conversion from lambda to TaskCallback"
|
|
30
|
-
- Affected files: plugin.hpp, connection.hpp, mesh.hpp, router.hpp, painlessMeshSTA.h
|
|
31
|
-
- Complete mesh functionality breakdown if std::function disabled
|
|
32
|
-
|
|
33
|
-
**Resolution:**
|
|
34
|
-
- Disabled `_TASK_THREAD_SAFE` mode in `painlessTaskOptions.h`
|
|
35
|
-
- Maintained semaphore timeout fix (Option A: 10ms → 100ms)
|
|
36
|
-
- Added comprehensive documentation of the incompatibility
|
|
37
|
-
- FreeRTOS crash reduction: ~85% (vs 95-98% with dual approach)
|
|
38
|
-
|
|
39
|
-
**Trade-off Analysis:**
|
|
40
|
-
- ✅ Library functionality: Fully restored
|
|
41
|
-
- ✅ CI/CD builds: Now passing
|
|
42
|
-
- ⚠️ Crash protection: Reduced effectiveness (85% vs 95-98%)
|
|
43
|
-
- ✅ User experience: Seamless, no breaking changes
|
|
44
|
-
|
|
45
|
-
### 2. CI/CD Build System Failures
|
|
46
|
-
|
|
47
|
-
**Problem:** PlatformIO examples failed to build with "TaskScheduler.h: No such file or directory" errors.
|
|
48
|
-
|
|
49
|
-
**Root Cause:**
|
|
50
|
-
- PlatformIO's Library Dependency Finder (LDF) in default "chain" mode doesn't scan nested dependencies when using `lib_extra_dirs`
|
|
51
|
-
- Local library loading doesn't automatically resolve dependencies from `library.json`
|
|
52
|
-
- Examples using `lib_extra_dirs = ../../` couldn't find TaskScheduler during painlessMesh library compilation
|
|
53
|
-
|
|
54
|
-
**Resolution:**
|
|
55
|
-
- Added `lib_ldf_mode = deep+` to all 19 example `platformio.ini` files
|
|
56
|
-
- Enables deep dependency scanning for local library loading
|
|
57
|
-
- Ensures TaskScheduler is found and added to build path
|
|
58
|
-
|
|
59
|
-
**Affected Examples:**
|
|
60
|
-
- alteriom, alteriomImproved, alteriomPhase1, alteriomPhase2, alteriomSensorNode
|
|
61
|
-
- basic, bridge, echoNode, logClient, logServer
|
|
62
|
-
- meshCommandNode, mqttBridge, mqttCommandBridge, mqttStatusBridge, mqttTopologyTest
|
|
63
|
-
- namedMesh, otaReceiver, otaSender, startHere, webServer
|
|
64
|
-
|
|
65
|
-
### 3. Example Include Order Issues
|
|
66
|
-
|
|
67
|
-
**Problem:** Even with LDF fixes, examples failed with std::function conversion errors.
|
|
68
|
-
|
|
69
|
-
**Root Cause:**
|
|
70
|
-
- Examples included `<TaskScheduler.h>` before `painlessTaskOptions.h`
|
|
71
|
-
- TaskScheduler compiled without `_TASK_STD_FUNCTION` defined
|
|
72
|
-
- painlessMesh tried to use lambdas with TaskScheduler configured for raw pointers only
|
|
73
|
-
|
|
74
|
-
**Resolution:**
|
|
75
|
-
```cpp
|
|
76
|
-
// ✅ CORRECT ORDER:
|
|
77
|
-
#include "painlessTaskOptions.h" // 1. Configure TaskScheduler
|
|
78
|
-
#include <TaskScheduler.h> // 2. Compile with std::function support
|
|
79
|
-
#include "painlessMesh.h" // 3. Use lambdas freely
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
**Affected Examples:**
|
|
83
|
-
- alteriomSensorNode
|
|
84
|
-
- alteriomImproved (also added feature build flags)
|
|
85
|
-
- meshCommandNode
|
|
86
|
-
- mqttCommandBridge
|
|
87
|
-
- mqttStatusBridge
|
|
88
|
-
- mqttTopologyTest
|
|
89
|
-
|
|
90
|
-
### 4. alteriomImproved Build Flags
|
|
91
|
-
|
|
92
|
-
**Problem:** Example used validation, metrics, and memory optimization features without enabling them.
|
|
93
|
-
|
|
94
|
-
**Resolution:** Added build flags to `platformio.ini`:
|
|
95
|
-
```ini
|
|
96
|
-
build_flags =
|
|
97
|
-
-DPAINLESSMESH_ENABLE_VALIDATION
|
|
98
|
-
-DPAINLESSMESH_ENABLE_METRICS
|
|
99
|
-
-DPAINLESSMESH_ENABLE_MEMORY_OPTIMIZATION
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
## Technical Details
|
|
103
|
-
|
|
104
|
-
### FreeRTOS Crash Mitigation (Revised)
|
|
105
|
-
|
|
106
|
-
**Current Implementation (v1.7.5):**
|
|
107
|
-
- **Option A Only**: Semaphore timeout increase (10ms → 100ms)
|
|
108
|
-
- **Location**: `src/painlessmesh/mesh.hpp` line 555
|
|
109
|
-
- **Effectiveness**: ~85% crash reduction
|
|
110
|
-
- **Expected Crash Rate**: 5-8% (down from 30-40%)
|
|
111
|
-
|
|
112
|
-
**Disabled Implementation:**
|
|
113
|
-
- **Option B**: Thread-safe scheduler with FreeRTOS queue
|
|
114
|
-
- **Reason**: Incompatible with TaskScheduler v4.0.x architecture
|
|
115
|
-
- **Future Path**: Requires TaskScheduler v4.1+, library fork, or architecture rewrite
|
|
116
|
-
|
|
117
|
-
### painlessTaskOptions.h Configuration
|
|
118
|
-
|
|
119
|
-
**Current Configuration:**
|
|
120
|
-
```cpp
|
|
121
|
-
#define _TASK_PRIORITY // Support for layered scheduling priority
|
|
122
|
-
#define _TASK_STD_FUNCTION // Support for std::function (REQUIRED)
|
|
123
|
-
|
|
124
|
-
// _TASK_THREAD_SAFE DISABLED due to incompatibility with _TASK_STD_FUNCTION
|
|
125
|
-
// in TaskScheduler v4.0.x. See documentation for details.
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
**Documentation Added:**
|
|
129
|
-
- Detailed explanation of incompatibility in `painlessTaskOptions.h`
|
|
130
|
-
- Workaround strategy (semaphore timeout only)
|
|
131
|
-
- Reference to troubleshooting documentation
|
|
132
|
-
|
|
133
|
-
### Build System Configuration
|
|
134
|
-
|
|
135
|
-
**LDF Mode Settings:**
|
|
136
|
-
```ini
|
|
137
|
-
[env]
|
|
138
|
-
lib_ldf_mode = deep+ # Enable deep dependency scanning
|
|
139
|
-
lib_deps =
|
|
140
|
-
bblanchon/ArduinoJson
|
|
141
|
-
arkhipenko/TaskScheduler
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
**Why `deep+`:**
|
|
145
|
-
- Default "chain" mode only scans first-level includes
|
|
146
|
-
- "deep" mode recursively scans all nested includes
|
|
147
|
-
- "+" suffix adds compatibility mode for better C++ template support
|
|
148
|
-
- Essential when using `lib_extra_dirs` for local library loading
|
|
149
|
-
|
|
150
|
-
## Commits Included
|
|
151
|
-
|
|
152
|
-
1. **8869db8** - `fix: Add lib_ldf_mode=deep+ to all example platformio.ini files`
|
|
153
|
-
- Enables deep dependency scanning for 19 examples
|
|
154
|
-
- Fixes LDF not finding TaskScheduler
|
|
155
|
-
|
|
156
|
-
2. **f7ad959** - `fix: Disable _TASK_STD_FUNCTION on ESP32 when using thread-safe mode`
|
|
157
|
-
- Initial attempt to fix TaskScheduler compilation
|
|
158
|
-
- Later discovered this approach breaks painlessMesh
|
|
159
|
-
|
|
160
|
-
3. **6f477a0** - `fix: Revert _TASK_THREAD_SAFE due to TaskScheduler incompatibility`
|
|
161
|
-
- Critical reversion after discovering architectural limitation
|
|
162
|
-
- Documented trade-off and workaround strategy
|
|
163
|
-
|
|
164
|
-
4. **fe17e72** - `fix: Add explicit TaskScheduler.h includes and build flags for CI`
|
|
165
|
-
- Added TaskScheduler includes to trigger LDF
|
|
166
|
-
- Added feature build flags for alteriomImproved
|
|
167
|
-
- Initial include order (incorrect)
|
|
168
|
-
|
|
169
|
-
5. **d8d2ff0** - `fix: Include painlessTaskOptions.h before TaskScheduler.h in examples`
|
|
170
|
-
- Critical fix for include order
|
|
171
|
-
- Ensures TaskScheduler compiles with std::function support
|
|
172
|
-
- Final resolution of CI/CD issues
|
|
173
|
-
|
|
174
|
-
## Testing & Validation
|
|
175
|
-
|
|
176
|
-
### CI/CD Status
|
|
177
|
-
- ✅ All PlatformIO example builds passing
|
|
178
|
-
- ✅ ESP32 compilation successful
|
|
179
|
-
- ✅ ESP8266 compilation successful
|
|
180
|
-
- ✅ Random example testing operational
|
|
181
|
-
- ⚠️ ESP8266 framework warnings (not our code, harmless)
|
|
182
|
-
|
|
183
|
-
### Test Coverage
|
|
184
|
-
- ✅ 710+ unit tests passing (catch2 test suite)
|
|
185
|
-
- ✅ Lambda callback compilation verified
|
|
186
|
-
- ✅ std::function support confirmed
|
|
187
|
-
- ✅ Local library loading functional
|
|
188
|
-
- ✅ Dependency resolution working
|
|
189
|
-
|
|
190
|
-
### Manual Testing Recommended
|
|
191
|
-
- ESP32 sensor node connection stress testing
|
|
192
|
-
- Multiple node mesh topology verification
|
|
193
|
-
- FreeRTOS assertion monitoring
|
|
194
|
-
- Memory usage profiling
|
|
195
|
-
|
|
196
|
-
## Upgrade Guide
|
|
197
|
-
|
|
198
|
-
### From v1.7.4
|
|
199
|
-
|
|
200
|
-
**No code changes required** - this is a compatibility and build system fix.
|
|
201
|
-
|
|
202
|
-
**If you have custom examples using `lib_extra_dirs`:**
|
|
203
|
-
1. Add `lib_ldf_mode = deep+` to your `platformio.ini`
|
|
204
|
-
2. Ensure correct include order:
|
|
205
|
-
```cpp
|
|
206
|
-
#include "painlessTaskOptions.h"
|
|
207
|
-
#include <TaskScheduler.h>
|
|
208
|
-
#include "painlessMesh.h"
|
|
209
|
-
```
|
|
210
|
-
|
|
211
|
-
**If using advanced features (validation, metrics, memory):**
|
|
212
|
-
Add build flags to `platformio.ini`:
|
|
213
|
-
```ini
|
|
214
|
-
build_flags =
|
|
215
|
-
-DPAINLESSMESH_ENABLE_VALIDATION
|
|
216
|
-
-DPAINLESSMESH_ENABLE_METRICS
|
|
217
|
-
-DPAINLESSMESH_ENABLE_MEMORY_OPTIMIZATION
|
|
218
|
-
```
|
|
219
|
-
|
|
220
|
-
### From Earlier Versions
|
|
221
|
-
|
|
222
|
-
Follow standard upgrade procedures:
|
|
223
|
-
- **PlatformIO**: `pio pkg update sparck75/AlteriomPainlessMesh`
|
|
224
|
-
- **NPM**: `npm update @alteriom/painlessmesh`
|
|
225
|
-
- **Arduino IDE**: Library Manager → Update
|
|
226
|
-
|
|
227
|
-
## Known Issues & Limitations
|
|
228
|
-
|
|
229
|
-
### 1. FreeRTOS Crash Protection Reduced
|
|
230
|
-
|
|
231
|
-
**Issue:** ESP32 crash reduction less effective than v1.7.4 goals
|
|
232
|
-
**Severity:** Low (still 85% reduction)
|
|
233
|
-
**Workaround:** None currently
|
|
234
|
-
**Status:** Accepted trade-off for library functionality
|
|
235
|
-
|
|
236
|
-
**Details:**
|
|
237
|
-
- Original goal: 95-98% crash reduction (dual approach)
|
|
238
|
-
- Current achievement: ~85% crash reduction (semaphore timeout only)
|
|
239
|
-
- Crash rate: 5-8% (acceptable for production)
|
|
240
|
-
|
|
241
|
-
### 2. TaskScheduler v4.0.x Limitation
|
|
242
|
-
|
|
243
|
-
**Issue:** Cannot use thread-safe mode with std::function
|
|
244
|
-
**Severity:** Low (workaround implemented)
|
|
245
|
-
**Workaround:** Semaphore timeout increase
|
|
246
|
-
**Status:** Awaiting TaskScheduler v4.1+ or upstream fix
|
|
247
|
-
|
|
248
|
-
**Future Solutions:**
|
|
249
|
-
1. Wait for TaskScheduler v4.1+ with potential fix
|
|
250
|
-
2. Fork TaskScheduler and fix `processRequests()` implementation
|
|
251
|
-
3. Rewrite painlessMesh to use raw function pointers (breaking change)
|
|
252
|
-
4. Implement custom thread-safe queue in painlessMesh
|
|
253
|
-
|
|
254
|
-
### 3. ESP8266 Framework Warnings
|
|
255
|
-
|
|
256
|
-
**Issue:** Python SyntaxWarning in Arduino ESP8266 build tools
|
|
257
|
-
**Severity:** None (cosmetic only)
|
|
258
|
-
**Workaround:** None needed
|
|
259
|
-
**Status:** Ignored (not our code)
|
|
260
|
-
|
|
261
|
-
**Details:**
|
|
262
|
-
```
|
|
263
|
-
SyntaxWarning: invalid escape sequence '\s'
|
|
264
|
-
words = re.split('\s+', line)
|
|
265
|
-
```
|
|
266
|
-
- Occurs in Arduino framework's `elf2bin.py`
|
|
267
|
-
- Does not affect compilation or functionality
|
|
268
|
-
- Does not block Arduino Library Manager
|
|
269
|
-
|
|
270
|
-
## Release Checklist
|
|
271
|
-
|
|
272
|
-
- [x] Version updated in `library.json` (1.7.5)
|
|
273
|
-
- [x] Version updated in `library.properties` (1.7.5)
|
|
274
|
-
- [x] Version updated in `package.json` (1.7.5)
|
|
275
|
-
- [x] CHANGELOG.md updated with detailed changes
|
|
276
|
-
- [x] Release summary created (this document)
|
|
277
|
-
- [x] All version files committed
|
|
278
|
-
- [ ] Git tag v1.7.5 created
|
|
279
|
-
- [ ] GitHub Release published
|
|
280
|
-
- [ ] NPM package published
|
|
281
|
-
- [ ] PlatformIO registry updated
|
|
282
|
-
- [ ] Arduino Library Manager notified (auto-sync)
|
|
283
|
-
|
|
284
|
-
## Post-Release Actions
|
|
285
|
-
|
|
286
|
-
### Immediate (Within 24 hours)
|
|
287
|
-
1. Monitor GitHub issues for compatibility reports
|
|
288
|
-
2. Verify NPM package availability
|
|
289
|
-
3. Confirm PlatformIO registry update
|
|
290
|
-
4. Check Arduino Library Manager auto-sync
|
|
291
|
-
|
|
292
|
-
### Short-term (Within 1 week)
|
|
293
|
-
1. Update documentation website with v1.7.5 notes
|
|
294
|
-
2. Notify community of compatibility fixes
|
|
295
|
-
3. Monitor crash reports from ESP32 deployments
|
|
296
|
-
4. Review TaskScheduler upstream for v4.1+ progress
|
|
297
|
-
|
|
298
|
-
### Long-term
|
|
299
|
-
1. Consider forking TaskScheduler if no upstream fix
|
|
300
|
-
2. Evaluate alternative task schedulers
|
|
301
|
-
3. Research custom thread-safe implementation
|
|
302
|
-
4. Plan potential v1.8.0 with improved FreeRTOS handling
|
|
303
|
-
|
|
304
|
-
## Documentation References
|
|
305
|
-
|
|
306
|
-
- [CHANGELOG.md](../../CHANGELOG.md) - Full version history
|
|
307
|
-
- [SENSOR_NODE_CONNECTION_CRASH.md](../troubleshooting/SENSOR_NODE_CONNECTION_CRASH.md) - FreeRTOS crash troubleshooting
|
|
308
|
-
- [painlessTaskOptions.h](../../src/painlessTaskOptions.h) - TaskScheduler configuration
|
|
309
|
-
- [GitHub Release v1.7.5](https://github.com/Alteriom/painlessMesh/releases/tag/v1.7.5) - Release page (pending)
|
|
310
|
-
|
|
311
|
-
## Support & Feedback
|
|
312
|
-
|
|
313
|
-
**GitHub Issues:** https://github.com/Alteriom/painlessMesh/issues
|
|
314
|
-
**Discussions:** https://github.com/Alteriom/painlessMesh/discussions
|
|
315
|
-
**Email:** (Maintainer contact if available)
|
|
316
|
-
|
|
317
|
-
---
|
|
318
|
-
|
|
319
|
-
**Release Manager:** Alteriom
|
|
320
|
-
**Release Date:** October 19, 2025
|
|
321
|
-
**Build Status:** ✅ Passing
|
|
322
|
-
**Test Status:** ✅ 710+ tests passing
|