live_capture.py and dump_pcap.py were untracked files inside the third-party its-g5-receiver-firmware checkout, so the tools every on-air measurement depends on were versioned nowhere and would vanish with a fresh clone of that project. They are ours rather than that project's, so they now live in capture/, with the setup notes rewritten as its README: which port the sniffer speaks on and why, how to capture, how to check a capture, and how to flash the sniffer board. live_capture.py carries the fix made on 2026-09-14. The sniffer's console converts LF to CRLF on its way out, and that applies to every 0x0a byte of the binary pcap stream, not only to log text, so every inserted CR shifts the rest of the stream. A 787 KB capture parsed cleanly for only 82 of about 2000 records, and DENMs turned up on nonsense BTP ports because their payloads carry 0x0a often. undo_crlf() reverses it on the raw stream before any framing, which is exact; afterwards a capture parsed to EOF and DENMs read as port 2002. Captures taken before that date are truncated at their first corrupted record, so anything measured from them is worth re-checking. capture/recordings/ is gitignored, since captures are data rather than source. The host tests now read both that directory and the older one in the receiver checkout, so no capture has to be moved while it is being written. dump_pcap.py reads the same console and still needs the same treatment; that is recorded in TODO.md.
52 lines
1.5 KiB
Plaintext
52 lines
1.5 KiB
Plaintext
*.iml
|
|
.gradle/
|
|
/local.properties
|
|
/.idea/caches
|
|
/.idea/libraries
|
|
/.idea/modules.xml
|
|
/.idea/workspace.xml
|
|
/.idea/navEditor.xml
|
|
/.idea/assetWizardSettings.xml
|
|
.DS_Store
|
|
build/
|
|
captures/
|
|
.externalNativeBuild
|
|
.cxx
|
|
local.properties
|
|
*.hprof
|
|
*.jks
|
|
*.keystore
|
|
secrets.properties
|
|
|
|
# --- local IDE state, not project configuration -------------------------------
|
|
# Which device you last deployed to, your emulator list, and Studio's assistant
|
|
# settings are per-machine. deploymentTargetSelector.xml in particular rewrites
|
|
# itself on every run, so tracking it means a dirty tree after every deploy.
|
|
/.idea/deploymentTargetSelector.xml
|
|
/.idea/deviceManager.xml
|
|
/.idea/appInsightsSettings.xml
|
|
/.idea/studiobot.xml
|
|
|
|
# Python bytecode caches, e.g. from importing obu-firmware/test/host/check_replay.py.
|
|
__pycache__/
|
|
|
|
# ESP-IDF rewrites sdkconfig on every build and keeps the previous one here.
|
|
# sdkconfig.defaults is the real, intentional configuration; these two are output.
|
|
sdkconfig.old
|
|
|
|
# Claude Code local settings (permissions, per-machine). The skills alongside it
|
|
# are project knowledge and may be committed deliberately.
|
|
.claude/settings.local.json
|
|
|
|
# Third-party working copies kept beside the project, not part of it. The ASN.1
|
|
# modules this project actually needs are vendored under asn1/ instead.
|
|
/C-ITS-Parser/
|
|
/vanetza/
|
|
|
|
# Office lock files. Word/Excel create these beside a document while it is open
|
|
# and remove them on close, so they are transient and machine-local.
|
|
~$*
|
|
|
|
# Captures are large data files, not source (see capture/README.md).
|
|
/capture/recordings/
|