Add optional SD-backed offline OUI labels - #1436
Conversation
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## develop #1436 +/- ##
==========================================
+ Coverage 0.40% 2.16% +1.76%
==========================================
Files 20 24 +4
Lines 17176 17662 +486
Branches 11 52 +41
==========================================
+ Hits 69 382 +313
- Misses 17103 17266 +163
- Partials 4 14 +10
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Pull request overview
Adds an optional, SD-backed offline OUI (IEEE MAC prefix) label system so AP/station UI can display vendor/local/unknown classifications without changing scan/capture/log formats, plus tooling to build a deterministic binary OUI database.
Changes:
- Introduces a deterministic OUI database builder (
tools/build_oui_database.py), documentation, and synthetic unit tests. - Adds a native (Unity) test suite for the OUI lookup implementation.
- Integrates SD-backed OUI label rendering into AP info and station menu labels behind
HAS_OUI_LABELS.
Reviewed changes
Copilot reviewed 12 out of 13 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| tools/test_build_oui_database.py | Adds synthetic, network-free Python unit tests for the database builder and CLI behavior. |
| tools/OUI_DATABASE.md | Documents database provenance/licensing, usage, and the binary format. |
| tools/build_oui_database.py | Implements deterministic conversion from IEEE CSV registries into a compact binary OUI database, with optional explicit download mode. |
| test/test_oui_lookup/test_main.cpp | Adds Unity native tests covering database parsing, lookup behavior, and error handling. |
| platformio.ini | Updates the native test build filter to compile the OUI lookup implementation for the new tests. |
| esp32_marauder/WiFiScan.cpp | Displays OUI identity labels in AP detail output when HAS_OUI_LABELS is enabled. |
| esp32_marauder/MenuFunctions.cpp | Adds compact station menu labels using SD-backed OUI identification when enabled. |
| esp32_marauder/MarauderOuiSd.h | Introduces the SD-backed OUI database wrapper API and label helper declarations. |
| esp32_marauder/MarauderOuiSd.cpp | Implements SD-backed database open/read/lookup and label formatting. |
| esp32_marauder/MarauderOui.h | Introduces the core OUI database reader interface, classification enums, and lookup APIs. |
| esp32_marauder/MarauderOui.cpp | Implements header validation and longest-prefix binary search lookups over the compact database. |
| esp32_marauder/configs.h | Enables HAS_OUI_LABELS for a specific config block (alongside SD). |
| .gitignore | Ignores the generated marauder_oui.bin database artifact. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 12 out of 13 changed files in this pull request and generated no new comments.
Suppressed comments (1)
tools/build_oui_database.py:154
character.isspace()already catches U+0020 space, so theelif codepoint == 0x20branch is unreachable. Keeping dead code makes the normalization logic harder to reason about and maintain.
if 0x21 <= codepoint <= 0x7E:
output.append(character)
elif codepoint == 0x20:
output.append(" ")
else:
Summary
BrandseparateTesting
Brand, unique station/clone labels, reboot persistence, and unchanged unrelated SD files.