docs(echo): mention that GapCentral Device Discovery does not filter for duplicates - #1288
Conversation
Dependency ReviewThe following issues were found:
Snapshot WarningsConsider enabling retry-on-snapshot-warnings. See the documentation for more information and troubleshooting advice. License Issuesosal/freertos/CMakeLists.txt
external/crypto/tiny-aes128/CMakeLists.txt
external/args/CMakeLists.txt
external/segger_rtt/CMakeLists.txt
external/crypto/mbedtls/CMakeLists.txt
external/protobuf/CMakeLists.txt
external/crypto/micro-ecc/CMakeLists.txt
osal/threadx/CMakeLists.txt
infra/syntax/CMakeLists.txt
cmake/emil_test_helpers.cmake
lwip/lwip/CMakeLists.txt
OpenSSF ScorecardScorecard details
Scanned Files
|
There was a problem hiding this comment.
Pull request overview
Updates the BLE GAP Echo/Proto API documentation to clarify how GapCentral device discovery reports results to clients, aiming to make the behavior predictable for downstream consumers.
Changes:
- Refines the
StartDeviceDiscoverydocumentation to describe reporting behavior in terms of advertising reports (not just “devices”). - Adjusts the recommendation text around using
DeviceDiscoveryFilterto reduce risk of dropped discovery events under high discovery volume.
✅
|
| Descriptor | Linter | Files | Fixed | Errors | Warnings | Elapsed time |
|---|---|---|---|---|---|---|
| ✅ ACTION | actionlint | 11 | 0 | 0 | 0.37s | |
| ✅ ACTION | zizmor | 11 | 0 | 0 | 0 | 4.11s |
| ✅ CPP | clang-format | 1098 | 8 | 0 | 0 | 10.74s |
| ✅ DOCKERFILE | hadolint | 2 | 0 | 0 | 0.31s | |
| ✅ JSON | jsonlint | 7 | 0 | 0 | 0.37s | |
| ✅ JSON | prettier | 7 | 0 | 0 | 0 | 0.51s |
| markdownlint | 8 | 0 | 5 | 0 | 1.32s | |
| ✅ MARKDOWN | markdown-table-formatter | 8 | 0 | 0 | 0 | 0.31s |
| betterleaks | yes | 1 | 5 | 1.48s | ||
| ✅ REPOSITORY | checkov | yes | no | no | 35.89s | |
| ✅ REPOSITORY | git_diff | yes | no | no | 0.08s | |
| ✅ REPOSITORY | grype | yes | no | no | 69.54s | |
| ✅ REPOSITORY | ls-lint | yes | no | no | 0.05s | |
| ✅ REPOSITORY | osv-scanner | yes | no | no | 0.54s | |
| ✅ REPOSITORY | secretlint | yes | no | no | 15.72s | |
| ✅ REPOSITORY | syft | yes | no | no | 3.19s | |
| ✅ REPOSITORY | trivy | yes | no | no | 12.45s | |
| ✅ REPOSITORY | trivy-sbom | yes | no | no | 0.26s | |
| ✅ REPOSITORY | trufflehog | yes | no | no | 6.45s | |
| lychee | 140 | 1 | 0 | 114.68s | ||
| prettier | 21 | 1 | 1 | 0 | 0.59s | |
| ✅ YAML | v8r | 21 | 0 | 0 | 9.91s | |
| ✅ YAML | yamllint | 21 | 0 | 0 | 0.61s |
Detailed Issues
⚠️ REPOSITORY / betterleaks - 1 error
warning: generic-api-key has detected secret for file external/crypto/tiny-aes128/TinyAes.c.
┌─ external/crypto/tiny-aes128/TinyAes.c:17:4
│
17 │ key:
│ ╭────^
18 │ │ 2b7e151628aed2a6abf7158809cf4f3c
│ ╰────────────────────────────────────^
warning: generic-api-key has detected secret for file services/network/WebSocket.cpp.
┌─ services/network/WebSocket.cpp:81:50
│
81 │ headers.push_back(services::HttpHeader("Sec-Websocket-Key", "AQIDBAUGBbgJCgsMDQ4PEC=="));
│ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: private-key has detected secret for file services/network/CertificatesMbedTls.cpp.
┌─ services/network/CertificatesMbedTls.cpp:125:21
│
125 │ stream << "HIDDEN_BY_MEGALINTER\r\n";
│ ╰────────────────────────────────────────────────^
warning: private-key has detected secret for file services/network/test_doubles/Certificates.cpp.
┌─ services/network/test_doubles/Certificates.cpp:56:15
│
56 │ "HIDDEN_BY_MEGALINTER\r\n";
│ ╰──────────────────────────────────────────^
warning: private-key has detected secret for file services/network/test_doubles/Certificates.cpp.
┌─ services/network/test_doubles/Certificates.cpp:108:15
│
108 │ "HIDDEN_BY_MEGALINTER\r\n";
│ ╰──────────────────────────────────────────^
warning: 5 warnings emitted
⚠️ SPELL / lychee - 1 error
📝 Summary
---------------------
🔍 Total..........697
🔗 Unique.........661
✅ Successful.....691
⏳ Timeouts.........0
🔀 Redirected.....310
👻 Excluded.........5
❓ Unknown..........0
🚫 Errors...........1
⛔ Unsupported......1
Errors in external/protoc/CMakeLists.txt
[404] https://github.com/protocolbuffers/protobuf/releases/download/v$%7Bprotobuf_tag%7D/protoc-$%7Bprotobuf_version%7D-$%7Bos_postfix%7D.zip (at 18:13) | Rejected status code: 404 Not Found
Hint: Followed 310 redirects. You might want to consider replacing redirecting URLs with the resolved URLs. Use verbose mode (`-v`/`-vv`) to see redirection details.
Hint: You can configure accepted/rejected response codes with `-a` or `--accept`
⚠️ MARKDOWN / markdownlint - 5 errors
.github/instructions/microtest.instructions.md:7 error MD041/first-line-heading/first-line-h1 First line in a file should be a top-level heading [Context: "## Google Test Suite Coding Ru..."]
external/crypto/tiny-aes128/README.md:1 error MD041/first-line-heading/first-line-h1 First line in a file should be a top-level heading [Context: "### Tiny AES128 in C"]
external/crypto/tiny-aes128/README.md:29 error MD046/code-block-style Code block style [Expected: fenced; Actual: indented]
external/crypto/tiny-aes128/README.md:39 error MD046/code-block-style Code block style [Expected: fenced; Actual: indented]
external/crypto/tiny-aes128/README.md:49 error MD046/code-block-style Code block style [Expected: fenced; Actual: indented]
⚠️ YAML / prettier - 1 error
[error] Explicitly specified pattern "documents/modules/ROOT/examples/clangformat.yaml" is a symbolic link.
.clusterfuzzlite/project.yaml 38ms (unchanged)
.github/dependabot.yml 14ms (unchanged)
.github/workflows/ci.yml 64ms (unchanged)
.github/workflows/dependency-scanner.yml 9ms (unchanged)
.github/workflows/documentation.yml 11ms (unchanged)
.github/workflows/fuzzing-batch.yml 6ms (unchanged)
.github/workflows/fuzzing-cron.yml 6ms (unchanged)
.github/workflows/fuzzing-pr.yml 7ms (unchanged)
.github/workflows/linting-formatting.yml 18ms (unchanged)
.github/workflows/release-please.yml 8ms (unchanged)
.github/workflows/security.yml 5ms (unchanged)
.github/workflows/static-analysis.yml 14ms (unchanged)
.github/workflows/validate-pr.yml 16ms (unchanged)
.ls-lint.yml 3ms
.mega-linter.yml 3ms (unchanged)
antora-playbook-branch.yml 4ms (unchanged)
antora-playbook-site.yml 3ms (unchanged)
documents/antora.yml 2ms (unchanged)
documents/supplemental-ui/ui.yml 1ms (unchanged)
mull.yml 2ms (unchanged)
Notices
📣 MegaLinter 9.5.0 is out! Discover the new features and security recommendations in the release announcement. (Skip this info by defining SECURITY_SUGGESTIONS: false)
See detailed reports in MegaLinter artifacts
Your project could benefit from a custom flavor, which would allow you to run only the linters you need, and thus improve runtime performances. (Skip this info by defining FLAVOR_SUGGESTIONS: false)
- Documentation: Custom Flavors
- Command:
npx mega-linter-runner@9.6.0 --custom-flavor-setup --custom-flavor-linters ACTION_ACTIONLINT,ACTION_ZIZMOR,CPP_CLANG_FORMAT,DOCKERFILE_HADOLINT,JSON_JSONLINT,JSON_PRETTIER,MARKDOWN_MARKDOWNLINT,MARKDOWN_MARKDOWN_TABLE_FORMATTER,REPOSITORY_CHECKOV,REPOSITORY_GIT_DIFF,REPOSITORY_BETTERLEAKS,REPOSITORY_GRYPE,REPOSITORY_LS_LINT,REPOSITORY_OSV_SCANNER,REPOSITORY_SECRETLINT,REPOSITORY_SYFT,REPOSITORY_TRIVY,REPOSITORY_TRIVY_SBOM,REPOSITORY_TRUFFLEHOG,SPELL_LYCHEE,YAML_PRETTIER,YAML_YAMLLINT,YAML_V8R

Show us your support by starring ⭐ the repository
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 1 out of 1 changed files in this pull request and generated no new comments.
Comments suppressed due to low confidence (1)
services/ble/Gap.proto:499
- The updated comment still doesn’t explicitly state that duplicate advertising reports for the same device may be emitted (as described in the PR title/description). Also, “will be reported” is too strong given the next line says reports might be dropped under load.
// Each advertising report that matches the filter will be reported via GapCentralResponse.DeviceDiscovered.
// It's recommended to add a DeviceDiscoveryFilter, otherwise reports might be dropped due to too many devices being found.
|



This is important information for customers using this interface, and was previously dependent on the implementation. Currently, all our supported centrals will behave like this, once this code reaches our upstream controllers.