Fix excluded modules configuration handling - #7838
Conversation
- Add excluded_modules flags in getDeviceMetadata() for MQTT, PAXCOUNTER, STOREFORWARD, RANGETEST, NEIGHBORINFO - Add conditional compilation guards in AdminModule for RANGETEST, AUDIO, PAXCOUNTER, STOREFORWARD, EXTNOTIF, DETECTIONSENSOR, AMBIENTLIGHTING - Add skip logic in PhoneAPI for excluded modules during config enumeration - Add conditional has_* flags in NodeDB only for included modules Fixes issue where excluded modules still appeared in client applications and sometimes caused PAYLOADVARIANT_NOT_SET errors.
|
@thebentern, Hi :) Please, re-run |
|
Thanks for your comprehensive work :) |
There was a problem hiding this comment.
Pull Request Overview
This PR fixes issues where excluded modules were still appearing in client applications and causing configuration errors. The changes add comprehensive conditional compilation guards to prevent excluded modules from being exposed through the device API.
- Adds conditional compilation guards around module configuration handling
- Updates device metadata to properly flag excluded modules
- Implements skip logic for excluded modules during API enumeration
Reviewed Changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
| src/modules/AdminModule.cpp | Added conditional guards for module config requests to prevent responses for excluded modules |
| src/mesh/PhoneAPI.cpp | Added skip logic to prevent excluded modules from being enumerated in phone API responses |
| src/mesh/NodeDB.cpp | Added conditional has_* flags only for included modules in default config installation |
| src/main.cpp | Added excluded module flags for MQTT, PAXCOUNTER, STOREFORWARD, RANGETEST, and NEIGHBORINFO in device metadata |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
- Restore original PAXCOUNTER logic: only exclude on non-ESP32 platforms due to memory constraints - Fix has_store_forward flag to be conditionally compiled based on MESHTASTIC_EXCLUDE_STOREFORWARD - Refactor PhoneAPI module config skipping logic to use helper function skipExcludedModuleConfig() - Reduce code duplication in PhoneAPI by extracting common skip logic This addresses the three issues identified in the code review: 1. PAXCOUNTER memory impact on non-ESP32 devices 2. Unconditional has_store_forward flag setting 3. Duplicated state management logic across multiple #else blocks
- Add conditional compilation guards for ambient lighting in PhoneAPI.cpp - Replace old HAS_RGB_LED logic with MESHTASTIC_EXCLUDE_AMBIENTLIGHTING check in AdminModule.cpp - Ensure ambient lighting module is properly excluded when MESHTASTIC_EXCLUDE_AMBIENTLIGHTING=1
|
@fifieldt |
This reverts commit 9c6544e.
|
@thebentern |
* Fix excluded modules configuration handling - Add excluded_modules flags in getDeviceMetadata() for MQTT, PAXCOUNTER, STOREFORWARD, RANGETEST, NEIGHBORINFO - Add conditional compilation guards in AdminModule for RANGETEST, AUDIO, PAXCOUNTER, STOREFORWARD, EXTNOTIF, DETECTIONSENSOR, AMBIENTLIGHTING - Add skip logic in PhoneAPI for excluded modules during config enumeration - Add conditional has_* flags in NodeDB only for included modules Fixes issue where excluded modules still appeared in client applications and sometimes caused PAYLOADVARIANT_NOT_SET errors. * Fix excluded modules issues and refactor code - Restore original PAXCOUNTER logic: only exclude on non-ESP32 platforms due to memory constraints - Fix has_store_forward flag to be conditionally compiled based on MESHTASTIC_EXCLUDE_STOREFORWARD - Refactor PhoneAPI module config skipping logic to use helper function skipExcludedModuleConfig() - Reduce code duplication in PhoneAPI by extracting common skip logic This addresses the three issues identified in the code review: 1. PAXCOUNTER memory impact on non-ESP32 devices 2. Unconditional has_store_forward flag setting 3. Duplicated state management logic across multiple #else blocks * Fix ambient lighting module exclusion in PhoneAPI and AdminModule - Add conditional compilation guards for ambient lighting in PhoneAPI.cpp - Replace old HAS_RGB_LED logic with MESHTASTIC_EXCLUDE_AMBIENTLIGHTING check in AdminModule.cpp - Ensure ambient lighting module is properly excluded when MESHTASTIC_EXCLUDE_AMBIENTLIGHTING=1
This reverts commit 8e8f0e9.
* Fix excluded modules configuration handling - Add excluded_modules flags in getDeviceMetadata() for MQTT, PAXCOUNTER, STOREFORWARD, RANGETEST, NEIGHBORINFO - Add conditional compilation guards in AdminModule for RANGETEST, AUDIO, PAXCOUNTER, STOREFORWARD, EXTNOTIF, DETECTIONSENSOR, AMBIENTLIGHTING - Add skip logic in PhoneAPI for excluded modules during config enumeration - Add conditional has_* flags in NodeDB only for included modules Fixes issue where excluded modules still appeared in client applications and sometimes caused PAYLOADVARIANT_NOT_SET errors. * Fix excluded modules issues and refactor code - Restore original PAXCOUNTER logic: only exclude on non-ESP32 platforms due to memory constraints - Fix has_store_forward flag to be conditionally compiled based on MESHTASTIC_EXCLUDE_STOREFORWARD - Refactor PhoneAPI module config skipping logic to use helper function skipExcludedModuleConfig() - Reduce code duplication in PhoneAPI by extracting common skip logic This addresses the three issues identified in the code review: 1. PAXCOUNTER memory impact on non-ESP32 devices 2. Unconditional has_store_forward flag setting 3. Duplicated state management logic across multiple #else blocks * Fix ambient lighting module exclusion in PhoneAPI and AdminModule - Add conditional compilation guards for ambient lighting in PhoneAPI.cpp - Replace old HAS_RGB_LED logic with MESHTASTIC_EXCLUDE_AMBIENTLIGHTING check in AdminModule.cpp - Ensure ambient lighting module is properly excluded when MESHTASTIC_EXCLUDE_AMBIENTLIGHTING=1
This reverts commit 9c6544e.

Fix excluded modules appearing in client applications
🐛 Problem
When modules are excluded via
MESHTASTIC_EXCLUDE_*flags during compilation, two issues occurred:PAYLOADVARIANT_NOT_SETerrors💡 Solution
Added comprehensive conditional compilation guards to prevent excluded modules from:
getDeviceMetadata()handleGetModuleConfig()getFromRadio()installDefaultModuleConfig()🎯 Changes
src/main.cpp: Added excluded_modules flags forMQTT,PAXCOUNTER,STOREFORWARD,RANGETEST,NEIGHBORINFOsrc/modules/AdminModule.cpp: Added conditional guards forRANGETEST,AUDIO,PAXCOUNTER,STOREFORWARD,EXTNOTIF,DETECTIONSENSOR,AMBIENTLIGHTINGsrc/mesh/PhoneAPI.cpp: Added skip logic for excluded modules during config enumerationsrc/mesh/NodeDB.cpp: Added conditional has_* flags only for included modulesTesting
Tested with various
MESHTASTIC_EXCLUDE_*combinations to verify excluded modules no longer appear in client apps and don't generate payload variant errors.🤝 Attestations