Conversation
ConfigSerializer.cpp calls atoi/atol/atof and reaches them through Arduino.h on MCU targets, but not in the host `native` googletest build. On macOS the whole suite fails to compile at ConfigSerializer.o, taking every unit test down with it. Include <stdlib.h>. LocationProvider::sendSentence() was declared virtual but never defined anywhere in the tree. It was the class's key function under the Itanium ABI, so the base vtable is un-emittable: any translation unit that emits it gets an undefined reference. Every current subclass overrides it, which is why no build has failed yet. Give it an empty default body, matching the no-op override in EnvironmentSensorManager.cpp. This is a latent hazard, not a host-test-build failure -- the native env compiles neither this header nor its users. CustomLLCC68Wrapper::doResetAGC() calls sx126xResetAGC() with one argument; the only overload takes (SX126x*, bool rx_boost_gain). No environment in the tree compiles this wrapper yet, which is why nothing has failed, but the first board to use it will not build. Pass getRxBoostedGainMode(), as the SX1262, SX1268 and STM32WLx wrappers do.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Three one-line fixes of the same kind — code that does not compile or link somewhere — kept together because splitting them further would be three trivial PRs.
ConfigSerializer.cppdoes not compile in the host test build. It callsatoi/atol/atofand reaches them throughArduino.hon MCU targets, but not in thenativegoogletest environment. On macOS the whole suite fails to compile atConfigSerializer.o, taking every unit test down with it. Include<stdlib.h>.LocationProvider::sendSentence()is declared but never defined. It was the class's key function under the Itanium ABI, so the base vtable is un-emittable and any translation unit that emits it gets an undefined reference. Every current subclass overrides it, which is why no build has failed yet. Give it an empty default body, matching the no-op override inEnvironmentSensorManager.cpp. This is a latent hazard, not the host-test-build failure above — thenativeenv compiles neither this header nor its users.CustomLLCC68Wrapper::doResetAGC()does not compile. It callssx126xResetAGC()with one argument; the only overload takes(SX126x*, bool rx_boost_gain). No environment in the tree compiles this wrapper yet, but the first board to use it will not build. PassgetRxBoostedGainMode(), as the SX1262, SX1268 and STM32WLx wrappers do.How it was tested
pio test -e native: all suites pass on macOS (before the<stdlib.h>fix none of them compile there).meshnology_w12_repeater(ESP32-S3).Dependencies
Independent. Applies to
dev.The same
<stdlib.h>include is also carried in a PR against thel5yth/meshcore-linuxfork, which needs it for its own host build; whichever lands first makes the other's hunk a no-op.