AddiPack Documentation Logo

About Addi-Pack

  • Introduction
    • What is Addi-Pack?
    • Core Principles
    • Architecture
  • Getting Started
    • Installation Guide
      • Overview
      • OS Dependencies
      • Installation
        • Inserting a PCI, PCIe or CPCI/CPCIs card
        • Windows
        • Linux (Debian / Ubuntu)
        • CentOS Stream 10
        • Verify Installation
          • Using the CLI sample
          • Using Python
      • Ready-to-use Samples
      • Installation Known Issues
    • API Programming Guide
      • Overview
      • Language Interfaces
      • Typical Workflow
      • Examples
        • C
        • C++
        • Python
      • Error Handling
        • Error Code Layout
        • Example
      • Working with Structures and Types
        • Structure AddiDataDeviceStruct
        • Timer / Counter / Watchdog Identifiers
        • Digital I/O Channels
        • Enumerations
    • Driver Concepts Guide
      • Overview
      • Driver Architecture
      • Interrupts vs Polling
        • Why Use Interrupts?
      • Understanding Interrupt Handling
      • Device Identification
      • Compatibility DLLs (older API Support)
        • How It Works
        • Why This Matters
        • How to Use Compatibility DLLs (Windows)
        • Use PCI Samples (Old Windows KMDF) on PCIe Hardware (Windows) using PCI DLL
      • Fundamentals
        • Timer
        • Counter
        • Watchdog
    • Addi-Pack Samples
      • Overview
      • Sample Utilities
        • Key Concepts
        • C Utilities
        • C++ Utilities
        • Python Utilities
      • get_devices_info
        • Key Features
        • Example Usage
      • digital_input
        • Concept and Purpose
        • Execution Workflow
        • Runtime Behavior
      • digital_output
        • Concept and Purpose
        • Execution Workflow
        • Runtime Behavior
      • digital_port
      • timer
        • Concept and Purpose
        • Execution Workflow
        • Runtime Behavior
      • counter
        • Concept and Purpose
        • Execution Workflow
        • Runtime Behavior
      • watchdog
        • Concept and Purpose
        • Execution Workflow
        • Runtime Behavior
        • Card-Specific Notes
          • Interrupt Source Mapping
  • Technical Documentation
    • C API
      • C GENERIC
        • AddiDataGetNumberOfDevices()
        • AddiDataGetDeviceList()
        • AddiDataGetDeviceStructFromDeviceName()
      • C COUNTER
        • AddiDataInitCounter()
        • AddiDataStartCounter()
        • AddiDataStopCounter()
        • AddiDataReadCounterValue()
        • AddiDataReadCounterStatus()
        • AddiDataEnableCounterInterrupt()
        • AddiDataDisableCounterInterrupt()
      • C DIGITAL INPUT/OUTPUT
        • AddiDataWriteSingleDigitalOutput()
        • AddiDataWriteAllDigitalOutputs()
        • AddiDataGetDigitalOutputsStatus()
        • AddiDataReadSingleDigitalInput()
        • AddiDataReadAllDigitalInputs()
        • AddiDataSetInterruptEventForInputs()
        • AddiDataSetInterruptEventForOneInput()
        • AddiDataSetInterruptLogicForPort()
        • AddiDataSetOutputMemory()
        • AddiDataEnableDigitalInterrupt()
        • AddiDataDisableDigitalInterrupt()
        • AddiDataSetDigitalOutputInterrupt()
        • AddiDataSetAllDigitalPortsDirection()
        • AddiDataGetAllDigitalPortDirections()
        • AddiDataReadAllDigitalInputsFromPort()
        • AddiDataWriteSingleDigitalOutputOnPort()
        • AddiDataWriteAllDigitalOutputsOnPort()
        • AddiDataGetDigitalOutputsStatusOnPort()
      • C INTERRUPT
        • AddiDataSetDeviceInterruptCallback()
        • AddiDataEnableDeviceInterrupts()
        • AddiDataDisableDeviceInterrupts()
        • AddiDataTestDeviceInterrupts()
        • AddiDataClearInterruptFifo()
      • C TIMER
        • AddiDataInitTimer()
        • AddiDataSetCustomTimerFrequency()
        • AddiDataStartTimer()
        • AddiDataStopTimer()
        • AddiDataReadTimerValue()
        • AddiDataReadTimerStatus()
        • AddiDataTriggerTimer()
        • AddiDataEnableTimerInterrupt()
        • AddiDataDisableTimerInterrupt()
      • C WATCHDOG
        • AddiDataInitWatchdog()
        • AddiDataStartWatchdog()
        • AddiDataStopWatchdog()
        • AddiDataReadWatchdogValue()
        • AddiDataReadWatchdogStatus()
        • AddiDataTriggerWatchdog()
        • AddiDataEnableWatchdogInterrupt()
        • AddiDataDisableWatchdogInterrupt()
    • Common API
      • COMMON GENERIC
        • ADDI_DATA_DISABLE
        • ADDI_DATA_ENABLE
        • ADDI_DATA_TCW_OPTIONS
          • COUNT_DIRECTION_DOWN
          • COUNT_DIRECTION_UP
          • SINGLE_CYCLE
          • EXTERNAL_TRIGGER
          • HARDWARE_GATE
          • COUNTER_FALLING_EDGE_COUNT
          • COUNTER_RISING_EDGE_COUNT
          • COUNTER_BOTH_EDGE_COUNT
        • ADDI_DATA_DEVICE_TYPE
          • PCI
          • PCIE
          • MSXE
        • DIGIO_COUNTER_TIMER_SOURCE
          • SIGNAL_INPUT
          • TRIGGER_INPUT
          • GATE_INPUT
        • PORT_DIRECTION
          • PORT_INPUT
          • PORT_OUTPUT
        • TIMEBASE_UNITS
          • MICROSECOND
          • MILLISECOND
          • SECOND
          • CUSTOM
      • COMMON INFORMATIONS STRUCTURE
        • DIGITAL_EVENT_TYPE
          • UNUSED
          • ON_ZERO
          • ON_ONE
          • FALLING_EDGE
          • RISING_EDGE
          • ANY_EDGE
        • DIGITAL_EVENT_LOGIC
          • OR
          • AND
        • TimerInformations
          • number_timers
          • max_reload_value
          • valid_options
          • min_reload_value
        • WatchdogInformations
          • number_watchdogs
          • max_reload_value
          • valid_options
          • min_reload_value
        • CounterInformations
          • number_counters
          • max_reload_value
          • valid_options
        • AddiDataFunctionInformations
          • digital
          • timer
          • watchdog
          • counter
        • AddiDataPCIBusInformations
          • vendor_id
          • device_id
          • number
          • device_number
          • bus_number
          • base_address_register
          • interrupt_number
          • is_pcie
        • AddiDataGeneralInformations
          • serial_number
          • product_name
          • firmware_version
          • library_version
          • driver_version
          • device_path
          • custom_id
          • device_type
        • AddiDataDeviceStruct
          • id
          • general
          • functions
          • bus
        • DigitalInformations
          • number_inputs
          • number_outputs
          • number_of_ports
          • interrupt_mask
        • InterruptData
          • interrupt_source
          • interrupt_mask
          • arg_count
          • args
      • COMMON ERROR CODES
        • ADDIDATA_FUNCTION_SHIFT
        • ADDIDATA_CODE
        • AddiDataSource
          • ADDIDATA_DRIVER
          • ADDIDATA_API
        • AddiDataDomain
          • ADDIDATA_DOMAIN_GENERIC
          • ADDIDATA_DOMAIN_COUNTER
          • ADDIDATA_DOMAIN_DIGIO
          • ADDIDATA_DOMAIN_TIMER
          • ADDIDATA_DOMAIN_WATCHDOG
          • ADDIDATA_DOMAIN_INTERRUPTS
          • ADDIDATA_DOMAIN_LINUX_IOCTL
          • ADDIDATA_DOMAIN_WIN_IOCTL
          • ADDIDATA_DOMAIN_DIG_EVENT
          • ADDIDATA_DOMAIN_PLUGIN
        • AddiDataFunction
          • ADDIDATA_FUNCTION_NONE
          • ADDIDATA_FUNCTION_READ
          • ADDIDATA_FUNCTION_INTERRUPT_CALLBACK
          • ADDIDATA_FUNCTION_IOCTL_CALL
          • ADDIDATA_FUNCTION_IOCTL_INIT
          • ADDIDATA_FUNCTION_ENABLE_INTERRUPT
          • ADDIDATA_FUNCTION_CREATE_INTERRUPT
          • ADDIDATA_FUNCTION_KILL_INTERRUPT
          • ADDIDATA_FUNCTION_EVENT_FD
          • ADDIDATA_FUNCTION_WAIT_INTERRUPT
          • ADDIDATA_FUNCTION_SELECT_EVENT
          • ADDIDATA_FUNCTION_CHECK_RELOAD_VALUE
          • ADDIDATA_FUNCTION_CHECK_TIMEBASE
          • ADDIDATA_FUNCTION_SET_DEVICE_HANDLE
          • ADDIDATA_FUNCTION_CALL
          • ADDIDATA_FUNCTION_HANDLE_RETURN
          • ADDIDATA_FUNCTION_CHANNEL_RANGE
          • ADDIDATA_FUNCTION_INFO
          • ADDIDATA_FUNCTION_INIT
          • ADDIDATA_FUNCTION_START
          • ADDIDATA_FUNCTION_TRIGGER
          • ADDIDATA_FUNCTION_CONVERT_FREQ
          • ADDIDATA_FUNCTION_STOP
          • ADDIDATA_FUNCTION_READ_VALUE
          • ADDIDATA_FUNCTION_READ_STATUS
          • ADDIDATA_FUNCTION_WRITE_DIGOUT
          • ADDIDATA_FUNCTION_INTERRUPT_EVENT
          • ADDIDATA_FUNCTION_INTERRUPT_LOGIC
          • ADDIDATA_FUNCTION_UPDATE_DIGITAL_INTERRUPT
          • ADDIDATA_FUNCTION_GET_DIGOUT_STATUS
          • ADDIDATA_FUNCTION_ENSURE_ID
          • ADDIDATA_FUNCTION_TEST
          • ADDIDATA_FUNCTION_ZILOG_INIT_EVENT
          • ADDIDATA_FUNCTION_INIT_DIGIT_INTERRUPT
          • ADDIDATA_FUNCTION_START_STOP_TCW
          • ADDIDATA_FUNCTION_SET_OUTPUT_MEMORY
          • ADDIDATA_FUNCTION_INIT_EVENT_LOGIC
          • ADDIDATA_FUNCTION_INIT_TCW_COMPATIBILITY
          • ADDIDATA_FUNCTION_API_GET_LAST_ERROR
          • ADDIDATA_FUNCTION_DISABLE_INTERRUPT
          • ADDIDATA_FUNCTION_GET_DEVICES
          • ADDIDATA_FUNCTION_GET_STRING
          • ADDIDATA_FUNCTION_GET_INSTANCE
          • ADDIDATA_FUNCTION_DIRECT_ACCESS
          • ADDIDATA_FUNCTION_OUTPUT_INTERRUPT
          • ADDIDATA_FUNCTION_GET_PORT_DIRECTION
          • ADDIDATA_FUNCTION_PORT_RANGE
        • AddiDataReason
          • ADDIDATA_REASON_NONE
          • ADDIDATA_REASON_NOT_INITIALIZED
          • ADDIDATA_REASON_ALREADY_INITIALIZED
          • ADDIDATA_REASON_INVALID_PARAMETER
          • ADDIDATA_REASON_OUT_OF_BOUNDS
          • ADDIDATA_REASON_NOT_SUPPORTED
          • ADDIDATA_REASON_OVERFLOW
          • ADDIDATA_REASON_UNDERFLOW
          • ADDIDATA_REASON_HARDWARE_FAILURE
          • ADDIDATA_REASON_INVALID_STATE
          • ADDIDATA_REASON_CONFIG_ERROR
          • ADDIDATA_REASON_INTERNAL_ERROR
          • ADDIDATA_REASON_UNKNOWN
          • ADDIDATA_REASON_INFO_UNAVAILABLE
          • ADDIDATA_REASON_INIT_FAILURE
          • ADDIDATA_REASON_INVALID_RETURN_VAL
          • ADDIDATA_REASON_INVALID_ID
          • ADDIDATA_REASON_INVALID_OPTION
          • ADDIDATA_REASON_INVALID_TIMEBASE
          • ADDIDATA_REASON_HANDLE_ERROR
        • AddiDataGetLastError()
        • AddiDataPrintLastError()
        • AddiDataTestError()
      • COMMON UTILITIES
        • Arg Parser
          • AddiDataArgParserAddOption()
          • AddiDataArgParserAddFlag()
          • AddiDataArgParserParse()
          • AddiDataArgParserIsFlagSet()
          • AddiDataArgParserIsOptionSet()
          • AddiDataArgParserGetOptionValue()
          • AddiDataArgParserClear()
        • User I/O
          • AddiDataUtilsPrintAvailableTcwOptions()
          • AddiDataUtilsGetTcwOptionsFromUser()
          • AddiDataUtilsPromptString()
          • AddiDataUtilsPromptInt()
          • AddiDataUtilsPromptHex()
          • AddiDataUtilsGetValidString()
          • AddiDataUtilsGetValidInt()
          • AddiDataUtilsGetValidHex()
          • AddiDataUtilsExitOnUserInput()
          • AddiDataUtilsDisplayAllPortsConfigurations()
        • Device
          • AddiDataUtilsMatchesCardFilter()
          • AddiDataUtilsSelectDeviceByCapability()
          • AddiDataUtilsSelectMode()
        • Timer Interruptions
          • AddiDataUtilsParseTimebase()
          • AddiDataUtilsInterruptCallback()
          • AddiDataUtilsResetInterruptFlag()
          • AddiDataUtilsHasInterruptHappened()
          • AddiDataUtilsGetValidTimebaseList()
        • Windows-Linux Compatibility
          • _kbhit()
    • C++ API
      • C++ DEVICE INTERFACE
        • setAllDigitalPortsDirections()
        • addidata::addipack::CounterInterface
          • initCounter()
          • startCounter()
          • stopCounter()
          • readCounterValue()
          • readCounterStatus()
          • enableCounterInterrupt()
          • disableCounterInterrupt()
        • addidata::addipack::Device
          • Device()
          • ~Device()
          • getDeviceInformation()
          • timer()
          • counter()
          • digitalIo()
          • digitalIoPorts()
          • watchdog()
          • interrupt()
        • addidata::addipack::DeviceDiscovery
          • getDevices()
          • getDeviceFromId()
        • addidata::addipack::DigitalIOInterface
          • readSingleDigitalInput()
          • readAllDigitalInput()
          • writeSingleDigitalOutput()
          • writeAllDigitalOutput()
          • getDigitalOutputStatus()
          • setInterruptEventForInputs()
          • setInterruptEventForOneInput()
          • setInterruptLogicForPort()
          • setOutputInterrupt()
          • enableDigitalInterrupt()
          • disableDigitalInterrupt()
          • setOutputMemoryOn()
          • setOutputMemoryOff()
        • addidata::addipack::DigitalIOPortsInterface
          • getAllDigitalPortDirections()
          • readAllDigitalInputsFromPort()
          • writeSingleDigitalOutputOnPort()
          • writeAllDigitalOutputsOnPort()
          • getDigitalOutputsStatusOnPort()
          • enableDigitalInterrupt()
          • disableDigitalInterrupt()
          • setOutputMemoryOn()
          • setOutputMemoryOff()
        • addidata::addipack::InterruptInterface
          • ~InterruptInterface()
          • setDeviceInterruptCallback()
          • enableDeviceInterrupts()
          • disableDeviceInterrupts()
          • clearInterruptFifo()
          • isInterruptActive()
        • addidata::addipack::TimerInterface
          • ~TimerInterface()
          • initTimer()
          • setCustomTimerFrequency()
          • startTimer()
          • stopTimer()
          • readTimerValue()
          • readTimerStatus()
          • triggerTimer()
          • enableTimerInterrupt()
          • disableTimerInterrupt()
        • addidata::addipack::WatchdogInterface
          • initWatchdog()
          • startWatchdog()
          • stopWatchdog()
          • readWatchdogValue()
          • readWatchdogStatus()
          • triggerWatchdog()
          • enableWatchdogInterrupt()
          • disableWatchdogInterrupt()
      • C++ ERROR CODES
        • AddiPackException
          • AddiPackException()
          • AddiPackException()
          • what()
          • getCode()
          • getSource()
          • getDomain()
          • getFunction()
          • getReason()
          • setMessage()
          • setErrorCode()
          • getAddiDataLastError()
      • C++ UTILS
        • addidata::addipack::ArgParser
          • ArgParser()
          • init()
          • clear()
          • addOption()
          • addFlag()
          • parse()
          • isFlagSet()
          • isOptionSet()
          • getOptionValue()
        • User I/O
          • printAvailableOptions()
          • getTcwOptionsFromUser()
          • promptString()
          • promptInt()
          • getValidString()
          • getValidInt()
          • exitOnUserInput()
          • displayAllPortsConfigurations()
        • Device
          • selectDeviceByCapability()
          • selectMode()
          • getValidTimebaseList()
        • Timer Interruptions
          • parseTimebase()
          • interruptCallback()
          • resetInterruptFlag()
          • hasInterruptHappened()
  • Help & Informations
    • Maintenance Information
      • Maintenance & Update Guide
        • Updating Addi‑Pack
          • Linux
      • Windows
        • Environment Variable
        • Uninstalling Addi‑Pack
        • Locating Log Files
        • Backward Compatibility
      • Troubleshooting & Common Issues
        • Changelog
      • Contact & Support
  • License & Legal Notice
    • BSD 3-Clause License
AddiPack Documentation
  • License & Legal Notice
  • View page source

License & Legal Notice

ADDI-PACK SDK and Tools Copyright (c) 2025 ADDI-DATA GmbH. All rights reserved.
www.addi-data.com | info@addi-data.com

This package contains components under two different licenses:

  1. Proprietary License:

    The drivers and binary libraries (located in the /driver and /lib directories) are proprietary to ADDI-DATA GmbH and may not be reverse engineered, redistributed, or modified without explicit written permission from ADDI-DATA GmbH.

  2. BSD 3-Clause License:

    The API headers, samples, and development tools are provided under the BSD 3-Clause license (see below), allowing integration, modification, and redistribution with attribution, provided that the copyright notice and this license appear in all copies.


BSD 3-Clause License

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  • Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

  • Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

  • Neither the name of ADDI-DATA GmbH nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


For more information or support:

ADDI-DATA GmbH www.addi-data.com | info@addi-data.com

Previous

© Copyright 2025, Addi-Data GmbH.

Built with Sphinx using a theme provided by Read the Docs.