Add optional addressBook output to begin() to capture discovered ROM addresses#292
Open
blah188 wants to merge 1 commit into
Open
Add optional addressBook output to begin() to capture discovered ROM addresses#292blah188 wants to merge 1 commit into
blah188 wants to merge 1 commit into
Conversation
begin() already enumerates the bus but drops the ROM addresses it finds. Callers that need the addresses must run a second SearchROM via getAddress(), which can fail intermittently on long or marginal 1-Wire buses even though begin()'s own search just succeeded. Add two optional, defaulted parameters so begin() can copy each valid ROM found during enumeration into a caller-provided buffer (in discovery order, up to maxDeviceCount). Fully backward compatible: with no arguments begin() behaves exactly as before.
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.
Motivation
begin()already enumerates the bus (it searches and counts devices), but the discovered ROM addresses are dropped — they live only in a local variable. Callers that need the addresses must callgetAddress(addr, index)afterwards, which runs a second SearchROM pass. On long or electrically marginal 1-Wire buses that second pass can intermittently fail (returns a zero / CRC-invalid ROM) even thoughbegin()'s own search just succeeded — so a device that was counted can't be addressed.Change
Add two optional, defaulted parameters:
When
addressBookis provided, each valid ROM found during enumeration is copied into it (in discovery order, up tomaxDeviceCount). This lets the caller reuse the addresses captured by the search that already ran, instead of re-discovering them with a second, less reliable search pass.Backward compatibility
Fully backward compatible — with no arguments
begin()behaves exactly as before (nothing is written). No change to any existing call site or behavior.Example