Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
97 commits
Select commit Hold shift + click to select a range
3999a6a
Add initial support for raw CAN transmit. Drop PCAN support for now, …
normaldotcom Aug 20, 2018
8ec8e2d
Enable graphing; currently nonfunctional
Aug 31, 2018
537870f
Rework big endian handling: initial implementation broke single-byte …
Sep 18, 2018
aeb8436
Revamp TX window, extended message transmission works properly
Sep 21, 2018
329e7d7
Repeated send support functional
Sep 21, 2018
d44f10a
Clear the trace window on measurement start. Fixes bug where rows wou…
Sep 24, 2018
e9bf07d
Grey out payload byte boxes based on DLC. Fix minimum window height.
Sep 24, 2018
0363ce7
Add sender column to trace view; default to aggregate view / delta ti…
Dec 7, 2018
98500f5
Add bitrates for 170MHz processors, fixed default sample point castin…
Jun 25, 2021
276d613
Add include to fix build issues on newer kernels
Sep 8, 2021
f80326d
Initial hacky implementation of slcan. Ongoing development.
Jul 3, 2022
ec1e140
Initial switchover to qserialport. Very rough implementaiton.
Jul 3, 2022
ffd6058
Use actual interface instead of dummy pty
Jul 4, 2022
ac3b202
Add prototype for interface selection in raw TX window. Add slcan to …
Jul 4, 2022
926d005
Raw TX window with interface selection now works properly. Fix closin…
Jul 4, 2022
92139fd
Add timestamp to slcan messages
Jul 4, 2022
0357747
Check VID for CANable, Windows overrides USB description
Jul 4, 2022
fbd5c30
Initial work on CANFD support - alt bitrates
Jul 4, 2022
218a1cb
RawTX BRS checkbox enabled/disabled depending on FD capability
Jul 4, 2022
91892c0
Initial CANFD over SLCAN support functional
Jul 5, 2022
afa102b
Add slcan description text. Add autodetection of CANable and CANable …
Jul 7, 2022
ae672f0
Initial half-working filter implementation
Jul 8, 2022
d6d04b4
Initial filtering implementation now functional
Jul 8, 2022
37ef5de
Fix mutex locking. Add sleep to read thread to avoid pegging CPU--not…
Jul 8, 2022
1f415a9
Update README and about
Jul 8, 2022
52e42d3
Add isOpen to CAN interfaces. Only allow TX from open interfaces. UI …
Jul 9, 2022
bfd2c38
Add missing isOpen to SocketCanInterface
Jul 12, 2022
997b2e8
Fix checkbox functionality when switching between FD and non-FD inter…
Jul 12, 2022
2c162ed
Fix tab order in RawTxWindow
Jul 12, 2022
128fb3f
Properly limit CAN IDs to maximum value
Jul 13, 2022
71cd706
Fix bug where FD TX would not add payload data correctly
Jul 13, 2022
f27eede
Add initial support for UDP canblaster driver - under development
Jul 15, 2022
ac0aac3
Refactor canblast->canblaster
Jul 15, 2022
54cf215
Functional CANblaster with discovery
Jul 15, 2022
2f0c377
Threading and IP fixes, successful run from Linux canblaster.py serve…
Jul 16, 2022
daa118f
Attempt speedup. Fixes to rx logic.
Jul 16, 2022
9bc29b0
Update readme
Jul 16, 2022
b862c39
Remove error frame generation from RawTX as no adapters I know of hav…
Jul 16, 2022
445f99c
Add support for refreshing adapters/networks
Jul 16, 2022
cbf3523
Update links in README
Jul 18, 2022
9f6a6bc
Initial build configuration
normaldotcom Jul 18, 2022
d33abc8
Update actions env
Jul 18, 2022
1e022c4
Update README.md
normaldotcom Jul 18, 2022
bda4fef
Fix bug causing crashing in release build in CanDriver. Update CANbla…
Aug 26, 2022
bfd64e0
Update deps for apt
Aug 26, 2022
aa5b558
Fix bug where cangaroo would crash on startup if canblaster server wa…
Sep 6, 2022
b091819
CanListener now opens/closes interfaces in the listener thread. Only …
Sep 6, 2022
289e3b7
Wait for interface to open before emitting beginMeasurement
Sep 14, 2022
4fb8cf8
SLCAN driver should be thread safe now. Debug issues with QSerialPort…
Sep 14, 2022
ccdcb64
Allow reception of multiple messages in one receive call. Untested on…
Jan 22, 2023
ca7f907
Fix SocketCanInterface, missed during migration to qlist for rx
Feb 23, 2023
39d9292
fix some bugs
YXZhu Jan 20, 2024
855638f
add weactstudio usb2can support && fix bugs
YXZhu Jan 25, 2024
1bfd4b2
1. add can msg tooltip display
YXZhu Mar 3, 2024
87dc4ff
fix rawtxwindow logic bug
YXZhu Mar 4, 2024
111c87f
improve repeat time accuracy
YXZhu Mar 7, 2024
87bc619
1. Fixed software crash caused by SLCAN serial communication
YXZhu Mar 9, 2024
01efb1a
1. fix abnormal display when merge by id and then cancel
YXZhu Mar 30, 2024
dca18be
add more zh-cn language
YXZhu Mar 30, 2024
7f860b2
update zh_cn
YXZhu Mar 30, 2024
b578f50
Optimize CAN send status logic
YXZhu Apr 17, 2024
c8b4017
1. Add Tx frame display
YXZhu Apr 20, 2024
4102f2c
v0.2.4.1
YXZhu Jul 20, 2024
7bc7c27
Migrate to Qt6; Clean up etc
Schildkroet Aug 17, 2024
90c1f7a
Added GrIP driver
Schildkroet Sep 26, 2024
b2ae192
CANgaroo tool improvements
Jan 1, 2026
2ff8e97
Merge pull request #1 from OpenAutoDiagLabs/cangaroo-ui-enhancement
jdharuman Jan 2, 2026
6de4324
Updated missing parts
Jan 2, 2026
65af881
Merge pull request #2 from OpenAutoDiagLabs/cangaroo-ui-enhancement
jdharuman Jan 2, 2026
312974d
Update read me and fixed the socket CAN interface issue
Jan 4, 2026
88b7f1e
Merge pull request #3 from OpenAutoDiagLabs/cangaroo-ui-enhancement
jdharuman Jan 4, 2026
6347fe6
Migrated to newer Qt 6.10 version
Jan 4, 2026
4c96015
Merge pull request #4 from OpenAutoDiagLabs/cangaroo-ui-enhancement
jdharuman Jan 4, 2026
967d2d8
Updated new release generation process
Jan 4, 2026
e7b73ab
Refine DBC management, update release process, and add compressed dem…
Jan 4, 2026
c6077f6
Merge pull request #5 from OpenAutoDiagLabs/cangaroo-ui-enhancement
jdharuman Jan 4, 2026
d2ab76f
Updated new readme doc with aditional information
Jan 8, 2026
ccb9f1a
Merge pull request #6 from OpenAutoDiagLabs/cangaroo-ui-enhancement
jdharuman Jan 8, 2026
d2d1dc6
Updated new readme doc with aditional information
Jan 8, 2026
e9a9702
Updated readme doc
Jan 8, 2026
5acf2b3
Integrated ISO TP and J1939 frame support
Jan 11, 2026
4eb08d0
Merge pull request #7 from OpenAutoDiagLabs/iso_tp_integration
jdharuman Jan 11, 2026
086ef5d
Integrated ISO TP and J1939 frame support
Jan 11, 2026
7ea1ca9
Merge pull request #8 from OpenAutoDiagLabs/iso_tp_integration
jdharuman Jan 11, 2026
361be7d
Integrated ISO TP and J1939 frame support
Jan 11, 2026
f337f5a
Merge pull request #9 from OpenAutoDiagLabs/iso_tp_integration
jdharuman Jan 11, 2026
0ae049e
Updated the readme doc
Jan 12, 2026
a067885
Added graph view support
Feb 8, 2026
535cfe6
Merge pull request #10 from OpenAutoDiagLabs/cangaroo-ui-enhancement-…
jdharuman Feb 8, 2026
9f2e515
Fixed the user reported issues
Feb 9, 2026
a44b195
Merge pull request #14 from OpenAutoDiagLabs/issue-fix
jdharuman Feb 9, 2026
0b80544
Bug Fixes and UI Improvements
Feb 21, 2026
622957b
Merge pull request #16 from OpenAutoDiagLabs/issue-fix
jdharuman Feb 22, 2026
394c387
Added a Github workflows support
Feb 22, 2026
4de9677
Added a Github workflows support
Feb 22, 2026
4fd7abb
Merge pull request #17 from OpenAutoDiagLabs/user/jdharuman/github_wo…
jdharuman Feb 22, 2026
a7dbac9
Feature implementation and issue fixes:
Feb 22, 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
332 changes: 332 additions & 0 deletions .github/workflows/cmake.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,332 @@
name: Build CANgaroo

on:
push:
branches: [ "main", "master" ]
pull_request:
branches: [ "main", "master" ]
workflow_dispatch:

jobs:
build-ubuntu:
name: Build CANgaroo (Ubuntu / Qt6)
runs-on: ubuntu-22.04

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Install dependencies
run: |
sudo apt update
sudo apt install -y build-essential git cmake \
qt6-base-dev qt6-base-private-dev qt6-tools-dev \
libqt6serialport6-dev libqt6charts6-dev \
libnl-3-dev libnl-route-3-dev libgl1-mesa-dev fuse libfuse2 wget

echo "=== Qt6 Version ==="
qmake6 --version

echo "=== Qt6 Plugin Path ==="
QT6_PLUGIN_PATH=$(qmake6 -query QT_INSTALL_PLUGINS)
echo "Qt6 Plugins: $QT6_PLUGIN_PATH"

- name: Run qmake6 and make
run: |
qmake6
make -j$(nproc)

- name: Prepare AppDir
run: |
mkdir -p AppDir/usr/bin
mkdir -p AppDir/usr/share/applications
mkdir -p AppDir/usr/share/icons/hicolor/256x256/apps
mkdir -p AppDir/usr/plugins/styles
mkdir -p AppDir/usr/plugins/platformthemes

sed -i 's|Exec=/usr/bin/cangaroo %f|Exec=cangaroo %f|' cangaroo.desktop

cp bin/cangaroo AppDir/usr/bin/
cp cangaroo.desktop AppDir/usr/share/applications/
cp src/assets/cangaroo.png AppDir/usr/share/icons/hicolor/256x256/apps/

- name: Create qt.conf
run: |
cat > AppDir/usr/bin/qt.conf << 'EOF'
[Paths]
Plugins = ../plugins
Libraries = ../lib
Prefix = ../
EOF

echo "=== qt.conf created ==="
cat AppDir/usr/bin/qt.conf

- name: Download linuxdeploy
run: |
wget -q https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage
wget -q https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage
chmod +x linuxdeploy*.AppImage

- name: Build AppImage
env:
QMAKE: qmake6
QML_SOURCES_PATHS: ./src
run: |
./linuxdeploy-x86_64.AppImage \
--appdir AppDir \
--plugin qt \
--output appimage

- name: Upload AppImage
uses: actions/upload-artifact@v6
with:
name: CANgaroo-Linux-AppImage
path: "CAN*.AppImage"

- name: Upload Binary
uses: actions/upload-artifact@v6
with:
name: CANgaroo-Linux-Binary
path: bin/cangaroo

build-windows:
name: Build CANgaroo (Windows / MinGW / Qt6)
runs-on: windows-latest

defaults:
run:
shell: msys2 {0}

steps:
- name: Checkout repository
uses: actions/checkout@v5

- name: Setup MSYS2 (without install)
uses: msys2/setup-msys2@v2
with:
msystem: MINGW64
update: true

- name: Cache MinGW and MSYS2 packages
uses: actions/cache@v4
with:
path: |
C:/msys64/mingw64
C:/msys64/var/cache/pacman/pkg
key: >
msys2-mingw64-qt6-${{ runner.os }}-${{ hashFiles('.github/workflows/cmake.yml') }}
restore-keys: |
msys2-mingw64-qt6-${{ runner.os }}-

- name: Install MinGW + Qt6 (cached)
run: |
pacman -S --needed --noconfirm \
mingw-w64-x86_64-toolchain \
mingw-w64-x86_64-qt6 \
mingw-w64-x86_64-qt6-tools \
mingw-w64-x86_64-make \
mingw-w64-x86_64-ntldd \
git

- name: Verify Qt6 installation
run: |
qmake6 --version
which qmake6

- name: Configure build (Qt6 qmake)
run: |
qmake6 CONFIG+=release

- name: Build
run: |
mingw32-make -j$(nproc)

- name: List build output
run: |
echo "==== Project root ===="
ls -lah

echo "==== Executables ===="
find . -maxdepth 2 -name "*.exe" -type f -print

- name: Prepare distribution directory
run: |
mkdir -p dist
cp ./bin/*.exe dist/

- name: Deploy Qt6 runtime (windeployqt)
run: |
EXE=$(ls dist/*.exe | head -n 1)
windeployqt6 \
--release \
--no-system-d3d-compiler \
"$EXE"

- name: Add MinGW runtime DLLs
run: |
cp /mingw64/bin/libgcc_s_seh-1.dll dist/
cp /mingw64/bin/libstdc++-6.dll dist/
cp /mingw64/bin/libwinpthread-1.dll dist/
cp /mingw64/bin/libmd4c.dll dist/
cp /mingw64/bin/libharfbuzz-0.dll dist/
cp /mingw64/bin/libfreetype-6.dll dist/
cp /mingw64/bin/libpng16-16.dll dist/
cp /mingw64/bin/zlib1.dll dist/
cp /mingw64/bin/libdouble-conversion.dll dist/
cp /mingw64/bin/libb2-1.dll dist/
cp /mingw64/bin/libicuin78.dll dist/
cp /mingw64/bin/libbrotlidec.dll dist/
cp /mingw64/bin/libzstd.dll dist/
cp /mingw64/bin/libicuuc78.dll dist/
cp /mingw64/bin/libpcre2-16-0.dll dist/

- name: Deploy MinGW runtime dependencies
run: |
EXE=$(ls dist/*.exe | head -n 1)

echo "Resolving MinGW runtime dependencies for $EXE"

ntldd -R "$EXE" \
| grep mingw64 \
| awk '{print $3}' \
| sort -u \
| while IFS= read -r file; do
# Convert Windows path to Linux path
linux_path=$(echo "$file" | sed -E 's|([A-Za-z]):\\|/\L\1/|; s|\\|/|g')

echo "Copying $linux_path"
cp "$linux_path" dist/ || echo "Skipped $linux_path"
done

- name: Verify missing DLLs
run: |
EXE=$(ls dist/*.exe | head -n 1)
ntldd "$EXE" || true
- name: Upload Windows Qt6 binaries
uses: actions/upload-artifact@v6
with:
name: CANgaroo-Windows-MinGW-Qt6
path: dist/*

release:
name: Create GitHub Release
needs: [build-ubuntu, build-windows]
if: github.event_name == 'workflow_dispatch' || github.ref_name == 'main' || github.ref_name == 'master'
runs-on: ubuntu-latest
permissions:
contents: write

steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Determine New Version
id: versioning
run: |
latest_tag=$(git describe --tags --abbrev=0 2>/dev/null || echo "v0.4.0")
echo "Latest tag: $latest_tag"

# Remove 'v' prefix if exists
clean_tag=${latest_tag#v}

major=$(echo $clean_tag | cut -d. -f1)
minor=$(echo $clean_tag | cut -d. -f2)
patch=$(echo $clean_tag | cut -d. -f3)

new_minor=$((minor+1))
new_tag="v$major.$new_minor.0"

echo "Next tag: $new_tag"
echo "version=$new_tag" >> $GITHUB_OUTPUT

- name: Create Git Tag
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git tag ${{ steps.versioning.outputs.version }}
git push origin ${{ steps.versioning.outputs.version }}

- name: Download Linux Binary
uses: actions/download-artifact@v4
with:
name: CANgaroo-Linux-Binary
path: bin

- name: Download Linux AppImage
uses: actions/download-artifact@v4
with:
name: CANgaroo-Linux-AppImage
path: appimage

- name: Download Windows Artifacts
uses: actions/download-artifact@v4
with:
name: CANgaroo-Windows-MinGW-Qt6
path: windows-bins

- name: Package Release
run: |
VERSION=${{ steps.versioning.outputs.version }}
mkdir -p release-pkg

# Linux packaging
LINUX_DIR="cangaroo-${VERSION}-linux-x86_64"
mkdir -p "$LINUX_DIR"

cp bin/cangaroo "$LINUX_DIR/"
cp appimage/CAN*.AppImage "$LINUX_DIR/CANgaroo-x86_64.AppImage"
cp README.md "$LINUX_DIR/"
cp LICENSE "$LINUX_DIR/"
cp CONTRIBUTING.md "$LINUX_DIR/"
cp setup_release.sh "$LINUX_DIR/"

tar -czf "release-pkg/${LINUX_DIR}.tar.gz" "$LINUX_DIR"

# Windows packaging (Zip the dist folder)
WINDOWS_ZIP="cangaroo-${VERSION}-windows-x64.zip"
cd windows-bins
zip -r "../release-pkg/${WINDOWS_ZIP}" .
cd ..

# Generate Checksums
cd release-pkg
for file in *; do
sha256sum "$file" > "${file}.sha256"
done
cd ..

- name: Generate Changelog
id: changelog
run: |
latest_tag=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
if [ -z "$latest_tag" ]; then
log=$(git log --oneline -n 20)
else
log=$(git log ${latest_tag}..HEAD --oneline)
fi

# Set output using multi-line delimiter
{
echo "body<<EOF"
echo "Automated release for version ${{ steps.versioning.outputs.version }}"
echo ""
echo "### Changes since last release:"
echo "$log"
echo "EOF"
} >> "$GITHUB_OUTPUT"

- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ steps.versioning.outputs.version }}
name: Release ${{ steps.versioning.outputs.version }}
body: ${{ steps.changelog.outputs.body }}
files: |
release-pkg/*.tar.gz
release-pkg/*.zip
release-pkg/*.sha256
draft: true
prerelease: false
9 changes: 9 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -35,3 +35,12 @@ Makefile*


test.dbc

.vscode/

build/

bin/

# Release artifacts
releases/
23 changes: 0 additions & 23 deletions .travis.yml

This file was deleted.

Loading