Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
79 commits
Select commit Hold shift + click to select a range
c646efc
Added helper func to obey --quiet.
adamshapiro0 Apr 10, 2026
03fe891
Cleaned up --log-timestamp-source handling.
adamshapiro0 Apr 10, 2026
d2b5d7b
Allow ~/ in file descriptors.
adamshapiro0 Apr 10, 2026
0986f60
Print "writing output" for all output types.
adamshapiro0 Apr 10, 2026
8ff6e55
Allow app to specify data mode default value.
adamshapiro0 Apr 13, 2026
7629b54
Allow empty message types set in print_message().
adamshapiro0 Apr 13, 2026
4c7cf0a
wip! Refactored p1_capture to include filtering capabilities.
adamshapiro0 Apr 13, 2026
550d366
Added FileTransport is_stdin/out helpers.
adamshapiro0 Apr 22, 2026
b2d658e
Separated status and summary displays, and added log file info.
adamshapiro0 Apr 22, 2026
a9296a8
Added is_possible_log_pattern() helper function.
adamshapiro0 Apr 22, 2026
717e8fc
Added option to define log search options without "log" option.
adamshapiro0 Apr 22, 2026
6ce7ffb
Added log search support to p1_capture.
adamshapiro0 Apr 22, 2026
62b5f0d
Use _logger.error(), not print().
adamshapiro0 Apr 22, 2026
a085e08
Organized p1_capture into a class for easier maintenance.
adamshapiro0 Apr 22, 2026
56650bd
Separate FE message handling.
adamshapiro0 Apr 22, 2026
2a65027
Cleaned up time range printout.
adamshapiro0 Apr 22, 2026
b24cf9e
Don't clear the terminal when reading files.
adamshapiro0 Apr 22, 2026
f426c8b
Added --skip and --max options.
adamshapiro0 Apr 22, 2026
7b40e83
Apply filters to --max.
adamshapiro0 Apr 22, 2026
a5457e2
Formatting cleanup.
adamshapiro0 Apr 22, 2026
a47694d
Added source ID filter.
adamshapiro0 Apr 22, 2026
b4123e2
Moved filtering to its own function.
adamshapiro0 Apr 22, 2026
0605bee
Flipped _apply_filters() logic to simplify the function.
adamshapiro0 Apr 22, 2026
2b65620
Added TimeRange.in_range_ended().
adamshapiro0 Apr 22, 2026
aa20a11
Added time range filtering.
adamshapiro0 Apr 22, 2026
4141fe3
Fixed unnecessary timestamp_ns conversion.
adamshapiro0 Apr 22, 2026
53068d0
Treat empty source IDs set as inclusive.
adamshapiro0 Apr 22, 2026
9027970
Use MixedLogReader for faster indexed reads when reading from a file.
adamshapiro0 Apr 22, 2026
ffb47ab
Ignore claude settings.
adamshapiro0 Apr 22, 2026
5888152
Added p1_capture unit tests.
adamshapiro0 Apr 22, 2026
6986b13
Updated usage examples.
adamshapiro0 Apr 22, 2026
f202b6e
Apply filters before evaluating --skip.
adamshapiro0 Apr 22, 2026
211658b
Print the message offsets.
adamshapiro0 Apr 22, 2026
89cb81b
wip! Added tests for known bugs.
adamshapiro0 Apr 22, 2026
9ee845b
Fixed file index nan handling when end time is out of range.
adamshapiro0 Apr 22, 2026
f6c1b63
Added FileIndex [] operator hint support.
adamshapiro0 Apr 22, 2026
92e32d3
Fixed redundant MixedLogReader indexing on construction.
adamshapiro0 Apr 22, 2026
1607ff8
Added message type invert support to MixedLogReader and FileIndex.
adamshapiro0 Apr 22, 2026
d1cea57
Fixed p1_capture log reader usage when --invert is specified.
adamshapiro0 Apr 22, 2026
4b6a545
Made p1_filter and p1_print aliases for unified p1_capture.
adamshapiro0 Apr 22, 2026
def01ed
Removed redundant print.
adamshapiro0 Apr 22, 2026
416a3fe
Default to stdin.
adamshapiro0 Apr 22, 2026
0bb1182
Added quiet alias.
adamshapiro0 Apr 22, 2026
df9b1d0
Disable log loading prints in quiet mode.
adamshapiro0 Apr 22, 2026
0115c1c
Removed redundant time extraction.
adamshapiro0 Apr 22, 2026
4912e81
Fixed handling for unrecognized message types.
adamshapiro0 Apr 22, 2026
227b873
Allow unrecognized ints in FileIndex.get_message_types().
adamshapiro0 Apr 22, 2026
b611083
Print exception stacktraces if debug is enabled.
adamshapiro0 Apr 22, 2026
0c96e97
Added mixed binary->FE example.
adamshapiro0 Apr 22, 2026
9bb2c67
Removed unused imports.
adamshapiro0 Apr 22, 2026
2646ccb
Minor review cleanup.
adamshapiro0 Apr 22, 2026
aeeeca6
Added type hints.
adamshapiro0 Apr 23, 2026
cbea518
Formatting cleanup.
adamshapiro0 Apr 23, 2026
554ad04
Cleaned up _print().
adamshapiro0 Apr 23, 2026
20f8247
Fixed stack trace debug prints.
adamshapiro0 Apr 23, 2026
b255ccc
Documented functions.
adamshapiro0 Apr 23, 2026
5ba9683
Fixed pattern match multiple options error printout.
adamshapiro0 Apr 23, 2026
eb704af
Fixed prefixed pattern match when specifying something in the middle.
adamshapiro0 Apr 23, 2026
ce8d0b8
Check if the user set --unwrap and didn't specify a data type.
adamshapiro0 Apr 23, 2026
74cec0b
Improved input wrapper inclusion explanation.
adamshapiro0 Apr 23, 2026
043e440
Corrected --message-type documentation.
adamshapiro0 Apr 23, 2026
fa23573
Print options for --wrapped-data-type.
adamshapiro0 Apr 23, 2026
46f18c1
Take a data type as an arg for --unwrap.
adamshapiro0 Apr 23, 2026
4e2febb
Fixed InputDataWrapper packing.
adamshapiro0 Apr 23, 2026
7661970
Fixed --unwrap mode.
adamshapiro0 Apr 23, 2026
34b8253
Added allow_multiple option to find_matching_values().
adamshapiro0 Apr 23, 2026
dc61142
Don't allow multiple types for --unwrap.
adamshapiro0 Apr 23, 2026
1242999
Removed line break after input open.
adamshapiro0 Apr 23, 2026
ab9e33a
Don't warn about unrecognized FE messages.
adamshapiro0 Apr 23, 2026
a930887
Changed find_matching_values() definition to on_unrecognized string.
adamshapiro0 Apr 23, 2026
14709dd
Allow any integer for --wrapped-data-type and --unwrap.
adamshapiro0 Apr 23, 2026
deeba0e
Cache pip requirements for github action.
adamshapiro0 Apr 23, 2026
6757ffb
Install clang-format for signal defs unit tests.
adamshapiro0 Apr 23, 2026
11de3c3
Disable dist build/artifact upload when running with act.
adamshapiro0 Apr 23, 2026
60c862b
Disable pip caching for local act runs.
adamshapiro0 Apr 23, 2026
b5287b6
Test multiple python versions.
adamshapiro0 Apr 23, 2026
9434fa9
Fixed Python 3.8/3.9 type hint compatibility issues.
adamshapiro0 Apr 23, 2026
a85d27c
Updated setup-python to fix 400 error.
adamshapiro0 Apr 23, 2026
fc766bb
Removed unused import.
adamshapiro0 Apr 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 22 additions & 6 deletions .github/workflows/release_build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -318,6 +318,7 @@ jobs:
gzip fusion-engine-client-docs.tar

- name: Upload Artifact
if: ${{ !env.ACT }}
uses: actions/upload-artifact@v4
with:
name: fusion-engine-client-docs.tar.gz
Expand All @@ -327,36 +328,51 @@ jobs:
test_python:
name: Python Unit Tests
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13']
defaults:
run:
working-directory: python
steps:
- uses: actions/checkout@v2

- name: Setup Python
uses: actions/setup-python@v2
if: ${{ !env.ACT }}
uses: actions/setup-python@v5
with:
python-version: '3.x'
python-version: ${{ matrix.python-version }}
cache: 'pip'
cache-dependency-path: |
python/requirements.txt
python/requirements-dev.txt

- name: Setup Python (local)
if: ${{ env.ACT }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}

- name: Install Python Requirements
run: |
pip install -r requirements.txt
pip install pytest
pip install -r requirements.txt -r requirements-dev.txt

- name: Run Unit Tests
run: |
python -m pytest

- name: Build A Python Distribution
if: ${{ !env.ACT }}
run: |
pip install build twine
python -m build
twine check dist/*

- name: Upload Artifact
if: ${{ !env.ACT }}
uses: actions/upload-artifact@v4
with:
name: python_dist
name: python_dist-${{ matrix.python-version }}
path: python/dist

# Check autogenerated signal definitions.
Expand All @@ -370,7 +386,7 @@ jobs:
- uses: actions/checkout@v2

- name: Setup Python
uses: actions/setup-python@v2
uses: actions/setup-python@v5
with:
python-version: '3.x'

Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@ venv*/
.vscode
*.code-workspace

# AI settings.
.claude/

# P1 binary files.
*.p1bin
*.p1log
Expand Down
25 changes: 13 additions & 12 deletions python/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,23 +18,24 @@ FusionEngine message specification.

### Requirements

- Python 3.6 or later
- Python 3.8 or later

### Applications

- [p1_capture](fusion_engine_client/applications/p1_capture.py) - Connect to a FusionEngine device in real time over
serial, TCP, UDP, or UNIX domain socket, and display incoming FusionEngine contents and/or log the incoming data to
disk
serial, TCP, UDP, WebSocket, or UNIX domain socket, or read from a file or log on disk. Display a summary of the
FusionEngine messages in the data stream or their contents, and optionally logs data to disk.
- Messages can be filtered by type or time.
- Supports stdin/stdout for inline data filtering via pipe.
- Supports extracting sensor or RTK corrections data from diagnostic FusionEngine `InputDataWrapper` messages.
- [p1_display](fusion_engine_client/applications/p1_display.py) - Generate plots of vehicle trajectory, GNSS signal
status, wheel speed measurements, etc. from a file of logged FusionEngine messages
status, wheel speed measurements, etc. from a file of logged FusionEngine messages.
- [p1_extract](fusion_engine_client/applications/p1_extract.py) - Extract FusionEngine messages from a binary file
containing multiple data streams (e.g., interleaved RTCM and FusionEngine messages)
- [p1_filter](fusion_engine_client/applications/p1_filter.py) - Filter an incoming FusionEngine data stream, outputting
a new FusionEngine stream containing only the requested messages
containing multiple data streams (e.g., interleaved RTCM and FusionEngine messages).
- [p1_filter](fusion_engine_client/applications/p1_filter.py) - Legacy alias for `p1_capture`
- [p1_lband_extract](fusion_engine_client/applications/p1_lband_extract.py) - Extract L-band data bits contained from a
log of FusionEngine `LBandFrameMessage` messages
- [p1_print](fusion_engine_client/applications/p1_print.py) - Print the contents of FusionEngine messages found in a
binary file to the console
- [p1_print](fusion_engine_client/applications/p1_print.py) - Legacy alias for `p1_capture`.

### Directory Structure
- `python/` - Python source files
Expand Down Expand Up @@ -100,7 +101,7 @@ FusionEngine message specification.

#### Install From PyPI

1. Install Python (3.6 or later) and pip.
1. Install Python (3.8 or later) and pip.
2. Install the `fusione-engine-client` module, including all analysis and data processing tools:
```bash
python3 -m pip install fusion-engine-client
Expand All @@ -121,7 +122,7 @@ FusionEngine message specification.

#### Install From Source (Use In Another Python Project)

1. Install Python (3.6 or later) and pip.
1. Install Python (3.8 or later) and pip.
2. Clone a copy of this repository:
```bash
git clone https://github.com/PointOneNav/fusion-engine-client.git
Expand Down Expand Up @@ -149,7 +150,7 @@ FusionEngine message specification.

#### Install From Source (Development)

1. Install Python (3.6 or later) and pip.
1. Install Python (3.8 or later) and pip.
2. Clone a copy of this repository:
```bash
git clone https://github.com/PointOneNav/fusion-engine-client.git
Expand Down
Loading
Loading