Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
621383e
Cmake (#13)
ErniBrown Feb 21, 2024
f2463f9
Fix wrong queue size while reading multiple frames. (#15)
SimonCahill Mar 6, 2024
9d642e2
Fixed issues with CanId reporting incorrect CAN IDs. (#17)
SimonCahill Jun 10, 2024
bff1c8a
Updated e-mail address (#18)
SimonCahill Jul 28, 2024
132171c
Fix/can filters (#20)
SimonCahill Dec 20, 2024
6548a99
Renamed docs target to libsockcan_docs (#21)
SimonCahill Feb 5, 2025
dc2acaf
Added support for string to CanId conversions (well init with string …
SimonCahill Mar 13, 2025
e9592d7
Updated version
SimonCahill Mar 13, 2025
e2c201d
Add overloaded functions for more fine-grained timeouts/bulk sending.…
SimonCahill Mar 23, 2025
0c7a807
Fixed regression which caused higher-than-expected timeouts. (#24)
SimonCahill Mar 24, 2025
2023763
Bug fix & add support for joining filters. (#25)
SimonCahill Mar 25, 2025
bcce87b
Add exception headers to the installable headers. (#26) (#27)
banburybill Mar 30, 2025
23d5ac4
Bumped up version
SimonCahill Mar 30, 2025
61319b9
Correct exception what() declarations to const noexcept methods. (#28)
banburybill Mar 31, 2025
b9d1be6
Bumped up version
SimonCahill Mar 31, 2025
6b99892
In readQueuedMessages() support interfaces like vcan that don't suppo…
banburybill Mar 31, 2025
400554a
Observe -protocol argument in app test. (#29)
banburybill Mar 31, 2025
b9062df
Bumped up minor version to reflect significant improvements to the co…
SimonCahill Mar 31, 2025
79add8d
Removed extra call in CMakeLists which caused pipeline to fail
SimonCahill Mar 31, 2025
5a72d13
Added funding config
SimonCahill Apr 14, 2025
e2513b9
Added support for default constructors in CanMessage. (#31)
SimonCahill Jul 26, 2025
41add37
Refactored code; added timestamps for incoming CAN frames. (#32)
SimonCahill Aug 5, 2025
085ccb9
Added support for error detection (#33)
SimonCahill Aug 6, 2025
743bb44
Fixed build on some systems, most notably fixed LLVM builds. (#34)
SimonCahill Oct 14, 2025
4de7fd6
Fixes #35 (#36)
SimonCahill Nov 4, 2025
ea82b97
Updated README to reflect changes made in PR #36 (#37)
SimonCahill Nov 4, 2025
d459438
Feat/remove ignored qualifiers (#38)
SimonCahill Dec 2, 2025
4509e1e
Export can_errors headers and fix cmake install naming issue. (#39)
petertheprocess Dec 4, 2025
8d3f570
Fix compilation on Linux kernels < 5.11 by using can_dlc instead of l…
Copilot Dec 8, 2025
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
13 changes: 5 additions & 8 deletions .github/workflows/cmake.yml
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
name: CMake
name: Build Debug

on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]

permissions:
contents: read

env:
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
BUILD_TYPE: Release
BUILD_TYPE: Debug

jobs:
build:
Expand Down Expand Up @@ -40,9 +43,3 @@ jobs:
# Build your program with the given configuration
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}

- name: Test
working-directory: ${{github.workspace}}/build
# Execute tests defined by the CMake configuration.
# See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
run: ctest -C ${{env.BUILD_TYPE}}

40 changes: 40 additions & 0 deletions .github/workflows/cmake_cppcheck.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: CppCheck
permissions:
contents: read

on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]

env:
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
BUILD_TYPE: Debug

jobs:
build:
# The CMake configure and build commands are platform agnostic and should work equally well on Windows or Mac.
# You can convert this to a matrix build if you need cross-platform coverage.
# See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
runs-on: ubuntu-latest

steps:
- name: Install system dependencies
if: runner.os == 'Linux'
run: |
sudo apt update
sudo apt-get update
sudo apt-get -y install can-utils libsocketcan-dev cppcheck

- uses: actions/checkout@v3

- name: Configure CMake
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}}

- name: CppCheck
# Build your program with the given configuration
run: cppcheck --project=${{github.workspace}}/build/compile_commands.json --check-level=exhaustive --enable=all --inconclusive --force --inline-suppr --quiet

77 changes: 77 additions & 0 deletions .github/workflows/cmake_debian_versions.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
name: Build Debug (Debian Versions)

on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]

permissions:
contents: read

env:
BUILD_TYPE: Debug

jobs:
build:
name: ${{ matrix.name }}
runs-on: ubuntu-latest
container:
image: ${{ matrix.image }}
strategy:
fail-fast: false
matrix:
include:
- name: Debian 12 (Bookworm)
image: debian:12
version: "12"
- name: Debian 11 (Bullseye)
image: debian:11
version: "11"
- name: Debian 10 (Buster)
image: debian:10
version: "10"

steps:
- name: Prepare environment
shell: bash
env:
DEBIAN_FRONTEND: noninteractive
run: |
set -euo pipefail
if [[ -f /etc/os-release ]]; then
. /etc/os-release
if [[ "${ID}" == "debian" ]]; then
case "${VERSION_ID}" in
8*|9*|10*)
sed -i 's|deb.debian.org|archive.debian.org|g' /etc/apt/sources.list
sed -i '/security.debian.org/d' /etc/apt/sources.list
if [[ -n "${VERSION_CODENAME:-}" ]]; then
printf '\ndeb http://archive.debian.org/debian-security %s/updates main contrib non-free\n' "${VERSION_CODENAME}" >> /etc/apt/sources.list
fi
printf "\n\nAcquire::Check-Valid-Until \"false\";\n" >> /etc/apt/apt.conf
;;
esac
fi
fi
apt-get update
apt-get install -y --no-install-recommends \
build-essential \
ca-certificates \
git \
pkg-config \
can-utils \
libsocketcan-dev \
wget

wget https://github.com/Kitware/CMake/releases/download/v3.31.10/cmake-3.31.10-linux-x86_64.sh -O /tmp/cmake-installer.sh
chmod +x /tmp/cmake-installer.sh
/tmp/cmake-installer.sh --skip-license --prefix=/usr/local

- uses: actions/checkout@v4

- name: Configure CMake
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}}

- name: Build
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}
56 changes: 56 additions & 0 deletions .github/workflows/cmake_fedora_versions.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
name: Build Debug (Fedora Versions)

on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]

permissions:
contents: read

env:
BUILD_TYPE: Debug

jobs:
build:
name: ${{ matrix.name }}
runs-on: ubuntu-latest
container:
image: ${{ matrix.image }}
strategy:
fail-fast: false
matrix:
include:
- name: Fedora 41
image: fedora:41
- name: Fedora 40
image: fedora:40
- name: Fedora 39
image: fedora:39

steps:
- name: Prepare environment
shell: bash
run: |
set -euo pipefail
dnf -y update
dnf -y install \
cmake \
gcc \
gcc-c++ \
make \
git \
pkgconf-pkg-config \
can-utils \
libsocketcan \
libsocketcan-devel
dnf clean all

- uses: actions/checkout@v4

- name: Configure CMake
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}}

- name: Build
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}
45 changes: 45 additions & 0 deletions .github/workflows/cmake_no_concepts.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: Build Debug (C++11)

on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]

permissions:
contents: read

env:
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
BUILD_TYPE: Debug

jobs:
build:
# The CMake configure and build commands are platform agnostic and should work equally well on Windows or Mac.
# You can convert this to a matrix build if you need cross-platform coverage.
# See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
runs-on: ubuntu-latest

steps:
- name: Install system dependencies
if: runner.os == 'Linux'
run: |
sudo apt update
sudo apt-get update
sudo apt-get -y install can-utils libsocketcan-dev
while read -r cmd
do
eval sudo $cmd
done < <(Rscript -e 'writeLines(remotes::system_requirements("ubuntu", "20.04"))')

- uses: actions/checkout@v3

- name: Configure CMake
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -Dsockcanpp_CONCEPT_SUPPORT=OFF

- name: Build
# Build your program with the given configuration
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}

85 changes: 85 additions & 0 deletions .github/workflows/cmake_ubuntu_versions.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
name: Build Debug (Ubuntu Versions)

on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]

permissions:
contents: read

env:
BUILD_TYPE: Debug

jobs:
build:
name: ${{ matrix.name }}
runs-on: ubuntu-latest
container:
image: ${{ matrix.image }}
strategy:
fail-fast: false
matrix:
include:
- name: CMake Ubuntu 25.04
image: ubuntu:25.04
version: "25.04"
- name: CMake Ubuntu 24.04
image: ubuntu:24.04
version: "24.04"
- name: CMake Ubuntu 23.04
image: ubuntu:23.04
version: "23.04"
- name: CMake Ubuntu 22.04
image: ubuntu:22.04
version: "22.04"
- name: CMake Ubuntu 21.04
image: ubuntu:21.04
version: "21.04"
- name: CMake Ubuntu 20.04
image: ubuntu:20.04
version: "20.04"
- name: CMake Ubuntu 19.04
image: ubuntu:19.04
version: "19.04"

steps:
- name: Prepare environment
shell: bash
env:
DEBIAN_FRONTEND: noninteractive
run: |
set -euo pipefail
if [[ -f /etc/os-release ]]; then
. /etc/os-release
if [[ "${ID}" == "ubuntu" ]]; then
case "${VERSION_ID}" in
19.04|21.04|23.04)
sed -i 's|http://archive.ubuntu.com/ubuntu/|http://old-releases.ubuntu.com/ubuntu/|g' /etc/apt/sources.list
sed -i 's|http://security.ubuntu.com/ubuntu|http://old-releases.ubuntu.com/ubuntu|g' /etc/apt/sources.list
;;
esac
fi
fi
apt-get update
apt-get install -y --no-install-recommends \
build-essential \
ca-certificates \
git \
pkg-config \
can-utils \
libsocketcan-dev \
wget

wget https://github.com/Kitware/CMake/releases/download/v3.31.10/cmake-3.31.10-linux-x86_64.sh -O /tmp/cmake-installer.sh
chmod +x /tmp/cmake-installer.sh
/tmp/cmake-installer.sh --skip-license --prefix=/usr/local

- uses: actions/checkout@v4

- name: Configure CMake
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}}

- name: Build
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}
Loading