pacemaker is a lightweight C++ wrapper around the ETAS INCA COM API. It lets you programmatically register the calibration parameters, set their values in real time, and control measurement recordings, without touching INCA's GUI.
To start, clone the repository and move into the root directory
You can supply a incacom.tlb file via ETAS_INCACOM_TLB CMake variable, by specifying its absolute path. Otherwise a find module will take care of finding its location in regedit.
Due to backward compatibility issues, only ETAS INCA 7.4 and later installations are supported.
Build the tests target and then run the test suite via CTest:
The CMake option PACEMAKER_BUILD_TESTS is ON by default in case the project is the top level project.
To run a specific test by name or pattern, use the -R flag
-j <N> to run up to N tests in parallel, or --rerun-failed to only re-execute tests that failed in the previous runThe Software Requirements Specification (SRS) and Test Specification (TS) documents are written in LaTeX and built using latexmk perl script via MiKTeX.
Dependencies:
latexmk via its package manager)MIKTEX_BINARY_PATH is only required for portable MiKTeX installations.
The CMake option PACEMAKER_BUILD_REQUIREMENTS is ON by default in case the project is the top level project.
API documentation is generated with Doxygen and Graphviz.
DOXYGEN_EXECUTABLE and DOXYGEN_DOT_EXECUTABLE are only required for portable installationsThe CMake option PACEMAKER_BUILD_REQUIREMENTS is ON by default in case the project is the top level project.
The pacemaker project welcomes contributions from everyone, and we have a few guidelines regarding AI usage to ensure high code quality, clear communication, and a healthy open-source ecosystem:
Co-authored-by: convention in the commit body. (e.g. Co-authored-by: anthropic/claude-sonnet-4.6 <noreply@anthropic.com>) Our core maintainers also use AI tools to aid their workflows, but they do so while bringing deep contextual knowledge of the pacemaker codebase to validate the output. We ask all contributors to apply that same level of rigor.
Please remember that pacemaker is maintained by a dedicated team of humans.
Every discussion, issue, and pull request is read and reviewed by real people. While AI tools can generate thousands of lines of code in seconds, reviewing that code still takes human time and energy. Submitting unverified or low-effort AI output puts an unfair burden on our maintainers.
Today, the quality of the AI output still heavily depends on the developer driving the tool. We ask that you respect our maintainers' time by thoroughly vetting, testing, and refining your submissions.
pacemaker operates at the cutting edge of AI and robotics, and many of our maintainers actively embrace AI coding assistants as valuable productivity tools. We are a pro-AI project!
Our reason for having an AI policy is not an anti-AI stance. Rather, it exists to ensure that AI is used to enhance human contributions, not replace them with unverified noise. It's about how the tools are used, not the tools themselves.
We value the unique human insight you bring to the pacemaker community. Let AI empower your workflow, but always let your own judgment take the wheel.
MIT License
Copyright (c) 2026 Marco Peressutti
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.