diff --git a/.gitignore b/.gitignore index d2cb275e..2e048d4b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ -/build -/build-* +build +build-* # CANape artefacts @@ -8,18 +8,34 @@ *.mf4 *.cnaxml *.tmp +CANapeTmpMea.ini -# Examples A2L files -*.a2l + +# Examples .a2l and .bin files +/*.a2l *.bin # Temporary files +test_bintool conversions.a2l groups.a2l typedefs.a2l *.bak +*.log +*.txt +# Other /run_remote.sh /run.sh -/examples/bpf_demo/CANape/CANapeTmpMea.ini +pi +dwarf +.vscode +.DS_Store +test_bpf_demo_pi.sh +test_bin2hex_pi.sh +CANape.aml +tools/gimli_demo/ +tools/dwarf_reader/ +tools/bintool/USAGE_EXAMPLES.md +/examples/hello_xcp/CANape/vCDMstudioUiConfiguration.xml diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 2c34f730..f9ccb770 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -314,10 +314,10 @@ "args": [ "-avz", "--include=\"*.out\"", - "--include=\"*.a\"", + "--include=\"*.a2l\"", "--exclude=\"*\"", "rainer@192.168.0.206:~/XCPlite-RainerZ/build/", - "./build/" + "./pi/" ], "options": { "cwd": "${workspaceFolder}" diff --git a/CANape.aml b/CANape.aml index d742cdda..e5584119 100644 --- a/CANape.aml +++ b/CANape.aml @@ -1,5 +1,5 @@ -// /begin A2ML +/begin A2ML block "IF_DATA" taggedunion if_data { @@ -166,4 +166,4 @@ block "IF_DATA" taggedunion if_data { }; // block "IF_DATA" -// /end A2ML +/end A2ML diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..f1f457c9 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,30 @@ +# Changelog + + + +## [V0.9.3] - Work in Progress + +- More flexible addressing mode configuration in xcp_cfg.h +- Absolute calibration segment addressing (OPTION_CAL_SEGMENTS_ABS in main_cfg.h) +- Signature of xcplib::CreateCalSeg changed, pointer to reference page page +- Automatic EPK segment is optional (OPTION_CAL_SEGMENT_EPK in main_cfg.h) +- Support for more than one base address in relative address mode +- Optional async event with 1ms cycle time and prescaler support (OPTION_DAQ_ASYNC_EVENT in main_cfg.h) +- New experimental demo no_a2l_demo to demonstrate workflows without runtime A2L generation (using a XCPlite specific A2L creator, see README.MD of no_a2l_demo) +- Memory optimization for event/daq-list mapping +- Internal naming convention refactored to support A2L creation for dynamic objects from ELF/DWARF binaries (gXcp, gA2l and __* are ignored by the A2L creator) +- Generated A2L file uses the project_no identifier to indicate the configured addressing schema (currently ACSDD or CASDD) +- Generate IF_DATA CANAPE_ADDRESS_UPDATE for memory segments +- Option to include or embed AML files +- Bugfixes + +## [V0.9.2] + +- Breaking changes to V6 +- Lockless transmit queue. Works on x86-64 strong and ARM-64 weak memory model +- Measurement and read access to variables on stack +- Calibration segments for lock free and thread safe calibration parameter access, consistent calibration changes and page switches +- Supports multiple segments with working and reference page and independent page switching +- Refactored A2L generation macros +- Build as a library +- Used (as FFI library) for the rust xcp-lite version diff --git a/CMakeLists.txt b/CMakeLists.txt index 7ab5d625..eecfe119 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -93,6 +93,29 @@ elseif(CMAKE_C_COMPILER_ID STREQUAL "MSVC") set(COMMON_WARNING_FLAGS /W3) endif() +# Custom build type configurations for debug symbols in release builds +if(CMAKE_C_COMPILER_ID MATCHES "GNU|Clang") + # For Release builds: use -O2 optimization and remove debug symbols and assertions + set(CMAKE_C_FLAGS_RELEASE "-O2 -DNDEBUG") + set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG") + # For RelWithDebInfo builds: release build with moderate optimization and with debug symbols, preserve stack frames + # -fno-omit-frame-pointer: Always generate frame pointer for better stack traces + # -fno-optimize-sibling-calls: Prevent tail call optimization that can confuse debuggers + set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O1 -g -fno-omit-frame-pointer -fno-optimize-sibling-calls -DNDEBUG") + set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O1 -g -fno-omit-frame-pointer -fno-optimize-sibling-calls -DNDEBUG") + # For Debug builds: no optimization, full debug symbols + set(CMAKE_C_FLAGS_DEBUG "-O0 -g") + set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g") + message(STATUS "Custom compiler flags set") +elseif(CMAKE_C_COMPILER_ID STREQUAL "MSVC") + # MSVC equivalent settings + set(CMAKE_C_FLAGS_RELEASE "/O2 /Zi /DNDEBUG") + set(CMAKE_CXX_FLAGS_RELEASE "/O2 /Zi /DNDEBUG") + # /Oy- disables frame pointer omission (equivalent to -fno-omit-frame-pointer) + set(CMAKE_C_FLAGS_RELWITHDEBINFO "/O2 /Zi /Oy- /DNDEBUG") + set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/O2 /Zi /Oy- /DNDEBUG") + message(STATUS "Custom MSVC flags set") +endif() # xcplib sources set(xcplib_SOURCES src/xcpAppl.c src/xcpLite.c src/xcpEthServer.c src/xcpEthTl.c src/xcpQueue32.c src/xcpQueue64.c src/a2l.c src/persistency.c src/platform.c) @@ -134,6 +157,13 @@ add_executable(hello_xcp ${hello_xcp_SOURCES}) target_include_directories(hello_xcp PUBLIC "${PROJECT_ROOT}/inc") target_link_libraries(hello_xcp PRIVATE xcplib) +# Example no_a2l_demo +set(no_a2l_demo_SOURCES examples/no_a2l_demo/src/main.c) +set_source_files_properties(${no_a2l_demo_SOURCES} PROPERTIES LANGUAGE C) +add_executable(no_a2l_demo ${no_a2l_demo_SOURCES}) +target_include_directories(no_a2l_demo PUBLIC "${PROJECT_ROOT}/inc") +target_link_libraries(no_a2l_demo PRIVATE xcplib) + # Example hello_xcp_cpp add_executable(hello_xcp_cpp examples/hello_xcp_cpp/src/main.cpp ) target_include_directories(hello_xcp_cpp PUBLIC "${PROJECT_ROOT}/inc") @@ -219,6 +249,7 @@ else() # Set .out suffix for executables on non-Windows platforms set_target_properties(hello_xcp PROPERTIES SUFFIX ".out") + set_target_properties(no_a2l_demo PROPERTIES SUFFIX ".out") set_target_properties(hello_xcp_cpp PROPERTIES SUFFIX ".out") set_target_properties(c_demo PROPERTIES SUFFIX ".out") set_target_properties(cpp_demo PROPERTIES SUFFIX ".out") diff --git a/README.md b/README.md index 4518e2e3..39d5f39d 100644 --- a/README.md +++ b/README.md @@ -1,359 +1,93 @@ # XCPlite -## Introduction to XCP +## What is XCP? -XCP is a measurement and calibration protocol commonly used in the automotive industry. It is an ASAM standard. +XCP is a measurement and parameter tuning (calibration) protocol commonly used in the automotive industry (ASAM standard). It provides real-time signal acquisition and parameter tuning over various transport protocols with minimal impact on the target system. -It provides real time signal oriented data acquisition (measurement, logging) and modification of parameter constants (calibration) in a target micro controller system (ECU), to help observing and optimizing cyber physical control algorithms in real time. - -Timestamped events, measurement variables and parameter constants are described by an ASAM-A2L description file, another associated ASAM standard. A2L is a human readable ASCII format. -In a micro controller system programmed in C or C++, measurement data items are directly accessed in their original memory locations. This concept has minimum impact on the target system in terms of memory consumption, runtime and needs minimum code instrumentation. The A2l is a kind of annotated ELF Linker-Address-Map, with meta information on data instances and data types (MC specific types - lookup-tables, axis scaling, physical limits and units, conversion rules, ...). +**New to XCP?** See the [detailed XCP introduction](docs/XCP_INTRODUCTION.md) or visit: +- [Vector XCP Book](https://www.vector.com/int/en/know-how/protocols/xcp-measurement-and-calibration-protocol/xcp-book#) +- [Virtual VectorAcademy E-Learning](https://elearning.vector.com/) -In a Microprocessor system developed in a system programming language like C, C++ or Rust, this concept is still useful and efficient. Measurement signals and calibration parameters usually have a static lifetime and a defined memory layout, but no predefined memory location and are not limited to static storage classes. Data acquisition and modification is achieved by appropriate code instrumentation for measurement and wrapper types for groups of calibration parameters. -From a software developer perspective, XCP may be considered to be a high-frequency application level tracing solution, using statically instrumented trace points with configurable associated data. Tracing can be started, stopped and reconfigured during runtime. What is not configured, does not consume bandwidth, memory and other resources. The acquired context data is always consistent and trace events are precisely time stamped. Data types and instances of available context data items are defined as code or obtained by a XCP tool from ELF/DWARF debug information. Data instances may be in global, local, thread local and heap storage locations. In addition to that, XCP provides the capability to modify application variables and state in a thread safe and consistent way. -The ASAM-XCP standard defines a protocol and a transport layer. There are transport layers for all common communication busses used in the automotive industry, such as CAN, CAN-FD, FLEXRAY, SPI and Ethernet. +## About XCPlite -New to XCP? -Checkout the Vector XCP Book: - +XCPlite extends XCP use cases beyond traditional embedded microcontrollers to **modern multicore microprocessors** and SoCs running POSIX-compliant operating systems (Linux, QNX) or real-time operating systems (RTOS) such as ThreadX. -Visit the Virtual VectorAcademy for an E-Learning on XCP: - +Designed exclusively for **Ethernet transport** (TCP/UDP with jumbo frames), XCPlite solves the challenges of measurement and calibration in systems with true parallelism and multithreading: -## XCPlite Overview +- **Thread-safe & lock-free** - Consistent data acquisition and parameter modification across multiple cores +- **Memory-safe** - Measure and calibrate variables in any storage location: stack, heap, thread-local, or global +- **Runtime A2L generation** - Define events, parameters, and metadata as code; A2L description file generated and uploaded automatically +- **Complex type support** - Handle basic types, structs, arrays, and nested structures +- **Calibration segments** - Page switching, consistent atomic modification, and parameter persistence (freeze) +- **PTP timestamps** - Prepared for high-precision synchronized timestamps -XCPlite is an implementation of XCP for Microprocessors in pure C, optimized for the XCP on Ethernet Transport Layer for TCP or UDP with jumbo frames. -It is optimized for 64 Bit platforms with POSIX based Operating Systems, but also runs on 32 Bit platforms and on Windows with some restrictions. -The A2L measurement and calibration object database can be generated during runtime and uploaded by the XCP client tool on connect. +The API provides instrumentation macros for developers to mark measurement points and calibration parameters. Thread safety and data consistency are guaranteed even in high-load multicore scenarios. -XCPlite is provided to test and demonstrate calibration tools such as CANape or any other XCP client implementation. -It may serve as a base for individually customized XCP on Ethernet implementations on Microprocessors. -It implements and demonstrates some techniques how to deal with variables in dynamically allocated memory and how to do measurement and calibration in multi-threaded applications. +Optimized for 64-bit architectures, compatible with 32-bit platforms. Requires C11 (C++20 for C++ support). Serves as the C library foundation for [XCP-Lite Rust](https://github.com/vectorgrp/xcp-lite). -XCPlite is used as a C library by the implementation of XCP for Rust in: - +**Other XCP Implementations:** +- **XCPbasic** - Free implementation for smaller Microcontrollers (8-bit+), optimized for CAN +- **XCPprof** - Commercial product in Vector's AUTOSAR MICROSAR and CANbedded portfolio -### Whats new in XCPlite V0.9.2 +## Requirements -- Breaking changes to V6. -- Lockless transmit queue. Works on x86-64 strong and ARM-64 weak memory model. -- Measurement and read access to variables on stack. -- Supports multiple calibration segments with working and reference page and independent page switching. -- Lock free and thread safe calibration parameter access, consistent calibration changes and page switches. -- Refactored A2L generation macros. -- Build as a library. -- Used (as FFI library) for the rust xcp-lite version. +- **C Standard:** C11 +- **C++ Standard:** C++20 +- **Platforms:** Linux, QNX, macOS, ThreadX, Windows (with some limitations) +- **Tools:** Most examples require CANape 23+ (uses A2L TYPEDEFs and relative addressing) -### Features +## Getting Started -- Supports XCP on TCP or UDP with jumbo frames. -- Thread safe, minimal thread lock and single copy event driven, timestamped high performance and consistent data acquisition. -- Runtime A2L database file generation and upload. -- Prepared for PTP synchronized timestamps. -- Supports calibration and measurement of structures. -- User friendly code instrumentation to create calibration parameter segments, measurement variables and A2L metadata descriptions as code. -- Measurement of global (static), local (stack) or heap variables and class instances. -- Thread safe, lock-free and wait-free ECU access to calibration data. -- Calibration page switching and consistent calibration. -- Calibration segment persistence. +### Examples -There are other implementations of XCP available: -XCPbasic is a free implementation for smaller Microcontrollers (even 8Bit) and optimized for CAN as Transport-Layer. -XCPprof is a commercial product in Vectors AUTOSAR MICROSAR and CANbedded product portfolio. +Multiple examples demonstrating different features are available in the [examples](examples/) folder. -### Compatibilty +**Start here:** +- `hello_xcp` - Basic XCP server setup and instrumentation in C +- `hello_xcp_cpp` - Basic instrumentation in C++ -The required C and and C++ language standards are C11 and C++20. +**Advanced examples:** +- `c_demo` - Complex data objects, calibration objects, and page switching +- `struct_demo` - Nested structs and multidimensional arrays +- `multi_thread_demo` - Multi-threaded measurement and parameter sharing +- `cpp_demo` - C++ class instrumentation and RAII wrappers +- `no_a2l_demo` - Workflow without runtime A2L generation +- `bpf_demo` - Experimental syscall tracing -Most of the examples require CANape 23 or later, because they use A2L TYPEDEFs and relative memory addressing. +For detailed information about each example and how to set up CANape projects, see the [examples documentation](examples/README.md). -### Documentation - -A description of the XCP instrumentation API is available in the doc folder. - -## Examples - -Examples are found in the examples folder. - -To get started, take a first look at C example hello_xcp and then at hello_xcp_cpp for C++. - -### Example CANape projects - -There is a CANape project for each example in a directory folder "examples//CANape". -To load a project into CANape, select load project and navigate to the CANape.ini file in this folder. -All CANape project examples are configured to upload the A2L file via XCP. The IP address of the XCP server is stored in the A2L file uploaded last time. If CANape can not connect, check that the correct IP address is configured in "Device Configuration/Devices//Protocol/Transport Layer". - -The examples should run with a CANape demo version, which can be downloaded from . -The demo installation must be explicitly enabled in the installer and has some limitations: -It will store only the first seconds of measurement data and the number of measurement signals is limited. - -Note: Some of the examples use display windows without title bars to make it look cleaner. This option can be turned of with "Options/Display/View/Display Headline". - -### Example Details - -hello_xcp: - Demonstrates how to start the XCP on Ethernet server and use the runtime A2L generator. - Shows how to create a calibration parameter segment structure, register the parameters in the segment and access them safely. - Defines events for measurement of global and local variables. - Demonstrates the different addressing modes for variables and parameters. - Defines a function, registers local variables and function parameters and creates and triggers a measurement event in the function. - -hello_xcp_cpp: - Demonstrates how to instrument a member function of a C++ class and how to register and access calibration parameters in C++. - -The other examples cover more advanced topics: - -- Safely share calibration parameters among different threads. -- Measure instances of complex types, such a structs, arrays, nested structs and arrays of structs by using typedefs. -- Create complex parameters, like maps, curves and lookup tables with fixed or shared axis. -- Measure thread local instances of variables, create event instances. -- Create physical conversion rules and enumerations. -- Create additional groups. -- Use consistent atomic calibration. -- Make calibration changes persistent (freeze). -- Use the xcplib API to create context and span, measure durations. - -c_demo: - Shows more complex data objects (structs, arrays) and calibration objects (axis, maps and curves). - Measurement variables on stack and in global memory. - Consistent calibration changes and measurement. - Calibration page switching and EPK version check. - Note: If CANAPE_24 is defined in sig_gen.hpp, the lookup table is a nested typedef, it uses a THIS. references to its shared axis contained in the typedef. - -struct_demo: - Shows how to define measurement variables in nested structs, multidimensional fields and arrays of structs - -multi_thread_demo: - Shows measurement in multiple threads. - Create thread local instances of events and measurements. - Share a calibration parameter segment among multiple threads. - Thread safe and consistent access to calibration parameters. - Experimental code to demonstrate how to create context and spans using the XCP instrumentation API. - -cpp_demo: - Demonstrates the calibration segment RAII wrapper. - Demonstrates measurement of member variables and stack variables in class instance member functions. - Shows how to create a class with calibration parameters as member variables. - -threadx_demo: - Planned - -bpf_demo: - Experimental, work in progress. - Demonstrates tracing of process creations and selected syscalls. - -![CANape Screenshot](examples/cpp_demo/cpp_demo.png) - -### Building a CANape project and configuration from scratch - -How to create a new CANape project from scratch is described in the CANape help under "Creating a project and configuration (quick guide)". - -The easiest way to create a new CANape project for XCPlite is: - -- Create a new project in 'Backstage/Project/New'. -- Drag&Drop the A2L file generated by XCPlite on the CANape desktop and step through the pop up dialog pages: - Select XCP, Ethernet and LocalPC:ETH to use the local PCs ethernet adapter. - All other settings may stay on default. -- CANape should now be already connected. - If not, check the Ethernet settings in 'Device/DeviceConfiguration/Devices/MyDevice/Protocol/TransportLayer'. -- To configure CANape for automatic upload of the A2L file, a few more setting have to be modified once in the new project: - In 'Device/DeviceConfiguration/Devices/MyDevice/Database', enable automatic detection of database content and select 'Check identifier and content'. - -The automatic A2L upload then happens every time a new version of A2L file has been generated. -Depending on the settings in XCPlite, this happens after the first run of a new software build, or each time the application is restarted. -Of course, the A2L file may also be copied manually into the CANape project folder. - -### Build on Linux or macOS - -Use the build script to build the library xcplib, example targets and get comprehensive output on issues: - -```bash -./build.sh -``` - -Or build individual example targets: - -```bash -cmake -DCMAKE_BUILD_TYPE=Debug -S . -B build -make --directory ./build hello_xcp -``` - -### Build on Windows - -It is possible to build for Windows with the Microsoft Visual Studio compiler, but there are some limitations and performance penalties under Windows. -XCPlite is optimized for Posix based systems. -On Windows, atomic operations are emulated and the transmit queue always uses a mutex on the producer side. - -```bash -cmake -DCMAKE_BUILD_TYPE=Debug -S . -B build-msvc -cmake --build build-msvc --target hello_xcp -build-msvc/debug/hello_xcp.exe -``` - -To create a Visual Studio solution: - -```bash -./build.bat -``` - -## Appendix - -### Trouble shooting compilation issues - -First of all, note that XCPlite requires C11 (and C++17 for C++ support). -A possible problematic requirement is that the 64-bit lockless transmit queue implementation requires atomic_uint_least4. -This may cause problems on some platforms when using the clang compiler. -Prefer gcc for better compatibility. -If this is not an option, the mutex based 32-bit queue may be used instead. - -```bash - -# Test with system default -cmake -B build -S . && cmake --build build - -# Test with clang -cmake -B build-clang -S . -DUSE_CLANG=ON && cmake --build build-clang - -# Test with GCC -cmake -B build-gcc -S . -DUSE_GCC=ON && cmake --build build-gcc - -``` - -There is a script 'build.sh' to automate the build process and to check which of the targets have build issues. -If there are failures, copy & paste the complete output and provide it. - -```bash -./build.sh -``` - -'build.sh' has command line parameters to select a release or debug build and force the compiler to be used. - -```bash -./build.sh --help -``` - -Default is the system default compiler and debug build. - -On failure try to force gcc: - -```bash -./build.sh gcc -``` - -If still fails and if type_detection_test_c builds ok, run it. +### Build +**Linux/macOS:** ```bash -./build/type_detection_test_c.out +./build.sh # Build all targets +# or +cmake -S . -B build && cmake --build build --target hello_xcp ``` -Copy & paste the complete output and provide it. - -Same with type_detection_test_cpp. - +**Windows:** ```bash -./build/type_detection_test_cpp.out +./build.bat # Creates Visual Studio solution +# or +cmake -S . -B build-msvc && cmake --build build-msvc --target hello_xcp ``` -### Instrumentation cost and side effects - -Keeping code instrumentation side effects as small as possible was one of the major goals, but of course there are effects caused by the code instrumentation: - -Data Acquisition: - -The measurement data acquisition trigger and data transfer is a lock-free implementations for the producer. It may be switched to simpler a mutex based implementation, if the platform requirements can not be met. DAQ trigger needs a external call to get the current time. -Some of the DAQ trigger macros do a lazy event lookup by name at the first time (for the convenience not to care about event handles), and cache the result in static or thread local memory. -The instrumentation to create events, uses a mutex lock against other simultaneous event creations. - -Measurement of function parameters and local variables, has the side effect that the compiler will spill the parameters from registers to stack frame and always keeps local variables on the stack frame. This is a side effect of the in scope registration macros, so it will work even with optimization level > -O0. There is no undefined behavior caused by compiler optimizations. - -Calibration: - -The instrumentation to create calibration segments, use a mutex lock against other simultaneous segment creations. -During the creation of a calibration segment, heap allocations for 3 copies of the initial page are requested (a reference, a working page and a single RCU swap page). -Calibration segment access is thread safe and lock less. There is no more heap allocation per thread needed. - -A2L Generation: - -The A2L generation simply uses the file system. There is no need for memory. It opens 4 different files, which will be merged on A2L finalization. -The A2l generation macros are not thread safe and don't have an underlying once pattern. It is up to the user to take care for locking and one time execution. There are helper functions and macros to make this easy. - -The overall concepts often relies on one time execution patterns. If this is not acceptable, the application has to take care for creating events and calibration segments in a controlled way. The A2l address generation for measurement variables on stack needs to be done once in local scope, there is no other option yet. Also the different options to create thread local instances of measurement data. - -### A2L file generation and address update options - -Option 1: -The A2L file is always created during application runtime. The A2L may be volatile, which means it may change on each restart of the application. This happens, when there are race conditions in registering calibration segments and events. The A2L file is just uploaded again by the XCP client. -To avoid A2L changes on each restart, the creation order of events and calibration segments just has to be deterministic. -As a default, the A2L version identifier (EPK) is generated from build time and date. If the A2L file is not stable, it is up to the user to provide an EPK version string which reflects this, otherwise it could create undefined behavior. - -Option 2: -The A2l file is created only once during the first run of a new build of the application. -A copy of all calibration segments and events definitions and calibration segment data is stored in a binary .bin file to achieve the same ordering in the next application start. BIN and A2L file get a unique name based on the software version string. The EPK software version string is used to check validity of the A2l and BIN file. -The existing A2L file is provided for upload to the XCP client or may be provided to the tool by copying it. -As a side effect, calibration segment persistency (freeze command) is supported. - -Option 3: -Create the A2L file once and update it with an A2L update tool such as the CANape integrated A2L Updater or Open Source a2ltool. -Note that currently, the usual A2L tools will only update absolute addresses for variables and instances in global memory and offsets of structure fields. -Data acquisition of variables on stack and relative addressing, is not possible today. This might change in a future version of the A2L Updater. - -XCPlite makes intensive use of relative addressing. -The addressing mode is indicated by the address extension: -0 - Calibration segment (A2L MEMORY_SEGMENT) relative address, high word of the address is the calibration segment index. -1 - Absolute address (Unsigned 32Bit, relative to main module load address). -2 - Signed 32Bit relative address, default is relative to the stack frame pointer of the function which triggers the event. -3 - Signed 16Bit relative address, high word of the address is the event id. This allows asynchronous (polling) access to the variable. Used for heap and class instance member variables. - -### Platform and language standard requirements and resource usage - -- _Generic and declspec for A2L generation type detection - Requires C11 and C++17 - -- File system: fopen, fprintf. - Used for A2L generation and optional calibration persistency to a binary file - -- Heap allocation: malloc, free. - Transmit queue (XcpEthServerInit, parameter queue size). - DAQ table memory (XcpInit, OPTION_DAQ_MEM_SIZE in main_cfg.h). - Calibration segments page memory (XcpCreateCalSeg, 3 copies of the default page for working page, xcp page and RCU). - -- Atomics (C11 stdatomic.h). - Requires atomic_uintptr_t, atomic_uint_fast8_t, atomic_uint_fast64_t, exchange, compare_exchange, fetch_sub, fetch_add. - Used for lock free queue (xcpQueue64), lock free calibration segments, DYN address mode cmd pending state, DAQ running state. - -- THREAD (Linux: pthread_create, pthread_join, pthread_cancel). - Used for XCP transmit and receive thread. - -- THREAD_LOCAL (C11:_Thread_local). - Used for the DaqEvent macros and A2L generation for per thread variable instances. - -- MUTEX (Linux: pthread_mutex_lock, pthread_mutex_unlock). - Used for 32 Bit Queue acquire, queue consumer incrementing the transport layer counter, thread safe creating event and calseg, thread safe lazy A2L registration. - -- Sleep (Linux: nanosleep). - Used for receive thread polling loop. - -- Clock (Linux: clock_gettime). - Used as DAQ timestamp clock. +**Note:** Windows has some limitations (atomic operations emulated, mutex-based transmit queue). -- Sockets (Linux: socket, ...). +For detailed build instructions and troubleshooting, see [Building Documentation](docs/BUILDING.md). -### Known issues +## Documentation -- COPY_CAL_PAGE: CANape initialize RAM is executed only on the first calibration segment. Workaround: always copy all segments. -- CANape ignores segment numbers in A2L, if segment numbering starts with 1, SET_CAL_PAGE is executed on segment 0 and 1 -- GET_ID 5 (EPK) mode = 0x01 is ignored by CANape. Workaround: always provide EPK via upload. -- CANape executes GET_SEGMENT_MODE multiple times on the last calibration segment before freeze request. -- Address extension of memory segment is ignored by CANape. Workaround: using 0 for calibration segment relative addressing. -- Request for unique address extension per DAQ list is ignored by CANape (DAQ_KEY_BYTE == DAQ_EXT_DAQ). Workaround: Store the address extension per ODT entry. -- CANape < V24 does not support shared axis in typedefs or THIS. axis references. -- Transport Layer counter mutex could be avoided with alternative counter mode, which is not default in CANape. -- Indicate when polling access is not possible. CANape assumes polling access is always possible. -- Configuration for begin/end atomic calibration user defined XCP commend is not default. Must be set once in a new CANape project to 0x01F1 and 0x02F1. +- **[API Reference](docs/xcplib.md)** - XCP instrumentation API +- **[Configuration](docs/xcplib_cfg.md)** - Configuration options +- **[Examples](examples/README.md)** - Example applications and CANape setup +- **[Technical Details](docs/TECHNICAL.md)** - Addressing modes, A2L generation, instrumentation costs +- **[Building](docs/BUILDING.md)** - Detailed build instructions and troubleshooting +- **[XCP Introduction](docs/XCP_INTRODUCTION.md)** - What is XCP? +- **[Changelog](CHANGELOG.md)** - Version history -### Todo +## License -- CANape ignores address extension of loop_histogram in ccp_demo, when saving calibration values to a parameter file - loop_histogram is a CHARACTERISTIC array, but it is in a measurement group +See [LICENSE](LICENSE) file for details. diff --git a/build.sh b/build.sh index defe67cc..de3fd8d7 100755 --- a/build.sh +++ b/build.sh @@ -1,7 +1,5 @@ - #!/bin/bash -# ccmake -B build -S . # Parse command line arguments BUILD_TYPE="Debug" # Default to Debug build @@ -14,7 +12,7 @@ show_usage() { echo "Usage: $0 [build_type] [compiler] [target] [options]" echo "" echo "Parameters:" - echo " build_type: debug|release (default: debug)" + echo " build_type: debug|release|relwithdebinfo (default: debug)" echo " compiler: gcc|clang" echo " target: lib|examples|tests|bpf|all (default: examples)" echo "" @@ -49,7 +47,7 @@ show_usage() { echo " bpf_demo: Only built on Linux systems (requires BPF support)" } -# Parse arguments +# Parse arguments and set correct case for CMake for arg in "$@"; do # Convert to lowercase for comparison arg_lower=$(echo "$arg" | tr '[:upper:]' '[:lower:]') @@ -60,6 +58,9 @@ for arg in "$@"; do release) BUILD_TYPE="Release" ;; + relwithdebinfo) + BUILD_TYPE="RelWithDebInfo" + ;; gcc) COMPILER_CHOICE="gcc" ;; @@ -129,8 +130,7 @@ case "$COMPILER_CHOICE" in ;; esac -BUILD_TYPE_UPPER=$(echo "$BUILD_TYPE" | tr '[:lower:]' '[:upper:]') -echo "Building in $BUILD_TYPE_UPPER mode with $COMPILER_NAME compiler" +echo "Building in $BUILD_TYPE mode with $COMPILER_NAME compiler" echo "Build directory: $BUILD_DIR" echo "Build target: $BUILD_TARGET" @@ -181,6 +181,7 @@ LIBRARY_TARGET="xcplib" EXAMPLE_TARGETS=( "hello_xcp" "hello_xcp_cpp" + "no_a2l_demo" "c_demo" "cpp_demo" "struct_demo" @@ -350,7 +351,7 @@ echo "" echo "===================================================================" echo "BUILD SUMMARY" echo "===================================================================" -echo "Build Configuration: $BUILD_TYPE_UPPER mode with $COMPILER_NAME compiler" +echo "Build Configuration: $BUILD_TYPE mode with $COMPILER_NAME compiler" if [ "$COMPILER_CHOICE" = "" ] || [ "$COMPILER_CHOICE" = "default" ]; then echo "System Compiler: $ACTUAL_COMPILER" fi @@ -395,19 +396,20 @@ echo "===================================================================" # Exit with error code if any target failed if [ ${#FAILED_TARGETS[@]} -gt 0 ]; then if [ "$COMPILER_CHOICE" = "" ] || [ "$COMPILER_CHOICE" = "default" ]; then - echo "Total: ${#SUCCESSFUL_TARGETS[@]} successful, ${#FAILED_TARGETS[@]} failed ($BUILD_TYPE_UPPER build with $COMPILER_NAME - $ACTUAL_COMPILER)" + echo "Total: ${#SUCCESSFUL_TARGETS[@]} successful, ${#FAILED_TARGETS[@]} failed ($BUILD_TYPE build with $COMPILER_NAME - $ACTUAL_COMPILER)" else - echo "Total: ${#SUCCESSFUL_TARGETS[@]} successful, ${#FAILED_TARGETS[@]} failed ($BUILD_TYPE_UPPER build with $COMPILER_NAME)" + echo "Total: ${#SUCCESSFUL_TARGETS[@]} successful, ${#FAILED_TARGETS[@]} failed ($BUILD_TYPE build with $COMPILER_NAME)" fi echo "===================================================================" exit 1 else if [ "$COMPILER_CHOICE" = "" ] || [ "$COMPILER_CHOICE" = "default" ]; then - echo "Build completed successfully: $BUILD_TYPE_UPPER mode with $COMPILER_NAME compiler ($ACTUAL_COMPILER)" + echo "Build completed successfully: $BUILD_TYPE mode with $COMPILER_NAME compiler ($ACTUAL_COMPILER)" else - echo "Build completed successfully: $BUILD_TYPE_UPPER mode with $COMPILER_NAME compiler" + echo "Build completed successfully: $BUILD_TYPE mode with $COMPILER_NAME compiler" fi echo "===================================================================" + echo "" exit 0 fi diff --git a/docs/BUILDING.md b/docs/BUILDING.md new file mode 100644 index 00000000..43364f5e --- /dev/null +++ b/docs/BUILDING.md @@ -0,0 +1,119 @@ +# Building XCPlite + +## Requirements + +- **C Standard:** C11 +- **C++ Standard:** C++20 (for C++ support) +- **Platforms:** Linux, macOS, Windows (with limitations) + +Most of the examples require **CANape 23 or later**, because they use A2L TYPEDEFs and relative memory addressing. + +## Quick Build + +### Linux or macOS + +Use the build script to build the library xcplib, example targets and get comprehensive output on issues: + +```bash +./build.sh +``` + +Or build individual example targets: + +```bash +cmake -DCMAKE_BUILD_TYPE=Debug -S . -B build +make --directory ./build hello_xcp +``` + +### Windows + +It is possible to build for Windows with the Microsoft Visual Studio compiler, but there are some limitations and performance penalties under Windows. +XCPlite is optimized for Posix based systems. +On Windows, atomic operations are emulated and the transmit queue always uses a mutex on the producer side. + +```bash +cmake -DCMAKE_BUILD_TYPE=Debug -S . -B build-msvc +cmake --build build-msvc --target hello_xcp +build-msvc/debug/hello_xcp.exe +``` + +To create a Visual Studio solution: + +```bash +./build.bat +``` + +## Troubleshooting Compilation Issues + +First of all, note that XCPlite requires C11 (and C++17 for C++ support). + +A possible problematic requirement is that the 64-bit lockless transmit queue implementation requires `atomic_uint_least64_t`. +This may cause problems on some platforms when using the clang compiler. +**Prefer gcc for better compatibility.** +If this is not an option, the mutex based 32-bit queue may be used instead. + +### Testing Different Compilers + +```bash +# Test with system default +cmake -B build -S . && cmake --build build + +# Test with clang +cmake -B build-clang -S . -DUSE_CLANG=ON && cmake --build build-clang + +# Test with GCC +cmake -B build-gcc -S . -DUSE_GCC=ON && cmake --build build-gcc +``` + +### Using build.sh for Diagnostics + +There is a script `build.sh` to automate the build process and to check which of the targets have build issues. +If there are failures, copy & paste the complete output and provide it. + +```bash +./build.sh +``` + +`build.sh` has command line parameters to select a release or debug build and force the compiler to be used: + +```bash +./build.sh --help +``` + +Default is the system default compiler and debug build. + +On failure try to force gcc: + +```bash +./build.sh gcc +``` + +### Type Detection Tests + +If build fails and if `type_detection_test_c` builds ok, run it: + +```bash +./build/type_detection_test_c.out +``` + +Copy & paste the complete output and provide it. + +Same with `type_detection_test_cpp`: + +```bash +./build/type_detection_test_cpp.out +``` + +## Platform-Specific Notes + +### Windows Limitations + +- Atomic operations are emulated +- The transmit queue always uses a mutex on the producer side +- Overall performance is lower compared to POSIX systems + +### Compiler Compatibility + +- **Recommended:** GCC (best compatibility with atomic operations) +- **Alternative:** Clang (may have issues with `atomic_uint_least64_t` on some platforms) +- **Windows:** MSVC (with limitations noted above) diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 00000000..a3451280 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,22 @@ +# XCPlite Documentation + +This directory contains detailed documentation for XCPlite. + +## Documentation Index + +### Getting Started +- **[XCP Introduction](XCP_INTRODUCTION.md)** - Detailed introduction to the XCP protocol +- **[Examples](../examples/README.md)** - Example applications and tutorials + +### API Reference +- **[xcplib.md](xcplib.md)** - XCP instrumentation API reference +- **[xcplib_cfg.md](xcplib_cfg.md)** - Configuration options + +### Advanced Topics +- **[Technical Details](TECHNICAL.md)** - Instrumentation costs, A2L generation, addressing modes, EPK +- **[Building](BUILDING.md)** - Detailed build instructions and troubleshooting + +### Additional Resources +- [CHANGELOG](../CHANGELOG.md) - Version history and changes +- [Vector XCP Book](https://www.vector.com/int/en/know-how/protocols/xcp-measurement-and-calibration-protocol/xcp-book#) +- [Virtual VectorAcademy](https://elearning.vector.com/) diff --git a/docs/TECHNICAL.md b/docs/TECHNICAL.md new file mode 100644 index 00000000..0a671027 --- /dev/null +++ b/docs/TECHNICAL.md @@ -0,0 +1,187 @@ +# XCPlite Technical Details + +This document contains advanced technical information about XCPlite's implementation, addressing modes, and configuration options. + +## Instrumentation Cost and Side Effects + +Keeping code instrumentation side effects as small as possible was one of the major goals, but of course there are effects caused by the code instrumentation: + +### Data Acquisition + +The measurement data acquisition trigger and data transfer is a lock-free implementation for the producer. It may be switched to simpler a mutex based implementation, if the platform requirements can not be met. DAQ trigger needs an external call to get the current time. + +Some of the DAQ trigger macros do a lazy event lookup by name at the first time (for the convenience not to care about event handles), and cache the result in static or thread local memory. + +The instrumentation to create events uses a mutex lock against other simultaneous event creations. + +### Measurement of Function Parameters and Local Variables + +Measurement of function parameters and local variables has the side effect that the compiler will spill the parameters from registers to stack frame and always keeps local variables on the stack frame. This is a side effect of the in scope registration macros, so it will work even with optimization level > -O0. There is no undefined behavior caused by compiler optimizations. + +### Calibration + +The instrumentation to create calibration parameter segments use a mutex lock against other simultaneous segment creations. + +During the creation of a calibration segment, heap allocations for 3 copies of the initial page are requested (a reference, a working page and a single RCU swap page). + +Calibration segment access is thread safe and lock less. There is no more heap allocation per thread needed. + +### A2L Generation + +The A2L generation simply uses the file system. There is no need for memory. It opens 4 different files, which will be merged on A2L finalization. + +The A2l generation macros are not thread safe and don't have an underlying once pattern. It is up to the user to take care for locking and one time execution. There are helper functions and macros to make this easy. + +### One-Time Execution Patterns + +The overall concepts often relies on one time execution patterns. If this is not acceptable, the application has to take care for creating events and calibration segments in a controlled way. The A2l address generation for measurement variables on stack needs to be done once in local scope, there is no other option yet. Also the different options to create thread local instances of measurement data. + +## A2L File Generation and Address Update Options + +### Option 1: Runtime Generation (Volatile) + +The A2L file is always created during application runtime. The A2L may be volatile, which means it may change on each restart of the application. This happens when there are race conditions in registering segments and events. The A2L file is just uploaded again by the XCP client. + +To avoid A2L changes on each restart, the creation order of events and segments just has to be deterministic. + +As a default, the A2L version identifier (EPK) is generated from build time and date. If the A2L file is not stable, it is up to the user to provide an EPK version string which reflects this, otherwise it could create undefined behavior. + +### Option 2: Persistent Generation with Freeze Support + +The A2l file is created only once during the first run of a new build of the application. + +A copy of all calibration parameter segments and events definitions and of the parameter data is stored in a binary .bin file to achieve the same ordering in the next application start. BIN and A2L file get a unique name based on the software version string. The EPK software version string is used to check validity of the A2l and BIN file. + +The existing A2L file is provided for upload to the XCP client or may be provided to the tool by copying it. + +As a side effect, calibration segment persistency (freeze command) is supported. + +### Option 3: External A2L Update Tools + +Create the A2L file once and update it with an A2L update tool such as the CANape integrated A2L Updater or Open Source a2ltool. + +**Note:** Currently, the usual A2L tools will only update absolute addresses for variables and instances in global memory and offsets of structure fields. + +Data acquisition of variables on stack and relative addressing is not possible today. This might change in a future version of the A2L Updater. + +### Option 4: No Runtime A2L Generation (Absolute Addressing) + +Disable A2L generation or don't use the A2L generation functions at all. + +Enable absolute addressing for calibration segments (`#define OPTION_CAL_SEGMENTS_ABS` in `main_cfg.h`). + +Use only absolute addressing mode, which is in this mode associated to address extension 0. + +The A2l file may then be created and updated with any usual method of your choice, using CANape, A2L-Studio, A2L-Creator, a2ltool, ... + +**Limitations:** +- Measurement of heap and stack is not possible anymore +- You are now limited to 32 bit address range starting at the module load address (`ApplXcpGetBaseAddr()`/`xcp_get_base_addr()`) + +**Advantages:** +- Thread safe parameter modification using calibration segments is still assured +- Thread safety of measurement data acquisition is now in your responsibility, by using a safe fixed event for each individual measurement variable + +### Option 5: XCPlite-Specific A2L Creator (Experimental) + +Experimental. Use a XCPlite specific A2L creator tool, which is aware of the different addressing schemes and static markers created by the code instrumentation macros. + +Experimental, work in progress. See `no_a2l_demo`. + +## Addressing Modes + +XCPlite makes intensive use of relative addressing. + +The addressing mode is indicated by the address extension: + +- **0/1** - Calibration segment (A2L MEMORY_SEGMENT) relative address, high word of the address is the segment index +- **1/0** - Absolute address (Unsigned 32Bit, relative to main module load address) +- **2** - Signed 32Bit relative address, default is relative to the stack frame pointer of the function which triggers the event +- **3..** - Signed 16Bit relative address, high word of the address is the event id. This allows asynchronous (polling) access to the variable. Used for heap and class instance member variables + +### CASDD vs ACSDD + +Depending on `#define OPTION_CAL_SEGMENTS_ABS` in `main_cfg.h`, address extension 0 is either the absolute addressing mode or the segment relative addressing mode. + +The 2 modes are named **CASDD** and **ACSDD**. The A2L `project_no` is used to indicate the addressing mode to A2L creators or updaters. + +This is important, because CANape does not support address extensions >0 for parameters in calibration segments. + +Parameters in calibration segments may be accessed by their segment relative address or by their absolute address, using the corresponding address extension. + +### Calibration Parameter Absolute Addressing + +The absolute address of a calibration parameter is an address within the default/reference page structure. This requires that the pointer to the default parameters (reference page) given to `XcpCreateCalSeg` are within the 32 bit addressable with static lifetime! `XcpCreateCalSeg` does not copy the default parameters. + +This would be possible when only using segment relative addressing mode, but is currently not implemented. + +## EPK - ECU Software Version + +To check compatibility of target ECU, A2L and binary parameter files, the so called EPK is used. It is a software version string specified in the A2L file, with an additional address where it is located in the ECU. + +The EPK does not have an explicit address extension, which means it defaults to 0. However the address extension 0 is defined in xcplib, as absolute or segment relative mode, the EPK may be accessed by its memory address. In addition, there is a special XCP info command `GET_ID` mode=5 to obtain the EPK from the ECU. + +### EPK and Binary Parameter Files + +To be able to check the compatibility of binary parameter files, which store only parameter data in calibration parameter segments, an EPK memory segment is needed. This is important, because if CANape persists and caches calibration parameter segments in binary files and if the EPK is not in the address range of a memory segment, there is no way to check compatibility of the binary files. + +In XCPlite, the EPK may be specified with an xcplib API function or is generated from build time and date when calibration segment persistence mode is enabled. + +## Platform and Language Standard Requirements + +### Language Features + +- **_Generic and declspec** for A2L generation type detection + - Requires C11 and C++17 + +### System Resources + +**File system:** `fopen`, `fprintf` +- Used for A2L generation and optional parameter persistency to a binary file + +**Heap allocation:** `malloc`, `free` +- Transmit queue (`XcpEthServerInit`, parameter queue size) +- DAQ table memory (`XcpInit`, `OPTION_DAQ_MEM_SIZE` in `main_cfg.h`) +- Calibration segments page memory (`XcpCreateCalSeg`, 3 copies of the default page for working page, xcp page and RCU) + +**Atomics:** C11 `stdatomic.h` +- Requires: `atomic_uintptr_t`, `atomic_uint_fast8_t`, `atomic_uint_fast64_t`, `exchange`, `compare_exchange`, `fetch_sub`, `fetch_add` +- Used for: lock free queue (`xcpQueue64`), lock free calibration parameter segments, DYN address mode cmd pending state, DAQ running state + +**THREAD:** Linux: `pthread_create`, `pthread_join`, `pthread_cancel` +- Used for XCP transmit and receive thread + +**THREAD_LOCAL:** C11:`_Thread_local` +- Used for the DaqEvent macros and A2L generation for per thread variable instances + +**MUTEX:** Linux: `pthread_mutex_lock`, `pthread_mutex_unlock` +- Used for: 32 Bit Queue acquire, queue consumer incrementing the transport layer counter, thread safe creating event and calseg, thread safe lazy A2L registration + +**Sleep:** Linux: `nanosleep` +- Used for receive thread polling loop + +**Clock:** Linux: `clock_gettime` +- Used as DAQ timestamp clock + +**Sockets:** Linux: `socket`, ... +- Used for XCP on Ethernet transport layer + +## Known Issues + +### CANape-Specific Issues + +- **COPY_CAL_PAGE:** CANape initialize RAM is executed only on the first memory segment. **Workaround:** always copy all segments +- CANape ignores segment numbers in A2L, if segment numbering starts with 1, SET_CAL_PAGE is executed on segment 0 and 1 +- **GET_ID 5 (EPK)** mode = 0x01 is ignored by CANape. **Workaround:** always provide EPK via upload +- CANape executes GET_SEGMENT_MODE multiple times on the last memory segment before freeze request +- Address extension of memory segment is ignored by CANape. **Workaround:** using 0 for segment relative addressing +- Request for unique address extension per DAQ list is ignored by CANape (DAQ_KEY_BYTE == DAQ_EXT_DAQ). **Workaround:** Store the address extension per ODT entry +- CANape < V24 does not support shared axis in typedefs or THIS. axis references +- Transport Layer counter mutex could be avoided with alternative counter mode, which is not default in CANape +- Indicate when polling access is not possible. CANape assumes polling access is always possible +- Configuration for begin/end atomic calibration user defined XCP command is not default. Must be set once in a new CANape project to 0x01F1 and 0x02F1 +- EPK segment is defined with 2 readonly pages, because of CANape irritations with mixed mode calibration segment. CANape would not care for a single page EPK segment, reads active page always from segment 0 and uses only SET_CAL_PAGE ALL mode + +### Other Issues + +- CANape ignores address extension of `loop_histogram` in ccp_demo, when saving calibration values to a parameter file. `loop_histogram` is a CHARACTERISTIC array, but it is in a measurement group diff --git a/docs/XCP_INTRODUCTION.md b/docs/XCP_INTRODUCTION.md new file mode 100644 index 00000000..8b1ba474 --- /dev/null +++ b/docs/XCP_INTRODUCTION.md @@ -0,0 +1,40 @@ +# Introduction to XCP + +## What is XCP? + +XCP is a measurement and parameter tuning (calibration) protocol commonly used in the automotive industry. It is an ASAM standard. + +It provides real time signal oriented data acquisition (measurement, logging) and tuning of parameter constants (calibration) in a target micro controller system (ECU), to help observing and optimizing cyber physical control algorithms in real time. + +## How XCP Works + +Timestamped events, measurement variables and parameter constants are described by an ASAM-A2L description file, another associated ASAM standard. A2L is a human readable ASCII format. + +In a micro controller system programmed in C or C++, measurement data items are directly accessed in their original memory locations. This concept has minimum impact on the target system in terms of memory consumption, runtime and needs minimum code instrumentation. The A2l is a kind of annotated ELF Linker-Address-Map, with meta information on data instances and data types (MC specific types - lookup-tables, axis scaling, physical limits and units, conversion rules, ...). + +In a Microprocessor system developed in a system programming language like C, C++ or Rust, this concept is still useful and efficient. Measurement signals and calibration parameters usually have a static lifetime and a defined memory layout, but no predefined memory location and are not limited to static storage classes. Data acquisition and modification is achieved by appropriate code instrumentation for measurement and wrapper types for groups of calibration parameters. + +## XCP from a Developer Perspective + +From a software developer perspective, XCP may be considered to be a high-frequency application level tracing solution, using statically instrumented trace points with configurable associated data. Tracing can be started, stopped and reconfigured during runtime. What is not configured, does not consume bandwidth, memory and other resources. The acquired context data is always consistent and trace events are precisely time stamped. Data types and instances of available context data items are defined as code or obtained by a XCP tool from ELF/DWARF debug information. Data instances may be in global, local, thread local and heap storage locations. In addition to that, XCP provides the capability to modify application variables and state in a thread safe and consistent way. + +## XCP Protocol and Transport Layers + +The ASAM-XCP standard defines a protocol and a transport layer. There are transport layers for all common communication busses used in the automotive industry, such as CAN, CAN-FD, FLEXRAY, SPI and Ethernet. + +## Learning Resources + +New to XCP? + +**Vector XCP Book:** + + +**Virtual VectorAcademy E-Learning:** + + +## Other XCP Implementations + +There are other implementations of XCP available: + +- **XCPbasic** - A free implementation for smaller Microcontrollers (even 8Bit) and optimized for CAN as Transport-Layer +- **XCPprof** - A commercial product in Vector's AUTOSAR MICROSAR and CANbedded product portfolio diff --git a/docs/xcplib.md b/docs/xcplib.md index 8a4ff411..1b9f7883 100644 --- a/docs/xcplib.md +++ b/docs/xcplib.md @@ -1,6 +1,6 @@ # XCPlite API Reference Guide -**Version**: 0.9.2 +**Version**: 0.9.3 ## Table of Contents @@ -45,7 +45,7 @@ Key features: 3. **Initialise the XCP core** *once*: ```c - XcpInit(true); + XcpInit("MyProject", "V1.0.1",true); ``` 4. **Start the Ethernet server** (TCP or UDP, IP addr, port): @@ -67,7 +67,7 @@ Key features: ### Initialization -#### void XcpInit( bool activate) +#### void XcpInit(const char *project_name, const char*epk, bool activate) *Initialize XCP* @@ -120,7 +120,7 @@ See function and macro documentation in xcplib.h ### 3.4 A2L Generation -#### bool A2lInit(const char *project_name, const char*epk, const uint8_t *address, uint16_t port, bool use_tcp, uint32_t mode_flags) +#### bool A2lInit(const uint8_t *address, uint16_t port, bool use_tcp, uint32_t mode_flags) Initializes the A2L generation system of XCPlite. This function must be called once before any A2L-related macros or API functions are used. It performs the following actions: @@ -130,7 +130,7 @@ Initializes the A2L generation system of XCPlite. This function must be called o **Parameters:** - `project_name`: Name of the project, used for the A2L and BIN file names. -- `epk`: Optional software version string (EPK) for the A2L file. Pass `NULL` to use the default. +- `epk`: Unique software version string (EPK) for version checking of A2L and parameter files. - `address`: Default IPv4 address of the XCP server. - `port`: Port number of the XCP server. - `use_tcp`: If `true`, TCP transport is used; if `false`, UDP transport. @@ -171,9 +171,7 @@ All definitions of instances follow the same principle: Set the addressing mode | Function | Purpose | | ---------------------------------------------------------------- | --------------------------------------------------------------- | | `void XcpSetLogLevel(uint8_t level);` | 1 = error, 2 = warn, 3 = info, 4 = commands, 5 = trace. | -| `void XcpInit(void);` | Initialise core singleton; must precede all other API usage. | -| `void ApplXcpSetA2lName(const char *name);` | Manually set the A2L file name for upload. | -| `void XcpSetEpk(const char *epk);` | Set 32‑byte EPK software identifier (for A2L). | +| `void XcpInit(const char *name, const char *epk, bool activate);`| Initialize core singleton; must precede all other API usage. | | `void XcpDisconnect(void);` | Force client disconnect, stop DAQ, flush pending operations. | | `void XcpSendTerminateSessionEvent(void);` | Notify client of a terminated session. | | `void XcpPrint(const char *str);` | Send arbitrary text to the client (channel 0xFF). | @@ -185,13 +183,27 @@ All definitions of instances follow the same principle: Set the addressing mode See examples folder and README.md for a short descriptions of the example applications. -## 6 · Glossary +## 5 · Appendix -- **A2L** – ASAM MCD‑2 MC description file (measurement & calibration meta‑data). -- **DAQ** – Data Acquisition (periodic or sporadic transmit of ECU variables). -- **EPK** – Embedded Program Identifier (software version string embedded in the ECU). -- **ECU** – Electronic Control Unit (target device exposing the XCP protocol). +### Static Markers ---- +The code instrumentations creates static variables, to help the A2L Creater or an XCP tool reading linker map files, to identify calibration segments, events, capture buffers and the scope where an event is triggered. + +```c +//Create calibration segment macro segment index once pattern +static tXcpCalSegIndex cal__##name; + +// Create measurement event macro event id once pattern +static THREAD_LOCAL tXcpEventId evt__##name +static THREAD_LOCAL tXcpEventId evt__ + +// Daq capture macro capture buffer +static __typeof__(var) daq__##event##__##var + +// Daq event macro event id once pattern +static THREAD_LOCAL tXcpEventId evt___aas0__##name +static THREAD_LOCAL tXcpEventId evt___aasr__##name +static THREAD_LOCAL tXcpEventId evt___aasrr__##name +``` *End of document.* diff --git a/docs/xcplib_cfg.md b/docs/xcplib_cfg.md index 9be9ee0e..b3f838f7 100644 --- a/docs/xcplib_cfg.md +++ b/docs/xcplib_cfg.md @@ -1,6 +1,6 @@ # XCPlite Configuration Guide -**Version**: 0.9.2 +**Version**: 0.9.3 ## 0 · XCPlite Configuration @@ -118,9 +118,10 @@ This section describes the XCP protocol layer configuration parameters in xcp_cf | Parameter | Description | |-----------|-------------| -| `XCP_ENABLE_CAL_PAGE` | Enables calibration page switching commands | -| `XCP_ENABLE_COPY_CAL_PAGE` | Enables calibration page initialization (FLASH→RAM copy) | -| `XCP_ENABLE_FREEZE_CAL_PAGE` | Enables calibration page freeze and preload functionality | +| `XCP_ENABLE_CAL_PAGE` | Enables calibration page switching commands GET/SET_CAL_PAGE | +| `XCP_ENABLE_COPY_CAL_PAGE` | Enables calibration page initialization COPY_CAL_PAGE (FLASH→RAM copy only supported) | +| `XCP_ENABLE_COPY_CAL_PAGE_WORKAROUND` | Enables a workaround for older CANapes (see xcp_cfg.h) | +| `XCP_ENABLE_FREEZE_CAL_PAGE` | Enables calibration page freeze functionality (GET/SET_SEGMENT_MODE), required for calibration segment persistence | | `XCP_ENABLE_CHECKSUM` | Enables checksum calculation command | | `XCP_CHECKSUM_TYPE` | Checksum algorithm type (XCP_CHECKSUM_TYPE_CRC16CCITT or XCP_CHECKSUM_TYPE_ADD44) | | `XCP_ENABLE_SEED_KEY` | Enables seed/key security mechanism (commented out by default) | @@ -136,6 +137,7 @@ This section describes the XCP protocol layer configuration parameters in xcp_cf | `XCP_MAX_DAQ_COUNT` | Maximum number of DAQ lists. Must be ≤ 0xFFFE (default: 1024) | | `XCP_DAQ_MEM_SIZE` | Static memory allocation for DAQ tables. Each ODT entry needs 5 bytes, each DAQ list 12 bytes, each ODT 8 bytes | | `XCP_ENABLE_DAQ_RESUME` | Enables DAQ resume mode functionality | +| `XCP_ENABLE_DAQ_PRESCALER` | Enables DAQ prescaler (downsampling) | | `XCP_ENABLE_DAQ_EVENT_LIST` | Enables event list management (not needed for Rust xcp-lite) | | `XCP_ENABLE_DAQ_EVENT_INFO` | Enables XCP_GET_EVENT_INFO command | | `XCP_MAX_EVENT_NAME` | Maximum length for event names in characters (default: 15) | diff --git a/examples/README.md b/examples/README.md new file mode 100644 index 00000000..1314c629 --- /dev/null +++ b/examples/README.md @@ -0,0 +1,108 @@ +# XCPlite Examples + +This directory contains various examples demonstrating different features and capabilities of XCPlite. + +## Getting Started + +To get started, take a first look at the C example `hello_xcp` and then at `hello_xcp_cpp` for C++. + +## Example CANape Projects + +There is a CANape project for each example in a directory folder `examples//CANape`. +To load a project into CANape, select load project and navigate to the CANape.ini file in this folder. +All CANape project examples are configured to upload the A2L file via XCP. The IP address of the XCP server is stored in the A2L file uploaded last time. If CANape can not connect, check that the correct IP address is configured in "Device Configuration/Devices//Protocol/Transport Layer". + +The examples should run with a CANape demo version, which can be downloaded from . +The demo installation must be explicitly enabled in the installer and has some limitations: +It will store only the first seconds of measurement data and the number of measurement signals is limited. + +Note: Some of the examples use display windows without title bars to make it look cleaner. This option can be turned of with "Options/Display/View/Display Headline". + +## Example Details + +### hello_xcp + +Demonstrates how to start the XCP on Ethernet server and use the runtime A2L generator. +Shows how to create a calibration parameter segment structure, register the parameters in the segment and access them safely. +Defines events for measurement of global and local (stack) variables. +Demonstrates the different addressing modes for measurement variables and calibration parameters. +Defines a function, registers local variables and function parameters and creates and triggers a measurement event in the function. + +### hello_xcp_cpp + +Demonstrates how to instrument a member function of a C++ class and how to register and access parameters in C++. + +### no_a2l_demo + +Demonstrates XCPlite without runtime A2L generation by using an A2L generation tool during the build process. +This variant is currently limited to measurement and modification of global variables. + +### c_demo + +Shows more complex data objects (structs, arrays) and calibration objects (axis, maps and curves). +Measurement variables on stack and in global memory. +Consistent parameter changes and measurement. +Calibration page switching and EPK version check. +Note: If CANAPE_24 is defined in sig_gen.hpp, the lookup table is a nested typedef, it uses a THIS. references to its shared axis contained in the typedef. + +### struct_demo + +Shows how to define measurement variables in nested structs, multidimensional fields and arrays of structs. + +### multi_thread_demo + +Shows measurement in multiple threads. +Create thread local instances of events and measurements. +Share a parameter segment among multiple threads. +Thread safe and consistent access to parameters. +Experimental code to demonstrate how to create context and spans using the XCP instrumentation API. + +### cpp_demo + +Demonstrates the calibration parameter segment RAII wrapper. +Demonstrates measurement of member variables and stack variables in class instance member functions. +Shows how to create a class with a calibration parameter segment as a member variable. + +![CANape Screenshot](cpp_demo/cpp_demo.png) + +### threadx_demo + +Planned + +### bpf_demo + +Experimental, work in progress. +Demonstrates tracing of process creations and selected syscalls. + +## Advanced Topics Covered + +The examples demonstrate various advanced topics: + +- Safely share parameters among different threads +- Measure instances of complex types, such as structs, arrays, nested structs and arrays of structs by using typedefs +- Create complex parameters, like maps, curves and lookup tables with fixed or shared axis +- Measure thread local instances of variables, create event instances +- Create physical conversion rules and enumerations +- Create additional groups +- Use consistent atomic parameter modification +- Make parameter changes persistent (freeze) +- Use the xcplib API to create context and span, measure durations + +## Building a CANape Project from Scratch + +How to create a new CANape project from scratch is described in the CANape help under "Creating a project and configuration (quick guide)". + +The easiest way to create a new CANape project for XCPlite is: + +- Create a new project in 'Backstage/Project/New'. +- Drag&Drop the A2L file generated by XCPlite on the CANape desktop and step through the pop up dialog pages: + Select XCP, Ethernet and LocalPC:ETH to use the local PCs ethernet adapter. + All other settings may stay on default. +- CANape should now be already connected. + If not, check the Ethernet settings in 'Device/DeviceConfiguration/Devices/MyDevice/Protocol/TransportLayer'. +- To configure CANape for automatic upload of the A2L file, a few more settings have to be modified once in the new project: + In 'Device/DeviceConfiguration/Devices/MyDevice/Database', enable automatic detection of database content and select 'Check identifier and content'. + +The automatic A2L upload then happens every time a new version of A2L file has been generated. +Depending on the settings in XCPlite, this happens after the first run of a new software build, or each time the application is restarted. +Of course, the A2L file may also be copied manually into the CANape project folder. diff --git a/examples/bpf_demo/CANape/CANape.ini b/examples/bpf_demo/CANape/CANape.ini index 77bb2658..5a5ea496 100644 --- a/examples/bpf_demo/CANape/CANape.ini +++ b/examples/bpf_demo/CANape/CANape.ini @@ -1,6 +1,6 @@ [!!!!!_CONSISTENCY_CHECK_START_SECTION_!!!!!] -GUID={3F2AA4E1-96F2-490B-B49A-D504BADDAD4C} +GUID={66564AC3-D4A5-4424-AA7B-46A034ABCFAA} [FILE_INFO] Identification=CANape-Project-File @@ -14,8 +14,8 @@ PrgDate=16.06.2025 Description= CreationTime=21:03 CreationDate=07/07/2024 ; Month/Day/Year -ModificationTime=22:03 -ModificationDate=09/10/2025 ; Month/Day/Year +ModificationTime=15:36 +ModificationDate=10/29/2025 ; Month/Day/Year Protected=0 CurrentWindowsACP=1252 @@ -1019,10 +1019,10 @@ ConfigurationJson={"RemoteServiceDataList":[{"DisplayName":"CANape Master","Ip": [DlgCommentWrapper] ScreenDPIinSection=192 -WindowLeft=929 -WindowLeft_dpi96=465 -WindowTop=583 -WindowTop_dpi96=292 +WindowLeft=969 +WindowLeft_dpi96=485 +WindowTop=494 +WindowTop_dpi96=247 WindowWidth=1350 WindowWidth_dpi96=675 WindowHeight=923 @@ -1030,10 +1030,10 @@ WindowHeight_dpi96=462 [DlgMdfComment] ScreenDPIinSection=192 -WindowLeft=942 -WindowLeft_dpi96=471 -WindowTop=641 -WindowTop_dpi96=321 +WindowLeft=982 +WindowLeft_dpi96=491 +WindowTop=552 +WindowTop_dpi96=276 WindowWidth=1324 WindowWidth_dpi96=662 WindowHeight=786 @@ -1266,7 +1266,7 @@ XCP_OPTIONAL_CMD_AVAILABLE_19=3 XCP_OPTIONAL_CMD_AVAILABLE_20=3 XCP_OPTIONAL_CMD_AVAILABLE_21=3 XCP_OPTIONAL_CMD_AVAILABLE_22=3 -XCP_OPTIONAL_CMD_AVAILABLE_23=2 +XCP_OPTIONAL_CMD_AVAILABLE_23=3 XCP_OPTIONAL_CMD_AVAILABLE_24=2 XCP_OPTIONAL_CMD_AVAILABLE_25=3 XCP_OPTIONAL_CMD_AVAILABLE_26=3 @@ -1282,8 +1282,8 @@ XCP_OPTIONAL_CMD_AVAILABLE_35=3 XCP_OPTIONAL_CMD_AVAILABLE_36=3 XCP_OPTIONAL_CMD_AVAILABLE_37=3 XCP_OPTIONAL_CMD_AVAILABLE_38=3 -XCP_OPTIONAL_CMD_AVAILABLE_39=2 -XCP_OPTIONAL_CMD_AVAILABLE_40=2 +XCP_OPTIONAL_CMD_AVAILABLE_39=3 +XCP_OPTIONAL_CMD_AVAILABLE_40=3 XCP_OPTIONAL_CMD_AVAILABLE_41=3 XCP_OPTIONAL_CMD_AVAILABLE_42=3 XCP_OPTIONAL_CMD_AVAILABLE_43=3 @@ -1311,9 +1311,9 @@ XCP_OPTIONAL_CMD_AUTO_LEARNING=1 XCP_OPTIONAL_SUB_CMD_AVAILABLE_0=3 XCP_OPTIONAL_SUB_CMD_AVAILABLE_1=2 XCP_OPTIONAL_SUB_CMD_AVAILABLE_2=2 -XCP_DAQ_PROPERTIES=0x15 +XCP_DAQ_PROPERTIES=0x13 XCP_DAQ_KEY_BYTE=0xC0 -XCP_DAQ_TIMESTAMP_MODE=0x3C +XCP_DAQ_TIMESTAMP_MODE=0x0C XCP_DAQ_TIMESTAMP_TICKS=1 XCP_MIN_DAQ=0 XCP_MAX_DAQ=0 @@ -1383,14 +1383,14 @@ BEG_CAL_SERVICE=0x1f1 END_CAL_SERVICE=0x2f1 TEST_CONNECTION_PERIOD=0 OVERRUN_HANDLING=0 -EVENT_COUNT=3 +EVENT_COUNT=6 EVENT_CHANNEL_0=0x0000 -EVENT_CYCLE_0=0 -EVENT_SAMPLE_UNIT_0=3 +EVENT_CYCLE_0=100 +EVENT_SAMPLE_UNIT_0=7 EVENT_MODE_0=4 EVENT_PRIO_0=0 EVENT_MAX_DAQ_LIST_0=255 -EVENT_NAME_0=mainloop_event +EVENT_NAME_0=async EVENT_MULTISAMPLES_0=0 IGNORE_FIX_EVENTS=0 ECU_CYCLE_TIME=0 @@ -1401,8 +1401,8 @@ DETECT_SYNC_PULSE=0 GENERATE_SYNC_PULSE=0 TIME_CORR_MULTICAST=0 DAQ_TIMEOUT=0 -DAQ_RESUME_SUPPORTED=1 -DAQ_PRESCALER_SUPPORTED=0 +DAQ_RESUME_SUPPORTED=0 +DAQ_PRESCALER_SUPPORTED=1 DAQ_SINGLE_EVENT=0 DTO_SINGLE_EXT=0 DOUBLE_AS_FLOAT=0 @@ -1417,7 +1417,7 @@ PSEUDO_CAN_ID_START=2415919104 DSP_MODE=0 DAQ_LIST_AUTODETECT=1 DAQ_COUNT=0 -DAQ_CONFIG_ID=27820 +DAQ_CONFIG_ID=47056 DAQ_START_STOP_ALL_DISABLED=0 INIT_CAL_PAGE_SEGMENTWISE=0 CALRAM_CHECK_INITIAL_PAGE=1 @@ -1517,7 +1517,7 @@ FLASH_PAGE_ADDRESS_MAPPING_ENABLED=1 MEMORY_SEGMENT_COUNT=1 MEMORY_SEGMENT_NAME_1=epk MEMORY_SEGMENT_TYPE_1=FLASH,DATA,INTERN -MEMORY_SEGMENT_SIZE_1=0x00000015 +MEMORY_SEGMENT_SIZE_1=0x00000009 MEMORY_SEGMENT_ADDR_1=0x80000000 MEMORY_SEGMENT_ADDR_EXT_1=0x00 MEMORY_SEGMENT_ATTRIBUTE_1=0x00000000 @@ -1533,7 +1533,7 @@ MEMORY_SEGMENT_FLASH_OFFSET_2=0x00000000 MEMORY_SEGMENT_ADDRESS_MAPPING_2= CALRAM_SECTOR_NAME_1=epk CALRAM_SECTOR_TYPE_1=FLASH,DATA,INTERN -CALRAM_SECTOR_SIZE_1=0x00000015 +CALRAM_SECTOR_SIZE_1=0x00000009 CALRAM_SECTOR_ADDR_1=0x80000000 CALRAM_SECTOR_ADDR_EXT_1=0x00 CALRAM_SECTOR_ATTRIBUTE_1=0x00000000 @@ -1627,7 +1627,7 @@ EVENT_SAMPLE_UNIT_1=3 EVENT_MODE_1=4 EVENT_PRIO_1=0 EVENT_MAX_DAQ_LIST_1=255 -EVENT_NAME_1=process_event +EVENT_NAME_1=mainloop_event EVENT_MULTISAMPLES_1=0 EVENT_MIN_CYCLE_TIME_CYCLE_1=0 EVENT_MIN_CYCLE_TIME_UNIT_1=9 @@ -1641,11 +1641,44 @@ EVENT_SAMPLE_UNIT_2=3 EVENT_MODE_2=4 EVENT_PRIO_2=0 EVENT_MAX_DAQ_LIST_2=255 -EVENT_NAME_2=syscall_event +EVENT_NAME_2=process_event EVENT_MULTISAMPLES_2=0 EVENT_MIN_CYCLE_TIME_CYCLE_2=0 EVENT_MIN_CYCLE_TIME_UNIT_2=9 EVENT_DPM_SUPPORTED_2=0 +EVENT_CHANNEL_3=0x0003 +EVENT_CHANNEL_4=0x0004 +EVENT_CHANNEL_5=0x0005 +EVENT_CYCLE_3=0 +EVENT_CYCLE_4=0 +EVENT_CYCLE_5=0 +EVENT_SAMPLE_UNIT_3=3 +EVENT_SAMPLE_UNIT_4=3 +EVENT_SAMPLE_UNIT_5=3 +EVENT_MODE_3=4 +EVENT_MODE_4=4 +EVENT_MODE_5=4 +EVENT_PRIO_3=0 +EVENT_PRIO_4=0 +EVENT_PRIO_5=0 +EVENT_MAX_DAQ_LIST_3=255 +EVENT_MAX_DAQ_LIST_4=255 +EVENT_MAX_DAQ_LIST_5=255 +EVENT_NAME_3=syscall_event +EVENT_NAME_4=sendto +EVENT_NAME_5=recvfrom +EVENT_MULTISAMPLES_3=0 +EVENT_MULTISAMPLES_4=0 +EVENT_MULTISAMPLES_5=0 +EVENT_MIN_CYCLE_TIME_CYCLE_3=0 +EVENT_MIN_CYCLE_TIME_CYCLE_4=0 +EVENT_MIN_CYCLE_TIME_CYCLE_5=0 +EVENT_MIN_CYCLE_TIME_UNIT_3=9 +EVENT_MIN_CYCLE_TIME_UNIT_4=9 +EVENT_MIN_CYCLE_TIME_UNIT_5=9 +EVENT_DPM_SUPPORTED_3=0 +EVENT_DPM_SUPPORTED_4=0 +EVENT_DPM_SUPPORTED_5=0 [MODULES] CREATE_SYSTEM_DEVICE=1 @@ -2087,329 +2120,329 @@ MeasurementMapped=0 Device_Name= [DB_EXPLORER] -ScreenDPIinSection=144 -SELECT_X=150 +ScreenDPIinSection=192 +SELECT_X=200 SELECT_X_dpi96=100 -SELECT_Y=75 +SELECT_Y=100 SELECT_Y_dpi96=50 -SELECT_W=1136 +SELECT_W=1514 SELECT_W_dpi96=757 -SELECT_H=600 +SELECT_H=800 SELECT_H_dpi96=400 EDITOR_COL_COUNT=7 -EDITOR_COL_1=29, 66 +EDITOR_COL_1=29, 88 EDITOR_COL_1_dpi96=29, 44 -EDITOR_COL_2=31, 345 +EDITOR_COL_2=31, 460 EDITOR_COL_2_dpi96=31, 230 -EDITOR_COL_3=1, 135 +EDITOR_COL_3=1, 180 EDITOR_COL_3_dpi96=1, 90 -EDITOR_COL_4=2, 127 +EDITOR_COL_4=2, 170 EDITOR_COL_4_dpi96=2, 85 -EDITOR_COL_5=3, 375 +EDITOR_COL_5=3, 500 EDITOR_COL_5_dpi96=3, 250 -EDITOR_COL_6=6, 180 +EDITOR_COL_6=6, 240 EDITOR_COL_6_dpi96=6, 120 -EDITOR_COL_7=7, 180 +EDITOR_COL_7=7, 240 EDITOR_COL_7_dpi96=7, 120 EDITOR_SORT_COL=31 EDITOR_SORT_UPW=1 SELECT_COL_COUNT=4 -SELECT_COL_1=29, 66 +SELECT_COL_1=29, 88 SELECT_COL_1_dpi96=29, 44 -SELECT_COL_2=31, 345 +SELECT_COL_2=31, 460 SELECT_COL_2_dpi96=31, 230 -SELECT_COL_3=16, 105 +SELECT_COL_3=16, 140 SELECT_COL_3_dpi96=16, 70 -SELECT_COL_4=3, 375 +SELECT_COL_4=3, 500 SELECT_COL_4_dpi96=3, 250 SELECT_SORT_COL=31 SELECT_SORT_UPW=1 SEARCH_COL_COUNT=7 -SEARCH_COL_1=29, 66 +SEARCH_COL_1=29, 88 SEARCH_COL_1_dpi96=29, 44 -SEARCH_COL_2=31, 345 +SEARCH_COL_2=31, 460 SEARCH_COL_2_dpi96=31, 230 -SEARCH_COL_3=91, 225 +SEARCH_COL_3=91, 300 SEARCH_COL_3_dpi96=91, 150 -SEARCH_COL_4=19, 180 +SEARCH_COL_4=19, 240 SEARCH_COL_4_dpi96=19, 120 -SEARCH_COL_5=1, 135 +SEARCH_COL_5=1, 180 SEARCH_COL_5_dpi96=1, 90 -SEARCH_COL_6=2, 127 +SEARCH_COL_6=2, 170 SEARCH_COL_6_dpi96=2, 85 -SEARCH_COL_7=3, 375 +SEARCH_COL_7=3, 500 SEARCH_COL_7_dpi96=3, 250 SEARCH_SORT_COL=31 SEARCH_SORT_UPW=1 CAN_SELECT_COL_COUNT=9 -CAN_SELECT_COL_1=29, 66 +CAN_SELECT_COL_1=29, 88 CAN_SELECT_COL_1_dpi96=29, 44 -CAN_SELECT_COL_2=31, 345 +CAN_SELECT_COL_2=31, 460 CAN_SELECT_COL_2_dpi96=31, 230 -CAN_SELECT_COL_3=28, 105 +CAN_SELECT_COL_3=28, 140 CAN_SELECT_COL_3_dpi96=28, 70 -CAN_SELECT_COL_4=16, 105 +CAN_SELECT_COL_4=16, 140 CAN_SELECT_COL_4_dpi96=16, 70 -CAN_SELECT_COL_5=64, 300 +CAN_SELECT_COL_5=64, 400 CAN_SELECT_COL_5_dpi96=64, 200 -CAN_SELECT_COL_6=4, 180 +CAN_SELECT_COL_6=4, 240 CAN_SELECT_COL_6_dpi96=4, 120 -CAN_SELECT_COL_7=17, 105 +CAN_SELECT_COL_7=17, 140 CAN_SELECT_COL_7_dpi96=17, 70 -CAN_SELECT_COL_8=18, 75 +CAN_SELECT_COL_8=18, 100 CAN_SELECT_COL_8_dpi96=18, 50 -CAN_SELECT_COL_9=3, 375 +CAN_SELECT_COL_9=3, 500 CAN_SELECT_COL_9_dpi96=3, 250 CAN_SELECT_SORT_COL=31 CAN_SELECT_SORT_UPW=1 CAN_SEARCH_COL_COUNT=9 -CAN_SEARCH_COL_1=29, 66 +CAN_SEARCH_COL_1=29, 88 CAN_SEARCH_COL_1_dpi96=29, 44 -CAN_SEARCH_COL_2=31, 345 +CAN_SEARCH_COL_2=31, 460 CAN_SEARCH_COL_2_dpi96=31, 230 -CAN_SEARCH_COL_3=28, 105 +CAN_SEARCH_COL_3=28, 140 CAN_SEARCH_COL_3_dpi96=28, 70 -CAN_SEARCH_COL_4=16, 105 +CAN_SEARCH_COL_4=16, 140 CAN_SEARCH_COL_4_dpi96=16, 70 -CAN_SEARCH_COL_5=64, 300 +CAN_SEARCH_COL_5=64, 400 CAN_SEARCH_COL_5_dpi96=64, 200 -CAN_SEARCH_COL_6=4, 180 +CAN_SEARCH_COL_6=4, 240 CAN_SEARCH_COL_6_dpi96=4, 120 -CAN_SEARCH_COL_7=17, 105 +CAN_SEARCH_COL_7=17, 140 CAN_SEARCH_COL_7_dpi96=17, 70 -CAN_SEARCH_COL_8=18, 75 +CAN_SEARCH_COL_8=18, 100 CAN_SEARCH_COL_8_dpi96=18, 50 -CAN_SEARCH_COL_9=3, 375 +CAN_SEARCH_COL_9=3, 500 CAN_SEARCH_COL_9_dpi96=3, 250 CAN_SEARCH_SORT_COL=31 CAN_SEARCH_SORT_UPW=1 LIN_SELECT_COL_COUNT=9 -LIN_SELECT_COL_1=29, 66 +LIN_SELECT_COL_1=29, 88 LIN_SELECT_COL_1_dpi96=29, 44 -LIN_SELECT_COL_2=31, 345 +LIN_SELECT_COL_2=31, 460 LIN_SELECT_COL_2_dpi96=31, 230 -LIN_SELECT_COL_3=28, 105 +LIN_SELECT_COL_3=28, 140 LIN_SELECT_COL_3_dpi96=28, 70 -LIN_SELECT_COL_4=16, 105 +LIN_SELECT_COL_4=16, 140 LIN_SELECT_COL_4_dpi96=16, 70 -LIN_SELECT_COL_5=64, 300 +LIN_SELECT_COL_5=64, 400 LIN_SELECT_COL_5_dpi96=64, 200 -LIN_SELECT_COL_6=4, 180 +LIN_SELECT_COL_6=4, 240 LIN_SELECT_COL_6_dpi96=4, 120 -LIN_SELECT_COL_7=17, 105 +LIN_SELECT_COL_7=17, 140 LIN_SELECT_COL_7_dpi96=17, 70 -LIN_SELECT_COL_8=18, 75 +LIN_SELECT_COL_8=18, 100 LIN_SELECT_COL_8_dpi96=18, 50 -LIN_SELECT_COL_9=3, 375 +LIN_SELECT_COL_9=3, 500 LIN_SELECT_COL_9_dpi96=3, 250 LIN_SELECT_SORT_COL=31 LIN_SELECT_SORT_UPW=1 LIN_SEARCH_COL_COUNT=9 -LIN_SEARCH_COL_1=29, 66 +LIN_SEARCH_COL_1=29, 88 LIN_SEARCH_COL_1_dpi96=29, 44 -LIN_SEARCH_COL_2=31, 345 +LIN_SEARCH_COL_2=31, 460 LIN_SEARCH_COL_2_dpi96=31, 230 -LIN_SEARCH_COL_3=28, 105 +LIN_SEARCH_COL_3=28, 140 LIN_SEARCH_COL_3_dpi96=28, 70 -LIN_SEARCH_COL_4=16, 105 +LIN_SEARCH_COL_4=16, 140 LIN_SEARCH_COL_4_dpi96=16, 70 -LIN_SEARCH_COL_5=64, 300 +LIN_SEARCH_COL_5=64, 400 LIN_SEARCH_COL_5_dpi96=64, 200 -LIN_SEARCH_COL_6=4, 180 +LIN_SEARCH_COL_6=4, 240 LIN_SEARCH_COL_6_dpi96=4, 120 -LIN_SEARCH_COL_7=17, 105 +LIN_SEARCH_COL_7=17, 140 LIN_SEARCH_COL_7_dpi96=17, 70 -LIN_SEARCH_COL_8=18, 75 +LIN_SEARCH_COL_8=18, 100 LIN_SEARCH_COL_8_dpi96=18, 50 -LIN_SEARCH_COL_9=3, 375 +LIN_SEARCH_COL_9=3, 500 LIN_SEARCH_COL_9_dpi96=3, 250 LIN_SEARCH_SORT_COL=31 LIN_SEARCH_SORT_UPW=1 MDF_SELECT_COL_COUNT=8 -MDF_SELECT_COL_1=29, 66 +MDF_SELECT_COL_1=29, 88 MDF_SELECT_COL_1_dpi96=29, 44 -MDF_SELECT_COL_2=31, 345 +MDF_SELECT_COL_2=31, 460 MDF_SELECT_COL_2_dpi96=31, 230 -MDF_SELECT_COL_3=28, 105 +MDF_SELECT_COL_3=28, 140 MDF_SELECT_COL_3_dpi96=28, 70 -MDF_SELECT_COL_4=16, 105 +MDF_SELECT_COL_4=16, 140 MDF_SELECT_COL_4_dpi96=16, 70 -MDF_SELECT_COL_5=64, 300 +MDF_SELECT_COL_5=64, 400 MDF_SELECT_COL_5_dpi96=64, 200 -MDF_SELECT_COL_6=4, 180 +MDF_SELECT_COL_6=4, 240 MDF_SELECT_COL_6_dpi96=4, 120 -MDF_SELECT_COL_7=20, 135 +MDF_SELECT_COL_7=20, 180 MDF_SELECT_COL_7_dpi96=20, 90 -MDF_SELECT_COL_8=3, 375 +MDF_SELECT_COL_8=3, 500 MDF_SELECT_COL_8_dpi96=3, 250 MDF_SELECT_SORT_COL=31 MDF_SELECT_SORT_UPW=1 MDF_SEARCH_COL_COUNT=8 -MDF_SEARCH_COL_1=29, 66 +MDF_SEARCH_COL_1=29, 88 MDF_SEARCH_COL_1_dpi96=29, 44 -MDF_SEARCH_COL_2=31, 345 +MDF_SEARCH_COL_2=31, 460 MDF_SEARCH_COL_2_dpi96=31, 230 -MDF_SEARCH_COL_3=28, 105 +MDF_SEARCH_COL_3=28, 140 MDF_SEARCH_COL_3_dpi96=28, 70 -MDF_SEARCH_COL_4=16, 105 +MDF_SEARCH_COL_4=16, 140 MDF_SEARCH_COL_4_dpi96=16, 70 -MDF_SEARCH_COL_5=64, 300 +MDF_SEARCH_COL_5=64, 400 MDF_SEARCH_COL_5_dpi96=64, 200 -MDF_SEARCH_COL_6=4, 180 +MDF_SEARCH_COL_6=4, 240 MDF_SEARCH_COL_6_dpi96=4, 120 -MDF_SEARCH_COL_7=20, 135 +MDF_SEARCH_COL_7=20, 180 MDF_SEARCH_COL_7_dpi96=20, 90 -MDF_SEARCH_COL_8=3, 375 +MDF_SEARCH_COL_8=3, 500 MDF_SEARCH_COL_8_dpi96=3, 250 MDF_SEARCH_SORT_COL=31 MDF_SEARCH_SORT_UPW=1 WRITE_COL_COUNT=2 -WRITE_COL_1=21, 57 +WRITE_COL_1=21, 76 WRITE_COL_1_dpi96=21, 38 -WRITE_COL_2=23, 900 +WRITE_COL_2=23, 1200 WRITE_COL_2_dpi96=23, 600 WRITE_SORT_COL=31 WRITE_SORT_UPW=1 CONVERSION_COL_COUNT=7 -CONVERSION_COL_1=29, 66 +CONVERSION_COL_1=29, 88 CONVERSION_COL_1_dpi96=29, 44 -CONVERSION_COL_2=31, 345 +CONVERSION_COL_2=31, 460 CONVERSION_COL_2_dpi96=31, 230 -CONVERSION_COL_3=3, 375 +CONVERSION_COL_3=3, 500 CONVERSION_COL_3_dpi96=3, 250 -CONVERSION_COL_4=26, 180 +CONVERSION_COL_4=26, 240 CONVERSION_COL_4_dpi96=26, 120 -CONVERSION_COL_5=16, 105 +CONVERSION_COL_5=16, 140 CONVERSION_COL_5_dpi96=16, 70 -CONVERSION_COL_6=15, 135 +CONVERSION_COL_6=15, 180 CONVERSION_COL_6_dpi96=15, 90 -CONVERSION_COL_7=68, 135 +CONVERSION_COL_7=68, 180 CONVERSION_COL_7_dpi96=68, 90 CONVERSION_SORT_COL=31 CONVERSION_SORT_UPW=1 RECORD_LAYOUT_COL_COUNT=2 -RECORD_LAYOUT_COL_1=29, 66 +RECORD_LAYOUT_COL_1=29, 88 RECORD_LAYOUT_COL_1_dpi96=29, 44 -RECORD_LAYOUT_COL_2=31, 345 +RECORD_LAYOUT_COL_2=31, 460 RECORD_LAYOUT_COL_2_dpi96=31, 230 RECORD_LAYOUT_SORT_COL=31 RECORD_LAYOUT_SORT_UPW=1 VARIANT_CRITERION_COL_COUNT=4 -VARIANT_CRITERION_COL_1=29, 66 +VARIANT_CRITERION_COL_1=29, 88 VARIANT_CRITERION_COL_1_dpi96=29, 44 -VARIANT_CRITERION_COL_2=31, 345 +VARIANT_CRITERION_COL_2=31, 460 VARIANT_CRITERION_COL_2_dpi96=31, 230 -VARIANT_CRITERION_COL_3=25, 300 +VARIANT_CRITERION_COL_3=25, 400 VARIANT_CRITERION_COL_3_dpi96=25, 200 -VARIANT_CRITERION_COL_4=30, 300 +VARIANT_CRITERION_COL_4=30, 400 VARIANT_CRITERION_COL_4_dpi96=30, 200 VARIANT_CRITERION_SORT_COL=31 VARIANT_CRITERION_SORT_UPW=1 SYSTEM_CONSTANT_COL_COUNT=3 -SYSTEM_CONSTANT_COL_1=29, 66 +SYSTEM_CONSTANT_COL_1=29, 88 SYSTEM_CONSTANT_COL_1_dpi96=29, 44 -SYSTEM_CONSTANT_COL_2=31, 345 +SYSTEM_CONSTANT_COL_2=31, 460 SYSTEM_CONSTANT_COL_2_dpi96=31, 230 -SYSTEM_CONSTANT_COL_3=24, 180 +SYSTEM_CONSTANT_COL_3=24, 240 SYSTEM_CONSTANT_COL_3_dpi96=24, 120 SYSTEM_CONSTANT_SORT_COL=31 SYSTEM_CONSTANT_SORT_UPW=1 DEFAULT_COL_COUNT=3 -DEFAULT_COL_1=29, 66 +DEFAULT_COL_1=29, 88 DEFAULT_COL_1_dpi96=29, 44 -DEFAULT_COL_2=31, 345 +DEFAULT_COL_2=31, 460 DEFAULT_COL_2_dpi96=31, 230 -DEFAULT_COL_3=3, 375 +DEFAULT_COL_3=3, 500 DEFAULT_COL_3_dpi96=3, 250 DEFAULT_SORT_COL=31 DEFAULT_SORT_UPW=1 CAN_SIGNAL_COL_COUNT=9 -CAN_SIGNAL_COL_1=29, 66 +CAN_SIGNAL_COL_1=29, 88 CAN_SIGNAL_COL_1_dpi96=29, 44 -CAN_SIGNAL_COL_2=31, 345 +CAN_SIGNAL_COL_2=31, 460 CAN_SIGNAL_COL_2_dpi96=31, 230 -CAN_SIGNAL_COL_3=28, 105 +CAN_SIGNAL_COL_3=28, 140 CAN_SIGNAL_COL_3_dpi96=28, 70 -CAN_SIGNAL_COL_4=16, 105 +CAN_SIGNAL_COL_4=16, 140 CAN_SIGNAL_COL_4_dpi96=16, 70 -CAN_SIGNAL_COL_5=64, 300 +CAN_SIGNAL_COL_5=64, 400 CAN_SIGNAL_COL_5_dpi96=64, 200 -CAN_SIGNAL_COL_6=4, 180 +CAN_SIGNAL_COL_6=4, 240 CAN_SIGNAL_COL_6_dpi96=4, 120 -CAN_SIGNAL_COL_7=17, 105 +CAN_SIGNAL_COL_7=17, 140 CAN_SIGNAL_COL_7_dpi96=17, 70 -CAN_SIGNAL_COL_8=18, 75 +CAN_SIGNAL_COL_8=18, 100 CAN_SIGNAL_COL_8_dpi96=18, 50 -CAN_SIGNAL_COL_9=3, 375 +CAN_SIGNAL_COL_9=3, 500 CAN_SIGNAL_COL_9_dpi96=3, 250 CAN_SIGNAL_SORT_COL=31 CAN_SIGNAL_SORT_UPW=1 CA_MESSAGE_COL_COUNT=7 -CA_MESSAGE_COL_1=29, 66 +CA_MESSAGE_COL_1=29, 88 CA_MESSAGE_COL_1_dpi96=29, 44 -CA_MESSAGE_COL_2=31, 345 +CA_MESSAGE_COL_2=31, 460 CA_MESSAGE_COL_2_dpi96=31, 230 -CA_MESSAGE_COL_3=3, 375 +CA_MESSAGE_COL_3=3, 500 CA_MESSAGE_COL_3_dpi96=3, 250 -CA_MESSAGE_COL_4=64, 300 +CA_MESSAGE_COL_4=64, 400 CA_MESSAGE_COL_4_dpi96=64, 200 -CA_MESSAGE_COL_5=4, 180 +CA_MESSAGE_COL_5=4, 240 CA_MESSAGE_COL_5_dpi96=4, 120 -CA_MESSAGE_COL_6=17, 105 +CA_MESSAGE_COL_6=17, 140 CA_MESSAGE_COL_6_dpi96=17, 70 -CA_MESSAGE_COL_7=18, 75 +CA_MESSAGE_COL_7=18, 100 CA_MESSAGE_COL_7_dpi96=18, 50 CA_MESSAGE_SORT_COL=31 CA_MESSAGE_SORT_UPW=1 MEMORY_SEGMENT_COL_COUNT=4 -MEMORY_SEGMENT_COL_1=29, 66 +MEMORY_SEGMENT_COL_1=29, 88 MEMORY_SEGMENT_COL_1_dpi96=29, 44 -MEMORY_SEGMENT_COL_2=31, 345 +MEMORY_SEGMENT_COL_2=31, 460 MEMORY_SEGMENT_COL_2_dpi96=31, 230 -MEMORY_SEGMENT_COL_3=3, 375 +MEMORY_SEGMENT_COL_3=3, 500 MEMORY_SEGMENT_COL_3_dpi96=3, 250 -MEMORY_SEGMENT_COL_4=1, 135 +MEMORY_SEGMENT_COL_4=1, 180 MEMORY_SEGMENT_COL_4_dpi96=1, 90 MEMORY_SEGMENT_SORT_COL=31 MEMORY_SEGMENT_SORT_UPW=1 1 CAL_PARAM_GROUP_COL_COUNT=4 -CAL_PARAM_GROUP_COL_1=29, 66 +CAL_PARAM_GROUP_COL_1=29, 88 CAL_PARAM_GROUP_COL_1_dpi96=29, 44 -CAL_PARAM_GROUP_COL_2=31, 345 +CAL_PARAM_GROUP_COL_2=31, 460 CAL_PARAM_GROUP_COL_2_dpi96=31, 230 -CAL_PARAM_GROUP_COL_3=1376257, 150 +CAL_PARAM_GROUP_COL_3=1376257, 200 CAL_PARAM_GROUP_COL_3_dpi96=1376257, 100 -CAL_PARAM_GROUP_COL_4=1376260, 150 +CAL_PARAM_GROUP_COL_4=1376260, 200 CAL_PARAM_GROUP_COL_4_dpi96=1376260, 100 CAL_PARAM_GROUP_SORT_COL=31 CAL_PARAM_GROUP_SORT_UPW=1 TABLE_COL_COUNT=4 -TABLE_COL_1=29, 66 +TABLE_COL_1=29, 88 TABLE_COL_1_dpi96=29, 44 -TABLE_COL_2=31, 345 +TABLE_COL_2=31, 460 TABLE_COL_2_dpi96=31, 230 -TABLE_COL_3=3, 375 +TABLE_COL_3=3, 500 TABLE_COL_3_dpi96=3, 250 -TABLE_COL_4=26, 180 +TABLE_COL_4=26, 240 TABLE_COL_4_dpi96=26, 120 TABLE_SORT_COL=31 TABLE_SORT_UPW=1 FILTER_COL_COUNT=3 -FILTER_COL_1=29, 66 +FILTER_COL_1=29, 88 FILTER_COL_1_dpi96=29, 44 -FILTER_COL_2=31, 345 +FILTER_COL_2=31, 460 FILTER_COL_2_dpi96=31, 230 -FILTER_COL_3=3, 375 +FILTER_COL_3=3, 500 FILTER_COL_3_dpi96=3, 250 FILTER_SORT_COL=31 FILTER_SORT_UPW=1 SELECT_SHOW_TOOLTIPS=1 SELECT_SHOW_DISPLAY_NAMES=0 SELECT_EXPAND_TREEVIEW_ITEM=2000 -SELECT_TV_W=225 +SELECT_TV_W=300 SELECT_TV_W_dpi96=150 -SELECT_DLG_H=450 +SELECT_DLG_H=600 SELECT_DLG_H_dpi96=300 SELECT_PREVIEW_DLG_VISIBLE=0 SELECT_SORT_COLUMN_ID=31 @@ -2438,7 +2471,7 @@ SEARCH_COMP_ADDRESS=0 SEARCH_START_ADDRESS=0 SEARCH_END_ADDRESS=0 FILTER_COMMENT= -FILTER_NAME=Suchergebnis +FILTER_NAME=Search result SEARCH_COMMENT= SEARCH_NAME= PARENT= @@ -2518,9 +2551,9 @@ ColWidthTransparent_dpi96=77 COLUMNS_TYP4194304_CONTEXT1= COLUMNS_TYP4194304_CONTEXT1_dpi96= COLUMNS_TYP4194304_CONTEXT1_ScreenDPI=120 -COLUMNS_TYP1_CONTEXT1= +COLUMNS_TYP1_CONTEXT1= COLUMNS_TYP1_CONTEXT1_dpi96= -COLUMNS_TYP1_CONTEXT1_ScreenDPI=96 +COLUMNS_TYP1_CONTEXT1_ScreenDPI=192 COLUMNS_TYP1_CONTEXT4= COLUMNS_TYP1_CONTEXT4_dpi96= COLUMNS_TYP1_CONTEXT4_ScreenDPI=192 @@ -2542,16 +2575,16 @@ WindowHeight=379 WindowHeight_dpi96=379 [Dialog_MdiCfgDlg_Typ1] -LastOpenedDlgType=1 +LastOpenedDlgType=0 TreeWidth=240 TreeWidth_dpi96=120 ScreenDPIinSection=192 -WindowLeft=462 -WindowLeft_dpi96=231 +WindowLeft=66 +WindowLeft_dpi96=33 WindowTop=206 WindowTop_dpi96=103 -WindowWidth=1848 -WindowWidth_dpi96=924 +WindowWidth=3100 +WindowWidth_dpi96=1550 WindowHeight=994 WindowHeight_dpi96=497 @@ -2632,143 +2665,6 @@ COLUMN1_dpi96=400 COLUMN2=274 COLUMN2_dpi96=183 -[COLOR_SCHEME_LIST] -COLOR_SCHEME0=COLOR_SCHEMEUSER_DEFINED -SCHEMES_COUNT=1 -ACTIVE=COLOR_SCHEME_H_CANAPE_CLASSIC -CURRENT_SCHEME_INDEX=0 - -[COLOR_SCHEMEUSER_DEFINED] -IS_USER_DEFINED=1 -SCHEME_NAME=[none] -ColorDisplay1=FF00 -1 8F400 -1 -ColorDisplay2=FF -1 8F4 -1 -ColorDisplay3=FFFF -1 F4F4 -1 -ColorDisplay4=FFFF00 -1 F4F400 -1 -ColorDisplay5=FF00FF -1 F400F4 -1 -ColorDisplay6=80FF -1 80F4 -1 -ColorDisplay7=FF8080 -1 F40000 -1 -ColorDisplay8=FFFFFF -1 0 -1 -ColorDisplay9=AA00 -1 AA00 -1 -ColorDisplay10=CC -1 CC -1 -ColorDisplay11=7070 -1 7070 -1 -ColorDisplay12=FFAA00 -1 FFAA00 -1 -ColorDisplay13=FF00AA -1 FF00AA -1 -ColorDisplay14=55AA -1 55AA -1 -ColorDisplay15=AA5555 -1 AA5555 -1 -ColorDisplay16=AAFFFF -1 AAFFFF -1 -ColorDisplay17=FFAA -1 FFAA -1 -ColorDisplay18=8080FF -1 8080FF -1 -ColorDisplay19=AAAA -1 AAAA -1 -ColorDisplay20=AAAA00 -1 AAAA00 -1 -ColorDisplay21=FFAAFF -1 FFAAFF -1 -ColorDisplay22=AAAAFF -1 AAAAFF -1 -ColorDisplay23=FFAAAA -1 FFAAAA -1 -ColorDisplay24=AAFFAA -1 AAFFAA -1 -ColorMarker1=FFFF00 -1 C6C600 -1 -ColorMarker2=FFFF -1 E1E1 -1 -ColorTrigger=FF00 -1 FF00 -1 -ColorEventAudio=A6620D -1 A6620D -1 -ColorEventMarker=FF -1 E7 -1 -ColorEventOther=FFFFFF -1 BABABA -1 -ColorHitMarker=FF00FF -1 FF00FF -1 -ColorGrid=8000 -1 8000 -1 -ColorBackground=0 -1 FFFFFF -1 -ColorChanged=FF0000 -1 FF0000 -1 -ColorWindowBg=C0C0C0 15 FFFFFF -1 -ColorAxis=FFFFFF -1 0 -1 -ColorAxisBackground=0 -1 FFFFFF -1 -ColorAxisSameScaled=FFFFFF -1 0 -1 -ColorAxisText=0 -1 0 -1 -ColorComments=FFFF00 -1 FFFF00 -1 -ColorCalComments=FFFF00 -1 FFFF00 -1 -ColorLegend=0 15 FFFFFF -1 -ColorLegendText=0 18 0 18 -ColorWindowFrameFocus=606060 -1 CEA27D -1 -ColorWindowFrameButtons=0 -1 0 -1 -ColorHexWinCalRam=8000 -1 8000 -1 -ColorHexWinNotCalRam=FF -1 FF -1 -ColorHexWinDbObject=80FFFF -1 80FFFF -1 -ColorHexWinInvalid=AFAFFF -1 AFAFFF -1 -ColorHexWinInvalidDb=FF -1 FF -1 -ColorHexWinSelection=FF 13 FF 13 -ColorHexWinSelText=0 14 0 14 -ColorWriteText=FFFF00 -1 FFFF00 -1 -ColorValLimitOK=FF00 -1 FF00 -1 -ColorValLimitWarn=FFFF -1 FFFF -1 -ColorValLimitError=FF -1 FF -1 -ColorActiveTitleLeft=54E3 2 54E3 2 -ColorActiveTitleRight=3D95FF 27 3D95FF 27 -ColorActiveTitleText=FFFFFF 9 FFFFFF 9 -ColorInactiveTitleLeft=7A96DF 3 7A96DF 3 -ColorInactiveTitleRight70=7A96DF 28 7A96DF 28 -ColorInactiveTitleText=D8E4F8 19 D8E4F8 19 -ColorMeaCursorTooltip=808080 -1 808080 -1 -ColorMeaCursorTooltipTxt=FFFFFF -1 FFFFFF -1 -ColorDisplayGray=999999 -1 999999 -1 -ColorDisplaySubGrid=4000 -1 4000 -1 -ColorGraphBackground=D2D2D2 -1 EEEEEE -1 -ColorInvalidSignal=F0F0F0 -1 F0F0F0 -1 -ColorLostVariable=C0C0C0 -1 C0C0C0 -1 -ColorMoveFrame=FAD5A3 -1 FAD5A3 -1 -ColorResizeMarkers=646464 -1 646464 -1 -ColorPageBackground=D8C7BC -1 D8C7BC -1 -ColorDisabledLegendText=A0A0A0 17 A0A0A0 17 -ColorBordersHighlight=FFFFFF 20 0 20 -ColorBordersShadow=A0A0A0 16 0 16 -ColorLookupTableX=FF -1 FF -1 -ColorLookupTableY=8000 -1 8000 -1 -ColorLookupTableZ=FF0000 -1 FF0000 -1 -ColorLookupTableZ4=FFFF00 -1 FFFF00 -1 -ColorLookupTableZ5=FF00FF -1 FF00FF -1 -ColorActiveCell=30FFFF -1 30FFFF -1 -ColorActiveCellText=0 -1 0 -1 -ColorMissingValues=FF -1 FF -1 -ColorBackgroundValues=FFFFFF -1 FFFFFF -1 -ColorWorkingPoint=880088 -1 880088 -1 -ColorColumnHeader=F0F0F0 30 F0F0F0 30 -ColorBackgroundMetaData=DADEE1 -1 FFFFFF -1 -ColorStatistic=FFFFFF -1 0 -1 -ColorMarker1CurveMode=F56DF3 -1 944293 -1 -ColorMarker2CurveMode=277FFF -1 2372E6 -1 - -[COMMENT_FIELD_0] -ID="Name" -MAX_LENGTH=32 -MODE=0 -VALUE_COUNT=0 -HISTORY_COUNT=0 -HISTORY_0="RainerZ" - -[COMMENT_FIELD_1] -ID="Division" -MAX_LENGTH=32 -MODE=0 -VALUE_COUNT=0 -HISTORY_COUNT=0 - -[COMMENT_FIELD_2] -ID="Project" -MAX_LENGTH=32 -MODE=0 -VALUE_COUNT=0 -HISTORY_COUNT=0 -HISTORY_0="bpf_demo" - -[COMMENT_FIELD_3] -ID="Subject" -MAX_LENGTH=32 -MODE=0 -VALUE_COUNT=0 -HISTORY_COUNT=0 - -[COMMENT_FIELD_4] -ID="Comment" -MAX_LENGTH=-1 -MODE=12 -VALUE_COUNT=0 -HISTORY_COUNT=0 - [DEVICE_EXPLORER_COLUMNLIST_CHANNELS] ScreenDPIinSection=192 ColumnCount=4 @@ -2828,15 +2724,15 @@ ColumnIdSort=-1 SortUpward=1 [DlgAlgorithmConfiguration] -TreeWidth=170 -TreeWidth_dpi96=85 +TreeWidth=270 +TreeWidth_dpi96=135 ScreenDPIinSection=192 -WindowLeft=1110 -WindowLeft_dpi96=555 +WindowLeft=794 +WindowLeft_dpi96=397 WindowTop=618 WindowTop_dpi96=309 -WindowWidth=1324 -WindowWidth_dpi96=662 +WindowWidth=1826 +WindowWidth_dpi96=913 WindowHeight=986 WindowHeight_dpi96=493 @@ -2903,38 +2799,32 @@ TreeExpStatus=0 DisplayIntValuesAsHex=0 DisplayCharArrayAsString=1 -[MEASUREMENT_0] -FileId=Measurement1 -MeasurementId=38bbfaab-819f-4af7-afef-d7e7d3e80cbd -LoadMeasurementSetting=3 - -[MEASUREMENT_DISPLAY] +[MEASUREMENT_DISPLAY_SELECT_REDUCED] ScreenDPIinSection=192 -POSX=838 -POSX_dpi96=419 -POSY=260 -POSY_dpi96=130 -SIZEX=2918 -SIZEX_dpi96=1459 -SIZEY=1802 -SIZEY_dpi96=901 +POSX=0 +POSX_dpi96=0 +POSY=0 +POSY_dpi96=0 +SIZEX=1620 +SIZEX_dpi96=810 +SIZEY=1200 +SIZEY_dpi96=600 SHOWTOOLBAR=1 SHOWSTATUSBAR=1 SHOWGRID=0 -RIGHTPANE2HEIGHT=304 -RIGHTPANE2HEIGHT_dpi96=152 +RIGHTPANE2HEIGHT=-2 +RIGHTPANE2HEIGHT_dpi96=-1 TREEX=450 TREEX_dpi96=225 -TREEY=1611 -TREEY_dpi96=806 +TREEY=1048 +TREEY_dpi96=524 ACTIVEPANE=1 SELECTED_TREENODE=Measurement signals -FIRSTVISIBLE_TREENODE=Measurement options -TREEEXPAND_COUNT=2 +FIRSTVISIBLE_TREENODE=Measurement signals +TREEEXPAND_COUNT=1 TREEEXPAND_0=Measurement signals -TREEEXPAND_1=Recorder list LAST_FOCUSED_LISTCOLUMN=0 -LAST_FOCUSED_LISTINDEX=6 +LAST_FOCUSED_LISTINDEX=5 LAST_TOP_LISTINDEX=0 DAQLISTS=2 STATUSBAR_BYTES=1 @@ -2943,46 +2833,45 @@ LABELLISTMEAMODE=0 LABELLISTBUSSIGNALMODE=0 TEXT_SEARCH= VXIIColumnsAdded=0 -SHOWONLYACTIVE=0 -[MEASUREMENT_DISPLAY_COLUMNLIST_EVENTS] +[MEASUREMENT_DISPLAY_SELECT_REDUCED_COLUMNLIST_EVENTS] ScreenDPIinSection=192 ColumnCount=0 ColumnIdSort=-1 SortUpward=1 -[MEASUREMENT_DISPLAY_COLUMNLIST_EVENTS_CUSTOM] +[MEASUREMENT_DISPLAY_SELECT_REDUCED_COLUMNLIST_EVENTS_CUSTOM] ScreenDPIinSection=192 ColumnCount=0 ColumnIdSort=-1 SortUpward=1 -[MEASUREMENT_DISPLAY_COLUMNLIST_EVENTS_KEY] +[MEASUREMENT_DISPLAY_SELECT_REDUCED_COLUMNLIST_EVENTS_KEY] ScreenDPIinSection=192 ColumnCount=0 ColumnIdSort=-1 SortUpward=1 -[MEASUREMENT_DISPLAY_COLUMNLIST_EVENTS_SYSTEM] +[MEASUREMENT_DISPLAY_SELECT_REDUCED_COLUMNLIST_EVENTS_SYSTEM] ScreenDPIinSection=192 ColumnCount=0 ColumnIdSort=196608 SortUpward=1 -[MEASUREMENT_DISPLAY_COLUMNLIST_EVENTS_SYSTEM_DEVICE] +[MEASUREMENT_DISPLAY_SELECT_REDUCED_COLUMNLIST_EVENTS_SYSTEM_DEVICE] ScreenDPIinSection=192 ColumnCount=0 ColumnIdSort=-1 SortUpward=1 -[MEASUREMENT_DISPLAY_COLUMNLIST_KNOWN_DYNAMIC_COLUMNS_NORMAL] +[MEASUREMENT_DISPLAY_SELECT_REDUCED_COLUMNLIST_KNOWN_DYNAMIC_COLUMNS_NORMAL] ScreenDPIinSection=192 ColumnCount=0 ColumnIdSort=-1 SortUpward=1 VERSION=100 -[MEASUREMENT_DISPLAY_COLUMNLIST_NORMAL] +[MEASUREMENT_DISPLAY_SELECT_REDUCED_COLUMNLIST_NORMAL] ScreenDPIinSection=192 ColumnCount=8 Column_0=65542, 100 @@ -2991,88 +2880,220 @@ Column_1=29, 88 Column_1_dpi96=29, 44 Column_2=34, 96 Column_2_dpi96=34, 48 -Column_3=31, 302 -Column_3_dpi96=31, 151 -Column_4=65540, 290 -Column_4_dpi96=65540, 145 -Column_5=98305, 224 -Column_5_dpi96=98305, 112 -Column_6=1, 180 -Column_6_dpi96=1, 90 -Column_7=65541, 120 -Column_7_dpi96=65541, 60 -ColumnIdSort=65542 +Column_3=31, 460 +Column_3_dpi96=31, 230 +Column_4=65540, 160 +Column_4_dpi96=65540, 80 +Column_5=65541, 120 +Column_5_dpi96=65541, 60 +Column_6=65597, 200 +Column_6_dpi96=65597, 100 +Column_7=98305, 160 +Column_7_dpi96=98305, 80 +ColumnIdSort=-1 SortUpward=1 VERSION=100 -[MEASUREMENT_DISPLAY_COLUMNLIST_RECORDER] +[MEASUREMENT_DISPLAY_SELECT_REDUCED_COLUMNLIST_RECORDER] ScreenDPIinSection=192 ColumnCount=0 ColumnIdSort=-1 SortUpward=1 VERSION=100 -[MEASUREMENT_DISPLAY_COLUMNLIST_RECORDER_BUSLOGGING] +[MEASUREMENT_DISPLAY_SELECT_REDUCED_COLUMNLIST_RECORDER_BUSLOGGING] ScreenDPIinSection=192 ColumnCount=0 ColumnIdSort=-1 SortUpward=1 -[MEASUREMENT_DISPLAY_COLUMNLIST_RECORDERS] +[MEASUREMENT_DISPLAY_SELECT_REDUCED_COLUMNLIST_RECORDERS] ScreenDPIinSection=192 -ColumnCount=6 -Column_0=327711, 400 -Column_0_dpi96=327711, 200 -Column_1=327684, 120 -Column_1_dpi96=327684, 60 -Column_2=327709, 300 -Column_2_dpi96=327709, 150 -Column_3=327695, 130 -Column_3_dpi96=327695, 65 -Column_4=327681, 400 -Column_4_dpi96=327681, 200 -Column_5=327683, 400 -Column_5_dpi96=327683, 200 +ColumnCount=0 ColumnIdSort=-1 SortUpward=1 -[MEASUREMENT_DISPLAY_COLUMNLIST_SOUNDS] +[MEASUREMENT_DISPLAY_SELECT_REDUCED_COLUMNLIST_SOUNDS] ScreenDPIinSection=192 ColumnCount=0 ColumnIdSort=-1 SortUpward=1 -[MEASUREMENT_DISPLAY_COLUMNLIST_TARA_ACTIVE_SIGNALS] +[MEASUREMENT_DISPLAY_SELECT_REDUCED_COLUMNLIST_TARA_ACTIVE_SIGNALS] ScreenDPIinSection=192 ColumnCount=0 ColumnIdSort=-1 SortUpward=1 -[MEASUREMENT_DISPLAY_COLUMNLIST_TARA_ALL_SIGNALS] +[MEASUREMENT_DISPLAY_SELECT_REDUCED_COLUMNLIST_TARA_ALL_SIGNALS] ScreenDPIinSection=192 ColumnCount=0 ColumnIdSort=-1 SortUpward=1 -[MEASUREMENT_DISPLAY_COLUMNLIST_VIO] +[MEASUREMENT_DISPLAY_SELECT_REDUCED_COLUMNLIST_VIO] ScreenDPIinSection=192 ColumnCount=0 ColumnIdSort=-1 SortUpward=1 -[MEASUREMENT_DISPLAY_DYNAMIC_COLUMNS] -Count=0 +[Module_FILE1] +DefaultReplaceFile=0 +Converter=Converter_ID +ChildFileCount=0 -[MEASUREMENT_DISPLAY_SELECT] +[COLOR_SCHEME_LIST] +COLOR_SCHEME0=COLOR_SCHEMEUSER_DEFINED +SCHEMES_COUNT=1 +ACTIVE=COLOR_SCHEME_H_CANAPE_CLASSIC +CURRENT_SCHEME_INDEX=0 + +[COLOR_SCHEMEUSER_DEFINED] +IS_USER_DEFINED=1 +SCHEME_NAME=[none] +ColorDisplay1=FF00 -1 8F400 -1 +ColorDisplay2=FF -1 8F4 -1 +ColorDisplay3=FFFF -1 F4F4 -1 +ColorDisplay4=FFFF00 -1 F4F400 -1 +ColorDisplay5=FF00FF -1 F400F4 -1 +ColorDisplay6=80FF -1 80F4 -1 +ColorDisplay7=FF8080 -1 F40000 -1 +ColorDisplay8=FFFFFF -1 0 -1 +ColorDisplay9=AA00 -1 AA00 -1 +ColorDisplay10=CC -1 CC -1 +ColorDisplay11=7070 -1 7070 -1 +ColorDisplay12=FFAA00 -1 FFAA00 -1 +ColorDisplay13=FF00AA -1 FF00AA -1 +ColorDisplay14=55AA -1 55AA -1 +ColorDisplay15=AA5555 -1 AA5555 -1 +ColorDisplay16=AAFFFF -1 AAFFFF -1 +ColorDisplay17=FFAA -1 FFAA -1 +ColorDisplay18=8080FF -1 8080FF -1 +ColorDisplay19=AAAA -1 AAAA -1 +ColorDisplay20=AAAA00 -1 AAAA00 -1 +ColorDisplay21=FFAAFF -1 FFAAFF -1 +ColorDisplay22=AAAAFF -1 AAAAFF -1 +ColorDisplay23=FFAAAA -1 FFAAAA -1 +ColorDisplay24=AAFFAA -1 AAFFAA -1 +ColorMarker1=FFFF00 -1 C6C600 -1 +ColorMarker2=FFFF -1 E1E1 -1 +ColorTrigger=FF00 -1 FF00 -1 +ColorEventAudio=A6620D -1 A6620D -1 +ColorEventMarker=FF -1 E7 -1 +ColorEventOther=FFFFFF -1 BABABA -1 +ColorHitMarker=FF00FF -1 FF00FF -1 +ColorGrid=8000 -1 8000 -1 +ColorBackground=0 -1 FFFFFF -1 +ColorChanged=FF0000 -1 FF0000 -1 +ColorWindowBg=C0C0C0 15 FFFFFF -1 +ColorAxis=FFFFFF -1 0 -1 +ColorAxisBackground=0 -1 FFFFFF -1 +ColorAxisSameScaled=FFFFFF -1 0 -1 +ColorAxisText=0 -1 0 -1 +ColorComments=FFFF00 -1 FFFF00 -1 +ColorCalComments=FFFF00 -1 FFFF00 -1 +ColorLegend=0 15 FFFFFF -1 +ColorLegendText=0 18 0 18 +ColorWindowFrameFocus=606060 -1 CEA27D -1 +ColorWindowFrameButtons=0 -1 0 -1 +ColorHexWinCalRam=8000 -1 8000 -1 +ColorHexWinNotCalRam=FF -1 FF -1 +ColorHexWinDbObject=80FFFF -1 80FFFF -1 +ColorHexWinInvalid=AFAFFF -1 AFAFFF -1 +ColorHexWinInvalidDb=FF -1 FF -1 +ColorHexWinSelection=FF 13 FF 13 +ColorHexWinSelText=0 14 0 14 +ColorWriteText=FFFF00 -1 FFFF00 -1 +ColorValLimitOK=FF00 -1 FF00 -1 +ColorValLimitWarn=FFFF -1 FFFF -1 +ColorValLimitError=FF -1 FF -1 +ColorActiveTitleLeft=54E3 2 54E3 2 +ColorActiveTitleRight=3D95FF 27 3D95FF 27 +ColorActiveTitleText=FFFFFF 9 FFFFFF 9 +ColorInactiveTitleLeft=7A96DF 3 7A96DF 3 +ColorInactiveTitleRight70=7A96DF 28 7A96DF 28 +ColorInactiveTitleText=D8E4F8 19 D8E4F8 19 +ColorMeaCursorTooltip=808080 -1 808080 -1 +ColorMeaCursorTooltipTxt=FFFFFF -1 FFFFFF -1 +ColorDisplayGray=999999 -1 999999 -1 +ColorDisplaySubGrid=4000 -1 4000 -1 +ColorGraphBackground=D2D2D2 -1 EEEEEE -1 +ColorInvalidSignal=F0F0F0 -1 F0F0F0 -1 +ColorLostVariable=C0C0C0 -1 C0C0C0 -1 +ColorMoveFrame=FAD5A3 -1 FAD5A3 -1 +ColorResizeMarkers=646464 -1 646464 -1 +ColorPageBackground=D8C7BC -1 D8C7BC -1 +ColorDisabledLegendText=A0A0A0 17 A0A0A0 17 +ColorBordersHighlight=FFFFFF 20 0 20 +ColorBordersShadow=A0A0A0 16 0 16 +ColorLookupTableX=FF -1 FF -1 +ColorLookupTableY=8000 -1 8000 -1 +ColorLookupTableZ=FF0000 -1 FF0000 -1 +ColorLookupTableZ4=FFFF00 -1 FFFF00 -1 +ColorLookupTableZ5=FF00FF -1 FF00FF -1 +ColorActiveCell=30FFFF -1 30FFFF -1 +ColorActiveCellText=0 -1 0 -1 +ColorMissingValues=FF -1 FF -1 +ColorBackgroundValues=FFFFFF -1 FFFFFF -1 +ColorWorkingPoint=880088 -1 880088 -1 +ColorColumnHeader=F0F0F0 30 F0F0F0 30 +ColorBackgroundMetaData=DADEE1 -1 FFFFFF -1 +ColorStatistic=FFFFFF -1 0 -1 +ColorMarker1CurveMode=F56DF3 -1 944293 -1 +ColorMarker2CurveMode=277FFF -1 2372E6 -1 + +[COMMENT_FIELD_0] +ID="Name" +MAX_LENGTH=32 +MODE=0 +VALUE_COUNT=0 +HISTORY_COUNT=0 +HISTORY_0="RainerZ" + +[COMMENT_FIELD_1] +ID="Division" +MAX_LENGTH=32 +MODE=0 +VALUE_COUNT=0 +HISTORY_COUNT=0 + +[COMMENT_FIELD_2] +ID="Project" +MAX_LENGTH=32 +MODE=0 +VALUE_COUNT=0 +HISTORY_COUNT=0 +HISTORY_0="bpf_demo" + +[COMMENT_FIELD_3] +ID="Subject" +MAX_LENGTH=32 +MODE=0 +VALUE_COUNT=0 +HISTORY_COUNT=0 + +[COMMENT_FIELD_4] +ID="Comment" +MAX_LENGTH=-1 +MODE=12 +VALUE_COUNT=0 +HISTORY_COUNT=0 + +[MEASUREMENT_0] +FileId=Measurement1 +MeasurementId=a85dd9ff-3193-4ecb-a85a-ecc88f39ca95 +LoadMeasurementSetting=3 + +[MEASUREMENT_DISPLAY] ScreenDPIinSection=192 -POSX=0 -POSX_dpi96=0 -POSY=0 -POSY_dpi96=0 -SIZEX=1620 -SIZEX_dpi96=810 -SIZEY=1200 -SIZEY_dpi96=600 +POSX=58 +POSX_dpi96=29 +POSY=112 +POSY_dpi96=56 +SIZEX=2646 +SIZEX_dpi96=1323 +SIZEY=1802 +SIZEY_dpi96=901 SHOWTOOLBAR=1 SHOWSTATUSBAR=1 SHOWGRID=0 @@ -3080,15 +3101,17 @@ RIGHTPANE2HEIGHT=304 RIGHTPANE2HEIGHT_dpi96=152 TREEX=450 TREEX_dpi96=225 -TREEY=1009 -TREEY_dpi96=505 +TREEY=1611 +TREEY_dpi96=806 ACTIVEPANE=1 -SELECTED_TREENODE=Measurement signals +SELECTED_TREENODE=Measurement signals/xcp_demo FIRSTVISIBLE_TREENODE=Measurement options -TREEEXPAND_COUNT=1 +TREEEXPAND_COUNT=3 TREEEXPAND_0=Measurement signals +TREEEXPAND_1=Measurement signals/xcp_demo +TREEEXPAND_2=Recorder list LAST_FOCUSED_LISTCOLUMN=0 -LAST_FOCUSED_LISTINDEX=5 +LAST_FOCUSED_LISTINDEX=6 LAST_TOP_LISTINDEX=0 DAQLISTS=2 STATUSBAR_BYTES=1 @@ -3097,114 +3120,127 @@ LABELLISTMEAMODE=0 LABELLISTBUSSIGNALMODE=0 TEXT_SEARCH= VXIIColumnsAdded=0 +SHOWONLYACTIVE=0 -[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_EVENTS] +[MEASUREMENT_DISPLAY_COLUMNLIST_EVENTS] ScreenDPIinSection=192 ColumnCount=0 ColumnIdSort=-1 SortUpward=1 -[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_EVENTS_CUSTOM] +[MEASUREMENT_DISPLAY_COLUMNLIST_EVENTS_CUSTOM] ScreenDPIinSection=192 ColumnCount=0 ColumnIdSort=-1 SortUpward=1 -[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_EVENTS_KEY] +[MEASUREMENT_DISPLAY_COLUMNLIST_EVENTS_KEY] ScreenDPIinSection=192 ColumnCount=0 ColumnIdSort=-1 SortUpward=1 -[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_EVENTS_SYSTEM] +[MEASUREMENT_DISPLAY_COLUMNLIST_EVENTS_SYSTEM] ScreenDPIinSection=192 ColumnCount=0 ColumnIdSort=196608 SortUpward=1 -[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_EVENTS_SYSTEM_DEVICE] +[MEASUREMENT_DISPLAY_COLUMNLIST_EVENTS_SYSTEM_DEVICE] ScreenDPIinSection=192 ColumnCount=0 ColumnIdSort=-1 SortUpward=1 -[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_KNOWN_DYNAMIC_COLUMNS_NORMAL] +[MEASUREMENT_DISPLAY_COLUMNLIST_KNOWN_DYNAMIC_COLUMNS_NORMAL] ScreenDPIinSection=192 ColumnCount=0 ColumnIdSort=-1 SortUpward=1 VERSION=100 -[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_NORMAL] +[MEASUREMENT_DISPLAY_COLUMNLIST_NORMAL] ScreenDPIinSection=192 ColumnCount=8 Column_0=65542, 100 Column_0_dpi96=65542, 50 -Column_1=29, 88 -Column_1_dpi96=29, 44 -Column_2=34, 96 -Column_2_dpi96=34, 48 -Column_3=31, 460 -Column_3_dpi96=31, 230 -Column_4=65540, 160 -Column_4_dpi96=65540, 80 -Column_5=65541, 120 -Column_5_dpi96=65541, 60 -Column_6=65597, 200 -Column_6_dpi96=65597, 100 -Column_7=98305, 160 -Column_7_dpi96=98305, 80 -ColumnIdSort=-1 +Column_1=34, 104 +Column_1_dpi96=34, 52 +Column_2=31, 326 +Column_2_dpi96=31, 163 +Column_3=65540, 438 +Column_3_dpi96=65540, 219 +Column_4=98305, 160 +Column_4_dpi96=98305, 80 +Column_5=1, 180 +Column_5_dpi96=1, 90 +Column_6=65541, 174 +Column_6_dpi96=65541, 87 +Column_7=29, 374 +Column_7_dpi96=29, 187 +ColumnIdSort=65542 SortUpward=1 VERSION=100 -[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_RECORDER] +[MEASUREMENT_DISPLAY_COLUMNLIST_RECORDER] ScreenDPIinSection=192 ColumnCount=0 ColumnIdSort=-1 SortUpward=1 VERSION=100 -[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_RECORDER_BUSLOGGING] +[MEASUREMENT_DISPLAY_COLUMNLIST_RECORDER_BUSLOGGING] ScreenDPIinSection=192 ColumnCount=0 ColumnIdSort=-1 SortUpward=1 -[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_RECORDERS] +[MEASUREMENT_DISPLAY_COLUMNLIST_RECORDERS] ScreenDPIinSection=192 -ColumnCount=0 +ColumnCount=6 +Column_0=327711, 400 +Column_0_dpi96=327711, 200 +Column_1=327684, 120 +Column_1_dpi96=327684, 60 +Column_2=327709, 300 +Column_2_dpi96=327709, 150 +Column_3=327695, 130 +Column_3_dpi96=327695, 65 +Column_4=327681, 400 +Column_4_dpi96=327681, 200 +Column_5=327683, 400 +Column_5_dpi96=327683, 200 ColumnIdSort=-1 SortUpward=1 -[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_SOUNDS] +[MEASUREMENT_DISPLAY_COLUMNLIST_SOUNDS] ScreenDPIinSection=192 ColumnCount=0 ColumnIdSort=-1 SortUpward=1 -[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_TARA_ACTIVE_SIGNALS] +[MEASUREMENT_DISPLAY_COLUMNLIST_TARA_ACTIVE_SIGNALS] ScreenDPIinSection=192 ColumnCount=0 ColumnIdSort=-1 SortUpward=1 -[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_TARA_ALL_SIGNALS] +[MEASUREMENT_DISPLAY_COLUMNLIST_TARA_ALL_SIGNALS] ScreenDPIinSection=192 ColumnCount=0 ColumnIdSort=-1 SortUpward=1 -[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_VIO] +[MEASUREMENT_DISPLAY_COLUMNLIST_VIO] ScreenDPIinSection=192 ColumnCount=0 ColumnIdSort=-1 SortUpward=1 -[MEASUREMENT_DISPLAY_SELECT_DYNAMIC_COLUMNS] +[MEASUREMENT_DISPLAY_DYNAMIC_COLUMNS] Count=0 -[MEASUREMENT_DISPLAY_SELECT_REDUCED] +[MEASUREMENT_DISPLAY_SELECT] ScreenDPIinSection=192 POSX=0 POSX_dpi96=0 @@ -3217,15 +3253,15 @@ SIZEY_dpi96=600 SHOWTOOLBAR=1 SHOWSTATUSBAR=1 SHOWGRID=0 -RIGHTPANE2HEIGHT=-2 -RIGHTPANE2HEIGHT_dpi96=-1 +RIGHTPANE2HEIGHT=304 +RIGHTPANE2HEIGHT_dpi96=152 TREEX=450 TREEX_dpi96=225 -TREEY=1048 -TREEY_dpi96=524 -ACTIVEPANE=1 +TREEY=1009 +TREEY_dpi96=505 +ACTIVEPANE=0 SELECTED_TREENODE=Measurement signals -FIRSTVISIBLE_TREENODE=Measurement signals +FIRSTVISIBLE_TREENODE=Measurement options TREEEXPAND_COUNT=1 TREEEXPAND_0=Measurement signals LAST_FOCUSED_LISTCOLUMN=0 @@ -3239,44 +3275,44 @@ LABELLISTBUSSIGNALMODE=0 TEXT_SEARCH= VXIIColumnsAdded=0 -[MEASUREMENT_DISPLAY_SELECT_REDUCED_COLUMNLIST_EVENTS] +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_EVENTS] ScreenDPIinSection=192 ColumnCount=0 ColumnIdSort=-1 SortUpward=1 -[MEASUREMENT_DISPLAY_SELECT_REDUCED_COLUMNLIST_EVENTS_CUSTOM] +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_EVENTS_CUSTOM] ScreenDPIinSection=192 ColumnCount=0 ColumnIdSort=-1 SortUpward=1 -[MEASUREMENT_DISPLAY_SELECT_REDUCED_COLUMNLIST_EVENTS_KEY] +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_EVENTS_KEY] ScreenDPIinSection=192 ColumnCount=0 ColumnIdSort=-1 SortUpward=1 -[MEASUREMENT_DISPLAY_SELECT_REDUCED_COLUMNLIST_EVENTS_SYSTEM] +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_EVENTS_SYSTEM] ScreenDPIinSection=192 ColumnCount=0 ColumnIdSort=196608 SortUpward=1 -[MEASUREMENT_DISPLAY_SELECT_REDUCED_COLUMNLIST_EVENTS_SYSTEM_DEVICE] +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_EVENTS_SYSTEM_DEVICE] ScreenDPIinSection=192 ColumnCount=0 ColumnIdSort=-1 SortUpward=1 -[MEASUREMENT_DISPLAY_SELECT_REDUCED_COLUMNLIST_KNOWN_DYNAMIC_COLUMNS_NORMAL] +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_KNOWN_DYNAMIC_COLUMNS_NORMAL] ScreenDPIinSection=192 ColumnCount=0 ColumnIdSort=-1 SortUpward=1 VERSION=100 -[MEASUREMENT_DISPLAY_SELECT_REDUCED_COLUMNLIST_NORMAL] +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_NORMAL] ScreenDPIinSection=192 ColumnCount=8 Column_0=65542, 100 @@ -3299,57 +3335,55 @@ ColumnIdSort=-1 SortUpward=1 VERSION=100 -[MEASUREMENT_DISPLAY_SELECT_REDUCED_COLUMNLIST_RECORDER] +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_RECORDER] ScreenDPIinSection=192 ColumnCount=0 ColumnIdSort=-1 SortUpward=1 VERSION=100 -[MEASUREMENT_DISPLAY_SELECT_REDUCED_COLUMNLIST_RECORDER_BUSLOGGING] +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_RECORDER_BUSLOGGING] ScreenDPIinSection=192 ColumnCount=0 ColumnIdSort=-1 SortUpward=1 -[MEASUREMENT_DISPLAY_SELECT_REDUCED_COLUMNLIST_RECORDERS] +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_RECORDERS] ScreenDPIinSection=192 ColumnCount=0 ColumnIdSort=-1 SortUpward=1 -[MEASUREMENT_DISPLAY_SELECT_REDUCED_COLUMNLIST_SOUNDS] +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_SOUNDS] ScreenDPIinSection=192 ColumnCount=0 ColumnIdSort=-1 SortUpward=1 -[MEASUREMENT_DISPLAY_SELECT_REDUCED_COLUMNLIST_TARA_ACTIVE_SIGNALS] +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_TARA_ACTIVE_SIGNALS] ScreenDPIinSection=192 ColumnCount=0 ColumnIdSort=-1 SortUpward=1 -[MEASUREMENT_DISPLAY_SELECT_REDUCED_COLUMNLIST_TARA_ALL_SIGNALS] +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_TARA_ALL_SIGNALS] ScreenDPIinSection=192 ColumnCount=0 ColumnIdSort=-1 SortUpward=1 -[MEASUREMENT_DISPLAY_SELECT_REDUCED_COLUMNLIST_VIO] +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_VIO] ScreenDPIinSection=192 ColumnCount=0 ColumnIdSort=-1 SortUpward=1 -[Module_FILE1] -DefaultReplaceFile=0 -Converter=Converter_ID -ChildFileCount=0 +[MEASUREMENT_DISPLAY_SELECT_DYNAMIC_COLUMNS] +Count=0 [SIGNSELWND_DYNAMIC_COLUMNS] Count=0 [~~~~~_CONSISTENCY_CHECK_END_SECTION_~~~~~] -GUID={3F2AA4E1-96F2-490B-B49A-D504BADDAD4C} +GUID={66564AC3-D4A5-4424-AA7B-46A034ABCFAA} diff --git a/examples/bpf_demo/CANape/bpf_demo.cna b/examples/bpf_demo/CANape/bpf_demo.cna index dc24a5ac..c9f835fb 100644 --- a/examples/bpf_demo/CANape/bpf_demo.cna +++ b/examples/bpf_demo/CANape/bpf_demo.cna @@ -10,8 +10,8 @@ PrgDate=16.06.2025 Description= CreationTime=13:52 CreationDate=09/10/2025 ; Month/Day/Year -ModificationTime=22:03 -ModificationDate=09/10/2025 ; Month/Day/Year +ModificationTime=15:36 +ModificationDate=10/29/2025 ; Month/Day/Year Protected=0 CurrentWindowsACP=1252 @@ -78,7 +78,7 @@ Count=0 Name=Trace syscalls Comment= Maximized=0 -ActiveWindow=3 +ActiveWindow=6 IsReportPage=0 TimeAxisSynchronized=0 PrintLayout=Default @@ -156,11 +156,9 @@ HasInitialValue=0 InitialValue=0 NumberOfInputSignals=1 Module=Functions -Mode=5 +Mode=10 Rate=0 ModeIsDefault=0 -ModeModule=xcp_demo -ModeName=1,"syscall_event" "xcp_demo" Row=0 Column=0 MeaReferenced=1 @@ -175,11 +173,11 @@ Color=65535 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 -LineTyp=2 +LineTyp=4 YMinHome=0 -YMaxHome=0.05 +YMaxHome=0.2 YMin=0 -YMax=0.05 +YMax=0.2 XOffsetNS=0 XOffset=0 ValueFormat=3 @@ -187,7 +185,7 @@ BitMask=1 ShowYAxis=1 Width=10 LineStyle=1 -MarkerType=1 +MarkerType=5 SRMainValue=0 InvalidValueDrawMode=3 LineWidth=1 @@ -245,11 +243,9 @@ HasInitialValue=0 InitialValue=0 NumberOfInputSignals=1 Module=Functions -Mode=5 +Mode=10 Rate=0 ModeIsDefault=0 -ModeModule=xcp_demo -ModeName=1,"syscall_event" "xcp_demo" Row=0 Column=0 MeaReferenced=1 @@ -264,11 +260,11 @@ Color=65280 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 -LineTyp=2 +LineTyp=4 YMinHome=0 -YMaxHome=0.05 +YMaxHome=0.2 YMin=0 -YMax=0.05 +YMax=0.2 XOffsetNS=0 XOffset=0 ValueFormat=3 @@ -276,13 +272,13 @@ BitMask=1 ShowYAxis=1 Width=10 LineStyle=1 -MarkerType=1 +MarkerType=3 SRMainValue=0 InvalidValueDrawMode=3 LineWidth=1 Precision=-2 Digits=6 -Enabled=1 +Enabled=0 StoredFocused=0 SublMask=1 MeaSublMask=3 @@ -338,7 +334,7 @@ SubConfigsCount=0 Count=0 [MEASUREMENT_LIST] -Count=307 +Count=308 OfflineFileName=bpf_demo.mf4 OfflineFileCount=1 MeaCfgLabellistName= @@ -347,7 +343,7 @@ MeaCfgLabellistName= Module=xcp_demo Name=syscall_count Disabled=0 -Mode=2147483648 +Mode=2147483649 Rate=0 ModeIsDefault=1 Row=0 @@ -360,7 +356,7 @@ DisplayCount=1 [MEASUREMENT_OBJECT_10] Module=xcp_demo -Name=futex_wake +Name=clock_gettime Disabled=0 Mode=1 Rate=1000 @@ -371,11 +367,11 @@ MeaReferenced=1 ArchivBy_1=Recorder IsFallback=0 HasManagedDisplay=0 -DisplayCount=1 +DisplayCount=2 [MEASUREMENT_OBJECT_100] Module=xcp_demo -Name=inotify_add_watch +Name=getuid Disabled=0 Mode=1 Rate=1000 @@ -390,8 +386,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_100_DISPLAY_1] Window=6 -Index=203 -Color=65535 +Index=206 +Color=11206570 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -432,11 +428,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_753cac2f-8c73-4d63-831f-c96e3d454128 +GUID=DISPLAY_b902f2ca-a114-46ce-8896-526d0eb70311 [MEASUREMENT_OBJECT_101] Module=xcp_demo -Name=inotify_init1 +Name=getxattr Disabled=0 Mode=1 Rate=1000 @@ -451,8 +447,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_101_DISPLAY_1] Window=6 -Index=202 -Color=16776960 +Index=205 +Color=65280 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -493,11 +489,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_1a317de2-17bd-4cb2-8966-2103fcf43a03 +GUID=DISPLAY_ce5a66ec-0cb2-4935-b330-90d53f313d1f [MEASUREMENT_OBJECT_102] Module=xcp_demo -Name=inotify_rm_watch +Name=init_module Disabled=0 Mode=1 Rate=1000 @@ -512,8 +508,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_102_DISPLAY_1] Window=6 -Index=201 -Color=16711935 +Index=204 +Color=255 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -554,11 +550,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_d0e1fac1-de29-496d-a63e-2020f141ccf5 +GUID=DISPLAY_11fdd9b0-5237-408c-9449-0867e1d21261 [MEASUREMENT_OBJECT_103] Module=xcp_demo -Name=io_cancel +Name=inotify_add_watch Disabled=0 Mode=1 Rate=1000 @@ -573,8 +569,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_103_DISPLAY_1] Window=6 -Index=200 -Color=33023 +Index=203 +Color=65535 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -615,11 +611,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_8cd9b830-1e75-4acd-9762-f009c38e2af0 +GUID=DISPLAY_753cac2f-8c73-4d63-831f-c96e3d454128 [MEASUREMENT_OBJECT_104] Module=xcp_demo -Name=io_destroy +Name=inotify_init1 Disabled=0 Mode=1 Rate=1000 @@ -634,8 +630,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_104_DISPLAY_1] Window=6 -Index=199 -Color=16744576 +Index=202 +Color=16776960 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -676,11 +672,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_e2223173-5ea5-448a-99dd-87ba0a3d3721 +GUID=DISPLAY_1a317de2-17bd-4cb2-8966-2103fcf43a03 [MEASUREMENT_OBJECT_105] Module=xcp_demo -Name=io_getevents +Name=inotify_rm_watch Disabled=0 Mode=1 Rate=1000 @@ -695,8 +691,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_105_DISPLAY_1] Window=6 -Index=198 -Color=16777215 +Index=201 +Color=16711935 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -737,11 +733,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_4b013543-078d-423b-bcad-ea338424894c +GUID=DISPLAY_d0e1fac1-de29-496d-a63e-2020f141ccf5 [MEASUREMENT_OBJECT_106] Module=xcp_demo -Name=io_pgetevents +Name=io_cancel Disabled=0 Mode=1 Rate=1000 @@ -756,8 +752,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_106_DISPLAY_1] Window=6 -Index=197 -Color=43520 +Index=200 +Color=33023 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -798,11 +794,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_f4cee5ad-620a-4a71-ab83-4aed3c81e2dc +GUID=DISPLAY_8cd9b830-1e75-4acd-9762-f009c38e2af0 [MEASUREMENT_OBJECT_107] Module=xcp_demo -Name=io_setup +Name=io_destroy Disabled=0 Mode=1 Rate=1000 @@ -817,8 +813,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_107_DISPLAY_1] Window=6 -Index=196 -Color=204 +Index=199 +Color=16744576 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -859,11 +855,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_02ca3237-f542-42a6-a3e2-a5a777dd1710 +GUID=DISPLAY_e2223173-5ea5-448a-99dd-87ba0a3d3721 [MEASUREMENT_OBJECT_108] Module=xcp_demo -Name=io_submit +Name=io_getevents Disabled=0 Mode=1 Rate=1000 @@ -878,8 +874,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_108_DISPLAY_1] Window=6 -Index=195 -Color=28784 +Index=198 +Color=16777215 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -920,11 +916,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_135a60d7-a58b-43f2-aa2e-19c5518bcaa1 +GUID=DISPLAY_4b013543-078d-423b-bcad-ea338424894c [MEASUREMENT_OBJECT_109] Module=xcp_demo -Name=io_uring_enter +Name=io_pgetevents Disabled=0 Mode=1 Rate=1000 @@ -939,8 +935,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_109_DISPLAY_1] Window=6 -Index=194 -Color=16755200 +Index=197 +Color=43520 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -981,12 +977,12 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_db7932be-0189-4143-8198-da3cfe6e975b +GUID=DISPLAY_f4cee5ad-620a-4a71-ab83-4aed3c81e2dc [MEASUREMENT_OBJECT_10_DISPLAY_1] Window=6 -Index=293 -Color=11184895 +Index=277 +Color=8421631 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -1027,11 +1023,57 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_d6e87471-d5a8-44fa-90ca-b71e571c07b8 +GUID=DISPLAY_60c88a13-3dcf-452b-b437-21b5eddfa287 + +[MEASUREMENT_OBJECT_10_DISPLAY_2] +Window=6 +Index=302 +Color=8421631 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=0 +YMaxHome=100 +YMin=0 +YMax=100 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=1 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_1c167ded-1e11-4a4e-a17f-cad357fe8834 [MEASUREMENT_OBJECT_11] Module=xcp_demo -Name=accept +Name=futex_requeue Disabled=0 Mode=1 Rate=1000 @@ -1046,7 +1088,7 @@ DisplayCount=1 [MEASUREMENT_OBJECT_110] Module=xcp_demo -Name=io_uring_register +Name=io_setup Disabled=0 Mode=1 Rate=1000 @@ -1061,8 +1103,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_110_DISPLAY_1] Window=6 -Index=193 -Color=16711850 +Index=196 +Color=204 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -1103,11 +1145,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_f3fa8fc1-878a-4b20-8e54-bca1e4c052ef +GUID=DISPLAY_02ca3237-f542-42a6-a3e2-a5a777dd1710 [MEASUREMENT_OBJECT_111] Module=xcp_demo -Name=io_uring_setup +Name=io_submit Disabled=0 Mode=1 Rate=1000 @@ -1122,8 +1164,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_111_DISPLAY_1] Window=6 -Index=192 -Color=21930 +Index=195 +Color=28784 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -1164,11 +1206,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_67d78269-4fc8-48ad-93ba-609bae37178c +GUID=DISPLAY_135a60d7-a58b-43f2-aa2e-19c5518bcaa1 [MEASUREMENT_OBJECT_112] Module=xcp_demo -Name=ioctl +Name=io_uring_enter Disabled=0 Mode=1 Rate=1000 @@ -1183,8 +1225,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_112_DISPLAY_1] Window=6 -Index=298 -Color=11162965 +Index=194 +Color=16755200 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -1225,11 +1267,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_632f9dd1-d07f-4bce-a98f-5593b183885d +GUID=DISPLAY_db7932be-0189-4143-8198-da3cfe6e975b [MEASUREMENT_OBJECT_113] Module=xcp_demo -Name=ioprio_get +Name=io_uring_register Disabled=0 Mode=1 Rate=1000 @@ -1244,8 +1286,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_113_DISPLAY_1] Window=6 -Index=191 -Color=11206655 +Index=193 +Color=16711850 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -1286,11 +1328,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_591d09cf-cd5f-4ab9-8411-b859f8c72cb8 +GUID=DISPLAY_f3fa8fc1-878a-4b20-8e54-bca1e4c052ef [MEASUREMENT_OBJECT_114] Module=xcp_demo -Name=ioprio_set +Name=io_uring_setup Disabled=0 Mode=1 Rate=1000 @@ -1305,8 +1347,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_114_DISPLAY_1] Window=6 -Index=190 -Color=65450 +Index=192 +Color=21930 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -1347,11 +1389,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_156b351d-ced1-461e-889a-fa33db744d24 +GUID=DISPLAY_67d78269-4fc8-48ad-93ba-609bae37178c [MEASUREMENT_OBJECT_115] Module=xcp_demo -Name=kexec_file_load +Name=ioctl Disabled=0 Mode=1 Rate=1000 @@ -1366,8 +1408,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_115_DISPLAY_1] Window=6 -Index=189 -Color=8421631 +Index=298 +Color=11162965 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -1408,11 +1450,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_bb388b58-b64d-4b05-aaa9-85a11486872f +GUID=DISPLAY_632f9dd1-d07f-4bce-a98f-5593b183885d [MEASUREMENT_OBJECT_116] Module=xcp_demo -Name=kexec_load +Name=ioprio_get Disabled=0 Mode=1 Rate=1000 @@ -1427,8 +1469,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_116_DISPLAY_1] Window=6 -Index=188 -Color=43690 +Index=191 +Color=11206655 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -1469,11 +1511,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_490d5400-fe5b-4852-a28e-e39819cf85e4 +GUID=DISPLAY_591d09cf-cd5f-4ab9-8411-b859f8c72cb8 [MEASUREMENT_OBJECT_117] Module=xcp_demo -Name=keyctl +Name=ioprio_set Disabled=0 Mode=1 Rate=1000 @@ -1488,8 +1530,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_117_DISPLAY_1] Window=6 -Index=187 -Color=11184640 +Index=190 +Color=65450 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -1530,11 +1572,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_f332f434-1ad3-4803-91e1-f646719cd79c +GUID=DISPLAY_156b351d-ced1-461e-889a-fa33db744d24 [MEASUREMENT_OBJECT_118] Module=xcp_demo -Name=kill +Name=kexec_file_load Disabled=0 Mode=1 Rate=1000 @@ -1549,8 +1591,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_118_DISPLAY_1] Window=6 -Index=186 -Color=16755455 +Index=189 +Color=8421631 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -1591,11 +1633,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_0ef49375-0877-4925-bed0-f1bde5fce2ea +GUID=DISPLAY_bb388b58-b64d-4b05-aaa9-85a11486872f [MEASUREMENT_OBJECT_119] Module=xcp_demo -Name=landlock_add_rule +Name=kexec_load Disabled=0 Mode=1 Rate=1000 @@ -1610,8 +1652,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_119_DISPLAY_1] Window=6 -Index=185 -Color=11184895 +Index=188 +Color=43690 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -1652,12 +1694,12 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_13373ac1-d87d-40f1-811c-ee2ed8d934fd +GUID=DISPLAY_490d5400-fe5b-4852-a28e-e39819cf85e4 [MEASUREMENT_OBJECT_11_DISPLAY_1] Window=6 -Index=292 -Color=65535 +Index=296 +Color=43690 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -1698,11 +1740,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_e16f4317-c8ec-4389-975b-d5b513cc20c6 +GUID=DISPLAY_09d56764-0077-45a5-bb6f-b72084c9883e [MEASUREMENT_OBJECT_12] Module=xcp_demo -Name=accept4 +Name=futex_wait Disabled=0 Mode=1 Rate=1000 @@ -1717,7 +1759,7 @@ DisplayCount=1 [MEASUREMENT_OBJECT_120] Module=xcp_demo -Name=landlock_create_ruleset +Name=keyctl Disabled=0 Mode=1 Rate=1000 @@ -1732,8 +1774,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_120_DISPLAY_1] Window=6 -Index=184 -Color=16755370 +Index=187 +Color=11184640 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -1774,11 +1816,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_632ea133-5d34-4436-a821-eaa974e07908 +GUID=DISPLAY_f332f434-1ad3-4803-91e1-f646719cd79c [MEASUREMENT_OBJECT_121] Module=xcp_demo -Name=landlock_restrict_self +Name=kill Disabled=0 Mode=1 Rate=1000 @@ -1793,8 +1835,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_121_DISPLAY_1] Window=6 -Index=183 -Color=11206570 +Index=186 +Color=16755455 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -1835,11 +1877,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_51639c6d-0fb6-4779-8afc-0849081d75b9 +GUID=DISPLAY_0ef49375-0877-4925-bed0-f1bde5fce2ea [MEASUREMENT_OBJECT_122] Module=xcp_demo -Name=lgetxattr +Name=landlock_add_rule Disabled=0 Mode=1 Rate=1000 @@ -1854,8 +1896,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_122_DISPLAY_1] Window=6 -Index=182 -Color=65280 +Index=185 +Color=11184895 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -1896,11 +1938,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_f50f84be-cb43-46d8-8248-a34c64c79f03 +GUID=DISPLAY_13373ac1-d87d-40f1-811c-ee2ed8d934fd [MEASUREMENT_OBJECT_123] Module=xcp_demo -Name=linkat +Name=landlock_create_ruleset Disabled=0 Mode=1 Rate=1000 @@ -1915,8 +1957,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_123_DISPLAY_1] Window=6 -Index=181 -Color=255 +Index=184 +Color=16755370 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -1957,11 +1999,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_d291383e-892c-430c-ae90-e3c58109d116 +GUID=DISPLAY_632ea133-5d34-4436-a821-eaa974e07908 [MEASUREMENT_OBJECT_124] Module=xcp_demo -Name=listen +Name=landlock_restrict_self Disabled=0 Mode=1 Rate=1000 @@ -1976,8 +2018,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_124_DISPLAY_1] Window=6 -Index=180 -Color=65535 +Index=183 +Color=11206570 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -2018,11 +2060,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_1dbcce4f-fdce-45d6-ad19-e2e84407a733 +GUID=DISPLAY_51639c6d-0fb6-4779-8afc-0849081d75b9 [MEASUREMENT_OBJECT_125] Module=xcp_demo -Name=listmount +Name=lgetxattr Disabled=0 Mode=1 Rate=1000 @@ -2037,8 +2079,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_125_DISPLAY_1] Window=6 -Index=179 -Color=16776960 +Index=182 +Color=65280 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -2079,11 +2121,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_9e44c70a-e77a-462d-8c5b-da89a310d7d0 +GUID=DISPLAY_f50f84be-cb43-46d8-8248-a34c64c79f03 [MEASUREMENT_OBJECT_126] Module=xcp_demo -Name=listxattr +Name=linkat Disabled=0 Mode=1 Rate=1000 @@ -2098,8 +2140,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_126_DISPLAY_1] Window=6 -Index=178 -Color=16711935 +Index=181 +Color=255 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -2140,11 +2182,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_3443a2ac-743f-45f4-98bc-98224b2792c6 +GUID=DISPLAY_d291383e-892c-430c-ae90-e3c58109d116 [MEASUREMENT_OBJECT_127] Module=xcp_demo -Name=llistxattr +Name=listen Disabled=0 Mode=1 Rate=1000 @@ -2159,8 +2201,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_127_DISPLAY_1] Window=6 -Index=177 -Color=33023 +Index=180 +Color=65535 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -2201,11 +2243,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_31355489-3f0a-4921-b98d-159f68a41d5b +GUID=DISPLAY_1dbcce4f-fdce-45d6-ad19-e2e84407a733 [MEASUREMENT_OBJECT_128] Module=xcp_demo -Name=lookup_dcookie +Name=listmount Disabled=0 Mode=1 Rate=1000 @@ -2220,8 +2262,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_128_DISPLAY_1] Window=6 -Index=176 -Color=16744576 +Index=179 +Color=16776960 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -2262,11 +2304,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_5d145823-5fd6-46b2-a56e-976442e0e0f8 +GUID=DISPLAY_9e44c70a-e77a-462d-8c5b-da89a310d7d0 [MEASUREMENT_OBJECT_129] Module=xcp_demo -Name=lremovexattr +Name=listxattr Disabled=0 Mode=1 Rate=1000 @@ -2281,8 +2323,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_129_DISPLAY_1] Window=6 -Index=175 -Color=16777215 +Index=178 +Color=16711935 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -2323,12 +2365,12 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_399f45e8-1149-48a3-8c0a-a023f5856700 +GUID=DISPLAY_3443a2ac-743f-45f4-98bc-98224b2792c6 [MEASUREMENT_OBJECT_12_DISPLAY_1] Window=6 -Index=291 -Color=16776960 +Index=295 +Color=11184640 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -2369,11 +2411,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_8da67a8e-941b-4eca-8413-ffdbf97ad0a6 +GUID=DISPLAY_c3887c07-5888-46f6-9101-411953e03e62 [MEASUREMENT_OBJECT_13] Module=xcp_demo -Name=acct +Name=futex_waitv Disabled=0 Mode=1 Rate=1000 @@ -2388,7 +2430,7 @@ DisplayCount=1 [MEASUREMENT_OBJECT_130] Module=xcp_demo -Name=lseek +Name=llistxattr Disabled=0 Mode=1 Rate=1000 @@ -2403,8 +2445,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_130_DISPLAY_1] Window=6 -Index=174 -Color=43520 +Index=177 +Color=33023 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -2445,11 +2487,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_2e8f559f-b416-44ae-aecb-9b80de35ce7c +GUID=DISPLAY_31355489-3f0a-4921-b98d-159f68a41d5b [MEASUREMENT_OBJECT_131] Module=xcp_demo -Name=lsetxattr +Name=lookup_dcookie Disabled=0 Mode=1 Rate=1000 @@ -2464,8 +2506,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_131_DISPLAY_1] Window=6 -Index=173 -Color=204 +Index=176 +Color=16744576 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -2506,11 +2548,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_1f947909-5b3e-47e8-9b4e-2cf2ab10ab7c +GUID=DISPLAY_5d145823-5fd6-46b2-a56e-976442e0e0f8 [MEASUREMENT_OBJECT_132] Module=xcp_demo -Name=lsm_get_self_attr +Name=lremovexattr Disabled=0 Mode=1 Rate=1000 @@ -2525,8 +2567,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_132_DISPLAY_1] Window=6 -Index=172 -Color=28784 +Index=175 +Color=16777215 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -2567,11 +2609,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_0e3171bf-9e70-41e7-87c0-8ac4c349d6dd +GUID=DISPLAY_399f45e8-1149-48a3-8c0a-a023f5856700 [MEASUREMENT_OBJECT_133] Module=xcp_demo -Name=lsm_list_modules +Name=lseek Disabled=0 Mode=1 Rate=1000 @@ -2586,8 +2628,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_133_DISPLAY_1] Window=6 -Index=171 -Color=16755200 +Index=174 +Color=43520 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -2628,11 +2670,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_22793609-050d-4d3b-99dd-662e2c385c89 +GUID=DISPLAY_2e8f559f-b416-44ae-aecb-9b80de35ce7c [MEASUREMENT_OBJECT_134] Module=xcp_demo -Name=lsm_set_self_attr +Name=lsetxattr Disabled=0 Mode=1 Rate=1000 @@ -2647,8 +2689,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_134_DISPLAY_1] Window=6 -Index=170 -Color=16711850 +Index=173 +Color=204 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -2689,11 +2731,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_42a2a3c3-7f06-4b77-b033-a53a6afdeff6 +GUID=DISPLAY_1f947909-5b3e-47e8-9b4e-2cf2ab10ab7c [MEASUREMENT_OBJECT_135] Module=xcp_demo -Name=madvise +Name=lsm_get_self_attr Disabled=0 Mode=1 Rate=1000 @@ -2708,8 +2750,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_135_DISPLAY_1] Window=6 -Index=169 -Color=21930 +Index=172 +Color=28784 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -2750,11 +2792,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_cbe06728-6ce2-4938-8380-709f4f3e5bfb +GUID=DISPLAY_0e3171bf-9e70-41e7-87c0-8ac4c349d6dd [MEASUREMENT_OBJECT_136] Module=xcp_demo -Name=map_shadow_stack +Name=lsm_list_modules Disabled=0 Mode=1 Rate=1000 @@ -2769,8 +2811,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_136_DISPLAY_1] Window=6 -Index=168 -Color=11162965 +Index=171 +Color=16755200 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -2811,11 +2853,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_8c7c906f-4a79-4980-acf2-2911709640ba +GUID=DISPLAY_22793609-050d-4d3b-99dd-662e2c385c89 [MEASUREMENT_OBJECT_137] Module=xcp_demo -Name=mbind +Name=lsm_set_self_attr Disabled=0 Mode=1 Rate=1000 @@ -2830,8 +2872,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_137_DISPLAY_1] Window=6 -Index=167 -Color=11206655 +Index=170 +Color=16711850 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -2872,11 +2914,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_81889ea4-e027-47b4-82f0-298dde2d2a65 +GUID=DISPLAY_42a2a3c3-7f06-4b77-b033-a53a6afdeff6 [MEASUREMENT_OBJECT_138] Module=xcp_demo -Name=membarrier +Name=madvise Disabled=0 Mode=1 Rate=1000 @@ -2891,8 +2933,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_138_DISPLAY_1] Window=6 -Index=166 -Color=65450 +Index=169 +Color=21930 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -2933,11 +2975,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_c6a8fa66-858f-4089-82f9-7ad389231368 +GUID=DISPLAY_cbe06728-6ce2-4938-8380-709f4f3e5bfb [MEASUREMENT_OBJECT_139] Module=xcp_demo -Name=memfd_create +Name=map_shadow_stack Disabled=0 Mode=1 Rate=1000 @@ -2952,8 +2994,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_139_DISPLAY_1] Window=6 -Index=165 -Color=8421631 +Index=168 +Color=11162965 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -2994,12 +3036,12 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_5a74781a-e6ad-4978-aac9-b7f07401742e +GUID=DISPLAY_8c7c906f-4a79-4980-acf2-2911709640ba [MEASUREMENT_OBJECT_13_DISPLAY_1] Window=6 -Index=290 -Color=16711935 +Index=294 +Color=16755455 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -3040,11 +3082,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_8642eb27-81fc-4d1e-a88c-e452cfe4f668 +GUID=DISPLAY_5ace000d-b269-4435-a4ac-71d952139440 [MEASUREMENT_OBJECT_14] Module=xcp_demo -Name=add_key +Name=futex_wake Disabled=0 Mode=1 Rate=1000 @@ -3059,7 +3101,7 @@ DisplayCount=1 [MEASUREMENT_OBJECT_140] Module=xcp_demo -Name=memfd_secret +Name=mbind Disabled=0 Mode=1 Rate=1000 @@ -3074,8 +3116,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_140_DISPLAY_1] Window=6 -Index=164 -Color=43690 +Index=167 +Color=11206655 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -3116,11 +3158,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_5bbcf57e-1f98-47b0-99ed-483b1d8c5fec +GUID=DISPLAY_81889ea4-e027-47b4-82f0-298dde2d2a65 [MEASUREMENT_OBJECT_141] Module=xcp_demo -Name=migrate_pages +Name=membarrier Disabled=0 Mode=1 Rate=1000 @@ -3135,8 +3177,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_141_DISPLAY_1] Window=6 -Index=163 -Color=11184640 +Index=166 +Color=65450 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -3177,11 +3219,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_94ae92f7-dfea-42bf-bd8c-266368ac625f +GUID=DISPLAY_c6a8fa66-858f-4089-82f9-7ad389231368 [MEASUREMENT_OBJECT_142] Module=xcp_demo -Name=mincore +Name=memfd_create Disabled=0 Mode=1 Rate=1000 @@ -3196,8 +3238,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_142_DISPLAY_1] Window=6 -Index=162 -Color=16755455 +Index=165 +Color=8421631 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -3238,11 +3280,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_f00ad12b-fa60-4c7b-ba2c-9eb61ce3fb10 +GUID=DISPLAY_5a74781a-e6ad-4978-aac9-b7f07401742e [MEASUREMENT_OBJECT_143] Module=xcp_demo -Name=mkdirat +Name=memfd_secret Disabled=0 Mode=1 Rate=1000 @@ -3257,8 +3299,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_143_DISPLAY_1] Window=6 -Index=161 -Color=11184895 +Index=164 +Color=43690 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -3299,11 +3341,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_d208349f-4422-423c-95b1-91660f37524b +GUID=DISPLAY_5bbcf57e-1f98-47b0-99ed-483b1d8c5fec [MEASUREMENT_OBJECT_144] Module=xcp_demo -Name=mknodat +Name=migrate_pages Disabled=0 Mode=1 Rate=1000 @@ -3318,8 +3360,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_144_DISPLAY_1] Window=6 -Index=160 -Color=16755370 +Index=163 +Color=11184640 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -3360,11 +3402,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_4ca4df89-6538-4c66-be61-153925f2b531 +GUID=DISPLAY_94ae92f7-dfea-42bf-bd8c-266368ac625f [MEASUREMENT_OBJECT_145] Module=xcp_demo -Name=mlock +Name=mincore Disabled=0 Mode=1 Rate=1000 @@ -3379,8 +3421,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_145_DISPLAY_1] Window=6 -Index=159 -Color=11206570 +Index=162 +Color=16755455 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -3421,11 +3463,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_b40dcf54-3aa5-4ce6-ab2a-0c68479a8a26 +GUID=DISPLAY_f00ad12b-fa60-4c7b-ba2c-9eb61ce3fb10 [MEASUREMENT_OBJECT_146] Module=xcp_demo -Name=mlock2 +Name=mkdirat Disabled=0 Mode=1 Rate=1000 @@ -3440,8 +3482,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_146_DISPLAY_1] Window=6 -Index=158 -Color=65280 +Index=161 +Color=11184895 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -3482,11 +3524,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_37355fd9-ba6d-4576-8d75-065a9b786308 +GUID=DISPLAY_d208349f-4422-423c-95b1-91660f37524b [MEASUREMENT_OBJECT_147] Module=xcp_demo -Name=mlockall +Name=mknodat Disabled=0 Mode=1 Rate=1000 @@ -3501,8 +3543,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_147_DISPLAY_1] Window=6 -Index=157 -Color=255 +Index=160 +Color=16755370 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -3543,11 +3585,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_15bda73f-0d7b-409f-9c1f-572cbb26fb28 +GUID=DISPLAY_4ca4df89-6538-4c66-be61-153925f2b531 [MEASUREMENT_OBJECT_148] Module=xcp_demo -Name=mmap +Name=mlock Disabled=0 Mode=1 Rate=1000 @@ -3562,8 +3604,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_148_DISPLAY_1] Window=6 -Index=156 -Color=65535 +Index=159 +Color=11206570 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -3604,11 +3646,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_615f8a06-7cb8-4d0f-9011-9b0f7b27e8ab +GUID=DISPLAY_b40dcf54-3aa5-4ce6-ab2a-0c68479a8a26 [MEASUREMENT_OBJECT_149] Module=xcp_demo -Name=mount +Name=mlock2 Disabled=0 Mode=1 Rate=1000 @@ -3623,8 +3665,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_149_DISPLAY_1] Window=6 -Index=155 -Color=16776960 +Index=158 +Color=65280 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -3665,12 +3707,12 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_c050a9a9-a362-472b-8cfc-39dd70c6851a +GUID=DISPLAY_37355fd9-ba6d-4576-8d75-065a9b786308 [MEASUREMENT_OBJECT_14_DISPLAY_1] Window=6 -Index=289 -Color=33023 +Index=293 +Color=11184895 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -3711,11 +3753,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_12b656dc-61b3-43eb-be3a-5d29d54e4c56 +GUID=DISPLAY_d6e87471-d5a8-44fa-90ca-b71e571c07b8 [MEASUREMENT_OBJECT_15] Module=xcp_demo -Name=adjtimex +Name=accept Disabled=0 Mode=1 Rate=1000 @@ -3730,7 +3772,7 @@ DisplayCount=1 [MEASUREMENT_OBJECT_150] Module=xcp_demo -Name=mount_setattr +Name=mlockall Disabled=0 Mode=1 Rate=1000 @@ -3745,8 +3787,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_150_DISPLAY_1] Window=6 -Index=154 -Color=16711935 +Index=157 +Color=255 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -3787,11 +3829,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_b11879db-9d6c-406c-a7bf-db55897bceba +GUID=DISPLAY_15bda73f-0d7b-409f-9c1f-572cbb26fb28 [MEASUREMENT_OBJECT_151] Module=xcp_demo -Name=move_mount +Name=mmap Disabled=0 Mode=1 Rate=1000 @@ -3806,8 +3848,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_151_DISPLAY_1] Window=6 -Index=153 -Color=33023 +Index=156 +Color=65535 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -3848,11 +3890,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_507ac80c-e4be-40d4-aa5c-4374a9cc90e5 +GUID=DISPLAY_615f8a06-7cb8-4d0f-9011-9b0f7b27e8ab [MEASUREMENT_OBJECT_152] Module=xcp_demo -Name=move_pages +Name=mount Disabled=0 Mode=1 Rate=1000 @@ -3867,8 +3909,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_152_DISPLAY_1] Window=6 -Index=152 -Color=16744576 +Index=155 +Color=16776960 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -3909,11 +3951,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_9c7c963d-ec64-41f6-a797-700dbdc8aee3 +GUID=DISPLAY_c050a9a9-a362-472b-8cfc-39dd70c6851a [MEASUREMENT_OBJECT_153] Module=xcp_demo -Name=mprotect +Name=mount_setattr Disabled=0 Mode=1 Rate=1000 @@ -3928,8 +3970,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_153_DISPLAY_1] Window=6 -Index=151 -Color=16777215 +Index=154 +Color=16711935 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -3970,11 +4012,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_e81f0c3f-b7b5-4646-ba5d-b6795babde83 +GUID=DISPLAY_b11879db-9d6c-406c-a7bf-db55897bceba [MEASUREMENT_OBJECT_154] Module=xcp_demo -Name=mq_getsetattr +Name=move_mount Disabled=0 Mode=1 Rate=1000 @@ -3989,8 +4031,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_154_DISPLAY_1] Window=6 -Index=150 -Color=43520 +Index=153 +Color=33023 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -4031,11 +4073,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_76c0ea48-c1b5-4f14-b5c5-7e1164104b66 +GUID=DISPLAY_507ac80c-e4be-40d4-aa5c-4374a9cc90e5 [MEASUREMENT_OBJECT_155] Module=xcp_demo -Name=mq_notify +Name=move_pages Disabled=0 Mode=1 Rate=1000 @@ -4050,8 +4092,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_155_DISPLAY_1] Window=6 -Index=149 -Color=204 +Index=152 +Color=16744576 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -4092,11 +4134,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_16ff0654-6911-4a7c-9988-5978bcc17d40 +GUID=DISPLAY_9c7c963d-ec64-41f6-a797-700dbdc8aee3 [MEASUREMENT_OBJECT_156] Module=xcp_demo -Name=mq_open +Name=mprotect Disabled=0 Mode=1 Rate=1000 @@ -4111,8 +4153,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_156_DISPLAY_1] Window=6 -Index=148 -Color=28784 +Index=151 +Color=16777215 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -4153,11 +4195,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_3037cb26-5df9-4109-b356-398aa19e55b1 +GUID=DISPLAY_e81f0c3f-b7b5-4646-ba5d-b6795babde83 [MEASUREMENT_OBJECT_157] Module=xcp_demo -Name=mq_timedreceive +Name=mq_getsetattr Disabled=0 Mode=1 Rate=1000 @@ -4172,8 +4214,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_157_DISPLAY_1] Window=6 -Index=147 -Color=16755200 +Index=150 +Color=43520 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -4214,11 +4256,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_99f48aec-09e0-4d4b-8c4f-6958c8f4e848 +GUID=DISPLAY_76c0ea48-c1b5-4f14-b5c5-7e1164104b66 [MEASUREMENT_OBJECT_158] Module=xcp_demo -Name=mq_timedsend +Name=mq_notify Disabled=0 Mode=1 Rate=1000 @@ -4233,8 +4275,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_158_DISPLAY_1] Window=6 -Index=146 -Color=16711850 +Index=149 +Color=204 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -4275,11 +4317,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_9aa315de-4023-46c9-9113-fd944df2587b +GUID=DISPLAY_16ff0654-6911-4a7c-9988-5978bcc17d40 [MEASUREMENT_OBJECT_159] Module=xcp_demo -Name=mq_unlink +Name=mq_open Disabled=0 Mode=1 Rate=1000 @@ -4294,8 +4336,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_159_DISPLAY_1] Window=6 -Index=145 -Color=21930 +Index=148 +Color=28784 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -4336,12 +4378,12 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_07872b7e-e87e-41a7-92c9-85535e4fc410 +GUID=DISPLAY_3037cb26-5df9-4109-b356-398aa19e55b1 [MEASUREMENT_OBJECT_15_DISPLAY_1] Window=6 -Index=288 -Color=16744576 +Index=292 +Color=65535 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -4382,11 +4424,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_ba907ae1-156b-4e7f-85bb-cf74c39b4a70 +GUID=DISPLAY_e16f4317-c8ec-4389-975b-d5b513cc20c6 [MEASUREMENT_OBJECT_16] Module=xcp_demo -Name=arch_specific_syscall +Name=accept4 Disabled=0 Mode=1 Rate=1000 @@ -4401,7 +4443,7 @@ DisplayCount=1 [MEASUREMENT_OBJECT_160] Module=xcp_demo -Name=mremap +Name=mq_timedreceive Disabled=0 Mode=1 Rate=1000 @@ -4416,8 +4458,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_160_DISPLAY_1] Window=6 -Index=144 -Color=11162965 +Index=147 +Color=16755200 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -4458,11 +4500,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_fd4a71c6-0fb9-4e84-90a5-2867431c67d5 +GUID=DISPLAY_99f48aec-09e0-4d4b-8c4f-6958c8f4e848 [MEASUREMENT_OBJECT_161] Module=xcp_demo -Name=mseal +Name=mq_timedsend Disabled=0 Mode=1 Rate=1000 @@ -4477,8 +4519,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_161_DISPLAY_1] Window=6 -Index=143 -Color=11206655 +Index=146 +Color=16711850 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -4519,11 +4561,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_ebe7f186-dc78-471c-8d88-66e0e4402480 +GUID=DISPLAY_9aa315de-4023-46c9-9113-fd944df2587b [MEASUREMENT_OBJECT_162] Module=xcp_demo -Name=msgctl +Name=mq_unlink Disabled=0 Mode=1 Rate=1000 @@ -4538,8 +4580,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_162_DISPLAY_1] Window=6 -Index=142 -Color=65450 +Index=145 +Color=21930 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -4580,11 +4622,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_0883d446-57fe-4b77-b7a2-6af64b29fe64 +GUID=DISPLAY_07872b7e-e87e-41a7-92c9-85535e4fc410 [MEASUREMENT_OBJECT_163] Module=xcp_demo -Name=msgget +Name=mremap Disabled=0 Mode=1 Rate=1000 @@ -4599,8 +4641,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_163_DISPLAY_1] Window=6 -Index=141 -Color=8421631 +Index=144 +Color=11162965 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -4641,11 +4683,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_e5658562-1fa2-42cd-af30-66fd9321d1ea +GUID=DISPLAY_fd4a71c6-0fb9-4e84-90a5-2867431c67d5 [MEASUREMENT_OBJECT_164] Module=xcp_demo -Name=msgrcv +Name=mseal Disabled=0 Mode=1 Rate=1000 @@ -4660,8 +4702,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_164_DISPLAY_1] Window=6 -Index=140 -Color=43690 +Index=143 +Color=11206655 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -4702,11 +4744,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_5cfa05c7-c169-4e23-9d2e-3c889c2b6996 +GUID=DISPLAY_ebe7f186-dc78-471c-8d88-66e0e4402480 [MEASUREMENT_OBJECT_165] Module=xcp_demo -Name=msgsnd +Name=msgctl Disabled=0 Mode=1 Rate=1000 @@ -4721,8 +4763,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_165_DISPLAY_1] Window=6 -Index=139 -Color=11184640 +Index=142 +Color=65450 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -4763,11 +4805,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_16967996-0a79-4e9d-a35e-70631f18dd18 +GUID=DISPLAY_0883d446-57fe-4b77-b7a2-6af64b29fe64 [MEASUREMENT_OBJECT_166] Module=xcp_demo -Name=msync +Name=msgget Disabled=0 Mode=1 Rate=1000 @@ -4782,8 +4824,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_166_DISPLAY_1] Window=6 -Index=138 -Color=16755455 +Index=141 +Color=8421631 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -4824,11 +4866,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_ff3f0589-73dd-4f0c-8ccb-c446e615cc23 +GUID=DISPLAY_e5658562-1fa2-42cd-af30-66fd9321d1ea [MEASUREMENT_OBJECT_167] Module=xcp_demo -Name=munlock +Name=msgrcv Disabled=0 Mode=1 Rate=1000 @@ -4843,8 +4885,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_167_DISPLAY_1] Window=6 -Index=137 -Color=11184895 +Index=140 +Color=43690 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -4885,11 +4927,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_db49e7d6-96cd-458e-bd5e-2330a93f24c7 +GUID=DISPLAY_5cfa05c7-c169-4e23-9d2e-3c889c2b6996 [MEASUREMENT_OBJECT_168] Module=xcp_demo -Name=munlockall +Name=msgsnd Disabled=0 Mode=1 Rate=1000 @@ -4904,8 +4946,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_168_DISPLAY_1] Window=6 -Index=136 -Color=16755370 +Index=139 +Color=11184640 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -4946,11 +4988,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_0dbe759e-efe2-443e-a153-d48242a27753 +GUID=DISPLAY_16967996-0a79-4e9d-a35e-70631f18dd18 [MEASUREMENT_OBJECT_169] Module=xcp_demo -Name=munmap +Name=msync Disabled=0 Mode=1 Rate=1000 @@ -4965,8 +5007,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_169_DISPLAY_1] Window=6 -Index=135 -Color=11206570 +Index=138 +Color=16755455 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -5007,12 +5049,12 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_55968484-eebe-429d-8e1c-0d5bf5ca1970 +GUID=DISPLAY_ff3f0589-73dd-4f0c-8ccb-c446e615cc23 [MEASUREMENT_OBJECT_16_DISPLAY_1] Window=6 -Index=287 -Color=16777215 +Index=291 +Color=16776960 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -5053,11 +5095,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_9fd82ca2-6b66-4450-b566-aa8b72fa851d +GUID=DISPLAY_8da67a8e-941b-4eca-8413-ffdbf97ad0a6 [MEASUREMENT_OBJECT_17] Module=xcp_demo -Name=bind +Name=acct Disabled=0 Mode=1 Rate=1000 @@ -5072,7 +5114,7 @@ DisplayCount=1 [MEASUREMENT_OBJECT_170] Module=xcp_demo -Name=nfsservctl +Name=munlock Disabled=0 Mode=1 Rate=1000 @@ -5087,8 +5129,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_170_DISPLAY_1] Window=6 -Index=134 -Color=255 +Index=137 +Color=11184895 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -5129,11 +5171,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_c980d545-0268-431d-8571-4ca586ae4b53 +GUID=DISPLAY_db49e7d6-96cd-458e-bd5e-2330a93f24c7 [MEASUREMENT_OBJECT_171] Module=xcp_demo -Name=open_tree +Name=munlockall Disabled=0 Mode=1 Rate=1000 @@ -5148,8 +5190,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_171_DISPLAY_1] Window=6 -Index=133 -Color=65535 +Index=136 +Color=16755370 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -5190,11 +5232,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_490b192e-ef89-4592-95b5-4b26ced0e35a +GUID=DISPLAY_0dbe759e-efe2-443e-a153-d48242a27753 [MEASUREMENT_OBJECT_172] Module=xcp_demo -Name=openat +Name=munmap Disabled=0 Mode=1 Rate=1000 @@ -5209,8 +5251,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_172_DISPLAY_1] Window=6 -Index=132 -Color=16776960 +Index=135 +Color=11206570 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -5251,11 +5293,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_6ec589b2-1db3-48b2-aee8-ac2a83f3d2f1 +GUID=DISPLAY_55968484-eebe-429d-8e1c-0d5bf5ca1970 [MEASUREMENT_OBJECT_173] Module=xcp_demo -Name=openat2 +Name=nfsservctl Disabled=0 Mode=1 Rate=1000 @@ -5270,8 +5312,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_173_DISPLAY_1] Window=6 -Index=131 -Color=16711935 +Index=134 +Color=255 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -5312,11 +5354,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_f1b800e1-8969-41aa-88cc-d30fcbb5afe4 +GUID=DISPLAY_c980d545-0268-431d-8571-4ca586ae4b53 [MEASUREMENT_OBJECT_174] Module=xcp_demo -Name=perf_event_open +Name=open_tree Disabled=0 Mode=1 Rate=1000 @@ -5331,8 +5373,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_174_DISPLAY_1] Window=6 -Index=130 -Color=33023 +Index=133 +Color=65535 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -5373,11 +5415,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_4a06a5be-2382-431a-ae00-541c3d0ce68d +GUID=DISPLAY_490b192e-ef89-4592-95b5-4b26ced0e35a [MEASUREMENT_OBJECT_175] Module=xcp_demo -Name=personality +Name=openat Disabled=0 Mode=1 Rate=1000 @@ -5392,8 +5434,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_175_DISPLAY_1] Window=6 -Index=129 -Color=16744576 +Index=132 +Color=16776960 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -5434,11 +5476,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_9f410d1d-9ee7-4cc0-b57c-e11d67daf8fb +GUID=DISPLAY_6ec589b2-1db3-48b2-aee8-ac2a83f3d2f1 [MEASUREMENT_OBJECT_176] Module=xcp_demo -Name=pidfd_getfd +Name=openat2 Disabled=0 Mode=1 Rate=1000 @@ -5453,8 +5495,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_176_DISPLAY_1] Window=6 -Index=128 -Color=16777215 +Index=131 +Color=16711935 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -5495,11 +5537,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_0ae9a517-5803-4ab3-b421-0b5e0338e265 +GUID=DISPLAY_f1b800e1-8969-41aa-88cc-d30fcbb5afe4 [MEASUREMENT_OBJECT_177] Module=xcp_demo -Name=pidfd_open +Name=perf_event_open Disabled=0 Mode=1 Rate=1000 @@ -5514,8 +5556,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_177_DISPLAY_1] Window=6 -Index=127 -Color=43520 +Index=130 +Color=33023 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -5556,11 +5598,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_93590d80-f7c0-47c2-9d2a-e09d0359490c +GUID=DISPLAY_4a06a5be-2382-431a-ae00-541c3d0ce68d [MEASUREMENT_OBJECT_178] Module=xcp_demo -Name=pidfd_send_signal +Name=personality Disabled=0 Mode=1 Rate=1000 @@ -5575,8 +5617,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_178_DISPLAY_1] Window=6 -Index=126 -Color=204 +Index=129 +Color=16744576 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -5617,11 +5659,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_a4e6b498-e150-4b4c-8b66-bc33c5e0512b +GUID=DISPLAY_9f410d1d-9ee7-4cc0-b57c-e11d67daf8fb [MEASUREMENT_OBJECT_179] Module=xcp_demo -Name=pipe2 +Name=pidfd_getfd Disabled=0 Mode=1 Rate=1000 @@ -5636,8 +5678,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_179_DISPLAY_1] Window=6 -Index=125 -Color=28784 +Index=128 +Color=16777215 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -5678,12 +5720,12 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_b4a57bf6-a0f8-4401-9265-bfef23823f08 +GUID=DISPLAY_0ae9a517-5803-4ab3-b421-0b5e0338e265 [MEASUREMENT_OBJECT_17_DISPLAY_1] Window=6 -Index=286 -Color=43520 +Index=290 +Color=16711935 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -5724,11 +5766,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_b5af0898-4a68-4d9e-a8ed-8a318f99c010 +GUID=DISPLAY_8642eb27-81fc-4d1e-a88c-e452cfe4f668 [MEASUREMENT_OBJECT_18] Module=xcp_demo -Name=bpf +Name=add_key Disabled=0 Mode=1 Rate=1000 @@ -5743,7 +5785,7 @@ DisplayCount=1 [MEASUREMENT_OBJECT_180] Module=xcp_demo -Name=pivot_root +Name=pidfd_open Disabled=0 Mode=1 Rate=1000 @@ -5758,8 +5800,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_180_DISPLAY_1] Window=6 -Index=124 -Color=16755200 +Index=127 +Color=43520 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -5800,11 +5842,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_617c6adb-4235-4d63-8bb5-fa0f6a6cdd71 +GUID=DISPLAY_93590d80-f7c0-47c2-9d2a-e09d0359490c [MEASUREMENT_OBJECT_181] Module=xcp_demo -Name=pkey_alloc +Name=pidfd_send_signal Disabled=0 Mode=1 Rate=1000 @@ -5819,8 +5861,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_181_DISPLAY_1] Window=6 -Index=123 -Color=16711850 +Index=126 +Color=204 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -5861,11 +5903,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_0888699b-9ed6-436e-8ea5-0ac3b5a1b581 +GUID=DISPLAY_a4e6b498-e150-4b4c-8b66-bc33c5e0512b [MEASUREMENT_OBJECT_182] Module=xcp_demo -Name=pkey_free +Name=pipe2 Disabled=0 Mode=1 Rate=1000 @@ -5880,8 +5922,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_182_DISPLAY_1] Window=6 -Index=122 -Color=21930 +Index=125 +Color=28784 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -5922,11 +5964,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_02b2144b-8af0-49e7-99e1-2ff0046a8751 +GUID=DISPLAY_b4a57bf6-a0f8-4401-9265-bfef23823f08 [MEASUREMENT_OBJECT_183] Module=xcp_demo -Name=pkey_mprotect +Name=pivot_root Disabled=0 Mode=1 Rate=1000 @@ -5941,8 +5983,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_183_DISPLAY_1] Window=6 -Index=121 -Color=11162965 +Index=124 +Color=16755200 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -5983,11 +6025,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_936c8e1e-dbf4-4cfd-a0bb-704c9366a151 +GUID=DISPLAY_617c6adb-4235-4d63-8bb5-fa0f6a6cdd71 [MEASUREMENT_OBJECT_184] Module=xcp_demo -Name=ppoll +Name=pkey_alloc Disabled=0 Mode=1 Rate=1000 @@ -6002,8 +6044,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_184_DISPLAY_1] Window=6 -Index=120 -Color=11206655 +Index=123 +Color=16711850 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -6044,11 +6086,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_331c3dad-5832-4534-a777-db70a8b255b7 +GUID=DISPLAY_0888699b-9ed6-436e-8ea5-0ac3b5a1b581 [MEASUREMENT_OBJECT_185] Module=xcp_demo -Name=prctl +Name=pkey_free Disabled=0 Mode=1 Rate=1000 @@ -6063,8 +6105,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_185_DISPLAY_1] Window=6 -Index=119 -Color=65450 +Index=122 +Color=21930 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -6105,11 +6147,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_59d96867-aed0-4799-a684-e717c53e3900 +GUID=DISPLAY_02b2144b-8af0-49e7-99e1-2ff0046a8751 [MEASUREMENT_OBJECT_186] Module=xcp_demo -Name=pread64 +Name=pkey_mprotect Disabled=0 Mode=1 Rate=1000 @@ -6124,8 +6166,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_186_DISPLAY_1] Window=6 -Index=118 -Color=8421631 +Index=121 +Color=11162965 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -6166,11 +6208,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_75b98e2d-f749-4485-a840-475ced0e8ad2 +GUID=DISPLAY_936c8e1e-dbf4-4cfd-a0bb-704c9366a151 [MEASUREMENT_OBJECT_187] Module=xcp_demo -Name=preadv +Name=ppoll Disabled=0 Mode=1 Rate=1000 @@ -6185,8 +6227,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_187_DISPLAY_1] Window=6 -Index=117 -Color=43690 +Index=120 +Color=11206655 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -6227,11 +6269,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_27566b88-f2fc-459b-bcc4-da1c1ed4b73b +GUID=DISPLAY_331c3dad-5832-4534-a777-db70a8b255b7 [MEASUREMENT_OBJECT_188] Module=xcp_demo -Name=preadv2 +Name=prctl Disabled=0 Mode=1 Rate=1000 @@ -6246,8 +6288,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_188_DISPLAY_1] Window=6 -Index=116 -Color=11184640 +Index=119 +Color=65450 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -6288,11 +6330,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_4ecc9f3d-9af2-4cb9-8fe4-566ad823310b +GUID=DISPLAY_59d96867-aed0-4799-a684-e717c53e3900 [MEASUREMENT_OBJECT_189] Module=xcp_demo -Name=process_madvise +Name=pread64 Disabled=0 Mode=1 Rate=1000 @@ -6307,8 +6349,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_189_DISPLAY_1] Window=6 -Index=115 -Color=16755455 +Index=118 +Color=8421631 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -6349,12 +6391,12 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_bf213d02-5c78-4b6a-8de7-2963779cf445 +GUID=DISPLAY_75b98e2d-f749-4485-a840-475ced0e8ad2 [MEASUREMENT_OBJECT_18_DISPLAY_1] Window=6 -Index=285 -Color=204 +Index=289 +Color=33023 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -6395,11 +6437,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_f25c93fe-adc1-45df-a79b-39425bdb5dd2 +GUID=DISPLAY_12b656dc-61b3-43eb-be3a-5d29d54e4c56 [MEASUREMENT_OBJECT_19] Module=xcp_demo -Name=brk +Name=adjtimex Disabled=0 Mode=1 Rate=1000 @@ -6414,7 +6456,7 @@ DisplayCount=1 [MEASUREMENT_OBJECT_190] Module=xcp_demo -Name=process_mrelease +Name=preadv Disabled=0 Mode=1 Rate=1000 @@ -6429,8 +6471,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_190_DISPLAY_1] Window=6 -Index=114 -Color=11184895 +Index=117 +Color=43690 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -6471,11 +6513,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_d909d722-4779-49c5-ab0b-f452905472fb +GUID=DISPLAY_27566b88-f2fc-459b-bcc4-da1c1ed4b73b [MEASUREMENT_OBJECT_191] Module=xcp_demo -Name=pselect6 +Name=preadv2 Disabled=0 Mode=1 Rate=1000 @@ -6490,8 +6532,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_191_DISPLAY_1] Window=6 -Index=113 -Color=16755370 +Index=116 +Color=11184640 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -6532,11 +6574,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_31f180f5-f7fc-42b6-9ca5-779a1828a277 +GUID=DISPLAY_4ecc9f3d-9af2-4cb9-8fe4-566ad823310b [MEASUREMENT_OBJECT_192] Module=xcp_demo -Name=ptrace +Name=process_madvise Disabled=0 Mode=1 Rate=1000 @@ -6551,8 +6593,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_192_DISPLAY_1] Window=6 -Index=112 -Color=11206570 +Index=115 +Color=16755455 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -6593,11 +6635,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_3bd14d87-92e7-4291-a09f-82aed6a35ac4 +GUID=DISPLAY_bf213d02-5c78-4b6a-8de7-2963779cf445 [MEASUREMENT_OBJECT_193] Module=xcp_demo -Name=pwrite64 +Name=process_mrelease Disabled=0 Mode=1 Rate=1000 @@ -6612,8 +6654,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_193_DISPLAY_1] Window=6 -Index=111 -Color=65280 +Index=114 +Color=11184895 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -6654,11 +6696,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_b540ba56-379e-4ff9-ad73-a942fc3f3ea9 +GUID=DISPLAY_d909d722-4779-49c5-ab0b-f452905472fb [MEASUREMENT_OBJECT_194] Module=xcp_demo -Name=pwritev +Name=pselect6 Disabled=0 Mode=1 Rate=1000 @@ -6673,8 +6715,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_194_DISPLAY_1] Window=6 -Index=110 -Color=255 +Index=113 +Color=16755370 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -6715,11 +6757,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_f2d327aa-0b93-4a9b-ac06-1f94813d74b8 +GUID=DISPLAY_31f180f5-f7fc-42b6-9ca5-779a1828a277 [MEASUREMENT_OBJECT_195] Module=xcp_demo -Name=pwritev2 +Name=ptrace Disabled=0 Mode=1 Rate=1000 @@ -6734,8 +6776,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_195_DISPLAY_1] Window=6 -Index=109 -Color=65535 +Index=112 +Color=11206570 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -6776,11 +6818,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_a0704216-9f38-4488-ad8f-a416a6fbe03d +GUID=DISPLAY_3bd14d87-92e7-4291-a09f-82aed6a35ac4 [MEASUREMENT_OBJECT_196] Module=xcp_demo -Name=quotactl +Name=pwrite64 Disabled=0 Mode=1 Rate=1000 @@ -6795,8 +6837,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_196_DISPLAY_1] Window=6 -Index=108 -Color=16776960 +Index=111 +Color=65280 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -6837,11 +6879,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_58731b7d-c9f0-4894-a831-027b7226d956 +GUID=DISPLAY_b540ba56-379e-4ff9-ad73-a942fc3f3ea9 [MEASUREMENT_OBJECT_197] Module=xcp_demo -Name=quotactl_fd +Name=pwritev Disabled=0 Mode=1 Rate=1000 @@ -6856,8 +6898,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_197_DISPLAY_1] Window=6 -Index=107 -Color=16711935 +Index=110 +Color=255 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -6898,11 +6940,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_bdb166ad-9b28-42cd-87e6-ca55d36d4c4c +GUID=DISPLAY_f2d327aa-0b93-4a9b-ac06-1f94813d74b8 [MEASUREMENT_OBJECT_198] Module=xcp_demo -Name=read +Name=pwritev2 Disabled=0 Mode=1 Rate=1000 @@ -6917,8 +6959,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_198_DISPLAY_1] Window=6 -Index=106 -Color=33023 +Index=109 +Color=65535 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -6959,11 +7001,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_a8675184-43a7-4efd-9627-9947d00b9149 +GUID=DISPLAY_a0704216-9f38-4488-ad8f-a416a6fbe03d [MEASUREMENT_OBJECT_199] Module=xcp_demo -Name=readahead +Name=quotactl Disabled=0 Mode=1 Rate=1000 @@ -6978,8 +7020,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_199_DISPLAY_1] Window=6 -Index=105 -Color=16744576 +Index=108 +Color=16776960 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -7020,12 +7062,12 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_2860d243-38c0-4566-88b4-190b2e2b5bd1 +GUID=DISPLAY_58731b7d-c9f0-4894-a831-027b7226d956 [MEASUREMENT_OBJECT_19_DISPLAY_1] Window=6 -Index=284 -Color=28784 +Index=288 +Color=16744576 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -7066,7 +7108,7 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_e1f4735b-3c39-4c81-863a-fd4ac27bd3e5 +GUID=DISPLAY_ba907ae1-156b-4e7f-85bb-cf74c39b4a70 [MEASUREMENT_OBJECT_1_DISPLAY_1] Window=5 @@ -7094,7 +7136,7 @@ LineWidth=1 Precision=-2 Digits=6 Enabled=1 -StoredFocused=0 +StoredFocused=1 SublMask=1 MeaSublMask=3 LockScaling=0 @@ -7118,7 +7160,7 @@ GUID=DISPLAY_d161ea39-782d-4f67-9803-02826fe05d3e Module=xcp_demo Name=syscall_rate Disabled=0 -Mode=2147483648 +Mode=2147483649 Rate=0 ModeIsDefault=1 Row=0 @@ -7131,7 +7173,7 @@ DisplayCount=2 [MEASUREMENT_OBJECT_20] Module=xcp_demo -Name=cachestat +Name=arch_specific_syscall Disabled=0 Mode=1 Rate=1000 @@ -7146,7 +7188,7 @@ DisplayCount=1 [MEASUREMENT_OBJECT_200] Module=xcp_demo -Name=readlinkat +Name=quotactl_fd Disabled=0 Mode=1 Rate=1000 @@ -7161,8 +7203,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_200_DISPLAY_1] Window=6 -Index=104 -Color=16777215 +Index=107 +Color=16711935 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -7203,11 +7245,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_d5efd0b6-52a9-42d2-a213-0db2c4bd8b7c +GUID=DISPLAY_bdb166ad-9b28-42cd-87e6-ca55d36d4c4c [MEASUREMENT_OBJECT_201] Module=xcp_demo -Name=readv +Name=read Disabled=0 Mode=1 Rate=1000 @@ -7222,8 +7264,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_201_DISPLAY_1] Window=6 -Index=103 -Color=43520 +Index=106 +Color=33023 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -7264,11 +7306,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_ab3ba013-0879-422d-b623-d31e52fa73da +GUID=DISPLAY_a8675184-43a7-4efd-9627-9947d00b9149 [MEASUREMENT_OBJECT_202] Module=xcp_demo -Name=reboot +Name=readahead Disabled=0 Mode=1 Rate=1000 @@ -7283,8 +7325,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_202_DISPLAY_1] Window=6 -Index=102 -Color=204 +Index=105 +Color=16744576 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -7325,11 +7367,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_5c9edf14-b997-4f2b-ba44-603a1fb1e6fd +GUID=DISPLAY_2860d243-38c0-4566-88b4-190b2e2b5bd1 [MEASUREMENT_OBJECT_203] Module=xcp_demo -Name=recvmmsg +Name=readlinkat Disabled=0 Mode=1 Rate=1000 @@ -7344,8 +7386,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_203_DISPLAY_1] Window=6 -Index=101 -Color=16755200 +Index=104 +Color=16777215 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -7386,11 +7428,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_476b1b1d-c13b-4a0c-bad4-8de1fd86d94d +GUID=DISPLAY_d5efd0b6-52a9-42d2-a213-0db2c4bd8b7c [MEASUREMENT_OBJECT_204] Module=xcp_demo -Name=recvmsg +Name=readv Disabled=0 Mode=1 Rate=1000 @@ -7405,8 +7447,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_204_DISPLAY_1] Window=6 -Index=299 -Color=16711850 +Index=103 +Color=43520 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -7447,11 +7489,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_0af3e1e9-b660-44e0-ac92-d5a443852052 +GUID=DISPLAY_ab3ba013-0879-422d-b623-d31e52fa73da [MEASUREMENT_OBJECT_205] Module=xcp_demo -Name=remap_file_pages +Name=reboot Disabled=0 Mode=1 Rate=1000 @@ -7466,8 +7508,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_205_DISPLAY_1] Window=6 -Index=100 -Color=21930 +Index=102 +Color=204 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -7508,11 +7550,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_b0708d23-0325-469e-a747-ccd5f6cd176f +GUID=DISPLAY_5c9edf14-b997-4f2b-ba44-603a1fb1e6fd [MEASUREMENT_OBJECT_206] Module=xcp_demo -Name=removexattr +Name=recvmmsg Disabled=0 Mode=1 Rate=1000 @@ -7527,8 +7569,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_206_DISPLAY_1] Window=6 -Index=99 -Color=11162965 +Index=101 +Color=16755200 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -7569,11 +7611,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_81696269-0460-453d-b504-d17b8d719048 +GUID=DISPLAY_476b1b1d-c13b-4a0c-bad4-8de1fd86d94d [MEASUREMENT_OBJECT_207] Module=xcp_demo -Name=renameat +Name=recvmsg Disabled=0 Mode=1 Rate=1000 @@ -7588,8 +7630,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_207_DISPLAY_1] Window=6 -Index=98 -Color=11206655 +Index=299 +Color=16711850 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -7630,11 +7672,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_824a0d5f-e2cd-4ada-8e81-c671033e4268 +GUID=DISPLAY_0af3e1e9-b660-44e0-ac92-d5a443852052 [MEASUREMENT_OBJECT_208] Module=xcp_demo -Name=renameat2 +Name=remap_file_pages Disabled=0 Mode=1 Rate=1000 @@ -7649,8 +7691,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_208_DISPLAY_1] Window=6 -Index=97 -Color=65450 +Index=100 +Color=21930 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -7691,11 +7733,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_bae91492-4d2c-4c98-9d64-f8f37eb25b0e +GUID=DISPLAY_b0708d23-0325-469e-a747-ccd5f6cd176f [MEASUREMENT_OBJECT_209] Module=xcp_demo -Name=request_key +Name=removexattr Disabled=0 Mode=1 Rate=1000 @@ -7710,8 +7752,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_209_DISPLAY_1] Window=6 -Index=96 -Color=8421631 +Index=99 +Color=11162965 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -7752,12 +7794,12 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_c70dc4db-a988-4d63-a2e6-ed951c511341 +GUID=DISPLAY_81696269-0460-453d-b504-d17b8d719048 [MEASUREMENT_OBJECT_20_DISPLAY_1] Window=6 -Index=283 -Color=16755200 +Index=287 +Color=16777215 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -7798,11 +7840,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_c6a94286-a97a-4f7e-84f7-9fcc4af5119a +GUID=DISPLAY_9fd82ca2-6b66-4450-b566-aa8b72fa851d [MEASUREMENT_OBJECT_21] Module=xcp_demo -Name=capget +Name=bind Disabled=0 Mode=1 Rate=1000 @@ -7817,7 +7859,7 @@ DisplayCount=1 [MEASUREMENT_OBJECT_210] Module=xcp_demo -Name=restart_syscall +Name=renameat Disabled=0 Mode=1 Rate=1000 @@ -7832,8 +7874,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_210_DISPLAY_1] Window=6 -Index=95 -Color=43690 +Index=98 +Color=11206655 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -7874,11 +7916,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_acca520b-91d3-4ac6-965e-a3a8bb3d0e78 +GUID=DISPLAY_824a0d5f-e2cd-4ada-8e81-c671033e4268 [MEASUREMENT_OBJECT_211] Module=xcp_demo -Name=rseq +Name=renameat2 Disabled=0 Mode=1 Rate=1000 @@ -7893,8 +7935,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_211_DISPLAY_1] Window=6 -Index=94 -Color=11184640 +Index=97 +Color=65450 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -7935,11 +7977,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_2b105cbf-5107-4fe8-b65c-8471cc077660 +GUID=DISPLAY_bae91492-4d2c-4c98-9d64-f8f37eb25b0e [MEASUREMENT_OBJECT_212] Module=xcp_demo -Name=rt_sigaction +Name=request_key Disabled=0 Mode=1 Rate=1000 @@ -7954,8 +7996,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_212_DISPLAY_1] Window=6 -Index=93 -Color=16755455 +Index=96 +Color=8421631 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -7996,11 +8038,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_2c529ba0-8acd-41cd-bf99-987a9b974193 +GUID=DISPLAY_c70dc4db-a988-4d63-a2e6-ed951c511341 [MEASUREMENT_OBJECT_213] Module=xcp_demo -Name=rt_sigpending +Name=restart_syscall Disabled=0 Mode=1 Rate=1000 @@ -8015,8 +8057,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_213_DISPLAY_1] Window=6 -Index=92 -Color=11184895 +Index=95 +Color=43690 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -8057,11 +8099,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_21719de6-f42b-4cd3-9011-d7622ef556aa +GUID=DISPLAY_acca520b-91d3-4ac6-965e-a3a8bb3d0e78 [MEASUREMENT_OBJECT_214] Module=xcp_demo -Name=rt_sigprocmask +Name=rseq Disabled=0 Mode=1 Rate=1000 @@ -8076,8 +8118,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_214_DISPLAY_1] Window=6 -Index=91 -Color=16755370 +Index=94 +Color=11184640 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -8118,11 +8160,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_1f4d9873-17be-4a72-b08d-bcd12a96fd25 +GUID=DISPLAY_2b105cbf-5107-4fe8-b65c-8471cc077660 [MEASUREMENT_OBJECT_215] Module=xcp_demo -Name=rt_sigqueueinfo +Name=rt_sigaction Disabled=0 Mode=1 Rate=1000 @@ -8137,8 +8179,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_215_DISPLAY_1] Window=6 -Index=90 -Color=11206570 +Index=93 +Color=16755455 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -8179,11 +8221,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_1364bbe3-64c9-42ff-8740-b294bac03c0a +GUID=DISPLAY_2c529ba0-8acd-41cd-bf99-987a9b974193 [MEASUREMENT_OBJECT_216] Module=xcp_demo -Name=rt_sigreturn +Name=rt_sigpending Disabled=0 Mode=1 Rate=1000 @@ -8198,8 +8240,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_216_DISPLAY_1] Window=6 -Index=89 -Color=65280 +Index=92 +Color=11184895 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -8240,11 +8282,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_cb76e3e2-c4d4-4b45-813e-888856f9ae54 +GUID=DISPLAY_21719de6-f42b-4cd3-9011-d7622ef556aa [MEASUREMENT_OBJECT_217] Module=xcp_demo -Name=rt_sigsuspend +Name=rt_sigprocmask Disabled=0 Mode=1 Rate=1000 @@ -8259,8 +8301,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_217_DISPLAY_1] Window=6 -Index=88 -Color=255 +Index=91 +Color=16755370 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -8301,11 +8343,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_c2af4b5f-7517-41bb-b886-e493057d2d85 +GUID=DISPLAY_1f4d9873-17be-4a72-b08d-bcd12a96fd25 [MEASUREMENT_OBJECT_218] Module=xcp_demo -Name=rt_sigtimedwait +Name=rt_sigqueueinfo Disabled=0 Mode=1 Rate=1000 @@ -8320,8 +8362,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_218_DISPLAY_1] Window=6 -Index=87 -Color=65535 +Index=90 +Color=11206570 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -8362,11 +8404,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_b515642f-ef7a-4ffc-ad94-9ff6a9a1e46e +GUID=DISPLAY_1364bbe3-64c9-42ff-8740-b294bac03c0a [MEASUREMENT_OBJECT_219] Module=xcp_demo -Name=rt_tgsigqueueinfo +Name=rt_sigreturn Disabled=0 Mode=1 Rate=1000 @@ -8381,8 +8423,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_219_DISPLAY_1] Window=6 -Index=86 -Color=16776960 +Index=89 +Color=65280 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -8423,12 +8465,12 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_654d9494-b52d-48c7-8ab3-17acaca7f6d0 +GUID=DISPLAY_cb76e3e2-c4d4-4b45-813e-888856f9ae54 [MEASUREMENT_OBJECT_21_DISPLAY_1] Window=6 -Index=282 -Color=16711850 +Index=286 +Color=43520 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -8469,11 +8511,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_98b20d81-9d11-4eb6-adb1-48e83254fe87 +GUID=DISPLAY_b5af0898-4a68-4d9e-a8ed-8a318f99c010 [MEASUREMENT_OBJECT_22] Module=xcp_demo -Name=capset +Name=bpf Disabled=0 Mode=1 Rate=1000 @@ -8488,7 +8530,7 @@ DisplayCount=1 [MEASUREMENT_OBJECT_220] Module=xcp_demo -Name=sched_get_priority_max +Name=rt_sigsuspend Disabled=0 Mode=1 Rate=1000 @@ -8503,8 +8545,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_220_DISPLAY_1] Window=6 -Index=85 -Color=16711935 +Index=88 +Color=255 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -8545,11 +8587,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_475dd813-e424-4760-9565-168ea6a4ef6c +GUID=DISPLAY_c2af4b5f-7517-41bb-b886-e493057d2d85 [MEASUREMENT_OBJECT_221] Module=xcp_demo -Name=sched_get_priority_min +Name=rt_sigtimedwait Disabled=0 Mode=1 Rate=1000 @@ -8564,8 +8606,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_221_DISPLAY_1] Window=6 -Index=84 -Color=33023 +Index=87 +Color=65535 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -8606,11 +8648,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_27d90984-92b7-44e0-a4f0-02e6621ab911 +GUID=DISPLAY_b515642f-ef7a-4ffc-ad94-9ff6a9a1e46e [MEASUREMENT_OBJECT_222] Module=xcp_demo -Name=sched_getaffinity +Name=rt_tgsigqueueinfo Disabled=0 Mode=1 Rate=1000 @@ -8625,8 +8667,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_222_DISPLAY_1] Window=6 -Index=83 -Color=16744576 +Index=86 +Color=16776960 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -8667,11 +8709,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_838e253a-84b5-40f8-8ed4-eddb1f162c23 +GUID=DISPLAY_654d9494-b52d-48c7-8ab3-17acaca7f6d0 [MEASUREMENT_OBJECT_223] Module=xcp_demo -Name=sched_getparam +Name=sched_get_priority_max Disabled=0 Mode=1 Rate=1000 @@ -8686,8 +8728,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_223_DISPLAY_1] Window=6 -Index=82 -Color=16777215 +Index=85 +Color=16711935 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -8728,11 +8770,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_24560282-6722-412b-b0b1-740a44792e77 +GUID=DISPLAY_475dd813-e424-4760-9565-168ea6a4ef6c [MEASUREMENT_OBJECT_224] Module=xcp_demo -Name=sched_getscheduler +Name=sched_get_priority_min Disabled=0 Mode=1 Rate=1000 @@ -8747,8 +8789,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_224_DISPLAY_1] Window=6 -Index=81 -Color=43520 +Index=84 +Color=33023 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -8789,11 +8831,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_7326fc18-5ff0-4878-99bd-883a18ffb8da +GUID=DISPLAY_27d90984-92b7-44e0-a4f0-02e6621ab911 [MEASUREMENT_OBJECT_225] Module=xcp_demo -Name=sched_rr_get_interval +Name=sched_getaffinity Disabled=0 Mode=1 Rate=1000 @@ -8808,8 +8850,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_225_DISPLAY_1] Window=6 -Index=80 -Color=204 +Index=83 +Color=16744576 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -8850,11 +8892,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_ff418645-cbe9-4ab5-bc8b-d8c6ad1b8c53 +GUID=DISPLAY_838e253a-84b5-40f8-8ed4-eddb1f162c23 [MEASUREMENT_OBJECT_226] Module=xcp_demo -Name=sched_setaffinity +Name=sched_getparam Disabled=0 Mode=1 Rate=1000 @@ -8869,8 +8911,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_226_DISPLAY_1] Window=6 -Index=79 -Color=28784 +Index=82 +Color=16777215 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -8911,11 +8953,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_ee1dae61-364b-4dfb-bb2a-b0f48cf72c2f +GUID=DISPLAY_24560282-6722-412b-b0b1-740a44792e77 [MEASUREMENT_OBJECT_227] Module=xcp_demo -Name=sched_setparam +Name=sched_getscheduler Disabled=0 Mode=1 Rate=1000 @@ -8930,8 +8972,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_227_DISPLAY_1] Window=6 -Index=78 -Color=16755200 +Index=81 +Color=43520 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -8972,11 +9014,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_677c156c-697b-4cd8-96ed-2ffd45f3226a +GUID=DISPLAY_7326fc18-5ff0-4878-99bd-883a18ffb8da [MEASUREMENT_OBJECT_228] Module=xcp_demo -Name=sched_setscheduler +Name=sched_rr_get_interval Disabled=0 Mode=1 Rate=1000 @@ -8991,8 +9033,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_228_DISPLAY_1] Window=6 -Index=77 -Color=16711850 +Index=80 +Color=204 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -9033,11 +9075,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_94f95283-5ba1-47df-b996-45d16b614358 +GUID=DISPLAY_ff418645-cbe9-4ab5-bc8b-d8c6ad1b8c53 [MEASUREMENT_OBJECT_229] Module=xcp_demo -Name=sched_yield +Name=sched_setaffinity Disabled=0 Mode=1 Rate=1000 @@ -9052,8 +9094,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_229_DISPLAY_1] Window=6 -Index=76 -Color=21930 +Index=79 +Color=28784 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -9094,12 +9136,12 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_e6e2b23d-4a43-4472-82c9-5c71eade7ad9 +GUID=DISPLAY_ee1dae61-364b-4dfb-bb2a-b0f48cf72c2f [MEASUREMENT_OBJECT_22_DISPLAY_1] Window=6 -Index=281 -Color=21930 +Index=285 +Color=204 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -9140,11 +9182,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_0ba97448-4f01-4d48-b36d-4f16f20bdd36 +GUID=DISPLAY_f25c93fe-adc1-45df-a79b-39425bdb5dd2 [MEASUREMENT_OBJECT_23] Module=xcp_demo -Name=chdir +Name=brk Disabled=0 Mode=1 Rate=1000 @@ -9159,7 +9201,7 @@ DisplayCount=1 [MEASUREMENT_OBJECT_230] Module=xcp_demo -Name=seccomp +Name=sched_setparam Disabled=0 Mode=1 Rate=1000 @@ -9174,8 +9216,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_230_DISPLAY_1] Window=6 -Index=75 -Color=11162965 +Index=78 +Color=16755200 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -9216,11 +9258,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_fc3bd431-144a-475a-8480-94df04dd31fd +GUID=DISPLAY_677c156c-697b-4cd8-96ed-2ffd45f3226a [MEASUREMENT_OBJECT_231] Module=xcp_demo -Name=semctl +Name=sched_setscheduler Disabled=0 Mode=1 Rate=1000 @@ -9235,8 +9277,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_231_DISPLAY_1] Window=6 -Index=74 -Color=11206655 +Index=77 +Color=16711850 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -9277,11 +9319,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_39278efb-a579-476a-9fd8-a293e544f50a +GUID=DISPLAY_94f95283-5ba1-47df-b996-45d16b614358 [MEASUREMENT_OBJECT_232] Module=xcp_demo -Name=semget +Name=sched_yield Disabled=0 Mode=1 Rate=1000 @@ -9296,8 +9338,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_232_DISPLAY_1] Window=6 -Index=73 -Color=65450 +Index=76 +Color=21930 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -9338,11 +9380,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_6e0f531c-1462-4683-8b48-0321274a50ab +GUID=DISPLAY_e6e2b23d-4a43-4472-82c9-5c71eade7ad9 [MEASUREMENT_OBJECT_233] Module=xcp_demo -Name=semop +Name=seccomp Disabled=0 Mode=1 Rate=1000 @@ -9357,8 +9399,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_233_DISPLAY_1] Window=6 -Index=72 -Color=8421631 +Index=75 +Color=11162965 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -9399,11 +9441,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_d51322ae-ebb9-4730-9b24-5bb8e4dc471e +GUID=DISPLAY_fc3bd431-144a-475a-8480-94df04dd31fd [MEASUREMENT_OBJECT_234] Module=xcp_demo -Name=semtimedop +Name=semctl Disabled=0 Mode=1 Rate=1000 @@ -9418,8 +9460,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_234_DISPLAY_1] Window=6 -Index=71 -Color=43690 +Index=74 +Color=11206655 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -9460,11 +9502,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_7d58dbcf-117b-4389-8bf0-03fc58e2e974 +GUID=DISPLAY_39278efb-a579-476a-9fd8-a293e544f50a [MEASUREMENT_OBJECT_235] Module=xcp_demo -Name=sendfile +Name=semget Disabled=0 Mode=1 Rate=1000 @@ -9479,8 +9521,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_235_DISPLAY_1] Window=6 -Index=70 -Color=11184640 +Index=73 +Color=65450 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -9521,11 +9563,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_7babb798-012b-4bc0-ba1e-7de2b61b5942 +GUID=DISPLAY_6e0f531c-1462-4683-8b48-0321274a50ab [MEASUREMENT_OBJECT_236] Module=xcp_demo -Name=sendmsg +Name=semop Disabled=0 Mode=1 Rate=1000 @@ -9540,8 +9582,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_236_DISPLAY_1] Window=6 -Index=69 -Color=16755455 +Index=72 +Color=8421631 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -9582,11 +9624,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_facfe3b3-1209-4ac0-9421-ccd18eb2168f +GUID=DISPLAY_d51322ae-ebb9-4730-9b24-5bb8e4dc471e [MEASUREMENT_OBJECT_237] Module=xcp_demo -Name=set_mempolicy +Name=semtimedop Disabled=0 Mode=1 Rate=1000 @@ -9601,8 +9643,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_237_DISPLAY_1] Window=6 -Index=68 -Color=16755370 +Index=71 +Color=43690 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -9643,11 +9685,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_a14be5ff-c010-4060-b623-a1a140a6e39d +GUID=DISPLAY_7d58dbcf-117b-4389-8bf0-03fc58e2e974 [MEASUREMENT_OBJECT_238] Module=xcp_demo -Name=set_mempolicy_home_node +Name=sendfile Disabled=0 Mode=1 Rate=1000 @@ -9662,8 +9704,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_238_DISPLAY_1] Window=6 -Index=67 -Color=11206570 +Index=70 +Color=11184640 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -9704,11 +9746,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_68c4717b-3489-4c09-9c7e-e57241708909 +GUID=DISPLAY_7babb798-012b-4bc0-ba1e-7de2b61b5942 [MEASUREMENT_OBJECT_239] Module=xcp_demo -Name=set_robust_list +Name=sendmsg Disabled=0 Mode=1 Rate=1000 @@ -9723,8 +9765,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_239_DISPLAY_1] Window=6 -Index=66 -Color=65280 +Index=69 +Color=16755455 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -9765,12 +9807,12 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_f3cbbfd9-5f79-4ca8-97d2-92c3a541b650 +GUID=DISPLAY_facfe3b3-1209-4ac0-9421-ccd18eb2168f [MEASUREMENT_OBJECT_23_DISPLAY_1] Window=6 -Index=280 -Color=11162965 +Index=284 +Color=28784 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -9811,11 +9853,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_414492c6-7861-40be-a924-97988aac98c9 +GUID=DISPLAY_e1f4735b-3c39-4c81-863a-fd4ac27bd3e5 [MEASUREMENT_OBJECT_24] Module=xcp_demo -Name=chroot +Name=cachestat Disabled=0 Mode=1 Rate=1000 @@ -9830,7 +9872,7 @@ DisplayCount=1 [MEASUREMENT_OBJECT_240] Module=xcp_demo -Name=set_tid_address +Name=set_mempolicy Disabled=0 Mode=1 Rate=1000 @@ -9845,8 +9887,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_240_DISPLAY_1] Window=6 -Index=65 -Color=255 +Index=68 +Color=16755370 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -9887,11 +9929,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_816d54e6-2e21-4c54-ac08-08419ba35e00 +GUID=DISPLAY_a14be5ff-c010-4060-b623-a1a140a6e39d [MEASUREMENT_OBJECT_241] Module=xcp_demo -Name=setdomainname +Name=set_mempolicy_home_node Disabled=0 Mode=1 Rate=1000 @@ -9906,8 +9948,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_241_DISPLAY_1] Window=6 -Index=64 -Color=65535 +Index=67 +Color=11206570 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -9948,11 +9990,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_9cfaeff3-90ea-48f8-82d1-650803c3121b +GUID=DISPLAY_68c4717b-3489-4c09-9c7e-e57241708909 [MEASUREMENT_OBJECT_242] Module=xcp_demo -Name=setfsgid +Name=set_robust_list Disabled=0 Mode=1 Rate=1000 @@ -9967,8 +10009,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_242_DISPLAY_1] Window=6 -Index=63 -Color=16776960 +Index=66 +Color=65280 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -10009,11 +10051,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_5a620fbd-31a3-459c-a9ca-7e3a37ef45e1 +GUID=DISPLAY_f3cbbfd9-5f79-4ca8-97d2-92c3a541b650 [MEASUREMENT_OBJECT_243] Module=xcp_demo -Name=setfsuid +Name=set_tid_address Disabled=0 Mode=1 Rate=1000 @@ -10028,8 +10070,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_243_DISPLAY_1] Window=6 -Index=62 -Color=16711935 +Index=65 +Color=255 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -10070,11 +10112,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_8b1d4b28-7a3f-4a4a-b986-39cf8b1178f0 +GUID=DISPLAY_816d54e6-2e21-4c54-ac08-08419ba35e00 [MEASUREMENT_OBJECT_244] Module=xcp_demo -Name=setgid +Name=setdomainname Disabled=0 Mode=1 Rate=1000 @@ -10089,8 +10131,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_244_DISPLAY_1] Window=6 -Index=61 -Color=33023 +Index=64 +Color=65535 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -10131,11 +10173,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_86b4ffd2-b268-4a61-b5e9-bffc00816134 +GUID=DISPLAY_9cfaeff3-90ea-48f8-82d1-650803c3121b [MEASUREMENT_OBJECT_245] Module=xcp_demo -Name=setgroups +Name=setfsgid Disabled=0 Mode=1 Rate=1000 @@ -10150,8 +10192,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_245_DISPLAY_1] Window=6 -Index=60 -Color=16744576 +Index=63 +Color=16776960 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -10192,11 +10234,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_40f43eef-bf8b-429e-b7a8-acdf79fdbc5f +GUID=DISPLAY_5a620fbd-31a3-459c-a9ca-7e3a37ef45e1 [MEASUREMENT_OBJECT_246] Module=xcp_demo -Name=sethostname +Name=setfsuid Disabled=0 Mode=1 Rate=1000 @@ -10211,8 +10253,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_246_DISPLAY_1] Window=6 -Index=59 -Color=16777215 +Index=62 +Color=16711935 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -10253,11 +10295,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_76fa549f-870f-4c8d-8022-56307a40aa9a +GUID=DISPLAY_8b1d4b28-7a3f-4a4a-b986-39cf8b1178f0 [MEASUREMENT_OBJECT_247] Module=xcp_demo -Name=setitimer +Name=setgid Disabled=0 Mode=1 Rate=1000 @@ -10272,8 +10314,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_247_DISPLAY_1] Window=6 -Index=58 -Color=43520 +Index=61 +Color=33023 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -10314,11 +10356,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_46e18308-e211-462a-ae43-a777c18d4fe2 +GUID=DISPLAY_86b4ffd2-b268-4a61-b5e9-bffc00816134 [MEASUREMENT_OBJECT_248] Module=xcp_demo -Name=setpgid +Name=setgroups Disabled=0 Mode=1 Rate=1000 @@ -10333,8 +10375,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_248_DISPLAY_1] Window=6 -Index=57 -Color=204 +Index=60 +Color=16744576 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -10375,11 +10417,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_190c0398-6cf7-4461-a9fb-7c60e2aed993 +GUID=DISPLAY_40f43eef-bf8b-429e-b7a8-acdf79fdbc5f [MEASUREMENT_OBJECT_249] Module=xcp_demo -Name=setpriority +Name=sethostname Disabled=0 Mode=1 Rate=1000 @@ -10394,8 +10436,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_249_DISPLAY_1] Window=6 -Index=56 -Color=28784 +Index=59 +Color=16777215 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -10436,12 +10478,12 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_6f10d0fd-5b58-4fbd-ac85-36ef01386355 +GUID=DISPLAY_76fa549f-870f-4c8d-8022-56307a40aa9a [MEASUREMENT_OBJECT_24_DISPLAY_1] Window=6 -Index=279 -Color=11206655 +Index=283 +Color=16755200 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -10482,11 +10524,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_a32c2942-68db-4675-87a6-ef534dbe2cf8 +GUID=DISPLAY_c6a94286-a97a-4f7e-84f7-9fcc4af5119a [MEASUREMENT_OBJECT_25] Module=xcp_demo -Name=clock_getres +Name=capget Disabled=0 Mode=1 Rate=1000 @@ -10501,7 +10543,7 @@ DisplayCount=1 [MEASUREMENT_OBJECT_250] Module=xcp_demo -Name=setregid +Name=setitimer Disabled=0 Mode=1 Rate=1000 @@ -10516,8 +10558,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_250_DISPLAY_1] Window=6 -Index=55 -Color=16755200 +Index=58 +Color=43520 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -10558,11 +10600,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_e2e32fb0-f35c-4439-a1aa-1dbb9725508b +GUID=DISPLAY_46e18308-e211-462a-ae43-a777c18d4fe2 [MEASUREMENT_OBJECT_251] Module=xcp_demo -Name=setresgid +Name=setpgid Disabled=0 Mode=1 Rate=1000 @@ -10577,8 +10619,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_251_DISPLAY_1] Window=6 -Index=54 -Color=16711850 +Index=57 +Color=204 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -10619,11 +10661,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_5102a2b4-91d0-47b7-b8c0-f14abcc11278 +GUID=DISPLAY_190c0398-6cf7-4461-a9fb-7c60e2aed993 [MEASUREMENT_OBJECT_252] Module=xcp_demo -Name=setresuid +Name=setpriority Disabled=0 Mode=1 Rate=1000 @@ -10638,8 +10680,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_252_DISPLAY_1] Window=6 -Index=53 -Color=21930 +Index=56 +Color=28784 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -10680,11 +10722,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_85841b9b-8992-42ca-b0c4-e34f9ce8e801 +GUID=DISPLAY_6f10d0fd-5b58-4fbd-ac85-36ef01386355 [MEASUREMENT_OBJECT_253] Module=xcp_demo -Name=setreuid +Name=setregid Disabled=0 Mode=1 Rate=1000 @@ -10699,8 +10741,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_253_DISPLAY_1] Window=6 -Index=52 -Color=11162965 +Index=55 +Color=16755200 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -10741,11 +10783,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_014213be-b071-43fa-a287-bdb9a3e6ea14 +GUID=DISPLAY_e2e32fb0-f35c-4439-a1aa-1dbb9725508b [MEASUREMENT_OBJECT_254] Module=xcp_demo -Name=setrlimit +Name=setresgid Disabled=0 Mode=1 Rate=1000 @@ -10760,8 +10802,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_254_DISPLAY_1] Window=6 -Index=51 -Color=11206655 +Index=54 +Color=16711850 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -10802,11 +10844,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_517f434b-64f7-4dae-bbc0-ac17cca46033 +GUID=DISPLAY_5102a2b4-91d0-47b7-b8c0-f14abcc11278 [MEASUREMENT_OBJECT_255] Module=xcp_demo -Name=setsid +Name=setresuid Disabled=0 Mode=1 Rate=1000 @@ -10821,8 +10863,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_255_DISPLAY_1] Window=6 -Index=50 -Color=65450 +Index=53 +Color=21930 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -10863,11 +10905,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_feea931e-57a0-4a3b-a366-bea874423348 +GUID=DISPLAY_85841b9b-8992-42ca-b0c4-e34f9ce8e801 [MEASUREMENT_OBJECT_256] Module=xcp_demo -Name=setsockopt +Name=setreuid Disabled=0 Mode=1 Rate=1000 @@ -10882,8 +10924,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_256_DISPLAY_1] Window=6 -Index=49 -Color=8421631 +Index=52 +Color=11162965 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -10924,11 +10966,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_7d12a8f2-e410-4107-a1b4-62ee7c2317f0 +GUID=DISPLAY_014213be-b071-43fa-a287-bdb9a3e6ea14 [MEASUREMENT_OBJECT_257] Module=xcp_demo -Name=settimeofday +Name=setrlimit Disabled=0 Mode=1 Rate=1000 @@ -10943,8 +10985,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_257_DISPLAY_1] Window=6 -Index=48 -Color=43690 +Index=51 +Color=11206655 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -10985,11 +11027,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_56b68f4f-76ed-4731-b165-38c16436e334 +GUID=DISPLAY_517f434b-64f7-4dae-bbc0-ac17cca46033 [MEASUREMENT_OBJECT_258] Module=xcp_demo -Name=setuid +Name=setsid Disabled=0 Mode=1 Rate=1000 @@ -11004,8 +11046,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_258_DISPLAY_1] Window=6 -Index=47 -Color=11184640 +Index=50 +Color=65450 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -11046,11 +11088,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_fc3b3539-a854-4fa7-ae3c-90861955e5a3 +GUID=DISPLAY_feea931e-57a0-4a3b-a366-bea874423348 [MEASUREMENT_OBJECT_259] Module=xcp_demo -Name=setxattr +Name=setsockopt Disabled=0 Mode=1 Rate=1000 @@ -11065,8 +11107,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_259_DISPLAY_1] Window=6 -Index=46 -Color=16755455 +Index=49 +Color=8421631 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -11107,12 +11149,12 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_de6e54b0-a08b-4d3c-8463-75b176c1722e +GUID=DISPLAY_7d12a8f2-e410-4107-a1b4-62ee7c2317f0 [MEASUREMENT_OBJECT_25_DISPLAY_1] Window=6 -Index=278 -Color=65450 +Index=282 +Color=16711850 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -11153,11 +11195,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_ae92b91a-0135-4f45-8d8c-33e93a0c9728 +GUID=DISPLAY_98b20d81-9d11-4eb6-adb1-48e83254fe87 [MEASUREMENT_OBJECT_26] Module=xcp_demo -Name=clock_gettime +Name=capset Disabled=0 Mode=1 Rate=1000 @@ -11172,7 +11214,7 @@ DisplayCount=1 [MEASUREMENT_OBJECT_260] Module=xcp_demo -Name=shmat +Name=settimeofday Disabled=0 Mode=1 Rate=1000 @@ -11187,8 +11229,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_260_DISPLAY_1] Window=6 -Index=45 -Color=11184895 +Index=48 +Color=43690 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -11229,11 +11271,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_ae00e420-62af-41cb-b009-93f3f1349a8d +GUID=DISPLAY_56b68f4f-76ed-4731-b165-38c16436e334 [MEASUREMENT_OBJECT_261] Module=xcp_demo -Name=shmctl +Name=setuid Disabled=0 Mode=1 Rate=1000 @@ -11248,8 +11290,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_261_DISPLAY_1] Window=6 -Index=44 -Color=16755370 +Index=47 +Color=11184640 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -11290,11 +11332,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_c983a9e6-b29f-4562-904c-1ff085417388 +GUID=DISPLAY_fc3b3539-a854-4fa7-ae3c-90861955e5a3 [MEASUREMENT_OBJECT_262] Module=xcp_demo -Name=shmdt +Name=setxattr Disabled=0 Mode=1 Rate=1000 @@ -11309,8 +11351,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_262_DISPLAY_1] Window=6 -Index=43 -Color=11206570 +Index=46 +Color=16755455 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -11351,11 +11393,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_3e7e97e0-4530-48a8-b28a-2ea51aa5753e +GUID=DISPLAY_de6e54b0-a08b-4d3c-8463-75b176c1722e [MEASUREMENT_OBJECT_263] Module=xcp_demo -Name=shmget +Name=shmat Disabled=0 Mode=1 Rate=1000 @@ -11370,8 +11412,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_263_DISPLAY_1] Window=6 -Index=42 -Color=65280 +Index=45 +Color=11184895 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -11412,11 +11454,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_44cb069d-778e-4917-b04e-cfdfea94c3e6 +GUID=DISPLAY_ae00e420-62af-41cb-b009-93f3f1349a8d [MEASUREMENT_OBJECT_264] Module=xcp_demo -Name=shutdown +Name=shmctl Disabled=0 Mode=1 Rate=1000 @@ -11431,8 +11473,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_264_DISPLAY_1] Window=6 -Index=41 -Color=255 +Index=44 +Color=16755370 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -11473,11 +11515,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_064a1c65-e8e2-4bc2-9eb3-121d49fa1d2a +GUID=DISPLAY_c983a9e6-b29f-4562-904c-1ff085417388 [MEASUREMENT_OBJECT_265] Module=xcp_demo -Name=sigaltstack +Name=shmdt Disabled=0 Mode=1 Rate=1000 @@ -11492,8 +11534,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_265_DISPLAY_1] Window=6 -Index=40 -Color=65535 +Index=43 +Color=11206570 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -11534,11 +11576,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_1058d732-0fc3-486a-a847-f61d58bb905d +GUID=DISPLAY_3e7e97e0-4530-48a8-b28a-2ea51aa5753e [MEASUREMENT_OBJECT_266] Module=xcp_demo -Name=signalfd4 +Name=shmget Disabled=0 Mode=1 Rate=1000 @@ -11553,8 +11595,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_266_DISPLAY_1] Window=6 -Index=39 -Color=16776960 +Index=42 +Color=65280 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -11595,11 +11637,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_77cdfc3a-9ce6-4be0-8478-b4f2b75e928c +GUID=DISPLAY_44cb069d-778e-4917-b04e-cfdfea94c3e6 [MEASUREMENT_OBJECT_267] Module=xcp_demo -Name=socket +Name=shutdown Disabled=0 Mode=1 Rate=1000 @@ -11614,8 +11656,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_267_DISPLAY_1] Window=6 -Index=38 -Color=16711935 +Index=41 +Color=255 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -11656,11 +11698,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_dad7b77e-207c-4494-b1f8-7be7a5f34fcc +GUID=DISPLAY_064a1c65-e8e2-4bc2-9eb3-121d49fa1d2a [MEASUREMENT_OBJECT_268] Module=xcp_demo -Name=socketpair +Name=sigaltstack Disabled=0 Mode=1 Rate=1000 @@ -11675,8 +11717,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_268_DISPLAY_1] Window=6 -Index=37 -Color=33023 +Index=40 +Color=65535 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -11717,11 +11759,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_7a0a182b-7f2c-4eb3-84ca-df83dc50b4ac +GUID=DISPLAY_1058d732-0fc3-486a-a847-f61d58bb905d [MEASUREMENT_OBJECT_269] Module=xcp_demo -Name=splice +Name=signalfd4 Disabled=0 Mode=1 Rate=1000 @@ -11736,8 +11778,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_269_DISPLAY_1] Window=6 -Index=36 -Color=16744576 +Index=39 +Color=16776960 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -11778,12 +11820,12 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_6484c40a-62e5-4ad6-a32b-72c3ed414421 +GUID=DISPLAY_77cdfc3a-9ce6-4be0-8478-b4f2b75e928c [MEASUREMENT_OBJECT_26_DISPLAY_1] Window=6 -Index=277 -Color=8421631 +Index=281 +Color=21930 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -11824,11 +11866,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_60c88a13-3dcf-452b-b437-21b5eddfa287 +GUID=DISPLAY_0ba97448-4f01-4d48-b36d-4f16f20bdd36 [MEASUREMENT_OBJECT_27] Module=xcp_demo -Name=clock_settime +Name=chdir Disabled=0 Mode=1 Rate=1000 @@ -11843,7 +11885,7 @@ DisplayCount=1 [MEASUREMENT_OBJECT_270] Module=xcp_demo -Name=statfs +Name=socket Disabled=0 Mode=1 Rate=1000 @@ -11858,8 +11900,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_270_DISPLAY_1] Window=6 -Index=35 -Color=16777215 +Index=38 +Color=16711935 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -11900,11 +11942,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_5a1a7635-4dcf-4eb0-9b58-01e6fc7c650d +GUID=DISPLAY_dad7b77e-207c-4494-b1f8-7be7a5f34fcc [MEASUREMENT_OBJECT_271] Module=xcp_demo -Name=statmount +Name=socketpair Disabled=0 Mode=1 Rate=1000 @@ -11919,8 +11961,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_271_DISPLAY_1] Window=6 -Index=34 -Color=43520 +Index=37 +Color=33023 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -11961,11 +12003,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_8415f795-20f2-49be-9faa-0766235734f0 +GUID=DISPLAY_7a0a182b-7f2c-4eb3-84ca-df83dc50b4ac [MEASUREMENT_OBJECT_272] Module=xcp_demo -Name=statx +Name=splice Disabled=0 Mode=1 Rate=1000 @@ -11980,8 +12022,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_272_DISPLAY_1] Window=6 -Index=33 -Color=204 +Index=36 +Color=16744576 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -12022,11 +12064,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_d8570937-e916-4af8-9cbc-807e84d7fa98 +GUID=DISPLAY_6484c40a-62e5-4ad6-a32b-72c3ed414421 [MEASUREMENT_OBJECT_273] Module=xcp_demo -Name=swapoff +Name=statfs Disabled=0 Mode=1 Rate=1000 @@ -12041,8 +12083,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_273_DISPLAY_1] Window=6 -Index=32 -Color=28784 +Index=35 +Color=16777215 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -12083,11 +12125,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_9b4da56d-eb8f-46c4-9bb1-fe55a2345d7d +GUID=DISPLAY_5a1a7635-4dcf-4eb0-9b58-01e6fc7c650d [MEASUREMENT_OBJECT_274] Module=xcp_demo -Name=swapon +Name=statmount Disabled=0 Mode=1 Rate=1000 @@ -12102,8 +12144,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_274_DISPLAY_1] Window=6 -Index=31 -Color=16755200 +Index=34 +Color=43520 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -12144,11 +12186,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_3541f87c-2647-410c-aa0b-95867f22e5a3 +GUID=DISPLAY_8415f795-20f2-49be-9faa-0766235734f0 [MEASUREMENT_OBJECT_275] Module=xcp_demo -Name=symlinkat +Name=statx Disabled=0 Mode=1 Rate=1000 @@ -12163,8 +12205,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_275_DISPLAY_1] Window=6 -Index=30 -Color=16711850 +Index=33 +Color=204 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -12205,11 +12247,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_b290f1fd-b9e0-4925-a815-72ef7af174a4 +GUID=DISPLAY_d8570937-e916-4af8-9cbc-807e84d7fa98 [MEASUREMENT_OBJECT_276] Module=xcp_demo -Name=sync +Name=swapoff Disabled=0 Mode=1 Rate=1000 @@ -12224,8 +12266,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_276_DISPLAY_1] Window=6 -Index=29 -Color=21930 +Index=32 +Color=28784 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -12266,11 +12308,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_323ad88f-6fd1-44c9-a871-5abd85936567 +GUID=DISPLAY_9b4da56d-eb8f-46c4-9bb1-fe55a2345d7d [MEASUREMENT_OBJECT_277] Module=xcp_demo -Name=sync_file_range +Name=swapon Disabled=0 Mode=1 Rate=1000 @@ -12285,8 +12327,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_277_DISPLAY_1] Window=6 -Index=28 -Color=11162965 +Index=31 +Color=16755200 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -12327,11 +12369,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_8118cd37-8b05-47f9-b2fa-b7c450c8dee4 +GUID=DISPLAY_3541f87c-2647-410c-aa0b-95867f22e5a3 [MEASUREMENT_OBJECT_278] Module=xcp_demo -Name=syscall_nr +Name=symlinkat Disabled=0 Mode=1 Rate=1000 @@ -12342,11 +12384,57 @@ MeaReferenced=1 ArchivBy_1=Recorder IsFallback=0 HasManagedDisplay=0 -DisplayCount=0 +DisplayCount=1 + +[MEASUREMENT_OBJECT_278_DISPLAY_1] +Window=6 +Index=30 +Color=16711850 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=0 +YMaxHome=100 +YMin=0 +YMax=100 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=1 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_b290f1fd-b9e0-4925-a815-72ef7af174a4 [MEASUREMENT_OBJECT_279] Module=xcp_demo -Name=syscall_pid +Name=sync Disabled=0 Mode=1 Rate=1000 @@ -12357,12 +12445,58 @@ MeaReferenced=1 ArchivBy_1=Recorder IsFallback=0 HasManagedDisplay=0 -DisplayCount=0 +DisplayCount=1 + +[MEASUREMENT_OBJECT_279_DISPLAY_1] +Window=6 +Index=29 +Color=21930 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=0 +YMaxHome=100 +YMin=0 +YMax=100 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=1 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_323ad88f-6fd1-44c9-a871-5abd85936567 [MEASUREMENT_OBJECT_27_DISPLAY_1] Window=6 -Index=276 -Color=43690 +Index=280 +Color=11162965 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -12403,11 +12537,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_92afa2ee-a182-4a94-9eee-9ce1b4b7f995 +GUID=DISPLAY_414492c6-7861-40be-a924-97988aac98c9 [MEASUREMENT_OBJECT_28] Module=xcp_demo -Name=clone +Name=chroot Disabled=0 Mode=1 Rate=1000 @@ -12422,7 +12556,7 @@ DisplayCount=1 [MEASUREMENT_OBJECT_280] Module=xcp_demo -Name=sysinfo +Name=sync_file_range Disabled=0 Mode=1 Rate=1000 @@ -12437,8 +12571,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_280_DISPLAY_1] Window=6 -Index=27 -Color=8421631 +Index=28 +Color=11162965 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -12479,11 +12613,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_93f387e8-cf4e-4369-b9f4-f9cc574fbac4 +GUID=DISPLAY_8118cd37-8b05-47f9-b2fa-b7c450c8dee4 [MEASUREMENT_OBJECT_281] Module=xcp_demo -Name=syslog +Name=sysinfo Disabled=0 Mode=1 Rate=1000 @@ -12498,8 +12632,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_281_DISPLAY_1] Window=6 -Index=26 -Color=43690 +Index=27 +Color=8421631 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -12540,11 +12674,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_7c6d6000-265d-4eef-a316-7c4a86e873d5 +GUID=DISPLAY_93f387e8-cf4e-4369-b9f4-f9cc574fbac4 [MEASUREMENT_OBJECT_282] Module=xcp_demo -Name=tee +Name=syslog Disabled=0 Mode=1 Rate=1000 @@ -12559,8 +12693,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_282_DISPLAY_1] Window=6 -Index=25 -Color=11184640 +Index=26 +Color=43690 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -12601,11 +12735,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_949de56b-ef0e-49a9-b665-d8dacc69f092 +GUID=DISPLAY_7c6d6000-265d-4eef-a316-7c4a86e873d5 [MEASUREMENT_OBJECT_283] Module=xcp_demo -Name=tgkill +Name=tee Disabled=0 Mode=1 Rate=1000 @@ -12620,8 +12754,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_283_DISPLAY_1] Window=6 -Index=24 -Color=16755455 +Index=25 +Color=11184640 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -12662,11 +12796,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_3c6887b9-bcdf-4b7d-92bb-14526177b567 +GUID=DISPLAY_949de56b-ef0e-49a9-b665-d8dacc69f092 [MEASUREMENT_OBJECT_284] Module=xcp_demo -Name=timer_create +Name=tgkill Disabled=0 Mode=1 Rate=1000 @@ -12681,8 +12815,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_284_DISPLAY_1] Window=6 -Index=23 -Color=11184895 +Index=24 +Color=16755455 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -12723,11 +12857,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_f8a0301d-2ccb-49f2-bf8c-e37c099ece44 +GUID=DISPLAY_3c6887b9-bcdf-4b7d-92bb-14526177b567 [MEASUREMENT_OBJECT_285] Module=xcp_demo -Name=timer_delete +Name=timer_create Disabled=0 Mode=1 Rate=1000 @@ -12742,8 +12876,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_285_DISPLAY_1] Window=6 -Index=22 -Color=16755370 +Index=23 +Color=11184895 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -12784,11 +12918,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_45db27ef-815d-4800-a743-bf461b98795d +GUID=DISPLAY_f8a0301d-2ccb-49f2-bf8c-e37c099ece44 [MEASUREMENT_OBJECT_286] Module=xcp_demo -Name=timer_getoverrun +Name=timer_delete Disabled=0 Mode=1 Rate=1000 @@ -12803,8 +12937,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_286_DISPLAY_1] Window=6 -Index=21 -Color=11206570 +Index=22 +Color=16755370 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -12845,11 +12979,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_2143d4d9-8740-4f4d-8556-b67237639bf5 +GUID=DISPLAY_45db27ef-815d-4800-a743-bf461b98795d [MEASUREMENT_OBJECT_287] Module=xcp_demo -Name=timer_gettime +Name=timer_getoverrun Disabled=0 Mode=1 Rate=1000 @@ -12864,8 +12998,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_287_DISPLAY_1] Window=6 -Index=20 -Color=65280 +Index=21 +Color=11206570 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -12906,11 +13040,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_d77a7b85-628c-48fa-b016-c72192e9cad6 +GUID=DISPLAY_2143d4d9-8740-4f4d-8556-b67237639bf5 [MEASUREMENT_OBJECT_288] Module=xcp_demo -Name=timer_settime +Name=timer_gettime Disabled=0 Mode=1 Rate=1000 @@ -12925,8 +13059,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_288_DISPLAY_1] Window=6 -Index=19 -Color=255 +Index=20 +Color=65280 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -12967,11 +13101,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_bff35a36-6cdd-41ee-9a2f-ddd59d9e498c +GUID=DISPLAY_d77a7b85-628c-48fa-b016-c72192e9cad6 [MEASUREMENT_OBJECT_289] Module=xcp_demo -Name=timerfd_create +Name=timer_settime Disabled=0 Mode=1 Rate=1000 @@ -12986,8 +13120,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_289_DISPLAY_1] Window=6 -Index=18 -Color=65535 +Index=19 +Color=255 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -13028,12 +13162,12 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_a1b31112-9854-48fb-8f6e-b789a454505e +GUID=DISPLAY_bff35a36-6cdd-41ee-9a2f-ddd59d9e498c [MEASUREMENT_OBJECT_28_DISPLAY_1] Window=6 -Index=275 -Color=11184640 +Index=279 +Color=11206655 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -13074,11 +13208,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_08094d4e-caf2-4fed-9020-189b17f92415 +GUID=DISPLAY_a32c2942-68db-4675-87a6-ef534dbe2cf8 [MEASUREMENT_OBJECT_29] Module=xcp_demo -Name=clone3 +Name=clock_getres Disabled=0 Mode=1 Rate=1000 @@ -13093,7 +13227,7 @@ DisplayCount=1 [MEASUREMENT_OBJECT_290] Module=xcp_demo -Name=timerfd_gettime +Name=timerfd_create Disabled=0 Mode=1 Rate=1000 @@ -13108,8 +13242,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_290_DISPLAY_1] Window=6 -Index=17 -Color=16776960 +Index=18 +Color=65535 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -13150,11 +13284,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_472f266d-2eba-495b-b916-ebff4aae96d6 +GUID=DISPLAY_a1b31112-9854-48fb-8f6e-b789a454505e [MEASUREMENT_OBJECT_291] Module=xcp_demo -Name=timerfd_settime +Name=timerfd_gettime Disabled=0 Mode=1 Rate=1000 @@ -13169,8 +13303,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_291_DISPLAY_1] Window=6 -Index=16 -Color=16711935 +Index=17 +Color=16776960 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -13193,7 +13327,7 @@ LineWidth=1 Precision=-2 Digits=6 Enabled=1 -StoredFocused=1 +StoredFocused=0 SublMask=1 MeaSublMask=0 LockScaling=0 @@ -13211,11 +13345,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_5e4fb3a2-81a1-488f-87b9-84c7e8982f43 +GUID=DISPLAY_472f266d-2eba-495b-b916-ebff4aae96d6 [MEASUREMENT_OBJECT_292] Module=xcp_demo -Name=times +Name=timerfd_settime Disabled=0 Mode=1 Rate=1000 @@ -13230,8 +13364,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_292_DISPLAY_1] Window=6 -Index=15 -Color=33023 +Index=16 +Color=16711935 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -13272,11 +13406,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_95efa5cd-df9f-487c-a24f-2c58089ab8d4 +GUID=DISPLAY_5e4fb3a2-81a1-488f-87b9-84c7e8982f43 [MEASUREMENT_OBJECT_293] Module=xcp_demo -Name=tkill +Name=times Disabled=0 Mode=1 Rate=1000 @@ -13291,8 +13425,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_293_DISPLAY_1] Window=6 -Index=14 -Color=16744576 +Index=15 +Color=33023 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -13333,11 +13467,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_f5ab55cb-6353-46d4-af5b-b520c6a86d15 +GUID=DISPLAY_95efa5cd-df9f-487c-a24f-2c58089ab8d4 [MEASUREMENT_OBJECT_294] Module=xcp_demo -Name=truncate +Name=tkill Disabled=0 Mode=1 Rate=1000 @@ -13352,8 +13486,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_294_DISPLAY_1] Window=6 -Index=13 -Color=16777215 +Index=14 +Color=16744576 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -13394,11 +13528,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_edd81ba7-472e-452d-ae73-f6c2dc9ca2b4 +GUID=DISPLAY_f5ab55cb-6353-46d4-af5b-b520c6a86d15 [MEASUREMENT_OBJECT_295] Module=xcp_demo -Name=umask +Name=truncate Disabled=0 Mode=1 Rate=1000 @@ -13413,8 +13547,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_295_DISPLAY_1] Window=6 -Index=12 -Color=43520 +Index=13 +Color=16777215 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -13455,11 +13589,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_43cf278d-e7b7-4fd9-b417-52762beae26f +GUID=DISPLAY_edd81ba7-472e-452d-ae73-f6c2dc9ca2b4 [MEASUREMENT_OBJECT_296] Module=xcp_demo -Name=umount2 +Name=umask Disabled=0 Mode=1 Rate=1000 @@ -13474,8 +13608,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_296_DISPLAY_1] Window=6 -Index=11 -Color=204 +Index=12 +Color=43520 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -13516,11 +13650,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_c5a4a995-1623-4250-9187-4805764ad435 +GUID=DISPLAY_43cf278d-e7b7-4fd9-b417-52762beae26f [MEASUREMENT_OBJECT_297] Module=xcp_demo -Name=uname +Name=umount2 Disabled=0 Mode=1 Rate=1000 @@ -13535,8 +13669,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_297_DISPLAY_1] Window=6 -Index=10 -Color=28784 +Index=11 +Color=204 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -13577,11 +13711,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_ecaaf120-2e1c-4c3d-97f3-2a16ee095db0 +GUID=DISPLAY_c5a4a995-1623-4250-9187-4805764ad435 [MEASUREMENT_OBJECT_298] Module=xcp_demo -Name=unlinkat +Name=uname Disabled=0 Mode=1 Rate=1000 @@ -13596,8 +13730,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_298_DISPLAY_1] Window=6 -Index=9 -Color=16755200 +Index=10 +Color=28784 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -13638,11 +13772,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_af8a7282-fd36-4c8c-b77b-2a40876779d9 +GUID=DISPLAY_ecaaf120-2e1c-4c3d-97f3-2a16ee095db0 [MEASUREMENT_OBJECT_299] Module=xcp_demo -Name=unshare +Name=unlinkat Disabled=0 Mode=1 Rate=1000 @@ -13657,8 +13791,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_299_DISPLAY_1] Window=6 -Index=8 -Color=16711850 +Index=9 +Color=16755200 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -13699,12 +13833,12 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_891fe3a6-1255-4f8e-8517-3ef1a52881bb +GUID=DISPLAY_af8a7282-fd36-4c8c-b77b-2a40876779d9 [MEASUREMENT_OBJECT_29_DISPLAY_1] Window=6 -Index=274 -Color=16755455 +Index=278 +Color=65450 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -13745,7 +13879,7 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_f7b1264d-c2b2-4940-8f45-201a310ff971 +GUID=DISPLAY_ae92b91a-0135-4f45-8d8c-33e93a0c9728 [MEASUREMENT_OBJECT_2_DISPLAY_1] Window=4 @@ -13756,9 +13890,9 @@ ColorFunction=0 ColorFunctionScope=1 LineTyp=2 YMinHome=0 -YMaxHome=2000 +YMaxHome=10000 YMin=0 -YMax=2000 +YMax=10000 XOffsetNS=0 XOffset=0 ValueFormat=3 @@ -13788,15 +13922,106 @@ XAxisLabel= YAxisLabel= AxisCaption= Row=0 -Col=0 -YAxis_ID=0 -AxisTemplate= -GUID=DISPLAY_c9c59608-f828-488c-92c2-e78a4983ac13 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_c9c59608-f828-488c-92c2-e78a4983ac13 + +[MEASUREMENT_OBJECT_2_DISPLAY_2] +Window=5 +Index=0 +Color=255 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=0 +YMaxHome=100 +YMin=0 +YMax=100 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=1 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_cf91cb12-6761-4a65-9538-d5e4baa13a2c + +[MEASUREMENT_OBJECT_3] +Module=xcp_demo +Name=syscall_nr +Disabled=0 +Mode=2147483651 +Rate=0 +ModeIsDefault=1 +Row=0 +Column=0 +MeaReferenced=1 +ArchivBy_1=Recorder +IsFallback=0 +HasManagedDisplay=0 +DisplayCount=1 + +[MEASUREMENT_OBJECT_30] +Module=xcp_demo +Name=clock_settime +Disabled=0 +Mode=1 +Rate=1000 +ModeIsDefault=0 +Row=0 +Column=0 +MeaReferenced=1 +ArchivBy_1=Recorder +IsFallback=0 +HasManagedDisplay=0 +DisplayCount=1 + +[MEASUREMENT_OBJECT_300] +Module=xcp_demo +Name=unshare +Disabled=0 +Mode=1 +Rate=1000 +ModeIsDefault=0 +Row=0 +Column=0 +MeaReferenced=1 +ArchivBy_1=Recorder +IsFallback=0 +HasManagedDisplay=0 +DisplayCount=1 -[MEASUREMENT_OBJECT_2_DISPLAY_2] -Window=5 -Index=0 -Color=255 +[MEASUREMENT_OBJECT_300_DISPLAY_1] +Window=6 +Index=8 +Color=16711850 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -13819,7 +14044,7 @@ LineWidth=1 Precision=-2 Digits=6 Enabled=1 -StoredFocused=1 +StoredFocused=0 SublMask=1 MeaSublMask=0 LockScaling=0 @@ -13837,39 +14062,9 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_cf91cb12-6761-4a65-9538-d5e4baa13a2c - -[MEASUREMENT_OBJECT_3] -Module=xcp_demo -Name=recvfrom -Disabled=0 -Mode=2147483650 -Rate=0 -ModeIsDefault=1 -Row=0 -Column=0 -MeaReferenced=1 -ArchivBy_1=Recorder -IsFallback=0 -HasManagedDisplay=0 -DisplayCount=1 - -[MEASUREMENT_OBJECT_30] -Module=xcp_demo -Name=close -Disabled=0 -Mode=1 -Rate=1000 -ModeIsDefault=0 -Row=0 -Column=0 -MeaReferenced=1 -ArchivBy_1=Recorder -IsFallback=0 -HasManagedDisplay=0 -DisplayCount=1 +GUID=DISPLAY_891fe3a6-1255-4f8e-8517-3ef1a52881bb -[MEASUREMENT_OBJECT_300] +[MEASUREMENT_OBJECT_301] Module=xcp_demo Name=userfaultfd Disabled=0 @@ -13884,7 +14079,7 @@ IsFallback=0 HasManagedDisplay=0 DisplayCount=1 -[MEASUREMENT_OBJECT_300_DISPLAY_1] +[MEASUREMENT_OBJECT_301_DISPLAY_1] Window=6 Index=7 Color=21930 @@ -13930,7 +14125,7 @@ YAxis_ID=0 AxisTemplate= GUID=DISPLAY_f3593f46-03e8-4a7f-9d91-1d5ce5c70b8e -[MEASUREMENT_OBJECT_301] +[MEASUREMENT_OBJECT_302] Module=xcp_demo Name=utimensat Disabled=0 @@ -13945,7 +14140,7 @@ IsFallback=0 HasManagedDisplay=0 DisplayCount=1 -[MEASUREMENT_OBJECT_301_DISPLAY_1] +[MEASUREMENT_OBJECT_302_DISPLAY_1] Window=6 Index=6 Color=11162965 @@ -13991,7 +14186,7 @@ YAxis_ID=0 AxisTemplate= GUID=DISPLAY_72ea7b2a-d40d-46bc-a6d9-856aa457420c -[MEASUREMENT_OBJECT_302] +[MEASUREMENT_OBJECT_303] Module=xcp_demo Name=vhangup Disabled=0 @@ -14006,7 +14201,7 @@ IsFallback=0 HasManagedDisplay=0 DisplayCount=1 -[MEASUREMENT_OBJECT_302_DISPLAY_1] +[MEASUREMENT_OBJECT_303_DISPLAY_1] Window=6 Index=5 Color=11206655 @@ -14052,7 +14247,7 @@ YAxis_ID=0 AxisTemplate= GUID=DISPLAY_9b8a9961-a866-4e8a-8223-e7404a772c87 -[MEASUREMENT_OBJECT_303] +[MEASUREMENT_OBJECT_304] Module=xcp_demo Name=vmsplice Disabled=0 @@ -14067,7 +14262,7 @@ IsFallback=0 HasManagedDisplay=0 DisplayCount=1 -[MEASUREMENT_OBJECT_303_DISPLAY_1] +[MEASUREMENT_OBJECT_304_DISPLAY_1] Window=6 Index=4 Color=65450 @@ -14113,7 +14308,7 @@ YAxis_ID=0 AxisTemplate= GUID=DISPLAY_3fc08f63-8a93-4a26-9d14-63b0352bca83 -[MEASUREMENT_OBJECT_304] +[MEASUREMENT_OBJECT_305] Module=xcp_demo Name=wait4 Disabled=0 @@ -14128,7 +14323,7 @@ IsFallback=0 HasManagedDisplay=0 DisplayCount=1 -[MEASUREMENT_OBJECT_304_DISPLAY_1] +[MEASUREMENT_OBJECT_305_DISPLAY_1] Window=6 Index=3 Color=8421631 @@ -14174,7 +14369,7 @@ YAxis_ID=0 AxisTemplate= GUID=DISPLAY_2a99cb10-c923-401c-a539-08a4122a9bbd -[MEASUREMENT_OBJECT_305] +[MEASUREMENT_OBJECT_306] Module=xcp_demo Name=waitid Disabled=0 @@ -14189,7 +14384,7 @@ IsFallback=0 HasManagedDisplay=0 DisplayCount=1 -[MEASUREMENT_OBJECT_305_DISPLAY_1] +[MEASUREMENT_OBJECT_306_DISPLAY_1] Window=6 Index=2 Color=43690 @@ -14235,7 +14430,7 @@ YAxis_ID=0 AxisTemplate= GUID=DISPLAY_242a70ff-77c4-4e87-8018-688f59ee9576 -[MEASUREMENT_OBJECT_306] +[MEASUREMENT_OBJECT_307] Module=xcp_demo Name=write Disabled=0 @@ -14250,7 +14445,7 @@ IsFallback=0 HasManagedDisplay=0 DisplayCount=1 -[MEASUREMENT_OBJECT_306_DISPLAY_1] +[MEASUREMENT_OBJECT_307_DISPLAY_1] Window=6 Index=1 Color=11184640 @@ -14296,7 +14491,7 @@ YAxis_ID=0 AxisTemplate= GUID=DISPLAY_08bbfc9b-2c88-4479-902a-6a624be10ae4 -[MEASUREMENT_OBJECT_307] +[MEASUREMENT_OBJECT_308] Module=xcp_demo Name=writev Disabled=0 @@ -14311,7 +14506,7 @@ IsFallback=0 HasManagedDisplay=0 DisplayCount=1 -[MEASUREMENT_OBJECT_307_DISPLAY_1] +[MEASUREMENT_OBJECT_308_DISPLAY_1] Window=6 Index=0 Color=16755455 @@ -14359,8 +14554,8 @@ GUID=DISPLAY_5e4c9599-244f-4c15-b2a2-18beb18b0029 [MEASUREMENT_OBJECT_30_DISPLAY_1] Window=6 -Index=273 -Color=11184895 +Index=276 +Color=43690 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -14401,11 +14596,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_062cdd1d-b788-469a-ad1a-f6996bab579f +GUID=DISPLAY_92afa2ee-a182-4a94-9eee-9ce1b4b7f995 [MEASUREMENT_OBJECT_31] Module=xcp_demo -Name=close_range +Name=clone Disabled=0 Mode=1 Rate=1000 @@ -14420,8 +14615,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_31_DISPLAY_1] Window=6 -Index=272 -Color=16755370 +Index=275 +Color=11184640 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -14462,11 +14657,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_fc99d826-168e-4c50-aaf1-63218f321707 +GUID=DISPLAY_08094d4e-caf2-4fed-9020-189b17f92415 [MEASUREMENT_OBJECT_32] Module=xcp_demo -Name=connect +Name=clone3 Disabled=0 Mode=1 Rate=1000 @@ -14481,8 +14676,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_32_DISPLAY_1] Window=6 -Index=271 -Color=11206570 +Index=274 +Color=16755455 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -14523,11 +14718,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_3a7bef58-82f8-446c-8196-079b40d4a9ad +GUID=DISPLAY_f7b1264d-c2b2-4940-8f45-201a310ff971 [MEASUREMENT_OBJECT_33] Module=xcp_demo -Name=copy_file_range +Name=close Disabled=0 Mode=1 Rate=1000 @@ -14542,8 +14737,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_33_DISPLAY_1] Window=6 -Index=270 -Color=65280 +Index=273 +Color=11184895 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -14584,11 +14779,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_7990df67-3c56-43cc-b210-25f7b0036e03 +GUID=DISPLAY_062cdd1d-b788-469a-ad1a-f6996bab579f [MEASUREMENT_OBJECT_34] Module=xcp_demo -Name=delete_module +Name=close_range Disabled=0 Mode=1 Rate=1000 @@ -14603,8 +14798,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_34_DISPLAY_1] Window=6 -Index=269 -Color=16776960 +Index=272 +Color=16755370 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -14645,11 +14840,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_07f4b6aa-f7d4-4849-82f0-4e3462d0916a +GUID=DISPLAY_fc99d826-168e-4c50-aaf1-63218f321707 [MEASUREMENT_OBJECT_35] Module=xcp_demo -Name=dup +Name=connect Disabled=0 Mode=1 Rate=1000 @@ -14664,8 +14859,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_35_DISPLAY_1] Window=6 -Index=268 -Color=16711935 +Index=271 +Color=11206570 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -14706,11 +14901,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_aced95bf-9ca0-4b46-88d0-26d35f703a74 +GUID=DISPLAY_3a7bef58-82f8-446c-8196-079b40d4a9ad [MEASUREMENT_OBJECT_36] Module=xcp_demo -Name=dup3 +Name=copy_file_range Disabled=0 Mode=1 Rate=1000 @@ -14725,8 +14920,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_36_DISPLAY_1] Window=6 -Index=267 -Color=33023 +Index=270 +Color=65280 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -14767,11 +14962,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_27e43f2e-e398-447d-bb02-d8a29545f7c1 +GUID=DISPLAY_7990df67-3c56-43cc-b210-25f7b0036e03 [MEASUREMENT_OBJECT_37] Module=xcp_demo -Name=epoll_create1 +Name=delete_module Disabled=0 Mode=1 Rate=1000 @@ -14786,8 +14981,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_37_DISPLAY_1] Window=6 -Index=266 -Color=16744576 +Index=269 +Color=16776960 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -14828,11 +15023,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_511e2157-070a-451e-97df-42e6d2c58a38 +GUID=DISPLAY_07f4b6aa-f7d4-4849-82f0-4e3462d0916a [MEASUREMENT_OBJECT_38] Module=xcp_demo -Name=epoll_ctl +Name=dup Disabled=0 Mode=1 Rate=1000 @@ -14847,8 +15042,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_38_DISPLAY_1] Window=6 -Index=265 -Color=16777215 +Index=268 +Color=16711935 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -14889,11 +15084,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_f05381f8-3236-46ef-bf5d-30081dee6e0e +GUID=DISPLAY_aced95bf-9ca0-4b46-88d0-26d35f703a74 [MEASUREMENT_OBJECT_39] Module=xcp_demo -Name=epoll_pwait +Name=dup3 Disabled=0 Mode=1 Rate=1000 @@ -14908,8 +15103,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_39_DISPLAY_1] Window=6 -Index=264 -Color=43520 +Index=267 +Color=33023 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -14950,20 +15145,20 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_ded65198-c65d-44d7-bf41-b042ff9a4fbe +GUID=DISPLAY_27e43f2e-e398-447d-bb02-d8a29545f7c1 [MEASUREMENT_OBJECT_3_DISPLAY_1] -Window=6 -Index=300 -Color=28784 +Window=7 +Index=1 +Color=65280 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 LineTyp=2 YMinHome=0 -YMaxHome=100 +YMaxHome=4294970000 YMin=0 -YMax=100 +YMax=4294970000 XOffsetNS=0 XOffset=0 ValueFormat=3 @@ -14980,7 +15175,7 @@ Digits=6 Enabled=1 StoredFocused=0 SublMask=1 -MeaSublMask=0 +MeaSublMask=3 LockScaling=0 RightAxis=0 MapMode=2 @@ -14996,13 +15191,13 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_8de0f46e-d7aa-498e-84f9-2bc7e1d6c040 +GUID=DISPLAY_1944648e-7c9e-444d-8469-81f8a24394b4 [MEASUREMENT_OBJECT_4] Module=xcp_demo -Name=sendto +Name=syscall_pid Disabled=0 -Mode=2147483650 +Mode=2147483651 Rate=0 ModeIsDefault=1 Row=0 @@ -15015,7 +15210,7 @@ DisplayCount=1 [MEASUREMENT_OBJECT_40] Module=xcp_demo -Name=epoll_pwait2 +Name=epoll_create1 Disabled=0 Mode=1 Rate=1000 @@ -15030,8 +15225,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_40_DISPLAY_1] Window=6 -Index=263 -Color=204 +Index=266 +Color=16744576 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -15072,11 +15267,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_ec4cdfc4-85c5-4236-bd49-5d3331fe59a5 +GUID=DISPLAY_511e2157-070a-451e-97df-42e6d2c58a38 [MEASUREMENT_OBJECT_41] Module=xcp_demo -Name=eventfd2 +Name=epoll_ctl Disabled=0 Mode=1 Rate=1000 @@ -15091,8 +15286,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_41_DISPLAY_1] Window=6 -Index=262 -Color=28784 +Index=265 +Color=16777215 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -15133,11 +15328,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_d7e2787d-4ef2-4e21-9698-a5e84e8cb728 +GUID=DISPLAY_f05381f8-3236-46ef-bf5d-30081dee6e0e [MEASUREMENT_OBJECT_42] Module=xcp_demo -Name=execve +Name=epoll_pwait Disabled=0 Mode=1 Rate=1000 @@ -15152,8 +15347,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_42_DISPLAY_1] Window=6 -Index=261 -Color=16755200 +Index=264 +Color=43520 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -15194,11 +15389,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_3534214c-f40b-47ee-97d6-e5c31284c448 +GUID=DISPLAY_ded65198-c65d-44d7-bf41-b042ff9a4fbe [MEASUREMENT_OBJECT_43] Module=xcp_demo -Name=execveat +Name=epoll_pwait2 Disabled=0 Mode=1 Rate=1000 @@ -15213,8 +15408,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_43_DISPLAY_1] Window=6 -Index=260 -Color=16711850 +Index=263 +Color=204 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -15255,11 +15450,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_1970f459-2223-4686-8db6-1918ea4c58f1 +GUID=DISPLAY_ec4cdfc4-85c5-4236-bd49-5d3331fe59a5 [MEASUREMENT_OBJECT_44] Module=xcp_demo -Name=exit +Name=eventfd2 Disabled=0 Mode=1 Rate=1000 @@ -15274,8 +15469,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_44_DISPLAY_1] Window=6 -Index=259 -Color=21930 +Index=262 +Color=28784 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -15316,11 +15511,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_536a9293-a8bd-415c-be13-52e15b3a0a73 +GUID=DISPLAY_d7e2787d-4ef2-4e21-9698-a5e84e8cb728 [MEASUREMENT_OBJECT_45] Module=xcp_demo -Name=exit_group +Name=execve Disabled=0 Mode=1 Rate=1000 @@ -15335,8 +15530,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_45_DISPLAY_1] Window=6 -Index=258 -Color=11162965 +Index=261 +Color=16755200 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -15377,11 +15572,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_f9cd92fb-0435-453b-94a0-6d84688f2605 +GUID=DISPLAY_3534214c-f40b-47ee-97d6-e5c31284c448 [MEASUREMENT_OBJECT_46] Module=xcp_demo -Name=faccessat +Name=execveat Disabled=0 Mode=1 Rate=1000 @@ -15396,8 +15591,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_46_DISPLAY_1] Window=6 -Index=257 -Color=11206655 +Index=260 +Color=16711850 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -15438,11 +15633,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_fb38aadd-fc96-4b05-9529-1d57d90d0c93 +GUID=DISPLAY_1970f459-2223-4686-8db6-1918ea4c58f1 [MEASUREMENT_OBJECT_47] Module=xcp_demo -Name=faccessat2 +Name=exit Disabled=0 Mode=1 Rate=1000 @@ -15457,8 +15652,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_47_DISPLAY_1] Window=6 -Index=256 -Color=65450 +Index=259 +Color=21930 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -15499,11 +15694,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_9e64571e-734d-42fa-a72e-bad8652bd65a +GUID=DISPLAY_536a9293-a8bd-415c-be13-52e15b3a0a73 [MEASUREMENT_OBJECT_48] Module=xcp_demo -Name=fadvise64 +Name=exit_group Disabled=0 Mode=1 Rate=1000 @@ -15518,8 +15713,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_48_DISPLAY_1] Window=6 -Index=255 -Color=8421631 +Index=258 +Color=11162965 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -15560,11 +15755,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_1dbb22f6-9fd5-4673-9d7d-9aa8690e8e98 +GUID=DISPLAY_f9cd92fb-0435-453b-94a0-6d84688f2605 [MEASUREMENT_OBJECT_49] Module=xcp_demo -Name=fallocate +Name=faccessat Disabled=0 Mode=1 Rate=1000 @@ -15579,8 +15774,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_49_DISPLAY_1] Window=6 -Index=254 -Color=43690 +Index=257 +Color=11206655 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -15621,20 +15816,20 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_55e12012-5c08-4887-989d-ec87c04210b6 +GUID=DISPLAY_fb38aadd-fc96-4b05-9529-1d57d90d0c93 [MEASUREMENT_OBJECT_4_DISPLAY_1] -Window=6 -Index=301 -Color=11184895 +Window=7 +Index=0 +Color=255 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 LineTyp=2 YMinHome=0 -YMaxHome=100 +YMaxHome=4294970000 YMin=0 -YMax=100 +YMax=4294970000 XOffsetNS=0 XOffset=0 ValueFormat=3 @@ -15649,9 +15844,9 @@ LineWidth=1 Precision=-2 Digits=6 Enabled=1 -StoredFocused=0 +StoredFocused=1 SublMask=1 -MeaSublMask=0 +MeaSublMask=3 LockScaling=0 RightAxis=0 MapMode=2 @@ -15667,15 +15862,15 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_671a1a5a-2604-45fd-8157-e69fd7d85014 +GUID=DISPLAY_48506d0a-ff8a-4b8d-97a1-ae3fba094c08 [MEASUREMENT_OBJECT_5] Module=xcp_demo -Name=futex +Name=recvfrom Disabled=0 -Mode=2147483650 +Mode=2147483653 Rate=0 -ModeIsDefault=1 +ModeIsDefault=0 Row=0 Column=0 MeaReferenced=1 @@ -15686,7 +15881,7 @@ DisplayCount=1 [MEASUREMENT_OBJECT_50] Module=xcp_demo -Name=fchdir +Name=faccessat2 Disabled=0 Mode=1 Rate=1000 @@ -15701,8 +15896,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_50_DISPLAY_1] Window=6 -Index=253 -Color=11184640 +Index=256 +Color=65450 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -15743,11 +15938,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_d2cb8601-cef1-43c0-b1d2-7b4d0e39a5d4 +GUID=DISPLAY_9e64571e-734d-42fa-a72e-bad8652bd65a [MEASUREMENT_OBJECT_51] Module=xcp_demo -Name=fchmod +Name=fadvise64 Disabled=0 Mode=1 Rate=1000 @@ -15762,8 +15957,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_51_DISPLAY_1] Window=6 -Index=252 -Color=16755455 +Index=255 +Color=8421631 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -15804,11 +15999,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_f1b7cced-c258-483b-ba89-0d24da8dc2bd +GUID=DISPLAY_1dbb22f6-9fd5-4673-9d7d-9aa8690e8e98 [MEASUREMENT_OBJECT_52] Module=xcp_demo -Name=fchmodat +Name=fallocate Disabled=0 Mode=1 Rate=1000 @@ -15823,8 +16018,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_52_DISPLAY_1] Window=6 -Index=251 -Color=11184895 +Index=254 +Color=43690 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -15865,11 +16060,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_405b57a2-c0e1-476d-a0e8-2912e3e3ece6 +GUID=DISPLAY_55e12012-5c08-4887-989d-ec87c04210b6 [MEASUREMENT_OBJECT_53] Module=xcp_demo -Name=fchmodat2 +Name=fchdir Disabled=0 Mode=1 Rate=1000 @@ -15884,8 +16079,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_53_DISPLAY_1] Window=6 -Index=250 -Color=16755370 +Index=253 +Color=11184640 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -15926,11 +16121,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_9216a96d-4f3c-4c32-aa46-323bf4e1d812 +GUID=DISPLAY_d2cb8601-cef1-43c0-b1d2-7b4d0e39a5d4 [MEASUREMENT_OBJECT_54] Module=xcp_demo -Name=fchown +Name=fchmod Disabled=0 Mode=1 Rate=1000 @@ -15945,8 +16140,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_54_DISPLAY_1] Window=6 -Index=249 -Color=11206570 +Index=252 +Color=16755455 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -15987,11 +16182,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_af4e0e41-d1a1-4bfd-b4c1-3bf3c44aff79 +GUID=DISPLAY_f1b7cced-c258-483b-ba89-0d24da8dc2bd [MEASUREMENT_OBJECT_55] Module=xcp_demo -Name=fchownat +Name=fchmodat Disabled=0 Mode=1 Rate=1000 @@ -16006,8 +16201,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_55_DISPLAY_1] Window=6 -Index=248 -Color=65280 +Index=251 +Color=11184895 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -16048,11 +16243,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_1bca4bb8-1175-4dcc-9882-2687c8f4287d +GUID=DISPLAY_405b57a2-c0e1-476d-a0e8-2912e3e3ece6 [MEASUREMENT_OBJECT_56] Module=xcp_demo -Name=fcntl +Name=fchmodat2 Disabled=0 Mode=1 Rate=1000 @@ -16067,8 +16262,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_56_DISPLAY_1] Window=6 -Index=247 -Color=255 +Index=250 +Color=16755370 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -16109,11 +16304,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_5ced7d60-8c40-4a99-a2fb-da35e4da1e44 +GUID=DISPLAY_9216a96d-4f3c-4c32-aa46-323bf4e1d812 [MEASUREMENT_OBJECT_57] Module=xcp_demo -Name=fdatasync +Name=fchown Disabled=0 Mode=1 Rate=1000 @@ -16128,8 +16323,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_57_DISPLAY_1] Window=6 -Index=246 -Color=65535 +Index=249 +Color=11206570 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -16170,11 +16365,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_1806c8a7-30e9-4023-b5a5-0d2f213ceae1 +GUID=DISPLAY_af4e0e41-d1a1-4bfd-b4c1-3bf3c44aff79 [MEASUREMENT_OBJECT_58] Module=xcp_demo -Name=fgetxattr +Name=fchownat Disabled=0 Mode=1 Rate=1000 @@ -16189,8 +16384,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_58_DISPLAY_1] Window=6 -Index=245 -Color=16776960 +Index=248 +Color=65280 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -16231,11 +16426,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_b58eaa2b-8c05-4039-a5eb-ee8097c7f3bb +GUID=DISPLAY_1bca4bb8-1175-4dcc-9882-2687c8f4287d [MEASUREMENT_OBJECT_59] Module=xcp_demo -Name=flistxattr +Name=fcntl Disabled=0 Mode=1 Rate=1000 @@ -16250,8 +16445,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_59_DISPLAY_1] Window=6 -Index=244 -Color=16711935 +Index=247 +Color=255 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -16292,12 +16487,12 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_5d8e1244-0769-4c9d-b2ab-6f7b7c63d8dc +GUID=DISPLAY_5ced7d60-8c40-4a99-a2fb-da35e4da1e44 [MEASUREMENT_OBJECT_5_DISPLAY_1] Window=6 -Index=297 -Color=8421631 +Index=300 +Color=28784 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -16320,7 +16515,7 @@ LineWidth=1 Precision=-2 Digits=6 Enabled=1 -StoredFocused=0 +StoredFocused=1 SublMask=1 MeaSublMask=0 LockScaling=0 @@ -16338,15 +16533,15 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_aedd0bff-bfc2-4674-9dac-42013c2f47dd +GUID=DISPLAY_8de0f46e-d7aa-498e-84f9-2bc7e1d6c040 [MEASUREMENT_OBJECT_6] Module=xcp_demo -Name=nanosleep +Name=sendto Disabled=0 -Mode=2147483650 +Mode=2147483652 Rate=0 -ModeIsDefault=1 +ModeIsDefault=0 Row=0 Column=0 MeaReferenced=1 @@ -16357,7 +16552,7 @@ DisplayCount=1 [MEASUREMENT_OBJECT_60] Module=xcp_demo -Name=flock +Name=fdatasync Disabled=0 Mode=1 Rate=1000 @@ -16372,8 +16567,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_60_DISPLAY_1] Window=6 -Index=243 -Color=33023 +Index=246 +Color=65535 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -16414,11 +16609,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_02c0e3cf-4ef2-485e-ad25-adbc08759570 +GUID=DISPLAY_1806c8a7-30e9-4023-b5a5-0d2f213ceae1 [MEASUREMENT_OBJECT_61] Module=xcp_demo -Name=fremovexattr +Name=fgetxattr Disabled=0 Mode=1 Rate=1000 @@ -16433,8 +16628,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_61_DISPLAY_1] Window=6 -Index=242 -Color=16744576 +Index=245 +Color=16776960 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -16475,11 +16670,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_261f4b6f-03c2-4e0b-96dc-56c1ddabf454 +GUID=DISPLAY_b58eaa2b-8c05-4039-a5eb-ee8097c7f3bb [MEASUREMENT_OBJECT_62] Module=xcp_demo -Name=fsconfig +Name=flistxattr Disabled=0 Mode=1 Rate=1000 @@ -16494,8 +16689,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_62_DISPLAY_1] Window=6 -Index=241 -Color=16777215 +Index=244 +Color=16711935 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -16536,11 +16731,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_850229a2-9e05-4631-bc41-9eeb18c1b8e0 +GUID=DISPLAY_5d8e1244-0769-4c9d-b2ab-6f7b7c63d8dc [MEASUREMENT_OBJECT_63] Module=xcp_demo -Name=fsetxattr +Name=flock Disabled=0 Mode=1 Rate=1000 @@ -16555,8 +16750,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_63_DISPLAY_1] Window=6 -Index=240 -Color=43520 +Index=243 +Color=33023 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -16597,11 +16792,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_16f7f233-0dfb-46d3-9607-51fd9b9392b8 +GUID=DISPLAY_02c0e3cf-4ef2-485e-ad25-adbc08759570 [MEASUREMENT_OBJECT_64] Module=xcp_demo -Name=fsmount +Name=fremovexattr Disabled=0 Mode=1 Rate=1000 @@ -16616,8 +16811,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_64_DISPLAY_1] Window=6 -Index=239 -Color=204 +Index=242 +Color=16744576 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -16658,11 +16853,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_9a2e1ca0-dca7-4e13-85db-930d6681060f +GUID=DISPLAY_261f4b6f-03c2-4e0b-96dc-56c1ddabf454 [MEASUREMENT_OBJECT_65] Module=xcp_demo -Name=fsopen +Name=fsconfig Disabled=0 Mode=1 Rate=1000 @@ -16677,8 +16872,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_65_DISPLAY_1] Window=6 -Index=238 -Color=28784 +Index=241 +Color=16777215 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -16719,11 +16914,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_7a099ed1-4645-4bee-9055-19f4402ce53f +GUID=DISPLAY_850229a2-9e05-4631-bc41-9eeb18c1b8e0 [MEASUREMENT_OBJECT_66] Module=xcp_demo -Name=fspick +Name=fsetxattr Disabled=0 Mode=1 Rate=1000 @@ -16738,8 +16933,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_66_DISPLAY_1] Window=6 -Index=237 -Color=16755200 +Index=240 +Color=43520 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -16780,11 +16975,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_f4dfe020-5216-40d0-ae40-e247a1474492 +GUID=DISPLAY_16f7f233-0dfb-46d3-9607-51fd9b9392b8 [MEASUREMENT_OBJECT_67] Module=xcp_demo -Name=fstat +Name=fsmount Disabled=0 Mode=1 Rate=1000 @@ -16799,8 +16994,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_67_DISPLAY_1] Window=6 -Index=236 -Color=16711850 +Index=239 +Color=204 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -16841,11 +17036,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_281e2b5a-295b-4078-8ebc-6023cad4f480 +GUID=DISPLAY_9a2e1ca0-dca7-4e13-85db-930d6681060f [MEASUREMENT_OBJECT_68] Module=xcp_demo -Name=fstatat +Name=fsopen Disabled=0 Mode=1 Rate=1000 @@ -16860,8 +17055,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_68_DISPLAY_1] Window=6 -Index=235 -Color=21930 +Index=238 +Color=28784 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -16902,11 +17097,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_97aff9db-aa8d-4633-b887-b243eea477e3 +GUID=DISPLAY_7a099ed1-4645-4bee-9055-19f4402ce53f [MEASUREMENT_OBJECT_69] Module=xcp_demo -Name=fstatfs +Name=fspick Disabled=0 Mode=1 Rate=1000 @@ -16921,8 +17116,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_69_DISPLAY_1] Window=6 -Index=234 -Color=11162965 +Index=237 +Color=16755200 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -16963,12 +17158,12 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_150ecfba-7b4d-488c-ac39-469de8e1a3cc +GUID=DISPLAY_f4dfe020-5216-40d0-ae40-e247a1474492 [MEASUREMENT_OBJECT_6_DISPLAY_1] Window=6 -Index=302 -Color=65280 +Index=301 +Color=11184895 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -17009,14 +17204,14 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_4536a7d0-f789-454b-9430-f500662c2ae8 +GUID=DISPLAY_671a1a5a-2604-45fd-8157-e69fd7d85014 [MEASUREMENT_OBJECT_7] Module=xcp_demo -Name=futex_requeue +Name=clock_nanosleep Disabled=0 -Mode=1 -Rate=1000 +Mode=2147483651 +Rate=0 ModeIsDefault=0 Row=0 Column=0 @@ -17028,7 +17223,7 @@ DisplayCount=1 [MEASUREMENT_OBJECT_70] Module=xcp_demo -Name=fsync +Name=fstat Disabled=0 Mode=1 Rate=1000 @@ -17043,8 +17238,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_70_DISPLAY_1] Window=6 -Index=233 -Color=11206655 +Index=236 +Color=16711850 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -17085,11 +17280,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_42d27a15-eab7-42a6-9f59-7fec3ffbdd2b +GUID=DISPLAY_281e2b5a-295b-4078-8ebc-6023cad4f480 [MEASUREMENT_OBJECT_71] Module=xcp_demo -Name=ftruncate +Name=fstatat Disabled=0 Mode=1 Rate=1000 @@ -17104,8 +17299,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_71_DISPLAY_1] Window=6 -Index=232 -Color=65450 +Index=235 +Color=21930 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -17146,11 +17341,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_7e416730-8e6b-4f8a-8914-83e31fe170e9 +GUID=DISPLAY_97aff9db-aa8d-4633-b887-b243eea477e3 [MEASUREMENT_OBJECT_72] Module=xcp_demo -Name=get_mempolicy +Name=fstatfs Disabled=0 Mode=1 Rate=1000 @@ -17165,8 +17360,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_72_DISPLAY_1] Window=6 -Index=231 -Color=16755370 +Index=234 +Color=11162965 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -17207,11 +17402,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_501a04b7-6e81-44f5-bc70-c2092c28b1f1 +GUID=DISPLAY_150ecfba-7b4d-488c-ac39-469de8e1a3cc [MEASUREMENT_OBJECT_73] Module=xcp_demo -Name=get_robust_list +Name=fsync Disabled=0 Mode=1 Rate=1000 @@ -17226,8 +17421,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_73_DISPLAY_1] Window=6 -Index=230 -Color=11206570 +Index=233 +Color=11206655 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -17268,11 +17463,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_1d3f31c1-8149-485e-80bc-f002960aef9d +GUID=DISPLAY_42d27a15-eab7-42a6-9f59-7fec3ffbdd2b [MEASUREMENT_OBJECT_74] Module=xcp_demo -Name=getcpu +Name=ftruncate Disabled=0 Mode=1 Rate=1000 @@ -17287,8 +17482,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_74_DISPLAY_1] Window=6 -Index=229 -Color=65280 +Index=232 +Color=65450 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -17329,11 +17524,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_4aabbf2e-7e38-490c-95cb-d3602fa2aa25 +GUID=DISPLAY_7e416730-8e6b-4f8a-8914-83e31fe170e9 [MEASUREMENT_OBJECT_75] Module=xcp_demo -Name=getcwd +Name=get_mempolicy Disabled=0 Mode=1 Rate=1000 @@ -17348,8 +17543,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_75_DISPLAY_1] Window=6 -Index=228 -Color=255 +Index=231 +Color=16755370 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -17390,11 +17585,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_bded0bcc-1268-4948-8189-a095e6feb827 +GUID=DISPLAY_501a04b7-6e81-44f5-bc70-c2092c28b1f1 [MEASUREMENT_OBJECT_76] Module=xcp_demo -Name=getdents64 +Name=get_robust_list Disabled=0 Mode=1 Rate=1000 @@ -17409,8 +17604,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_76_DISPLAY_1] Window=6 -Index=227 -Color=65535 +Index=230 +Color=11206570 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -17451,11 +17646,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_30df5f44-2054-4b6f-ae98-0fdd72720673 +GUID=DISPLAY_1d3f31c1-8149-485e-80bc-f002960aef9d [MEASUREMENT_OBJECT_77] Module=xcp_demo -Name=getegid +Name=getcpu Disabled=0 Mode=1 Rate=1000 @@ -17470,8 +17665,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_77_DISPLAY_1] Window=6 -Index=226 -Color=16776960 +Index=229 +Color=65280 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -17512,11 +17707,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_016b5c2e-8be7-439b-84c7-b706a812bc6c +GUID=DISPLAY_4aabbf2e-7e38-490c-95cb-d3602fa2aa25 [MEASUREMENT_OBJECT_78] Module=xcp_demo -Name=geteuid +Name=getcwd Disabled=0 Mode=1 Rate=1000 @@ -17531,8 +17726,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_78_DISPLAY_1] Window=6 -Index=225 -Color=16711935 +Index=228 +Color=255 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -17573,11 +17768,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_05cb7447-c297-4a3f-8233-80431edbb93e +GUID=DISPLAY_bded0bcc-1268-4948-8189-a095e6feb827 [MEASUREMENT_OBJECT_79] Module=xcp_demo -Name=getgid +Name=getdents64 Disabled=0 Mode=1 Rate=1000 @@ -17592,8 +17787,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_79_DISPLAY_1] Window=6 -Index=224 -Color=33023 +Index=227 +Color=65535 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -17634,12 +17829,12 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_00540f96-4aef-4ba9-aa42-eb034256ad81 +GUID=DISPLAY_30df5f44-2054-4b6f-ae98-0fdd72720673 [MEASUREMENT_OBJECT_7_DISPLAY_1] Window=6 -Index=296 -Color=43690 +Index=303 +Color=65535 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -17680,14 +17875,14 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_09d56764-0077-45a5-bb6f-b72084c9883e +GUID=DISPLAY_003ae240-e13f-440e-83ba-9e513a58a932 [MEASUREMENT_OBJECT_8] Module=xcp_demo -Name=futex_wait +Name=nanosleep Disabled=0 -Mode=1 -Rate=1000 +Mode=2147483651 +Rate=0 ModeIsDefault=0 Row=0 Column=0 @@ -17699,7 +17894,7 @@ DisplayCount=1 [MEASUREMENT_OBJECT_80] Module=xcp_demo -Name=getgroups +Name=getegid Disabled=0 Mode=1 Rate=1000 @@ -17714,8 +17909,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_80_DISPLAY_1] Window=6 -Index=223 -Color=16744576 +Index=226 +Color=16776960 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -17756,11 +17951,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_ee20d558-d728-45d0-870a-82208f75e46e +GUID=DISPLAY_016b5c2e-8be7-439b-84c7-b706a812bc6c [MEASUREMENT_OBJECT_81] Module=xcp_demo -Name=getitimer +Name=geteuid Disabled=0 Mode=1 Rate=1000 @@ -17775,8 +17970,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_81_DISPLAY_1] Window=6 -Index=222 -Color=16777215 +Index=225 +Color=16711935 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -17817,11 +18012,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_e3cffc21-0af6-4f28-ad03-8f3184412bec +GUID=DISPLAY_05cb7447-c297-4a3f-8233-80431edbb93e [MEASUREMENT_OBJECT_82] Module=xcp_demo -Name=getpeername +Name=getgid Disabled=0 Mode=1 Rate=1000 @@ -17836,8 +18031,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_82_DISPLAY_1] Window=6 -Index=221 -Color=43520 +Index=224 +Color=33023 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -17878,11 +18073,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_37f69124-b12f-41d1-8ee0-9ca4153d5678 +GUID=DISPLAY_00540f96-4aef-4ba9-aa42-eb034256ad81 [MEASUREMENT_OBJECT_83] Module=xcp_demo -Name=getpgid +Name=getgroups Disabled=0 Mode=1 Rate=1000 @@ -17897,8 +18092,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_83_DISPLAY_1] Window=6 -Index=220 -Color=204 +Index=223 +Color=16744576 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -17939,11 +18134,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_6d020077-b820-4c35-9628-37ed52d0d194 +GUID=DISPLAY_ee20d558-d728-45d0-870a-82208f75e46e [MEASUREMENT_OBJECT_84] Module=xcp_demo -Name=getpid +Name=getitimer Disabled=0 Mode=1 Rate=1000 @@ -17958,8 +18153,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_84_DISPLAY_1] Window=6 -Index=219 -Color=28784 +Index=222 +Color=16777215 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -18000,11 +18195,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_37e637d2-e66b-48b4-838c-013ed6431d65 +GUID=DISPLAY_e3cffc21-0af6-4f28-ad03-8f3184412bec [MEASUREMENT_OBJECT_85] Module=xcp_demo -Name=getppid +Name=getpeername Disabled=0 Mode=1 Rate=1000 @@ -18019,8 +18214,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_85_DISPLAY_1] Window=6 -Index=218 -Color=16755200 +Index=221 +Color=43520 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -18061,11 +18256,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_ae52aa85-ed10-413f-aeca-460b9ad8d2d9 +GUID=DISPLAY_37f69124-b12f-41d1-8ee0-9ca4153d5678 [MEASUREMENT_OBJECT_86] Module=xcp_demo -Name=getpriority +Name=getpgid Disabled=0 Mode=1 Rate=1000 @@ -18080,8 +18275,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_86_DISPLAY_1] Window=6 -Index=217 -Color=16711850 +Index=220 +Color=204 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -18122,11 +18317,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_b8806848-0722-422c-b626-754a749d5270 +GUID=DISPLAY_6d020077-b820-4c35-9628-37ed52d0d194 [MEASUREMENT_OBJECT_87] Module=xcp_demo -Name=getrandom +Name=getpid Disabled=0 Mode=1 Rate=1000 @@ -18141,8 +18336,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_87_DISPLAY_1] Window=6 -Index=216 -Color=21930 +Index=219 +Color=28784 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -18183,11 +18378,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_21c8c710-d401-461e-8318-cc9bdfa08722 +GUID=DISPLAY_37e637d2-e66b-48b4-838c-013ed6431d65 [MEASUREMENT_OBJECT_88] Module=xcp_demo -Name=getresgid +Name=getppid Disabled=0 Mode=1 Rate=1000 @@ -18202,8 +18397,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_88_DISPLAY_1] Window=6 -Index=215 -Color=11162965 +Index=218 +Color=16755200 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -18244,11 +18439,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_62d5251f-eb8e-4ebe-a606-007b0bda10d6 +GUID=DISPLAY_ae52aa85-ed10-413f-aeca-460b9ad8d2d9 [MEASUREMENT_OBJECT_89] Module=xcp_demo -Name=getresuid +Name=getpriority Disabled=0 Mode=1 Rate=1000 @@ -18263,8 +18458,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_89_DISPLAY_1] Window=6 -Index=214 -Color=11206655 +Index=217 +Color=16711850 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -18305,12 +18500,12 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_510c6e25-f4a5-4bd7-ae41-9f664fa38cb7 +GUID=DISPLAY_b8806848-0722-422c-b626-754a749d5270 [MEASUREMENT_OBJECT_8_DISPLAY_1] Window=6 -Index=295 -Color=11184640 +Index=304 +Color=65280 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -18351,14 +18546,14 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_c3887c07-5888-46f6-9101-411953e03e62 +GUID=DISPLAY_4536a7d0-f789-454b-9430-f500662c2ae8 [MEASUREMENT_OBJECT_9] Module=xcp_demo -Name=futex_waitv +Name=futex Disabled=0 -Mode=1 -Rate=1000 +Mode=2147483651 +Rate=0 ModeIsDefault=0 Row=0 Column=0 @@ -18370,7 +18565,7 @@ DisplayCount=1 [MEASUREMENT_OBJECT_90] Module=xcp_demo -Name=getrlimit +Name=getrandom Disabled=0 Mode=1 Rate=1000 @@ -18385,8 +18580,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_90_DISPLAY_1] Window=6 -Index=213 -Color=65450 +Index=216 +Color=21930 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -18427,11 +18622,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_63b07a3d-4e13-43ef-8b67-0212cdb259dc +GUID=DISPLAY_21c8c710-d401-461e-8318-cc9bdfa08722 [MEASUREMENT_OBJECT_91] Module=xcp_demo -Name=getrusage +Name=getresgid Disabled=0 Mode=1 Rate=1000 @@ -18446,8 +18641,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_91_DISPLAY_1] Window=6 -Index=212 -Color=8421631 +Index=215 +Color=11162965 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -18488,11 +18683,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_ed7ad16e-290f-4956-b98b-51c5604661fb +GUID=DISPLAY_62d5251f-eb8e-4ebe-a606-007b0bda10d6 [MEASUREMENT_OBJECT_92] Module=xcp_demo -Name=getsid +Name=getresuid Disabled=0 Mode=1 Rate=1000 @@ -18507,8 +18702,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_92_DISPLAY_1] Window=6 -Index=211 -Color=43690 +Index=214 +Color=11206655 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -18549,11 +18744,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_6078bc3d-4506-4759-ab66-02aea0a16dfe +GUID=DISPLAY_510c6e25-f4a5-4bd7-ae41-9f664fa38cb7 [MEASUREMENT_OBJECT_93] Module=xcp_demo -Name=getsockname +Name=getrlimit Disabled=0 Mode=1 Rate=1000 @@ -18568,8 +18763,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_93_DISPLAY_1] Window=6 -Index=210 -Color=11184640 +Index=213 +Color=65450 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -18610,11 +18805,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_ae312491-53b8-4a72-9f2b-81b511db3fa0 +GUID=DISPLAY_63b07a3d-4e13-43ef-8b67-0212cdb259dc [MEASUREMENT_OBJECT_94] Module=xcp_demo -Name=getsockopt +Name=getrusage Disabled=0 Mode=1 Rate=1000 @@ -18629,8 +18824,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_94_DISPLAY_1] Window=6 -Index=209 -Color=16755455 +Index=212 +Color=8421631 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -18671,11 +18866,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_770b4012-fe5a-4b30-9b99-15c24d7f5200 +GUID=DISPLAY_ed7ad16e-290f-4956-b98b-51c5604661fb [MEASUREMENT_OBJECT_95] Module=xcp_demo -Name=gettid +Name=getsid Disabled=0 Mode=1 Rate=1000 @@ -18690,8 +18885,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_95_DISPLAY_1] Window=6 -Index=208 -Color=11184895 +Index=211 +Color=43690 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -18732,11 +18927,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_cded321a-9245-438a-a6f2-14eaced60ad0 +GUID=DISPLAY_6078bc3d-4506-4759-ab66-02aea0a16dfe [MEASUREMENT_OBJECT_96] Module=xcp_demo -Name=gettimeofday +Name=getsockname Disabled=0 Mode=1 Rate=1000 @@ -18751,8 +18946,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_96_DISPLAY_1] Window=6 -Index=207 -Color=16755370 +Index=210 +Color=11184640 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -18793,11 +18988,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_5aaa4b5a-a728-4aa0-9fb8-60550810c7ea +GUID=DISPLAY_ae312491-53b8-4a72-9f2b-81b511db3fa0 [MEASUREMENT_OBJECT_97] Module=xcp_demo -Name=getuid +Name=getsockopt Disabled=0 Mode=1 Rate=1000 @@ -18812,8 +19007,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_97_DISPLAY_1] Window=6 -Index=206 -Color=11206570 +Index=209 +Color=16755455 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -18854,11 +19049,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_b902f2ca-a114-46ce-8896-526d0eb70311 +GUID=DISPLAY_770b4012-fe5a-4b30-9b99-15c24d7f5200 [MEASUREMENT_OBJECT_98] Module=xcp_demo -Name=getxattr +Name=gettid Disabled=0 Mode=1 Rate=1000 @@ -18873,8 +19068,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_98_DISPLAY_1] Window=6 -Index=205 -Color=65280 +Index=208 +Color=11184895 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -18915,11 +19110,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_ce5a66ec-0cb2-4935-b330-90d53f313d1f +GUID=DISPLAY_cded321a-9245-438a-a6f2-14eaced60ad0 [MEASUREMENT_OBJECT_99] Module=xcp_demo -Name=init_module +Name=gettimeofday Disabled=0 Mode=1 Rate=1000 @@ -18934,8 +19129,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_99_DISPLAY_1] Window=6 -Index=204 -Color=255 +Index=207 +Color=16755370 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -18976,12 +19171,12 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_11fdd9b0-5237-408c-9449-0867e1d21261 +GUID=DISPLAY_5aaa4b5a-a728-4aa0-9fb8-60550810c7ea [MEASUREMENT_OBJECT_9_DISPLAY_1] Window=6 -Index=294 -Color=16755455 +Index=297 +Color=8421631 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -19022,7 +19217,7 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_5ace000d-b269-4435-a4ac-71d952139440 +GUID=DISPLAY_aedd0bff-bfc2-4674-9dac-42013c2f47dd [MEASUREMENT_OPTIONS] RemainingRecordingTime=5000 @@ -19090,40 +19285,73 @@ VmdmDescription= Count=0 [Module_xcp_demo] -EVENT_COUNT=3 +EVENT_COUNT=6 EVENT_CHANNEL_0=0x0000 EVENT_CHANNEL_1=0x0001 EVENT_CHANNEL_2=0x0002 -EVENT_CYCLE_0=0 +EVENT_CHANNEL_3=0x0003 +EVENT_CHANNEL_4=0x0004 +EVENT_CHANNEL_5=0x0005 +EVENT_CYCLE_0=100 EVENT_CYCLE_1=0 EVENT_CYCLE_2=0 -EVENT_SAMPLE_UNIT_0=3 +EVENT_CYCLE_3=0 +EVENT_CYCLE_4=0 +EVENT_CYCLE_5=0 +EVENT_SAMPLE_UNIT_0=7 EVENT_SAMPLE_UNIT_1=3 EVENT_SAMPLE_UNIT_2=3 +EVENT_SAMPLE_UNIT_3=3 +EVENT_SAMPLE_UNIT_4=3 +EVENT_SAMPLE_UNIT_5=3 EVENT_MODE_0=4 EVENT_MODE_1=4 EVENT_MODE_2=4 +EVENT_MODE_3=4 +EVENT_MODE_4=4 +EVENT_MODE_5=4 EVENT_PRIO_0=0 EVENT_PRIO_1=0 EVENT_PRIO_2=0 +EVENT_PRIO_3=0 +EVENT_PRIO_4=0 +EVENT_PRIO_5=0 EVENT_MAX_DAQ_LIST_0=255 EVENT_MAX_DAQ_LIST_1=255 EVENT_MAX_DAQ_LIST_2=255 -EVENT_NAME_0=mainloop_event -EVENT_NAME_1=process_event -EVENT_NAME_2=syscall_event +EVENT_MAX_DAQ_LIST_3=255 +EVENT_MAX_DAQ_LIST_4=255 +EVENT_MAX_DAQ_LIST_5=255 +EVENT_NAME_0=async +EVENT_NAME_1=mainloop_event +EVENT_NAME_2=process_event +EVENT_NAME_3=syscall_event +EVENT_NAME_4=sendto +EVENT_NAME_5=recvfrom EVENT_MIN_CYCLE_TIME_CYCLE_0=0 EVENT_MIN_CYCLE_TIME_CYCLE_1=0 EVENT_MIN_CYCLE_TIME_CYCLE_2=0 +EVENT_MIN_CYCLE_TIME_CYCLE_3=0 +EVENT_MIN_CYCLE_TIME_CYCLE_4=0 +EVENT_MIN_CYCLE_TIME_CYCLE_5=0 EVENT_MIN_CYCLE_TIME_UNIT_0=9 EVENT_MIN_CYCLE_TIME_UNIT_1=9 EVENT_MIN_CYCLE_TIME_UNIT_2=9 +EVENT_MIN_CYCLE_TIME_UNIT_3=9 +EVENT_MIN_CYCLE_TIME_UNIT_4=9 +EVENT_MIN_CYCLE_TIME_UNIT_5=9 EVENT_MULTISAMPLES_0=0 EVENT_MULTISAMPLES_1=0 EVENT_MULTISAMPLES_2=0 +EVENT_MULTISAMPLES_3=0 +EVENT_MULTISAMPLES_4=0 +EVENT_MULTISAMPLES_5=0 EVENT_DPM_SUPPORTED_0=0 EVENT_DPM_SUPPORTED_1=0 EVENT_DPM_SUPPORTED_2=0 +EVENT_DPM_SUPPORTED_3=0 +EVENT_DPM_SUPPORTED_4=0 +EVENT_DPM_SUPPORTED_5=0 IGNORE_FIX_EVENTS=0 [OPTIONS] @@ -19133,7 +19361,7 @@ WindowSymbols=1 GlobalCursor=0 GlobalCursorTime=0 GlobalCursorTimeNs=0 -MainWindowPos=1, 69, 35, 3070, 2018 ;cmd, x, y, w, h +MainWindowPos=1, 22, 44, 3245, 1636 ;cmd, x, y, w, h [PAR_COMMENT] 1="Name","" @@ -19280,9 +19508,9 @@ Count=0 Count=0 [SIGNSELWND] -FocusID=2004 +FocusID=2002 ActiveTab=0 -FilterNodeID=All\Measurement list +FilterNodeID=All\Devices\xcp_demo TreeExpand_0=@All TreeExpand_1=All\Devices\xcp_demo\xcp_demo_autodetect.a2l TreeExpand_2=All\Devices\xcp_demo\xcp_demo_autodetect.a2l\Events @@ -19300,8 +19528,8 @@ TreeExpand_13=@All\Function definitions TreeExpand_14=$All\Function definitions\Library functions TreeExpand_15=#All\Function definitions\Library functions TreeExpand_16=@All\Measurement list -TreeExpand_17=$All\Measurement list\All signals\accept4 -TreeExpand_18=#All\Measurement list\All signals\arch_specific_syscall +TreeExpand_17=$All\Measurement list\All signals +TreeExpand_18=#All\Measurement list\All signals\clock_gettime TextSearchCaseSensitive=0 TextSearchUseMode=1 TextSearchSearchFullText=1 @@ -19331,10 +19559,10 @@ Comment=Write Window Number=1 GUID=WINDOW_fe488169-c951-4049-bc2f-8689c99a387e ScreenDPIinSection=192 -Position=0, 18, 1192, 2484, 400 ;cmd, x, y, w, h -Position_dpi96=0, 9, 596, 1242, 200 ;cmd, x, y, w, h -Position_Page01=0, 18, 1192, 2484, 400 ;cmd, x, y, w, h -Position_Page01_dpi96=0, 9, 596, 1242, 200 ;cmd, x, y, w, h +Position=0, 18, 1190, 2484, 300 ;cmd, x, y, w, h +Position_dpi96=0, 9, 595, 1242, 150 ;cmd, x, y, w, h +Position_Page01=0, 18, 1190, 2484, 300 ;cmd, x, y, w, h +Position_Page01_dpi96=0, 9, 595, 1242, 150 ;cmd, x, y, w, h FloatingWindow=0 ShowSignalComments=1 DisplayMask=1 ; pages 1 @@ -19344,7 +19572,7 @@ ProgID=CNPTRACE.TraceCtrl.1 PROPERTIES_COUNT=22 PROPERTY_1=DeviceItems={"CaptureEvents":"1","ShowEvents":"0","NodeCount":"1","Node0":{"DeviceName":"xcp_demo","CaptureEvents":"1","ShowEvents":"1","NodeCount":"3","Node0":{"Channel":"2","DisplayColor":{"Color":"0","UseColor":"false"},"CaptureEvents":"1","ShowEvents":"1","NodeCount":"0"},"Node1":{"Channel":"3","DisplayColor":{"Color":"0","UseColor":"false"},"CaptureEvents":"1","ShowEvents":"1","NodeCount":"0"},"Node2":{"Channel":"4","DisplayColor":{"Color":"0","UseColor":"false"},"CaptureEvents":"1","ShowEvents":"1","NodeCount":"0"}}} PROPERTY_2=NetworkItems={"Items":"0"} -PROPERTY_3=ColumnConfigs={"ConfigCount":"2","Config0":{"Layout":"1","Name":"Initial","Column0":{"Width":"210","Position":"0","Name":"Time","IsDefaultName":"1"},"Column1":{"Width":"120","Position":"1","Name":"Channel","IsDefaultName":"1"},"Column2":{"Width":"60","Position":"2","Name":"ID","IsDefaultName":"1"},"Column3":{"Width":"90","Position":"3","Name":"Name","IsDefaultName":"1"},"Column5":{"Width":"60","Position":"5","Name":"Dir","IsDefaultName":"1"},"Column6":{"Width":"100","Position":"6","Name":"Length","IsDefaultName":"1"},"Column7":{"Width":"320","Position":"7","Name":"Data","IsDefaultName":"1"},"Column16":{"Width":"150","Position":"4","Name":"Type","IsDefaultName":"1"},"Column52":{"Width":"300","Position":"8","Name":"Protocol Interpretation","IsDefaultName":"1"}},"Config1":{"Layout":"25","Name":"XCP\/CCP Layout 1","Column0":{"Width":"260","Position":"0","Name":"Time","IsDefaultName":"1"},"Column1":{"Width":"150","Position":"6","Name":"Channel","IsDefaultName":"1"},"Column2":{"Width":"100","Position":"7","Name":"ID","IsDefaultName":"1"},"Column3":{"Width":"100","Position":"1","Name":"Name","IsDefaultName":"1"},"Column5":{"Width":"72","Position":"2","Name":"Dir","IsDefaultName":"1"},"Column6":{"Width":"100","Position":"3","Name":"Length","IsDefaultName":"1"},"Column7":{"Width":"3600","Position":"5","Name":"Data","IsDefaultName":"1"},"Column16":{"Width":"100","Position":"9","Name":"Packet Type","IsDefaultName":"1"},"Column52":{"Width":"3600","Position":"4","Name":"Interpretation","IsDefaultName":"1"},"Column79":{"Width":"100","Position":"8","Name":"Source","IsDefaultName":"1"}},"Active":"1","ActiveLayout":"25"} +PROPERTY_3=ColumnConfigs={"ConfigCount":"2","Config0":{"Layout":"1","Name":"Initial","Column0":{"Width":"210","Position":"0","Name":"Time","IsDefaultName":"1"},"Column1":{"Width":"120","Position":"1","Name":"Channel","IsDefaultName":"1"},"Column2":{"Width":"60","Position":"2","Name":"ID","IsDefaultName":"1"},"Column3":{"Width":"90","Position":"3","Name":"Name","IsDefaultName":"1"},"Column5":{"Width":"60","Position":"5","Name":"Dir","IsDefaultName":"1"},"Column6":{"Width":"100","Position":"6","Name":"Length","IsDefaultName":"1"},"Column7":{"Width":"320","Position":"7","Name":"Data","IsDefaultName":"1"},"Column16":{"Width":"150","Position":"4","Name":"Type","IsDefaultName":"1"},"Column52":{"Width":"300","Position":"8","Name":"Protocol Interpretation","IsDefaultName":"1"}},"Config1":{"Layout":"25","Name":"XCP\/CCP Layout 1","Column0":{"Width":"260","Position":"0","Name":"Time","IsDefaultName":"1"},"Column1":{"Width":"150","Position":"6","Name":"Channel","IsDefaultName":"1"},"Column2":{"Width":"100","Position":"7","Name":"ID","IsDefaultName":"1"},"Column3":{"Width":"100","Position":"1","Name":"Name","IsDefaultName":"1"},"Column5":{"Width":"72","Position":"2","Name":"Dir","IsDefaultName":"1"},"Column6":{"Width":"100","Position":"3","Name":"Length","IsDefaultName":"1"},"Column7":{"Width":"2450","Position":"5","Name":"Data","IsDefaultName":"1"},"Column16":{"Width":"100","Position":"9","Name":"Packet Type","IsDefaultName":"1"},"Column52":{"Width":"2450","Position":"4","Name":"Interpretation","IsDefaultName":"1"},"Column79":{"Width":"100","Position":"8","Name":"Source","IsDefaultName":"1"}},"Active":"1","ActiveLayout":"25"} PROPERTY_4=PinningEvents={"EventCount":"0"} PROPERTY_5=ExpandedEvents={"EventCount":"0"} PROPERTY_6=AnalysisGroups={"GroupCount":"1","Group0":{"Enabled":"1","Expanded":"1","Name":"Filter Group 0","FilterCount":"2","Filter0":{"Stop":"1","Enabled":"1","ConditionCount":"0"},"Filter1":{"Stop":"0","Enabled":"0","ConditionCount":"0"}}} @@ -19373,8 +19601,8 @@ Column_0=0, 260 Column_1=4, 100 Column_2=1, 72 Column_3=2, 100 -Column_4=513, 3600 -Column_5=3, 3600 +Column_4=513, 2450 +Column_5=3, 2450 Column_6=256, 150 Column_7=257, 100 Column_8=5, 100 @@ -19407,34 +19635,34 @@ CustomColorFlag=0 Color=0 [WINDOW_3] -ComponentCount=1 +ComponentCount=2 Title= Type=65536 Comment=Multi view window Number=3 GUID=WINDOW_4ba98e44-d13f-4d6f-a877-42d6fa18dbae ScreenDPIinSection=192 -Position=0, 872, 0, 1616, 644 ;cmd, x, y, w, h -Position_dpi96=0, 436, 0, 808, 322 ;cmd, x, y, w, h -Position_Page01=0, 872, 0, 1616, 644 ;cmd, x, y, w, h -Position_Page01_dpi96=0, 436, 0, 808, 322 ;cmd, x, y, w, h +Position=0, 624, 10, 2070, 938 ;cmd, x, y, w, h +Position_dpi96=0, 312, 5, 1035, 469 ;cmd, x, y, w, h +Position_Page01=0, 624, 10, 2070, 938 ;cmd, x, y, w, h +Position_Page01_dpi96=0, 312, 5, 1035, 469 ;cmd, x, y, w, h FloatingWindow=0 ShowSignalComments=1 DisplayMask=1 ; pages 1 [WINDOW_4] -XLen=140562 -XMin=0 -XMinNs=0 -XMax=11273 -XMaxNs=11273682182 +XLen=25018 +XMin=-93 +XMinNs=-93525969 +XMax=356342 +XMaxNs=356342781895 Grid=1 Mark=1 YValue=2 ShowLegend=2 ShowLegendHeader=1 -LegendPixWidth=264 -LegendPixWidth_dpi96=132 +LegendPixWidth=358 +LegendPixWidth_dpi96=179 LegendPixHeight=196 LegendPixHeight_dpi96=98 LegendPos=2 @@ -19450,7 +19678,7 @@ YAxisWidth_dpi96=113 RightYAxisWidth=0 RightYAxisWidth_dpi96=0 ObjectMode=1 -DisplayMode=2 +DisplayMode=1 ShowSignalMode=0 AxisScrollPos2=0 LegendScrollPos=0 @@ -19461,8 +19689,8 @@ YAxisDynScaleEnabled=0 YAxisDynScaleEnlarge=25 TimeStickToZero=0 XYModeRedrawEnabled=0 -MARKER_TIME_1=18343880350 -MARKER_TIME_2=18348626544 +MARKER_TIME_1=92682017805 +MARKER_TIME_2=188275816027 OscilloscopeEnabled=0 OsciEventCount=0 EventCompareModeEnabled=0 @@ -19481,7 +19709,7 @@ FloatingWindow=0 JointIndex=3 ShowSignalComments=1 ComponentOrder=0 -ComponentSpace=100 +ComponentSpace=50 LEGEND_HSCROLL_POS=0 LEGEND_SHARED_COLUMNS=1 TimeAxisTemplate= @@ -19489,9 +19717,11 @@ DisplayMask=1 ; pages 1 [WINDOW_4_LEG_COLUMNS] ScreenDPIinSection=192 -COUNT=1 -COL_0=31, 264 -COL_0_dpi96=31, 132 +COUNT=2 +COL_0=31, 216 +COL_0_dpi96=31, 108 +COL_1=1048578, 130 +COL_1_dpi96=1048578, 65 [WINDOW_5] ScaleFont=1 @@ -19516,10 +19746,10 @@ Comment=Numeric Window Number=5 GUID=WINDOW_f8fb5041-5d5b-4f5c-86f1-e7798564f3fe ScreenDPIinSection=192 -Position=0, 874, 664, 1040, 210 ;cmd, x, y, w, h -Position_dpi96=0, 437, 332, 520, 105 ;cmd, x, y, w, h -Position_Page01=0, 874, 664, 1040, 210 ;cmd, x, y, w, h -Position_Page01_dpi96=0, 437, 332, 520, 105 ;cmd, x, y, w, h +Position=0, 616, 966, 1040, 210 ;cmd, x, y, w, h +Position_dpi96=0, 308, 483, 520, 105 ;cmd, x, y, w, h +Position_Page01=0, 616, 966, 1040, 210 ;cmd, x, y, w, h +Position_Page01_dpi96=0, 308, 483, 520, 105 ;cmd, x, y, w, h FloatingWindow=0 ShowSignalComments=1 LEGEND_HSCROLL_POS=0 @@ -19536,8 +19766,8 @@ COL_0_dpi96=31, 184 ScaleFont=1 ShowLegend=1 ShowLegendHeader=0 -LegendPixWidth=412 -LegendPixWidth_dpi96=206 +LegendPixWidth=350 +LegendPixWidth_dpi96=175 GridStyle=0 DisplayColors=1 LegendFont=0 @@ -19547,7 +19777,7 @@ ShowActivity=0 ExceedLimitWarning=0 OnlyHighlightOnViolation=0 LegendScrollPos=0 -DotLinePos=120 +DotLinePos=65 ObjectCount=0 Title=Numeric {DISPLAYED_FILENAME} Type=4 @@ -19555,10 +19785,10 @@ Comment=Numeric Window Number=6 GUID=WINDOW_6b404c67-6a8e-4df9-8edc-ddba0377b6a4 ScreenDPIinSection=192 -Position=0, 18, 0, 830, 1166 ;cmd, x, y, w, h -Position_dpi96=0, 9, 0, 415, 583 ;cmd, x, y, w, h -Position_Page01=0, 18, 0, 830, 1166 ;cmd, x, y, w, h -Position_Page01_dpi96=0, 9, 0, 415, 583 ;cmd, x, y, w, h +Position=0, 18, 10, 586, 1166 ;cmd, x, y, w, h +Position_dpi96=0, 9, 5, 293, 583 ;cmd, x, y, w, h +Position_Page01=0, 18, 10, 586, 1166 ;cmd, x, y, w, h +Position_Page01_dpi96=0, 9, 5, 293, 583 ;cmd, x, y, w, h FloatingWindow=0 ShowSignalComments=1 LEGEND_HSCROLL_POS=0 @@ -19568,15 +19798,88 @@ DisplayMask=1 ; pages 1 [WINDOW_6_LEG_COLUMNS] ScreenDPIinSection=192 COUNT=1 -COL_0=31, 378 -COL_0_dpi96=31, 189 +COL_0=31, 316 +COL_0_dpi96=31, 158 + +[WINDOW_7] +XLen=25018 +XMin=-93 +XMinNs=-93525969 +XMax=356342 +XMaxNs=356342781895 +Grid=1 +Mark=1 +YValue=1 +ShowLegend=2 +ShowLegendHeader=1 +LegendPixWidth=358 +LegendPixWidth_dpi96=179 +LegendPixHeight=196 +LegendPixHeight_dpi96=98 +LegendPos=2 +Optimize=1 +Average=0 +ShowMinMax=1 +XYModeIndexP1=-1 +DisplayModeAuto=0 +XStart=0 +AbsoluteTimeMode=0 +YAxisWidth=226 +YAxisWidth_dpi96=113 +RightYAxisWidth=0 +RightYAxisWidth_dpi96=0 +ObjectMode=0 +DisplayMode=1 +ShowSignalMode=0 +AxisScrollPos2=0 +LegendScrollPos=0 +LegendShowLifeValues=1 +ShowXScrollbar=1 +ShowWholeTimeRange=0 +YAxisDynScaleEnabled=0 +YAxisDynScaleEnlarge=25 +TimeStickToZero=0 +XYModeRedrawEnabled=0 +MARKER_TIME_1=92682017805 +MARKER_TIME_2=188275816027 +OscilloscopeEnabled=0 +OsciEventCount=0 +EventCompareModeEnabled=0 +ObjectCount=0 +Title=Graphic {DISPLAYED_FILENAME} +Type=1 +Comment=Graphic Window +Number=7 +GUID=WINDOW_f2ab20d9-7478-48e7-876b-2cf9aff59539 +ScreenDPIinSection=192 +Position=0, 75, 75, 1000, 400 ;cmd, x, y, w, h +Position_dpi96=0, 38, 38, 500, 200 ;cmd, x, y, w, h +Position_Page01=0, 75, 75, 1000, 400 ;cmd, x, y, w, h +Position_Page01_dpi96=0, 38, 38, 500, 200 ;cmd, x, y, w, h +FloatingWindow=0 +JointIndex=3 +ShowSignalComments=1 +ComponentOrder=1 +ComponentSpace=50 +LEGEND_HSCROLL_POS=0 +LEGEND_SHARED_COLUMNS=1 +TimeAxisTemplate= +DisplayMask=1 ; pages 1 + +[WINDOW_7_LEG_COLUMNS] +ScreenDPIinSection=192 +COUNT=2 +COL_0=31, 216 +COL_0_dpi96=31, 108 +COL_1=1048578, 130 +COL_1_dpi96=1048578, 65 [WINDOWS] -Count=6 +Count=7 [Y_COMMON_AXIS_1] YMin=0 -YMax=0.05 +YMax=0.2 ValueFormat=3 AxisTemplate= LockScaling=0 @@ -19585,7 +19888,7 @@ Comment= Color=65280 Name=Dt YMin-Home=0 -YMax-Home=0.05 +YMax-Home=0.2 DisplayOnlyComment=0 XAxisGroup=0 diff --git a/examples/bpf_demo/CANape/xcp_demo_autodetect.a2l b/examples/bpf_demo/CANape/xcp_demo_autodetect.a2l new file mode 100644 index 00000000..f09233a1 --- /dev/null +++ b/examples/bpf_demo/CANape/xcp_demo_autodetect.a2l @@ -0,0 +1,464 @@ +ASAP2_VERSION 1 71 +/begin PROJECT bpf_demo "" + +/begin HEADER "" VERSION "1.0" PROJECT_NO XCPLITE__CASDD /end HEADER + +/begin MODULE bpf_demo "" + +/include "XCP_104.aml" + +/begin MOD_COMMON "" +BYTE_ORDER MSB_LAST +ALIGNMENT_BYTE 1 +ALIGNMENT_WORD 1 +ALIGNMENT_LONG 1 +ALIGNMENT_FLOAT16_IEEE 1 +ALIGNMENT_FLOAT32_IEEE 1 +ALIGNMENT_FLOAT64_IEEE 1 +ALIGNMENT_INT64 1 +/end MOD_COMMON + + + +/* Absolute addressing mode: default_event=mainloop_event (1), addr_ext=1 */ +/begin MEASUREMENT syscall_count "Total tracked syscalls count" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41C58 ECU_ADDRESS_EXTENSION 1 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT VARIABLE /begin DEFAULT_EVENT_LIST EVENT 0x1 /end DEFAULT_EVENT_LIST /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT syscall_rate "Total tracked syscalls per second" ULONG NO_COMPU_METHOD 0 0 0 2000 ECU_ADDRESS 0x41C68 ECU_ADDRESS_EXTENSION 1 PHYS_UNIT "1/s" READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT VARIABLE /begin DEFAULT_EVENT_LIST EVENT 0x1 /end DEFAULT_EVENT_LIST /end DAQ_EVENT /end IF_DATA /end MEASUREMENT + +/* Absolute addressing mode: default_event=process_event (2), addr_ext=1 */ +/begin MEASUREMENT new_process_pid "New process PID" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41C78 ECU_ADDRESS_EXTENSION 1 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT VARIABLE /begin DEFAULT_EVENT_LIST EVENT 0x2 /end DEFAULT_EVENT_LIST /end DAQ_EVENT /end IF_DATA /end MEASUREMENT + +/* Absolute addressing mode: default_event=syscall_event (3), addr_ext=1 */ +/begin MEASUREMENT syscall_nr "Current syscall number" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41C5C ECU_ADDRESS_EXTENSION 1 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT VARIABLE /begin DEFAULT_EVENT_LIST EVENT 0x3 /end DEFAULT_EVENT_LIST /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT syscall_pid "Syscall PID" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41C60 ECU_ADDRESS_EXTENSION 1 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT VARIABLE /begin DEFAULT_EVENT_LIST EVENT 0x3 /end DEFAULT_EVENT_LIST /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT io_setup "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41178 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT io_destroy "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x4117C ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT io_submit "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41180 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT io_cancel "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41184 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT io_getevents "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41188 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT setxattr "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x4118C ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT lsetxattr "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41190 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT fsetxattr "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41194 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT getxattr "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41198 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT lgetxattr "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x4119C ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT fgetxattr "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x411A0 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT listxattr "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x411A4 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT llistxattr "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x411A8 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT flistxattr "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x411AC ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT removexattr "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x411B0 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT lremovexattr "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x411B4 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT fremovexattr "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x411B8 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT getcwd "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x411BC ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT lookup_dcookie "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x411C0 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT eventfd2 "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x411C4 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT epoll_create1 "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x411C8 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT epoll_ctl "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x411CC ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT epoll_pwait "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x411D0 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT dup "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x411D4 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT dup3 "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x411D8 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT fcntl "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x411DC ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT inotify_init1 "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x411E0 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT inotify_add_watch "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x411E4 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT inotify_rm_watch "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x411E8 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT ioctl "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x411EC ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT ioprio_set "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x411F0 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT ioprio_get "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x411F4 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT flock "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x411F8 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT mknodat "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x411FC ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT mkdirat "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41200 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT unlinkat "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41204 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT symlinkat "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41208 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT linkat "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x4120C ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT renameat "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41210 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT umount2 "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41214 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT mount "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41218 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT pivot_root "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x4121C ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT nfsservctl "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41220 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT statfs "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41224 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT fstatfs "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41228 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT truncate "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x4122C ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT ftruncate "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41230 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT fallocate "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41234 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT faccessat "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41238 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT chdir "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x4123C ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT fchdir "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41240 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT chroot "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41244 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT fchmod "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41248 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT fchmodat "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x4124C ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT fchownat "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41250 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT fchown "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41254 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT openat "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41258 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT close "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x4125C ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT vhangup "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41260 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT pipe2 "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41264 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT quotactl "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41268 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT getdents64 "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x4126C ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT lseek "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41270 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT read "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41274 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT write "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41278 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT readv "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x4127C ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT writev "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41280 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT pread64 "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41284 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT pwrite64 "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41288 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT preadv "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x4128C ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT pwritev "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41290 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT sendfile "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41294 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT pselect6 "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41298 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT ppoll "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x4129C ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT signalfd4 "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x412A0 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT vmsplice "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x412A4 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT splice "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x412A8 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT tee "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x412AC ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT readlinkat "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x412B0 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT fstatat "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x412B4 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT fstat "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x412B8 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT sync "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x412BC ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT fsync "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x412C0 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT fdatasync "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x412C4 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT sync_file_range "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x412C8 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT timerfd_create "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x412CC ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT timerfd_settime "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x412D0 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT timerfd_gettime "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x412D4 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT utimensat "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x412D8 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT acct "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x412DC ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT capget "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x412E0 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT capset "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x412E4 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT personality "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x412E8 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT exit "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x412EC ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT exit_group "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x412F0 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT waitid "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x412F4 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT set_tid_address "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x412F8 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT unshare "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x412FC ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT futex "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41300 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT set_robust_list "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41304 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT get_robust_list "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41308 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT nanosleep "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x4130C ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT getitimer "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41310 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT setitimer "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41314 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT kexec_load "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41318 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT init_module "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x4131C ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT delete_module "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41320 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT timer_create "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41324 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT timer_gettime "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41328 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT timer_getoverrun "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x4132C ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT timer_settime "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41330 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT timer_delete "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41334 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT clock_settime "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41338 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT clock_gettime "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x4133C ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT clock_getres "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41340 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT clock_nanosleep "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41344 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT syslog "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41348 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT ptrace "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x4134C ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT sched_setparam "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41350 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT sched_setscheduler "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41354 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT sched_getscheduler "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41358 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT sched_getparam "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x4135C ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT sched_setaffinity "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41360 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT sched_getaffinity "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41364 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT sched_yield "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41368 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT sched_get_priority_max "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x4136C ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT sched_get_priority_min "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41370 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT sched_rr_get_interval "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41374 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT restart_syscall "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41378 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT kill "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x4137C ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT tkill "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41380 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT tgkill "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41384 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT sigaltstack "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41388 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT rt_sigsuspend "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x4138C ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT rt_sigaction "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41390 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT rt_sigprocmask "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41394 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT rt_sigpending "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41398 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT rt_sigtimedwait "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x4139C ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT rt_sigqueueinfo "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x413A0 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT rt_sigreturn "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x413A4 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT setpriority "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x413A8 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT getpriority "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x413AC ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT reboot "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x413B0 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT setregid "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x413B4 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT setgid "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x413B8 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT setreuid "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x413BC ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT setuid "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x413C0 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT setresuid "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x413C4 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT getresuid "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x413C8 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT setresgid "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x413CC ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT getresgid "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x413D0 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT setfsuid "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x413D4 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT setfsgid "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x413D8 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT times "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x413DC ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT setpgid "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x413E0 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT getpgid "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x413E4 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT getsid "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x413E8 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT setsid "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x413EC ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT getgroups "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x413F0 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT setgroups "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x413F4 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT uname "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x413F8 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT sethostname "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x413FC ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT setdomainname "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41400 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT getrlimit "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41404 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT setrlimit "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41408 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT getrusage "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x4140C ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT umask "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41410 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT prctl "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41414 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT getcpu "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41418 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT gettimeofday "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x4141C ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT settimeofday "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41420 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT adjtimex "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41424 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT getpid "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41428 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT getppid "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x4142C ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT getuid "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41430 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT geteuid "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41434 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT getgid "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41438 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT getegid "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x4143C ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT gettid "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41440 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT sysinfo "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41444 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT mq_open "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41448 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT mq_unlink "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x4144C ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT mq_timedsend "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41450 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT mq_timedreceive "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41454 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT mq_notify "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41458 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT mq_getsetattr "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x4145C ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT msgget "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41460 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT msgctl "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41464 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT msgrcv "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41468 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT msgsnd "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x4146C ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT semget "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41470 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT semctl "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41474 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT semtimedop "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41478 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT semop "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x4147C ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT shmget "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41480 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT shmctl "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41484 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT shmat "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41488 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT shmdt "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x4148C ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT socket "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41490 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT socketpair "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41494 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT bind "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41498 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT listen "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x4149C ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT accept "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x414A0 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT connect "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x414A4 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT getsockname "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x414A8 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT getpeername "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x414AC ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT sendto "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x414B0 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT recvfrom "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x414B4 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT setsockopt "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x414B8 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT getsockopt "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x414BC ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT shutdown "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x414C0 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT sendmsg "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x414C4 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT recvmsg "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x414C8 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT readahead "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x414CC ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT brk "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x414D0 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT munmap "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x414D4 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT mremap "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x414D8 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT add_key "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x414DC ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT request_key "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x414E0 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT keyctl "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x414E4 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT clone "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x414E8 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT execve "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x414EC ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT mmap "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x414F0 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT fadvise64 "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x414F4 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT swapon "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x414F8 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT swapoff "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x414FC ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT mprotect "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41500 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT msync "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41504 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT mlock "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41508 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT munlock "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x4150C ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT mlockall "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41510 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT munlockall "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41514 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT mincore "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41518 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT madvise "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x4151C ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT remap_file_pages "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41520 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT mbind "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41524 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT get_mempolicy "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41528 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT set_mempolicy "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x4152C ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT migrate_pages "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41530 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT move_pages "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41534 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT rt_tgsigqueueinfo "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41538 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT perf_event_open "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x4153C ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT accept4 "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41540 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT recvmmsg "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41544 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT arch_specific_syscall "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41548 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT wait4 "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41588 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT renameat2 "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x415C8 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT seccomp "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x415CC ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT getrandom "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x415D0 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT memfd_create "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x415D4 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT bpf "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x415D8 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT execveat "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x415DC ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT userfaultfd "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x415E0 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT membarrier "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x415E4 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT mlock2 "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x415E8 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT copy_file_range "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x415EC ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT preadv2 "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x415F0 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT pwritev2 "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x415F4 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT pkey_mprotect "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x415F8 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT pkey_alloc "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x415FC ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT pkey_free "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41600 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT statx "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41604 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT io_pgetevents "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41608 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT rseq "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x4160C ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT kexec_file_load "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41610 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT pidfd_send_signal "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41818 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT io_uring_setup "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x4181C ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT io_uring_enter "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41820 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT io_uring_register "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41824 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT open_tree "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41828 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT move_mount "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x4182C ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT fsopen "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41830 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT fsconfig "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41834 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT fsmount "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41838 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT fspick "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x4183C ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT pidfd_open "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41840 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT clone3 "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41844 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT close_range "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41848 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT openat2 "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x4184C ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT pidfd_getfd "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41850 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT faccessat2 "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41854 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT process_madvise "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41858 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT epoll_pwait2 "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x4185C ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT mount_setattr "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41860 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT quotactl_fd "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41864 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT landlock_create_ruleset "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41868 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT landlock_add_rule "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x4186C ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT landlock_restrict_self "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41870 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT memfd_secret "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41874 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT process_mrelease "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41878 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT futex_waitv "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x4187C ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT set_mempolicy_home_node "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41880 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT cachestat "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41884 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT fchmodat2 "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41888 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT map_shadow_stack "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x4188C ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT futex_wake "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41890 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT futex_wait "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41894 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT futex_requeue "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x41898 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT statmount "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x4189C ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT listmount "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x418A0 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT lsm_get_self_attr "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x418A4 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT lsm_set_self_attr "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x418A8 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT lsm_list_modules "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x418AC ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT +/begin MEASUREMENT mseal "" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x418B0 ECU_ADDRESS_EXTENSION 1 READ_WRITE /end MEASUREMENT + +/* Typedefs */ +/begin RECORD_LAYOUT U8 FNC_VALUES 1 UBYTE ROW_DIR DIRECT /end RECORD_LAYOUT +/begin RECORD_LAYOUT A_U8 AXIS_PTS_X 1 UBYTE INDEX_INCR DIRECT /end RECORD_LAYOUT +/begin TYPEDEF_MEASUREMENT M_U8 "" UBYTE NO_COMPU_METHOD 0 0 0 255 /end TYPEDEF_MEASUREMENT +/begin TYPEDEF_CHARACTERISTIC C_U8 "" VALUE U8 0 NO_COMPU_METHOD 0 255 /end TYPEDEF_CHARACTERISTIC +/begin RECORD_LAYOUT U16 FNC_VALUES 1 UWORD ROW_DIR DIRECT /end RECORD_LAYOUT +/begin RECORD_LAYOUT A_U16 AXIS_PTS_X 1 UWORD INDEX_INCR DIRECT /end RECORD_LAYOUT +/begin TYPEDEF_MEASUREMENT M_U16 "" UWORD NO_COMPU_METHOD 0 0 0 65535 /end TYPEDEF_MEASUREMENT +/begin TYPEDEF_CHARACTERISTIC C_U16 "" VALUE U16 0 NO_COMPU_METHOD 0 65535 /end TYPEDEF_CHARACTERISTIC +/begin RECORD_LAYOUT U32 FNC_VALUES 1 ULONG ROW_DIR DIRECT /end RECORD_LAYOUT +/begin RECORD_LAYOUT A_U32 AXIS_PTS_X 1 ULONG INDEX_INCR DIRECT /end RECORD_LAYOUT +/begin TYPEDEF_MEASUREMENT M_U32 "" ULONG NO_COMPU_METHOD 0 0 0 4294967295 /end TYPEDEF_MEASUREMENT +/begin TYPEDEF_CHARACTERISTIC C_U32 "" VALUE U32 0 NO_COMPU_METHOD 0 4.29497e+09 /end TYPEDEF_CHARACTERISTIC +/begin RECORD_LAYOUT U64 FNC_VALUES 1 A_UINT64 ROW_DIR DIRECT /end RECORD_LAYOUT +/begin RECORD_LAYOUT A_U64 AXIS_PTS_X 1 A_UINT64 INDEX_INCR DIRECT /end RECORD_LAYOUT +/begin TYPEDEF_MEASUREMENT M_U64 "" A_UINT64 NO_COMPU_METHOD 0 0 0 1000000000000 /end TYPEDEF_MEASUREMENT +/begin TYPEDEF_CHARACTERISTIC C_U64 "" VALUE U64 0 NO_COMPU_METHOD 0 1e+12 /end TYPEDEF_CHARACTERISTIC +/begin RECORD_LAYOUT I8 FNC_VALUES 1 SBYTE ROW_DIR DIRECT /end RECORD_LAYOUT +/begin RECORD_LAYOUT A_I8 AXIS_PTS_X 1 SBYTE INDEX_INCR DIRECT /end RECORD_LAYOUT +/begin TYPEDEF_MEASUREMENT M_I8 "" SBYTE NO_COMPU_METHOD 0 0 -128 127 /end TYPEDEF_MEASUREMENT +/begin TYPEDEF_CHARACTERISTIC C_I8 "" VALUE I8 0 NO_COMPU_METHOD -128 127 /end TYPEDEF_CHARACTERISTIC +/begin RECORD_LAYOUT I16 FNC_VALUES 1 SWORD ROW_DIR DIRECT /end RECORD_LAYOUT +/begin RECORD_LAYOUT A_I16 AXIS_PTS_X 1 SWORD INDEX_INCR DIRECT /end RECORD_LAYOUT +/begin TYPEDEF_MEASUREMENT M_I16 "" SWORD NO_COMPU_METHOD 0 0 -32768 32767 /end TYPEDEF_MEASUREMENT +/begin TYPEDEF_CHARACTERISTIC C_I16 "" VALUE I16 0 NO_COMPU_METHOD -32768 32767 /end TYPEDEF_CHARACTERISTIC +/begin RECORD_LAYOUT I32 FNC_VALUES 1 SLONG ROW_DIR DIRECT /end RECORD_LAYOUT +/begin RECORD_LAYOUT A_I32 AXIS_PTS_X 1 SLONG INDEX_INCR DIRECT /end RECORD_LAYOUT +/begin TYPEDEF_MEASUREMENT M_I32 "" SLONG NO_COMPU_METHOD 0 0 -2147483648 2147483647 /end TYPEDEF_MEASUREMENT +/begin TYPEDEF_CHARACTERISTIC C_I32 "" VALUE I32 0 NO_COMPU_METHOD -2.14748e+09 2.14748e+09 /end TYPEDEF_CHARACTERISTIC +/begin RECORD_LAYOUT I64 FNC_VALUES 1 A_INT64 ROW_DIR DIRECT /end RECORD_LAYOUT +/begin RECORD_LAYOUT A_I64 AXIS_PTS_X 1 A_INT64 INDEX_INCR DIRECT /end RECORD_LAYOUT +/begin TYPEDEF_MEASUREMENT M_I64 "" A_INT64 NO_COMPU_METHOD 0 0 -1000000000000 1000000000000 /end TYPEDEF_MEASUREMENT +/begin TYPEDEF_CHARACTERISTIC C_I64 "" VALUE I64 0 NO_COMPU_METHOD -1e+12 1e+12 /end TYPEDEF_CHARACTERISTIC +/begin RECORD_LAYOUT F32 FNC_VALUES 1 FLOAT32_IEEE ROW_DIR DIRECT /end RECORD_LAYOUT +/begin RECORD_LAYOUT A_F32 AXIS_PTS_X 1 FLOAT32_IEEE INDEX_INCR DIRECT /end RECORD_LAYOUT +/begin TYPEDEF_MEASUREMENT M_F32 "" FLOAT32_IEEE NO_COMPU_METHOD 0 0 -1e+12 1e+12 /end TYPEDEF_MEASUREMENT +/begin TYPEDEF_CHARACTERISTIC C_F32 "" VALUE F32 0 NO_COMPU_METHOD -1e+12 1e+12 /end TYPEDEF_CHARACTERISTIC +/begin RECORD_LAYOUT F64 FNC_VALUES 1 FLOAT64_IEEE ROW_DIR DIRECT /end RECORD_LAYOUT +/begin RECORD_LAYOUT A_F64 AXIS_PTS_X 1 FLOAT64_IEEE INDEX_INCR DIRECT /end RECORD_LAYOUT +/begin TYPEDEF_MEASUREMENT M_F64 "" FLOAT64_IEEE NO_COMPU_METHOD 0 0 -1e+12 1e+12 /end TYPEDEF_MEASUREMENT +/begin TYPEDEF_CHARACTERISTIC C_F64 "" VALUE F64 0 NO_COMPU_METHOD -1e+12 1e+12 /end TYPEDEF_CHARACTERISTIC + + +/* Groups */ +/begin GROUP mainloop_event "Measurement event group" /begin REF_MEASUREMENT syscall_count syscall_rate /end REF_MEASUREMENT /end GROUP +/begin GROUP process_event "Measurement event group" /begin REF_MEASUREMENT new_process_pid /end REF_MEASUREMENT /end GROUP +/begin GROUP syscall_event "Measurement event group" /begin REF_MEASUREMENT syscall_nr syscall_pid io_setup io_destroy io_submit io_cancel io_getevents setxattr lsetxattr fsetxattr getxattr lgetxattr fgetxattr listxattr llistxattr flistxattr removexattr lremovexattr fremovexattr getcwd lookup_dcookie eventfd2 epoll_create1 epoll_ctl epoll_pwait dup dup3 fcntl inotify_init1 inotify_add_watch inotify_rm_watch ioctl ioprio_set ioprio_get flock mknodat mkdirat unlinkat symlinkat linkat renameat umount2 mount pivot_root nfsservctl statfs fstatfs truncate ftruncate fallocate faccessat chdir fchdir chroot fchmod fchmodat fchownat fchown openat close vhangup pipe2 quotactl getdents64 lseek read write readv writev pread64 pwrite64 preadv pwritev sendfile pselect6 ppoll signalfd4 vmsplice splice tee readlinkat fstatat fstat sync fsync fdatasync sync_file_range timerfd_create timerfd_settime timerfd_gettime utimensat acct capget capset personality exit exit_group waitid set_tid_address unshare futex set_robust_list get_robust_list nanosleep getitimer setitimer kexec_load init_module delete_module timer_create timer_gettime timer_getoverrun timer_settime timer_delete clock_settime clock_gettime clock_getres clock_nanosleep syslog ptrace sched_setparam sched_setscheduler sched_getscheduler sched_getparam sched_setaffinity sched_getaffinity sched_yield sched_get_priority_max sched_get_priority_min sched_rr_get_interval restart_syscall kill tkill tgkill sigaltstack rt_sigsuspend rt_sigaction rt_sigprocmask rt_sigpending rt_sigtimedwait rt_sigqueueinfo rt_sigreturn setpriority getpriority reboot setregid setgid setreuid setuid setresuid getresuid setresgid getresgid setfsuid setfsgid times setpgid getpgid getsid setsid getgroups setgroups uname sethostname setdomainname getrlimit setrlimit getrusage umask prctl getcpu gettimeofday settimeofday adjtimex getpid getppid getuid geteuid getgid getegid gettid sysinfo mq_open mq_unlink mq_timedsend mq_timedreceive mq_notify mq_getsetattr msgget msgctl msgrcv msgsnd semget semctl semtimedop semop shmget shmctl shmat shmdt socket socketpair bind listen accept connect getsockname getpeername sendto recvfrom setsockopt getsockopt shutdown sendmsg recvmsg readahead brk munmap mremap add_key request_key keyctl clone execve mmap fadvise64 swapon swapoff mprotect msync mlock munlock mlockall munlockall mincore madvise remap_file_pages mbind get_mempolicy set_mempolicy migrate_pages move_pages rt_tgsigqueueinfo perf_event_open accept4 recvmmsg arch_specific_syscall wait4 renameat2 seccomp getrandom memfd_create bpf execveat userfaultfd membarrier mlock2 copy_file_range preadv2 pwritev2 pkey_mprotect pkey_alloc pkey_free statx io_pgetevents rseq kexec_file_load pidfd_send_signal io_uring_setup io_uring_enter io_uring_register open_tree move_mount fsopen fsconfig fsmount fspick pidfd_open clone3 close_range openat2 pidfd_getfd faccessat2 process_madvise epoll_pwait2 mount_setattr quotactl_fd landlock_create_ruleset landlock_add_rule landlock_restrict_self memfd_secret process_mrelease futex_waitv set_mempolicy_home_node cachestat fchmodat2 map_shadow_stack futex_wake futex_wait futex_requeue statmount listmount lsm_get_self_attr lsm_set_self_attr lsm_list_modules mseal /end REF_MEASUREMENT /end GROUP +/begin GROUP Events "Events" ROOT /begin SUB_GROUP async mainloop_event process_event syscall_event sendto recvfrom /end SUB_GROUP /end GROUP + +/* Conversions */ +/begin COMPU_METHOD conv.bool "" TAB_VERB "%.0" "" COMPU_TAB_REF conv.bool.table /end COMPU_METHOD +/begin COMPU_VTAB conv.bool.table "" TAB_VERB 2 0 "false" 1 "true" /end COMPU_VTAB +/begin COMPU_METHOD conv.events "" TAB_VERB "%.0 " "" COMPU_TAB_REF conv.events.table /end COMPU_METHOD +/begin COMPU_VTAB conv.events.table "" TAB_VERB 6 + 0 "async" 1 "mainloop_event" 2 "process_event" 3 "syscall_event" 4 "sendto" 5 "recvfrom" +/end COMPU_VTAB + +/begin MOD_PAR "" +EPK "_21_43_27" ADDR_EPK 0x80000000 +/begin MEMORY_SEGMENT epk "" DATA FLASH INTERN 0x80000000 9 -1 -1 -1 -1 -1 +/begin IF_DATA XCP +/begin SEGMENT 0 2 0 0 0 +/begin CHECKSUM XCP_CRC_16_CITT MAX_BLOCK_SIZE 0xFFFF EXTERNAL_FUNCTION "" /end CHECKSUM +/begin PAGE 0 ECU_ACCESS_DONT_CARE XCP_READ_ACCESS_DONT_CARE XCP_WRITE_ACCESS_DONT_CARE /end PAGE +/begin PAGE 1 ECU_ACCESS_DONT_CARE XCP_READ_ACCESS_DONT_CARE XCP_WRITE_ACCESS_NOT_ALLOWED /end PAGE +/end SEGMENT +/end IF_DATA +/end MEMORY_SEGMENT +/end MOD_PAR + + +/begin IF_DATA XCP +/begin PROTOCOL_LAYER + 0x104 1000 2000 0 0 0 0 0 248 1024 BYTE_ORDER_MSB_LAST ADDRESS_GRANULARITY_BYTE +OPTIONAL_CMD GET_COMM_MODE_INFO +OPTIONAL_CMD GET_ID +OPTIONAL_CMD SET_REQUEST +OPTIONAL_CMD SET_MTA +OPTIONAL_CMD UPLOAD +OPTIONAL_CMD SHORT_UPLOAD +OPTIONAL_CMD DOWNLOAD +OPTIONAL_CMD SHORT_DOWNLOAD +OPTIONAL_CMD GET_CAL_PAGE +OPTIONAL_CMD SET_CAL_PAGE +OPTIONAL_CMD COPY_CAL_PAGE +OPTIONAL_CMD GET_PAG_PROCESSOR_INFO +OPTIONAL_CMD GET_SEGMENT_INFO +OPTIONAL_CMD GET_PAGE_INFO +OPTIONAL_CMD GET_SEGMENT_MODE +OPTIONAL_CMD SET_SEGMENT_MODE +OPTIONAL_CMD BUILD_CHECKSUM +OPTIONAL_CMD USER_CMD +OPTIONAL_CMD GET_DAQ_RESOLUTION_INFO +OPTIONAL_CMD GET_DAQ_PROCESSOR_INFO +OPTIONAL_CMD GET_DAQ_EVENT_INFO +OPTIONAL_CMD FREE_DAQ +OPTIONAL_CMD ALLOC_DAQ +OPTIONAL_CMD ALLOC_ODT +OPTIONAL_CMD ALLOC_ODT_ENTRY +OPTIONAL_CMD SET_DAQ_PTR +OPTIONAL_CMD WRITE_DAQ +OPTIONAL_CMD GET_DAQ_LIST_MODE +OPTIONAL_CMD SET_DAQ_LIST_MODE +OPTIONAL_CMD START_STOP_SYNCH +OPTIONAL_CMD START_STOP_DAQ_LIST +OPTIONAL_CMD GET_DAQ_CLOCK +OPTIONAL_CMD WRITE_DAQ_MULTIPLE +OPTIONAL_CMD TIME_CORRELATION_PROPERTIES +OPTIONAL_LEVEL1_CMD GET_VERSION +/end PROTOCOL_LAYER +/begin DAQ +DYNAMIC 0 6 0 OPTIMISATION_TYPE_DEFAULT ADDRESS_EXTENSION_FREE IDENTIFICATION_FIELD_TYPE_RELATIVE_BYTE GRANULARITY_ODT_ENTRY_SIZE_DAQ_BYTE 0xF8 OVERLOAD_INDICATION_PID PRESCALER_SUPPORTED +/begin TIMESTAMP_SUPPORTED 0x1 SIZE_DWORD UNIT_1NS TIMESTAMP_FIXED /end TIMESTAMP_SUPPORTED +/begin EVENT "async" "async" 0x0 DAQ 0xFF 100 4 0 CONSISTENCY EVENT /end EVENT +/begin EVENT "mainloop_event" "mainloop_event" 0x1 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT +/begin EVENT "process_event" "process_event" 0x2 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT +/begin EVENT "syscall_event" "syscall_event" 0x3 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT +/begin EVENT "sendto" "sendto" 0x4 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT +/begin EVENT "recvfrom" "recvfrom" 0x5 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT +/end DAQ +/begin XCP_ON_TCP_IP + 0x104 5555 ADDRESS "192.168.0.206" +/end XCP_ON_TCP_IP +/end IF_DATA + +/end MODULE +/end PROJECT diff --git a/examples/bpf_demo/src/main.c b/examples/bpf_demo/src/main.c index f9f90382..848be12d 100644 --- a/examples/bpf_demo/src/main.c +++ b/examples/bpf_demo/src/main.c @@ -24,14 +24,15 @@ // XCP params #define OPTION_PROJECT_NAME "bpf_demo" // Project name, used to build the A2L and BIN file name +#define OPTION_PROJECT_EPK "_" __TIME__ // EPK version string #define OPTION_USE_TCP true // TCP or UDP #define OPTION_SERVER_PORT 5555 // Port #define OPTION_SERVER_ADDR {0, 0, 0, 0} // Bind addr, 0.0.0.0 = ANY #define OPTION_QUEUE_SIZE 1024 * 512 // Size of the measurement queue in bytes, must be a multiple of 8 #define OPTION_LOG_LEVEL 3 // Log level, 0 = no log, 1 = error, 2 = warning, 3 = info, 4 = debug -#define TO_XCP_TIMESTAMP(t) (t / 1000) // Convert to XCP timestamp in microseconds (OPTION_CLOCK_TICKS_1US) -// #define TO_XCP_TIMESTAMP(t) (t) // Convert to XCP timestamp in nanoseconds (OPTION_CLOCK_TICKS_1NS) +// #define TO_XCP_TIMESTAMP(t) (t / 1000) // Convert to XCP timestamp in microseconds (OPTION_CLOCK_TICKS_1US) +#define TO_XCP_TIMESTAMP(t) (t) // Convert to XCP timestamp in nanoseconds (OPTION_CLOCK_TICKS_1NS) //----------------------------------------------------------------------------------------------------- @@ -40,6 +41,9 @@ // syscall counters static uint32_t syscall_event_counters[MAX_SYSCALL_NR] = {0}; +// syscall events +static tXcpEventId syscall_events[MAX_SYSCALL_NR] = {0}; + // ARM64 syscall lookup table (major syscalls 0-462) - using constants for clarity static const char *syscall_names[MAX_SYSCALL_NR] = {[SYS_io_setup] = "io_setup", [SYS_io_destroy] = "io_destroy", @@ -369,7 +373,7 @@ static void print_syscall_stats(int map_fd) { uint64_t total_syscalls = 0; // Read all syscall counters from the BPF map - for (uint32_t syscall_nr = 0; syscall_nr < 463; syscall_nr++) { + for (uint32_t syscall_nr = 0; syscall_nr < MAX_SYSCALL_NR; syscall_nr++) { uint64_t count = 0; if (bpf_map_lookup_elem(map_fd, &syscall_nr, &count) == 0 && count > 0) { total_syscalls += count; @@ -417,11 +421,13 @@ static int handle_event(void *ctx, void *data, size_t data_sz) { static uint64_t syscall_last_rate_calculation_time = 0; static uint64_t syscall_count_last_second = 0; + // Extract syscall info in global variables for measurement syscall_nr = e->data.syscall.syscall_nr; syscall_pid = e->data.syscall.pid; syscall_cpu_id = e->cpu_id; syscall_time = e->timestamp; + // Counting syscalls syscall_count++; if (syscall_nr < MAX_SYSCALL_NR) { syscall_event_counters[syscall_nr]++; @@ -449,10 +455,22 @@ static int handle_event(void *ctx, void *data, size_t data_sz) { } // Optional: Print detailed syscall info (comment out for less verbose output) - const char *syscall_name = get_syscall_name(syscall_nr); - printf("Syscall: %s [%u] called %s (%u) on CPU%u\n", e->data.syscall.comm, e->data.syscall.pid, syscall_name, syscall_nr, syscall_cpu_id); + // const char *syscall_name = get_syscall_name(syscall_nr); + // XcpPrint("Syscall: %s [%u] called %s (%u) on CPU%u\n", e->data.syscall.comm, e->data.syscall.pid, syscall_name, syscall_nr, syscall_cpu_id); + // Trigger general syscall event for each syscall DaqEventAt(syscall_event, TO_XCP_TIMESTAMP(e->timestamp)); + + // Trigger individual syscall event if a specific syscall is monitored + if (syscall_nr < MAX_SYSCALL_NR) { + uint16_t event_id = syscall_events[syscall_nr]; + if (event_id != 0) { + // @@@@ TODO: Filter on PID + // @@@@ TODO: Create a macro for this kind of call + const uint8_t *__base[4] = {xcp_get_base_addr(), xcp_get_base_addr(), xcp_get_frame_addr(), NULL}; + XcpEventExt_(event_id, __base); + } + } } return 0; @@ -586,44 +604,55 @@ int main(int argc, char *argv[]) { } // Init XCP - XcpInit(true); + XcpInit(OPTION_PROJECT_NAME, OPTION_PROJECT_EPK, true); uint8_t addr[4] = OPTION_SERVER_ADDR; if (!XcpEthServerInit(addr, OPTION_SERVER_PORT, OPTION_USE_TCP, OPTION_QUEUE_SIZE)) { return 1; } // Enable inline A2L generation - if (!A2lInit(OPTION_PROJECT_NAME, NULL, addr, OPTION_SERVER_PORT, OPTION_USE_TCP, A2L_MODE_WRITE_ALWAYS | A2L_MODE_FINALIZE_ON_CONNECT | A2L_MODE_AUTO_GROUPS)) { + if (!A2lInit(addr, OPTION_SERVER_PORT, OPTION_USE_TCP, A2L_MODE_WRITE_ALWAYS | A2L_MODE_FINALIZE_ON_CONNECT | A2L_MODE_AUTO_GROUPS)) { return 1; } - uint32_t counter = 0; - // Create events for DAQ (Data Acquisition) - DaqCreateEvent(mainloop_event); - DaqCreateEvent(process_event); - DaqCreateEvent(syscall_event); + DaqCreateEvent(mainloop_event); // Mainloop every 100ms + DaqCreateEvent(process_event); // On each new process creation + DaqCreateEvent(syscall_event); // On each syscall - // Register statistics measurement variables (mainloop every 100ms ) - A2lSetStackAddrMode(mainloop_event); - A2lCreateMeasurement(counter, "Mainloop counter value"); // Mainloop counter + // Create global measurement variables for syscall_count and syscall_rate(mainloop_event) A2lSetAbsoluteAddrMode(mainloop_event); A2lCreateMeasurement(syscall_count, "Total tracked syscalls count"); // Total syscall count A2lCreatePhysMeasurement(syscall_rate, "Total tracked syscalls per second", "1/s", 0.0, 2000.0); // Total syscall rate - // New process PID creation event monitoring (BPF event) + // Create the process PID creation event (process_event) + // Create a global measurement variable for the new process PID A2lSetAbsoluteAddrMode(process_event); A2lCreateMeasurement(new_process_pid, "New process PID"); - // Syscall event monitoring (BPF event) + // Create a general event triggered on each syscall (syscall_event) + // Create global measurement variables for the syscall number and the PID making the syscall A2lSetAbsoluteAddrMode(syscall_event); - A2lCreateMeasurement(syscall_nr, "Current syscall number"); // Current syscall number - A2lCreateMeasurement(syscall_pid, "Syscall PID"); // PID making the syscall - for (uint32_t syscall_nr = 0; syscall_nr < 463; syscall_nr++) { // Individual measurement variables for each syscall + A2lCreateMeasurement(syscall_nr, "Current syscall number"); // Current syscall number + A2lCreateMeasurement(syscall_pid, "Syscall PID"); // PID making the syscall + + // Create additional events to monitor specific syscalls via their counters + syscall_events[SYS_sendto] = XcpCreateEvent(get_syscall_name(SYS_sendto), 0, 0); + syscall_events[SYS_recvfrom] = XcpCreateEvent(get_syscall_name(SYS_recvfrom), 0, 0); + + // Create global measurement variables for each syscall counter in the array syscall_event_counters + // Use there is a specific event ID for a syscall, use it as its fixed event, otherwise use default event 0 + for (uint32_t syscall_nr = 0; syscall_nr < MAX_SYSCALL_NR; syscall_nr++) { const char *name = get_syscall_name(syscall_nr); - if (name && strcmp(name, "unknown") != 0) { - // Using the A2L generation function directly to create variables with dynamic names - A2lCreateMeasurement_(NULL, name, A2L_TYPE_UINT32, A2lGetAddrExt_(), A2lGetAddr_((uint8_t *)&(syscall_event_counters[syscall_nr])), NULL, 0.0, 0.0, ""); + if (name) { + if (strcmp(name, "unknown") != 0) { + + // Using the A2L generation function directly to create variables with dynamic names + // If no specifc syscall event is defined, default event is 0 + uint16_t syscall_event_id = syscall_events[syscall_nr]; + A2lSetAbsoluteAddrMode(syscall_event_id); + A2lCreateMeasurement_(NULL, name, A2L_TYPE_UINT32, A2lGetAddrExt_(), A2lGetAddr_((uint8_t *)&(syscall_event_counters[syscall_nr])), NULL, 0.0, 0.0, ""); + } } } @@ -633,9 +662,6 @@ int main(int argc, char *argv[]) { printf("Start main loop...\n"); while (running) { - // Update counter - counter++; - // Poll BPF events ring_buffer__poll(rb, 10); // 10ms timeout diff --git a/examples/bpf_demo/src/process_monitor.bpf.c b/examples/bpf_demo/src/process_monitor.bpf.c index 257931e1..395451ce 100644 --- a/examples/bpf_demo/src/process_monitor.bpf.c +++ b/examples/bpf_demo/src/process_monitor.bpf.c @@ -82,26 +82,23 @@ struct syscall_enter_args { }; // Helper function to enable event generation on syscalls -static inline u32 classify_syscall(u32 syscall_nr) { - - switch (syscall_nr) { - - // Ignore some high-frequency less interesting syscalls - case SYS_clock_nanosleep: - case SYS_nanosleep: - case SYS_write: - case SYS_read: - case SYS_getrandom: - case SYS_rt_sigaction: - case SYS_rt_sigprocmask: - case SYS_ppoll: - case SYS_epoll_pwait: - return 0; - - default: - return 1; - } -} +// static inline u32 classify_syscall(u32 syscall_nr) { +// switch (syscall_nr) { +// // Ignore some high-frequency less interesting syscalls +// case SYS_clock_nanosleep: +// case SYS_nanosleep: +// case SYS_write: +// case SYS_read: +// case SYS_getrandom: +// case SYS_rt_sigaction: +// case SYS_rt_sigprocmask: +// case SYS_ppoll: +// case SYS_epoll_pwait: +// return 0; +// default: +// return 1; +// } +// } // High-frequency syscall tracepoint - now tracks ALL syscalls SEC("tp/raw_syscalls/sys_enter") @@ -127,10 +124,10 @@ int trace_syscall_enter(void *ctx) { } // Only send detailed events for interesting syscalls to reduce overhead - u32 category = classify_syscall(syscall_nr); - if (category == 0) { - return 0; // Skip sending event for uninteresting syscalls - } + // u32 category = classify_syscall(syscall_nr); + // if (category == 0) { + // return 0; // Skip sending event for uninteresting syscalls + // } e = bpf_ringbuf_reserve(&rb, sizeof(*e), 0); if (!e) diff --git a/examples/c_demo/src/main.c b/examples/c_demo/src/main.c index 4b648b5b..51c88111 100644 --- a/examples/c_demo/src/main.c +++ b/examples/c_demo/src/main.c @@ -13,6 +13,7 @@ // XCP parameters #define OPTION_PROJECT_NAME "c_demo" // A2L project name +#define OPTION_PROJECT_EPK "_" __TIME__ // EPK version string #define OPTION_USE_TCP false // TCP or UDP #define OPTION_SERVER_PORT 5555 // Port #define OPTION_SERVER_ADDR {0, 0, 0, 0} // Bind addr, 0.0.0.0 = ANY @@ -72,7 +73,7 @@ int main(void) { // Initialize the XCP singleton, activate XCP, must be called before starting the server // If XCP is not activated, the server will not start and all XCP instrumentation will be passive with minimal overhead - XcpInit(true); + XcpInit(OPTION_PROJECT_NAME, OPTION_PROJECT_EPK, true); // Initialize the XCP Server uint8_t addr[4] = OPTION_SERVER_ADDR; @@ -81,7 +82,7 @@ int main(void) { } // Enable A2L generation and prepare the A2L file, finalize the A2L file on XCP connect - if (!A2lInit(OPTION_PROJECT_NAME, NULL, addr, OPTION_SERVER_PORT, OPTION_USE_TCP, A2L_MODE_WRITE_ALWAYS | A2L_MODE_FINALIZE_ON_CONNECT | A2L_MODE_AUTO_GROUPS)) { + if (!A2lInit(addr, OPTION_SERVER_PORT, OPTION_USE_TCP, A2L_MODE_WRITE_ALWAYS | A2L_MODE_FINALIZE_ON_CONNECT | A2L_MODE_AUTO_GROUPS)) { return 1; } @@ -89,7 +90,7 @@ int main(void) { // This segment has a working page (RAM) and a reference page (FLASH), it creates a MEMORY_SEGMENT in the A2L file // It provides safe (thread safe against XCP modifications), lock-free and consistent access to the calibration parameters // It supports XCP/ECU independent page switching, checksum calculation and reinitialization (copy reference page to working page) - tXcpCalSegIndex calseg = XcpCreateCalSeg("Parameters", ¶ms, sizeof(params)); + tXcpCalSegIndex calseg = XcpCreateCalSeg("params", ¶ms, sizeof(params)); assert(calseg != XCP_UNDEFINED_CALSEG); // Ensure the calibration segment was created successfully // Create a typedef struct for the calibration parameters @@ -187,7 +188,7 @@ int main(void) { // Lock the calibration parameter segment for consistent and safe access // Calibration segment locking is completely lock-free and wait-free (no mutexes, system calls or CAS operations ) // It returns a pointer to the active page (working or reference) of the calibration segment - params_t *params = (params_t *)XcpLockCalSeg(calseg); + const params_t *params = (params_t *)XcpLockCalSeg(calseg); if (delay_us != params->delay_us) { delay_us = params->delay_us; diff --git a/examples/cpp_demo/CANape/CANape.ini b/examples/cpp_demo/CANape/CANape.ini index 5fd517a1..4d2ba761 100644 --- a/examples/cpp_demo/CANape/CANape.ini +++ b/examples/cpp_demo/CANape/CANape.ini @@ -1,6 +1,6 @@ [!!!!!_CONSISTENCY_CHECK_START_SECTION_!!!!!] -GUID={FDF34F59-33DD-4020-B561-77CD34499D78} +GUID={DB33299C-7702-4C0F-9296-4EA789F2129B} [FILE_INFO] Identification=CANape-Project-File @@ -14,8 +14,8 @@ PrgDate=16.06.2025 Description= CreationTime=21:03 CreationDate=07/07/2024 ; Month/Day/Year -ModificationTime=16:14 -ModificationDate=09/26/2025 ; Month/Day/Year +ModificationTime=11:46 +ModificationDate=10/01/2025 ; Month/Day/Year Protected=0 CurrentWindowsACP=1252 @@ -1308,7 +1308,7 @@ XCP_OPTIONAL_SUB_CMD_AVAILABLE_1=2 XCP_OPTIONAL_SUB_CMD_AVAILABLE_2=2 XCP_DAQ_PROPERTIES=0x15 XCP_DAQ_KEY_BYTE=0xC0 -XCP_DAQ_TIMESTAMP_MODE=0x3C +XCP_DAQ_TIMESTAMP_MODE=0x0C XCP_DAQ_TIMESTAMP_TICKS=1 XCP_MIN_DAQ=0 XCP_MAX_DAQ=0 @@ -1513,7 +1513,7 @@ MEMORY_SEGMENT_COUNT=3 MEMORY_SEGMENT_NAME_1=Parameters MEMORY_SEGMENT_TYPE_1=FLASH,DATA,INTERN MEMORY_SEGMENT_SIZE_1=0x00000008 -MEMORY_SEGMENT_ADDR_1=0x80000000 +MEMORY_SEGMENT_ADDR_1=0x00023890 MEMORY_SEGMENT_ADDR_EXT_1=0x00 MEMORY_SEGMENT_ATTRIBUTE_1=0x00000000 MEMORY_SEGMENT_FLASH_OFFSET_1=0x00000000 @@ -1521,7 +1521,7 @@ MEMORY_SEGMENT_ADDRESS_MAPPING_1= MEMORY_SEGMENT_NAME_2=SigGen1 MEMORY_SEGMENT_TYPE_2=FLASH,DATA,INTERN MEMORY_SEGMENT_SIZE_2=0x00000058 -MEMORY_SEGMENT_ADDR_2=0x80010000 +MEMORY_SEGMENT_ADDR_2=0x00023898 MEMORY_SEGMENT_ADDR_EXT_2=0x00 MEMORY_SEGMENT_ATTRIBUTE_2=0x00000000 MEMORY_SEGMENT_FLASH_OFFSET_2=0x00000000 @@ -1529,7 +1529,7 @@ MEMORY_SEGMENT_ADDRESS_MAPPING_2= CALRAM_SECTOR_NAME_1=Parameters CALRAM_SECTOR_TYPE_1=FLASH,DATA,INTERN CALRAM_SECTOR_SIZE_1=0x00000008 -CALRAM_SECTOR_ADDR_1=0x80000000 +CALRAM_SECTOR_ADDR_1=0x00023890 CALRAM_SECTOR_ADDR_EXT_1=0x00 CALRAM_SECTOR_ATTRIBUTE_1=0x00000000 CALRAM_SECTOR_FLASH_OFFSET_1=0x00000000 @@ -1537,7 +1537,7 @@ CALRAM_SECTOR_ADDRESS_MAPPING_1= CALRAM_SECTOR_NAME_2=SigGen1 CALRAM_SECTOR_TYPE_2=FLASH,DATA,INTERN CALRAM_SECTOR_SIZE_2=0x00000058 -CALRAM_SECTOR_ADDR_2=0x80010000 +CALRAM_SECTOR_ADDR_2=0x00023898 CALRAM_SECTOR_ADDR_EXT_2=0x00 CALRAM_SECTOR_ATTRIBUTE_2=0x00000000 CALRAM_SECTOR_FLASH_OFFSET_2=0x00000000 @@ -1630,7 +1630,7 @@ EVENT_DPM_SUPPORTED_1=0 MEMORY_SEGMENT_NAME_3=SigGen2 MEMORY_SEGMENT_TYPE_3=FLASH,DATA,INTERN MEMORY_SEGMENT_SIZE_3=0x00000058 -MEMORY_SEGMENT_ADDR_3=0x80020000 +MEMORY_SEGMENT_ADDR_3=0x000238F0 MEMORY_SEGMENT_ADDR_EXT_3=0x00 MEMORY_SEGMENT_ATTRIBUTE_3=0x00000000 MEMORY_SEGMENT_FLASH_OFFSET_3=0x00000000 @@ -1638,7 +1638,7 @@ MEMORY_SEGMENT_ADDRESS_MAPPING_3= CALRAM_SECTOR_NAME_3=SigGen2 CALRAM_SECTOR_TYPE_3=FLASH,DATA,INTERN CALRAM_SECTOR_SIZE_3=0x00000058 -CALRAM_SECTOR_ADDR_3=0x80020000 +CALRAM_SECTOR_ADDR_3=0x000238F0 CALRAM_SECTOR_ADDR_EXT_3=0x00 CALRAM_SECTOR_ATTRIBUTE_3=0x00000000 CALRAM_SECTOR_FLASH_OFFSET_3=0x00000000 @@ -2436,7 +2436,7 @@ SELECT_PREVIEW_DLG_VISIBLE=0 SELECT_SORT_COLUMN_ID=31 SELECT_SORT_UPWARD=1 LAST_PAGE_NAME_DLG_VARIABLE= -LAST_PAGE_ID_DLG_VARIABLE=21007 +LAST_PAGE_ID_DLG_VARIABLE=21006 OBJECT_DIALOG_WITH=1200 OBJECT_DIALOG_WITH_dpi96=600 OBJECT_DIALOG_HEIGHT=640 @@ -2471,7 +2471,7 @@ SEARCH_COMP_ADDRESS=0 SEARCH_START_ADDRESS=0 SEARCH_END_ADDRESS=0 FILTER_COMMENT= -FILTER_NAME=Suchergebnis +FILTER_NAME=Search result SEARCH_COMMENT= SEARCH_NAME= PARENT= @@ -2838,6 +2838,67 @@ SortUpward=1 [MEASUREMENT_DISPLAY_DYNAMIC_COLUMNS] Count=0 +[DEVICE_EXPLORER_COLUMNLIST_CHANNELS] +ScreenDPIinSection=192 +ColumnCount=4 +Column_0=0, 306 +Column_0_dpi96=0, 153 +Column_1=1245185, 132 +Column_1_dpi96=1245185, 66 +Column_2=1245186, 66 +Column_2_dpi96=1245186, 33 +Column_3=1245187, 106 +Column_3_dpi96=1245187, 53 +ColumnIdSort=-1 +SortUpward=1 + +[DEVICE_EXPLORER_COLUMNLIST_DEVICES] +ScreenDPIinSection=192 +ColumnCount=10 +Column_0=34, 96 +Column_0_dpi96=34, 48 +Column_1=0, 460 +Column_1_dpi96=0, 230 +Column_2=131078, 160 +Column_2_dpi96=131078, 80 +Column_3=131103, 100 +Column_3_dpi96=131103, 50 +Column_4=131079, 100 +Column_4_dpi96=131079, 50 +Column_5=262145, 240 +Column_5_dpi96=262145, 120 +Column_6=131085, 200 +Column_6_dpi96=131085, 100 +Column_7=131080, 240 +Column_7_dpi96=131080, 120 +Column_8=131081, 160 +Column_8_dpi96=131081, 80 +Column_9=196609, 100 +Column_9_dpi96=196609, 50 +ColumnIdSort=-1 +SortUpward=1 + +[DEVICE_EXPLORER_COLUMNLIST_NETWORKS] +ScreenDPIinSection=192 +ColumnCount=6 +Column_0=34, 64 +Column_0_dpi96=34, 32 +Column_1=0, 304 +Column_1_dpi96=0, 152 +Column_2=983041, 192 +Column_2_dpi96=983041, 96 +Column_3=983042, 530 +Column_3_dpi96=983042, 265 +Column_4=983043, 252 +Column_4_dpi96=983043, 126 +Column_5=983044, 300 +Column_5_dpi96=983044, 150 +ColumnIdSort=-1 +SortUpward=1 + +[PARASETEXPLORER] +LAST_SELECTED_SAVEDIALOG_FILETYPE_FILTER=CDFX files (*.cdfx)|*.cdfx| + [COLOR_SCHEME_LIST] COLOR_SCHEME0=COLOR_SCHEMEUSER_DEFINED SCHEMES_COUNT=1 @@ -2973,75 +3034,27 @@ MODE=12 VALUE_COUNT=0 HISTORY_COUNT=0 -[DEVICE_EXPLORER_COLUMNLIST_CHANNELS] -ScreenDPIinSection=192 -ColumnCount=4 -Column_0=0, 306 -Column_0_dpi96=0, 153 -Column_1=1245185, 132 -Column_1_dpi96=1245185, 66 -Column_2=1245186, 66 -Column_2_dpi96=1245186, 33 -Column_3=1245187, 106 -Column_3_dpi96=1245187, 53 -ColumnIdSort=-1 -SortUpward=1 - -[DEVICE_EXPLORER_COLUMNLIST_DEVICES] -ScreenDPIinSection=192 -ColumnCount=10 -Column_0=34, 96 -Column_0_dpi96=34, 48 -Column_1=0, 460 -Column_1_dpi96=0, 230 -Column_2=131078, 160 -Column_2_dpi96=131078, 80 -Column_3=131103, 100 -Column_3_dpi96=131103, 50 -Column_4=131079, 100 -Column_4_dpi96=131079, 50 -Column_5=262145, 240 -Column_5_dpi96=262145, 120 -Column_6=131085, 200 -Column_6_dpi96=131085, 100 -Column_7=131080, 240 -Column_7_dpi96=131080, 120 -Column_8=131081, 160 -Column_8_dpi96=131081, 80 -Column_9=196609, 100 -Column_9_dpi96=196609, 50 -ColumnIdSort=-1 -SortUpward=1 - -[DEVICE_EXPLORER_COLUMNLIST_NETWORKS] +[Dialog_MdiCfgDlg_Typ1024] +TreeWidth=240 +TreeWidth_dpi96=120 ScreenDPIinSection=192 -ColumnCount=6 -Column_0=34, 64 -Column_0_dpi96=34, 32 -Column_1=0, 304 -Column_1_dpi96=0, 152 -Column_2=983041, 192 -Column_2_dpi96=983041, 96 -Column_3=983042, 530 -Column_3_dpi96=983042, 265 -Column_4=983043, 252 -Column_4_dpi96=983043, 126 -Column_5=983044, 300 -Column_5_dpi96=983044, 150 -ColumnIdSort=-1 -SortUpward=1 +WindowLeft=1634 +WindowLeft_dpi96=817 +WindowTop=778 +WindowTop_dpi96=389 +WindowWidth=1130 +WindowWidth_dpi96=565 +WindowHeight=608 +WindowHeight_dpi96=304 [MEASUREMENT_0] FileId=Measurement1 -MeasurementId=15038faa-21ae-432e-85cb-58bc84621ad7 +MeasurementId=f6a98dee-be4a-439b-a2f4-3949a1a9e6a1 LoadMeasurementSetting=3 -[PARASETEXPLORER] -LAST_SELECTED_SAVEDIALOG_FILETYPE_FILTER=CDFX files (*.cdfx)|*.cdfx| - [SIGNSELWND_DYNAMIC_COLUMNS] Count=0 [~~~~~_CONSISTENCY_CHECK_END_SECTION_~~~~~] -GUID={FDF34F59-33DD-4020-B561-77CD34499D78} +GUID={DB33299C-7702-4C0F-9296-4EA789F2129B} diff --git a/examples/cpp_demo/CANape/xcp_demo.cna b/examples/cpp_demo/CANape/xcp_demo.cna index 98fd67ca..43c82e5a 100644 --- a/examples/cpp_demo/CANape/xcp_demo.cna +++ b/examples/cpp_demo/CANape/xcp_demo.cna @@ -10,8 +10,8 @@ PrgDate=16.06.2025 Description= CreationTime=16:42 CreationDate=09/02/2025 ; Month/Day/Year -ModificationTime=16:14 -ModificationDate=09/26/2025 ; Month/Day/Year +ModificationTime=11:45 +ModificationDate=10/01/2025 ; Month/Day/Year Protected=0 CurrentWindowsACP=1252 @@ -305,7 +305,7 @@ Count=0 Name=Waveform Signal Generator Comment= Maximized=0 -ActiveWindow=8 +ActiveWindow=9 IsReportPage=0 TimeAxisSynchronized=0 PrintLayout=Default @@ -329,7 +329,7 @@ Count=0 [DISPLAY_PAGES] Count=3 -Active=0 +Active=1 [DYNAMIC_COLUMNS] Count=0 @@ -969,8 +969,8 @@ WindowTextExtended=1 WindowTextExtendedNew=1 WindowSymbols=1 GlobalCursor=0 -GlobalCursorTime=-310 -GlobalCursorTimeNs=-310275125 +GlobalCursorTime=4005 +GlobalCursorTimeNs=4005662583 MainWindowPos=1, 664, 128, 2738, 1564 ;cmd, x, y, w, h [PAR_COMMENT] @@ -1142,7 +1142,7 @@ Count=0 [WINDOW_1] ProgID= PROPERTIES_COUNT=1 -PROPERTY_1={"Version":"1.3.0.0","Configuration":{"ArrayWindowSubControlConfiguration":{"NumericGraphicCompositeWidth":307,"NumericGraphicCompositeHeight":98,"LegendCoordinatePoint":{"X":0,"Y":0},"LegendWidth":0,"LegendHeight":0,"LegendLayoutGroupSizeWidth":0,"LegendLayoutGroupSizeHeight":0,"NumericCoordinatePoint":{"X":1,"Y":24},"NumericWidth":305,"NumericHeight":73,"NumericLayoutGroupSizeWidth":305,"NumericLayoutGroupSizeHeight":73,"Intersection2DXWCoordinatePoint":{"X":0,"Y":0},"Intersection2DXWWidth":0,"Intersection2DXWHeight":0,"Intersection2DXWLayoutGroupSizeWidth":0,"Intersection2DXWLayoutGroupSizeHeight":0,"Intersection2DYWCoordinatePoint":{"X":0,"Y":0},"Intersection2DYWWidth":0,"Intersection2DYWHeight":0,"Intersection2DYWLayoutGroupSizeWidth":0,"Intersection2DYWLayoutGroupSizeHeight":0,"Graphic3DCoordinatePoint":{"X":0,"Y":0},"Graphic3DWidth":0,"Graphic3DHeight":0,"Graphic3DLayoutGroupSizeWidth":0,"Graphic3DLayoutGroupSizeHeight":0},"ShowCalibrationBar":true,"ShowHorizontalChartLines":false,"ShowVerticalChartLines":false,"NonSelectedIntersectionLineTransparency":0.100000024,"FocusedValueSymbol":"DEVICE:\"xcp_demo\":\"$Parameters$Parameters.counter_max\":P","ValueObjectConfigurations":[{"Symbol":"DEVICE:\"xcp_demo\":\"$Parameters$Parameters.counter_max\":P","SerializationColor":{"R":0,"G":0,"B":0,"A":255},"Collapsed":false,"SerializationFrameColor":{"R":0,"G":0,"B":0,"A":255},"ValueFormat":0,"AxisValueFormats":[],"NumericFormat":4,"AxisNumericFormats":[],"NumericFormatDigits":6,"IsActive":true,"CurrentChartViewType":2,"PointMarker":1,"IsValueAnnotationEnabled":false,"ValueAxisMin":0,"ValueAxisMax":2000,"ValueAxisMinHome":0,"ValueAxisMaxHome":2000,"ValueAxisPosition":0,"CommonValueAxisName":null,"CommonValueAxisLabel":"","CommonValueAxisMin":0,"CommonValueAxisMax":0,"CommonValueAxisMinHome":0,"CommonValueAxisMaxHome":0,"SerializationCommonValueAxisColor":{"R":0,"G":0,"B":0,"A":0},"CommonValueAxisID":0,"CommonValueAxisFormat":null,"CommonValueAxisPosition":0,"CommonXAxisLabel":"","CommonYAxisLabel":"","CustomAxisLabels":["","","","","",""]},{"Symbol":"DEVICE:\"xcp_demo\":\"$Parameters$Parameters.delay_us\":P","SerializationColor":{"R":0,"G":0,"B":0,"A":255},"Collapsed":false,"SerializationFrameColor":{"R":0,"G":0,"B":0,"A":255},"ValueFormat":0,"AxisValueFormats":[],"NumericFormat":4,"AxisNumericFormats":[],"NumericFormatDigits":6,"IsActive":true,"CurrentChartViewType":2,"PointMarker":1,"IsValueAnnotationEnabled":false,"ValueAxisMin":0,"ValueAxisMax":100000,"ValueAxisMinHome":0,"ValueAxisMaxHome":100000,"ValueAxisPosition":0,"CommonValueAxisName":null,"CommonValueAxisLabel":"","CommonValueAxisMin":0,"CommonValueAxisMax":0,"CommonValueAxisMinHome":0,"CommonValueAxisMaxHome":0,"SerializationCommonValueAxisColor":{"R":0,"G":0,"B":0,"A":0},"CommonValueAxisID":0,"CommonValueAxisFormat":null,"CommonValueAxisPosition":0,"CommonXAxisLabel":"","CommonYAxisLabel":"","CustomAxisLabels":["","","","","",""]}],"NumericGraphicControlPosition":0,"NumericGraphicControlSelectedTab":0,"GraphicControlPosition":0,"Height2DXControl":1,"Height2DYControl":1,"Height3DControl":2,"HeightNumericControl":1,"HeightChartControl":1,"HeightLegendControl":0.44999998807907104,"Width2DXControl":1,"Width2DYControl":1,"Width3DControl":2,"WidthNumericControl":2,"WidthChartControl":2,"WidthLegendControl":0.30000001192092896,"HeightValueControl":1,"WidthValueControl":1,"HeightNumericGraphicControl":1,"WidthNumericGraphicControl":1,"Height2DChartsControl":1,"Width2DChartsControl":1,"IsXAxisHeightSynchronizedBetweenCharts":true,"IsYAxisAreaWidthSynchronizedBetweenCharts":true,"SyncedXAxisHeight":NaN,"XWChartXAxisHeight":NaN,"YWChartXAxisHeight":NaN,"SyncedLeftAxisAreaWidth":NaN,"XWChartLeftAxisAreaWidth":NaN,"YWChartLeftAxisAreaWidth":NaN,"SyncedRightAxisAreaWidth":NaN,"XWChartRightAxisAreaWidth":NaN,"YWChartRightAxisAreaWidth":NaN,"LegendPosition":0,"LegendViewType":0,"LegendTableColumnAttributes":[{"TypeId":"1048594","Size":40},{"TypeId":"1048601","Size":45},{"TypeId":"31","Size":100},{"TypeId":"3","Size":250},{"TypeId":"16","Size":70},{"TypeId":"1048627","Size":100},{"TypeId":"1048631","Size":100},{"TypeId":"1048634","Size":100}],"LegendTabItemAttributes":[{"TypeId":"31","Size":100}],"FlipAxes":false,"AxisDisplayNameMode":3,"ReversedAxis":[false,false],"ShowUnits":false,"ShowObjectColor":false,"SortDescending":false,"SortAttributeId":null,"ShowWorkingPointHistory":false,"NumericViewValueObjectDisplayOption":1,"ValueColumnWidth":106,"ValueColumnWidthDouble":106.66666666666663,"ParameterGroup":"","ModuleName":"","GroupIsFunction":false,"NumericControlAxisAttributes":[],"NumericControlColumnAttributes":[{"TypeId":"31","Size":192}],"ChartViewValueObjectDisplayOption":1,"SerializationCameraPosition":{"X":1,"Y":1,"Z":-1},"SerializationCameraTarget":{"X":0,"Y":0.5,"Z":0},"IsValueAnnotationRotated":false,"EquidistantAxisPoints":false,"BarThickness":0.6,"WorkingPointMarker":0,"LinearWorkingPointInterpolation":true,"ShowAllIntersectionLines":false,"IsValueAxisIndependent":true,"TickLabelRotationAngle":-90,"IsTickLabelRotationEnabled":false,"IsTickLabelRightAligned":false,"ShowBoundarySurface":true,"ShowBoundarySurfaceGradient":false,"ShowCursorAsCrosshair":false,"XAxisAutoRange":true,"ValueAxisAutoRange":true,"ShowAllValueAxes":false,"DrawAxisBands":false,"CurrentColumnChartType":0,"SerializationCursorCrosshairColor":{"R":0,"G":0,"B":0,"A":255},"AlignBarToZero":true,"DefaultChartViewType":2,"AttributeColumnPositioning":1}} +PROPERTY_1={"Version":"1.3.0.0","Configuration":{"ArrayWindowSubControlConfiguration":{"NumericGraphicCompositeWidth":307,"NumericGraphicCompositeHeight":98,"LegendCoordinatePoint":{"X":0,"Y":0},"LegendWidth":0,"LegendHeight":0,"LegendLayoutGroupSizeWidth":0,"LegendLayoutGroupSizeHeight":0,"NumericCoordinatePoint":{"X":1,"Y":24},"NumericWidth":305,"NumericHeight":73,"NumericLayoutGroupSizeWidth":305,"NumericLayoutGroupSizeHeight":73,"Intersection2DXWCoordinatePoint":{"X":0,"Y":0},"Intersection2DXWWidth":0,"Intersection2DXWHeight":0,"Intersection2DXWLayoutGroupSizeWidth":0,"Intersection2DXWLayoutGroupSizeHeight":0,"Intersection2DYWCoordinatePoint":{"X":0,"Y":0},"Intersection2DYWWidth":0,"Intersection2DYWHeight":0,"Intersection2DYWLayoutGroupSizeWidth":0,"Intersection2DYWLayoutGroupSizeHeight":0,"Graphic3DCoordinatePoint":{"X":0,"Y":0},"Graphic3DWidth":0,"Graphic3DHeight":0,"Graphic3DLayoutGroupSizeWidth":0,"Graphic3DLayoutGroupSizeHeight":0},"ShowCalibrationBar":true,"ShowHorizontalChartLines":false,"ShowVerticalChartLines":false,"NonSelectedIntersectionLineTransparency":0.100000024,"FocusedValueSymbol":"DEVICE:\"xcp_demo\":\"$Parameters$Parameters.delay_us\":P","ValueObjectConfigurations":[{"Symbol":"DEVICE:\"xcp_demo\":\"$Parameters$Parameters.counter_max\":P","SerializationColor":{"R":0,"G":0,"B":0,"A":255},"Collapsed":false,"SerializationFrameColor":{"R":0,"G":0,"B":0,"A":255},"ValueFormat":0,"AxisValueFormats":[],"NumericFormat":4,"AxisNumericFormats":[],"NumericFormatDigits":6,"IsActive":true,"CurrentChartViewType":2,"PointMarker":1,"IsValueAnnotationEnabled":false,"ValueAxisMin":0,"ValueAxisMax":2000,"ValueAxisMinHome":0,"ValueAxisMaxHome":2000,"ValueAxisPosition":0,"CommonValueAxisName":null,"CommonValueAxisLabel":"","CommonValueAxisMin":0,"CommonValueAxisMax":0,"CommonValueAxisMinHome":0,"CommonValueAxisMaxHome":0,"SerializationCommonValueAxisColor":{"R":0,"G":0,"B":0,"A":0},"CommonValueAxisID":0,"CommonValueAxisFormat":null,"CommonValueAxisPosition":0,"CommonXAxisLabel":"","CommonYAxisLabel":"","CustomAxisLabels":["","","","","",""]},{"Symbol":"DEVICE:\"xcp_demo\":\"$Parameters$Parameters.delay_us\":P","SerializationColor":{"R":0,"G":0,"B":0,"A":255},"Collapsed":false,"SerializationFrameColor":{"R":0,"G":0,"B":0,"A":255},"ValueFormat":0,"AxisValueFormats":[],"NumericFormat":4,"AxisNumericFormats":[],"NumericFormatDigits":6,"IsActive":true,"CurrentChartViewType":2,"PointMarker":1,"IsValueAnnotationEnabled":false,"ValueAxisMin":0,"ValueAxisMax":100000,"ValueAxisMinHome":0,"ValueAxisMaxHome":100000,"ValueAxisPosition":0,"CommonValueAxisName":null,"CommonValueAxisLabel":"","CommonValueAxisMin":0,"CommonValueAxisMax":0,"CommonValueAxisMinHome":0,"CommonValueAxisMaxHome":0,"SerializationCommonValueAxisColor":{"R":0,"G":0,"B":0,"A":0},"CommonValueAxisID":0,"CommonValueAxisFormat":null,"CommonValueAxisPosition":0,"CommonXAxisLabel":"","CommonYAxisLabel":"","CustomAxisLabels":["","","","","",""]}],"NumericGraphicControlPosition":0,"NumericGraphicControlSelectedTab":0,"GraphicControlPosition":0,"Height2DXControl":1,"Height2DYControl":1,"Height3DControl":2,"HeightNumericControl":1,"HeightChartControl":1,"HeightLegendControl":0.44999998807907104,"Width2DXControl":1,"Width2DYControl":1,"Width3DControl":2,"WidthNumericControl":2,"WidthChartControl":2,"WidthLegendControl":0.30000001192092896,"HeightValueControl":1,"WidthValueControl":1,"HeightNumericGraphicControl":1,"WidthNumericGraphicControl":1,"Height2DChartsControl":1,"Width2DChartsControl":1,"IsXAxisHeightSynchronizedBetweenCharts":true,"IsYAxisAreaWidthSynchronizedBetweenCharts":true,"SyncedXAxisHeight":NaN,"XWChartXAxisHeight":NaN,"YWChartXAxisHeight":NaN,"SyncedLeftAxisAreaWidth":NaN,"XWChartLeftAxisAreaWidth":NaN,"YWChartLeftAxisAreaWidth":NaN,"SyncedRightAxisAreaWidth":NaN,"XWChartRightAxisAreaWidth":NaN,"YWChartRightAxisAreaWidth":NaN,"LegendPosition":0,"LegendViewType":0,"LegendTableColumnAttributes":[{"TypeId":"1048594","Size":40},{"TypeId":"1048601","Size":45},{"TypeId":"31","Size":100},{"TypeId":"3","Size":250},{"TypeId":"16","Size":70},{"TypeId":"1048627","Size":100},{"TypeId":"1048631","Size":100},{"TypeId":"1048634","Size":100}],"LegendTabItemAttributes":[{"TypeId":"31","Size":100}],"FlipAxes":false,"AxisDisplayNameMode":3,"ReversedAxis":[false,false],"ShowUnits":false,"ShowObjectColor":false,"SortDescending":false,"SortAttributeId":null,"ShowWorkingPointHistory":false,"NumericViewValueObjectDisplayOption":1,"ValueColumnWidth":106,"ValueColumnWidthDouble":106.66666666666663,"ParameterGroup":"","ModuleName":"","GroupIsFunction":false,"NumericControlAxisAttributes":[],"NumericControlColumnAttributes":[{"TypeId":"31","Size":192}],"ChartViewValueObjectDisplayOption":1,"SerializationCameraPosition":{"X":1,"Y":1,"Z":-1},"SerializationCameraTarget":{"X":0,"Y":0.5,"Z":0},"IsValueAnnotationRotated":false,"EquidistantAxisPoints":false,"BarThickness":0.6,"WorkingPointMarker":0,"LinearWorkingPointInterpolation":true,"ShowAllIntersectionLines":false,"IsValueAxisIndependent":true,"TickLabelRotationAngle":-90,"IsTickLabelRotationEnabled":false,"IsTickLabelRightAligned":false,"ShowBoundarySurface":true,"ShowBoundarySurfaceGradient":false,"ShowCursorAsCrosshair":false,"XAxisAutoRange":true,"ValueAxisAutoRange":true,"ShowAllValueAxes":false,"DrawAxisBands":false,"CurrentColumnChartType":0,"SerializationCursorCrosshairColor":{"R":0,"G":0,"B":0,"A":255},"AlignBarToZero":true,"DefaultChartViewType":2,"AttributeColumnPositioning":1}} OBJECTS_COUNT=2 OBJECT_1=DEVICE:"xcp_demo":"$Parameters$Parameters.counter_max":P OBJECT_2=DEVICE:"xcp_demo":"$Parameters$Parameters.delay_us":P @@ -1414,14 +1414,14 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_a664f860-510c-4e46-a9b8-1c1eee700f61 +GUID=DISPLAY_8b25cb27-9e87-4095-a979-6064ef104fc3 [WINDOW_12] XLen=873321 XMin=0 XMinNs=0 -XMax=31712 -XMaxNs=31712361929 +XMax=21301 +XMaxNs=21301042032 Grid=1 Mark=1 YValue=1 @@ -1538,7 +1538,7 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_b1ec91ba-d725-435f-abd7-f2dea27cc2fb +GUID=DISPLAY_fa22bf72-f8d9-42c3-b169-585bdce1bfc4 [WINDOW_1_OBJECT_2] Type=2 @@ -1587,7 +1587,7 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_12677eec-de48-41f2-8b52-f997a727343e +GUID=DISPLAY_7a748709-877a-4109-bf22-c19df5dcc5d6 [WINDOW_2] ComponentCount=2 @@ -1609,8 +1609,8 @@ DisplayMask=1 ; pages 1 XLen=873321 XMin=0 XMinNs=0 -XMax=31712 -XMaxNs=31712361929 +XMax=21301 +XMaxNs=21301042032 Grid=1 Mark=1 YValue=2 @@ -1790,8 +1790,8 @@ DisplayMask=2 ; pages 2 XLen=194403 XMin=0 XMinNs=0 -XMax=31712 -XMaxNs=31712367180 +XMax=21301 +XMaxNs=21301042032 Grid=1 Mark=1 YValue=1 @@ -1860,7 +1860,7 @@ COL_0_dpi96=31, 222 [WINDOW_8] ProgID= PROPERTIES_COUNT=1 -PROPERTY_1={"Version":"1.3.0.0","Configuration":{"ArrayWindowSubControlConfiguration":{"NumericGraphicCompositeWidth":219,"NumericGraphicCompositeHeight":162,"LegendCoordinatePoint":{"X":0,"Y":0},"LegendWidth":0,"LegendHeight":0,"LegendLayoutGroupSizeWidth":0,"LegendLayoutGroupSizeHeight":0,"NumericCoordinatePoint":{"X":1,"Y":24},"NumericWidth":217,"NumericHeight":137,"NumericLayoutGroupSizeWidth":217,"NumericLayoutGroupSizeHeight":137,"Intersection2DXWCoordinatePoint":{"X":0,"Y":0},"Intersection2DXWWidth":0,"Intersection2DXWHeight":0,"Intersection2DXWLayoutGroupSizeWidth":0,"Intersection2DXWLayoutGroupSizeHeight":0,"Intersection2DYWCoordinatePoint":{"X":0,"Y":0},"Intersection2DYWWidth":0,"Intersection2DYWHeight":0,"Intersection2DYWLayoutGroupSizeWidth":0,"Intersection2DYWLayoutGroupSizeHeight":0,"Graphic3DCoordinatePoint":{"X":0,"Y":0},"Graphic3DWidth":0,"Graphic3DHeight":0,"Graphic3DLayoutGroupSizeWidth":0,"Graphic3DLayoutGroupSizeHeight":0},"ShowCalibrationBar":true,"ShowHorizontalChartLines":false,"ShowVerticalChartLines":false,"NonSelectedIntersectionLineTransparency":0.100000024,"FocusedValueSymbol":"DEVICE:\"xcp_demo\":\"$SigGen1$SigGen1.ampl\":P","ValueObjectConfigurations":[{"Symbol":"DEVICE:\"xcp_demo\":\"$SigGen1$SigGen1.signal_type\":P","SerializationColor":{"R":0,"G":0,"B":0,"A":255},"Collapsed":false,"SerializationFrameColor":{"R":0,"G":0,"B":0,"A":255},"ValueFormat":0,"AxisValueFormats":[],"NumericFormat":4,"AxisNumericFormats":[],"NumericFormatDigits":6,"IsActive":true,"CurrentChartViewType":2,"PointMarker":1,"IsValueAnnotationEnabled":false,"ValueAxisMin":0,"ValueAxisMax":4,"ValueAxisMinHome":0,"ValueAxisMaxHome":4,"ValueAxisPosition":0,"CommonValueAxisName":null,"CommonValueAxisLabel":"","CommonValueAxisMin":0,"CommonValueAxisMax":0,"CommonValueAxisMinHome":0,"CommonValueAxisMaxHome":0,"SerializationCommonValueAxisColor":{"R":0,"G":0,"B":0,"A":0},"CommonValueAxisID":0,"CommonValueAxisFormat":null,"CommonValueAxisPosition":0,"CommonXAxisLabel":"","CommonYAxisLabel":"","CustomAxisLabels":["","","","","",""]},{"Symbol":"DEVICE:\"xcp_demo\":\"$SigGen1$SigGen1.ampl\":P","SerializationColor":{"R":0,"G":0,"B":0,"A":255},"Collapsed":false,"SerializationFrameColor":{"R":0,"G":0,"B":0,"A":255},"ValueFormat":0,"AxisValueFormats":[],"NumericFormat":4,"AxisNumericFormats":[],"NumericFormatDigits":6,"IsActive":true,"CurrentChartViewType":2,"PointMarker":1,"IsValueAnnotationEnabled":false,"ValueAxisMin":0,"ValueAxisMax":100,"ValueAxisMinHome":0,"ValueAxisMaxHome":100,"ValueAxisPosition":0,"CommonValueAxisName":null,"CommonValueAxisLabel":"","CommonValueAxisMin":0,"CommonValueAxisMax":0,"CommonValueAxisMinHome":0,"CommonValueAxisMaxHome":0,"SerializationCommonValueAxisColor":{"R":0,"G":0,"B":0,"A":0},"CommonValueAxisID":0,"CommonValueAxisFormat":null,"CommonValueAxisPosition":0,"CommonXAxisLabel":"","CommonYAxisLabel":"","CustomAxisLabels":["","","","","",""]},{"Symbol":"DEVICE:\"xcp_demo\":\"$SigGen1$SigGen1.offset\":P","SerializationColor":{"R":0,"G":0,"B":0,"A":255},"Collapsed":false,"SerializationFrameColor":{"R":0,"G":0,"B":0,"A":255},"ValueFormat":0,"AxisValueFormats":[],"NumericFormat":4,"AxisNumericFormats":[],"NumericFormatDigits":6,"IsActive":true,"CurrentChartViewType":2,"PointMarker":1,"IsValueAnnotationEnabled":false,"ValueAxisMin":-100,"ValueAxisMax":100,"ValueAxisMinHome":-100,"ValueAxisMaxHome":100,"ValueAxisPosition":0,"CommonValueAxisName":null,"CommonValueAxisLabel":"","CommonValueAxisMin":0,"CommonValueAxisMax":0,"CommonValueAxisMinHome":0,"CommonValueAxisMaxHome":0,"SerializationCommonValueAxisColor":{"R":0,"G":0,"B":0,"A":0},"CommonValueAxisID":0,"CommonValueAxisFormat":null,"CommonValueAxisPosition":0,"CommonXAxisLabel":"","CommonYAxisLabel":"","CustomAxisLabels":["","","","","",""]},{"Symbol":"DEVICE:\"xcp_demo\":\"$SigGen1$SigGen1.period\":P","SerializationColor":{"R":0,"G":0,"B":0,"A":255},"Collapsed":false,"SerializationFrameColor":{"R":0,"G":0,"B":0,"A":255},"ValueFormat":0,"AxisValueFormats":[],"NumericFormat":4,"AxisNumericFormats":[],"NumericFormatDigits":6,"IsActive":true,"CurrentChartViewType":2,"PointMarker":1,"IsValueAnnotationEnabled":false,"ValueAxisMin":0.01,"ValueAxisMax":10,"ValueAxisMinHome":0.01,"ValueAxisMaxHome":10,"ValueAxisPosition":0,"CommonValueAxisName":null,"CommonValueAxisLabel":"","CommonValueAxisMin":0,"CommonValueAxisMax":0,"CommonValueAxisMinHome":0,"CommonValueAxisMaxHome":0,"SerializationCommonValueAxisColor":{"R":0,"G":0,"B":0,"A":0},"CommonValueAxisID":0,"CommonValueAxisFormat":null,"CommonValueAxisPosition":0,"CommonXAxisLabel":"","CommonYAxisLabel":"","CustomAxisLabels":["","","","","",""]},{"Symbol":"DEVICE:\"xcp_demo\":\"$SigGen1$SigGen1.phase\":P","SerializationColor":{"R":0,"G":0,"B":0,"A":255},"Collapsed":false,"SerializationFrameColor":{"R":0,"G":0,"B":0,"A":255},"ValueFormat":0,"AxisValueFormats":[],"NumericFormat":4,"AxisNumericFormats":[],"NumericFormatDigits":6,"IsActive":true,"CurrentChartViewType":2,"PointMarker":1,"IsValueAnnotationEnabled":false,"ValueAxisMin":0,"ValueAxisMax":3.14159,"ValueAxisMinHome":0,"ValueAxisMaxHome":3.14159,"ValueAxisPosition":0,"CommonValueAxisName":null,"CommonValueAxisLabel":"","CommonValueAxisMin":0,"CommonValueAxisMax":0,"CommonValueAxisMinHome":0,"CommonValueAxisMaxHome":0,"SerializationCommonValueAxisColor":{"R":0,"G":0,"B":0,"A":0},"CommonValueAxisID":0,"CommonValueAxisFormat":null,"CommonValueAxisPosition":0,"CommonXAxisLabel":"","CommonYAxisLabel":"","CustomAxisLabels":["","","","","",""]},{"Symbol":"DEVICE:\"xcp_demo\":\"$SigGen1$SigGen1.delay_us\":P","SerializationColor":{"R":0,"G":0,"B":0,"A":255},"Collapsed":false,"SerializationFrameColor":{"R":0,"G":0,"B":0,"A":255},"ValueFormat":0,"AxisValueFormats":[],"NumericFormat":4,"AxisNumericFormats":[],"NumericFormatDigits":6,"IsActive":true,"CurrentChartViewType":2,"PointMarker":1,"IsValueAnnotationEnabled":false,"ValueAxisMin":0,"ValueAxisMax":100000,"ValueAxisMinHome":0,"ValueAxisMaxHome":100000,"ValueAxisPosition":0,"CommonValueAxisName":null,"CommonValueAxisLabel":"","CommonValueAxisMin":0,"CommonValueAxisMax":0,"CommonValueAxisMinHome":0,"CommonValueAxisMaxHome":0,"SerializationCommonValueAxisColor":{"R":0,"G":0,"B":0,"A":0},"CommonValueAxisID":0,"CommonValueAxisFormat":null,"CommonValueAxisPosition":0,"CommonXAxisLabel":"","CommonYAxisLabel":"","CustomAxisLabels":["","","","","",""]}],"NumericGraphicControlPosition":0,"NumericGraphicControlSelectedTab":0,"GraphicControlPosition":0,"Height2DXControl":1,"Height2DYControl":1,"Height3DControl":2,"HeightNumericControl":1,"HeightChartControl":1,"HeightLegendControl":0.44999998807907104,"Width2DXControl":1,"Width2DYControl":1,"Width3DControl":2,"WidthNumericControl":2,"WidthChartControl":2,"WidthLegendControl":0.30000001192092896,"HeightValueControl":1,"WidthValueControl":1,"HeightNumericGraphicControl":1,"WidthNumericGraphicControl":1,"Height2DChartsControl":1,"Width2DChartsControl":1,"IsXAxisHeightSynchronizedBetweenCharts":true,"IsYAxisAreaWidthSynchronizedBetweenCharts":true,"SyncedXAxisHeight":NaN,"XWChartXAxisHeight":NaN,"YWChartXAxisHeight":NaN,"SyncedLeftAxisAreaWidth":NaN,"XWChartLeftAxisAreaWidth":NaN,"YWChartLeftAxisAreaWidth":NaN,"SyncedRightAxisAreaWidth":NaN,"XWChartRightAxisAreaWidth":NaN,"YWChartRightAxisAreaWidth":NaN,"LegendPosition":0,"LegendViewType":0,"LegendTableColumnAttributes":[{"TypeId":"1048594","Size":40},{"TypeId":"1048601","Size":45},{"TypeId":"31","Size":100},{"TypeId":"3","Size":250},{"TypeId":"16","Size":70},{"TypeId":"1048627","Size":100},{"TypeId":"1048631","Size":100},{"TypeId":"1048634","Size":100}],"LegendTabItemAttributes":[{"TypeId":"31","Size":100}],"FlipAxes":false,"AxisDisplayNameMode":3,"ReversedAxis":[false,false],"ShowUnits":false,"ShowObjectColor":true,"SortDescending":false,"SortAttributeId":null,"ShowWorkingPointHistory":false,"NumericViewValueObjectDisplayOption":1,"ValueColumnWidth":72,"ValueColumnWidthDouble":72.5,"ParameterGroup":"","ModuleName":"","GroupIsFunction":false,"NumericControlAxisAttributes":[],"NumericControlColumnAttributes":[{"TypeId":"31","Size":129.5}],"ChartViewValueObjectDisplayOption":1,"SerializationCameraPosition":{"X":1,"Y":1,"Z":-1},"SerializationCameraTarget":{"X":0,"Y":0.5,"Z":0},"IsValueAnnotationRotated":false,"EquidistantAxisPoints":false,"BarThickness":0.6,"WorkingPointMarker":0,"LinearWorkingPointInterpolation":true,"ShowAllIntersectionLines":false,"IsValueAxisIndependent":true,"TickLabelRotationAngle":-90,"IsTickLabelRotationEnabled":false,"IsTickLabelRightAligned":false,"ShowBoundarySurface":true,"ShowBoundarySurfaceGradient":false,"ShowCursorAsCrosshair":false,"XAxisAutoRange":true,"ValueAxisAutoRange":true,"ShowAllValueAxes":false,"DrawAxisBands":false,"CurrentColumnChartType":0,"SerializationCursorCrosshairColor":{"R":0,"G":0,"B":0,"A":255},"AlignBarToZero":true,"DefaultChartViewType":2,"AttributeColumnPositioning":1}} +PROPERTY_1={"Version":"1.3.0.0","Configuration":{"ArrayWindowSubControlConfiguration":{"NumericGraphicCompositeWidth":219,"NumericGraphicCompositeHeight":162,"LegendCoordinatePoint":{"X":0,"Y":0},"LegendWidth":0,"LegendHeight":0,"LegendLayoutGroupSizeWidth":0,"LegendLayoutGroupSizeHeight":0,"NumericCoordinatePoint":{"X":1,"Y":24},"NumericWidth":217,"NumericHeight":137,"NumericLayoutGroupSizeWidth":217,"NumericLayoutGroupSizeHeight":137,"Intersection2DXWCoordinatePoint":{"X":0,"Y":0},"Intersection2DXWWidth":0,"Intersection2DXWHeight":0,"Intersection2DXWLayoutGroupSizeWidth":0,"Intersection2DXWLayoutGroupSizeHeight":0,"Intersection2DYWCoordinatePoint":{"X":0,"Y":0},"Intersection2DYWWidth":0,"Intersection2DYWHeight":0,"Intersection2DYWLayoutGroupSizeWidth":0,"Intersection2DYWLayoutGroupSizeHeight":0,"Graphic3DCoordinatePoint":{"X":0,"Y":0},"Graphic3DWidth":0,"Graphic3DHeight":0,"Graphic3DLayoutGroupSizeWidth":0,"Graphic3DLayoutGroupSizeHeight":0},"ShowCalibrationBar":true,"ShowHorizontalChartLines":false,"ShowVerticalChartLines":false,"NonSelectedIntersectionLineTransparency":0.100000024,"FocusedValueSymbol":"DEVICE:\"xcp_demo\":\"$SigGen1$SigGen1.ampl\":P","ValueObjectConfigurations":[{"Symbol":"DEVICE:\"xcp_demo\":\"$SigGen1$SigGen1.signal_type\":P","SerializationColor":{"R":0,"G":0,"B":0,"A":255},"Collapsed":false,"SerializationFrameColor":{"R":0,"G":0,"B":0,"A":255},"ValueFormat":0,"AxisValueFormats":[],"NumericFormat":4,"AxisNumericFormats":[],"NumericFormatDigits":6,"IsActive":true,"CurrentChartViewType":2,"PointMarker":1,"IsValueAnnotationEnabled":false,"ValueAxisMin":0,"ValueAxisMax":4,"ValueAxisMinHome":0,"ValueAxisMaxHome":4,"ValueAxisPosition":0,"CommonValueAxisName":null,"CommonValueAxisLabel":"","CommonValueAxisMin":0,"CommonValueAxisMax":0,"CommonValueAxisMinHome":0,"CommonValueAxisMaxHome":0,"SerializationCommonValueAxisColor":{"R":0,"G":0,"B":0,"A":0},"CommonValueAxisID":0,"CommonValueAxisFormat":null,"CommonValueAxisPosition":0,"CommonXAxisLabel":"","CommonYAxisLabel":"","CustomAxisLabels":["","","","","",""]},{"Symbol":"DEVICE:\"xcp_demo\":\"$SigGen1$SigGen1.ampl\":P","SerializationColor":{"R":0,"G":0,"B":0,"A":255},"Collapsed":false,"SerializationFrameColor":{"R":0,"G":0,"B":0,"A":255},"ValueFormat":0,"AxisValueFormats":[],"NumericFormat":4,"AxisNumericFormats":[],"NumericFormatDigits":6,"IsActive":true,"CurrentChartViewType":2,"PointMarker":1,"IsValueAnnotationEnabled":false,"ValueAxisMin":0,"ValueAxisMax":100,"ValueAxisMinHome":0,"ValueAxisMaxHome":100,"ValueAxisPosition":0,"CommonValueAxisName":null,"CommonValueAxisLabel":"","CommonValueAxisMin":0,"CommonValueAxisMax":0,"CommonValueAxisMinHome":0,"CommonValueAxisMaxHome":0,"SerializationCommonValueAxisColor":{"R":0,"G":0,"B":0,"A":0},"CommonValueAxisID":0,"CommonValueAxisFormat":null,"CommonValueAxisPosition":0,"CommonXAxisLabel":"","CommonYAxisLabel":"","CustomAxisLabels":["","","","","",""]},{"Symbol":"DEVICE:\"xcp_demo\":\"$SigGen1$SigGen1.offset\":P","SerializationColor":{"R":0,"G":0,"B":0,"A":255},"Collapsed":false,"SerializationFrameColor":{"R":0,"G":0,"B":0,"A":255},"ValueFormat":0,"AxisValueFormats":[],"NumericFormat":4,"AxisNumericFormats":[],"NumericFormatDigits":6,"IsActive":true,"CurrentChartViewType":2,"PointMarker":1,"IsValueAnnotationEnabled":false,"ValueAxisMin":-100,"ValueAxisMax":100,"ValueAxisMinHome":-100,"ValueAxisMaxHome":100,"ValueAxisPosition":0,"CommonValueAxisName":null,"CommonValueAxisLabel":"","CommonValueAxisMin":0,"CommonValueAxisMax":0,"CommonValueAxisMinHome":0,"CommonValueAxisMaxHome":0,"SerializationCommonValueAxisColor":{"R":0,"G":0,"B":0,"A":0},"CommonValueAxisID":0,"CommonValueAxisFormat":null,"CommonValueAxisPosition":0,"CommonXAxisLabel":"","CommonYAxisLabel":"","CustomAxisLabels":["","","","","",""]},{"Symbol":"DEVICE:\"xcp_demo\":\"$SigGen1$SigGen1.period\":P","SerializationColor":{"R":0,"G":0,"B":0,"A":255},"Collapsed":false,"SerializationFrameColor":{"R":0,"G":0,"B":0,"A":255},"ValueFormat":0,"AxisValueFormats":[],"NumericFormat":4,"AxisNumericFormats":[],"NumericFormatDigits":6,"IsActive":true,"CurrentChartViewType":2,"PointMarker":1,"IsValueAnnotationEnabled":false,"ValueAxisMin":0.01,"ValueAxisMax":10,"ValueAxisMinHome":0.01,"ValueAxisMaxHome":10,"ValueAxisPosition":0,"CommonValueAxisName":null,"CommonValueAxisLabel":"","CommonValueAxisMin":0,"CommonValueAxisMax":0,"CommonValueAxisMinHome":0,"CommonValueAxisMaxHome":0,"SerializationCommonValueAxisColor":{"R":0,"G":0,"B":0,"A":0},"CommonValueAxisID":0,"CommonValueAxisFormat":null,"CommonValueAxisPosition":0,"CommonXAxisLabel":"","CommonYAxisLabel":"","CustomAxisLabels":["","","","","",""]},{"Symbol":"DEVICE:\"xcp_demo\":\"$SigGen1$SigGen1.phase\":P","SerializationColor":{"R":0,"G":0,"B":0,"A":255},"Collapsed":false,"SerializationFrameColor":{"R":0,"G":0,"B":0,"A":255},"ValueFormat":0,"AxisValueFormats":[],"NumericFormat":4,"AxisNumericFormats":[],"NumericFormatDigits":6,"IsActive":true,"CurrentChartViewType":2,"PointMarker":1,"IsValueAnnotationEnabled":false,"ValueAxisMin":0,"ValueAxisMax":3.14159,"ValueAxisMinHome":0,"ValueAxisMaxHome":3.14159,"ValueAxisPosition":0,"CommonValueAxisName":null,"CommonValueAxisLabel":"","CommonValueAxisMin":0,"CommonValueAxisMax":0,"CommonValueAxisMinHome":0,"CommonValueAxisMaxHome":0,"SerializationCommonValueAxisColor":{"R":0,"G":0,"B":0,"A":0},"CommonValueAxisID":0,"CommonValueAxisFormat":null,"CommonValueAxisPosition":0,"CommonXAxisLabel":"","CommonYAxisLabel":"","CustomAxisLabels":["","","","","",""]},{"Symbol":"DEVICE:\"xcp_demo\":\"$SigGen1$SigGen1.delay_us\":P","SerializationColor":{"R":0,"G":0,"B":0,"A":255},"Collapsed":false,"SerializationFrameColor":{"R":0,"G":0,"B":0,"A":255},"ValueFormat":0,"AxisValueFormats":[],"NumericFormat":4,"AxisNumericFormats":[],"NumericFormatDigits":6,"IsActive":true,"CurrentChartViewType":2,"PointMarker":1,"IsValueAnnotationEnabled":false,"ValueAxisMin":0,"ValueAxisMax":100000,"ValueAxisMinHome":0,"ValueAxisMaxHome":100000,"ValueAxisPosition":0,"CommonValueAxisName":null,"CommonValueAxisLabel":"","CommonValueAxisMin":0,"CommonValueAxisMax":0,"CommonValueAxisMinHome":0,"CommonValueAxisMaxHome":0,"SerializationCommonValueAxisColor":{"R":0,"G":0,"B":0,"A":0},"CommonValueAxisID":0,"CommonValueAxisFormat":null,"CommonValueAxisPosition":0,"CommonXAxisLabel":"","CommonYAxisLabel":"","CustomAxisLabels":["","","","","",""]}],"NumericGraphicControlPosition":0,"NumericGraphicControlSelectedTab":0,"GraphicControlPosition":0,"Height2DXControl":1,"Height2DYControl":1,"Height3DControl":2,"HeightNumericControl":1,"HeightChartControl":1,"HeightLegendControl":0.44999998807907104,"Width2DXControl":1,"Width2DYControl":1,"Width3DControl":2,"WidthNumericControl":2,"WidthChartControl":2,"WidthLegendControl":0.30000001192092896,"HeightValueControl":1,"WidthValueControl":1,"HeightNumericGraphicControl":1,"WidthNumericGraphicControl":1,"Height2DChartsControl":1,"Width2DChartsControl":1,"IsXAxisHeightSynchronizedBetweenCharts":true,"IsYAxisAreaWidthSynchronizedBetweenCharts":true,"SyncedXAxisHeight":NaN,"XWChartXAxisHeight":NaN,"YWChartXAxisHeight":NaN,"SyncedLeftAxisAreaWidth":NaN,"XWChartLeftAxisAreaWidth":NaN,"YWChartLeftAxisAreaWidth":NaN,"SyncedRightAxisAreaWidth":NaN,"XWChartRightAxisAreaWidth":NaN,"YWChartRightAxisAreaWidth":NaN,"LegendPosition":0,"LegendViewType":0,"LegendTableColumnAttributes":[{"TypeId":"1048594","Size":40},{"TypeId":"1048601","Size":45},{"TypeId":"31","Size":100},{"TypeId":"3","Size":250},{"TypeId":"16","Size":70},{"TypeId":"1048627","Size":100},{"TypeId":"1048631","Size":100},{"TypeId":"1048634","Size":100}],"LegendTabItemAttributes":[{"TypeId":"31","Size":100}],"FlipAxes":false,"AxisDisplayNameMode":3,"ReversedAxis":[false,false],"ShowUnits":false,"ShowObjectColor":true,"SortDescending":false,"SortAttributeId":null,"ShowWorkingPointHistory":false,"NumericViewValueObjectDisplayOption":1,"ValueColumnWidth":87,"ValueColumnWidthDouble":87,"ParameterGroup":"","ModuleName":"","GroupIsFunction":false,"NumericControlAxisAttributes":[],"NumericControlColumnAttributes":[{"TypeId":"31","Size":125}],"ChartViewValueObjectDisplayOption":1,"SerializationCameraPosition":{"X":1,"Y":1,"Z":-1},"SerializationCameraTarget":{"X":0,"Y":0.5,"Z":0},"IsValueAnnotationRotated":false,"EquidistantAxisPoints":false,"BarThickness":0.6,"WorkingPointMarker":0,"LinearWorkingPointInterpolation":true,"ShowAllIntersectionLines":false,"IsValueAxisIndependent":true,"TickLabelRotationAngle":-90,"IsTickLabelRotationEnabled":false,"IsTickLabelRightAligned":false,"ShowBoundarySurface":true,"ShowBoundarySurfaceGradient":false,"ShowCursorAsCrosshair":false,"XAxisAutoRange":true,"ValueAxisAutoRange":true,"ShowAllValueAxes":false,"DrawAxisBands":false,"CurrentColumnChartType":0,"SerializationCursorCrosshairColor":{"R":0,"G":0,"B":0,"A":255},"AlignBarToZero":true,"DefaultChartViewType":2,"AttributeColumnPositioning":1}} OBJECTS_COUNT=6 OBJECT_1=DEVICE:"xcp_demo":"$SigGen1$SigGen1.signal_type":P OBJECT_2=DEVICE:"xcp_demo":"$SigGen1$SigGen1.ampl":P @@ -1931,7 +1931,7 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_c5b530b1-47d1-4d04-b5a8-d39dd8001cb9 +GUID=DISPLAY_379a6299-fb3b-4328-bb57-18097ed3090b [WINDOW_8_OBJECT_2] Type=2 @@ -1980,7 +1980,7 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_fda9f046-8853-4bf7-9a4e-282077fb7a8d +GUID=DISPLAY_797cfbcf-f689-49c3-97bc-499880dd93e5 [WINDOW_8_OBJECT_3] Type=2 @@ -2029,7 +2029,7 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_4f6ac6ea-495b-489e-8c27-93517d54b2a7 +GUID=DISPLAY_18b0e01e-c2bb-4c63-b617-d7e54f0efac3 [WINDOW_8_OBJECT_4] Type=2 @@ -2078,7 +2078,7 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_10200761-2b42-46e2-89d9-fac2661e72f1 +GUID=DISPLAY_5aa44dc3-dbce-4ea9-a2df-b2e9a6bcce98 [WINDOW_8_OBJECT_5] Type=2 @@ -2127,7 +2127,7 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_1f32d7db-e939-4124-8cb3-6c5dc3a9fe42 +GUID=DISPLAY_4cc082c9-9426-4764-8fcb-5eaf93f3c4d4 [WINDOW_8_OBJECT_6] Type=2 @@ -2176,7 +2176,7 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_1159ccb5-51c2-40a0-b5ff-44edae7f913b +GUID=DISPLAY_ea6cfebc-d3c7-4c6d-839f-d97987d710ad [WINDOW_9] ProgID= @@ -2252,7 +2252,7 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_c140a198-fabc-46c2-9e32-1312e1cbfb90 +GUID=DISPLAY_59f56494-2a07-46b9-8b6e-51e03308ad99 [WINDOW_9_OBJECT_2] Type=2 @@ -2301,7 +2301,7 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_8a3c7c4b-6625-471a-8ddf-f26a9497799b +GUID=DISPLAY_959d4de0-16aa-4ba4-923c-2fe32313a022 [WINDOW_9_OBJECT_3] Type=2 @@ -2350,7 +2350,7 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_45084edb-3a3f-4eb6-b489-b655c1f391b1 +GUID=DISPLAY_ade9027d-1eae-4c43-8bc5-5c8e1b197ca8 [WINDOW_9_OBJECT_4] Type=2 @@ -2399,7 +2399,7 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_2ad8e476-e016-4e07-866c-bc1bab31c8dd +GUID=DISPLAY_22f4476a-3410-4d72-a356-8837d03ef7f7 [WINDOW_9_OBJECT_5] Type=2 @@ -2448,7 +2448,7 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_6335d3ed-57ed-4ccf-a96e-bf3a5136a71a +GUID=DISPLAY_43edd028-31c2-45ad-8963-37df224a9e6b [WINDOW_9_OBJECT_6] Type=2 @@ -2497,7 +2497,7 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_e210d6b3-c6f3-4e74-863e-6edf9063627e +GUID=DISPLAY_b473e767-a546-45cb-9575-384ff059c308 [WINDOWS] Count=12 diff --git a/examples/cpp_demo/CANape/xcp_demo_autodetect.a2l b/examples/cpp_demo/CANape/xcp_demo_autodetect.a2l index ca52200d..eb1db259 100644 --- a/examples/cpp_demo/CANape/xcp_demo_autodetect.a2l +++ b/examples/cpp_demo/CANape/xcp_demo_autodetect.a2l @@ -1,7 +1,7 @@ ASAP2_VERSION 1 71 /begin PROJECT cpp_demo "" -/begin HEADER "" VERSION "1.0" PROJECT_NO VECTOR /end HEADER +/begin HEADER "" VERSION "1.0" PROJECT_NO XCPlite /end HEADER /begin MODULE cpp_demo "" @@ -25,12 +25,12 @@ ALIGNMENT_INT64 1 /begin STRUCTURE_COMPONENT delay_us C_delay_us 0x4 /end STRUCTURE_COMPONENT /end TYPEDEF_STRUCTURE -/* Segment relative addressing mode: calseg=Parameters */ -/begin INSTANCE Parameters "Main parameters" ParametersT 0x80000000 /end INSTANCE +/* Absolute segment addressing mode: calseg=Parameters */ +/begin INSTANCE Parameters "Main parameters" ParametersT 0x23890 /end INSTANCE -/* Absolute addressing mode: default_event=mainloop (0), addr_ext=1 */ -/begin MEASUREMENT temperature "Motor temperature in °C" UBYTE conv.temperature 0 0 -50 200 ECU_ADDRESS 0x28000 ECU_ADDRESS_EXTENSION 1 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT VARIABLE /begin DEFAULT_EVENT_LIST EVENT 0x0 /end DEFAULT_EVENT_LIST /end DAQ_EVENT /end IF_DATA /end MEASUREMENT -/begin MEASUREMENT speed "Speed in km/h" FLOAT64_IEEE NO_COMPU_METHOD 0 0 0 250 ECU_ADDRESS 0x280C0 ECU_ADDRESS_EXTENSION 1 PHYS_UNIT "km/h" READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT VARIABLE /begin DEFAULT_EVENT_LIST EVENT 0x0 /end DEFAULT_EVENT_LIST /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/* Absolute addressing mode: default_event=mainloop (0), addr_ext=0 */ +/begin MEASUREMENT temperature "Motor temperature in °C" UBYTE conv.temperature 0 0 -50 200 ECU_ADDRESS 0x28000 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT VARIABLE /begin DEFAULT_EVENT_LIST EVENT 0x0 /end DEFAULT_EVENT_LIST /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT speed "Speed in km/h" FLOAT64_IEEE NO_COMPU_METHOD 0 0 0 250 ECU_ADDRESS 0x280C0 PHYS_UNIT "km/h" READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT VARIABLE /begin DEFAULT_EVENT_LIST EVENT 0x0 /end DEFAULT_EVENT_LIST /end DAQ_EVENT /end IF_DATA /end MEASUREMENT /* Stack frame relative addressing mode: event=mainloop (0), addr_ext=2 */ /begin MEASUREMENT loop_counter "Mainloop loop counter" UWORD NO_COMPU_METHOD 0 0 0 65535 ECU_ADDRESS 0xFBA6 ECU_ADDRESS_EXTENSION 2 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0x0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT @@ -52,11 +52,11 @@ ALIGNMENT_INT64 1 /begin STRUCTURE_COMPONENT lookup LookupTableT 0x20 /end STRUCTURE_COMPONENT /end TYPEDEF_STRUCTURE -/* Segment relative addressing mode: calseg=SigGen1 */ -/begin INSTANCE SigGen1 "Signal parameters for the signal generator" SignalParametersT 0x80010000 /end INSTANCE +/* Absolute segment addressing mode: calseg=SigGen1 */ +/begin INSTANCE SigGen1 "Signal parameters for the signal generator" SignalParametersT 0x23898 /end INSTANCE -/* Segment relative addressing mode: calseg=SigGen2 */ -/begin INSTANCE SigGen2 "Signal parameters for the signal generator" SignalParametersT 0x80020000 /end INSTANCE +/* Absolute segment addressing mode: calseg=SigGen2 */ +/begin INSTANCE SigGen2 "Signal parameters for the signal generator" SignalParametersT 0x238F0 /end INSTANCE /* Relative addressing mode: event=SigGen1 (1), addr_ext=3 */ /begin MEASUREMENT SigGen1.value_ "Signal generator output" FLOAT64_IEEE NO_COMPU_METHOD 0 0 -100 100 ECU_ADDRESS 0x10018 ECU_ADDRESS_EXTENSION 3 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0x1 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT @@ -144,8 +144,8 @@ ALIGNMENT_INT64 1 /end COMPU_VTAB /begin MOD_PAR "" -EPK "_Sep_26_2025_15_40_50" ADDR_EPK 0xFFFF0000 -/begin MEMORY_SEGMENT Parameters "" DATA FLASH INTERN 0x80000000 0x8 -1 -1 -1 -1 -1 +EPK "_Oct__1_2025_11_26_42" ADDR_EPK 0xFFFF0000 +/begin MEMORY_SEGMENT Parameters "" DATA FLASH INTERN 0x00023890 0x8 -1 -1 -1 -1 -1 /begin IF_DATA XCP /begin SEGMENT 0 2 0 0 0 /begin CHECKSUM XCP_CRC_16_CITT MAX_BLOCK_SIZE 0xFFFF EXTERNAL_FUNCTION "" /end CHECKSUM @@ -154,7 +154,7 @@ EPK "_Sep_26_2025_15_40_50" ADDR_EPK 0xFFFF0000 /end SEGMENT /end IF_DATA /end MEMORY_SEGMENT -/begin MEMORY_SEGMENT SigGen1 "" DATA FLASH INTERN 0x80010000 0x58 -1 -1 -1 -1 -1 +/begin MEMORY_SEGMENT SigGen1 "" DATA FLASH INTERN 0x00023898 0x58 -1 -1 -1 -1 -1 /begin IF_DATA XCP /begin SEGMENT 1 2 0 0 0 /begin CHECKSUM XCP_CRC_16_CITT MAX_BLOCK_SIZE 0xFFFF EXTERNAL_FUNCTION "" /end CHECKSUM @@ -163,7 +163,7 @@ EPK "_Sep_26_2025_15_40_50" ADDR_EPK 0xFFFF0000 /end SEGMENT /end IF_DATA /end MEMORY_SEGMENT -/begin MEMORY_SEGMENT SigGen2 "" DATA FLASH INTERN 0x80020000 0x58 -1 -1 -1 -1 -1 +/begin MEMORY_SEGMENT SigGen2 "" DATA FLASH INTERN 0x000238F0 0x58 -1 -1 -1 -1 -1 /begin IF_DATA XCP /begin SEGMENT 2 2 0 0 0 /begin CHECKSUM XCP_CRC_16_CITT MAX_BLOCK_SIZE 0xFFFF EXTERNAL_FUNCTION "" /end CHECKSUM @@ -217,7 +217,7 @@ OPTIONAL_LEVEL1_CMD GET_VERSION /begin DAQ DYNAMIC 0 3 0 OPTIMISATION_TYPE_DEFAULT ADDRESS_EXTENSION_FREE IDENTIFICATION_FIELD_TYPE_RELATIVE_BYTE GRANULARITY_ODT_ENTRY_SIZE_DAQ_BYTE 0xF8 OVERLOAD_INDICATION_PID /begin TIMESTAMP_SUPPORTED -0x1 SIZE_DWORD UNIT_1US TIMESTAMP_FIXED +0x1 SIZE_DWORD UNIT_1NS TIMESTAMP_FIXED /end TIMESTAMP_SUPPORTED /begin EVENT "mainloop" "mainloop" 0x0 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT /begin EVENT "SigGen1" "SigGen1" 0x1 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT diff --git a/examples/cpp_demo/src/main.cpp b/examples/cpp_demo/src/main.cpp index 85fe9ea1..bde2b939 100644 --- a/examples/cpp_demo/src/main.cpp +++ b/examples/cpp_demo/src/main.cpp @@ -14,12 +14,13 @@ //----------------------------------------------------------------------------------------------------- // XCP parameters -#define OPTION_PROJECT_NAME "cpp_demo" // A2L project name -#define OPTION_USE_TCP false // TCP or UDP -#define OPTION_SERVER_PORT 5555 // Port -#define OPTION_SERVER_ADDR {0, 0, 0, 0} // Bind addr, 0.0.0.0 = ANY -#define OPTION_QUEUE_SIZE (1024 * 256) // Size of the measurement queue in bytes -#define OPTION_LOG_LEVEL 3 // Log level, 0 = no log, 1 = error, 2 = warning, 3 = info, 4 = debug +#define OPTION_PROJECT_NAME "cpp_demo" // A2L project name +#define OPTION_PROJECT_EPK "v10 " __TIME__ // EPK version string +#define OPTION_USE_TCP false // TCP or UDP +#define OPTION_SERVER_PORT 5555 // Port +#define OPTION_SERVER_ADDR {0, 0, 0, 0} // Bind addr, 0.0.0.0 = ANY +#define OPTION_QUEUE_SIZE (1024 * 256) // Size of the measurement queue in bytes +#define OPTION_LOG_LEVEL 3 // Log level, 0 = no log, 1 = error, 2 = warning, 3 = info, 4 = debug //----------------------------------------------------------------------------------------------------- // Demo calibration parameters @@ -30,7 +31,7 @@ struct ParametersT { }; // Default values -constexpr ParametersT kParameters = {.counter_max = 1000, .delay_us = 1000}; +const ParametersT kParameters = {.counter_max = 1000, .delay_us = 1000}; //----------------------------------------------------------------------------------------------------- // Demo global measurement values @@ -87,7 +88,7 @@ int main() { // Initialize the XCP singleton, activate XCP, must be called before starting the server // If XCP is not activated, the server will not start and all XCP instrumentation will be passive with minimal overhead - XcpInit(true); + XcpInit(OPTION_PROJECT_NAME, OPTION_PROJECT_EPK, true); // Initialize the XCP Server uint8_t addr[4] = OPTION_SERVER_ADDR; @@ -98,7 +99,7 @@ int main() { // Enable A2L generation // Set mode to write once to create stable A2L files, this also enables calibration segment persistence and freeze support - if (!A2lInit(OPTION_PROJECT_NAME, NULL, addr, OPTION_SERVER_PORT, OPTION_USE_TCP, A2L_MODE_WRITE_ONCE | A2L_MODE_FINALIZE_ON_CONNECT | A2L_MODE_AUTO_GROUPS)) { + if (!A2lInit(addr, OPTION_SERVER_PORT, OPTION_USE_TCP, A2L_MODE_WRITE_ONCE | A2L_MODE_FINALIZE_ON_CONNECT | A2L_MODE_AUTO_GROUPS)) { std::cerr << "Failed to initialize A2L generator" << std::endl; return 1; } @@ -107,7 +108,7 @@ int main() { // This calibration segment has a working page (RAM) and a reference page (FLASH), it creates a MEMORY_SEGMENT in the A2L file // It provides safe (thread safe against XCP modifications), lock-free and consistent access to the calibration parameters // It supports XCP/ECU independent page switching, checksum calculation and reinitialization (copy reference page to working page) - auto calseg = xcplib::CreateCalSeg("Parameters", kParameters); + auto calseg = xcplib::CreateCalSeg("kParameters", &kParameters); // Add the calibration segment description as a typedef instance to the A2L file A2lTypedefBegin(ParametersT, "A2L Typedef for ParametersT"); @@ -148,8 +149,8 @@ int main() { // Note that the signal generator threads register measurements in the A2L file as well // This is not in conflict because the main thread has already registered its measurements above // Otherwise use A2lLock() and A2lUnlock() to avoid race conditions when registering measurements, the A2L generator macros for are not thread safe by itself - signal_generator::SignalGenerator signal_generator_1("SigGen1", kSignalParameters1); - signal_generator::SignalGenerator signal_generator_2("SigGen2", kSignalParameters2); + signal_generator::SignalGenerator signal_generator_1("SigGen1", &kSignalParameters1); + signal_generator::SignalGenerator signal_generator_2("SigGen2", &kSignalParameters2); // Optional for testing: Force finalizing the A2L file, otherwise it will be finalized on XCP tool connect sleepUs(100000); diff --git a/examples/cpp_demo/src/sig_gen.cpp b/examples/cpp_demo/src/sig_gen.cpp index c7969496..924786d1 100644 --- a/examples/cpp_demo/src/sig_gen.cpp +++ b/examples/cpp_demo/src/sig_gen.cpp @@ -24,12 +24,12 @@ constexpr double kPi = 3.14159265358979323846; constexpr double k2Pi = (kPi * 2); // Constructor - creates the signal generator with the given instance name and parameters -SignalGenerator::SignalGenerator(const char *instance_name, SignalParametersT params) : signal_parameters_(instance_name, params), instance_name_(instance_name) { +SignalGenerator::SignalGenerator(const char *instance_name, const SignalParametersT *params) : signal_parameters_(instance_name, params), instance_name_(instance_name) { // Global once A2l registration of SignalParametersT typedef if (A2lOnce()) { - params.lookup.A2lRegisterTypedef(); // Register the lookup table typedef + params->lookup.A2lRegisterTypedef(); // Register the lookup table typedef A2lTypedefBegin(SignalParametersT, "A2L typedef for SignalParametersT"); A2lCreateEnumConversion(signal_type_enum, "5 0 \"SINE\" 1 \"SQUARE\" 2 \"TRIANGLE\" 3 \"SAWTOOTH\" 4 \"ARBITRARY\""); diff --git a/examples/cpp_demo/src/sig_gen.hpp b/examples/cpp_demo/src/sig_gen.hpp index 59674f7e..4d842c2a 100644 --- a/examples/cpp_demo/src/sig_gen.hpp +++ b/examples/cpp_demo/src/sig_gen.hpp @@ -53,7 +53,7 @@ class SignalGenerator { double Calculate(double time); // Calculate waveform value based on time public: - SignalGenerator(const char *instance_name, SignalParametersT params); + SignalGenerator(const char *instance_name, const SignalParametersT *params); ~SignalGenerator(); [[nodiscard]] double GetValue() const { return value_; } // Getter for the current value diff --git a/examples/hello_xcp/CANape.png b/examples/hello_xcp/CANape.png index ade36244..a0126fe0 100644 Binary files a/examples/hello_xcp/CANape.png and b/examples/hello_xcp/CANape.png differ diff --git a/examples/hello_xcp/CANape/CANape.ini b/examples/hello_xcp/CANape/CANape.ini index b0e54fc1..dcf3a651 100644 --- a/examples/hello_xcp/CANape/CANape.ini +++ b/examples/hello_xcp/CANape/CANape.ini @@ -1,6 +1,6 @@ [!!!!!_CONSISTENCY_CHECK_START_SECTION_!!!!!] -GUID={2F5508C2-5DBC-4649-A5AB-08C4AFA2B166} +GUID={36A02BC3-E938-477F-B502-6057C1FD8B6D} [FILE_INFO] Identification=CANape-Project-File @@ -14,8 +14,8 @@ PrgDate=16.06.2025 Description= CreationTime=21:03 CreationDate=07/07/2024 ; Month/Day/Year -ModificationTime=18:36 -ModificationDate=09/27/2025 ; Month/Day/Year +ModificationTime=21:27 +ModificationDate=10/28/2025 ; Month/Day/Year Protected=0 CurrentWindowsACP=1252 @@ -973,14 +973,14 @@ DIMENSION_LINE_COUNT=0 [DEVICE_EXPLORER] ScreenDPIinSection=192 -POSX=280 -POSX_dpi96=140 -POSY=194 -POSY_dpi96=97 -SIZEX=2860 -SIZEX_dpi96=1430 -SIZEY=1704 -SIZEY_dpi96=852 +POSX=72 +POSX_dpi96=36 +POSY=60 +POSY_dpi96=30 +SIZEX=2324 +SIZEX_dpi96=1162 +SIZEY=1448 +SIZEY_dpi96=724 SHOWTOOLBAR=1 SHOWSTATUSBAR=1 SHOWGRID=0 @@ -988,10 +988,10 @@ RIGHTPANE2HEIGHT=-2 RIGHTPANE2HEIGHT_dpi96=-1 TREEX=450 TREEX_dpi96=225 -TREEY=1513 -TREEY_dpi96=757 +TREEY=1257 +TREEY_dpi96=629 ACTIVEPANE=1 -SELECTED_TREENODE=Devices/xcp_demo_Device/Database +SELECTED_TREENODE=Devices/xcp_demo_Device/Memory Segments FIRSTVISIBLE_TREENODE=Devices TREEEXPAND_COUNT=7 TREEEXPAND_0=Devices @@ -1007,9 +1007,9 @@ TREEEXPAND_6=Networks/ETH_Network_Network/xcp_demo_Device/Protocol [DEVICE_WIZARD] ScreenDPIinSection=192 -Left=97 +Left=98 Left_dpi96=49 -Top=1653 +Top=1654 Top_dpi96=827 Width=1556 Width_dpi96=778 @@ -1021,10 +1021,10 @@ ConfigurationJson={"RemoteServiceDataList":[{"DisplayName":"CANape Master","Ip": [DlgCommentWrapper] ScreenDPIinSection=192 -WindowLeft=1035 -WindowLeft_dpi96=518 -WindowTop=480 -WindowTop_dpi96=240 +WindowLeft=540 +WindowLeft_dpi96=270 +WindowTop=278 +WindowTop_dpi96=139 WindowWidth=1350 WindowWidth_dpi96=675 WindowHeight=923 @@ -1032,10 +1032,10 @@ WindowHeight_dpi96=462 [DlgMdfComment] ScreenDPIinSection=192 -WindowLeft=1048 -WindowLeft_dpi96=524 -WindowTop=538 -WindowTop_dpi96=269 +WindowLeft=553 +WindowLeft_dpi96=277 +WindowTop=336 +WindowTop_dpi96=168 WindowWidth=1324 WindowWidth_dpi96=662 WindowHeight=786 @@ -1313,7 +1313,7 @@ XCP_OPTIONAL_CMD_AUTO_LEARNING=1 XCP_OPTIONAL_SUB_CMD_AVAILABLE_0=3 XCP_OPTIONAL_SUB_CMD_AVAILABLE_1=2 XCP_OPTIONAL_SUB_CMD_AVAILABLE_2=2 -XCP_DAQ_PROPERTIES=0x15 +XCP_DAQ_PROPERTIES=0x13 XCP_DAQ_KEY_BYTE=0xC0 XCP_DAQ_TIMESTAMP_MODE=0x0C XCP_DAQ_TIMESTAMP_TICKS=1 @@ -1385,14 +1385,14 @@ BEG_CAL_SERVICE=0x1f1 END_CAL_SERVICE=0x2f1 TEST_CONNECTION_PERIOD=0 OVERRUN_HANDLING=0 -EVENT_COUNT=2 +EVENT_COUNT=3 EVENT_CHANNEL_0=0x0000 -EVENT_CYCLE_0=0 -EVENT_SAMPLE_UNIT_0=3 +EVENT_CYCLE_0=100 +EVENT_SAMPLE_UNIT_0=7 EVENT_MODE_0=4 EVENT_PRIO_0=0 EVENT_MAX_DAQ_LIST_0=255 -EVENT_NAME_0=mainloop +EVENT_NAME_0=async EVENT_MULTISAMPLES_0=0 IGNORE_FIX_EVENTS=0 ECU_CYCLE_TIME=0 @@ -1403,8 +1403,8 @@ DETECT_SYNC_PULSE=0 GENERATE_SYNC_PULSE=0 TIME_CORR_MULTICAST=0 DAQ_TIMEOUT=0 -DAQ_RESUME_SUPPORTED=1 -DAQ_PRESCALER_SUPPORTED=0 +DAQ_RESUME_SUPPORTED=0 +DAQ_PRESCALER_SUPPORTED=1 DAQ_SINGLE_EVENT=0 DTO_SINGLE_EXT=0 DOUBLE_AS_FLOAT=0 @@ -1419,7 +1419,7 @@ PSEUDO_CAN_ID_START=2415919104 DSP_MODE=0 DAQ_LIST_AUTODETECT=1 DAQ_COUNT=0 -DAQ_CONFIG_ID=32840 +DAQ_CONFIG_ID=32832 DAQ_START_STOP_ALL_DISABLED=0 INIT_CAL_PAGE_SEGMENTWISE=0 CALRAM_CHECK_INITIAL_PAGE=1 @@ -1516,8 +1516,8 @@ ROM_PAGE_ID=0x1 RAM_PAGE_ID_EXT=0x0 ROM_PAGE_ID_EXT=0x0 FLASH_PAGE_ADDRESS_MAPPING_ENABLED=1 -MEMORY_SEGMENT_COUNT=1 -MEMORY_SEGMENT_NAME_1=Parameters +MEMORY_SEGMENT_COUNT=2 +MEMORY_SEGMENT_NAME_1=epk MEMORY_SEGMENT_TYPE_1=FLASH,DATA,INTERN MEMORY_SEGMENT_SIZE_1=0x0000000C MEMORY_SEGMENT_ADDR_1=0x80000000 @@ -1525,7 +1525,7 @@ MEMORY_SEGMENT_ADDR_EXT_1=0x00 MEMORY_SEGMENT_ATTRIBUTE_1=0x00000000 MEMORY_SEGMENT_FLASH_OFFSET_1=0x00000000 MEMORY_SEGMENT_ADDRESS_MAPPING_1= -MEMORY_SEGMENT_NAME_2=Parameters +MEMORY_SEGMENT_NAME_2=params MEMORY_SEGMENT_TYPE_2=FLASH,DATA,INTERN MEMORY_SEGMENT_SIZE_2=0x0000000C MEMORY_SEGMENT_ADDR_2=0x80010000 @@ -1533,7 +1533,7 @@ MEMORY_SEGMENT_ADDR_EXT_2=0x00 MEMORY_SEGMENT_ATTRIBUTE_2=0x00000000 MEMORY_SEGMENT_FLASH_OFFSET_2=0x00000000 MEMORY_SEGMENT_ADDRESS_MAPPING_2= -CALRAM_SECTOR_NAME_1=Parameters +CALRAM_SECTOR_NAME_1=epk CALRAM_SECTOR_TYPE_1=FLASH,DATA,INTERN CALRAM_SECTOR_SIZE_1=0x0000000C CALRAM_SECTOR_ADDR_1=0x80000000 @@ -1541,7 +1541,7 @@ CALRAM_SECTOR_ADDR_EXT_1=0x00 CALRAM_SECTOR_ATTRIBUTE_1=0x00000000 CALRAM_SECTOR_FLASH_OFFSET_1=0x00000000 CALRAM_SECTOR_ADDRESS_MAPPING_1= -CALRAM_SECTOR_NAME_2=Parameters +CALRAM_SECTOR_NAME_2=params CALRAM_SECTOR_TYPE_2=FLASH,DATA,INTERN CALRAM_SECTOR_SIZE_2=0x0000000C CALRAM_SECTOR_ADDR_2=0x80010000 @@ -1549,14 +1549,14 @@ CALRAM_SECTOR_ADDR_EXT_2=0x00 CALRAM_SECTOR_ATTRIBUTE_2=0x00000000 CALRAM_SECTOR_FLASH_OFFSET_2=0x00000000 CALRAM_SECTOR_ADDRESS_MAPPING_2= -CALRAM_SECTOR_COUNT=1 +CALRAM_SECTOR_COUNT=2 FLASH_SECTOR_COUNT=0 FLASH_GROUP_COUNT=0 TRANSPORT_LAYER_INSTANCE_NAME= PROTOCOL_TYPE=4 PACKET_CTR=0 TRANSPORT_LAYER_VERSION=260 -HOST=192.168.8.133 +HOST=192.168.0.101 PORT=5555 LOCAL_PORT=0 TRANSPORT_LAYER_PROTOCOL=0 @@ -1629,7 +1629,7 @@ EVENT_SAMPLE_UNIT_1=3 EVENT_MODE_1=4 EVENT_PRIO_1=0 EVENT_MAX_DAQ_LIST_1=255 -EVENT_NAME_1=calc_speed +EVENT_NAME_1=mainloop EVENT_MULTISAMPLES_1=0 EVENT_MIN_CYCLE_TIME_CYCLE_1=0 EVENT_MIN_CYCLE_TIME_UNIT_1=9 @@ -1637,6 +1637,17 @@ EVENT_DPM_SUPPORTED_1=0 FLASH_OPTIMIZATION_SECTOR_CHECKSUM=0 THESAURUS_NAME=0 MapXcpEventsByName=0 +EVENT_CHANNEL_2=0x0002 +EVENT_CYCLE_2=0 +EVENT_SAMPLE_UNIT_2=3 +EVENT_MODE_2=4 +EVENT_PRIO_2=0 +EVENT_MAX_DAQ_LIST_2=255 +EVENT_NAME_2=calc_power +EVENT_MULTISAMPLES_2=0 +EVENT_MIN_CYCLE_TIME_CYCLE_2=0 +EVENT_MIN_CYCLE_TIME_UNIT_2=9 +EVENT_DPM_SUPPORTED_2=0 [MODULES] CREATE_SYSTEM_DEVICE=1 @@ -1828,6 +1839,13 @@ DATAMAN_REDUCENAMEFORSTRUCTERBASEFILTER=0 [PARASETEXPLORER-PRE_POST_PROCESS] SHOW_PREPROCESSDIALOG=1 +LOAD_GLOBAL_FILTER=0 +FILECOUNT=0 +CHECKED_CHILDNODES_COUNT=2 +GROUPFILTERCOUNT=0 +PARENT_NODE=9909 +CHILD_NODE_0=80000000-8000000B epk +CHILD_NODE_1=80010000-8001000B params [PRINTING] ScreenDPI=192 @@ -2397,9 +2415,9 @@ SELECT_SORT_COLUMN_ID=31 SELECT_SORT_UPWARD=1 LAST_PAGE_NAME_DLG_VARIABLE= LAST_PAGE_ID_DLG_VARIABLE=21006 -OBJECT_DIALOG_WITH=892 +OBJECT_DIALOG_WITH=1190 OBJECT_DIALOG_WITH_dpi96=595 -OBJECT_DIALOG_HEIGHT=481 +OBJECT_DIALOG_HEIGHT=642 OBJECT_DIALOG_HEIGHT_dpi96=321 [DB_EXPLORER_SEARCH_FILTER] @@ -2426,15 +2444,15 @@ PARENT= [DlgSaveConfigsMoreLess] ScreenDPIinSection=192 -ColWidthName=700 -ColWidthDisplay=460 +ColWidthName=699 +ColWidthDisplay=459 ShowMore=0 MoreHeight=588 MoreHeight_dpi96=294 -WindowLeft=1086 -WindowLeft_dpi96=543 -WindowTop=623 -WindowTop_dpi96=312 +WindowLeft=591 +WindowLeft_dpi96=296 +WindowTop=420 +WindowTop_dpi96=210 WindowWidth=1248 WindowWidth_dpi96=624 WindowHeight=260 @@ -2613,199 +2631,6 @@ COLUMN1_dpi96=400 COLUMN2=274 COLUMN2_dpi96=183 -[DEVICE_EXPLORER_COLUMNLIST_CHANNELS] -ScreenDPIinSection=192 -ColumnCount=4 -Column_0=0, 306 -Column_0_dpi96=0, 153 -Column_1=1245185, 132 -Column_1_dpi96=1245185, 66 -Column_2=1245186, 66 -Column_2_dpi96=1245186, 33 -Column_3=1245187, 106 -Column_3_dpi96=1245187, 53 -ColumnIdSort=-1 -SortUpward=1 - -[DEVICE_EXPLORER_COLUMNLIST_DEVICES] -ScreenDPIinSection=192 -ColumnCount=10 -Column_0=34, 96 -Column_0_dpi96=34, 48 -Column_1=0, 460 -Column_1_dpi96=0, 230 -Column_2=131078, 160 -Column_2_dpi96=131078, 80 -Column_3=131103, 100 -Column_3_dpi96=131103, 50 -Column_4=131079, 100 -Column_4_dpi96=131079, 50 -Column_5=262145, 240 -Column_5_dpi96=262145, 120 -Column_6=131085, 200 -Column_6_dpi96=131085, 100 -Column_7=131080, 240 -Column_7_dpi96=131080, 120 -Column_8=131081, 160 -Column_8_dpi96=131081, 80 -Column_9=196609, 100 -Column_9_dpi96=196609, 50 -ColumnIdSort=-1 -SortUpward=1 - -[DEVICE_EXPLORER_COLUMNLIST_NETWORKS] -ScreenDPIinSection=192 -ColumnCount=6 -Column_0=34, 64 -Column_0_dpi96=34, 32 -Column_1=0, 304 -Column_1_dpi96=0, 152 -Column_2=983041, 192 -Column_2_dpi96=983041, 96 -Column_3=983042, 530 -Column_3_dpi96=983042, 265 -Column_4=983043, 252 -Column_4_dpi96=983043, 126 -Column_5=983044, 300 -Column_5_dpi96=983044, 150 -ColumnIdSort=-1 -SortUpward=1 - -[COLOR_SCHEME_LIST] -COLOR_SCHEME0=COLOR_SCHEMEUSER_DEFINED -SCHEMES_COUNT=1 -ACTIVE=COLOR_SCHEME_H_CANAPE_CLASSIC -CURRENT_SCHEME_INDEX=0 - -[COLOR_SCHEMEUSER_DEFINED] -IS_USER_DEFINED=1 -SCHEME_NAME=[none] -ColorDisplay1=FF00 -1 8F400 -1 -ColorDisplay2=FF -1 8F4 -1 -ColorDisplay3=FFFF -1 F4F4 -1 -ColorDisplay4=FFFF00 -1 F4F400 -1 -ColorDisplay5=FF00FF -1 F400F4 -1 -ColorDisplay6=80FF -1 80F4 -1 -ColorDisplay7=FF8080 -1 F40000 -1 -ColorDisplay8=FFFFFF -1 0 -1 -ColorDisplay9=AA00 -1 AA00 -1 -ColorDisplay10=CC -1 CC -1 -ColorDisplay11=7070 -1 7070 -1 -ColorDisplay12=FFAA00 -1 FFAA00 -1 -ColorDisplay13=FF00AA -1 FF00AA -1 -ColorDisplay14=55AA -1 55AA -1 -ColorDisplay15=AA5555 -1 AA5555 -1 -ColorDisplay16=AAFFFF -1 AAFFFF -1 -ColorDisplay17=FFAA -1 FFAA -1 -ColorDisplay18=8080FF -1 8080FF -1 -ColorDisplay19=AAAA -1 AAAA -1 -ColorDisplay20=AAAA00 -1 AAAA00 -1 -ColorDisplay21=FFAAFF -1 FFAAFF -1 -ColorDisplay22=AAAAFF -1 AAAAFF -1 -ColorDisplay23=FFAAAA -1 FFAAAA -1 -ColorDisplay24=AAFFAA -1 AAFFAA -1 -ColorMarker1=FFFF00 -1 C6C600 -1 -ColorMarker2=FFFF -1 E1E1 -1 -ColorTrigger=FF00 -1 FF00 -1 -ColorEventAudio=A6620D -1 A6620D -1 -ColorEventMarker=FF -1 E7 -1 -ColorEventOther=FFFFFF -1 BABABA -1 -ColorHitMarker=FF00FF -1 FF00FF -1 -ColorGrid=8000 -1 8000 -1 -ColorBackground=0 -1 FFFFFF -1 -ColorChanged=FF0000 -1 FF0000 -1 -ColorWindowBg=C0C0C0 15 FFFFFF -1 -ColorAxis=FFFFFF -1 0 -1 -ColorAxisBackground=0 -1 FFFFFF -1 -ColorAxisSameScaled=FFFFFF -1 0 -1 -ColorAxisText=0 -1 0 -1 -ColorComments=FFFF00 -1 FFFF00 -1 -ColorCalComments=FFFF00 -1 FFFF00 -1 -ColorLegend=0 15 FFFFFF -1 -ColorLegendText=0 18 0 18 -ColorWindowFrameFocus=606060 -1 CEA27D -1 -ColorWindowFrameButtons=0 -1 0 -1 -ColorHexWinCalRam=8000 -1 8000 -1 -ColorHexWinNotCalRam=FF -1 FF -1 -ColorHexWinDbObject=80FFFF -1 80FFFF -1 -ColorHexWinInvalid=AFAFFF -1 AFAFFF -1 -ColorHexWinInvalidDb=FF -1 FF -1 -ColorHexWinSelection=FF 13 FF 13 -ColorHexWinSelText=0 14 0 14 -ColorWriteText=FFFF00 -1 FFFF00 -1 -ColorValLimitOK=FF00 -1 FF00 -1 -ColorValLimitWarn=FFFF -1 FFFF -1 -ColorValLimitError=FF -1 FF -1 -ColorActiveTitleLeft=54E3 2 54E3 2 -ColorActiveTitleRight=3D95FF 27 3D95FF 27 -ColorActiveTitleText=FFFFFF 9 FFFFFF 9 -ColorInactiveTitleLeft=7A96DF 3 7A96DF 3 -ColorInactiveTitleRight70=7A96DF 28 7A96DF 28 -ColorInactiveTitleText=D8E4F8 19 D8E4F8 19 -ColorMeaCursorTooltip=808080 -1 808080 -1 -ColorMeaCursorTooltipTxt=FFFFFF -1 FFFFFF -1 -ColorDisplayGray=999999 -1 999999 -1 -ColorDisplaySubGrid=4000 -1 4000 -1 -ColorGraphBackground=D2D2D2 -1 EEEEEE -1 -ColorInvalidSignal=F0F0F0 -1 F0F0F0 -1 -ColorLostVariable=C0C0C0 -1 C0C0C0 -1 -ColorMoveFrame=FAD5A3 -1 FAD5A3 -1 -ColorResizeMarkers=646464 -1 646464 -1 -ColorPageBackground=D8C7BC -1 D8C7BC -1 -ColorDisabledLegendText=A0A0A0 17 A0A0A0 17 -ColorBordersHighlight=FFFFFF 20 0 20 -ColorBordersShadow=A0A0A0 16 0 16 -ColorLookupTableX=FF -1 FF -1 -ColorLookupTableY=8000 -1 8000 -1 -ColorLookupTableZ=FF0000 -1 FF0000 -1 -ColorLookupTableZ4=FFFF00 -1 FFFF00 -1 -ColorLookupTableZ5=FF00FF -1 FF00FF -1 -ColorActiveCell=30FFFF -1 30FFFF -1 -ColorActiveCellText=0 -1 0 -1 -ColorMissingValues=FF -1 FF -1 -ColorBackgroundValues=FFFFFF -1 FFFFFF -1 -ColorWorkingPoint=880088 -1 880088 -1 -ColorColumnHeader=F0F0F0 30 F0F0F0 30 -ColorBackgroundMetaData=DADEE1 -1 FFFFFF -1 -ColorStatistic=FFFFFF -1 0 -1 -ColorMarker1CurveMode=F56DF3 -1 944293 -1 -ColorMarker2CurveMode=277FFF -1 2372E6 -1 - -[COMMENT_FIELD_0] -ID="Name" -MAX_LENGTH=32 -MODE=0 -VALUE_COUNT=0 -HISTORY_COUNT=0 - -[COMMENT_FIELD_1] -ID="Division" -MAX_LENGTH=32 -MODE=0 -VALUE_COUNT=0 -HISTORY_COUNT=0 - -[COMMENT_FIELD_2] -ID="Project" -MAX_LENGTH=32 -MODE=0 -VALUE_COUNT=0 -HISTORY_COUNT=0 - -[COMMENT_FIELD_3] -ID="Subject" -MAX_LENGTH=32 -MODE=0 -VALUE_COUNT=0 -HISTORY_COUNT=0 - -[COMMENT_FIELD_4] -ID="Comment" -MAX_LENGTH=-1 -MODE=12 -VALUE_COUNT=0 -HISTORY_COUNT=0 - [DlgAlgorithmConfiguration] TreeWidth=170 TreeWidth_dpi96=85 @@ -2919,10 +2744,10 @@ TreeExpStatus=0 DisplayIntValuesAsHex=0 DisplayCharArrayAsString=1 -[MEASUREMENT_0] -FileId=Measurement1 -MeasurementId=c3ae1316-6cb0-422a-9d59-7fe9286e9cb8 -LoadMeasurementSetting=3 +[Module_FILE1] +DefaultReplaceFile=0 +Converter=Converter_ID +ChildFileCount=0 [MEASUREMENT_DISPLAY] ScreenDPIinSection=192 @@ -2944,7 +2769,7 @@ TREEX_dpi96=225 TREEY=1009 TREEY_dpi96=505 ACTIVEPANE=1 -SELECTED_TREENODE=Measurement signals/Functions +SELECTED_TREENODE=Measurement signals/xcp_demo FIRSTVISIBLE_TREENODE=Measurement options TREEEXPAND_COUNT=1 TREEEXPAND_0=Measurement signals @@ -3010,11 +2835,11 @@ Column_3=31, 302 Column_3_dpi96=31, 151 Column_4=65540, 380 Column_4_dpi96=65540, 190 -Column_5=98305, 271 +Column_5=98305, 272 Column_5_dpi96=98305, 136 Column_6=1, 180 Column_6_dpi96=1, 90 -ColumnIdSort=-1 +ColumnIdSort=65542 SortUpward=1 VERSION=100 @@ -3076,14 +2901,283 @@ SortUpward=1 [MEASUREMENT_DISPLAY_DYNAMIC_COLUMNS] Count=0 -[Module_FILE1] -DefaultReplaceFile=0 -Converter=Converter_ID -ChildFileCount=0 +[COLOR_SCHEME_LIST] +COLOR_SCHEME0=COLOR_SCHEMEUSER_DEFINED +SCHEMES_COUNT=1 +ACTIVE=COLOR_SCHEME_H_CANAPE_CLASSIC +CURRENT_SCHEME_INDEX=0 + +[COLOR_SCHEMEUSER_DEFINED] +IS_USER_DEFINED=1 +SCHEME_NAME=[none] +ColorDisplay1=FF00 -1 8F400 -1 +ColorDisplay2=FF -1 8F4 -1 +ColorDisplay3=FFFF -1 F4F4 -1 +ColorDisplay4=FFFF00 -1 F4F400 -1 +ColorDisplay5=FF00FF -1 F400F4 -1 +ColorDisplay6=80FF -1 80F4 -1 +ColorDisplay7=FF8080 -1 F40000 -1 +ColorDisplay8=FFFFFF -1 0 -1 +ColorDisplay9=AA00 -1 AA00 -1 +ColorDisplay10=CC -1 CC -1 +ColorDisplay11=7070 -1 7070 -1 +ColorDisplay12=FFAA00 -1 FFAA00 -1 +ColorDisplay13=FF00AA -1 FF00AA -1 +ColorDisplay14=55AA -1 55AA -1 +ColorDisplay15=AA5555 -1 AA5555 -1 +ColorDisplay16=AAFFFF -1 AAFFFF -1 +ColorDisplay17=FFAA -1 FFAA -1 +ColorDisplay18=8080FF -1 8080FF -1 +ColorDisplay19=AAAA -1 AAAA -1 +ColorDisplay20=AAAA00 -1 AAAA00 -1 +ColorDisplay21=FFAAFF -1 FFAAFF -1 +ColorDisplay22=AAAAFF -1 AAAAFF -1 +ColorDisplay23=FFAAAA -1 FFAAAA -1 +ColorDisplay24=AAFFAA -1 AAFFAA -1 +ColorMarker1=FFFF00 -1 C6C600 -1 +ColorMarker2=FFFF -1 E1E1 -1 +ColorTrigger=FF00 -1 FF00 -1 +ColorEventAudio=A6620D -1 A6620D -1 +ColorEventMarker=FF -1 E7 -1 +ColorEventOther=FFFFFF -1 BABABA -1 +ColorHitMarker=FF00FF -1 FF00FF -1 +ColorGrid=8000 -1 8000 -1 +ColorBackground=0 -1 FFFFFF -1 +ColorChanged=FF0000 -1 FF0000 -1 +ColorWindowBg=C0C0C0 15 FFFFFF -1 +ColorAxis=FFFFFF -1 0 -1 +ColorAxisBackground=0 -1 FFFFFF -1 +ColorAxisSameScaled=FFFFFF -1 0 -1 +ColorAxisText=0 -1 0 -1 +ColorComments=FFFF00 -1 FFFF00 -1 +ColorCalComments=FFFF00 -1 FFFF00 -1 +ColorLegend=0 15 FFFFFF -1 +ColorLegendText=0 18 0 18 +ColorWindowFrameFocus=606060 -1 CEA27D -1 +ColorWindowFrameButtons=0 -1 0 -1 +ColorHexWinCalRam=8000 -1 8000 -1 +ColorHexWinNotCalRam=FF -1 FF -1 +ColorHexWinDbObject=80FFFF -1 80FFFF -1 +ColorHexWinInvalid=AFAFFF -1 AFAFFF -1 +ColorHexWinInvalidDb=FF -1 FF -1 +ColorHexWinSelection=FF 13 FF 13 +ColorHexWinSelText=0 14 0 14 +ColorWriteText=FFFF00 -1 FFFF00 -1 +ColorValLimitOK=FF00 -1 FF00 -1 +ColorValLimitWarn=FFFF -1 FFFF -1 +ColorValLimitError=FF -1 FF -1 +ColorActiveTitleLeft=54E3 2 54E3 2 +ColorActiveTitleRight=3D95FF 27 3D95FF 27 +ColorActiveTitleText=FFFFFF 9 FFFFFF 9 +ColorInactiveTitleLeft=7A96DF 3 7A96DF 3 +ColorInactiveTitleRight70=7A96DF 28 7A96DF 28 +ColorInactiveTitleText=D8E4F8 19 D8E4F8 19 +ColorMeaCursorTooltip=808080 -1 808080 -1 +ColorMeaCursorTooltipTxt=FFFFFF -1 FFFFFF -1 +ColorDisplayGray=999999 -1 999999 -1 +ColorDisplaySubGrid=4000 -1 4000 -1 +ColorGraphBackground=D2D2D2 -1 EEEEEE -1 +ColorInvalidSignal=F0F0F0 -1 F0F0F0 -1 +ColorLostVariable=C0C0C0 -1 C0C0C0 -1 +ColorMoveFrame=FAD5A3 -1 FAD5A3 -1 +ColorResizeMarkers=646464 -1 646464 -1 +ColorPageBackground=D8C7BC -1 D8C7BC -1 +ColorDisabledLegendText=A0A0A0 17 A0A0A0 17 +ColorBordersHighlight=FFFFFF 20 0 20 +ColorBordersShadow=A0A0A0 16 0 16 +ColorLookupTableX=FF -1 FF -1 +ColorLookupTableY=8000 -1 8000 -1 +ColorLookupTableZ=FF0000 -1 FF0000 -1 +ColorLookupTableZ4=FFFF00 -1 FFFF00 -1 +ColorLookupTableZ5=FF00FF -1 FF00FF -1 +ColorActiveCell=30FFFF -1 30FFFF -1 +ColorActiveCellText=0 -1 0 -1 +ColorMissingValues=FF -1 FF -1 +ColorBackgroundValues=FFFFFF -1 FFFFFF -1 +ColorWorkingPoint=880088 -1 880088 -1 +ColorColumnHeader=F0F0F0 30 F0F0F0 30 +ColorBackgroundMetaData=DADEE1 -1 FFFFFF -1 +ColorStatistic=FFFFFF -1 0 -1 +ColorMarker1CurveMode=F56DF3 -1 944293 -1 +ColorMarker2CurveMode=277FFF -1 2372E6 -1 + +[COMMENT_FIELD_0] +ID="Name" +MAX_LENGTH=32 +MODE=0 +VALUE_COUNT=0 +HISTORY_COUNT=0 + +[COMMENT_FIELD_1] +ID="Division" +MAX_LENGTH=32 +MODE=0 +VALUE_COUNT=0 +HISTORY_COUNT=0 + +[COMMENT_FIELD_2] +ID="Project" +MAX_LENGTH=32 +MODE=0 +VALUE_COUNT=0 +HISTORY_COUNT=0 + +[COMMENT_FIELD_3] +ID="Subject" +MAX_LENGTH=32 +MODE=0 +VALUE_COUNT=0 +HISTORY_COUNT=0 + +[COMMENT_FIELD_4] +ID="Comment" +MAX_LENGTH=-1 +MODE=12 +VALUE_COUNT=0 +HISTORY_COUNT=0 + +[DEVICE_EXPLORER_COLUMNLIST_CHANNELS] +ScreenDPIinSection=192 +ColumnCount=4 +Column_0=0, 306 +Column_0_dpi96=0, 153 +Column_1=1245185, 132 +Column_1_dpi96=1245185, 66 +Column_2=1245186, 66 +Column_2_dpi96=1245186, 33 +Column_3=1245187, 106 +Column_3_dpi96=1245187, 53 +ColumnIdSort=-1 +SortUpward=1 + +[DEVICE_EXPLORER_COLUMNLIST_DEVICES] +ScreenDPIinSection=192 +ColumnCount=10 +Column_0=34, 96 +Column_0_dpi96=34, 48 +Column_1=0, 460 +Column_1_dpi96=0, 230 +Column_2=131078, 160 +Column_2_dpi96=131078, 80 +Column_3=131103, 100 +Column_3_dpi96=131103, 50 +Column_4=131079, 100 +Column_4_dpi96=131079, 50 +Column_5=262145, 240 +Column_5_dpi96=262145, 120 +Column_6=131085, 200 +Column_6_dpi96=131085, 100 +Column_7=131080, 240 +Column_7_dpi96=131080, 120 +Column_8=131081, 160 +Column_8_dpi96=131081, 80 +Column_9=196609, 100 +Column_9_dpi96=196609, 50 +ColumnIdSort=-1 +SortUpward=1 + +[DEVICE_EXPLORER_COLUMNLIST_NETWORKS] +ScreenDPIinSection=192 +ColumnCount=6 +Column_0=34, 64 +Column_0_dpi96=34, 32 +Column_1=0, 304 +Column_1_dpi96=0, 152 +Column_2=983041, 192 +Column_2_dpi96=983041, 96 +Column_3=983042, 530 +Column_3_dpi96=983042, 265 +Column_4=983043, 252 +Column_4_dpi96=983043, 126 +Column_5=983044, 300 +Column_5_dpi96=983044, 150 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_0] +FileId=Measurement1 +MeasurementId=c32e4132-ca55-4b73-9670-eed93fb47528 +LoadMeasurementSetting=3 + +[PARASETEXPLORER] +LASTFILTER=AllFiles +LAST_SELECTED_SAVEDIALOG_FILETYPE_FILTER=Intel HEX files(*.hex)|*.hex| +RECENTCFGS=0 +RECENTPAR0=Y:\XCPlite-RainerZ\hello_xcp_v20_23_01_52.hex +RECENTA2L0=.\xcp_demo_autodetect.a2l +RECENTPARS=1 +HIDDENFILTERRULE= + +[PARASETEXPLORER-LOADCMDS] +LOADCMD_A2L_0=.\xcp_demo_autodetect.a2l +LOADCMD_TYPEID_0=IHEX +LOADCMD_FILE_0=Y:\XCPlite-RainerZ\hello_xcp_v20_23_01_52.hex +LOADCMD_DRIVER_TYPE_0=0 +CMDCNT=1 + +[PARASETEXPLORER-MAINVIEW-COLUMNS] +ScreenDPIinSection=192 +DISPLAY_AND_SORT_COUNT=2 +DISPLAY_AND_SORT_ID_00=458815 +DISPLAY_AND_SORT_SORT_POS_00=0 +DISPLAY_AND_SORT_WIDTH_00=46 +DISPLAY_AND_SORT_WIDTH_00_dpi96=23 +DISPLAY_AND_SORT_ID_01=458780 +DISPLAY_AND_SORT_SORT_POS_01=1 +DISPLAY_AND_SORT_WIDTH_01=200 +DISPLAY_AND_SORT_WIDTH_01_dpi96=100 +DISPLAY_AND_SORT_COMPLETE_WIDTH=600 +DISPLAY_AND_SORT_COMPLETE_WIDTH_dpi96=300 +IDLIST=458815;458780; + +[PARASETEXPLORER-MAINVIEW-DATASET-COLUMNS] +ScreenDPIinSection=192 +DISPLAY_AND_SORT_COUNT=2 +DISPLAY_AND_SORT_ID_00=458780 +DISPLAY_AND_SORT_SORT_POS_00=1 +DISPLAY_AND_SORT_WIDTH_00=200 +DISPLAY_AND_SORT_WIDTH_00_dpi96=100 +DISPLAY_AND_SORT_ID_01=458779 +DISPLAY_AND_SORT_SORT_POS_01=0 +DISPLAY_AND_SORT_WIDTH_01=200 +DISPLAY_AND_SORT_WIDTH_01_dpi96=100 +DISPLAY_AND_SORT_COMPLETE_WIDTH=600 +DISPLAY_AND_SORT_COMPLETE_WIDTH_dpi96=300 +IDLIST=458780;458779; + +[PARASETEXPLORER-MAINVIEW-FIRST-COLUMN] +ScreenDPIinSection=192 +DISPLAY_AND_SORT_COUNT=4 +DISPLAY_AND_SORT_ID_00=458813 +DISPLAY_AND_SORT_SORT_POS_00=0 +DISPLAY_AND_SORT_WIDTH_00=46 +DISPLAY_AND_SORT_WIDTH_00_dpi96=23 +DISPLAY_AND_SORT_ID_01=458814 +DISPLAY_AND_SORT_SORT_POS_01=0 +DISPLAY_AND_SORT_WIDTH_01=46 +DISPLAY_AND_SORT_WIDTH_01_dpi96=23 +DISPLAY_AND_SORT_ID_02=458796 +DISPLAY_AND_SORT_SORT_POS_02=0 +DISPLAY_AND_SORT_WIDTH_02=46 +DISPLAY_AND_SORT_WIDTH_02_dpi96=23 +DISPLAY_AND_SORT_ID_03=458821 +DISPLAY_AND_SORT_SORT_POS_03=1 +DISPLAY_AND_SORT_WIDTH_03=200 +DISPLAY_AND_SORT_WIDTH_03_dpi96=100 +DISPLAY_AND_SORT_COMPLETE_WIDTH=600 +DISPLAY_AND_SORT_COMPLETE_WIDTH_dpi96=300 + +[POSTPROCESS_OPTIONS] +POSTPROC_FILE= +POSTPROC_MODE=0 + +[SAVEPARASET] +MERGE_INTO_BIN=0 +CONSIDER_FLASH_OFFSET=1 [SIGNSELWND_DYNAMIC_COLUMNS] Count=0 [~~~~~_CONSISTENCY_CHECK_END_SECTION_~~~~~] -GUID={2F5508C2-5DBC-4649-A5AB-08C4AFA2B166} +GUID={36A02BC3-E938-477F-B502-6057C1FD8B6D} diff --git a/examples/hello_xcp/CANape/xcp_demo.cna b/examples/hello_xcp/CANape/xcp_demo.cna index f49dbe9d..6495c0ab 100644 --- a/examples/hello_xcp/CANape/xcp_demo.cna +++ b/examples/hello_xcp/CANape/xcp_demo.cna @@ -10,8 +10,8 @@ PrgDate=16.06.2025 Description= CreationTime=21:05 CreationDate=07/07/2024 ; Month/Day/Year -ModificationTime=18:34 -ModificationDate=09/27/2025 ; Month/Day/Year +ModificationTime=20:05 +ModificationDate=10/27/2025 ; Month/Day/Year Protected=0 CurrentWindowsACP=1252 @@ -33,7 +33,7 @@ DisplayCount=0 Count=0 [CALIBRATION_LIST] -Count=3 +Count=5 [CALIBRATION_OBJECT_1] EditOffset=1 @@ -44,7 +44,7 @@ FollowWorkingPoint=0 OverwriteWorkingPointInputX= OverwriteWorkingPointInputY= Module=xcp_demo -Name=params.acceleration +Name=inside_temperature StimMode=0 IsFallback=0 @@ -57,11 +57,24 @@ FollowWorkingPoint=0 OverwriteWorkingPointInputX= OverwriteWorkingPointInputY= Module=xcp_demo -Name=params.counter_max +Name=outside_temperature StimMode=0 IsFallback=0 [CALIBRATION_OBJECT_3] +EditOffset=1 +EditFactor=2 +EditFormat=2 +ShowWorkingPoint=0 +FollowWorkingPoint=0 +OverwriteWorkingPointInputX= +OverwriteWorkingPointInputY= +Module=xcp_demo +Name=params.counter_max +StimMode=0 +IsFallback=0 + +[CALIBRATION_OBJECT_4] EditOffset=25 EditFactor=2 EditFormat=2 @@ -74,6 +87,19 @@ Name=params.delay_us StimMode=0 IsFallback=0 +[CALIBRATION_OBJECT_5] +EditOffset=0.1 +EditFactor=2 +EditFormat=2 +ShowWorkingPoint=0 +FollowWorkingPoint=0 +OverwriteWorkingPointInputX= +OverwriteWorkingPointInputY= +Module=xcp_demo +Name=params.flow_rate +StimMode=0 +IsFallback=0 + [CANAPE_ENVIRONMENT] OBJECT_COUNT=0 @@ -117,7 +143,7 @@ Count=0 Name=Measurement and Calibration Demo Comment= Maximized=0 -ActiveWindow=7 +ActiveWindow=1 IsReportPage=0 TimeAxisSynchronized=0 PrintLayout=Default @@ -130,7 +156,7 @@ Count=0 Name=Trace Comment= Maximized=0 -ActiveWindow=4 +ActiveWindow=5 IsReportPage=0 TimeAxisSynchronized=0 PrintLayout=Default @@ -177,7 +203,7 @@ COUNT=5 5=} [FUNCTION_OBJECT_1] -Number=6 +Number=7 Unit= Components=0 TimeSeriesSaveMode=0 @@ -216,9 +242,9 @@ ColorFunction=0 ColorFunctionScope=1 LineTyp=2 YMinHome=0 -YMaxHome=0.001 +YMaxHome=0.0015 YMin=0 -YMax=0.001 +YMax=0.0015 XOffsetNS=0 XOffset=0 ValueFormat=3 @@ -288,7 +314,7 @@ SubConfigsCount=0 Count=0 [MEASUREMENT_LIST] -Count=5 +Count=6 OfflineFileName=xcp_demo.mf4 OfflineFileCount=1 MeaCfgLabellistName= @@ -297,7 +323,7 @@ MeaCfgLabellistName= Module=xcp_demo Name=loop_counter Disabled=0 -Mode=2147483648 +Mode=2147483649 Rate=0 ModeIsDefault=1 Row=0 @@ -306,7 +332,7 @@ MeaReferenced=1 ArchivBy_1=Recorder1 IsFallback=0 HasManagedDisplay=0 -DisplayCount=1 +DisplayCount=2 [MEASUREMENT_OBJECT_1_DISPLAY_1] Window=3 @@ -354,11 +380,57 @@ YAxis_ID=0 AxisTemplate= GUID=DISPLAY_7f547459-ae45-4f9d-b911-c974ac78ffa2 +[MEASUREMENT_OBJECT_1_DISPLAY_2] +Window=6 +Index=5 +Color=65280 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=0 +YMaxHome=100 +YMin=0 +YMax=100 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=1 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_fdde2a26-4c75-4c20-a3b3-39a57a97c161 + [MEASUREMENT_OBJECT_2] Module=xcp_demo -Name=speed +Name=heat_energy Disabled=0 -Mode=2147483648 +Mode=2147483649 Rate=0 ModeIsDefault=1 Row=0 @@ -370,17 +442,17 @@ HasManagedDisplay=0 DisplayCount=1 [MEASUREMENT_OBJECT_2_DISPLAY_1] -Window=3 -Index=2 -Color=255 +Window=6 +Index=0 +Color=65280 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 LineTyp=2 YMinHome=0 -YMaxHome=250 +YMaxHome=100 YMin=0 -YMax=250 +YMax=100 XOffsetNS=0 XOffset=0 ValueFormat=3 @@ -394,10 +466,10 @@ InvalidValueDrawMode=3 LineWidth=1 Precision=-2 Digits=6 -Enabled=0 -StoredFocused=0 +Enabled=1 +StoredFocused=1 SublMask=1 -MeaSublMask=3 +MeaSublMask=0 LockScaling=0 RightAxis=0 MapMode=2 @@ -413,13 +485,13 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_736d4f73-7414-49b0-906a-5af6cba84d9e +GUID=DISPLAY_79317913-f95a-4e40-8fdb-9f5150d86ed0 [MEASUREMENT_OBJECT_3] Module=xcp_demo -Name=temperature +Name=inside_temperature Disabled=0 -Mode=2147483648 +Mode=2147483649 Rate=0 ModeIsDefault=1 Row=0 @@ -431,17 +503,17 @@ HasManagedDisplay=0 DisplayCount=1 [MEASUREMENT_OBJECT_3_DISPLAY_1] -Window=3 -Index=1 -Color=65535 +Window=6 +Index=4 +Color=255 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 LineTyp=2 -YMinHome=-50 -YMaxHome=200 -YMin=-50 -YMax=200 +YMinHome=0 +YMaxHome=100 +YMin=0 +YMax=100 XOffsetNS=0 XOffset=0 ValueFormat=3 @@ -455,10 +527,10 @@ InvalidValueDrawMode=3 LineWidth=1 Precision=-2 Digits=6 -Enabled=0 +Enabled=1 StoredFocused=0 SublMask=1 -MeaSublMask=3 +MeaSublMask=0 LockScaling=0 RightAxis=0 MapMode=2 @@ -474,11 +546,11 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_d88d8100-c003-4992-8564-1e801c2ffade +GUID=DISPLAY_3924e264-34a8-4495-97bd-f4c513c8fbaf [MEASUREMENT_OBJECT_4] Module=xcp_demo -Name=calc_speed.current_speed +Name=outside_temperature Disabled=0 Mode=2147483649 Rate=0 @@ -493,8 +565,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_4_DISPLAY_1] Window=6 -Index=1 -Color=65280 +Index=3 +Color=65535 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -506,7 +578,7 @@ YMax=100 XOffsetNS=0 XOffset=0 ValueFormat=3 -BitMask=1 +BitMask=255 ShowYAxis=1 Width=10 LineStyle=1 @@ -535,13 +607,13 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_306e6c3d-0bfd-4d97-9a97-3dab2ea8a743 +GUID=DISPLAY_0c726b8c-ed48-4ecc-a224-d9332e707b18 [MEASUREMENT_OBJECT_5] Module=xcp_demo -Name=calc_speed.new_speed +Name=calc_power.diff_temp Disabled=0 -Mode=2147483649 +Mode=2147483650 Rate=0 ModeIsDefault=1 Row=0 @@ -554,8 +626,8 @@ DisplayCount=1 [MEASUREMENT_OBJECT_5_DISPLAY_1] Window=6 -Index=0 -Color=255 +Index=2 +Color=16776960 ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 @@ -578,7 +650,68 @@ LineWidth=1 Precision=-2 Digits=6 Enabled=1 -StoredFocused=1 +StoredFocused=0 +SublMask=1 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_5c0f6e3a-6fb6-41f8-b8a4-d777e1715ca8 + +[MEASUREMENT_OBJECT_6] +Module=xcp_demo +Name=calc_power.heat_power +Disabled=0 +Mode=2147483650 +Rate=0 +ModeIsDefault=1 +Row=0 +Column=0 +MeaReferenced=1 +ArchivBy_1=Recorder1 +IsFallback=0 +HasManagedDisplay=0 +DisplayCount=1 + +[MEASUREMENT_OBJECT_6_DISPLAY_1] +Window=6 +Index=1 +Color=16711935 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=0 +YMaxHome=100 +YMin=0 +YMax=100 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 SublMask=1 MeaSublMask=0 LockScaling=0 @@ -596,7 +729,7 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_48afdce5-1df5-49fe-b6a1-7dd3466250a2 +GUID=DISPLAY_bca994bc-3936-474c-9092-05d06e379c2a [MEASUREMENT_OPTIONS] RemainingRecordingTime=5000 @@ -664,39 +797,50 @@ VmdmDescription= Count=0 [Module_xcp_demo] -EVENT_COUNT=2 +EVENT_COUNT=3 EVENT_CHANNEL_0=0x0000 EVENT_CHANNEL_1=0x0001 -EVENT_CYCLE_0=0 +EVENT_CHANNEL_2=0x0002 +EVENT_CYCLE_0=100 EVENT_CYCLE_1=0 -EVENT_SAMPLE_UNIT_0=3 +EVENT_CYCLE_2=0 +EVENT_SAMPLE_UNIT_0=7 EVENT_SAMPLE_UNIT_1=3 +EVENT_SAMPLE_UNIT_2=3 EVENT_MODE_0=4 EVENT_MODE_1=4 +EVENT_MODE_2=4 EVENT_PRIO_0=0 EVENT_PRIO_1=0 +EVENT_PRIO_2=0 EVENT_MAX_DAQ_LIST_0=255 EVENT_MAX_DAQ_LIST_1=255 -EVENT_NAME_0=mainloop -EVENT_NAME_1=calc_speed +EVENT_MAX_DAQ_LIST_2=255 +EVENT_NAME_0=async +EVENT_NAME_1=mainloop +EVENT_NAME_2=calc_power EVENT_MIN_CYCLE_TIME_CYCLE_0=0 EVENT_MIN_CYCLE_TIME_CYCLE_1=0 +EVENT_MIN_CYCLE_TIME_CYCLE_2=0 EVENT_MIN_CYCLE_TIME_UNIT_0=9 EVENT_MIN_CYCLE_TIME_UNIT_1=9 +EVENT_MIN_CYCLE_TIME_UNIT_2=9 EVENT_MULTISAMPLES_0=0 EVENT_MULTISAMPLES_1=0 +EVENT_MULTISAMPLES_2=0 EVENT_DPM_SUPPORTED_0=0 EVENT_DPM_SUPPORTED_1=0 +EVENT_DPM_SUPPORTED_2=0 IGNORE_FIX_EVENTS=0 [OPTIONS] WindowTextExtended=1 WindowTextExtendedNew=1 WindowSymbols=1 -GlobalCursor=1 +GlobalCursor=0 GlobalCursorTime=0 GlobalCursorTimeNs=0 -MainWindowPos=1, 511, 197, 2399, 1489 ;cmd, x, y, w, h +MainWindowPos=1, 12, 0, 2406, 1478 ;cmd, x, y, w, h [PAR_COMMENT] 1="Name","" @@ -845,27 +989,32 @@ Count=0 [SIGNSELWND] FocusID=2004 ActiveTab=0 -FilterNodeID=All\Measurement list +FilterNodeID=All\Devices\xcp_demo TreeExpand_0=@All TreeExpand_1=All\Devices TreeExpand_2=All\Devices\xcp_demo TreeExpand_3=All\Devices\xcp_demo\xcp_demo_autodetect.a2l TreeExpand_4=All\Devices\xcp_demo\Unknown variables TreeExpand_5=All\Devices\xcp_demo\Unknown variables\calc_speed -TreeExpand_6=All\Devices\xcp_demo\xcp_demo_autodetect.a2l\Events -TreeExpand_7=All\Devices\xcp_demo\xcp_demo_autodetect.a2l\Events\mainloop -TreeExpand_8=All\Devices\xcp_demo\xcp_demo_autodetect.a2l\Parameters -TreeExpand_9=All\Measurement list\All signals -TreeExpand_10=All\Measurement list\All signals\Dt -TreeExpand_11=All\Measurement list\All signals\Dt\System information -TreeExpand_12=$All\Devices -TreeExpand_13=#All\Devices -TreeExpand_14=@All\Devices\xcp_demo -TreeExpand_15=$All\Devices\xcp_demo\xcp_demo_autodetect.a2l -TreeExpand_16=#All\Devices\xcp_demo\xcp_demo_autodetect.a2l -TreeExpand_17=@All\Measurement list -TreeExpand_18=$All\Measurement list\All signals -TreeExpand_19=#All\Measurement list\All signals\Dt +TreeExpand_6=All\Devices\xcp_demo\xcp_demo_autodetect.a2l\Events\mainloop +TreeExpand_7=All\Devices\xcp_demo\xcp_demo_autodetect.a2l\Parameters +TreeExpand_8=All\Measurement list\All signals +TreeExpand_9=All\Devices\xcp_demo\xcp_demo_autodetect.a2l\Events\calc_speed +TreeExpand_10=All\Devices\xcp_demo\xcp_demo_autodetect.a2l\Software structure\params +TreeExpand_11=All\Devices\xcp_demo\xcp_demo_autodetect.a2l\Parameters\params +TreeExpand_12=All\Devices\xcp_demo\xcp_demo_autodetect.a2l\params +TreeExpand_13=All\Devices\xcp_demo\xcp_demo_autodetect.a2l\Events +TreeExpand_14=All\Devices\xcp_demo\xcp_demo_autodetect.a2l\params\params +TreeExpand_15=All\Devices\xcp_demo\xcp_demo_autodetect.a2l\Events\calc_power +TreeExpand_16=All\Devices\xcp_demo\xcp_demo_autodetect.a2l\Software structure +TreeExpand_17=$All\Devices +TreeExpand_18=#All\Devices +TreeExpand_19=@All\Devices\xcp_demo +TreeExpand_20=$All\Devices\xcp_demo\xcp_demo_autodetect.a2l +TreeExpand_21=#All\Devices\xcp_demo\xcp_demo_autodetect.a2l\Events\mainloop\heat_energy +TreeExpand_22=@All\Measurement list +TreeExpand_23=$All\Measurement list\All signals +TreeExpand_24=#All\Measurement list\All signals\Dt TextSearchCaseSensitive=0 TextSearchUseMode=1 TextSearchSearchFullText=1 @@ -878,11 +1027,11 @@ Count=0 [WINDOW_1] ProgID= PROPERTIES_COUNT=1 -PROPERTY_1={"Version":"1.3.0.0","Configuration":{"ArrayWindowSubControlConfiguration":{"NumericGraphicCompositeWidth":308,"NumericGraphicCompositeHeight":154,"LegendCoordinatePoint":{"X":0,"Y":0},"LegendWidth":0,"LegendHeight":0,"LegendLayoutGroupSizeWidth":0,"LegendLayoutGroupSizeHeight":0,"NumericCoordinatePoint":{"X":1,"Y":24},"NumericWidth":306,"NumericHeight":129,"NumericLayoutGroupSizeWidth":306,"NumericLayoutGroupSizeHeight":129,"Intersection2DXWCoordinatePoint":{"X":0,"Y":0},"Intersection2DXWWidth":0,"Intersection2DXWHeight":0,"Intersection2DXWLayoutGroupSizeWidth":0,"Intersection2DXWLayoutGroupSizeHeight":0,"Intersection2DYWCoordinatePoint":{"X":0,"Y":0},"Intersection2DYWWidth":0,"Intersection2DYWHeight":0,"Intersection2DYWLayoutGroupSizeWidth":0,"Intersection2DYWLayoutGroupSizeHeight":0,"Graphic3DCoordinatePoint":{"X":0,"Y":0},"Graphic3DWidth":0,"Graphic3DHeight":0,"Graphic3DLayoutGroupSizeWidth":0,"Graphic3DLayoutGroupSizeHeight":0},"ShowCalibrationBar":true,"ShowHorizontalChartLines":false,"ShowVerticalChartLines":false,"NonSelectedIntersectionLineTransparency":0.100000024,"FocusedValueSymbol":"DEVICE:\"xcp_demo\":\"params.delay_us\":P","ValueObjectConfigurations":[{"Symbol":"DEVICE:\"xcp_demo\":\"params.counter_max\":P","SerializationColor":{"R":0,"G":0,"B":0,"A":255},"Collapsed":false,"SerializationFrameColor":{"R":0,"G":0,"B":0,"A":255},"ValueFormat":0,"AxisValueFormats":[],"NumericFormat":4,"AxisNumericFormats":[],"NumericFormatDigits":6,"IsActive":true,"CurrentChartViewType":2,"PointMarker":1,"IsValueAnnotationEnabled":false,"ValueAxisMin":0,"ValueAxisMax":2000,"ValueAxisMinHome":0,"ValueAxisMaxHome":2000,"ValueAxisPosition":0,"CommonValueAxisName":null,"CommonValueAxisLabel":"","CommonValueAxisMin":0,"CommonValueAxisMax":0,"CommonValueAxisMinHome":0,"CommonValueAxisMaxHome":0,"SerializationCommonValueAxisColor":{"R":0,"G":0,"B":0,"A":0},"CommonValueAxisID":0,"CommonValueAxisFormat":null,"CommonValueAxisPosition":0,"CommonXAxisLabel":"","CommonYAxisLabel":"","CustomAxisLabels":["","","","","",""]},{"Symbol":"DEVICE:\"xcp_demo\":\"params.delay_us\":P","SerializationColor":{"R":0,"G":0,"B":0,"A":255},"Collapsed":false,"SerializationFrameColor":{"R":0,"G":0,"B":0,"A":255},"ValueFormat":0,"AxisValueFormats":[],"NumericFormat":4,"AxisNumericFormats":[],"NumericFormatDigits":6,"IsActive":true,"CurrentChartViewType":2,"PointMarker":1,"IsValueAnnotationEnabled":false,"ValueAxisMin":0,"ValueAxisMax":999999,"ValueAxisMinHome":0,"ValueAxisMaxHome":999999,"ValueAxisPosition":0,"CommonValueAxisName":null,"CommonValueAxisLabel":"","CommonValueAxisMin":0,"CommonValueAxisMax":0,"CommonValueAxisMinHome":0,"CommonValueAxisMaxHome":0,"SerializationCommonValueAxisColor":{"R":0,"G":0,"B":0,"A":0},"CommonValueAxisID":0,"CommonValueAxisFormat":null,"CommonValueAxisPosition":0,"CommonXAxisLabel":"","CommonYAxisLabel":"","CustomAxisLabels":["","","","","",""]},{"Symbol":"DEVICE:\"xcp_demo\":\"params.acceleration\":P","SerializationColor":{"R":0,"G":0,"B":0,"A":255},"Collapsed":false,"SerializationFrameColor":{"R":0,"G":0,"B":0,"A":255},"ValueFormat":0,"AxisValueFormats":[],"NumericFormat":4,"AxisNumericFormats":[],"NumericFormatDigits":6,"IsActive":true,"CurrentChartViewType":2,"PointMarker":1,"IsValueAnnotationEnabled":false,"ValueAxisMin":-10,"ValueAxisMax":10,"ValueAxisMinHome":-10,"ValueAxisMaxHome":10,"ValueAxisPosition":0,"CommonValueAxisName":null,"CommonValueAxisLabel":null,"CommonValueAxisMin":0,"CommonValueAxisMax":0,"CommonValueAxisMinHome":0,"CommonValueAxisMaxHome":0,"SerializationCommonValueAxisColor":{"R":0,"G":0,"B":0,"A":0},"CommonValueAxisID":0,"CommonValueAxisFormat":null,"CommonValueAxisPosition":0,"CommonXAxisLabel":"","CommonYAxisLabel":"","CustomAxisLabels":["","","","","",""]}],"NumericGraphicControlPosition":0,"NumericGraphicControlSelectedTab":0,"GraphicControlPosition":0,"Height2DXControl":1,"Height2DYControl":1,"Height3DControl":2,"HeightNumericControl":1,"HeightChartControl":1,"HeightLegendControl":0.44999998807907104,"Width2DXControl":1,"Width2DYControl":1,"Width3DControl":2,"WidthNumericControl":2,"WidthChartControl":2,"WidthLegendControl":0.30000001192092896,"HeightValueControl":1,"WidthValueControl":1,"HeightNumericGraphicControl":1,"WidthNumericGraphicControl":1,"Height2DChartsControl":1,"Width2DChartsControl":1,"IsXAxisHeightSynchronizedBetweenCharts":true,"IsYAxisAreaWidthSynchronizedBetweenCharts":true,"SyncedXAxisHeight":NaN,"XWChartXAxisHeight":NaN,"YWChartXAxisHeight":NaN,"SyncedLeftAxisAreaWidth":NaN,"XWChartLeftAxisAreaWidth":NaN,"YWChartLeftAxisAreaWidth":NaN,"SyncedRightAxisAreaWidth":NaN,"XWChartRightAxisAreaWidth":NaN,"YWChartRightAxisAreaWidth":NaN,"LegendPosition":0,"LegendViewType":0,"LegendTableColumnAttributes":[{"TypeId":"1048594","Size":40},{"TypeId":"1048601","Size":45},{"TypeId":"31","Size":100},{"TypeId":"3","Size":250},{"TypeId":"16","Size":70},{"TypeId":"1048627","Size":100},{"TypeId":"1048631","Size":100},{"TypeId":"1048634","Size":100}],"LegendTabItemAttributes":[{"TypeId":"31","Size":100}],"FlipAxes":false,"AxisDisplayNameMode":3,"ReversedAxis":[false,false],"ShowUnits":false,"ShowObjectColor":false,"SortDescending":false,"SortAttributeId":null,"ShowWorkingPointHistory":false,"NumericViewValueObjectDisplayOption":1,"ValueColumnWidth":106,"ValueColumnWidthDouble":106.66666666666663,"ParameterGroup":"","ModuleName":"","GroupIsFunction":false,"NumericControlAxisAttributes":[],"NumericControlColumnAttributes":[{"TypeId":"31","Size":192}],"ChartViewValueObjectDisplayOption":1,"SerializationCameraPosition":{"X":1,"Y":1,"Z":-1},"SerializationCameraTarget":{"X":0,"Y":0.5,"Z":0},"IsValueAnnotationRotated":false,"EquidistantAxisPoints":false,"BarThickness":0.6,"WorkingPointMarker":0,"LinearWorkingPointInterpolation":true,"ShowAllIntersectionLines":false,"IsValueAxisIndependent":true,"TickLabelRotationAngle":-90,"IsTickLabelRotationEnabled":false,"IsTickLabelRightAligned":false,"ShowBoundarySurface":true,"ShowBoundarySurfaceGradient":false,"ShowCursorAsCrosshair":false,"XAxisAutoRange":true,"ValueAxisAutoRange":true,"ShowAllValueAxes":false,"DrawAxisBands":false,"CurrentColumnChartType":0,"SerializationCursorCrosshairColor":{"R":0,"G":0,"B":0,"A":255},"AlignBarToZero":true,"DefaultChartViewType":2,"AttributeColumnPositioning":1}} +PROPERTY_1={"Version":"1.3.0.0","Configuration":{"ArrayWindowSubControlConfiguration":{"NumericGraphicCompositeWidth":315,"NumericGraphicCompositeHeight":98,"LegendCoordinatePoint":{"X":0,"Y":0},"LegendWidth":0,"LegendHeight":0,"LegendLayoutGroupSizeWidth":0,"LegendLayoutGroupSizeHeight":0,"NumericCoordinatePoint":{"X":1,"Y":24},"NumericWidth":313,"NumericHeight":73,"NumericLayoutGroupSizeWidth":313,"NumericLayoutGroupSizeHeight":73,"Intersection2DXWCoordinatePoint":{"X":0,"Y":0},"Intersection2DXWWidth":0,"Intersection2DXWHeight":0,"Intersection2DXWLayoutGroupSizeWidth":0,"Intersection2DXWLayoutGroupSizeHeight":0,"Intersection2DYWCoordinatePoint":{"X":0,"Y":0},"Intersection2DYWWidth":0,"Intersection2DYWHeight":0,"Intersection2DYWLayoutGroupSizeWidth":0,"Intersection2DYWLayoutGroupSizeHeight":0,"Graphic3DCoordinatePoint":{"X":0,"Y":0},"Graphic3DWidth":0,"Graphic3DHeight":0,"Graphic3DLayoutGroupSizeWidth":0,"Graphic3DLayoutGroupSizeHeight":0},"ShowCalibrationBar":true,"ShowHorizontalChartLines":false,"ShowVerticalChartLines":false,"NonSelectedIntersectionLineTransparency":0.100000024,"FocusedValueSymbol":"DEVICE:\"xcp_demo\":\"params.counter_max\":P","ValueObjectConfigurations":[{"Symbol":"DEVICE:\"xcp_demo\":\"params.counter_max\":P","SerializationColor":{"R":0,"G":0,"B":0,"A":255},"Collapsed":false,"SerializationFrameColor":{"R":0,"G":0,"B":0,"A":255},"ValueFormat":0,"AxisValueFormats":[],"NumericFormat":4,"AxisNumericFormats":[],"NumericFormatDigits":6,"IsActive":true,"CurrentChartViewType":2,"PointMarker":1,"IsValueAnnotationEnabled":false,"ValueAxisMin":0,"ValueAxisMax":2000,"ValueAxisMinHome":0,"ValueAxisMaxHome":2000,"ValueAxisPosition":0,"CommonValueAxisName":null,"CommonValueAxisLabel":"","CommonValueAxisMin":0,"CommonValueAxisMax":0,"CommonValueAxisMinHome":0,"CommonValueAxisMaxHome":0,"SerializationCommonValueAxisColor":{"R":0,"G":0,"B":0,"A":0},"CommonValueAxisID":0,"CommonValueAxisFormat":null,"CommonValueAxisPosition":0,"CommonXAxisLabel":"","CommonYAxisLabel":"","CustomAxisLabels":["","","","","",""]},{"Symbol":"DEVICE:\"xcp_demo\":\"params.delay_us\":P","SerializationColor":{"R":0,"G":0,"B":0,"A":255},"Collapsed":false,"SerializationFrameColor":{"R":0,"G":0,"B":0,"A":255},"ValueFormat":0,"AxisValueFormats":[],"NumericFormat":4,"AxisNumericFormats":[],"NumericFormatDigits":6,"IsActive":true,"CurrentChartViewType":2,"PointMarker":1,"IsValueAnnotationEnabled":false,"ValueAxisMin":0,"ValueAxisMax":999999,"ValueAxisMinHome":0,"ValueAxisMaxHome":999999,"ValueAxisPosition":0,"CommonValueAxisName":null,"CommonValueAxisLabel":"","CommonValueAxisMin":0,"CommonValueAxisMax":0,"CommonValueAxisMinHome":0,"CommonValueAxisMaxHome":0,"SerializationCommonValueAxisColor":{"R":0,"G":0,"B":0,"A":0},"CommonValueAxisID":0,"CommonValueAxisFormat":null,"CommonValueAxisPosition":0,"CommonXAxisLabel":"","CommonYAxisLabel":"","CustomAxisLabels":["","","","","",""]},{"Symbol":"DEVICE:\"xcp_demo\":\"params.flow_rate\":P","SerializationColor":{"R":0,"G":0,"B":0,"A":255},"Collapsed":false,"SerializationFrameColor":{"R":0,"G":0,"B":0,"A":255},"ValueFormat":0,"AxisValueFormats":[],"NumericFormat":4,"AxisNumericFormats":[],"NumericFormatDigits":6,"IsActive":true,"CurrentChartViewType":2,"PointMarker":1,"IsValueAnnotationEnabled":false,"ValueAxisMin":0,"ValueAxisMax":2,"ValueAxisMinHome":0,"ValueAxisMaxHome":2,"ValueAxisPosition":0,"CommonValueAxisName":null,"CommonValueAxisLabel":"","CommonValueAxisMin":0,"CommonValueAxisMax":0,"CommonValueAxisMinHome":0,"CommonValueAxisMaxHome":0,"SerializationCommonValueAxisColor":{"R":0,"G":0,"B":0,"A":0},"CommonValueAxisID":0,"CommonValueAxisFormat":null,"CommonValueAxisPosition":0,"CommonXAxisLabel":"","CommonYAxisLabel":"","CustomAxisLabels":["","","","","",""]}],"NumericGraphicControlPosition":0,"NumericGraphicControlSelectedTab":0,"GraphicControlPosition":0,"Height2DXControl":1,"Height2DYControl":1,"Height3DControl":2,"HeightNumericControl":1,"HeightChartControl":1,"HeightLegendControl":0.44999998807907104,"Width2DXControl":1,"Width2DYControl":1,"Width3DControl":2,"WidthNumericControl":2,"WidthChartControl":2,"WidthLegendControl":0.30000001192092896,"HeightValueControl":1,"WidthValueControl":1,"HeightNumericGraphicControl":1,"WidthNumericGraphicControl":1,"Height2DChartsControl":1,"Width2DChartsControl":1,"IsXAxisHeightSynchronizedBetweenCharts":true,"IsYAxisAreaWidthSynchronizedBetweenCharts":true,"SyncedXAxisHeight":NaN,"XWChartXAxisHeight":NaN,"YWChartXAxisHeight":NaN,"SyncedLeftAxisAreaWidth":NaN,"XWChartLeftAxisAreaWidth":NaN,"YWChartLeftAxisAreaWidth":NaN,"SyncedRightAxisAreaWidth":NaN,"XWChartRightAxisAreaWidth":NaN,"YWChartRightAxisAreaWidth":NaN,"LegendPosition":0,"LegendViewType":0,"LegendTableColumnAttributes":[{"TypeId":"1048594","Size":40},{"TypeId":"1048601","Size":45},{"TypeId":"31","Size":100},{"TypeId":"3","Size":250},{"TypeId":"16","Size":70},{"TypeId":"1048627","Size":100},{"TypeId":"1048631","Size":100},{"TypeId":"1048634","Size":100}],"LegendTabItemAttributes":[{"TypeId":"31","Size":100}],"FlipAxes":false,"AxisDisplayNameMode":3,"ReversedAxis":[false,false],"ShowUnits":false,"ShowObjectColor":false,"SortDescending":false,"SortAttributeId":null,"ShowWorkingPointHistory":false,"NumericViewValueObjectDisplayOption":1,"ValueColumnWidth":141,"ValueColumnWidthDouble":141.5,"ParameterGroup":"","ModuleName":"","GroupIsFunction":false,"NumericControlAxisAttributes":[],"NumericControlColumnAttributes":[{"TypeId":"31","Size":146.5}],"ChartViewValueObjectDisplayOption":1,"SerializationCameraPosition":{"X":1,"Y":1,"Z":-1},"SerializationCameraTarget":{"X":0,"Y":0.5,"Z":0},"IsValueAnnotationRotated":false,"EquidistantAxisPoints":false,"BarThickness":0.6,"WorkingPointMarker":0,"LinearWorkingPointInterpolation":true,"ShowAllIntersectionLines":false,"IsValueAxisIndependent":true,"TickLabelRotationAngle":-90,"IsTickLabelRotationEnabled":false,"IsTickLabelRightAligned":false,"ShowBoundarySurface":true,"ShowBoundarySurfaceGradient":false,"ShowCursorAsCrosshair":false,"XAxisAutoRange":true,"ValueAxisAutoRange":true,"ShowAllValueAxes":false,"DrawAxisBands":false,"CurrentColumnChartType":0,"SerializationCursorCrosshairColor":{"R":0,"G":0,"B":0,"A":255},"AlignBarToZero":true,"DefaultChartViewType":2,"AttributeColumnPositioning":1}} OBJECTS_COUNT=3 OBJECT_1=DEVICE:"xcp_demo":"params.counter_max":P OBJECT_2=DEVICE:"xcp_demo":"params.delay_us":P -OBJECT_3=DEVICE:"xcp_demo":"params.acceleration":P +OBJECT_3=DEVICE:"xcp_demo":"params.flow_rate":P ObjectCount=3 HiddenDisplayCount=0 Title=Calibration @@ -891,10 +1040,10 @@ Comment=Calibration Number=1 GUID=WINDOW_b925684c-7ba1-48ce-918f-0609cbee10b4 ScreenDPIinSection=192 -Position=0, 28, 26, 622, 314 ;cmd, x, y, w, h -Position_dpi96=0, 14, 13, 311, 157 ;cmd, x, y, w, h -Position_Page01=0, 28, 26, 622, 314 ;cmd, x, y, w, h -Position_Page01_dpi96=0, 14, 13, 311, 157 ;cmd, x, y, w, h +Position=0, 14, 14, 636, 202 ;cmd, x, y, w, h +Position_dpi96=0, 7, 7, 318, 101 ;cmd, x, y, w, h +Position_Page01=0, 14, 14, 636, 202 ;cmd, x, y, w, h +Position_Page01_dpi96=0, 7, 7, 318, 101 ;cmd, x, y, w, h FloatingWindow=0 ShowSignalComments=1 DisplayMask=1 ; pages 1 @@ -946,7 +1095,7 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_5f0d1ab0-857a-4fe2-9263-a0acd0c989da +GUID=DISPLAY_266d5562-367a-4758-919c-75f1e7754d80 [WINDOW_1_OBJECT_2] Type=2 @@ -995,12 +1144,12 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_8cad45b9-a767-451c-9b85-c6e35d763baf +GUID=DISPLAY_a77bfab1-fceb-45d7-b7a7-0b25099df3dc [WINDOW_1_OBJECT_3] Type=2 Module=xcp_demo -Name=params.acceleration +Name=params.flow_rate Window=1 Index=2 Color=0 @@ -1008,10 +1157,10 @@ ApplyColorToBackground=0 ColorFunction=0 ColorFunctionScope=1 LineTyp=2 -YMinHome=-10 -YMaxHome=10 -YMin=-10 -YMax=10 +YMinHome=0 +YMaxHome=2 +YMin=0 +YMax=2 XOffsetNS=0 XOffset=0 ValueFormat=3 @@ -1044,7 +1193,7 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_a2b0a207-5a90-4d5c-bbf0-5e17dae713e1 +GUID=DISPLAY_18c007d2-5a1c-4710-9cf6-33ed2b0caea4 [WINDOW_2] ComponentCount=2 @@ -1054,10 +1203,10 @@ Comment=Multi view window Number=2 GUID=WINDOW_3f306d17-7bdd-464f-bbd8-ead5b31ddbd8 ScreenDPIinSection=192 -Position=0, 28, 362, 1786, 676 ;cmd, x, y, w, h -Position_dpi96=0, 14, 181, 893, 338 ;cmd, x, y, w, h -Position_Page01=0, 28, 362, 1786, 676 ;cmd, x, y, w, h -Position_Page01_dpi96=0, 14, 181, 893, 338 ;cmd, x, y, w, h +Position=0, 14, 416, 1800, 662 ;cmd, x, y, w, h +Position_dpi96=0, 7, 208, 900, 331 ;cmd, x, y, w, h +Position_Page01=0, 14, 416, 1800, 662 ;cmd, x, y, w, h +Position_Page01_dpi96=0, 7, 208, 900, 331 ;cmd, x, y, w, h FloatingWindow=0 ShowSignalComments=1 DisplayMask=1 ; pages 1 @@ -1066,8 +1215,8 @@ DisplayMask=1 ; pages 1 XLen=71955 XMin=0 XMinNs=0 -XMax=70685 -XMaxNs=70685736745 +XMax=10948 +XMaxNs=10948628367 Grid=1 Mark=1 YValue=1 @@ -1090,7 +1239,7 @@ YAxisWidth_dpi96=87 RightYAxisWidth=0 RightYAxisWidth_dpi96=0 ObjectMode=1 -DisplayMode=1 +DisplayMode=2 ShowSignalMode=0 AxisScrollPos2=0 LegendScrollPos=0 @@ -1130,11 +1279,11 @@ DisplayMask=1 ; pages 1 [WINDOW_3_LEG_COLUMNS] ScreenDPIinSection=192 COUNT=3 -COL_0=31, 214 -COL_0_dpi96=31, 107 -COL_1=1048578, 161 +COL_0=31, 212 +COL_0_dpi96=31, 106 +COL_1=1048578, 162 COL_1_dpi96=1048578, 81 -COL_2=16, 65 +COL_2=16, 66 COL_2_dpi96=16, 33 [WINDOW_4] @@ -1157,10 +1306,10 @@ Comment=Write Window Number=4 GUID=WINDOW_446152b9-0c82-4710-9a56-52baa89295ac ScreenDPIinSection=192 -Position=0, 24, 26, 1804, 966 ;cmd, x, y, w, h -Position_dpi96=0, 12, 13, 902, 483 ;cmd, x, y, w, h -Position_Page02=0, 24, 26, 1804, 966 ;cmd, x, y, w, h -Position_Page02_dpi96=0, 12, 13, 902, 483 ;cmd, x, y, w, h +Position=0, 22, 26, 1804, 964 ;cmd, x, y, w, h +Position_dpi96=0, 11, 13, 902, 482 ;cmd, x, y, w, h +Position_Page02=0, 22, 26, 1804, 964 ;cmd, x, y, w, h +Position_Page02_dpi96=0, 11, 13, 902, 482 ;cmd, x, y, w, h FloatingWindow=0 ShowSignalComments=1 DisplayMask=2 ; pages 2 @@ -1170,14 +1319,14 @@ ProgID=CNPTRACE.TraceCtrl.1 PROPERTIES_COUNT=22 PROPERTY_1=DeviceItems={"CaptureEvents":"1","ShowEvents":"0","NodeCount":"1","Node0":{"DeviceName":"xcp_demo","CaptureEvents":"1","ShowEvents":"1","NodeCount":"3","Node0":{"Channel":"2","DisplayColor":{"Color":"0","UseColor":"false"},"CaptureEvents":"1","ShowEvents":"1","NodeCount":"0"},"Node1":{"Channel":"3","DisplayColor":{"Color":"0","UseColor":"false"},"CaptureEvents":"0","ShowEvents":"0","NodeCount":"0"},"Node2":{"Channel":"4","DisplayColor":{"Color":"0","UseColor":"false"},"CaptureEvents":"1","ShowEvents":"1","NodeCount":"0"}}} PROPERTY_2=NetworkItems={"Items":"0"} -PROPERTY_3=ColumnConfigs={"ConfigCount":"1","Config0":{"Layout":"1","Name":"hello_xcp","Column0":{"Width":"212","Position":"0","Name":"Time","IsDefaultName":"1"},"Column3":{"Width":"84","Position":"1","Name":"Name","IsDefaultName":"1"},"Column6":{"Width":"92","Position":"2","Name":"Length","IsDefaultName":"1"},"Column52":{"Width":"2400","Position":"3","Name":"Protocol Interpretation","IsDefaultName":"1"}},"Active":"6","ActiveLayout":"25"} +PROPERTY_3=ColumnConfigs={"ConfigCount":"1","Config0":{"Layout":"1","Name":"hello_xcp","Column0":{"Width":"213","Position":"0","Name":"Time","IsDefaultName":"1"},"Column3":{"Width":"85","Position":"1","Name":"Name","IsDefaultName":"1"},"Column6":{"Width":"93","Position":"2","Name":"Length","IsDefaultName":"1"},"Column52":{"Width":"2400","Position":"3","Name":"Protocol Interpretation","IsDefaultName":"1"}},"Active":"0","ActiveLayout":"1"} PROPERTY_4=PinningEvents={"EventCount":"0"} PROPERTY_5=ExpandedEvents={"EventCount":"0"} PROPERTY_6=AnalysisGroups={"GroupCount":"1","Group0":{"Enabled":"1","Expanded":"1","Name":"Filtergruppe 0","FilterCount":"2","Filter0":{"Stop":"1","Enabled":"1","ConditionCount":"0"},"Filter1":{"Stop":"0","Enabled":"0","ConditionCount":"0"}}} PROPERTY_7=AnalysisDataChangeFilter=0 PROPERTY_8=SequenceFilters={"IsEnabled":"1","FilterCount":"0"} PROPERTY_9=SearchPatterns={"EventCount":"0"} -PROPERTY_10=ExplorerConfig={"VSplitPos":"272","VSplitExpanded":"true","HSplitPos":"580","HSplitExpanded":"false","ActiveExplorerView":"1","ActiveSearchType":"0"} +PROPERTY_10=ExplorerConfig={"VSplitPos":"272","VSplitExpanded":"true","HSplitPos":"581","HSplitExpanded":"false","ActiveExplorerView":"1","ActiveSearchType":"0"} PROPERTY_11=ContinuousMode=1 PROPERTY_12=AbsoluteTimeMode=0 PROPERTY_13=HighPrioritySBClient=0 @@ -1194,6 +1343,11 @@ OBJECTS_COUNT=0 ObjectCount=0 HiddenDisplayCount=0 TraceChannelCount=2 +ColumnCount=4 +Column_0=0, 213 +Column_1=4, 85 +Column_2=2, 93 +Column_3=513, 2400 DeltaTimeEnabled=1 Title=Trace-Fenster {DISPLAYED_FILENAME} Type=16384 @@ -1201,10 +1355,10 @@ Comment=ActiveX Window Number=5 GUID=WINDOW_9327afe1-ff92-4071-9bed-dc42be1f63ed ScreenDPIinSection=192 -Position=0, 84, 118, 1792, 922 ;cmd, x, y, w, h -Position_dpi96=0, 42, 59, 896, 461 ;cmd, x, y, w, h -Position_Page02=0, 84, 118, 1792, 922 ;cmd, x, y, w, h -Position_Page02_dpi96=0, 42, 59, 896, 461 ;cmd, x, y, w, h +Position=0, 82, 116, 1792, 922 ;cmd, x, y, w, h +Position_dpi96=0, 41, 58, 896, 461 ;cmd, x, y, w, h +Position_Page02=0, 82, 116, 1792, 922 ;cmd, x, y, w, h +Position_Page02_dpi96=0, 41, 58, 896, 461 ;cmd, x, y, w, h FloatingWindow=0 ShowSignalComments=1 DisplayMask=2 ; pages 2 @@ -1244,10 +1398,10 @@ Comment=Numeric Window Number=6 GUID=WINDOW_6e12274b-72ef-428d-bcb6-79a467ea4e38 ScreenDPIinSection=192 -Position=0, 680, 26, 1134, 174 ;cmd, x, y, w, h -Position_dpi96=0, 340, 13, 567, 87 ;cmd, x, y, w, h -Position_Page01=0, 680, 26, 1134, 174 ;cmd, x, y, w, h -Position_Page01_dpi96=0, 340, 13, 567, 87 ;cmd, x, y, w, h +Position=0, 680, 14, 1132, 382 ;cmd, x, y, w, h +Position_dpi96=0, 340, 7, 566, 191 ;cmd, x, y, w, h +Position_Page01=0, 680, 14, 1132, 382 ;cmd, x, y, w, h +Position_Page01_dpi96=0, 340, 7, 566, 191 ;cmd, x, y, w, h FloatingWindow=0 ShowSignalComments=1 LEGEND_HSCROLL_POS=0 @@ -1264,8 +1418,8 @@ COL_0_dpi96=31, 172 XLen=71955 XMin=0 XMinNs=0 -XMax=70685 -XMaxNs=70685736745 +XMax=10948 +XMaxNs=10948628367 Grid=1 Mark=1 YValue=1 @@ -1311,9 +1465,9 @@ Comment=Graphic Window Number=7 GUID=WINDOW_f9778c8b-a829-4556-ab25-448ea2d47b1d ScreenDPIinSection=192 -Position=0, 25, 25, 1000, 400 ;cmd, x, y, w, h +Position=0, 26, 26, 1000, 400 ;cmd, x, y, w, h Position_dpi96=0, 13, 13, 500, 200 ;cmd, x, y, w, h -Position_Page01=0, 25, 25, 1000, 400 ;cmd, x, y, w, h +Position_Page01=0, 26, 26, 1000, 400 ;cmd, x, y, w, h Position_Page01_dpi96=0, 13, 13, 500, 200 ;cmd, x, y, w, h FloatingWindow=0 JointIndex=2 @@ -1328,15 +1482,136 @@ DisplayMask=1 ; pages 1 [WINDOW_7_LEG_COLUMNS] ScreenDPIinSection=192 COUNT=3 -COL_0=31, 214 -COL_0_dpi96=31, 107 -COL_1=1048578, 161 +COL_0=31, 212 +COL_0_dpi96=31, 106 +COL_1=1048578, 162 COL_1_dpi96=1048578, 81 -COL_2=16, 65 +COL_2=16, 66 COL_2_dpi96=16, 33 +[WINDOW_8] +ProgID= +PROPERTIES_COUNT=1 +PROPERTY_1={"Version":"1.3.0.0","Configuration":{"ArrayWindowSubControlConfiguration":{"NumericGraphicCompositeWidth":315,"NumericGraphicCompositeHeight":82,"LegendCoordinatePoint":{"X":0,"Y":0},"LegendWidth":0,"LegendHeight":0,"LegendLayoutGroupSizeWidth":0,"LegendLayoutGroupSizeHeight":0,"NumericCoordinatePoint":{"X":1,"Y":24},"NumericWidth":313,"NumericHeight":57,"NumericLayoutGroupSizeWidth":313,"NumericLayoutGroupSizeHeight":57,"Intersection2DXWCoordinatePoint":{"X":0,"Y":0},"Intersection2DXWWidth":0,"Intersection2DXWHeight":0,"Intersection2DXWLayoutGroupSizeWidth":0,"Intersection2DXWLayoutGroupSizeHeight":0,"Intersection2DYWCoordinatePoint":{"X":0,"Y":0},"Intersection2DYWWidth":0,"Intersection2DYWHeight":0,"Intersection2DYWLayoutGroupSizeWidth":0,"Intersection2DYWLayoutGroupSizeHeight":0,"Graphic3DCoordinatePoint":{"X":0,"Y":0},"Graphic3DWidth":0,"Graphic3DHeight":0,"Graphic3DLayoutGroupSizeWidth":0,"Graphic3DLayoutGroupSizeHeight":0},"ShowCalibrationBar":true,"ShowHorizontalChartLines":false,"ShowVerticalChartLines":false,"NonSelectedIntersectionLineTransparency":0.100000024,"FocusedValueSymbol":"DEVICE:\"xcp_demo\":\"outside_temperature\":P","ValueObjectConfigurations":[{"Symbol":"DEVICE:\"xcp_demo\":\"outside_temperature\":P","SerializationColor":{"R":0,"G":0,"B":0,"A":255},"Collapsed":false,"SerializationFrameColor":{"R":0,"G":0,"B":0,"A":255},"ValueFormat":0,"AxisValueFormats":[],"NumericFormat":4,"AxisNumericFormats":[],"NumericFormatDigits":6,"IsActive":true,"CurrentChartViewType":2,"PointMarker":1,"IsValueAnnotationEnabled":false,"ValueAxisMin":-20,"ValueAxisMax":50,"ValueAxisMinHome":-20,"ValueAxisMaxHome":50,"ValueAxisPosition":0,"CommonValueAxisName":null,"CommonValueAxisLabel":"","CommonValueAxisMin":0,"CommonValueAxisMax":0,"CommonValueAxisMinHome":0,"CommonValueAxisMaxHome":0,"SerializationCommonValueAxisColor":{"R":0,"G":0,"B":0,"A":0},"CommonValueAxisID":0,"CommonValueAxisFormat":null,"CommonValueAxisPosition":0,"CommonXAxisLabel":"","CommonYAxisLabel":"","CustomAxisLabels":["","","","","",""]},{"Symbol":"DEVICE:\"xcp_demo\":\"inside_temperature\":P","SerializationColor":{"R":0,"G":0,"B":0,"A":255},"Collapsed":false,"SerializationFrameColor":{"R":0,"G":0,"B":0,"A":255},"ValueFormat":0,"AxisValueFormats":[],"NumericFormat":4,"AxisNumericFormats":[],"NumericFormatDigits":6,"IsActive":true,"CurrentChartViewType":2,"PointMarker":1,"IsValueAnnotationEnabled":false,"ValueAxisMin":0,"ValueAxisMax":40,"ValueAxisMinHome":0,"ValueAxisMaxHome":40,"ValueAxisPosition":0,"CommonValueAxisName":null,"CommonValueAxisLabel":"","CommonValueAxisMin":0,"CommonValueAxisMax":0,"CommonValueAxisMinHome":0,"CommonValueAxisMaxHome":0,"SerializationCommonValueAxisColor":{"R":0,"G":0,"B":0,"A":0},"CommonValueAxisID":0,"CommonValueAxisFormat":null,"CommonValueAxisPosition":0,"CommonXAxisLabel":"","CommonYAxisLabel":"","CustomAxisLabels":["","","","","",""]}],"NumericGraphicControlPosition":0,"NumericGraphicControlSelectedTab":0,"GraphicControlPosition":0,"Height2DXControl":1,"Height2DYControl":1,"Height3DControl":2,"HeightNumericControl":1,"HeightChartControl":1,"HeightLegendControl":0.44999998807907104,"Width2DXControl":1,"Width2DYControl":1,"Width3DControl":2,"WidthNumericControl":2,"WidthChartControl":2,"WidthLegendControl":0.30000001192092896,"HeightValueControl":1,"WidthValueControl":1,"HeightNumericGraphicControl":1,"WidthNumericGraphicControl":1,"Height2DChartsControl":1,"Width2DChartsControl":1,"IsXAxisHeightSynchronizedBetweenCharts":true,"IsYAxisAreaWidthSynchronizedBetweenCharts":true,"SyncedXAxisHeight":NaN,"XWChartXAxisHeight":NaN,"YWChartXAxisHeight":NaN,"SyncedLeftAxisAreaWidth":NaN,"XWChartLeftAxisAreaWidth":NaN,"YWChartLeftAxisAreaWidth":NaN,"SyncedRightAxisAreaWidth":NaN,"XWChartRightAxisAreaWidth":NaN,"YWChartRightAxisAreaWidth":NaN,"LegendPosition":0,"LegendViewType":0,"LegendTableColumnAttributes":[{"TypeId":"1048594","Size":40},{"TypeId":"1048601","Size":45},{"TypeId":"31","Size":100},{"TypeId":"3","Size":250},{"TypeId":"16","Size":70},{"TypeId":"1048627","Size":100},{"TypeId":"1048631","Size":100},{"TypeId":"1048634","Size":100}],"LegendTabItemAttributes":[{"TypeId":"31","Size":100}],"FlipAxes":false,"AxisDisplayNameMode":3,"ReversedAxis":[false,false],"ShowUnits":false,"ShowObjectColor":true,"SortDescending":false,"SortAttributeId":null,"ShowWorkingPointHistory":false,"NumericViewValueObjectDisplayOption":1,"ValueColumnWidth":144,"ValueColumnWidthDouble":144.5,"ParameterGroup":"","ModuleName":"","GroupIsFunction":false,"NumericControlAxisAttributes":[],"NumericControlColumnAttributes":[{"TypeId":"31","Size":143}],"ChartViewValueObjectDisplayOption":1,"SerializationCameraPosition":{"X":1,"Y":1,"Z":-1},"SerializationCameraTarget":{"X":0,"Y":0.5,"Z":0},"IsValueAnnotationRotated":false,"EquidistantAxisPoints":false,"BarThickness":0.6,"WorkingPointMarker":0,"LinearWorkingPointInterpolation":true,"ShowAllIntersectionLines":false,"IsValueAxisIndependent":true,"TickLabelRotationAngle":-90,"IsTickLabelRotationEnabled":false,"IsTickLabelRightAligned":false,"ShowBoundarySurface":true,"ShowBoundarySurfaceGradient":false,"ShowCursorAsCrosshair":false,"XAxisAutoRange":true,"ValueAxisAutoRange":true,"ShowAllValueAxes":false,"DrawAxisBands":false,"CurrentColumnChartType":0,"SerializationCursorCrosshairColor":{"R":0,"G":0,"B":0,"A":255},"AlignBarToZero":true,"DefaultChartViewType":2,"AttributeColumnPositioning":1}} +OBJECTS_COUNT=2 +OBJECT_1=DEVICE:"xcp_demo":"outside_temperature":P +OBJECT_2=DEVICE:"xcp_demo":"inside_temperature":P +ObjectCount=2 +HiddenDisplayCount=0 +Title=Parameters +Type=137438953472 +Comment=Parameters +Number=8 +GUID=WINDOW_04795e7d-c614-4392-9c83-208ff533572d +ScreenDPIinSection=192 +Position=0, 14, 226, 636, 170 ;cmd, x, y, w, h +Position_dpi96=0, 7, 113, 318, 85 ;cmd, x, y, w, h +Position_Page01=0, 14, 226, 636, 170 ;cmd, x, y, w, h +Position_Page01_dpi96=0, 7, 113, 318, 85 ;cmd, x, y, w, h +FloatingWindow=0 +ShowSignalComments=1 +DisplayMask=1 ; pages 1 + +[WINDOW_8_OBJECT_1] +Type=2 +Module=xcp_demo +Name=outside_temperature +Window=8 +Index=0 +Color=0 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=-20 +YMaxHome=50 +YMin=-20 +YMax=50 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=0 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_19008b01-3a4e-43bc-9b5e-3e01a2d6dc1c + +[WINDOW_8_OBJECT_2] +Type=2 +Module=xcp_demo +Name=inside_temperature +Window=8 +Index=1 +Color=0 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=0 +YMaxHome=40 +YMin=0 +YMax=40 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=0 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_f39e9ab5-14b3-4d61-b969-518a936a695d + [WINDOWS] -Count=7 +Count=8 [Y_COMMON_AXIS_LIST] Count=0 diff --git a/examples/hello_xcp/CANape/xcp_demo_autodetect.a2l b/examples/hello_xcp/CANape/xcp_demo_autodetect.a2l index 99588400..15b1ddcc 100644 --- a/examples/hello_xcp/CANape/xcp_demo_autodetect.a2l +++ b/examples/hello_xcp/CANape/xcp_demo_autodetect.a2l @@ -1,7 +1,7 @@ ASAP2_VERSION 1 71 /begin PROJECT hello_xcp "" -/begin HEADER "" VERSION "1.0" PROJECT_NO XCPlite /end HEADER +/begin HEADER "" VERSION "1.0" PROJECT_NO XCPLITE__CASDD /end HEADER /begin MODULE hello_xcp "" @@ -20,21 +20,25 @@ ALIGNMENT_INT64 1 -/* Segment relative addressing mode: calseg=Parameters */ -/begin CHARACTERISTIC params.counter_max "Maximum counter value" VALUE 0x80000000 U16 0 NO_COMPU_METHOD 0 2000 /end CHARACTERISTIC -/begin CHARACTERISTIC params.delay_us "Mainloop delay time in us" VALUE 0x80000004 U32 0 NO_COMPU_METHOD 0 999999 PHYS_UNIT "us" /end CHARACTERISTIC -/begin CHARACTERISTIC params.acceleration "Acceleration" VALUE 0x80000008 F32 0 NO_COMPU_METHOD -10 10 PHYS_UNIT "m/(s*s)" /end CHARACTERISTIC +/* Segment relative addressing mode: calseg=params */ +/begin CHARACTERISTIC params.counter_max "Maximum counter value" VALUE 0x80010000 U16 0 NO_COMPU_METHOD 0 2000 /end CHARACTERISTIC +/begin CHARACTERISTIC params.delay_us "Mainloop delay time in us" VALUE 0x80010004 U32 0 NO_COMPU_METHOD 0 999999 PHYS_UNIT "us" /end CHARACTERISTIC +/begin CHARACTERISTIC params.flow_rate "Flow rate" VALUE 0x80010008 F32 0 NO_COMPU_METHOD 0 2 PHYS_UNIT "m3/h" /end CHARACTERISTIC -/* Absolute addressing mode: default_event=mainloop (0), addr_ext=1 */ -/begin MEASUREMENT temperature "Motor temperature in °C" UBYTE conv.temperature 0 0 -55 200 ECU_ADDRESS 0x24002 ECU_ADDRESS_EXTENSION 1 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT VARIABLE /begin DEFAULT_EVENT_LIST EVENT 0x0 /end DEFAULT_EVENT_LIST /end DAQ_EVENT /end IF_DATA /end MEASUREMENT -/begin MEASUREMENT speed "Speed in km/h" FLOAT32_IEEE NO_COMPU_METHOD 0 0 0 250 ECU_ADDRESS 0x240A8 ECU_ADDRESS_EXTENSION 1 PHYS_UNIT "km/h" READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT VARIABLE /begin DEFAULT_EVENT_LIST EVENT 0x0 /end DEFAULT_EVENT_LIST /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/* Absolute addressing mode: default_event=mainloop (1), addr_ext=1 */ +/begin MEASUREMENT outside_temperature "Temperature in °C read from outside sensor" UBYTE conv.temperature 0 0 -20 50 ECU_ADDRESS 0x24002 ECU_ADDRESS_EXTENSION 1 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT VARIABLE /begin DEFAULT_EVENT_LIST EVENT 0x1 /end DEFAULT_EVENT_LIST /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT inside_temperature "Temperature in °C read from inside sensor" UBYTE conv.temperature 0 0 0 40 ECU_ADDRESS 0x24003 ECU_ADDRESS_EXTENSION 1 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT VARIABLE /begin DEFAULT_EVENT_LIST EVENT 0x1 /end DEFAULT_EVENT_LIST /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT heat_energy "Accumulated heat energy in kWh" FLOAT64_IEEE NO_COMPU_METHOD 0 0 0 10000 ECU_ADDRESS 0x240B0 ECU_ADDRESS_EXTENSION 1 PHYS_UNIT "kWh" READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT VARIABLE /begin DEFAULT_EVENT_LIST EVENT 0x1 /end DEFAULT_EVENT_LIST /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT global_counter "Global free running counter" ULONG NO_COMPU_METHOD 0 0 0 4.29497e+09 ECU_ADDRESS 0x240B8 ECU_ADDRESS_EXTENSION 1 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT VARIABLE /begin DEFAULT_EVENT_LIST EVENT 0x1 /end DEFAULT_EVENT_LIST /end DAQ_EVENT /end IF_DATA /end MEASUREMENT -/* Stack frame relative addressing mode: event=mainloop (0), addr_ext=2 */ -/begin MEASUREMENT loop_counter "Loop counter, local measurement variable on stack" UWORD NO_COMPU_METHOD 0 0 0 65535 ECU_ADDRESS 0xFFCE ECU_ADDRESS_EXTENSION 2 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0x0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/* Stack frame relative addressing mode: event=mainloop (1), addr_ext=2 */ +/begin MEASUREMENT loop_counter "Loop counter, local measurement variable on stack" UWORD NO_COMPU_METHOD 0 0 0 65535 ECU_ADDRESS 0x1FFCE ECU_ADDRESS_EXTENSION 2 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0x1 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT -/* Stack frame relative addressing mode: event=calc_speed (1), addr_ext=2 */ -/begin MEASUREMENT calc_speed.current_speed "Parameter current_speed in function calculate_speed" FLOAT32_IEEE NO_COMPU_METHOD 0 0 0 250 ECU_ADDRESS 0x1FFD4 ECU_ADDRESS_EXTENSION 2 PHYS_UNIT "km/h" READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0x1 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT -/begin MEASUREMENT calc_speed.new_speed "Loop counter, local measurement variable on stack" FLOAT32_IEEE NO_COMPU_METHOD 0 0 0 250 ECU_ADDRESS 0x1FFD0 ECU_ADDRESS_EXTENSION 2 PHYS_UNIT "km/h" READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0x1 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/* Stack frame relative addressing mode: event=calc_power (2), addr_ext=2 */ +/begin MEASUREMENT calc_power.t1 "Parameter t1 in function calc_power" UBYTE conv.temperature 0 0 -55 200 ECU_ADDRESS 0x2FFD7 ECU_ADDRESS_EXTENSION 2 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0x2 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT calc_power.t2 "Parameter t2 in function calc_power" UBYTE conv.temperature 0 0 -55 200 ECU_ADDRESS 0x2FFD6 ECU_ADDRESS_EXTENSION 2 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0x2 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT calc_power.diff_temp "Local variable diff temperature in function calc_power" FLOAT64_IEEE NO_COMPU_METHOD 0 0 -100 100 ECU_ADDRESS 0x2FFC8 ECU_ADDRESS_EXTENSION 2 PHYS_UNIT "K" READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0x2 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT calc_power.heat_power "Local variable calculated heat power in function calc_power" FLOAT64_IEEE NO_COMPU_METHOD 0 0 0 10 ECU_ADDRESS 0x2FFC0 ECU_ADDRESS_EXTENSION 2 PHYS_UNIT "W" READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0x2 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT /* Typedefs */ /begin RECORD_LAYOUT U8 FNC_VALUES 1 UBYTE ROW_DIR DIRECT /end RECORD_LAYOUT @@ -80,23 +84,23 @@ ALIGNMENT_INT64 1 /* Groups */ -/begin GROUP Parameters "Calibration Segment" /begin REF_CHARACTERISTIC params.counter_max params.delay_us params.acceleration /end REF_CHARACTERISTIC /end GROUP -/begin GROUP mainloop "Measurement event group" /begin REF_MEASUREMENT temperature speed loop_counter /end REF_MEASUREMENT /end GROUP -/begin GROUP calc_speed "Measurement event group" /begin REF_MEASUREMENT calc_speed.current_speed calc_speed.new_speed /end REF_MEASUREMENT /end GROUP -/begin GROUP Events "Events" ROOT /begin SUB_GROUP mainloop calc_speed /end SUB_GROUP /end GROUP +/begin GROUP params "Calibration Segment" /begin REF_CHARACTERISTIC params.counter_max params.delay_us params.flow_rate /end REF_CHARACTERISTIC /end GROUP +/begin GROUP mainloop "Measurement event group" /begin REF_MEASUREMENT outside_temperature inside_temperature heat_energy global_counter loop_counter /end REF_MEASUREMENT /end GROUP +/begin GROUP calc_power "Measurement event group" /begin REF_MEASUREMENT calc_power.t1 calc_power.t2 calc_power.diff_temp calc_power.heat_power /end REF_MEASUREMENT /end GROUP +/begin GROUP Events "Events" ROOT /begin SUB_GROUP async mainloop calc_power /end SUB_GROUP /end GROUP /* Conversions */ /begin COMPU_METHOD conv.bool "" TAB_VERB "%.0" "" COMPU_TAB_REF conv.bool.table /end COMPU_METHOD /begin COMPU_VTAB conv.bool.table "" TAB_VERB 2 0 "false" 1 "true" /end COMPU_VTAB -/begin COMPU_METHOD conv.temperature "Temperature in °C from unsigned byte" LINEAR "%6.3" "°C" COEFFS_LINEAR 1 -55 /end COMPU_METHOD +/begin COMPU_METHOD conv.temperature "Temperature in °C from unsigned byte" LINEAR "%6.3" "C" COEFFS_LINEAR 1 -55 /end COMPU_METHOD /begin COMPU_METHOD conv.events "" TAB_VERB "%.0 " "" COMPU_TAB_REF conv.events.table /end COMPU_METHOD -/begin COMPU_VTAB conv.events.table "" TAB_VERB 2 - 0 "mainloop" 1 "calc_speed" +/begin COMPU_VTAB conv.events.table "" TAB_VERB 3 + 0 "async" 1 "mainloop" 2 "calc_power" /end COMPU_VTAB /begin MOD_PAR "" -EPK "_Sep_27_2025_18_16_54" ADDR_EPK 0xFFFF0000 -/begin MEMORY_SEGMENT Parameters "" DATA FLASH INTERN 0x80000000 0xC -1 -1 -1 -1 -1 +EPK "v21_15_02_39" ADDR_EPK 0x80000000 +/begin MEMORY_SEGMENT epk "" DATA FLASH INTERN 0x80000000 12 -1 -1 -1 -1 -1 /begin IF_DATA XCP /begin SEGMENT 0 2 0 0 0 /begin CHECKSUM XCP_CRC_16_CITT MAX_BLOCK_SIZE 0xFFFF EXTERNAL_FUNCTION "" /end CHECKSUM @@ -105,6 +109,15 @@ EPK "_Sep_27_2025_18_16_54" ADDR_EPK 0xFFFF0000 /end SEGMENT /end IF_DATA /end MEMORY_SEGMENT +/begin MEMORY_SEGMENT params "" DATA FLASH INTERN 0x80010000 12 -1 -1 -1 -1 -1 +/begin IF_DATA XCP +/begin SEGMENT 1 2 0 0 0 +/begin CHECKSUM XCP_CRC_16_CITT MAX_BLOCK_SIZE 0xFFFF EXTERNAL_FUNCTION "" /end CHECKSUM +/begin PAGE 0 ECU_ACCESS_DONT_CARE XCP_READ_ACCESS_DONT_CARE XCP_WRITE_ACCESS_DONT_CARE /end PAGE +/begin PAGE 1 ECU_ACCESS_DONT_CARE XCP_READ_ACCESS_DONT_CARE XCP_WRITE_ACCESS_NOT_ALLOWED /end PAGE +/end SEGMENT +/end IF_DATA +/end MEMORY_SEGMENT /end MOD_PAR @@ -148,15 +161,14 @@ OPTIONAL_CMD TIME_CORRELATION_PROPERTIES OPTIONAL_LEVEL1_CMD GET_VERSION /end PROTOCOL_LAYER /begin DAQ -DYNAMIC 0 2 0 OPTIMISATION_TYPE_DEFAULT ADDRESS_EXTENSION_FREE IDENTIFICATION_FIELD_TYPE_RELATIVE_BYTE GRANULARITY_ODT_ENTRY_SIZE_DAQ_BYTE 0xF8 OVERLOAD_INDICATION_PID -/begin TIMESTAMP_SUPPORTED -0x1 SIZE_DWORD UNIT_1NS TIMESTAMP_FIXED -/end TIMESTAMP_SUPPORTED -/begin EVENT "mainloop" "mainloop" 0x0 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT -/begin EVENT "calc_speed" "calc_speed" 0x1 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT +DYNAMIC 0 3 0 OPTIMISATION_TYPE_DEFAULT ADDRESS_EXTENSION_FREE IDENTIFICATION_FIELD_TYPE_RELATIVE_BYTE GRANULARITY_ODT_ENTRY_SIZE_DAQ_BYTE 0xF8 OVERLOAD_INDICATION_PID PRESCALER_SUPPORTED +/begin TIMESTAMP_SUPPORTED 0x1 SIZE_DWORD UNIT_1NS TIMESTAMP_FIXED /end TIMESTAMP_SUPPORTED +/begin EVENT "async" "async" 0x0 DAQ 0xFF 100 4 0 CONSISTENCY EVENT /end EVENT +/begin EVENT "mainloop" "mainloop" 0x1 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT +/begin EVENT "calc_power" "calc_power" 0x2 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT /end DAQ /begin XCP_ON_TCP_IP - 0x104 5555 ADDRESS "192.168.8.133" + 0x104 5555 ADDRESS "192.168.0.101" /end XCP_ON_TCP_IP /end IF_DATA diff --git a/examples/hello_xcp/src/main.c b/examples/hello_xcp/src/main.c index c779e142..a35bb65c 100644 --- a/examples/hello_xcp/src/main.c +++ b/examples/hello_xcp/src/main.c @@ -13,12 +13,13 @@ //----------------------------------------------------------------------------------------------------- // XCP params -#define OPTION_PROJECT_NAME "hello_xcp" // Project name, used to build the A2L and BIN file name -#define OPTION_USE_TCP true // TCP or UDP -#define OPTION_SERVER_PORT 5555 // Port -#define OPTION_SERVER_ADDR {0, 0, 0, 0} // Bind addr, 0.0.0.0 = ANY -#define OPTION_QUEUE_SIZE 1024 * 16 // Size of the measurement queue in bytes, must be a multiple of 8 -#define OPTION_LOG_LEVEL 3 // Log level, 0 = no log, 1 = error, 2 = warning, 3 = info, 4 = debug +#define OPTION_PROJECT_NAME "hello_xcp" // Project name, used to build the A2L and BIN file name +#define OPTION_PROJECT_EPK "v21_" __TIME__ // EPK version string +#define OPTION_USE_TCP true // TCP or UDP +#define OPTION_SERVER_PORT 5555 // Port +#define OPTION_SERVER_ADDR {0, 0, 0, 0} // Bind addr, 0.0.0.0 = ANY +#define OPTION_QUEUE_SIZE 1024 * 16 // Size of the measurement queue in bytes, must be a multiple of 8 +#define OPTION_LOG_LEVEL 3 // Log level, 0 = no log, 1 = error, 2 = warning, 3 = info, 4 = debug //----------------------------------------------------------------------------------------------------- // Demo calibration parameters @@ -27,11 +28,11 @@ typedef struct params { uint16_t counter_max; // Maximum value for the counter uint32_t delay_us; // Sleep time in microseconds for the main loop - float acceleration; // Acceleration in m/s^2 + float flow_rate; // Flow rate in m3/h } parameters_t; // Default values (reference page, "FLASH") for the calibration parameters -const parameters_t params = {.counter_max = 1024, .delay_us = 1000, .acceleration = 0.01f}; +const parameters_t params = {.counter_max = 1024, .delay_us = 1000, .flow_rate = 0.300f}; // A global calibration segment handle for the calibration parameters // A calibration segment has a working page ("RAM") and a reference page ("FLASH"), it is described by a MEMORY_SEGMENT in the A2L file @@ -42,42 +43,53 @@ tXcpCalSegIndex calseg = XCP_UNDEFINED_CALSEG; //----------------------------------------------------------------------------------------------------- // Demo global measurement values -uint8_t temperature = 50; // Temperature in Deg Celcius as Byte, 0 is -55 °C, 255 is +200 °C -float speed = 0.0f; // Speed in km/h +// Temperatures are in Deg Celcius as Byte, 0 is -55 °C, 255 is +200 °C +uint8_t outside_temperature = -5 + 55; +uint8_t inside_temperature = 20 + 55; +// Heat Energy in kW +double heat_energy = 0.0f; + +uint32_t global_counter = 0; + +//----------------------------------------------------------------------------------------------------- +// Read sensor values + +// Simulate reading the outside temperature sensor, by writing to the global variable +#define read_outside_sensor() (outside_temperature) +#define read_inside_sensor() (inside_temperature) //----------------------------------------------------------------------------------------------------- // Demo function with XCP instrumentation -float calc_speed(float current_speed) { +// Calculate heat power from temperature difference and flow rate calibration parameter +// Temperatures are in uint8_t in Deg Celsius offset by -55 °C, conversion rule identifier is "conv.temperature" +float calc_power(uint8_t t1, uint8_t t2) { - float new_speed = 0.0f; + double diff_temp = (double)t2 - (double)t1; // Diff temperature in Kelvin + double heat_power = diff_temp * 10.0f; // Heat power in kW // XCP: Create a measurement event and once register local measurement variables for current_speed and new_speed - DaqCreateEvent(calc_speed); + DaqCreateEvent(calc_power); A2lOnce() { - A2lSetStackAddrMode(calc_speed); // Set stack relative addressing mode with fixed event speed - A2lCreatePhysMeasurementInstance("calc_speed", current_speed, "Parameter current_speed in function calculate_speed", "km/h", 0, 250.0); - A2lCreatePhysMeasurementInstance("calc_speed", new_speed, "Loop counter, local measurement variable on stack", "km/h", 0, 250.0); + A2lSetStackAddrMode(calc_power); // Set stack relative addressing mode with fixed event heat_power + A2lCreatePhysMeasurementInstance("calc_power", t1, "Parameter t1 in function calc_power", "conv.temperature", -55.0, 200.0); + A2lCreatePhysMeasurementInstance("calc_power", t2, "Parameter t2 in function calc_power", "conv.temperature", -55.0, 200.0); + A2lCreatePhysMeasurementInstance("calc_power", diff_temp, "Local variable diff temperature in function calc_power", "K", -100.0, 100.0); + A2lCreatePhysMeasurementInstance("calc_power", heat_power, "Local variable calculated heat power in function calc_power", "W", 0.0, 10.0); } // XCP: Lock access to calibration parameters - parameters_t *params = (parameters_t *)XcpLockCalSeg(calseg); - - // Calculate new speed based on acceleration and sample rate - new_speed = (float)(current_speed + params->acceleration * params->delay_us * 3.6 / 1000000.0); // km/h - if (new_speed < 0.0f) { - new_speed = 0.0f; - } else if (new_speed > 250.0f) { - new_speed = 250.0f; // Limit speed to 250 km/h - } + const parameters_t *params = (parameters_t *)XcpLockCalSeg(calseg); + + heat_power = diff_temp * params->flow_rate * 1000.0 * 1.16; // in kWh, 1.16Wh per K per liter - calculate heat power using the flow rate calibration parameter // XCP: Unlock the calibration segment XcpUnlockCalSeg(calseg); - // XCP: Trigger the measurement event "calc_speed" - DaqEvent(calc_speed); + // XCP: Trigger the measurement event "calc_power" + DaqEvent(calc_power); - return new_speed; + return heat_power; } //----------------------------------------------------------------------------------------------------- @@ -97,7 +109,7 @@ int main(void) { // XCP: Initialize the XCP singleton, activate XCP, must be called before starting the server // If XCP is not activated, the server will not start and all XCP instrumentation will be passive with minimal overhead - XcpInit(true); + XcpInit(OPTION_PROJECT_NAME, OPTION_PROJECT_EPK, true); // XCP: Initialize the XCP Server uint8_t addr[4] = OPTION_SERVER_ADDR; @@ -114,29 +126,40 @@ int main(void) { // Binary persistence is not supported // Finalize the A2L file on XCP connect // Optionally create A2L groups for calibration segments and events - if (!A2lInit(OPTION_PROJECT_NAME, NULL /* EPK */, addr, OPTION_SERVER_PORT, OPTION_USE_TCP, A2L_MODE_WRITE_ONCE | A2L_MODE_FINALIZE_ON_CONNECT | A2L_MODE_AUTO_GROUPS)) { + if (!A2lInit(addr, OPTION_SERVER_PORT, OPTION_USE_TCP, A2L_MODE_WRITE_ONCE | A2L_MODE_FINALIZE_ON_CONNECT | A2L_MODE_AUTO_GROUPS)) { return 1; } // XCP: Create a calibration segment named 'Parameters' for the calibration parameter struct instance 'params' as reference page - calseg = XcpCreateCalSeg("Parameters", ¶ms, sizeof(params)); + calseg = XcpCreateCalSeg("params", ¶ms, sizeof(params)); - // XCP: Register the calibration parameters in the calibration segment + // XCP: Option1: Register the individual calibration parameters in the calibration segment A2lSetSegmentAddrMode(calseg, params); A2lCreateParameter(params.counter_max, "Maximum counter value", "", 0, 2000); A2lCreateParameter(params.delay_us, "Mainloop delay time in us", "us", 0, 999999); - A2lCreateParameter(params.acceleration, "Acceleration", "m/(s*s)", -10, 10); + A2lCreateParameter(params.flow_rate, "Flow rate", "m3/h", 0.0, 2.0); + + // XCP: Option2: Register the calibration segment as a typedef instance + // A2lTypedefBegin(parameters_t, "Calibration parameters typedef"); + // A2lTypedefParameterComponent(counter_max, parameters_t, "Maximum counter value", "", 0, 2000); + // A2lTypedefParameterComponent(delay_us, parameters_t, "Mainloop delay time in us", "us", 0, 999999); + // A2lTypedefParameterComponent(flow_rate, parameters_t, "Flow rate", "m3/h", 0.0, 2.0); + // A2lTypedefEnd(); + // A2lSetSegmentAddrMode(calseg, params); + // A2lCreateTypedefInstance(params, parameters_t, "Calibration parameters"); // XCP: Create a measurement event named "mainloop" DaqCreateEvent(mainloop); - // XCP: Register global measurement variables (temperature, speed) + // XCP: Register global measurement variables A2lSetAbsoluteAddrMode(mainloop); - A2lCreateLinearConversion(temperature, "Temperature in °C from unsigned byte", "°C", 1.0, -55.0); - A2lCreatePhysMeasurement(temperature, "Motor temperature in °C", "conv.temperature", -55.0, 200.0); - A2lCreatePhysMeasurement(speed, "Speed in km/h", "km/h", 0, 250.0); + A2lCreateLinearConversion(temperature, "Temperature in °C from unsigned byte", "C", 1.0, -55.0); + A2lCreatePhysMeasurement(outside_temperature, "Temperature in °C read from outside sensor", "conv.temperature", -20, 50); + A2lCreatePhysMeasurement(inside_temperature, "Temperature in °C read from inside sensor", "conv.temperature", 0, 40); + A2lCreatePhysMeasurement(heat_energy, "Accumulated heat energy in kWh", "kWh", 0.0, 10000.0); + A2lCreateMeasurement(global_counter, "Global free running counter"); - // XCP: Register a local measurement variable (loop_counter) + // XCP: Register local measurement variables uint16_t loop_counter = 0; A2lSetStackAddrMode(mainloop); // Set stack relative addressing mode with fixed event mainloop A2lCreateMeasurement(loop_counter, "Loop counter, local measurement variable on stack"); @@ -147,19 +170,23 @@ int main(void) { // XCP: Lock the calibration parameter segment for consistent and safe access // Calibration segment locking is wait-free, locks may be recursive // Returns a pointer to the active page (working or reference) of the calibration segment - parameters_t *params = (parameters_t *)XcpLockCalSeg(calseg); + const parameters_t *params = (parameters_t *)XcpLockCalSeg(calseg); uint32_t delay_us = params->delay_us; // Get the delay calibration parameter in microseconds // Local variables loop_counter++; if (loop_counter > params->counter_max) { // Get the counter_max calibration value and reset loop_counter + printf("%u: params.counter_max = %u\n", global_counter, params->counter_max); loop_counter = 0; } - // Global measurement variables - temperature = 50 + 21; - speed = calc_speed(speed); // Demo function to calculate a new speed based on the current speed and acceleration + // Global variables + global_counter++; + inside_temperature = read_inside_sensor(); + outside_temperature = read_outside_sensor(); + double heat_power = calc_power(outside_temperature, inside_temperature); // Demo function to calculate heat power in W + heat_energy += heat_power / 1000.0 * (double)delay_us / 3600e6; // Integrate heat energy in kWh in a global measurement variable, kWh = W/1000 * us/ 3600e6 // XCP: Unlock the calibration segment XcpUnlockCalSeg(calseg); diff --git a/examples/hello_xcp_cpp/CANape/CANape.ini b/examples/hello_xcp_cpp/CANape/CANape.ini index 23a5ed8e..f70f03b5 100644 --- a/examples/hello_xcp_cpp/CANape/CANape.ini +++ b/examples/hello_xcp_cpp/CANape/CANape.ini @@ -6,7 +6,7 @@ ;------------------------------------------------------------------------------- [!!!!!_CONSISTENCY_CHECK_START_SECTION_!!!!!] -GUID={DB14524D-6C12-4948-818C-AA0A6F1AA08B} +GUID={DA3B7B3C-C16F-4BBC-80F6-BABD862F2573} [FILE_INFO] Identification=CANape-Project-File @@ -20,8 +20,8 @@ PrgDate=16.06.2025 Description= CreationTime=20:47 CreationDate=08/28/2025 ; Month/Day/Year -ModificationTime=19:48 -ModificationDate=09/22/2025 ; Month/Day/Year +ModificationTime=08:16 +ModificationDate=10/11/2025 ; Month/Day/Year Protected=0 CurrentWindowsACP=1252 @@ -343,7 +343,7 @@ CREATION_FROM_MAPFILE_INDIVIDUAL=0 CREATION_FROM_MAPFILE_UPDATE_TREE=1 SN_SEPARATOR_LEFT=. @ SN_SEPARATOR_RIGHT=. -CACHE_SYNC_SHOW_SIMPLE_DIALOG=1 +CACHE_SYNC_SHOW_SIMPLE_DIALOG=0 CHECK_PROJECT_OPTIMIZATION=1 SAVE_NEW_MAPFILE_IF_NOT_FOUND=0 AXIS_TEMP_AUTOSCALE_MIN_INTERVAL_DRAW_UNITS_CNT=1 @@ -986,7 +986,7 @@ TREEX_dpi96=225 TREEY=1209 TREEY_dpi96=605 ACTIVEPANE=1 -SELECTED_TREENODE=Devices/hello_xcp_cpp_Device/Protocol +SELECTED_TREENODE=Devices/hello_xcp_cpp_Device/Protocol/Event List FIRSTVISIBLE_TREENODE=Devices TREEEXPAND_COUNT=7 TREEEXPAND_0=Devices @@ -1016,10 +1016,10 @@ ConfigurationJson={"RemoteServiceDataList":[{"DisplayName":"CANape Master","Ip": [DlgCommentWrapper] ScreenDPIinSection=192 -WindowLeft=855 -WindowLeft_dpi96=428 -WindowTop=683 -WindowTop_dpi96=342 +WindowLeft=1537 +WindowLeft_dpi96=769 +WindowTop=427 +WindowTop_dpi96=214 WindowWidth=1350 WindowWidth_dpi96=675 WindowHeight=923 @@ -1027,10 +1027,10 @@ WindowHeight_dpi96=462 [DlgMdfComment] ScreenDPIinSection=192 -WindowLeft=868 -WindowLeft_dpi96=434 -WindowTop=741 -WindowTop_dpi96=371 +WindowLeft=1550 +WindowLeft_dpi96=775 +WindowTop=485 +WindowTop_dpi96=243 WindowWidth=1324 WindowWidth_dpi96=662 WindowHeight=786 @@ -1252,7 +1252,7 @@ XCP_OPTIONAL_CMD_AVAILABLE_19=3 XCP_OPTIONAL_CMD_AVAILABLE_20=3 XCP_OPTIONAL_CMD_AVAILABLE_21=3 XCP_OPTIONAL_CMD_AVAILABLE_22=3 -XCP_OPTIONAL_CMD_AVAILABLE_23=2 +XCP_OPTIONAL_CMD_AVAILABLE_23=3 XCP_OPTIONAL_CMD_AVAILABLE_24=2 XCP_OPTIONAL_CMD_AVAILABLE_25=3 XCP_OPTIONAL_CMD_AVAILABLE_26=3 @@ -1297,9 +1297,9 @@ XCP_OPTIONAL_CMD_AUTO_LEARNING=1 XCP_OPTIONAL_SUB_CMD_AVAILABLE_0=3 XCP_OPTIONAL_SUB_CMD_AVAILABLE_1=2 XCP_OPTIONAL_SUB_CMD_AVAILABLE_2=2 -XCP_DAQ_PROPERTIES=0x15 +XCP_DAQ_PROPERTIES=0x13 XCP_DAQ_KEY_BYTE=0xC0 -XCP_DAQ_TIMESTAMP_MODE=0x3C +XCP_DAQ_TIMESTAMP_MODE=0x0C XCP_DAQ_TIMESTAMP_TICKS=1 XCP_MIN_DAQ=0 XCP_MAX_DAQ=0 @@ -1369,14 +1369,14 @@ BEG_CAL_SERVICE=0x0 END_CAL_SERVICE=0x0 TEST_CONNECTION_PERIOD=0 OVERRUN_HANDLING=0 -EVENT_COUNT=1 +EVENT_COUNT=2 EVENT_CHANNEL_0=0x0000 -EVENT_CYCLE_0=0 -EVENT_SAMPLE_UNIT_0=3 +EVENT_CYCLE_0=100 +EVENT_SAMPLE_UNIT_0=7 EVENT_MODE_0=4 EVENT_PRIO_0=0 EVENT_MAX_DAQ_LIST_0=255 -EVENT_NAME_0=avg_calc +EVENT_NAME_0=async EVENT_MULTISAMPLES_0=0 IGNORE_FIX_EVENTS=0 ECU_CYCLE_TIME=0 @@ -1387,8 +1387,8 @@ DETECT_SYNC_PULSE=0 GENERATE_SYNC_PULSE=0 TIME_CORR_MULTICAST=0 DAQ_TIMEOUT=0 -DAQ_RESUME_SUPPORTED=1 -DAQ_PRESCALER_SUPPORTED=0 +DAQ_RESUME_SUPPORTED=0 +DAQ_PRESCALER_SUPPORTED=1 DAQ_SINGLE_EVENT=0 DTO_SINGLE_EXT=0 DOUBLE_AS_FLOAT=0 @@ -1504,11 +1504,11 @@ RAM_PAGE_ID_EXT=0x0 ROM_PAGE_ID_EXT=0x0 FLASH_PAGE_ADDRESS_MAPPING_ENABLED=1 RUNTIME_CALRAM_ONLY=0 -MEMORY_SEGMENT_COUNT=2 -MEMORY_SEGMENT_NAME_1=epk +MEMORY_SEGMENT_COUNT=1 +MEMORY_SEGMENT_NAME_1=Parameters MEMORY_SEGMENT_TYPE_1=FLASH,DATA,INTERN -MEMORY_SEGMENT_SIZE_1=0x00000015 -MEMORY_SEGMENT_ADDR_1=0x80000000 +MEMORY_SEGMENT_SIZE_1=0x00000010 +MEMORY_SEGMENT_ADDR_1=0x0001A330 MEMORY_SEGMENT_ADDR_EXT_1=0x00 MEMORY_SEGMENT_ATTRIBUTE_1=0x00000000 MEMORY_SEGMENT_FLASH_OFFSET_1=0x00000000 @@ -1521,10 +1521,10 @@ MEMORY_SEGMENT_ADDR_EXT_2=0x00 MEMORY_SEGMENT_ATTRIBUTE_2=0x00000000 MEMORY_SEGMENT_FLASH_OFFSET_2=0x00000000 MEMORY_SEGMENT_ADDRESS_MAPPING_2= -CALRAM_SECTOR_NAME_1=epk +CALRAM_SECTOR_NAME_1=Parameters CALRAM_SECTOR_TYPE_1=FLASH,DATA,INTERN -CALRAM_SECTOR_SIZE_1=0x00000015 -CALRAM_SECTOR_ADDR_1=0x80000000 +CALRAM_SECTOR_SIZE_1=0x00000010 +CALRAM_SECTOR_ADDR_1=0x0001A330 CALRAM_SECTOR_ADDR_EXT_1=0x00 CALRAM_SECTOR_ATTRIBUTE_1=0x00000000 CALRAM_SECTOR_FLASH_OFFSET_1=0x00000000 @@ -1537,7 +1537,7 @@ CALRAM_SECTOR_ADDR_EXT_2=0x00 CALRAM_SECTOR_ATTRIBUTE_2=0x00000000 CALRAM_SECTOR_FLASH_OFFSET_2=0x00000000 CALRAM_SECTOR_ADDRESS_MAPPING_2= -CALRAM_SECTOR_COUNT=2 +CALRAM_SECTOR_COUNT=1 FLASH_SECTOR_COUNT=0 FLASH_GROUP_COUNT=0 TRANSPORT_LAYER_INSTANCE_NAME= @@ -1545,7 +1545,7 @@ PROTOCOL_TYPE=4 PACKET_CTR=0 TRANSPORT_LAYER_VERSION=260 HOST_NAME= -HOST=192.168.8.133 +HOST=192.168.0.2 PORT=5555 LOCAL_PORT=0 TRANSPORT_LAYER_PROTOCOL=0 @@ -1604,6 +1604,17 @@ VLAN_CONFIG_COUNT=0 Databases_COUNT=0 CHANNELX=255 USE_ASAP2_DATABASE=1 +EVENT_CHANNEL_1=0x0001 +EVENT_CYCLE_1=0 +EVENT_SAMPLE_UNIT_1=3 +EVENT_MODE_1=4 +EVENT_PRIO_1=0 +EVENT_MAX_DAQ_LIST_1=255 +EVENT_NAME_1=avg_calc +EVENT_MULTISAMPLES_1=0 +EVENT_MIN_CYCLE_TIME_CYCLE_1=0 +EVENT_MIN_CYCLE_TIME_UNIT_1=9 +EVENT_DPM_SUPPORTED_1=0 [ModuleExplorer_hello_xcp_cpp] ScreenDPIinSection=96 @@ -1987,25 +1998,102 @@ ColWidthDisplay=462 ShowMore=0 MoreHeight=566 MoreHeight_dpi96=283 -WindowLeft=681 -WindowLeft_dpi96=341 -WindowTop=499 -WindowTop_dpi96=250 -WindowWidth=1241 +WindowLeft=1591 +WindowLeft_dpi96=796 +WindowTop=569 +WindowTop_dpi96=285 +WindowWidth=1242 WindowWidth_dpi96=621 WindowHeight=260 WindowHeight_dpi96=130 +[VN::FlexRay1] +NAME=VN::FlexRay 1 +RX_QUEUE_SIZE=4096 +TL_PARAM_COUNT=7 +TL_PARAM_NAME_0=VN_QUEUE_SIZE +TL_PARAM_VALUE_0=2097152 +TL_PARAM_NAME_1=SYNC_KEY_SLOT +TL_PARAM_VALUE_1=-1 +TL_PARAM_NAME_2=SYNC_CHANNEL +TL_PARAM_VALUE_2=A +TL_PARAM_NAME_3=STARTUP_BUDDY +TL_PARAM_VALUE_3=0 +TL_PARAM_NAME_4=STARTUP_BUDDY_SLOTID +TL_PARAM_VALUE_4=-1 +TL_PARAM_NAME_5=STARTUP_BUDDY_CHANNEL +TL_PARAM_VALUE_5=A +TL_PARAM_NAME_6=RETRY_SYNC +TL_PARAM_VALUE_6=-1 + +[DEVICE_EXPLORER_COLUMNLIST_CHANNELS] +ScreenDPIinSection=192 +ColumnCount=4 +Column_0=0, 306 +Column_0_dpi96=0, 153 +Column_1=1245185, 132 +Column_1_dpi96=1245185, 66 +Column_2=1245186, 66 +Column_2_dpi96=1245186, 33 +Column_3=1245187, 106 +Column_3_dpi96=1245187, 53 +ColumnIdSort=-1 +SortUpward=1 + +[DEVICE_EXPLORER_COLUMNLIST_DEVICES] +ScreenDPIinSection=192 +ColumnCount=10 +Column_0=34, 96 +Column_0_dpi96=34, 48 +Column_1=0, 460 +Column_1_dpi96=0, 230 +Column_2=131078, 160 +Column_2_dpi96=131078, 80 +Column_3=131103, 100 +Column_3_dpi96=131103, 50 +Column_4=131079, 100 +Column_4_dpi96=131079, 50 +Column_5=262145, 240 +Column_5_dpi96=262145, 120 +Column_6=131085, 200 +Column_6_dpi96=131085, 100 +Column_7=131080, 240 +Column_7_dpi96=131080, 120 +Column_8=131081, 160 +Column_8_dpi96=131081, 80 +Column_9=196609, 100 +Column_9_dpi96=196609, 50 +ColumnIdSort=-1 +SortUpward=1 + +[DEVICE_EXPLORER_COLUMNLIST_NETWORKS] +ScreenDPIinSection=192 +ColumnCount=6 +Column_0=34, 64 +Column_0_dpi96=34, 32 +Column_1=0, 304 +Column_1_dpi96=0, 152 +Column_2=983041, 192 +Column_2_dpi96=983041, 96 +Column_3=983042, 530 +Column_3_dpi96=983042, 265 +Column_4=983043, 252 +Column_4_dpi96=983043, 126 +Column_5=983044, 300 +Column_5_dpi96=983044, 150 +ColumnIdSort=-1 +SortUpward=1 + [MEASUREMENT_DISPLAY] ScreenDPIinSection=192 -POSX=0 -POSX_dpi96=0 -POSY=0 -POSY_dpi96=0 -SIZEX=1620 -SIZEX_dpi96=810 -SIZEY=1200 -SIZEY_dpi96=600 +POSX=548 +POSX_dpi96=274 +POSY=331 +POSY_dpi96=166 +SIZEX=2207 +SIZEX_dpi96=1104 +SIZEY=1499 +SIZEY_dpi96=750 SHOWTOOLBAR=1 SHOWSTATUSBAR=1 SHOWGRID=0 @@ -2013,16 +2101,16 @@ RIGHTPANE2HEIGHT=304 RIGHTPANE2HEIGHT_dpi96=152 TREEX=450 TREEX_dpi96=225 -TREEY=1009 -TREEY_dpi96=505 +TREEY=1308 +TREEY_dpi96=654 ACTIVEPANE=1 -SELECTED_TREENODE=Recorder list/Recorder +SELECTED_TREENODE=Measurement signals FIRSTVISIBLE_TREENODE=Measurement options TREEEXPAND_COUNT=2 TREEEXPAND_0=Measurement signals TREEEXPAND_1=Recorder list LAST_FOCUSED_LISTCOLUMN=0 -LAST_FOCUSED_LISTINDEX=1 +LAST_FOCUSED_LISTINDEX=3 LAST_TOP_LISTINDEX=0 DAQLISTS=2 STATUSBAR_BYTES=1 @@ -2079,10 +2167,10 @@ Column_1=29, 88 Column_1_dpi96=29, 44 Column_2=34, 96 Column_2_dpi96=34, 48 -Column_3=31, 460 -Column_3_dpi96=31, 230 -Column_4=65540, 160 -Column_4_dpi96=65540, 80 +Column_3=31, 271 +Column_3_dpi96=31, 136 +Column_4=65540, 391 +Column_4_dpi96=65540, 196 Column_5=65541, 120 Column_5_dpi96=65541, 60 Column_6=65597, 200 @@ -2151,25 +2239,6 @@ SortUpward=1 [MEASUREMENT_DISPLAY_DYNAMIC_COLUMNS] Count=0 -[VN::FlexRay1] -NAME=VN::FlexRay 1 -RX_QUEUE_SIZE=4096 -TL_PARAM_COUNT=7 -TL_PARAM_NAME_0=VN_QUEUE_SIZE -TL_PARAM_VALUE_0=2097152 -TL_PARAM_NAME_1=SYNC_KEY_SLOT -TL_PARAM_VALUE_1=-1 -TL_PARAM_NAME_2=SYNC_CHANNEL -TL_PARAM_VALUE_2=A -TL_PARAM_NAME_3=STARTUP_BUDDY -TL_PARAM_VALUE_3=0 -TL_PARAM_NAME_4=STARTUP_BUDDY_SLOTID -TL_PARAM_VALUE_4=-1 -TL_PARAM_NAME_5=STARTUP_BUDDY_CHANNEL -TL_PARAM_VALUE_5=A -TL_PARAM_NAME_6=RETRY_SYNC -TL_PARAM_VALUE_6=-1 - [COLOR_SCHEME_LIST] COLOR_SCHEME0=COLOR_SCHEMEUSER_DEFINED SCHEMES_COUNT=1 @@ -2305,72 +2374,14 @@ MODE=12 VALUE_COUNT=0 HISTORY_COUNT=0 -[DEVICE_EXPLORER_COLUMNLIST_CHANNELS] -ScreenDPIinSection=192 -ColumnCount=4 -Column_0=0, 306 -Column_0_dpi96=0, 153 -Column_1=1245185, 132 -Column_1_dpi96=1245185, 66 -Column_2=1245186, 66 -Column_2_dpi96=1245186, 33 -Column_3=1245187, 106 -Column_3_dpi96=1245187, 53 -ColumnIdSort=-1 -SortUpward=1 - -[DEVICE_EXPLORER_COLUMNLIST_DEVICES] -ScreenDPIinSection=192 -ColumnCount=10 -Column_0=34, 96 -Column_0_dpi96=34, 48 -Column_1=0, 460 -Column_1_dpi96=0, 230 -Column_2=131078, 160 -Column_2_dpi96=131078, 80 -Column_3=131103, 100 -Column_3_dpi96=131103, 50 -Column_4=131079, 100 -Column_4_dpi96=131079, 50 -Column_5=262145, 240 -Column_5_dpi96=262145, 120 -Column_6=131085, 200 -Column_6_dpi96=131085, 100 -Column_7=131080, 240 -Column_7_dpi96=131080, 120 -Column_8=131081, 160 -Column_8_dpi96=131081, 80 -Column_9=196609, 100 -Column_9_dpi96=196609, 50 -ColumnIdSort=-1 -SortUpward=1 - -[DEVICE_EXPLORER_COLUMNLIST_NETWORKS] -ScreenDPIinSection=192 -ColumnCount=6 -Column_0=34, 64 -Column_0_dpi96=34, 32 -Column_1=0, 304 -Column_1_dpi96=0, 152 -Column_2=983041, 192 -Column_2_dpi96=983041, 96 -Column_3=983042, 530 -Column_3_dpi96=983042, 265 -Column_4=983043, 252 -Column_4_dpi96=983043, 126 -Column_5=983044, 300 -Column_5_dpi96=983044, 150 -ColumnIdSort=-1 -SortUpward=1 - [MEASUREMENT_0] FileId=Measurement1 -MeasurementId=97c38cb3-ece6-4082-9643-c1f68fe690f1 +MeasurementId=d6e49298-61e1-4fc7-9b62-0b3e835d2dd0 LoadMeasurementSetting=3 [SIGNSELWND_DYNAMIC_COLUMNS] Count=0 [~~~~~_CONSISTENCY_CHECK_END_SECTION_~~~~~] -GUID={DB14524D-6C12-4948-818C-AA0A6F1AA08B} +GUID={DA3B7B3C-C16F-4BBC-80F6-BABD862F2573} diff --git a/examples/hello_xcp_cpp/CANape/hello_xcp_cpp.cna b/examples/hello_xcp_cpp/CANape/hello_xcp_cpp.cna index 57eb8cf2..e269f7ec 100644 --- a/examples/hello_xcp_cpp/CANape/hello_xcp_cpp.cna +++ b/examples/hello_xcp_cpp/CANape/hello_xcp_cpp.cna @@ -1,17 +1,17 @@ [FILE_INFO] Identification=CANape-Configuration-File FileName=hello_xcp_cpp.cna -FileNameAbsolute=D:\git\XCPlite-RainerZ\examples\hello_xcp_cpp\CANape\hello_xcp_cpp.cna -WorkingDirectory=D:\git\XCPlite-RainerZ\examples\hello_xcp_cpp\CANape +FileNameAbsolute=Y:\XCPlite-RainerZ\examples\hello_xcp_cpp\CANape\hello_xcp_cpp.cna +WorkingDirectory=Y:\XCPlite-RainerZ\examples\hello_xcp_cpp\CANape ProjectId=07e9-0008-001c-0014-002b-0032-0000 FileVersion=2200 -PrgVersion=Version 23.0.21.55 HF1 -PrgDate=11.08.2025 +PrgVersion=Version 23.0.20.3237 +PrgDate=16.06.2025 Description= CreationTime=20:50 CreationDate=08/28/2025 ; Month/Day/Year -ModificationTime=15:14 -ModificationDate=09/02/2025 ; Month/Day/Year +ModificationTime=12:19 +ModificationDate=10/01/2025 ; Month/Day/Year Protected=0 CurrentWindowsACP=1252 @@ -375,9 +375,9 @@ WindowTextExtended=1 WindowTextExtendedNew=1 WindowSymbols=1 GlobalCursor=0 -GlobalCursorTime=1630 -GlobalCursorTimeNs=1630312900 -MainWindowPos=1, 484, 48, 1244, 792 ;cmd, x, y, w, h +GlobalCursorTime=4005 +GlobalCursorTimeNs=4005662583 +MainWindowPos=1, 968, 96, 2488, 1584 ;cmd, x, y, w, h [PAR_COMMENT] 1="Name","" @@ -400,7 +400,7 @@ ScriptName= ScriptName= [PRINTING] -ScreenDPI=96 +ScreenDPI=192 [PROFILE_MDF_OBJECT_1] Unit= @@ -555,10 +555,10 @@ Type=65536 Comment=Multi view window Number=1 GUID=WINDOW_390f5558-2744-45e3-8c70-88ba522738e7 -ScreenDPIinSection=96 -Position=0, 9, 5, 773, 402 ;cmd, x, y, w, h +ScreenDPIinSection=192 +Position=0, 18, 10, 1546, 804 ;cmd, x, y, w, h Position_dpi96=0, 9, 5, 773, 402 ;cmd, x, y, w, h -Position_Page01=0, 9, 5, 773, 402 ;cmd, x, y, w, h +Position_Page01=0, 18, 10, 1546, 804 ;cmd, x, y, w, h Position_Page01_dpi96=0, 9, 5, 773, 402 ;cmd, x, y, w, h FloatingWindow=0 ShowSignalComments=1 @@ -566,18 +566,18 @@ DisplayMask=1 ; pages 1 [WINDOW_2] XLen=18374 -XMin=0 -XMinNs=0 -XMax=1077 -XMaxNs=1077255952 +XMin=22292 +XMinNs=22292987392 +XMax=24102 +XMaxNs=24102531279 Grid=1 Mark=1 YValue=1 ShowLegend=2 ShowLegendHeader=1 -LegendPixWidth=150 +LegendPixWidth=300 LegendPixWidth_dpi96=150 -LegendPixHeight=98 +LegendPixHeight=196 LegendPixHeight_dpi96=98 LegendPos=2 Optimize=1 @@ -587,7 +587,7 @@ XYModeIndexP1=-1 DisplayModeAuto=0 XStart=0 AbsoluteTimeMode=0 -YAxisWidth=50 +YAxisWidth=100 YAxisWidth_dpi96=50 RightYAxisWidth=0 RightYAxisWidth_dpi96=0 @@ -614,7 +614,7 @@ Type=1 Comment=Graphic Window Number=2 GUID=WINDOW_4a256e26-24fd-4ad7-9ca2-1e2376673ce9 -ScreenDPIinSection=96 +ScreenDPIinSection=192 Position=0, 0, 0, 0, 0 ;cmd, x, y, w, h Position_dpi96=0, 0, 0, 0, 0 ;cmd, x, y, w, h Position_Page01=0, 0, 0, 0, 0 ;cmd, x, y, w, h @@ -630,27 +630,27 @@ TimeAxisTemplate= DisplayMask=1 ; pages 1 [WINDOW_2_LEG_COLUMNS] -ScreenDPIinSection=96 +ScreenDPIinSection=192 COUNT=2 -COL_0=31, 81 +COL_0=31, 162 COL_0_dpi96=31, 81 -COL_1=1048578, 62 +COL_1=1048578, 124 COL_1_dpi96=1048578, 62 [WINDOW_3] XLen=18374 -XMin=0 -XMinNs=0 -XMax=1077 -XMaxNs=1077255952 +XMin=22292 +XMinNs=22292987392 +XMax=24102 +XMaxNs=24102531279 Grid=1 Mark=1 YValue=1 ShowLegend=2 ShowLegendHeader=1 -LegendPixWidth=150 +LegendPixWidth=300 LegendPixWidth_dpi96=150 -LegendPixHeight=98 +LegendPixHeight=196 LegendPixHeight_dpi96=98 LegendPos=2 Optimize=1 @@ -660,7 +660,7 @@ XYModeIndexP1=-1 DisplayModeAuto=0 XStart=0 AbsoluteTimeMode=0 -YAxisWidth=50 +YAxisWidth=100 YAxisWidth_dpi96=50 RightYAxisWidth=0 RightYAxisWidth_dpi96=0 @@ -687,10 +687,10 @@ Type=1 Comment=Graphic Window Number=3 GUID=WINDOW_54ea6e00-e9e3-4c51-986f-64c4f8405317 -ScreenDPIinSection=96 -Position=0, 13, 13, 500, 200 ;cmd, x, y, w, h +ScreenDPIinSection=192 +Position=0, 26, 26, 1000, 400 ;cmd, x, y, w, h Position_dpi96=0, 13, 13, 500, 200 ;cmd, x, y, w, h -Position_Page01=0, 13, 13, 500, 200 ;cmd, x, y, w, h +Position_Page01=0, 26, 26, 1000, 400 ;cmd, x, y, w, h Position_Page01_dpi96=0, 13, 13, 500, 200 ;cmd, x, y, w, h FloatingWindow=0 JointIndex=1 @@ -703,11 +703,11 @@ TimeAxisTemplate= DisplayMask=1 ; pages 1 [WINDOW_3_LEG_COLUMNS] -ScreenDPIinSection=96 +ScreenDPIinSection=192 COUNT=2 -COL_0=31, 81 +COL_0=31, 162 COL_0_dpi96=31, 81 -COL_1=1048578, 62 +COL_1=1048578, 124 COL_1_dpi96=1048578, 62 [WINDOW_4] @@ -718,21 +718,21 @@ ClearStart=1 AbsoluteTimeEnabled=0 ShowGridLines=0 ColumnCount=3 -Column_0=21, 40 +Column_0=21, 80 Column_0_dpi96=21, 40 -Column_1=22, 90 +Column_1=22, 180 Column_1_dpi96=22, 90 -Column_2=23, 823 +Column_2=23, 1646 Column_2_dpi96=23, 823 Title=Write Type=128 Comment=Write Window Number=4 GUID=WINDOW_4b378aed-ba54-4c60-b2c5-e5e38f0209f3 -ScreenDPIinSection=96 -Position=0, 9, 415, 949, 156 ;cmd, x, y, w, h +ScreenDPIinSection=192 +Position=0, 18, 830, 1898, 312 ;cmd, x, y, w, h Position_dpi96=0, 9, 415, 949, 156 ;cmd, x, y, w, h -Position_Page01=0, 9, 415, 949, 156 ;cmd, x, y, w, h +Position_Page01=0, 18, 830, 1898, 312 ;cmd, x, y, w, h Position_Page01_dpi96=0, 9, 415, 949, 156 ;cmd, x, y, w, h FloatingWindow=0 ShowSignalComments=1 @@ -741,7 +741,7 @@ DisplayMask=1 ; pages 1 [WINDOW_5] ProgID= PROPERTIES_COUNT=1 -PROPERTY_1={"Version":"1.3.0.0","Configuration":{"ArrayWindowSubControlConfiguration":{"NumericGraphicCompositeWidth":171,"NumericGraphicCompositeHeight":113,"LegendCoordinatePoint":{"X":0,"Y":0},"LegendWidth":0,"LegendHeight":0,"LegendLayoutGroupSizeWidth":0,"LegendLayoutGroupSizeHeight":0,"NumericCoordinatePoint":{"X":1,"Y":24},"NumericWidth":169,"NumericHeight":88,"NumericLayoutGroupSizeWidth":169,"NumericLayoutGroupSizeHeight":88,"Intersection2DXWCoordinatePoint":{"X":0,"Y":0},"Intersection2DXWWidth":0,"Intersection2DXWHeight":0,"Intersection2DXWLayoutGroupSizeWidth":0,"Intersection2DXWLayoutGroupSizeHeight":0,"Intersection2DYWCoordinatePoint":{"X":0,"Y":0},"Intersection2DYWWidth":0,"Intersection2DYWHeight":0,"Intersection2DYWLayoutGroupSizeWidth":0,"Intersection2DYWLayoutGroupSizeHeight":0,"Graphic3DCoordinatePoint":{"X":0,"Y":0},"Graphic3DWidth":0,"Graphic3DHeight":0,"Graphic3DLayoutGroupSizeWidth":0,"Graphic3DLayoutGroupSizeHeight":0},"ShowCalibrationBar":true,"ShowHorizontalChartLines":false,"ShowVerticalChartLines":false,"NonSelectedIntersectionLineTransparency":0.100000024,"FocusedValueSymbol":"DEVICE:\"hello_xcp_cpp\":\"$Parameters$Parameters.max\":P","ValueObjectConfigurations":[{"Symbol":"DEVICE:\"hello_xcp_cpp\":\"$Parameters$Parameters.max\":P","SerializationColor":{"R":0,"G":0,"B":0,"A":255},"Collapsed":false,"SerializationFrameColor":{"R":0,"G":0,"B":0,"A":255},"ValueFormat":0,"AxisValueFormats":[],"NumericFormat":4,"AxisNumericFormats":[],"NumericFormatDigits":6,"IsActive":true,"CurrentChartViewType":2,"PointMarker":1,"IsValueAnnotationEnabled":false,"ValueAxisMin":-100,"ValueAxisMax":100,"ValueAxisMinHome":-100,"ValueAxisMaxHome":100,"ValueAxisPosition":0,"CommonValueAxisName":null,"CommonValueAxisLabel":"","CommonValueAxisMin":0,"CommonValueAxisMax":0,"CommonValueAxisMinHome":0,"CommonValueAxisMaxHome":0,"SerializationCommonValueAxisColor":{"R":0,"G":0,"B":0,"A":0},"CommonValueAxisID":0,"CommonValueAxisFormat":null,"CommonValueAxisPosition":0,"CommonXAxisLabel":"","CommonYAxisLabel":"","CustomAxisLabels":["","","","","",""]},{"Symbol":"DEVICE:\"hello_xcp_cpp\":\"$Parameters$Parameters.min\":P","SerializationColor":{"R":0,"G":0,"B":0,"A":255},"Collapsed":false,"SerializationFrameColor":{"R":0,"G":0,"B":0,"A":255},"ValueFormat":0,"AxisValueFormats":[],"NumericFormat":4,"AxisNumericFormats":[],"NumericFormatDigits":6,"IsActive":true,"CurrentChartViewType":2,"PointMarker":1,"IsValueAnnotationEnabled":false,"ValueAxisMin":-100,"ValueAxisMax":100,"ValueAxisMinHome":-100,"ValueAxisMaxHome":100,"ValueAxisPosition":0,"CommonValueAxisName":null,"CommonValueAxisLabel":"","CommonValueAxisMin":0,"CommonValueAxisMax":0,"CommonValueAxisMinHome":0,"CommonValueAxisMaxHome":0,"SerializationCommonValueAxisColor":{"R":0,"G":0,"B":0,"A":0},"CommonValueAxisID":0,"CommonValueAxisFormat":null,"CommonValueAxisPosition":0,"CommonXAxisLabel":"","CommonYAxisLabel":"","CustomAxisLabels":["","","","","",""]}],"NumericGraphicControlPosition":0,"NumericGraphicControlSelectedTab":0,"GraphicControlPosition":0,"Height2DXControl":1,"Height2DYControl":1,"Height3DControl":2,"HeightNumericControl":1,"HeightChartControl":1,"HeightLegendControl":0.44999998807907104,"Width2DXControl":1,"Width2DYControl":1,"Width3DControl":2,"WidthNumericControl":2,"WidthChartControl":2,"WidthLegendControl":0.30000001192092896,"HeightValueControl":1,"WidthValueControl":1,"HeightNumericGraphicControl":1,"WidthNumericGraphicControl":1,"Height2DChartsControl":1,"Width2DChartsControl":1,"IsXAxisHeightSynchronizedBetweenCharts":true,"IsYAxisAreaWidthSynchronizedBetweenCharts":true,"SyncedXAxisHeight":NaN,"XWChartXAxisHeight":NaN,"YWChartXAxisHeight":NaN,"SyncedLeftAxisAreaWidth":NaN,"XWChartLeftAxisAreaWidth":NaN,"YWChartLeftAxisAreaWidth":NaN,"SyncedRightAxisAreaWidth":NaN,"XWChartRightAxisAreaWidth":NaN,"YWChartRightAxisAreaWidth":NaN,"LegendPosition":0,"LegendViewType":0,"LegendTableColumnAttributes":[{"TypeId":"1048594","Size":40},{"TypeId":"1048601","Size":45},{"TypeId":"31","Size":100},{"TypeId":"3","Size":250},{"TypeId":"16","Size":70},{"TypeId":"1048627","Size":100},{"TypeId":"1048631","Size":100},{"TypeId":"1048634","Size":100}],"LegendTabItemAttributes":[{"TypeId":"31","Size":100}],"FlipAxes":false,"AxisDisplayNameMode":3,"ReversedAxis":[false,false],"ShowUnits":false,"ShowObjectColor":true,"SortDescending":false,"SortAttributeId":null,"ShowWorkingPointHistory":false,"NumericViewValueObjectDisplayOption":1,"ValueColumnWidth":77,"ValueColumnWidthDouble":77,"ParameterGroup":"","ModuleName":"","GroupIsFunction":false,"NumericControlAxisAttributes":[],"NumericControlColumnAttributes":[{"TypeId":"31","Size":74}],"ChartViewValueObjectDisplayOption":1,"SerializationCameraPosition":{"X":1,"Y":1,"Z":-1},"SerializationCameraTarget":{"X":0,"Y":0.5,"Z":0},"IsValueAnnotationRotated":false,"EquidistantAxisPoints":false,"BarThickness":0.6,"WorkingPointMarker":0,"LinearWorkingPointInterpolation":true,"ShowAllIntersectionLines":false,"IsValueAxisIndependent":true,"TickLabelRotationAngle":-90,"IsTickLabelRotationEnabled":false,"IsTickLabelRightAligned":false,"ShowBoundarySurface":true,"ShowBoundarySurfaceGradient":false,"ShowCursorAsCrosshair":false,"XAxisAutoRange":true,"ValueAxisAutoRange":true,"ShowAllValueAxes":false,"DrawAxisBands":false,"CurrentColumnChartType":0,"SerializationCursorCrosshairColor":{"R":0,"G":0,"B":0,"A":255},"AlignBarToZero":true,"DefaultChartViewType":2,"AttributeColumnPositioning":1}} +PROPERTY_1={"Version":"1.3.0.0","Configuration":{"ArrayWindowSubControlConfiguration":{"NumericGraphicCompositeWidth":174,"NumericGraphicCompositeHeight":133,"LegendCoordinatePoint":{"X":0,"Y":0},"LegendWidth":0,"LegendHeight":0,"LegendLayoutGroupSizeWidth":0,"LegendLayoutGroupSizeHeight":0,"NumericCoordinatePoint":{"X":1,"Y":24},"NumericWidth":172,"NumericHeight":108,"NumericLayoutGroupSizeWidth":172,"NumericLayoutGroupSizeHeight":108,"Intersection2DXWCoordinatePoint":{"X":0,"Y":0},"Intersection2DXWWidth":0,"Intersection2DXWHeight":0,"Intersection2DXWLayoutGroupSizeWidth":0,"Intersection2DXWLayoutGroupSizeHeight":0,"Intersection2DYWCoordinatePoint":{"X":0,"Y":0},"Intersection2DYWWidth":0,"Intersection2DYWHeight":0,"Intersection2DYWLayoutGroupSizeWidth":0,"Intersection2DYWLayoutGroupSizeHeight":0,"Graphic3DCoordinatePoint":{"X":0,"Y":0},"Graphic3DWidth":0,"Graphic3DHeight":0,"Graphic3DLayoutGroupSizeWidth":0,"Graphic3DLayoutGroupSizeHeight":0},"ShowCalibrationBar":true,"ShowHorizontalChartLines":false,"ShowVerticalChartLines":false,"NonSelectedIntersectionLineTransparency":0.100000024,"FocusedValueSymbol":"DEVICE:\"hello_xcp_cpp\":\"$Parameters$Parameters.min\":P","ValueObjectConfigurations":[{"Symbol":"DEVICE:\"hello_xcp_cpp\":\"$Parameters$Parameters.max\":P","SerializationColor":{"R":0,"G":0,"B":0,"A":255},"Collapsed":false,"SerializationFrameColor":{"R":0,"G":0,"B":0,"A":255},"ValueFormat":0,"AxisValueFormats":[],"NumericFormat":4,"AxisNumericFormats":[],"NumericFormatDigits":6,"IsActive":true,"CurrentChartViewType":2,"PointMarker":1,"IsValueAnnotationEnabled":false,"ValueAxisMin":-100,"ValueAxisMax":100,"ValueAxisMinHome":-100,"ValueAxisMaxHome":100,"ValueAxisPosition":0,"CommonValueAxisName":null,"CommonValueAxisLabel":"","CommonValueAxisMin":0,"CommonValueAxisMax":0,"CommonValueAxisMinHome":0,"CommonValueAxisMaxHome":0,"SerializationCommonValueAxisColor":{"R":0,"G":0,"B":0,"A":0},"CommonValueAxisID":0,"CommonValueAxisFormat":null,"CommonValueAxisPosition":0,"CommonXAxisLabel":"","CommonYAxisLabel":"","CustomAxisLabels":["","","","","",""]},{"Symbol":"DEVICE:\"hello_xcp_cpp\":\"$Parameters$Parameters.min\":P","SerializationColor":{"R":0,"G":0,"B":0,"A":255},"Collapsed":false,"SerializationFrameColor":{"R":0,"G":0,"B":0,"A":255},"ValueFormat":0,"AxisValueFormats":[],"NumericFormat":4,"AxisNumericFormats":[],"NumericFormatDigits":6,"IsActive":true,"CurrentChartViewType":2,"PointMarker":1,"IsValueAnnotationEnabled":false,"ValueAxisMin":-100,"ValueAxisMax":100,"ValueAxisMinHome":-100,"ValueAxisMaxHome":100,"ValueAxisPosition":0,"CommonValueAxisName":null,"CommonValueAxisLabel":"","CommonValueAxisMin":0,"CommonValueAxisMax":0,"CommonValueAxisMinHome":0,"CommonValueAxisMaxHome":0,"SerializationCommonValueAxisColor":{"R":0,"G":0,"B":0,"A":0},"CommonValueAxisID":0,"CommonValueAxisFormat":null,"CommonValueAxisPosition":0,"CommonXAxisLabel":"","CommonYAxisLabel":"","CustomAxisLabels":["","","","","",""]}],"NumericGraphicControlPosition":0,"NumericGraphicControlSelectedTab":0,"GraphicControlPosition":0,"Height2DXControl":1,"Height2DYControl":1,"Height3DControl":2,"HeightNumericControl":1,"HeightChartControl":1,"HeightLegendControl":0.44999998807907104,"Width2DXControl":1,"Width2DYControl":1,"Width3DControl":2,"WidthNumericControl":2,"WidthChartControl":2,"WidthLegendControl":0.30000001192092896,"HeightValueControl":1,"WidthValueControl":1,"HeightNumericGraphicControl":1,"WidthNumericGraphicControl":1,"Height2DChartsControl":1,"Width2DChartsControl":1,"IsXAxisHeightSynchronizedBetweenCharts":true,"IsYAxisAreaWidthSynchronizedBetweenCharts":true,"SyncedXAxisHeight":NaN,"XWChartXAxisHeight":NaN,"YWChartXAxisHeight":NaN,"SyncedLeftAxisAreaWidth":NaN,"XWChartLeftAxisAreaWidth":NaN,"YWChartLeftAxisAreaWidth":NaN,"SyncedRightAxisAreaWidth":NaN,"XWChartRightAxisAreaWidth":NaN,"YWChartRightAxisAreaWidth":NaN,"LegendPosition":0,"LegendViewType":0,"LegendTableColumnAttributes":[{"TypeId":"1048594","Size":40},{"TypeId":"1048601","Size":45},{"TypeId":"31","Size":100},{"TypeId":"3","Size":250},{"TypeId":"16","Size":70},{"TypeId":"1048627","Size":100},{"TypeId":"1048631","Size":100},{"TypeId":"1048634","Size":100}],"LegendTabItemAttributes":[{"TypeId":"31","Size":100}],"FlipAxes":false,"AxisDisplayNameMode":3,"ReversedAxis":[false,false],"ShowUnits":false,"ShowObjectColor":true,"SortDescending":false,"SortAttributeId":null,"ShowWorkingPointHistory":false,"NumericViewValueObjectDisplayOption":1,"ValueColumnWidth":77,"ValueColumnWidthDouble":77,"ParameterGroup":"","ModuleName":"","GroupIsFunction":false,"NumericControlAxisAttributes":[],"NumericControlColumnAttributes":[{"TypeId":"31","Size":74}],"ChartViewValueObjectDisplayOption":1,"SerializationCameraPosition":{"X":1,"Y":1,"Z":-1},"SerializationCameraTarget":{"X":0,"Y":0.5,"Z":0},"IsValueAnnotationRotated":false,"EquidistantAxisPoints":false,"BarThickness":0.6,"WorkingPointMarker":0,"LinearWorkingPointInterpolation":true,"ShowAllIntersectionLines":false,"IsValueAxisIndependent":true,"TickLabelRotationAngle":-90,"IsTickLabelRotationEnabled":false,"IsTickLabelRightAligned":false,"ShowBoundarySurface":true,"ShowBoundarySurfaceGradient":false,"ShowCursorAsCrosshair":false,"XAxisAutoRange":true,"ValueAxisAutoRange":true,"ShowAllValueAxes":false,"DrawAxisBands":false,"CurrentColumnChartType":0,"SerializationCursorCrosshairColor":{"R":0,"G":0,"B":0,"A":255},"AlignBarToZero":true,"DefaultChartViewType":2,"AttributeColumnPositioning":1}} OBJECTS_COUNT=2 OBJECT_1=DEVICE:"hello_xcp_cpp":"$Parameters$Parameters.max":P OBJECT_2=DEVICE:"hello_xcp_cpp":"$Parameters$Parameters.min":P @@ -752,10 +752,10 @@ Type=137438953472 Comment=Parameters Number=5 GUID=WINDOW_9f594130-cb21-49b7-bf2e-e1fb30f481e8 -ScreenDPIinSection=96 -Position=0, 789, 5, 177, 136 ;cmd, x, y, w, h +ScreenDPIinSection=192 +Position=0, 1578, 10, 354, 272 ;cmd, x, y, w, h Position_dpi96=0, 789, 5, 177, 136 ;cmd, x, y, w, h -Position_Page01=0, 789, 5, 177, 136 ;cmd, x, y, w, h +Position_Page01=0, 1578, 10, 354, 272 ;cmd, x, y, w, h Position_Page01_dpi96=0, 789, 5, 177, 136 ;cmd, x, y, w, h FloatingWindow=0 ShowSignalComments=1 @@ -808,7 +808,7 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_db3cd8fc-2336-4e7f-b7f3-8be970d9e787 +GUID=DISPLAY_8b2155bc-6fff-4eed-ba14-38cd1125eab4 [WINDOW_5_OBJECT_2] Type=2 @@ -857,7 +857,7 @@ Row=0 Col=0 YAxis_ID=0 AxisTemplate= -GUID=DISPLAY_0a3e6a4f-1038-44b1-93d1-0dc16f23b143 +GUID=DISPLAY_d6909b9c-f64f-4984-9da1-2c74ba583656 [WINDOWS] Count=5 diff --git a/examples/hello_xcp_cpp/CANape/hello_xcp_cpp_autodetect.a2l b/examples/hello_xcp_cpp/CANape/hello_xcp_cpp_autodetect.a2l index 29edc50f..abea6d87 100644 --- a/examples/hello_xcp_cpp/CANape/hello_xcp_cpp_autodetect.a2l +++ b/examples/hello_xcp_cpp/CANape/hello_xcp_cpp_autodetect.a2l @@ -1,7 +1,7 @@ ASAP2_VERSION 1 71 /begin PROJECT hello_xcp_cpp "" -/begin HEADER "" VERSION "1.0" PROJECT_NO VECTOR /end HEADER +/begin HEADER "" VERSION "1.0" PROJECT_NO XCP_LITE_ACSDD /end HEADER /begin MODULE hello_xcp_cpp "" @@ -25,17 +25,17 @@ ALIGNMENT_INT64 1 /begin STRUCTURE_COMPONENT max C_max 0x8 /end STRUCTURE_COMPONENT /end TYPEDEF_STRUCTURE -/* Segment relative addressing mode: calseg=Parameters */ -/begin INSTANCE Parameters "Random number generator parameters" ParametersT 0x80010000 /end INSTANCE +/* Absolute segment addressing mode: calseg=Parameters */ +/begin INSTANCE Parameters "Random number generator parameters" ParametersT 0x1A330 /end INSTANCE -/* Relative addressing mode: event=avg_calc (0), addr_ext=3 */ -/begin MEASUREMENT current_index_ "Current position in ring buffer" A_UINT64 NO_COMPU_METHOD 0 0 0 1e+12 ECU_ADDRESS 0x400 ECU_ADDRESS_EXTENSION 3 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0x0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT -/begin MEASUREMENT sample_count_ "Number of samples collected" A_UINT64 NO_COMPU_METHOD 0 0 0 1e+12 ECU_ADDRESS 0x408 ECU_ADDRESS_EXTENSION 3 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0x0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT -/begin MEASUREMENT sum_ "Running sum of all samples" FLOAT64_IEEE NO_COMPU_METHOD 0 0 -1e+12 1e+12 ECU_ADDRESS 0x410 ECU_ADDRESS_EXTENSION 3 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0x0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/* Relative addressing mode: event=avg_calc (1), addr_ext=3 */ +/begin MEASUREMENT current_index_ "Current position in ring buffer" A_UINT64 NO_COMPU_METHOD 0 0 0 1e+12 ECU_ADDRESS 0x10400 ECU_ADDRESS_EXTENSION 3 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0x1 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT sample_count_ "Number of samples collected" A_UINT64 NO_COMPU_METHOD 0 0 0 1e+12 ECU_ADDRESS 0x10408 ECU_ADDRESS_EXTENSION 3 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0x1 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT sum_ "Running sum of all samples" FLOAT64_IEEE NO_COMPU_METHOD 0 0 -1e+12 1e+12 ECU_ADDRESS 0x10410 ECU_ADDRESS_EXTENSION 3 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0x1 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT -/* Stack frame relative addressing mode: event=avg_calc (0), addr_ext=2 */ -/begin MEASUREMENT input "Input value for floating average" FLOAT64_IEEE NO_COMPU_METHOD 0 0 -1e+12 1e+12 ECU_ADDRESS 0xFFC8 ECU_ADDRESS_EXTENSION 2 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0x0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT -/begin MEASUREMENT average "Current calculated average" FLOAT64_IEEE NO_COMPU_METHOD 0 0 -1e+12 1e+12 ECU_ADDRESS 0xFFC0 ECU_ADDRESS_EXTENSION 2 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0x0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/* Stack frame relative addressing mode: event=avg_calc (1), addr_ext=2 */ +/begin MEASUREMENT input "Input value for floating average" FLOAT64_IEEE NO_COMPU_METHOD 0 0 -1e+12 1e+12 ECU_ADDRESS 0x1FFC8 ECU_ADDRESS_EXTENSION 2 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0x1 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT average "Current calculated average" FLOAT64_IEEE NO_COMPU_METHOD 0 0 -1e+12 1e+12 ECU_ADDRESS 0x1FFC0 ECU_ADDRESS_EXTENSION 2 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0x1 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT /* Typedefs */ /begin RECORD_LAYOUT U8 FNC_VALUES 1 UBYTE ROW_DIR DIRECT /end RECORD_LAYOUT @@ -85,19 +85,19 @@ ALIGNMENT_INT64 1 /* Groups */ /begin GROUP Parameters "Calibration Segment" /begin REF_CHARACTERISTIC Parameters /end REF_CHARACTERISTIC /end GROUP /begin GROUP avg_calc "Measurement event group" /begin REF_MEASUREMENT current_index_ sample_count_ sum_ input average /end REF_MEASUREMENT /end GROUP -/begin GROUP Events "Events" ROOT /begin SUB_GROUP avg_calc /end SUB_GROUP /end GROUP +/begin GROUP Events "Events" ROOT /begin SUB_GROUP async avg_calc /end SUB_GROUP /end GROUP /* Conversions */ /begin COMPU_METHOD conv.bool "" TAB_VERB "%.0" "" COMPU_TAB_REF conv.bool.table /end COMPU_METHOD /begin COMPU_VTAB conv.bool.table "" TAB_VERB 2 0 "false" 1 "true" /end COMPU_VTAB /begin COMPU_METHOD conv.events "" TAB_VERB "%.0 " "" COMPU_TAB_REF conv.events.table /end COMPU_METHOD -/begin COMPU_VTAB conv.events.table "" TAB_VERB 1 - 0 "avg_calc" +/begin COMPU_VTAB conv.events.table "" TAB_VERB 2 + 0 "async" 1 "avg_calc" /end COMPU_VTAB /begin MOD_PAR "" -EPK "_Sep_22_2025_19_01_45" ADDR_EPK 0x80000000 -/begin MEMORY_SEGMENT epk "" DATA FLASH INTERN 0x80000000 21 -1 -1 -1 -1 -1 +EPK "_Oct_11_2025_08_12_57" ADDR_EPK 0xFFFFFF00 +/begin MEMORY_SEGMENT Parameters "" DATA FLASH INTERN 0x0001A330 16 -1 -1 -1 -1 -1 /begin IF_DATA XCP /begin SEGMENT 0 2 0 0 0 /begin CHECKSUM XCP_CRC_16_CITT MAX_BLOCK_SIZE 0xFFFF EXTERNAL_FUNCTION "" /end CHECKSUM @@ -105,14 +105,8 @@ EPK "_Sep_22_2025_19_01_45" ADDR_EPK 0x80000000 /begin PAGE 1 ECU_ACCESS_DONT_CARE XCP_READ_ACCESS_DONT_CARE XCP_WRITE_ACCESS_NOT_ALLOWED /end PAGE /end SEGMENT /end IF_DATA -/end MEMORY_SEGMENT -/begin MEMORY_SEGMENT Parameters "" DATA FLASH INTERN 0x80010000 0x10 -1 -1 -1 -1 -1 -/begin IF_DATA XCP -/begin SEGMENT 1 2 0 0 0 -/begin CHECKSUM XCP_CRC_16_CITT MAX_BLOCK_SIZE 0xFFFF EXTERNAL_FUNCTION "" /end CHECKSUM -/begin PAGE 0 ECU_ACCESS_DONT_CARE XCP_READ_ACCESS_DONT_CARE XCP_WRITE_ACCESS_DONT_CARE /end PAGE -/begin PAGE 1 ECU_ACCESS_DONT_CARE XCP_READ_ACCESS_DONT_CARE XCP_WRITE_ACCESS_NOT_ALLOWED /end PAGE -/end SEGMENT +/begin IF_DATA CANAPE_ADDRESS_UPDATE +/begin MEMORY_SEGMENT "Parameters" FIRST "Parameters" 0 LAST "Parameters" 16 /end MEMORY_SEGMENT /end IF_DATA /end MEMORY_SEGMENT /end MOD_PAR @@ -141,6 +135,7 @@ OPTIONAL_CMD BUILD_CHECKSUM OPTIONAL_CMD USER_CMD OPTIONAL_CMD GET_DAQ_RESOLUTION_INFO OPTIONAL_CMD GET_DAQ_PROCESSOR_INFO +OPTIONAL_CMD GET_DAQ_EVENT_INFO OPTIONAL_CMD FREE_DAQ OPTIONAL_CMD ALLOC_DAQ OPTIONAL_CMD ALLOC_ODT @@ -157,14 +152,13 @@ OPTIONAL_CMD TIME_CORRELATION_PROPERTIES OPTIONAL_LEVEL1_CMD GET_VERSION /end PROTOCOL_LAYER /begin DAQ -DYNAMIC 0 1 0 OPTIMISATION_TYPE_DEFAULT ADDRESS_EXTENSION_FREE IDENTIFICATION_FIELD_TYPE_RELATIVE_BYTE GRANULARITY_ODT_ENTRY_SIZE_DAQ_BYTE 0xF8 OVERLOAD_INDICATION_PID -/begin TIMESTAMP_SUPPORTED -0x1 SIZE_DWORD UNIT_1US TIMESTAMP_FIXED -/end TIMESTAMP_SUPPORTED -/begin EVENT "avg_calc" "avg_calc" 0x0 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT +DYNAMIC 0 2 0 OPTIMISATION_TYPE_DEFAULT ADDRESS_EXTENSION_FREE IDENTIFICATION_FIELD_TYPE_RELATIVE_BYTE GRANULARITY_ODT_ENTRY_SIZE_DAQ_BYTE 0xF8 OVERLOAD_INDICATION_PID PRESCALER_SUPPORTED +/begin TIMESTAMP_SUPPORTED 0x1 SIZE_DWORD UNIT_1NS TIMESTAMP_FIXED /end TIMESTAMP_SUPPORTED +/begin EVENT "async" "async" 0x0 DAQ 0xFF 100 4 0 CONSISTENCY EVENT /end EVENT +/begin EVENT "avg_calc" "avg_calc" 0x1 DAQ 0xFF 0 0 0 CONSISTENCY EVENT /end EVENT /end DAQ /begin XCP_ON_TCP_IP - 0x104 5555 ADDRESS "192.168.8.133" + 0x104 5555 ADDRESS "192.168.0.2" /end XCP_ON_TCP_IP /end IF_DATA diff --git a/examples/hello_xcp_cpp/src/main.cpp b/examples/hello_xcp_cpp/src/main.cpp index 4980a6e0..6a2ea269 100644 --- a/examples/hello_xcp_cpp/src/main.cpp +++ b/examples/hello_xcp_cpp/src/main.cpp @@ -12,12 +12,13 @@ //----------------------------------------------------------------------------------------------------- // XCP parameters -#define OPTION_PROJECT_NAME "hello_xcp_cpp" // A2L project name -#define OPTION_USE_TCP true // TCP or UDP, use TCP -#define OPTION_SERVER_PORT 5555 // Port -#define OPTION_SERVER_ADDR {0, 0, 0, 0} // Bind addr, 0.0.0.0 = ANY -#define OPTION_QUEUE_SIZE (1024 * 64) // Size of the measurement queue in bytes -#define OPTION_LOG_LEVEL 3 // Log level, 0 = no log, 1 = error, 2 = warning, 3 = info, 4 = debug +#define OPTION_PROJECT_NAME "hello_xcp_cpp" // A2L project name +#define OPTION_PROJECT_EPK __DATE__ "_" __TIME__ // EPK version string +#define OPTION_USE_TCP true // TCP or UDP, use TCP +#define OPTION_SERVER_PORT 5555 // Port +#define OPTION_SERVER_ADDR {0, 0, 0, 0} // Bind addr, 0.0.0.0 = ANY +#define OPTION_QUEUE_SIZE (1024 * 64) // Size of the measurement queue in bytes +#define OPTION_LOG_LEVEL 3 // Log level, 0 = no log, 1 = error, 2 = warning, 3 = info, 4 = debug //----------------------------------------------------------------------------------------------------- // Floating average calculation class @@ -99,7 +100,7 @@ struct ParametersT { }; // Default parameter values -constexpr ParametersT kParameters = {.min = -1.0, .max = 1.0}; +const ParametersT kParameters = {.min = -1.0, .max = 1.0}; // A calibration segment wrapper for the parameters std::optional> gCalSeg; @@ -136,7 +137,7 @@ int main() { XcpSetLogLevel(OPTION_LOG_LEVEL); // Initialize the XCP singleton, activate XCP - XcpInit(true); + XcpInit(OPTION_PROJECT_NAME, OPTION_PROJECT_EPK, true); // Initialize the XCP Server uint8_t addr[4] = OPTION_SERVER_ADDR; @@ -146,7 +147,7 @@ int main() { } // Enable A2L generation - if (!A2lInit(OPTION_PROJECT_NAME, NULL, addr, OPTION_SERVER_PORT, OPTION_USE_TCP, A2L_MODE_WRITE_ALWAYS | A2L_MODE_FINALIZE_ON_CONNECT | A2L_MODE_AUTO_GROUPS)) { + if (!A2lInit(addr, OPTION_SERVER_PORT, OPTION_USE_TCP, A2L_MODE_WRITE_ALWAYS | A2L_MODE_FINALIZE_ON_CONNECT | A2L_MODE_AUTO_GROUPS)) { std::cerr << "Failed to initialize A2L generator" << std::endl; return 1; } @@ -155,7 +156,7 @@ int main() { // This calibration segment has a working page (RAM) and a reference page (FLASH), it creates a MEMORY_SEGMENT in the A2L file // It provides safe (thread safe against XCP modifications), lock-free and consistent access to the calibration parameters // It supports XCP/ECU independent page switching, checksum calculation and reinitialization (copy reference page to working page) - gCalSeg.emplace("Parameters", kParameters); + gCalSeg.emplace("Parameters", &kParameters); // Add the calibration segment description as a typedef and an instance to the A2L file A2lTypedefBegin(ParametersT, "A2L Typedef for ParametersT"); diff --git a/examples/multi_thread_demo/src/main.c b/examples/multi_thread_demo/src/main.c index edd24c37..9dcd0fb0 100644 --- a/examples/multi_thread_demo/src/main.c +++ b/examples/multi_thread_demo/src/main.c @@ -44,6 +44,7 @@ typedef pthread_t THREAD; // XCP parameters #define OPTION_PROJECT_NAME "multi_thread_demo" // A2L project name +#define OPTION_PROJECT_EPK "_" __TIME__ // EPK version string #define OPTION_USE_TCP false // TCP or UDP #define OPTION_SERVER_PORT 5555 // Port #define OPTION_SERVER_ADDR {0, 0, 0, 0} // Bind addr, 0.0.0.0 = ANY @@ -108,7 +109,7 @@ static inline const char *XcpGetContextName(void) { return gXcpContext.name; } tXcpEventId previous_span_id = ctx->span_id; \ ctx->span_id = span_id; \ ctx->level++; \ - const uint8_t *span_base[4] = {NULL, ApplXcpGetBaseAddr(), get_stack_frame_pointer(), (const uint8_t *)ctx}; \ + const uint8_t *span_base[4] = {xcp_get_base_addr(), xcp_get_base_addr(), xcp_get_frame_addr(), (const uint8_t *)ctx}; \ XcpEventExt_At(ctx->id, span_base, span_t1); // End span @@ -177,7 +178,7 @@ double clip(double input) { // Simulate some more expensive work sleepUs(50); - params_t *params = (params_t *)XcpLockCalSeg(calseg); + const params_t *params = (params_t *)XcpLockCalSeg(calseg); // Clip the input value to a range defined in the calibration segment double output = input; @@ -216,7 +217,7 @@ double filter(double input) { // Simulate some more expensive work sleepUs(100); - params_t *params = (params_t *)XcpLockCalSeg(calseg); + const params_t *params = (params_t *)XcpLockCalSeg(calseg); // Filter the input signal using a simple low-pass filter filtered_input = input * params->filter + last * (1.0 - params->filter); @@ -257,7 +258,7 @@ void *task(void *p) // Instrumentation: Events and measurement variables // Register task local variables counter and channelx with stack addressing mode - tXcpEventId task_event_id = DaqCreateEventInstance_s("task"); + tXcpEventId task_event_id = DaqCreateEventInstance(task); // Build the task name from the event index uint16_t task_index = XcpGetEventIndex(task_event_id); // Get the event index of this event instance @@ -283,7 +284,7 @@ void *task(void *p) while (run) { { - params_t *params = (params_t *)XcpLockCalSeg(calseg); + const params_t *params = (params_t *)XcpLockCalSeg(calseg); counter++; if (counter > params->counter_max) { @@ -331,7 +332,7 @@ int main(void) { // Initialize the XCP singleton, activate XCP, must be called before starting the server // If XCP is not activated, the server will not start and all XCP instrumentation will be passive with minimal overhead - XcpInit(true); + XcpInit(OPTION_PROJECT_NAME, OPTION_PROJECT_EPK, true); // Initialize the XCP Server uint8_t addr[4] = OPTION_SERVER_ADDR; @@ -340,7 +341,7 @@ int main(void) { } // Enable A2L generation and prepare the A2L file, finalize the A2L file on XCP connect, auto grouping - if (!A2lInit(OPTION_PROJECT_NAME, NULL, addr, OPTION_SERVER_PORT, OPTION_USE_TCP, A2L_MODE_WRITE_ALWAYS | A2L_MODE_FINALIZE_ON_CONNECT | A2L_MODE_AUTO_GROUPS)) { + if (!A2lInit(addr, OPTION_SERVER_PORT, OPTION_USE_TCP, A2L_MODE_WRITE_ALWAYS | A2L_MODE_FINALIZE_ON_CONNECT | A2L_MODE_AUTO_GROUPS)) { return 1; } @@ -348,7 +349,7 @@ int main(void) { // This segment has a working page (RAM) and a reference page (FLASH), it creates a MEMORY_SEGMENT in the A2L file // It provides safe (thread safe against XCP modifications), lock-free and consistent access to the calibration parameters // It supports XCP/ECU independant page switching, checksum calculation and reinitialization (copy reference page to working page) - calseg = XcpCreateCalSeg("Parameters", ¶ms, sizeof(params)); + calseg = XcpCreateCalSeg("params", ¶ms, sizeof(params)); assert(calseg != XCP_UNDEFINED_CALSEG); // Ensure the calibration segment was created successfully // Register calibration parameters in the calibration segment diff --git a/examples/no_a2l_demo/CANape/CANape.ini b/examples/no_a2l_demo/CANape/CANape.ini new file mode 100644 index 00000000..51bb5297 --- /dev/null +++ b/examples/no_a2l_demo/CANape/CANape.ini @@ -0,0 +1,3113 @@ +;------------------------------------------------------------------------------- +; +; DEFAULT.INI +; Template for new CANape/vSignalyzer/vMeasure exp projects +; +;------------------------------------------------------------------------------- + +[!!!!!_CONSISTENCY_CHECK_START_SECTION_!!!!!] +GUID={9DAA6890-BF7E-488B-BDB6-8C27815EE897} + +[FILE_INFO] +Identification=CANape-Project-File +FileVersion=2200 +FileName=CANape.ini +FileNameAbsolute=Y:\XCPlite-RainerZ\examples\no_a2l_demo\CANape\CANape.ini +WorkingDirectory=Y:\XCPlite-RainerZ\examples\no_a2l_demo\CANape +ProjectId=07e9-000a-0002-000b-0018-002f-0000 +PrgVersion=Version 23.0.20.3237 +PrgDate=16.06.2025 +Description= +CreationTime=11:26 +CreationDate=10/02/2025 ; Month/Day/Year +ModificationTime=12:16 +ModificationDate=10/26/2025 ; Month/Day/Year +Protected=0 +CurrentWindowsACP=1252 + +[CANAPE] + +; Activate FlexRay dual channel support, needed for the FIBEX import. +FlexRayDualChannelMode=1 +ImportPrimitiveArraysAsValueBlocks=1 +ImportPduArraysAsCurve=1 +HideTopLevelAutosarStruct=0 +USE_HW_MAPPING_ASSISTANT=0 +ImportSomeIpMultidimensionalArrays=1 +EnableXlNicSupport=0 +TimeMaster=--- +PulseMaster=--- +GLOBAL_MEASUREMENT_FILE=0 +FILTER_FROM_FILE=1 +KEY_SNAP_IN=1 +ASYNCRON_REDRAW=2 +BLOCK_BUFFER_DRAWING=1 +ASYNCRON_REDRAW_USE_THREAD_POOL=1 +ASYNCRON_REDRAW_THREAD_PRIO=-1 +DATA_REDUCTION_WARNING=1 +DATA_REDUCT_ZERO_WARNING=1 +FREE_MEMORY_LIMIT=20 +FREE_MEMORY_LIMIT_RECORDER=15 +FREE_MEMORY_WITHOUT_LIMIT_CHECK_GB=4 +FREE_MEMORY_LIMIT_OFFLINE_CALCULATION=10 +MIN_DISK_SPACE=1024 +MDF_FORMAT=420 +MDF_DATATYPE_MOTOROLA=1 +MDF_TIME_FORMAT=DOUBLE +MDF_UINT32_TIME_BASE=10 +MDF_CREATE_ARRAY_SIGNALS=1 +MDF_CREATE_ELEMENTS_FOR_ARRAYS=1 +MDF_ONE_GROUP_FOR_ARRAYS=1 +MDF_REPLACE_SPACES=1 +MDF_FIND_SIGNAL_WITHOUT_SOURCE=1 +MDF_FIND_SIGNAL_WITH_NETWORK_NODE=0 +MDF_REMOVE_INCA_SOURCE_INFO=1 +MDF_ADD_INCA_SOURCE_INFO_TO_COMMENT=1 +MDF_CREATE_CEBLOCK_FROM_INCA_SOURCE_INFO=1 +MDF_CUT_WRITE_WINDOW_SIGNAL_TO_TRIGGER_RANGE=0 +MDF_TIME_CHANNEL_NAME=t +MDF_TIME_CHANNEL_SOURCE_POSTFIX=0 +MDF_GLOBAL_TIME_OFFSET=1 +MDF_STORE_TRG_OBJECTS_IN_SAME_GRP=1 +FIND_FILE_SIGNAL_FUZZY=1 +MEASUREMENT_LOOP_CLASSIFICATION=0 +MDF_SORTED_WRITE_MAX_TIME_PER_BLOCK=120 +MDF_SORTED_WRITE_BUFFER_SIZE=33554432 +MDF_ASYNC_WRITE_BUFFER_SIZE64=1048576 +MDF_ASYNC_WRITE_BUFFER_COUNT64=32 +MDF_ASYNC_WRITE_BUFFER_COMMIT=0 +BLF_ASYNC_WRITE_BUFFER_SIZE=65536 +BLF_ASYNC_WRITE_BUFFER_COUNT=8 +BLF_ASYNC_WRITE_BUFFER_COMMIT=1 +MDF_SAMPLE_REDUCTION_CREATE=2 +MDF_SAMPLE_REDUCTION_COMPRESS=0 +MF4_SIGNAL_DESCRIPTION_CREATE=2 +MF4_BUS_SORTING_APPLY=1 +MF4_SIGNAL_DESCRIPTION_INFO=1 +MF4_BUS_SORTING_INFO=1 +MF4_LOAD_HORIZONTAL_MEASUREMENT=0 +MF4_LOAD_VERTICAL_MEASUREMENT=0 +MF4_ASK_USER_LOAD_MEASUREMENT=1 +MDF_FILE_TIME_ZONE_OFFSET_HR=0 +MDF_FILE_TIME_ZONE_OFFSET_MIN=0 +MDF_FILE_TIME_ZONE_OFFSET_SIGN=0 +MDF_FILE_TIME_ZONE_OFFSET=14 +MDF_FILE_TIME_ZONE_SETTING=0 +MDF_FILE_TIME_ZONE_OFFSET_SETTING=0 +MDF_FILE_TIME_ZONE_OFFSET_ACTIVE=0 +MDF_SPLIT_READING_LARGE_RECORDS=1024 +GO_THROUGH_ACTIVE_BOOKMARKS_ONLY=1 +DISABLE_MULTI_SAMPLE_PROCESSING=0 +OPTIMIZE_MULTI_SAMPLE_THRESHOLD=10000 +MULTI_SAMPLE_SAVE_ALL=0 +GRAPHIC_QUALITY_MODE=0 +REDUCE_ARRAY_SAMPLE_THRESHOLD_NS=1000000 +REDUCED_ARRAY_SAMPLE_RATE_NS=50000000 +ICON_BUTTON_TRANSPARENCY=150 +MDF_WAIT_FOR_VALID_VALUES_TIMEOUT_MS=10000 +MDF_WRITE_INVAL_BITS=1 +MDF_WRITE_LINKER_MAP_REF=1 +MDF_WRITE_MODEL_LINK_NAME=1 +MDF_REPEAT_SINGLE_EVENT_SIGNAL_VALUES=0 +MDF_LOAD_HIDDEN_VTAB_BEHIND_LIN=1 +MDF_CALCULATE_MIN_MAX=1 +MDF_Update_MIN_MAX=1 +MDF_POLLING_IN_SEPARATE_GROUPS=0 +MDF_POLLING_IN_SEPARATE_GROUPS_MF4=1 +MDF_DATA_BLOCK_CACHING=1 +MDF_DATA_BLOCK_CACHING_ONLY_FOR_SEEK=0 +DATABASE_USE_MACROS_IN_VTABR=1 +IMPORT_CANDB_USE_SIGNAL_LONG_NAME=1 +IMPORT_CANDB_REPLACE_SPACES_IN_NAMES=1 +MDF_USE_LINEAR_CONV_IN_VTABR=1 +IMPORT_CANDB_PREVER_FACTOROFFSET=1 +POSSIBLE_TIME_CHANNEL_NAMES=t,T,Time,time +ADOPT_LIMITS_TO_DATATYPE=1 +TexTableFromShortTable=0 +MakePdusUnique=0 +LegacyAutosarArrayImport=0 +SomeIpEnableBlobMeasurement=0 +SomeIpMeasureAsComponent=0 +ONE_BIT_MAP_ENTRIES_ARE_UNSIGNED=0 +SHOW_MARKER_AT_GLOBAL_POSITION=0 +CREATE_LOST_VARIABLES=1 +ASSIGN_LOST_DEVICES=1 +EXCLUDE_ENVIRONMENT_FROM_PICK=1 +MIN_CALIBRATION_OFFSET=1 +SAVE_ONLY_REF_CAL_OBJECTS=1 +VALUEHISTORY=3 +MAXUNDO=10 +ALWAYS_MEASURE_ENTIRE_ARRAY=0 +USE_OPTIMIZED_SIGNAL_EVENT_DETECTION=1 +XFIT_CHANNEL=1 +XFIT_FILELIST=0 +SHOW_GRAPH_WINDOW_STRINGS=0 +OFFLINE_FILE_SYMBOL_IF_SAVED=0 +TIME_LIMIT_FOR_MDF4_PROPOSAL=15 +FATAL_FUNCTION_ERROR_HANDLING=0 +ASYNCRON_MODIFY_REPEAT_COUNT=5 +ASYNCRON_MODIFY_WAIT_TIME=50 +CONNECT_RETRY_LIMIT=0 +ACTIVITY_STYLE=1 +ACTIVITY_FLATLINE_LENGTH=3 +VALUE_LIMIT_BKCOLOR_LEFT_INTENSITY=70 +VALUE_LIMIT_BKCOLOR_RIGHT_INTENSITY=10 +TOOLTIP_INITIAL_TIME=300 +TOOLTIP_AUTOPOP_TIME=20000 +TOOLTIP_RESHOW_TIME=100 +GRAPH_MARKER_RECT_SIZE=16 +GRAPH_MARKER_RECT_SIZE_dpi96=8 +GRAPH_MARKER_RECT_LINE_SIZE=2 +GRAPH_MARKER_HORIZONTAL_LINE=1 +BASE_DIR=. +SAVE_LAST_MDF_DIRECTORY=1 +SAVE_LAST_CFG_DIRECTORY=1 +SAVE_LAST_SCR_DIRECTORY=1 +SAVE_LAST_REPORT_DIRECTORY=1 +SAVE_LAST_PAR_DIRECTORY=1 +NO_START_FILES=3 +SHOW_GRAPH_X_SCROLLBAR=1 +SHOW_AXIS_SCROLLBAR=1 +SHOW_LEGENDTEXT_COLOR=0 +SHOW_SLIM_LEGEND=0 +SHOW_VALUE_IN_LEGEND_HEADLINE=1 +SHOW_DISABLED_SIGNALS=1 +PROTECT_READONLY_CONFIGS=1 +IGNORE_INVALID_FOR_DISPLAY_FROM_FILE=0 +MAX_VALID_VALUE_SEARCH_STEPS=100 +AUTO_SAVE_CONFIGURATION=0 +SHOW_SYMBOL_EXPLORER=1 +PRINT_TIME_FORMAT=0 +PRINT_DATE_FORMAT=0 +EXPORT_WINDOW_TITLE=1 +SAVE_MDF_SIGNAL_COMMENTS_AUTOMATIC=0 +PUT_SIGNAL_COMMENT_IN_FOREGROUND=1 +POSITION_MARKER_BY_MOUSE_CLICK=1 +XY_MODE_LIMIT_4_POSITION_MARKER=10000 +XY_MODE_CURSOR_DRAG_NEIGHBOR_COUNT=5 +USE_VARIABLE_ZOOM_MODE=1 +VARIABLE_ZOOM_MODE_DELTA_XY=15 +VARIABLE_ZOOM_MODE_DELTA_XorY=40 +GRAPHIC_DISPLAY_NOT_LEFT_OF_MIN_TIME=0 +ZOOM_MARKERS_X=1 +SPACE_BETWEEN_MDI_CHILDS=0 +CHILD_MAGNETIC_SNAP_RANGE=7 +CHILD_MAGNETIC_MODE=2 +DISPLAY_PAGE_TAB_MULTILINE=1 +MEASUREMENT_COMMENT_LENGTH=256 +TRANSPARENCY_GRAPHIC_MIN_MAX_DISPLAY=30 +TRANSPARENCY_OFFSET_PRINT_GRAPHIC_MIN_MAX=-50 +TRANSPARENCY_GRAPHIC_MIN_MAX_ALPHA_CHANNEL=153 +DRAW_CALCULATED_SIGNALS_FULL=1 +GRAPHIC_DISPLAY_TRIGGER_LINES=1 +GRAPHIC_DISPLAY_MARKER_LINES=1 +GRAPHIC_DISPLAY_OTHER_LINES=1 +GRAPHIC_DISPLAY_HIT_LINES=1 +GRAPHIC_HIT_COLOR_STYLE=1 +WINDOW_HEADER_OFF=0 +USER_FONT_FOR_WINDOW_TITLE=0 +WINDOW_HEADER_POSITION=0 +BINFORMAT_REPRESENTATION=0 +TIME_DISPLAY_ROUND_FACTOR_NS=1000 +GLOBAL_ECU_CALIBRATION_OFFSET=1 +DATABASE_CACHE_COUNT=2 +LAYOUT_AXIS_COUNT_AFTER_VALUES=0 +USE_ADDRESS_MAPPING=0 +ADDRESS_OVERLAPPING_WITHOUT_READ_ONLY=0 +SUPPRESS_PARTIAL_DATABASES=0 +ASK_FOR_SAVING_WRITE_PROTECTED_DB=1 +ALLOW_PHYS_ADJUST_WITHOUT_INVERSE_FORMULA=0 +WIN32_EVENT=32 +ADVANCED_REALTIME_X=0 +IGNORE_OVERFLOW=0 +TIME_SYNC2=1 +DRAW_STATE_DISPLAY_CROSS_THRESHOLD=0 +DIRECTX_GRAPHEDIT=0 +SignalWrapper_0="GNNSPositionData", 0x80129029, "LatitudeHigh", "GPS_y" +SignalWrapper_1="GNNSPositionData", 0x80129029, "LongitudeHigh", "GPS_x" +SignalWrapper_2="GNNSPositionData", 0x80129029, "AltitudeHigh", "GPS_z" +SignalWrapper_3="DirectionData", 0x80130577, "CourseOverGround", "GPS_course" +SignalWrapper_4="DirectionData", 0x80130577, "SpeedOverGround", "GPS_speed" +SCRIPT_THREAD_TIMEOUT=200 +DISABLE_AUTOSCRIPTS_IN_ASAP3MODE=1 +CONFIG_LOAD_WARNING_LIMIT=100 +SWAP_DECREASING_COMMON_AXES=0 +DISPLAY_PRECISION=1 +INTERPRETE_PRECISION=0 +REMOVE_TRAILING_ZEROS=1 +DATABASE_DEFAULT_MAX_DIGITS=10 +EXPONENTIAL_SWITCH=1 +SIGNIFICANT_DIGITS_FLOAT=6 +SIGNIFICANT_DIGITS_DOUBLE=6 +DISPLAY_EXPONENTIAL=0 +IGNORE_DATABASE_PRECISION_SAVING=0 +USE_FOCUSED_MODULE=0 +USER_FUNCTION_ARG_STACKSIZE=128 +USER_FUNCTION_EVAL_GLOBAL_INSTANCES=0 +ENABLE_SCRIPT_THREAD=1 +SCRIPT_THREAD_PRIO=-1 +MAXDRAGDROPELEMENTSCOUNT=100 +MAX_COUNT_TOOLTIP_IN_OUT_ARGUMENTS=10 +PROCESS_PRIORITY_CLASS=128 +USE_ARRAY_SIZE_FOR_VALUE_BLOCKS=0 +PDF_EXPORT_DPI=300 +PDF_EXPORT_AUTHOR={USER} +PDF_EXPORT_TITLE= +PDF_EXPORT_SUBJECT= +PDF_EXPORT_KEYWORDS= +PDF_EXPORT_BOOKMARKS=1 +PDF_EXPORT_PROTECT=0 +PRINT_FIT_TO_PAGE_MAX_FACTOR=100 +DELETE_ADDRESS_OFFSETS_CHANGED=0 +DELETE_ADDRESS_OFFSETS_ALL=0 +UPDATE_DIMENSIONS=0 +UPDATE_ONLY_WITH_SYMBOL_LINK=1 +UPDATE_ON_MODIFIED_MAPFILE=0 +CUT_VIRTUAL_SIGNALS_TO_MIN_MAX=0 +GLOBAL_CURSOR_PLAY_RATE=200 +GLOBAL_CURSOR_PLAY_VELOCITY=1 +WORKINGPOINT_HISTORY_MAXIMUM_SIZE=3 +MESCURSOR_TOOLTIP_MAX_WIDTH=40 +MESCURSOR_TOOLTIP_TRANSPARENCY=15 +MESCURSOR_TOOLTIP_STICKTOSNAPRECT=0 +MESCURSOR_TOOLTIP_OFFSETFROMCURSOR=30 +MESCURSOR_TOOLTIP_MAXIMAGESIZE=100 +SHOW_MINOR_AXIS_STEPS=1 +DEFAULT_SCRIPT_EXTENSION=.cns +DOTNET_SCRIPT_EDITOR= +UPDATE_DATATYPE_ALWAYS=0 +UPDATE_LIMITS_ON_DATATYPE_CHANGE=2 +UPDATE_VERBAL_TABLES_FOR_ENUMS=1 +CDD_IMPORT_ARRAYS=0 +COMPU_TAB_USE_DEFAULT_VALUE=2 +COMPU_TAB_USE_TABLE_VALUE=0 +ENABLE_CLICK_DISPLAY_SELECTION=1 +ENABLE_SCROLLING_WITH_MARKER=1 +MARKER_SCROLL_RANGE_PIXELS=25 +MARKER_SCROLL_START_TIMER_MS=100 +MARKER_SCROLL_CYCLE_TIMER_MS=1000 +MARKER_MIN_SCROLL_VELOCITY=0 +MARKER_MAX_SCROLL_VELOCITY=10 +MOUSE_WHEEL_ZOOM_FACTOR=1.25 +MOUSE_WHEEL_ZOOM_FACTOR_FAST=2 +MOUSE_WHEEL_ZOOM_ACCELERATION=1 +MOUSE_WHEEL_ZOOM_ACCEL_THRESHOLD_MS=200 +MAIL_DEFAULT_ORIGINATOR_ADDRESS= +MAIL_DEFAULT_RECIP_TO_ADDRESSES= +MAIL_DEFAULT_RECIP_CC_ADDRESSES= +MAIL_DEFAULT_RECIP_BCC_ADDRESSES= +MAIL_DEFAULT_SUBJECT=Mail created by CANape +MAIL_DEFAULT_NOTE_TEXT= +MAIL_MAX_SEND_PER_HOUR=60 +VIRTUAL_SIGNAL_DSP_NAME_FORMAT=%F%(%P%) +RESTART_MEASUREMENT_CYCLE_TIME_MS=1000 +ILINKRT_LISTENER_PORT=5555 +ILINKRT_ENABLE_LOGGING=0 +ILINKRT_DAQ_PORT_BINDING=0 +MAX_FILENAME_HISTORY_COUNT=7 +RESTART_MEASUREMENT_CREATE_COMMENT=1 +DONT_START_MEASUREMENT_WITH_EVENTS_THAT_NEVER_OCCUR=1 +OPTIMIZE_MEALIST_AT_MEASTART=1 +POLLING_FOR_LIVE_VIEW_ECU=1 +POLLING_LIVE_VIEW_ENABLED=1 +MEASUREMENT_THREAD_COUNT=0 +LOGARITHMIC_AXIS_YMAX_LIMIT=1e+18 +LOGARITHMIC_AXIS_YMIN_LIMIT=1e-06 +DIM_FACTOR_PRINTING_COLORS=0.1 +TAB_CONTROL_DRAG_CURSOR_TIME=500 +MDI_CHILD_DRAG_CURSOR_TIME=500 +AUTOMATIC_ENABLE_DROPPED_SIGNALS=1 +ALLOW_SIGNAL_MODIFICATION=1 +MEA_DATA_FILTER_MAX_VALUE_COUNT=100000 +TRACE_TIMESTAMP_PRECISION=6 +TRACE_FLOAT_PRECISION=6 +TEMPORARY_IMPORT_CONFIG_FUNCTIONS=0 +TEMPORARY_IMPORT_CONFIG_VARIABLES=0 +UTC_OFFSET_ADJUSTMENT=1 +SN_SHORTENING_ACTIVE=0 +SN_SHORTEN_ALWAYS=0 +SN_SHORTEN_IN_BLOCKS=0 +SN_NUMBER_FIX_PARTS_LEFT=1 +SN_NUMBER_FIX_PARTS_RIGHT=1 +SN_PREFERED_SIDE=0 +SN_DISPLAY_LEFT_SIDE=1 +SN_DISPLAY_RIGHT_SIDE=1 +SHOW_DISPLAY_NAME=0 +SHOW_VARIANT_BEFORE_NAME=0 +STRUCTURE_CREATION_NEW_GROUP=1 +STRUCTURE_CREATION_FUNCTION_GROUP=0 +STRUCTURE_CREATION_EXISTING_GROUP=0 +CREATION_FROM_MAPFILE_MEASUREMENT=1 +CREATION_FROM_MAPFILE_PARAMETER=0 +CREATION_FROM_MAPFILE_INDIVIDUAL=0 +CREATION_FROM_MAPFILE_UPDATE_TREE=1 +SN_SEPARATOR_LEFT=. @ +SN_SEPARATOR_RIGHT=. +CACHE_SYNC_SHOW_SIMPLE_DIALOG=0 +CHECK_PROJECT_OPTIMIZATION=1 +SAVE_NEW_MAPFILE_IF_NOT_FOUND=0 +AXIS_TEMP_AUTOSCALE_MIN_INTERVAL_DRAW_UNITS_CNT=1 +AXIS_TEMP_AUTOSCALE_MIN_INTERVAL_DRAW_UNIT=0 +THESAURUS_ACTIVE=1 +THESAURUS_FILE_COUNT=0 +WINDOW_MOVE_FRAME_ALPHA=79 +WINDOW_MOVE_FRAME_WIDTH=5 +ADD_RECORDER_LINK_TO_MEASUREMENT_CONFIG=1 +DELETE_UNUSED_DATABASES=1 +IGNORE_MAP_REFERENCES_FOR_STRUCTURE_TREE=0 +SYMBOL_EXPLORER_SHOW_AOS_INSTANCES=0 +ASAP2_STRICT_IDENTIFIERS=0 +ASAP2_INVALID_IDENTIFIERSATBEGINWITHDIGIT=0 +ASAP2_INVALID_IDENTIFIERS=-|+/: +ASAP2_INVALID_IDENTIFIERSATBEGIN= +ASAP2_IGNORE_AML=0 +ASAP2_ALLOW_NESTED_COMMENTS=0 +PLAUSIBILITY_CHECK_BEFORE_SAVE_DB=0 +ASAP2_OPTIMIZE_RATIONAL_COMPU_METHODE=1 +ASAP2_CHECK_FOR_DUPLICATES=1 +OPTIMIZE_ASAP2_FORMAT=0 +OPTIMIZE_ASAP2_PHYS_UNIT=0 +OPTIMIZE_ASAP2_EXTENDED_LIMITS=0 +OPTIMIZE_ASAP2_ADDRESS_EXTENSION=0 +OPTIMIZE_ASAP2_DEPOSIT=0 +OPTIMIZE_ASAP2_DISPLAY_IDENTIFIER=0 +OPTIMIZE_ASAP2_ALIGNMENT=0 +OPTIMIZE_ASAP2_DISPLAY_SETTINGS=0 +OPTIMIZE_ASAP2_IF_DATA_ADDRESS=0 +OPTIMIZE_ASAP2_BYTE_ORDER=0 +OPTIMIZE_ASAP2_SYMBOL_LINK=0 +HIDE_MAP_WINDOW_CONTENT_IN_ASAP2_STUDIO=0 +ASAP2_DISABLE_MBCS_LEADING_BYTE_CHECK=0 +ASAP2_DEFAULT_ENCODING= +AUTOMATIC_LOADING_TARA_RESULTS=1 +IgnoreDeviceNotSyncedError=0 +SHOW_MIGRATION_DIALOG_PARAMETER_WINDOW=1 +IMAGE_ANONYMIZATION=0 +TID=1 +MAP_MAX_ARRAY=16 +OLD_EXPAND_SYNTAX=0 +ENABLE_POINTER=1 +ENABLE_ENUM=1 +ENABLE_MULTIDIMARRAY=1 +CONVERT_DOUBLETOFLOAT=0 +SIMPLE_ARRAY_VIEW=0 +COMPATIBLE_MODE=0 +REMOVE_UNDERLINE_PREFIX=0 +COFF_ADDRESS_MODE=8 +COFF_FORMAT_MODE=0 +ELF_SCOPE_PREFIX_FOR_STATIC_VARIABLES=0 +ELF_TRY_RESOLVE_FORWARD_DECLARATIONS=0 +ADD_ARRAY_BASE_ADDRESS_FOR_EACH_DIMENSION=0 +ELF_WRITE_VOID_PTR_AS_INT=0 +ELF_DEMANGLE_SYMTAB_NAMES=1 +ELF_SYMTAB_SEARCH_MODE=0 +ELF_ERROR_ON_AMBIGUOUS=0 +ELF_USE_OLD_VERSION=0 +ELF_USE_CPP_EXTENSION_DWARF2=0 +ELF_ARRAY_INDEX_FORM=0 +ELF_DOUBLE_AS_FLOAT=0 +ELF_ENUM_AS_INT=1 +ELF_UNDERLINE_PREFIX=0 +ELF_UNDERLINE_PREFIX_PREFIX=0 +ELF_NO_DOT_AFTER_ARRAYITEM=0 +ELF_WRITE_PTR_AS_INT=0 +COMPUNIT_NAME_AS_PREFIX=0 +COMPUNIT_NAME_AS_PREFIX_ALL=0 +FUNCTION_NAME_AS_PREFIX=0 +INVERTED_BIT_FIELDS=0 +INVERTED_BIT_FIELDS_INTEL=0 +ELF_BITFIELD_BYTESIZE_FROM_BASETYPE=0 +INVERTED_BIT_FIELDS_MIRROR=0 +INCREMENT_BIT_FIELDS_ADDRESS=1 +INCREMENT_BIT_FIELDS_ADDRESS_DISABLED=0 +ELF_FILE_READ_BUFFER_SIZE=0 +ELF_FORCE_SYMBOL_TABLE=0 +ELF_MAP_VERSION_FLAG=0 +ELF_SCOPE_SEPARATOR=._. +ELF_ADD_INHERITED_CLASSNAME_PREFIX=1 +ELF_SKIP_UNEXPECTED_TAGS=1 +ELF_ENABLE_ARRAY_DOT_DOT=0 +ELF_IGNORE_GLOBAL_PADDING=0 +ELF_NO_BASE_ADDRESS_DATATYPE=0 +ELF_NO_ARRAY_BASEADDR_DATATYPE=0 +ELF_ADD_BASE_CLASSNAME_PREFIX=1 +ELF_IGNORE_LEADING_UNDERSCORE=0 +ELF_LOG_FILE=0 +ELF_SKIP_NONVAR_TYPEDEF_DWARF2=1 +ELF_SKIP_NULL_RANGE_ARRAYS=0 +ELF_NO_BASE_ADDRESS=0 +ELF_REPLACE_CLASSNAME_SCOPESEPARATOR=0 +ELF_TRY_RESOLVE_MEMADDR_FROM_SYMBOLTABLE=0 +ELF_NO_EM00014972=0 +ELF_NO_EM00031543=0 +ELF_TRY_READ_CORRUPTED_COMPILE_UNITS=0 +COFF_DWARF_ADDRESS_MODE=16 +ELF_REPLACE_ANGLEBRACKETS=1 +ELF_REPLACE_DOT_CHARACTER=0 +ARRAY_INDEX_INSQUARE=0 +CALC_ARRAY_ITEM_SIZE=1 +ELF_TRY_RESOLVE_VARADDR_FROM_SYMBOLTABLE=0 +ELF_IGNORE_B_MEMBERS_DWARF2=0 +ELF_FORCE_DEBUG_SECTION_VERSION=0 +ELF_CHECK_TYPE_ENDLESS_RECURSION=0 +ELF_FOLLOW_REDIRECTION_REFERENCES=0 +ELF_BOOL_AS_UNSIGNED=0 +ELF_ADDRESS_MODE=0 +GHS_REMOVE_UNDERLINES=0 +GHS_INCLUDE_RODATA=0 +MAP_FIX_TASKING_TYPE_ERROR=1 +MAP_ARRAY_LEADING_ZERO=1 +MAP_IGNORE_LEADING_UNDERSCORE=1 +MAP_IGNORE_INSTRUCTION_ADDRESS=1 +MAP_CASE_SENSITIVE_LINKER=1 +MAP_BIT_SIZE_OF_INTEGER=0 +MAP_BYTE_SIZE_OF_ENUMERATION=-1 +MAP_DIRECT_BIT_BASE_ADDR=64768 +MAP_DIRECT_BIT_BYTE_OFFSET_MASK=65528 +MAP_DIRECT_BIT_BIT_OFFSET_MASK=7 +IGNORE_COMPILER_GLOBAL_VARIABLES=0 +OMF_ARRAY_INDEX_FORM=0 +OMF_LOG_FILE=0 +OMF_MCI_IN_ADDR=1 +PDB_ARRAY_INDEX_FORM=-1 +PDB_UNDERLINE_PREFIX=0 +PDB_REMOVE_LEADING_UNDERSCORE=0 +PDB_MAX_TYPE_IN_DETAIL=10 +PDB_WRITE_PTR_AS_INT=0 +PDB_RESOLVE_BITFIELD_ADDRESS=0 +UBROF_POINTER_AS_VARIABLE=1 +UBROF_WRITE_BUFFER_SIZE=32767 +UBROF_ARRAY_INDEX_FORM=0 +UBROF_NO_DOT_AFTER_ARRAY=0 +UBROF_SKIP_DUPLICATED_ADDRESSES=1 +UBROF_MAKE_LOGFILE=0 +UBROF_INVERTED_BIT_FIELDS=0 +UBROF_INCREMENT_BIT_FIELDS_ADDRESS=1 +UBROF_SCOPE_SEPARATOR=._. + +[WRITEWINDOW] + +; Flag to configure the type of displayed messages. The flag is +; a bit mask, multiple flags can be combined. E.g. a value of 0xFF +; shows all messages. A value of 0x00 (zero) disables the write +; window, it can't be opened then. +; 0x01 Enables Clear message (should be set always) +; 0x02 Show messages from functions +; 0x04 Show warning messages +; 0x08 Show error messages +; 0x10 Show trigger messages (if a trigger is fired) +; 0x20 Show command messages (with a hand symbol) +; 0x1000 Suppress CASL runtime errors (ATTENTION: When true CASL runtime errors are suppressed, so that the errors are displayed with the default flags to not change the behaviour of existing projects.) +; As default all messages are shown +SHOW_MESSAGES=255 +LOG=0 +LOGFILE=WriteWindow_log.TXT +LOG_OVERWRITE=0 +SHOW_FOR_ERRORS=1 +SHOW_FOR_MEA_ERRORS=0 +SHOW_LAST_LINE=1 +BUFFERSIZE=100000 +TIME_PRECISION=3 + +[DEFAULT_PRINT_LAYOUT] +Name=Default +Comment= +HeaderPos=1 +FooterPos=1 +HeaderHeight=25.61 +FooterHeight=8.68 +ShowWindowTitle=1 +PreviewSignals=0 +FitToPageMode=1 +FitPercentage=100 +ShowFrame=1 +HeaderFrame=1 +FooterFrame=1 +HeaderSpace=1.91 +FooterSpace=1.91 +PaperOrientation=2 +PaperSize=0 +PaperLength=210 +PaperWidth=297 +PaperMarginL=9.95 +PaperMarginT=9.95 +PaperMarginR=9.95 +PaperMarginB=9.95 +Unit=0 +DefaultForWindows=0 +ShowPageFrame=1 +ShowWindowFrame=1 +ShowDisabledSignals=1 +ShowDisplayIndex=0 + +[USER_PRINT_LAYOUT] +Count=1 + +[USER_PRINT_LAYOUT_0] +Name=A4 Portrait +Comment= +HeaderPos=1 +FooterPos=1 +HeaderHeight=50.59 +FooterHeight=13.23 +ShowWindowTitle=1 +PreviewSignals=0 +FitToPageMode=1 +FitPercentage=100 +ShowFrame=1 +HeaderFrame=1 +FooterFrame=1 +HeaderSpace=2 +FooterSpace=2 +PaperOrientation=1 +PaperSize=9 +PaperLength=297 +PaperWidth=210 +PaperMarginL=10 +PaperMarginT=10 +PaperMarginR=10 +PaperMarginB=10 +Unit=0 +DefaultForWindows=0 +ShowPageFrame=1 +ShowWindowFrame=1 +ShowDisabledSignals=1 +ShowDisplayIndex=0 +[PROJECT] +UNIQUE_PROJECT_ID=81f3c833-9f32-4a53-a24b-1e02b4692bb2 +PROJECT_ID_DATABASE=07e9-000a-0002-000b-0018-002f-0000 +UserFilterCount=0 +[ADAS] +PreferMeasurementConfigWhenDisplayed=1 +GroupFilesByMeasurement=1 + +[ADDON] +SUB_MENU=0 + +[ASAP2_IMPORT] +MAP_DOUBLE_TO_FLOAT=0 + +[AUDIO_COMMENT_DEVICE] +Device_Name= + +[BoaParams] +URIs_COUNT=0 +CanAssignment_COUNT=0 +FlxAssignment_COUNT=0 + +[BOOKMARKS] +ACTIVE_BOOKMARK_TYPE=0 +ACTIVE_BOOKMARK_GROUP= +ACTIVE_BOOKMARK_ID=-2 +ACTIVE_BOOKMARK_IDENTIFIER_STR= + +[BREAKPOINTS] +COUNT=0 + +[CANAPE_ENVIRONMENT] +OBJECT_COUNT=0 +COMMENT= +DRIVER=12 +PROTECT_DATABASE=0 +DATAFILE_NAME=CANape_Environment.HEX +CALRAMAUTOSEGMENTS=1 +CALRAMREADONLY=1 + +[COLORS] +CUSTOM0=8FF00 +CUSTOM1=8FF +CUSTOM2=FFFF +CUSTOM3=FFFF00 +CUSTOM4=FF00FF +CUSTOM5=80FF +CUSTOM6=FF0000 +CUSTOM7=FFFFFF +CUSTOM8=8FF80 +CUSTOM9=808FF +CUSTOM10=8FFFF +CUSTOM11=FFFF80 +CUSTOM12=FF80FF +CUSTOM13=8080FF +CUSTOM14=FF8080 +CUSTOM15=FFFFFF +ColorDisplay1=FF00 +ColorDisplay2=FF +ColorDisplay3=FFFF +ColorDisplay4=FFFF00 +ColorDisplay5=FF00FF +ColorDisplay6=80FF +ColorDisplay7=FF8080 +ColorDisplay8=FFFFFF +ColorMarker1=FFFF00 +ColorMarker2=FFFF +ColorTrigger=FF00 +ColorEventAudio=A6620D +ColorEventMarker=FF +ColorEventOther=FFFFFF +ColorHitMarker=FF00FF +ColorGrid=8000 +ColorBackground=0 +ColorChanged=FF0000 +ColorWindowBg=F0F0F0 +ColorAxis=FFFFFF +ColorAxisBackground=0 +ColorAxisSameScaled=FFFFFF +ColorAxisText=0 +ColorComments=FFFF00 +ColorCalComments=FFFF00 +ColorLegend=F0F0F0 +ColorLegendText=0 +ColorWindowFrameFocus=606060 +ColorWindowFrameButtons=0 +ColorHexWinCalRam=8000 +ColorHexWinNotCalRam=FF +ColorHexWinDbObject=80FFFF +ColorHexWinInvalid=AFAFFF +ColorHexWinInvalidDb=FF +ColorHexWinSelection=D77800 +ColorHexWinSelText=FFFFFF +ColorWriteText=FFFF00 +ColorValLimitOK=FF00 +ColorValLimitWarn=FFFF +ColorValLimitError=FF +ColorActiveTitleLeft=D1B499 +ColorActiveTitleRight=EAD1B9 +ColorActiveTitleText=0 +ColorInactiveTitleLeft=DBCDBF +ColorInactiveTitleRight70=F2E4D7 +ColorInactiveTitleText=0 +ColorMeaCursorTooltip=808080 +ColorMeaCursorTooltipTxt=FFFFFF +ColorDisplayGray=999999 +ColorDisplaySubGrid=4000 +ColorGraphBackground=D2D2D2 +ColorInvalidSignal=F0F0F0 +ColorLostVariable=C0C0C0 +ColorMoveFrame=FAD5A3 +ColorResizeMarkers=646464 +ColorPageBackground=D8C7BC +ColorDisabledLegendText=6D6D6D +ColorBordersHighlight=FFFFFF +ColorBordersShadow=A0A0A0 +ColorLookupTableX=FF +ColorLookupTableY=8000 +ColorLookupTableZ=FF0000 +ColorLookupTableZ4=FFFF00 +ColorLookupTableZ5=FF00FF +ColorActiveCell=30FFFF +ColorActiveCellText=FF +ColorMissingValues=FFFFFF +ColorBackgroundValues=880088 +ColorWorkingPoint=F0F0F0 +ColorColumnHeader=FFFFFF +ColorBackgroundMetaData=DADEE1 +ColorStatistic=0 +ColorMarker1CurveMode=F56DF3 +ColorMarker2CurveMode=277FFF + +[COMMENT_FIELDS] +ScreenDPIinSection=192 +Count=5 +MaxHistoryEntries=5 + +[CONFIG] +LAST=no_a2l_demo.cna +LAST1=no_a2l_demo.cna + +[CONVERTER] +LAST_MDF=1 +CONVERTER_OVERWRITE_TARGET=0 + +[CUSTOM_AXIS_TEMPLATE_LIST] +COUNT=0 + +[CUSTOM_PLACESBAR] +ENABLED=1 +NO_PB=0 +USE_CSIDL_0=1 +CSIDL_0=129 +DIRECTORY_0= +USE_CSIDL_1=1 +CSIDL_1=128 +DIRECTORY_1= +USE_CSIDL_2=1 +CSIDL_2=5 +DIRECTORY_2= +USE_CSIDL_3=1 +CSIDL_3=17 +DIRECTORY_3= +USE_CSIDL_4=1 +CSIDL_4=18 +DIRECTORY_4= + +[CUSTOM_PLACESBAR_CONFIG] +ENABLED=1 +NO_PB=0 +USE_CSIDL_0=1 +CSIDL_0=129 +DIRECTORY_0= +USE_CSIDL_1=1 +CSIDL_1=128 +DIRECTORY_1= +USE_CSIDL_2=1 +CSIDL_2=5 +DIRECTORY_2= +USE_CSIDL_3=1 +CSIDL_3=17 +DIRECTORY_3= +USE_CSIDL_4=1 +CSIDL_4=18 +DIRECTORY_4= + +[CUSTOM_PLACESBAR_MEASURE] +ENABLED=1 +NO_PB=0 +USE_CSIDL_0=1 +CSIDL_0=129 +DIRECTORY_0= +USE_CSIDL_1=1 +CSIDL_1=128 +DIRECTORY_1= +USE_CSIDL_2=1 +CSIDL_2=5 +DIRECTORY_2= +USE_CSIDL_3=1 +CSIDL_3=17 +DIRECTORY_3= +USE_CSIDL_4=1 +CSIDL_4=18 +DIRECTORY_4= + +[CUSTOM_PLACESBAR_PARAM] +ENABLED=1 +NO_PB=0 +USE_CSIDL_0=1 +CSIDL_0=129 +DIRECTORY_0= +USE_CSIDL_1=1 +CSIDL_1=128 +DIRECTORY_1= +USE_CSIDL_2=1 +CSIDL_2=5 +DIRECTORY_2= +USE_CSIDL_3=1 +CSIDL_3=17 +DIRECTORY_3= +USE_CSIDL_4=1 +CSIDL_4=18 +DIRECTORY_4= + +[CUSTOM_PLACESBAR_REPORT] +ENABLED=1 +NO_PB=0 +USE_CSIDL_0=1 +CSIDL_0=129 +DIRECTORY_0= +USE_CSIDL_1=1 +CSIDL_1=128 +DIRECTORY_1= +USE_CSIDL_2=1 +CSIDL_2=5 +DIRECTORY_2= +USE_CSIDL_3=1 +CSIDL_3=17 +DIRECTORY_3= +USE_CSIDL_4=1 +CSIDL_4=18 +DIRECTORY_4= + +[CUSTOM_PLACESBAR_SCRIPT] +ENABLED=1 +NO_PB=0 +USE_CSIDL_0=1 +CSIDL_0=129 +DIRECTORY_0= +USE_CSIDL_1=1 +CSIDL_1=128 +DIRECTORY_1= +USE_CSIDL_2=1 +CSIDL_2=5 +DIRECTORY_2= +USE_CSIDL_3=1 +CSIDL_3=17 +DIRECTORY_3= +USE_CSIDL_4=1 +CSIDL_4=18 +DIRECTORY_4= + +[CUSTOM_TIME_AXIS_TEMPLATE_LIST] +COUNT=0 + +[DEFAULT_DISPLAY] +SAME_DEFAULT_COLOR=1 +GLOBAL_DEFAULT_COLOR_INDEX=1 +USE_UNIQUE_COLOR=1 + +[DEFAULT_PRINT_LAYOUT_FooterElements] +Count=0 + +[DEFAULT_PRINT_LAYOUT_FOR_WINDOWS] +Name=SingleWindow +Comment= +DefaultForWindows=1 +HeaderPos=1 +FooterPos=0 +HeaderHeight=20 +FooterHeight=0 +ShowWindowTitle=0 +FitToPageMode=1 +FitPercentage=100 +ShowPageFrame=1 +ShowWindowFrame=1 +ShowDisabledSignals=1 +ShowDisplayIndex=0 +HeaderFrame=1 +FooterFrame=1 +HeaderSpace=2 +FooterSpace=2 +PaperOrientation=2 +PaperSize=9 +PaperLength=210 +PaperWidth=297 +PaperMarginL=10 +PaperMarginT=10 +PaperMarginR=10 +PaperMarginB=10 +Unit=0 + +[DEFAULT_PRINT_LAYOUT_FOR_WINDOWS_FooterElements] +Count=0 + +[DEFAULT_PRINT_LAYOUT_FOR_WINDOWS_HeaderElements] +Count=3 + +[DEFAULT_PRINT_LAYOUT_FOR_WINDOWS_HeaderElements_0] +Active=1 +PositionTop=4 +PositionTop_dpi96=2 +PositionLeft=4 +PositionLeft_dpi96=2 +Width=810 +Width_dpi96=405 +Height=74 +Height_dpi96=37 +AutoSize=0 +BorderActive=0 +BorderWidth=1 +BorderColor=0 +BorderLineStyle=1 +BorderCornerStyle=1 +BgColor=#FFFFFF +BgTransparent=0 +GUID=DISPLAY_ELEMENT_587fad08-1d97-4d94-8cfc-e4f8aaf9056c +Type=1 +TextCOUNT=1 +Text1={\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fnil\fcharset0 Arial;}{\f1\fswiss\fcharset0 Arial;}}\viewkind4\uc1\pard\b\fs16 Measurement file 1: \{FILENAME \{DISPLAYED_FILEID\}\}\par Name: \{NAME \{DISPLAYED_FILEID\}\} Division: \{DIVISION \{DISPLAYED_FILEID\}\}\par Project: \{PROJECT \{DISPLAYED_FILEID\}\} Measurement object: \{SUBJECT \{DISPLAYED_FILEID\}\}\par Comment: \{COMMENT \{DISPLAYED_FILEID\}\}\f1\fs20\par +WordWrap=1 +ShowFlag=0 +FlagPosTop=0 +FlagPosTop_dpi96=0 +FlagPosLeft=0 +FlagPosLeft_dpi96=0 +TextMargin=3 +VerticalAlignment=1 + +[DEFAULT_PRINT_LAYOUT_FOR_WINDOWS_HeaderElements_1] +Active=1 +PositionTop=4 +PositionTop_dpi96=2 +PositionLeft=890 +PositionLeft_dpi96=445 +Width=152 +Width_dpi96=76 +Height=74 +Height_dpi96=37 +AutoSize=0 +BorderActive=0 +BorderWidth=1 +BorderColor=0 +BorderLineStyle=1 +BorderCornerStyle=1 +BgColor=#FFFFFF +BgTransparent=0 +GUID=DISPLAY_ELEMENT_bf2dbfcf-7287-432c-af6e-4bedf99d827c +Type=1 +TextCOUNT=1 +Text1={\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fnil\fcharset0 Arial;}{\f1\fswiss\fcharset0 Arial;}}\viewkind4\uc1\pard\qr\b\fs16 \{DATE\} \{TIME\}\par\f1\fs20\par\par\f0\fs16 Page \{PAGE\} \f1\fs20\par} +WordWrap=1 +ShowFlag=0 +FlagPosTop=0 +FlagPosTop_dpi96=0 +FlagPosLeft=0 +FlagPosLeft_dpi96=0 +TextMargin=3 +VerticalAlignment=1 + +[DEFAULT_PRINT_LAYOUT_FOR_WINDOWS_HeaderElements_2] +Type=3 +ArrowLineWidth=1 +ArrowLineColor=0 +ArrowLineStyle=1 +ArrowHeadStart=0 +ArrowHeadEnd=0 +StartPointX=888 +StartPointX_dpi96=444 +StartPointY=0 +StartPointY_dpi96=0 +EndPointX=888 +EndPointX_dpi96=444 +EndPointY=74 +EndPointY_dpi96=37 +Active=1 +PositionTop=0 +PositionTop_dpi96=0 +PositionLeft=888 +PositionLeft_dpi96=444 +Width=0 +Width_dpi96=0 +Height=74 +Height_dpi96=37 +AutoSize=0 +BorderActive=0 +BorderWidth=1 +BorderColor=16777215 +BorderLineStyle=1 +BorderCornerStyle=1 +BgColor=#FFFFFF +BgTransparent=1 +GUID=DISPLAY_ELEMENT_5ae003ee-7b08-4367-86f6-8a4195f3ef8f + +[DEFAULT_PRINT_LAYOUT_HeaderElements] +Count=0 + +[DEFAULT_TIME_AXIS_TEMPLATE] +NAME= +UNITS= +SIGNAL_NAMES= +COMMENT= +SCALING_MODE=0 +GRID_MODE=1 +AUTO_ASSIGN=0 +MIN=0 +MAX=100 +DIVISION=10 +DIVISION2=5 +FIXSCALE_DRAW_UNITS_CNT=1 +FIXSCALE_DRAW_UNIT=0 +AXIS_LINE_COLORING_MODE=9 +AXIS_LINE_COLOR_FUNCTION= +AXIS_LINE_FIXED_COLOR=0 +AXIS_LINE2_COLORING_MODE=10 +AXIS_LINE2_COLOR_FUNCTION= +AXIS_LINE2_FIXED_COLOR=0 +AXIS_TEXT_COLORING_MODE=11 +AXIS_TEXT_COLOR_FUNCTION= +AXIS_TEXT_FIXED_COLOR=0 +DISPLAY_BKG_COLORING_MODE=0 +DISPLAY_BKG_COLOR_FUNCTION= +DISPLAY_BKG_FIXED_COLOR=0 +GRID_LINE_COLORING_MODE=15 +GRID_LINE_COLOR_FUNCTION= +GRID_LINE_FIXED_COLOR=0 +GRID_LINE2_COLORING_MODE=24 +GRID_LINE2_COLOR_FUNCTION= +GRID_LINE2_FIXED_COLOR=0 +AXIS_TEXT_FONT_MODE=0 +AXIS_LINE_STYLE=0 +AXIS_LINE_WIDTH=2 +AXIS_LINE2_STYLE=0 +AXIS_LINE2_WIDTH=1 +GRID_LINE_STYLE=2 +GRID_LINE_WIDTH=1 +GRID_LINE2_STYLE=2 +GRID_LINE2_WIDTH=1 +DIMENSION_LINE_COUNT=0 + +[DEFAULT_Y_AXIS_TEMPLATE] +NAME= +UNITS= +SIGNAL_NAMES= +COMMENT= +SCALING_MODE=0 +GRID_MODE=2 +AUTO_ASSIGN=0 +MIN=0 +MAX=100 +DIVISION=10 +DIVISION2=5 +FIXSCALE_DRAW_UNITS_CNT=1 +FIXSCALE_DRAW_UNIT=0 +AXIS_LINE_COLORING_MODE=13 +AXIS_LINE_COLOR_FUNCTION= +AXIS_LINE_FIXED_COLOR=0 +AXIS_LINE2_COLORING_MODE=13 +AXIS_LINE2_COLOR_FUNCTION= +AXIS_LINE2_FIXED_COLOR=0 +AXIS_TEXT_COLORING_MODE=13 +AXIS_TEXT_COLOR_FUNCTION= +AXIS_TEXT_FIXED_COLOR=0 +DISPLAY_BKG_COLORING_MODE=0 +DISPLAY_BKG_COLOR_FUNCTION= +DISPLAY_BKG_FIXED_COLOR=0 +GRID_LINE_COLORING_MODE=15 +GRID_LINE_COLOR_FUNCTION= +GRID_LINE_FIXED_COLOR=0 +GRID_LINE2_COLORING_MODE=24 +GRID_LINE2_COLOR_FUNCTION= +GRID_LINE2_FIXED_COLOR=0 +AXIS_TEXT_FONT_MODE=0 +AXIS_LINE_STYLE=0 +AXIS_LINE_WIDTH=2 +AXIS_LINE2_STYLE=0 +AXIS_LINE2_WIDTH=1 +GRID_LINE_STYLE=2 +GRID_LINE_WIDTH=1 +GRID_LINE2_STYLE=2 +GRID_LINE2_WIDTH=1 +DIMENSION_LINE_COUNT=0 + +[DEVICE_EXPLORER] +ScreenDPIinSection=192 +POSX=320 +POSX_dpi96=160 +POSY=140 +POSY_dpi96=70 +SIZEX=2410 +SIZEX_dpi96=1205 +SIZEY=1460 +SIZEY_dpi96=730 +SHOWTOOLBAR=1 +SHOWSTATUSBAR=1 +SHOWGRID=0 +RIGHTPANE2HEIGHT=-2 +RIGHTPANE2HEIGHT_dpi96=-1 +TREEX=450 +TREEX_dpi96=225 +TREEY=1269 +TREEY_dpi96=635 +ACTIVEPANE=0 +SELECTED_TREENODE=Devices/no_a2l_demo_Device/Memory Segments +FIRSTVISIBLE_TREENODE=Devices +TREEEXPAND_COUNT=7 +TREEEXPAND_0=Devices +TREEEXPAND_1=Devices/no_a2l_demo_Device +TREEEXPAND_2=Devices/no_a2l_demo_Device/Protocol +LAST_FOCUSED_LISTCOLUMN=0 +LAST_FOCUSED_LISTINDEX=0 +LAST_TOP_LISTINDEX=0 +TREEEXPAND_3=Networks +TREEEXPAND_4=Networks/ETH_Network_Network +TREEEXPAND_5=Networks/ETH_Network_Network/no_a2l_demo_Device +TREEEXPAND_6=Networks/ETH_Network_Network/no_a2l_demo_Device/Protocol + +[DEVICE_WIZARD] +ScreenDPIinSection=192 +Left=1007 +Left_dpi96=504 +Top=2563 +Top_dpi96=1282 +Width=1556 +Width_dpi96=778 +Height=1138 +Height_dpi96=569 + +[DISTRIBUTED_HIGH_PERFORMANCE_RECORDING] +ConfigurationJson={"RemoteServiceDataList":[{"DisplayName":"CANape Master","Ip":"127.0.0.1","ComputerName":"CANape Master","Platform":"Windows_x86_64","DeviceDataList":[]}],"UiModel":{"Column1Width":170,"Column2Width":170,"Column3Width":170}} + +[DlgSaveConfigs] +ScreenDPIinSection=192 +ColWidthName=700 +ColWidthDisplay=462 +WindowLeft=1208 +WindowLeft_dpi96=604 +WindowTop=739 +WindowTop_dpi96=370 +WindowWidth=1241 +WindowWidth_dpi96=621 +WindowHeight=637 +WindowHeight_dpi96=319 + +[EthRouter::FlexRay1] +IP_ADDRESS=127.0.0.0 +TCP_PORT=10510 +BusId=0 +Version=0 +EthProtocol=undefined + +[EVENT_COLOR_TABLE] +IS_ENABLED=1 +IS_ENABLED_0=1 +CUSTOM_TEXT_COLOR_0=0 +SYSTEM_TEXT_COLOR_0=8 +CUSTOM_BACK_COLOR_0=16777215 +SYSTEM_BACK_COLOR_0=5 +IS_ENABLED_1=1 +CUSTOM_TEXT_COLOR_1=0 +SYSTEM_TEXT_COLOR_1=8 +CUSTOM_BACK_COLOR_1=16777215 +SYSTEM_BACK_COLOR_1=5 +IS_ENABLED_2=1 +CUSTOM_TEXT_COLOR_2=192 +SYSTEM_TEXT_COLOR_2=4294967295 +CUSTOM_BACK_COLOR_2=16777215 +SYSTEM_BACK_COLOR_2=5 +IS_ENABLED_3=1 +CUSTOM_TEXT_COLOR_3=0 +SYSTEM_TEXT_COLOR_3=8 +CUSTOM_BACK_COLOR_3=16777215 +SYSTEM_BACK_COLOR_3=5 +IS_ENABLED_4=1 +CUSTOM_TEXT_COLOR_4=0 +SYSTEM_TEXT_COLOR_4=8 +CUSTOM_BACK_COLOR_4=16777215 +SYSTEM_BACK_COLOR_4=5 +IS_ENABLED_5=1 +CUSTOM_TEXT_COLOR_5=0 +SYSTEM_TEXT_COLOR_5=8 +CUSTOM_BACK_COLOR_5=16777215 +SYSTEM_BACK_COLOR_5=5 +IS_ENABLED_6=1 +CUSTOM_TEXT_COLOR_6=0 +SYSTEM_TEXT_COLOR_6=8 +CUSTOM_BACK_COLOR_6=16777215 +SYSTEM_BACK_COLOR_6=5 +IS_ENABLED_7=1 +CUSTOM_TEXT_COLOR_7=0 +SYSTEM_TEXT_COLOR_7=8 +CUSTOM_BACK_COLOR_7=16777215 +SYSTEM_BACK_COLOR_7=5 +IS_ENABLED_8=1 +CUSTOM_TEXT_COLOR_8=0 +SYSTEM_TEXT_COLOR_8=8 +CUSTOM_BACK_COLOR_8=16777215 +SYSTEM_BACK_COLOR_8=5 +IS_ENABLED_9=1 +CUSTOM_TEXT_COLOR_9=0 +SYSTEM_TEXT_COLOR_9=8 +CUSTOM_BACK_COLOR_9=16777215 +SYSTEM_BACK_COLOR_9=5 +IS_ENABLED_10=1 +CUSTOM_TEXT_COLOR_10=0 +SYSTEM_TEXT_COLOR_10=8 +CUSTOM_BACK_COLOR_10=16777215 +SYSTEM_BACK_COLOR_10=5 +IS_ENABLED_11=1 +CUSTOM_TEXT_COLOR_11=0 +SYSTEM_TEXT_COLOR_11=8 +CUSTOM_BACK_COLOR_11=16777215 +SYSTEM_BACK_COLOR_11=5 +IS_ENABLED_12=1 +CUSTOM_TEXT_COLOR_12=0 +SYSTEM_TEXT_COLOR_12=8 +CUSTOM_BACK_COLOR_12=16777215 +SYSTEM_BACK_COLOR_12=5 +IS_ENABLED_13=1 +CUSTOM_TEXT_COLOR_13=192 +SYSTEM_TEXT_COLOR_13=4294967295 +CUSTOM_BACK_COLOR_13=16777215 +SYSTEM_BACK_COLOR_13=5 +IS_ENABLED_14=1 +CUSTOM_TEXT_COLOR_14=192 +SYSTEM_TEXT_COLOR_14=4294967295 +CUSTOM_BACK_COLOR_14=16777215 +SYSTEM_BACK_COLOR_14=5 +IS_ENABLED_15=1 +CUSTOM_TEXT_COLOR_15=0 +SYSTEM_TEXT_COLOR_15=8 +CUSTOM_BACK_COLOR_15=16777215 +SYSTEM_BACK_COLOR_15=5 +IS_ENABLED_16=1 +CUSTOM_TEXT_COLOR_16=0 +SYSTEM_TEXT_COLOR_16=8 +CUSTOM_BACK_COLOR_16=16777215 +SYSTEM_BACK_COLOR_16=5 +NODE_IS_ENABLED_0=1 +NODE_IS_ENABLED_1=1 +NODE_IS_ENABLED_2=1 +NODE_IS_ENABLED_3=1 +NODE_IS_ENABLED_4=1 + +[EVENT_COMPARE] +DARKEN=45 +TOOLTIP_VALUE_COUNT=4 +TOOLTIP_VALUE_COMPARE=1 + +[FONT] +HEIGHT=-24 + +[FUNCTION_DLL_ADDON] +COUNT=0 + +[FUNCTIONS] +COUNT=0 + +[MDF_FILE_COLLECTIONS] +COUNT=0 + +[MDF_FILES] +COUNT=0 + +[MEASUREMENTS] +COUNT=1 + +[Module_no_a2l_demo] +FLAGS=1 +ACTIVE_STATE=0 +CALIBRATION_MODE_DIRECT=1 +RESTART_MEASUREMENT_ON_ERROR=0 +MEASUREMENT_MODE_PRIORITY=0 +COMMENT= +PARAMETER_DIR= +DATABASE_DIR= +DRIVER=13 +DETECT_DATABASE=0 +USE_DATABASENAME_FROM_ECU=0 +DATABASE_NAME=no_a2l_demo.a2l +LOAD_LAST_DATABASE=1 +PROTECT_DATABASE=0 +DATAFILE_DIR= +DATAFILE_NAME=no_a2l_demo.HEX +CALRAM_NAME_DB=0 +AUTOSAVE_DATAFILE=0 +CALRAMAUTOSEGMENTS=0 +MAP_READ_IF_NEWER=0 +MAPFILE_DIR= +MAP_USAGE=0 +MAP_COUNTER=1 +MAP_COUNT=0 +CONFIG_TOOL= +CONFIG_OPTIONS= +SAVE_ORIGINAL_IF_DATA=0 +SPECIFIC_FILTER_TYPE=0 +SPECIFIC_FILTER_COUNT=0 +SPECIFIC_FILTER_USE_IN_CDM=1 +SPECIFIC_FILTER_USE4ALL_COLUMNS_INCDM=0 +ECDM_DEVICE=0 +DRIVER_MODE=13 +XCP_FREEZE_SUPPORTED=1 +DATABASE_NETWORK= +ONLINE_CALIBRATION_ACTIVE=1 +AUTO_CREATE_MEASUREMENT_OBJECTS=0 +THESAURUS_FILE_COUNT=0 +THESAURUS_ACTIVE=0 +UserFilterCount=0 +ModuleExtensionDll= +ModuleExtensionCompany= +ReadOnlyDatabase=1 +IdentifyBySignalNameOnly=0 +NETWORK=3 +NETCHANNEL=[ETH::WSK:] +MAPPED_CHANNEL_INFO= +NETDEVICE=EthAdapter +SUPPRESS_EVENT_DETECTION=0 +FORCE_SW_SYNC_IF_NECESSARY=0 +CONNECT_MODE=0x00 +CONNECT_MODE_FOR_FLASH=0xFFFFFFFF +XCP_MAXCTO=248 +XCP_MAXDTO=1024 +XCP_COMM_MODE_BASIC=0x80 +XCP_MAX_DLC_REQUIRED=0 +XCP_MAX_DLC=8 +XCP_USE_TOOL_SETTINGS=0 +XCP_COMM_MODE_OPTIONAL=0x00 +XCP_QUEUE_SIZE=0 +XCP_MAX_BS=0 +XCP_MIN_TS=0 +XCP_MAX_BS_PGM=0 +XCP_MIN_ST_PGM=0 +XCP_MAXCTO_PGM=8 +XCP_COMM_MODE_PGM=0x00 +XCP_OPTIONAL_CMD_AVAILABLE_0=2 +XCP_OPTIONAL_CMD_AVAILABLE_1=2 +XCP_OPTIONAL_CMD_AVAILABLE_2=2 +XCP_OPTIONAL_CMD_AVAILABLE_3=2 +XCP_OPTIONAL_CMD_AVAILABLE_4=2 +XCP_OPTIONAL_CMD_AVAILABLE_5=2 +XCP_OPTIONAL_CMD_AVAILABLE_6=3 +XCP_OPTIONAL_CMD_AVAILABLE_7=3 +XCP_OPTIONAL_CMD_AVAILABLE_8=2 +XCP_OPTIONAL_CMD_AVAILABLE_9=2 +XCP_OPTIONAL_CMD_AVAILABLE_10=2 +XCP_OPTIONAL_CMD_AVAILABLE_11=2 +XCP_OPTIONAL_CMD_AVAILABLE_12=2 +XCP_OPTIONAL_CMD_AVAILABLE_13=2 +XCP_OPTIONAL_CMD_AVAILABLE_14=2 +XCP_OPTIONAL_CMD_AVAILABLE_15=2 +XCP_OPTIONAL_CMD_AVAILABLE_16=2 +XCP_OPTIONAL_CMD_AVAILABLE_17=2 +XCP_OPTIONAL_CMD_AVAILABLE_18=2 +XCP_OPTIONAL_CMD_AVAILABLE_19=3 +XCP_OPTIONAL_CMD_AVAILABLE_20=3 +XCP_OPTIONAL_CMD_AVAILABLE_21=3 +XCP_OPTIONAL_CMD_AVAILABLE_22=3 +XCP_OPTIONAL_CMD_AVAILABLE_23=3 +XCP_OPTIONAL_CMD_AVAILABLE_24=2 +XCP_OPTIONAL_CMD_AVAILABLE_25=3 +XCP_OPTIONAL_CMD_AVAILABLE_26=3 +XCP_OPTIONAL_CMD_AVAILABLE_27=2 +XCP_OPTIONAL_CMD_AVAILABLE_28=3 +XCP_OPTIONAL_CMD_AVAILABLE_29=3 +XCP_OPTIONAL_CMD_AVAILABLE_30=3 +XCP_OPTIONAL_CMD_AVAILABLE_31=3 +XCP_OPTIONAL_CMD_AVAILABLE_32=3 +XCP_OPTIONAL_CMD_AVAILABLE_33=3 +XCP_OPTIONAL_CMD_AVAILABLE_34=3 +XCP_OPTIONAL_CMD_AVAILABLE_35=3 +XCP_OPTIONAL_CMD_AVAILABLE_36=3 +XCP_OPTIONAL_CMD_AVAILABLE_37=2 +XCP_OPTIONAL_CMD_AVAILABLE_38=2 +XCP_OPTIONAL_CMD_AVAILABLE_39=2 +XCP_OPTIONAL_CMD_AVAILABLE_40=2 +XCP_OPTIONAL_CMD_AVAILABLE_41=2 +XCP_OPTIONAL_CMD_AVAILABLE_42=3 +XCP_OPTIONAL_CMD_AVAILABLE_43=3 +XCP_OPTIONAL_CMD_AVAILABLE_44=2 +XCP_OPTIONAL_CMD_AVAILABLE_45=3 +XCP_OPTIONAL_CMD_AVAILABLE_46=2 +XCP_OPTIONAL_CMD_AVAILABLE_47=2 +XCP_OPTIONAL_CMD_AVAILABLE_48=3 +XCP_OPTIONAL_CMD_AVAILABLE_49=3 +XCP_OPTIONAL_CMD_AVAILABLE_50=2 +XCP_OPTIONAL_CMD_AVAILABLE_51=3 +XCP_OPTIONAL_CMD_AVAILABLE_52=3 +XCP_OPTIONAL_CMD_AVAILABLE_53=3 +XCP_OPTIONAL_CMD_AVAILABLE_54=3 +XCP_OPTIONAL_CMD_AVAILABLE_55=2 +XCP_OPTIONAL_CMD_AVAILABLE_56=2 +XCP_OPTIONAL_CMD_AVAILABLE_57=3 +XCP_OPTIONAL_CMD_AVAILABLE_58=3 +XCP_OPTIONAL_CMD_AVAILABLE_59=3 +XCP_OPTIONAL_CMD_AVAILABLE_60=2 +XCP_OPTIONAL_CMD_AVAILABLE_61=2 +XCP_OPTIONAL_CMD_AVAILABLE_62=2 +XCP_OPTIONAL_CMD_AVAILABLE_63=2 +XCP_OPTIONAL_CMD_AUTO_LEARNING=1 +XCP_OPTIONAL_SUB_CMD_AVAILABLE_0=3 +XCP_OPTIONAL_SUB_CMD_AVAILABLE_1=2 +XCP_OPTIONAL_SUB_CMD_AVAILABLE_2=2 +XCP_DAQ_PROPERTIES=0x13 +XCP_DAQ_KEY_BYTE=0xC0 +XCP_DAQ_TIMESTAMP_MODE=0x0C +XCP_DAQ_TIMESTAMP_TICKS=1 +XCP_MIN_DAQ=0 +XCP_MAX_DAQ=0 +XCP_MAX_DAQ_ODTENTRY_SIZE=248 +XCP_MAX_STI_ODTENTRY_SIZE=248 +XCP_DAQ_GRANULARITY=1 +XCP_STI_GRANULARITY=1 +DAQ_USERDEF_WRITE_MULTIPLE_SUPPORTED=0 +LOGGER_CONFIG_RAW_MODE=0 +XCP_PRIMARY_DRIVER= +USE_ASAP_TIMEOUTS=0 +PROGRAM_START_TIMEOUT=0 +PROGRAM_CLEAR_TIMEOUT=0 +PROGRAM_TIMEOUT=0 +USER_DEF_CONNECT_TIMEOUT=0 +RETRY_DELAY=0 +XCP_USE_COMPLEM_CHANNEL=1 +XCP_LOGICAL_CHANNEL=0 +XCP_SLAVE_ID=0 +DISABLE_FASTPOLLING=0 +XCP_DAQ_SKIP_PREPARE_SELECTED=0 +TEST=0 +IGNORE_DTO_EM=0 +CCP_VERSION=304 +INCA=0 +CRO_ID=0x00000667 +DTO_ID=0x000007E1 +SLAVE_ADDR=0x0039 +FLOAT_FORMAT=0 +MOTOROLA=0 +SEED_KEY=0 +SEED_KEY_NAME_PGM= +SEED_KEY_NAME_DAQ= +SEED_KEY_NAME_CAL= +ENABLE_PERMANENT_SEED_KEY_CHECK=0 +SET_SESSION_STATUS=0 +CHECKSUM_TIMEOUT=2000 +GET_CAL_PAGE=0 +INIT_CAL_PAGE_ALWAYS=0 +DOS_ID=0 +TIMEOUT=1000 +INIT_TIMEOUT=2000 +INIT_RETRY_DELAY=0 +INIT_RETRIES=0 +MAX_RETRIES=3 +TIMEOUT_RETRY=0 +BUSY_RETRY=1 +BUSY_TIMEOUT=15000 +RETRY_CTR=0 +IGNORE_CTR_FAULTS=0 +CHECK_OVERFLOW=0 +LOAD_GRANULARITY=212 +LOAD_CHECKSUM=1 +READBACK_DISABLED=0 +IFDATA_QUERY=0 +DEC_ADDR_EXT=0 +POLLING_DISABLED=0 +SHORT_UPLOAD_DISABLED=0 +DNLOAD_MAX_DISABLED=0 +PROGRAM_MAX_DISABLED=0 +TEST_DISABLED=0 +OPTIMIZED_MAPS_DISABLED=0 +DOWNLOAD_MAPS_DISABLED=0 +DAQ_CONSTRUCTION_LEGACY_MODE=0 +CCP101_RESTART_DAQ=0 +BEG_CAL_SERVICE=0x1f1 +END_CAL_SERVICE=0x2f1 +TEST_CONNECTION_PERIOD=0 +OVERRUN_HANDLING=0 +EVENT_COUNT=4 +IGNORE_FIX_EVENTS=0 +ECU_CYCLE_TIME=0 +DEFAULT_EVENT_CHANNEL=-1 +ECU_TIMESTAMP=1 +DAQ_TIMESYNC_NEW=1 +DETECT_SYNC_PULSE=0 +GENERATE_SYNC_PULSE=0 +TIME_CORR_MULTICAST=0 +DAQ_TIMEOUT=0 +DAQ_RESUME_SUPPORTED=0 +DAQ_PRESCALER_SUPPORTED=1 +DAQ_SINGLE_EVENT=0 +DTO_SINGLE_EXT=0 +DOUBLE_AS_FLOAT=0 +ODT_ENTRY_ADDRESS_OPT_DISABLED=0 +FLOAT32_AS_FLOAT16=0 +DAQ_SIGNAL_SORT_MODE=0 +DTO_BYTE_MODE=1 +CONSISTENCY_MODE=2 +SUPPRESS_CONSISTENCY_CHECK=0 +CANDB_CCP_CONF=0 +PSEUDO_CAN_ID_START=2415919104 +DSP_MODE=0 +DAQ_LIST_AUTODETECT=1 +DAQ_COUNT=0 +DAQ_CONFIG_ID=6234 +DAQ_START_STOP_ALL_DISABLED=0 +INIT_CAL_PAGE_SEGMENTWISE=0 +CALRAM_CHECK_INITIAL_PAGE=1 +CALRAM_INITIAL_PAGE=0 +CALRAM_FORCE_INITIAL_PAGE_SWITCH=0 +DIAG_SERVICE=0 +CMD_CLEAR_MEMORY=0 +CMD_PROGRAM=0 +CMD_ACTION_SERVICE=0 +CMD_MOVE_MEMORY=0 +CMD_SELECT_CAL_PAGE=0 +BCP_EXTENSION_ENABLED=0 +RESOURCE_PROTECTION_STATUS=0 +UPDATE_A2L_OBJECTS_FROM_ECU=0 +SHORT_DOWNLOAD_DISABLED=1 +MODIFY_BITS_DISABLED=1 +BLOCK_MEASUREMENT=1 +GLOBAL_DOWNLOAD_WITH_BEGIN_END=0 +LOCAL_DOWNLOAD_WITH_BEGIN_END=0 +LOCAL_UPLOAD_WITH_BEGIN_END=0 +AUTODETECT_DATABASE_DLL_NAME= +FORCE_DEFAULT_EVENT=0 +TIMESTAMP_TICK_MODE=1 +DAQ_COUNTER_HANDLING=1 +DAQ_SUPPRESS_STIM_TIMESTAMPS=0 +DAQ_CALCULATE_FIRST_PIDS_WHEN_OFFLINE=1 +BLOCK_DOWNLOAD_MODE=0 +STOP_DAQ_ON_CONNECT=1 +CALRAM_WRITE_OPT=1 +CALRAM_OFFLINE=1 +CALRAM_FLASH_OFFSET=0x00000000 +CALRAM_CACHE=1 +CALRAM_DEF_ACTION_READONLY=0 +CALRAM_DEF_ACTION_TEMPREADONLY=0 +CALRAM_DEF_ACTION_WRITABLE=0 +CALRAM_EXECUTE_DEF_ACTION=0 +CALRAM_DO_BACKUP_ON_UPLOAD=0 +CALRAM_USE_ALT_FILE_ON_DOWNLOAD=0 +CALRAM_IMPORT_CODE_SEGMENTS=0 +CALRAM_ALT_FILE= +CALRAM_BACKUP_FILE= +CALRAM_MERGE_TO_HEXFILE=0 +CHECK_EPROM_IDENTIFIER=0 +CHECK_CODE_CHECKSUM=0 +FLASH_SKIP_FF=0 +FLASH_DEFAULT_CONTENT=255 +FLASH_OPTIMIZATION=0 +FLASH_CLEAR_TIMEOUT=10000 +FLASH_START_TIMEOUT=10000 +FLASH_RECONNECT=0 +FLASH_RECONNECT_DELAY=2000 +FLASH_SIGN_ADDR=0x00000000 +FLASH_SIGN_SIZE=0 +FLASH_SIGN_ENABLED=0 +FLASH_VFLASH_PROJECT_DIR= +FLASH_VFLASH_PROJECT_FILE= +FLASH_VFLASH_SAVEABLE_IDENTIFIER= +FLASH_VFLASH_DEACTIVATE_NETWORK=1 +FLASH_KERNEL_FILE_NAME=Direct +FLASH_KERNEL_VERSION=(unknown) +FLASH_KERNEL_TYPE=0 +FLASH_KERNEL_FILE_ADDR=0 +FLASH_KERNEL_SIZE=0 +FLASH_KERNEL_RAM_ADDR=0 +FLASH_KERNEL_RAM_START=0 +FLASH_KERNEL_USE_SECTORS=1 +FLASH_PROGRAM_VERIFY=0 +FLASH_PROGRAM_VERIFY_EXTERNAL=1 +PROGRAM_VERIFY_TYPE=0 +PROGRAM_VERIFY_TYPE_USERDEF=256 +PROGRAM_VERIFY_VALUE=0 +DISCONNECT_AFTER_FLASHING=1 +FLASH_PROGRAM_RESET_DISABLED=0 +FLASH_DISABLE_PAGE_SWITCHING=0 +FLASH_DELETE_WHOLE_GROUP=0 +CALPAGE_XCP_INITIAL_PAGE=0 +SET_CALPAGE_SEPARATLY=1 +CALPAGE_SINGLE_SEGMENT_SWITCHING=0 +MEMORY_SEGMENTS_V8_COMPATIBILITY_MODE=0 +FLASH_TOOL=Protocol +FLASH_EXTERNAL_CONVERTER= +FLASH_GRANULARITY=212 +CHECKSUM_TYPE=12 +CHECKSUM_TYPE_INCA=0x0 +CHECKSUM_ENABLED=1 +CHECKSUM_DLL_NAME= +CHECKSUM_MAX_BLOCKSIZE=65535 +ENABLE_CHECKSUM_OUTPUT=0 +CHECKSUM_TYPE_MAPPING_2=2 +SELECT_CAL_PAGE=1 +INIT_CAL_PAGE=0 +RAM_PAGE_ID=0x0 +ROM_PAGE_ID=0x1 +RAM_PAGE_ID_EXT=0x0 +ROM_PAGE_ID_EXT=0x0 +FLASH_PAGE_ADDRESS_MAPPING_ENABLED=1 +RUNTIME_CALRAM_ONLY=0 +MEMORY_SEGMENT_COUNT=2 +CALRAM_SECTOR_COUNT=2 +FLASH_SECTOR_COUNT=0 +FLASH_GROUP_COUNT=0 +TRANSPORT_LAYER_INSTANCE_NAME= +PROTOCOL_TYPE=4 +PACKET_CTR=0 +TRANSPORT_LAYER_VERSION=260 +HOST_NAME= +HOST=192.168.0.206 +PORT=5555 +LOCAL_PORT=0 +TRANSPORT_LAYER_PROTOCOL=0 +MAX_BUS_LOAD=95 +MAX_BIT_RATE=100 +TCP_TIMEOUT=0 +XCP_REMOTE_CLIENT_ASSEMBLY_NAME= +XCP_REMOTE_CLIENT_NAME= +XCP_REMOTE_CLIENT_SETTINGS= +XCP_RX_QUEUE_SIZE=10485760 +USE_DTO_CHANNEL=0 +DTO_HOST=192.168.0.2 +DTO_PORT=5500 +DTO_TRANSPORT_LAYER_PROTOCOL=0 +InterfaceIp=192.168.0.2 +SubnetMask=255.255.255.0 +ChannelMode=0 +PreferedIp= +PreferedMask=255.255.255.0 +MulticastNetworks=0.0.0.0 +DelayedAck=0 +LoadLibraryFlags=0 +InterfaceMac= +MacSelection=0 +DhcpV4Enabled=0 +RetransmitStartTime=4 +RetransmitMaxTime=64 +MaxRetries=5 +PerformAppVerify=1 +AppVerificationTime=100 +ServerPort=67 +ClientPort=68 +AutoIpEnabled=0 +AutoIpProbeWait=1 +AutoIpProbeNum=3 +AutoIpProbeMin=1 +AutoIpProbeMax=2 +AutoIpAnnounceWait=2 +AutoIpAnnounceNum=2 +AutoIpAnnounceInterval=2 +AutoIpMaxConflicts=10 +AutoIpRateLimitInterval=60 +AutoIpDefendInterval=10 +DhcpV6Enabled=0 +DhcpV6SolMaxDelay=1 +DhcpV6SolTimeout=1 +DhcpV6MaxRT=120 +DhcpV6ReqTimeout=1 +DhcpV6ReqMaxRT=30 +DhcpV6ReqMaxRC=10 +DhcpV6RenTimeout=10 +DhcpV6RenMaxRT=600 +DhcpV6RebTimeout=10 +DhcpV6RebMaxRT=600 +VLAN_CONFIG_COUNT=0 +Databases_COUNT=0 +CHANNELX=255 +USE_ASAP2_DATABASE=1 +SEGMENTS_SHOWN_IN_SETTINGS=0 +EVENT_CHANNEL_0=0x0000 +EVENT_CHANNEL_1=0x0001 +EVENT_CYCLE_0=100 +EVENT_CYCLE_1=0 +EVENT_SAMPLE_UNIT_0=7 +EVENT_SAMPLE_UNIT_1=3 +EVENT_MODE_0=4 +EVENT_MODE_1=4 +EVENT_PRIO_0=0 +EVENT_PRIO_1=0 +EVENT_MAX_DAQ_LIST_0=255 +EVENT_MAX_DAQ_LIST_1=255 +EVENT_NAME_0=async +EVENT_NAME_1=mainloop +EVENT_MULTISAMPLES_0=0 +EVENT_MULTISAMPLES_1=0 +EVENT_MIN_CYCLE_TIME_CYCLE_0=0 +EVENT_MIN_CYCLE_TIME_CYCLE_1=0 +EVENT_MIN_CYCLE_TIME_UNIT_0=9 +EVENT_MIN_CYCLE_TIME_UNIT_1=9 +EVENT_DPM_SUPPORTED_0=0 +EVENT_DPM_SUPPORTED_1=0 +MAP_FORMAT1=131 +MAP_ADDR_EXT1=0 +MAP_TEMPLATE1=no_a2l_demo +MAP_LOCAL_PATH_TEMPLATE1= +MAP_EXT1=.out +MAP_TIME1=1759954171 +MAP_FORMAT=131 +MAP_EXT=.out +EVENT_CHANNEL_2=0x0002 +EVENT_CYCLE_2=0 +EVENT_SAMPLE_UNIT_2=3 +EVENT_MODE_2=4 +EVENT_PRIO_2=0 +EVENT_MAX_DAQ_LIST_2=255 +EVENT_NAME_2=task +EVENT_MULTISAMPLES_2=0 +EVENT_MIN_CYCLE_TIME_CYCLE_2=0 +EVENT_MIN_CYCLE_TIME_UNIT_2=9 +EVENT_DPM_SUPPORTED_2=0 +MEMORY_SEGMENT_NAME_1=epk +MEMORY_SEGMENT_TYPE_1=FLASH,DATA,INTERN +MEMORY_SEGMENT_SIZE_1=0x00000014 +MEMORY_SEGMENT_ADDR_1=0x80000000 +MEMORY_SEGMENT_ADDR_EXT_1=0x00 +MEMORY_SEGMENT_ATTRIBUTE_1=0x00000000 +MEMORY_SEGMENT_FLASH_OFFSET_1=0x00000000 +MEMORY_SEGMENT_ADDRESS_MAPPING_1= +CALRAM_SECTOR_NAME_1=epk +CALRAM_SECTOR_TYPE_1=FLASH,DATA,INTERN +CALRAM_SECTOR_SIZE_1=0x00000014 +CALRAM_SECTOR_ADDR_1=0x80000000 +CALRAM_SECTOR_ADDR_EXT_1=0x00 +CALRAM_SECTOR_ATTRIBUTE_1=0x00000000 +CALRAM_SECTOR_FLASH_OFFSET_1=0x00000000 +CALRAM_SECTOR_ADDRESS_MAPPING_1= +EVENT_CHANNEL_3=0x0003 +EVENT_CYCLE_3=0 +EVENT_SAMPLE_UNIT_3=3 +EVENT_MODE_3=4 +EVENT_PRIO_3=0 +EVENT_MAX_DAQ_LIST_3=255 +EVENT_NAME_3=foo +EVENT_MULTISAMPLES_3=0 +EVENT_MIN_CYCLE_TIME_CYCLE_3=0 +EVENT_MIN_CYCLE_TIME_UNIT_3=9 +EVENT_DPM_SUPPORTED_3=0 +MEMORY_SEGMENT_NAME_2=params +MEMORY_SEGMENT_TYPE_2=FLASH,DATA,INTERN +MEMORY_SEGMENT_SIZE_2=0x00000038 +MEMORY_SEGMENT_ADDR_2=0x80010000 +MEMORY_SEGMENT_ADDR_EXT_2=0x00 +MEMORY_SEGMENT_ATTRIBUTE_2=0x00000000 +MEMORY_SEGMENT_FLASH_OFFSET_2=0x00000000 +MEMORY_SEGMENT_ADDRESS_MAPPING_2= +CALRAM_SECTOR_NAME_2=params +CALRAM_SECTOR_TYPE_2=FLASH,DATA,INTERN +CALRAM_SECTOR_SIZE_2=0x00000038 +CALRAM_SECTOR_ADDR_2=0x80010000 +CALRAM_SECTOR_ADDR_EXT_2=0x00 +CALRAM_SECTOR_ATTRIBUTE_2=0x00000000 +CALRAM_SECTOR_FLASH_OFFSET_2=0x00000000 +CALRAM_SECTOR_ADDRESS_MAPPING_2= + +[MODULES] +COUNT=1 +1=32770, "no_a2l_demo" + +[NETWORK_0] +NETWORK=11 +NETCHANNEL=[ETH::WSK:] +MAPPED_CHANNEL_INFO= +NETDEVICE=EthAdapter +ChannelConfiguration= +Name=ETH_Network +UsePreconfiguredChannelNr=0 +Active=1 +SecurityActive=0 +SecurityProfileId=0 +TlsActive=0 +TlsProfileId=0 +LocalMulticastPort=5558 +InterfaceIp=192.168.0.2 +SubnetMask=255.255.255.0 +ChannelMode=0 +PreferedIp= +PreferedMask=255.255.255.0 +MulticastNetworks=0.0.0.0 +DelayedAck=0 +LoadLibraryFlags=0 +InterfaceMac= +MacSelection=0 +DhcpV4Enabled=0 +RetransmitStartTime=4 +RetransmitMaxTime=64 +MaxRetries=5 +PerformAppVerify=1 +AppVerificationTime=100 +ServerPort=67 +ClientPort=68 +AutoIpEnabled=0 +AutoIpProbeWait=1 +AutoIpProbeNum=3 +AutoIpProbeMin=1 +AutoIpProbeMax=2 +AutoIpAnnounceWait=2 +AutoIpAnnounceNum=2 +AutoIpAnnounceInterval=2 +AutoIpMaxConflicts=10 +AutoIpRateLimitInterval=60 +AutoIpDefendInterval=10 +DhcpV6Enabled=0 +DhcpV6SolMaxDelay=1 +DhcpV6SolTimeout=1 +DhcpV6MaxRT=120 +DhcpV6ReqTimeout=1 +DhcpV6ReqMaxRT=30 +DhcpV6ReqMaxRC=10 +DhcpV6RenTimeout=10 +DhcpV6RenMaxRT=600 +DhcpV6RebTimeout=10 +DhcpV6RebMaxRT=600 +VLAN_CONFIG_COUNT=0 +Databases_COUNT=0 +DeviceCount=1 +Device_0=no_a2l_demo + +[NETWORKS] +Count=1 + +[no_a2l_demo_ECDMVariants] +ECDM_DEVICE=0 + +[PARAMETERCLASSIFICATION] +PARAMETER_CLASSIFICATION_ATTRIBUTE_00= +PARAMETER_CLASSIFICATION_ATTRIBUTE_01= +PARAMETER_CLASSIFICATION_ATTRIBUTE_02= +PARAMETER_CLASSIFICATION_ATTRIBUTE_03= +PARAMETER_CLASSIFICATION_ATTRIBUTE_04= +PARAMETER_CLASSIFICATION_ATTRIBUTE_05= +PARAMETER_CLASSIFICATION_ATTRIBUTE_06= +PARAMETER_CLASSIFICATION_ATTRIBUTE_07= +PARAMETER_CLASSIFICATION_ATTRIBUTE_08= +PARAMETER_CLASSIFICATION_ATTRIBUTE_09= +PARAMETER_CLASSIFICATION_COLOR_00=0 +PARAMETER_CLASSIFICATION_COLOR_01=0 +PARAMETER_CLASSIFICATION_COLOR_02=0 +PARAMETER_CLASSIFICATION_COLOR_03=0 +PARAMETER_CLASSIFICATION_COLOR_04=0 +PARAMETER_CLASSIFICATION_COLOR_05=0 +PARAMETER_CLASSIFICATION_COLOR_06=0 +PARAMETER_CLASSIFICATION_COLOR_07=0 +PARAMETER_CLASSIFICATION_COLOR_08=0 +PARAMETER_CLASSIFICATION_COLOR_09=0 + +[PARASETEXPLORER-OPTIONS] +EDIT_SINGLE_INTERPOLATION=0 +EDIT_SINGLE_INTERPOLATION_WARN_ERR=0 +EDIT_READ_ONLY=0 +EDIT_ALLOW_CHANGE_AXIS_VALUE=2 +EDIT_READ_ONLY_WARN_ERR=0 +EDIT_IGNORE_MONOTONY=0 +EDIT_NO_DEPENDENT_QUANTIZATION=0 +COMPARISON_TYPE=1 +COMPARE_PHYSWITHQUANTISATION=0 +COMPARE_ASCIIONLYUNTILZEROINHEXCOMPARE=0 +CALCULATEVALUEGROUPS=0 +COMPARISON_EXCLUDE_FROM_COMPARE=0 +LOAD_PARASET_AT_FIRST_POSITION=0 +LOAD_PARASET_FORCESELECTA2LFORDROPFILES=0 +SELECT_DATABASE_FOR_NEW_PARASET=0 +LOAD_PARASET_FORCESELECTA2L_FORALLFILES=0 +LOAD_PARASET_PROVE_EPK=0 +LOAD_PARASET_ALLVARIANTSASCOLUMN=0 +COMPARISON_TYPEEX_CNT=0 +COPY_READ_ONLY=0 +COPY_READ_ONLY_WARN_ERR=1 +COPY_DIFFERENT_UNITS=1 +COPY_DIFFERENT_UNITS_WARN_ERR=0 +COPY_NUMERIC_TO_VERBAL=0 +COPY_NUMERIC_TO_VERBAL_WARN_ERR=1 +COPY_SAME_GROUP_SST=0 +COPY_SAME_GROUP_SST_WARN_ERR=0 +HOW_TO_COPY_SST=0 +HOW_TO_COPY_SST_WARN_ERR=0 +HOW_TO_COPY_FWB=0 +HOW_TO_COPY_FWB_WARN_ERR=0 +HOW_TO_COPY_AXIS_POINTS=0 +HOW_TO_COPY_AXIS_POINTS_WARN_ERR=0 +HOW_TO_COPY_MAXSIZE=0 +HOW_TO_COPY_MAXSIZE_WARN_ERR=0 +HOW_TO_COPY_MISSING_AXIS=0 +HOW_TO_COPY_MISSING_AXIS_WARN_ERR=1 +LOAD_PARASET_MAXSIZE=0 +EDITMODE_STDLIMIT_BEHAVIOUR=0 +COPY_STD_LIMIT=2 +COPY_STD_LIMIT_WARN_ERR=1 +COPY_EXT_LIMIT=0 +COPY_EXT_LIMIT_WARN_ERR=1 +COPY_DTYP_LIMIT=0 +COPY_DTYP_LIMIT_WARN_ERR=1 +COPY_MONOTONY=0 +COPY_MONOTONY_WARN_ERR=1 +COPY_DEFAULT_MONOTONY_CHECK=0 +COPY_DEFAULT_MONOTONY_AXIS=0 +COPY_STD_EXT_LIMIT_HARMONIZED=1 +COPY_ASCII_PADDBYTESWITHZERO=1 +DEFAULTFORMAT_FORNEW=VPAR +DEFAULTEXTENSION_FORNEW=.PAR +COLOR_DEFCOLOR1=16711680 +COLOR_DEFCOLOR2=32768 +COLOR_DEFCOLOR3=255 +COLOR_DEFCOLOR4=8388672 +COLOR_DEFCOLOR5=8388608 +COLOR_DEFCOLOR6=32896 +COLOR_DEFCOLOR7=0 +COLOR_DEFCOLOR8=33023 +COLOR_DIFFCOLOR1=15527167 +COLOR_DIFFCOLOR2=16772332 +COLOR_DIFFCOLOR3=15532012 +COLOR_DIFFCOLOR4=16777092 +COLOR_DIFFCOLOR5=16760799 +COLOR_DIFFCOLOR6=12574719 +COLOR_DIFFCOLOR7=14671871 +COLOR_DIFFCOLOR8=12566527 +COLOR_MASTERSET=14811135 +COLOR_NUMVALUE=16777215 +COLOR_NUMXAXIS=16777215 +COLOR_NUMYAXIS=16777215 +COLOR_NUMFOCUSCELL=65535 +COLOR_HITCOLLECTION=33023 +COLOR_NUMDIFFVALUE=16711680 +CALIBRATIONSTATE_WITHBACKGROUNDCOLOR=0 +COLOR_DIFFVALFORTEXT=0 +EXTENDED_LOGGING=1 +LOGGINGVALUECHANGES=0 +OPEN_LOGGING=0 +HANDLE_VARCODDEDOBJECTS=1 +HANDLEVARIANTBASEDFILTER=1 +SHOWDEFREFPARAMETERS=0 +SHOW_FNC_AFFILIATION_ALL_PSETS=1 +DELETE_FILTERTREE_CHECKS=0 +SORT_STRINGS_MORE_HUMAN_READABLE=0 +FORCE_STANDARDAXIS_AND_COMMONAXIS_FLOATINGPOINTVALUES_IN_DECIMALFORMAT=0 +WORKWITHSYMBOLS=-1 +IGNORE_MEASUREMENT=0 +COMPARISON_SEMANTIC_FOR_LOOKUP_TABLES=0 +COMPARISON_PRECISION_FOR_SEMANTIC_COMPARISON=0 + +[PARASETEXPLORER-PRE_POST_PROCESS] +SHOW_PREPROCESSDIALOG=1 + +[PRINTING] +ScreenDPI=192 + +[PROJECT_SETTINGS_FILES] +COUNT=0 + +[PSET_FILES] +COUNT=0 + +[QUALITY-DATA-OPTIONS] +ScreenDPIinSection=192 +COMPLETED_AS_READ_ONLY=0 +COPY_COMPLETED_AS_READ_ONLY=0 +COPY_QUALITY_DATA=0 +CHANGED_FROM_LAST=0 +SD_FIELD_ORDER=0 +PREDEFINED_ENTRY_00=--- +PREDEFINED_ENTRY_01=changed +PREDEFINED_ENTRY_COUNT=2 +SD_FIELD_ENTRY_1= +SD_FIELD_ENTRY_2= +SD_FIELD_ENTRY_3= +SD_FIELD_ENTRY_4= +SD_FIELD_ENTRY_5= +SD_FIELD_ENTRY_6= +SD_FIELD_ENTRY_7= +SD_FIELD_ENTRY_8= +SD_FIELD_ENTRY_9= +SD_FIELD_ENTRY_10= + +[RIBBON] +ISMINIMIZED=0 + +[SCRIPT_FOLDER_LIST] +IS_CWD_EXPANDED=1 +COUNT=0 +LAST_FOCUSED=0 + +[SIGNAL_COLOR_FUNCTION_LIST] +Count=0 + +[SIGNAL_COMPARE] +LINE_WIDTH=1 +LINE_STYLE=-1 +LINE_TYPE=-1 +MARKER_TYPE=-1 +DARKEN=30 +CREATE_COMMON_Y_AXIS=1 + +[SIGNSELWND] +Version=100 +ScreenDPIinSection=192 +ALL_LIST_TreeColumnCount=0 +DEVICE_LIST_TreeColumnCount=1 +PSET_LIST_TreeColumnCount=0 +MDF_LIST_TreeColumnCount=0 +FUNC_DEF_LIST_TreeColumnCount=0 +MDF_VIRT_LIST_TreeColumnCount=0 +MEA_LIST_TreeColumnCount=1 +MEA_LIST_TreeColumn_0=0, 460 +MEA_LIST_TreeColumn_0_dpi96=0, 230 +DATAMINING_LIST_TreeColumnCount=0 +CONFIGS_LIST_TreeColumnCount=0 +WIN_TEMPL_LIST_TreeColumnCount=0 +RECYCLE_BIN_LIST_TreeColumnCount=0 +VIO_LIST_TreeColumnCount=0 +ALL_LIST_ListColumnCount=0 +DEVICE_LIST_ListColumnCount=4 +PSET_LIST_ListColumnCount=0 +MDF_LIST_ListColumnCount=0 +FUNC_DEF_LIST_ListColumnCount=0 +MDF_VIRT_LIST_ListColumnCount=0 +MEA_LIST_ListColumnCount=4 +MEA_LIST_ListColumn_0=29, 88 +MEA_LIST_ListColumn_0_dpi96=29, 44 +MEA_LIST_ListColumn_1=196608, 120 +MEA_LIST_ListColumn_1_dpi96=196608, 60 +MEA_LIST_ListColumn_2=31, 460 +MEA_LIST_ListColumn_2_dpi96=31, 230 +MEA_LIST_ListColumn_3=3, 500 +MEA_LIST_ListColumn_3_dpi96=3, 250 +DATAMINING_LIST_ListColumnCount=0 +CONFIGS_LIST_ListColumnCount=0 +WIN_TEMPL_LIST_ListColumnCount=0 +RECYCLE_BIN_LIST_ListColumnCount=0 +VIO_LIST_ListColumnCount=0 +KnownDynamicColumnCount=0 +DEVICE_LIST_TreeColumn_0=0, 660 +DEVICE_LIST_TreeColumn_0_dpi96=0, 330 +DEVICE_LIST_ListColumn_0=29, 88 +DEVICE_LIST_ListColumn_0_dpi96=29, 44 +DEVICE_LIST_ListColumn_1=196608, 120 +DEVICE_LIST_ListColumn_1_dpi96=196608, 60 +DEVICE_LIST_ListColumn_2=31, 460 +DEVICE_LIST_ListColumn_2_dpi96=31, 230 +DEVICE_LIST_ListColumn_3=3, 500 +DEVICE_LIST_ListColumn_3_dpi96=3, 250 + +[SYSTEM_INFORMATION_DEVICE] +PdhEnabled=0 +PdhAllObjects=1 +PdhObjectList=0 +Smart_UPS_Configuration= + +[TASKLIST] +COUNT=0 + +[TimeManagement] +MasterClock=0 +MasterClockXtssUtc=0 +DumpDomainInfo=0 +SyncRetriesOnStart=30 + +[TRACEWINDOW] +LOGBUFFERSIZE=131071 + +[USER_PRINT_LAYOUT_0_FooterElements] +Count=0 + +[USER_PRINT_LAYOUT_0_HeaderElements] +Count=0 + +[VIEW_ITEM_DIALOG] +ScreenDPIinSection=192 +POSX=0 +POSX_dpi96=0 +POSY=0 +POSY_dpi96=0 +SIZEX=1750 +SIZEX_dpi96=875 +SIZEY=1400 +SIZEY_dpi96=700 +SHOWTOOLBAR=1 +SHOWSTATUSBAR=1 +SHOWGRID=0 +RIGHTPANE2HEIGHT=-1 +RIGHTPANE2HEIGHT_dpi96=-1 +TREEX=450 +TREEX_dpi96=225 +TREEY=1286 +TREEY_dpi96=643 +ACTIVEPANE=1 +SELECTED_TREENODE=General +FIRSTVISIBLE_TREENODE=General +TREEEXPAND_COUNT=0 +LAST_FOCUSED_LISTCOLUMN=0 +LAST_FOCUSED_LISTINDEX=0 +LAST_TOP_LISTINDEX=0 + +[VIEW_ITEM_EXPLORER] +ScreenDPIinSection=192 +POSX=641 +POSX_dpi96=321 +POSY=322 +POSY_dpi96=161 +SIZEX=1750 +SIZEX_dpi96=875 +SIZEY=1400 +SIZEY_dpi96=700 +SHOWTOOLBAR=1 +SHOWSTATUSBAR=1 +SHOWGRID=0 +RIGHTPANE2HEIGHT=-2 +RIGHTPANE2HEIGHT_dpi96=-1 +TREEX=450 +TREEX_dpi96=225 +TREEY=1286 +TREEY_dpi96=643 +ACTIVEPANE=1 +SELECTED_TREENODE=Protocol +FIRSTVISIBLE_TREENODE=Device +TREEEXPAND_COUNT=1 +LAST_FOCUSED_LISTCOLUMN=0 +LAST_FOCUSED_LISTINDEX=0 +LAST_TOP_LISTINDEX=0 +TREEEXPAND_0=Protocol + +[VIO_SYSTEM_BEHAVIOUR] +AutoCreateDetectedHardware=1 +CardMissingOption=1 + +[VN8900DeviceManager] +MESSAGE_ERROR=1 +MESSAGE_WARNING=0 +MESSAGE_INFO=0 + +[DB_EXPLORER] +LAST_PAGE_NAME_DLG_VARIABLE= +LAST_PAGE_ID_DLG_VARIABLE=21048 +OBJECT_DIALOG_WITH=1190 +OBJECT_DIALOG_WITH_dpi96=595 +OBJECT_DIALOG_HEIGHT=614 +OBJECT_DIALOG_HEIGHT_dpi96=307 +ScreenDPIinSection=192 +SELECT_X=1207 +SELECT_X_dpi96=604 +SELECT_Y=624 +SELECT_Y_dpi96=312 +SELECT_W=1844 +SELECT_W_dpi96=922 +SELECT_H=1212 +SELECT_H_dpi96=606 +EDITOR_COL_COUNT=7 +EDITOR_COL_1=29, 88 +EDITOR_COL_1_dpi96=29, 44 +EDITOR_COL_2=31, 460 +EDITOR_COL_2_dpi96=31, 230 +EDITOR_COL_3=1, 180 +EDITOR_COL_3_dpi96=1, 90 +EDITOR_COL_4=2, 170 +EDITOR_COL_4_dpi96=2, 85 +EDITOR_COL_5=3, 500 +EDITOR_COL_5_dpi96=3, 250 +EDITOR_COL_6=6, 240 +EDITOR_COL_6_dpi96=6, 120 +EDITOR_COL_7=7, 240 +EDITOR_COL_7_dpi96=7, 120 +EDITOR_SORT_COL=31 +EDITOR_SORT_UPW=1 +SELECT_COL_COUNT=4 +SELECT_COL_1=29, 88 +SELECT_COL_1_dpi96=29, 44 +SELECT_COL_2=31, 460 +SELECT_COL_2_dpi96=31, 230 +SELECT_COL_3=16, 140 +SELECT_COL_3_dpi96=16, 70 +SELECT_COL_4=3, 500 +SELECT_COL_4_dpi96=3, 250 +SELECT_SORT_COL=31 +SELECT_SORT_UPW=1 +SEARCH_COL_COUNT=7 +SEARCH_COL_1=29, 88 +SEARCH_COL_1_dpi96=29, 44 +SEARCH_COL_2=31, 460 +SEARCH_COL_2_dpi96=31, 230 +SEARCH_COL_3=91, 300 +SEARCH_COL_3_dpi96=91, 150 +SEARCH_COL_4=19, 240 +SEARCH_COL_4_dpi96=19, 120 +SEARCH_COL_5=1, 180 +SEARCH_COL_5_dpi96=1, 90 +SEARCH_COL_6=2, 170 +SEARCH_COL_6_dpi96=2, 85 +SEARCH_COL_7=3, 500 +SEARCH_COL_7_dpi96=3, 250 +SEARCH_SORT_COL=31 +SEARCH_SORT_UPW=1 +CAN_SELECT_COL_COUNT=9 +CAN_SELECT_COL_1=29, 88 +CAN_SELECT_COL_1_dpi96=29, 44 +CAN_SELECT_COL_2=31, 460 +CAN_SELECT_COL_2_dpi96=31, 230 +CAN_SELECT_COL_3=28, 140 +CAN_SELECT_COL_3_dpi96=28, 70 +CAN_SELECT_COL_4=16, 140 +CAN_SELECT_COL_4_dpi96=16, 70 +CAN_SELECT_COL_5=64, 400 +CAN_SELECT_COL_5_dpi96=64, 200 +CAN_SELECT_COL_6=4, 240 +CAN_SELECT_COL_6_dpi96=4, 120 +CAN_SELECT_COL_7=17, 140 +CAN_SELECT_COL_7_dpi96=17, 70 +CAN_SELECT_COL_8=18, 100 +CAN_SELECT_COL_8_dpi96=18, 50 +CAN_SELECT_COL_9=3, 500 +CAN_SELECT_COL_9_dpi96=3, 250 +CAN_SELECT_SORT_COL=31 +CAN_SELECT_SORT_UPW=1 +CAN_SEARCH_COL_COUNT=9 +CAN_SEARCH_COL_1=29, 88 +CAN_SEARCH_COL_1_dpi96=29, 44 +CAN_SEARCH_COL_2=31, 460 +CAN_SEARCH_COL_2_dpi96=31, 230 +CAN_SEARCH_COL_3=28, 140 +CAN_SEARCH_COL_3_dpi96=28, 70 +CAN_SEARCH_COL_4=16, 140 +CAN_SEARCH_COL_4_dpi96=16, 70 +CAN_SEARCH_COL_5=64, 400 +CAN_SEARCH_COL_5_dpi96=64, 200 +CAN_SEARCH_COL_6=4, 240 +CAN_SEARCH_COL_6_dpi96=4, 120 +CAN_SEARCH_COL_7=17, 140 +CAN_SEARCH_COL_7_dpi96=17, 70 +CAN_SEARCH_COL_8=18, 100 +CAN_SEARCH_COL_8_dpi96=18, 50 +CAN_SEARCH_COL_9=3, 500 +CAN_SEARCH_COL_9_dpi96=3, 250 +CAN_SEARCH_SORT_COL=31 +CAN_SEARCH_SORT_UPW=1 +LIN_SELECT_COL_COUNT=9 +LIN_SELECT_COL_1=29, 88 +LIN_SELECT_COL_1_dpi96=29, 44 +LIN_SELECT_COL_2=31, 460 +LIN_SELECT_COL_2_dpi96=31, 230 +LIN_SELECT_COL_3=28, 140 +LIN_SELECT_COL_3_dpi96=28, 70 +LIN_SELECT_COL_4=16, 140 +LIN_SELECT_COL_4_dpi96=16, 70 +LIN_SELECT_COL_5=64, 400 +LIN_SELECT_COL_5_dpi96=64, 200 +LIN_SELECT_COL_6=4, 240 +LIN_SELECT_COL_6_dpi96=4, 120 +LIN_SELECT_COL_7=17, 140 +LIN_SELECT_COL_7_dpi96=17, 70 +LIN_SELECT_COL_8=18, 100 +LIN_SELECT_COL_8_dpi96=18, 50 +LIN_SELECT_COL_9=3, 500 +LIN_SELECT_COL_9_dpi96=3, 250 +LIN_SELECT_SORT_COL=31 +LIN_SELECT_SORT_UPW=1 +LIN_SEARCH_COL_COUNT=9 +LIN_SEARCH_COL_1=29, 88 +LIN_SEARCH_COL_1_dpi96=29, 44 +LIN_SEARCH_COL_2=31, 460 +LIN_SEARCH_COL_2_dpi96=31, 230 +LIN_SEARCH_COL_3=28, 140 +LIN_SEARCH_COL_3_dpi96=28, 70 +LIN_SEARCH_COL_4=16, 140 +LIN_SEARCH_COL_4_dpi96=16, 70 +LIN_SEARCH_COL_5=64, 400 +LIN_SEARCH_COL_5_dpi96=64, 200 +LIN_SEARCH_COL_6=4, 240 +LIN_SEARCH_COL_6_dpi96=4, 120 +LIN_SEARCH_COL_7=17, 140 +LIN_SEARCH_COL_7_dpi96=17, 70 +LIN_SEARCH_COL_8=18, 100 +LIN_SEARCH_COL_8_dpi96=18, 50 +LIN_SEARCH_COL_9=3, 500 +LIN_SEARCH_COL_9_dpi96=3, 250 +LIN_SEARCH_SORT_COL=31 +LIN_SEARCH_SORT_UPW=1 +MDF_SELECT_COL_COUNT=8 +MDF_SELECT_COL_1=29, 88 +MDF_SELECT_COL_1_dpi96=29, 44 +MDF_SELECT_COL_2=31, 460 +MDF_SELECT_COL_2_dpi96=31, 230 +MDF_SELECT_COL_3=28, 140 +MDF_SELECT_COL_3_dpi96=28, 70 +MDF_SELECT_COL_4=16, 140 +MDF_SELECT_COL_4_dpi96=16, 70 +MDF_SELECT_COL_5=64, 400 +MDF_SELECT_COL_5_dpi96=64, 200 +MDF_SELECT_COL_6=4, 240 +MDF_SELECT_COL_6_dpi96=4, 120 +MDF_SELECT_COL_7=20, 180 +MDF_SELECT_COL_7_dpi96=20, 90 +MDF_SELECT_COL_8=3, 500 +MDF_SELECT_COL_8_dpi96=3, 250 +MDF_SELECT_SORT_COL=31 +MDF_SELECT_SORT_UPW=1 +MDF_SEARCH_COL_COUNT=8 +MDF_SEARCH_COL_1=29, 88 +MDF_SEARCH_COL_1_dpi96=29, 44 +MDF_SEARCH_COL_2=31, 460 +MDF_SEARCH_COL_2_dpi96=31, 230 +MDF_SEARCH_COL_3=28, 140 +MDF_SEARCH_COL_3_dpi96=28, 70 +MDF_SEARCH_COL_4=16, 140 +MDF_SEARCH_COL_4_dpi96=16, 70 +MDF_SEARCH_COL_5=64, 400 +MDF_SEARCH_COL_5_dpi96=64, 200 +MDF_SEARCH_COL_6=4, 240 +MDF_SEARCH_COL_6_dpi96=4, 120 +MDF_SEARCH_COL_7=20, 180 +MDF_SEARCH_COL_7_dpi96=20, 90 +MDF_SEARCH_COL_8=3, 500 +MDF_SEARCH_COL_8_dpi96=3, 250 +MDF_SEARCH_SORT_COL=31 +MDF_SEARCH_SORT_UPW=1 +WRITE_COL_COUNT=2 +WRITE_COL_1=21, 76 +WRITE_COL_1_dpi96=21, 38 +WRITE_COL_2=23, 1200 +WRITE_COL_2_dpi96=23, 600 +WRITE_SORT_COL=31 +WRITE_SORT_UPW=1 +CONVERSION_COL_COUNT=7 +CONVERSION_COL_1=29, 88 +CONVERSION_COL_1_dpi96=29, 44 +CONVERSION_COL_2=31, 460 +CONVERSION_COL_2_dpi96=31, 230 +CONVERSION_COL_3=3, 500 +CONVERSION_COL_3_dpi96=3, 250 +CONVERSION_COL_4=26, 240 +CONVERSION_COL_4_dpi96=26, 120 +CONVERSION_COL_5=16, 140 +CONVERSION_COL_5_dpi96=16, 70 +CONVERSION_COL_6=15, 180 +CONVERSION_COL_6_dpi96=15, 90 +CONVERSION_COL_7=68, 180 +CONVERSION_COL_7_dpi96=68, 90 +CONVERSION_SORT_COL=31 +CONVERSION_SORT_UPW=1 +RECORD_LAYOUT_COL_COUNT=2 +RECORD_LAYOUT_COL_1=29, 88 +RECORD_LAYOUT_COL_1_dpi96=29, 44 +RECORD_LAYOUT_COL_2=31, 460 +RECORD_LAYOUT_COL_2_dpi96=31, 230 +RECORD_LAYOUT_SORT_COL=31 +RECORD_LAYOUT_SORT_UPW=1 +VARIANT_CRITERION_COL_COUNT=4 +VARIANT_CRITERION_COL_1=29, 88 +VARIANT_CRITERION_COL_1_dpi96=29, 44 +VARIANT_CRITERION_COL_2=31, 460 +VARIANT_CRITERION_COL_2_dpi96=31, 230 +VARIANT_CRITERION_COL_3=25, 400 +VARIANT_CRITERION_COL_3_dpi96=25, 200 +VARIANT_CRITERION_COL_4=30, 400 +VARIANT_CRITERION_COL_4_dpi96=30, 200 +VARIANT_CRITERION_SORT_COL=31 +VARIANT_CRITERION_SORT_UPW=1 +SYSTEM_CONSTANT_COL_COUNT=3 +SYSTEM_CONSTANT_COL_1=29, 88 +SYSTEM_CONSTANT_COL_1_dpi96=29, 44 +SYSTEM_CONSTANT_COL_2=31, 460 +SYSTEM_CONSTANT_COL_2_dpi96=31, 230 +SYSTEM_CONSTANT_COL_3=24, 240 +SYSTEM_CONSTANT_COL_3_dpi96=24, 120 +SYSTEM_CONSTANT_SORT_COL=31 +SYSTEM_CONSTANT_SORT_UPW=1 +DEFAULT_COL_COUNT=3 +DEFAULT_COL_1=29, 88 +DEFAULT_COL_1_dpi96=29, 44 +DEFAULT_COL_2=31, 460 +DEFAULT_COL_2_dpi96=31, 230 +DEFAULT_COL_3=3, 500 +DEFAULT_COL_3_dpi96=3, 250 +DEFAULT_SORT_COL=31 +DEFAULT_SORT_UPW=1 +CAN_SIGNAL_COL_COUNT=9 +CAN_SIGNAL_COL_1=29, 88 +CAN_SIGNAL_COL_1_dpi96=29, 44 +CAN_SIGNAL_COL_2=31, 460 +CAN_SIGNAL_COL_2_dpi96=31, 230 +CAN_SIGNAL_COL_3=28, 140 +CAN_SIGNAL_COL_3_dpi96=28, 70 +CAN_SIGNAL_COL_4=16, 140 +CAN_SIGNAL_COL_4_dpi96=16, 70 +CAN_SIGNAL_COL_5=64, 400 +CAN_SIGNAL_COL_5_dpi96=64, 200 +CAN_SIGNAL_COL_6=4, 240 +CAN_SIGNAL_COL_6_dpi96=4, 120 +CAN_SIGNAL_COL_7=17, 140 +CAN_SIGNAL_COL_7_dpi96=17, 70 +CAN_SIGNAL_COL_8=18, 100 +CAN_SIGNAL_COL_8_dpi96=18, 50 +CAN_SIGNAL_COL_9=3, 500 +CAN_SIGNAL_COL_9_dpi96=3, 250 +CAN_SIGNAL_SORT_COL=31 +CAN_SIGNAL_SORT_UPW=1 +CA_MESSAGE_COL_COUNT=7 +CA_MESSAGE_COL_1=29, 88 +CA_MESSAGE_COL_1_dpi96=29, 44 +CA_MESSAGE_COL_2=31, 460 +CA_MESSAGE_COL_2_dpi96=31, 230 +CA_MESSAGE_COL_3=3, 500 +CA_MESSAGE_COL_3_dpi96=3, 250 +CA_MESSAGE_COL_4=64, 400 +CA_MESSAGE_COL_4_dpi96=64, 200 +CA_MESSAGE_COL_5=4, 240 +CA_MESSAGE_COL_5_dpi96=4, 120 +CA_MESSAGE_COL_6=17, 140 +CA_MESSAGE_COL_6_dpi96=17, 70 +CA_MESSAGE_COL_7=18, 100 +CA_MESSAGE_COL_7_dpi96=18, 50 +CA_MESSAGE_SORT_COL=31 +CA_MESSAGE_SORT_UPW=1 +MEMORY_SEGMENT_COL_COUNT=4 +MEMORY_SEGMENT_COL_1=29, 88 +MEMORY_SEGMENT_COL_1_dpi96=29, 44 +MEMORY_SEGMENT_COL_2=31, 460 +MEMORY_SEGMENT_COL_2_dpi96=31, 230 +MEMORY_SEGMENT_COL_3=3, 500 +MEMORY_SEGMENT_COL_3_dpi96=3, 250 +MEMORY_SEGMENT_COL_4=1, 180 +MEMORY_SEGMENT_COL_4_dpi96=1, 90 +MEMORY_SEGMENT_SORT_COL=31 +MEMORY_SEGMENT_SORT_UPW=1 +CAL_PARAM_GROUP_COL_COUNT=4 +CAL_PARAM_GROUP_COL_1=29, 88 +CAL_PARAM_GROUP_COL_1_dpi96=29, 44 +CAL_PARAM_GROUP_COL_2=31, 460 +CAL_PARAM_GROUP_COL_2_dpi96=31, 230 +CAL_PARAM_GROUP_COL_3=1376257, 200 +CAL_PARAM_GROUP_COL_3_dpi96=1376257, 100 +CAL_PARAM_GROUP_COL_4=1376260, 200 +CAL_PARAM_GROUP_COL_4_dpi96=1376260, 100 +CAL_PARAM_GROUP_SORT_COL=31 +CAL_PARAM_GROUP_SORT_UPW=1 +TABLE_COL_COUNT=4 +TABLE_COL_1=29, 88 +TABLE_COL_1_dpi96=29, 44 +TABLE_COL_2=31, 460 +TABLE_COL_2_dpi96=31, 230 +TABLE_COL_3=3, 500 +TABLE_COL_3_dpi96=3, 250 +TABLE_COL_4=26, 240 +TABLE_COL_4_dpi96=26, 120 +TABLE_SORT_COL=31 +TABLE_SORT_UPW=1 +FILTER_COL_COUNT=3 +FILTER_COL_1=29, 88 +FILTER_COL_1_dpi96=29, 44 +FILTER_COL_2=31, 460 +FILTER_COL_2_dpi96=31, 230 +FILTER_COL_3=3, 500 +FILTER_COL_3_dpi96=3, 250 +FILTER_SORT_COL=31 +FILTER_SORT_UPW=1 +SELECT_SHOW_TOOLTIPS=1 +SELECT_SHOW_DISPLAY_NAMES=0 +SELECT_EXPAND_TREEVIEW_ITEM=2000 +SELECT_TV_W=594 +SELECT_TV_W_dpi96=297 +SELECT_DLG_H=600 +SELECT_DLG_H_dpi96=300 +SELECT_PREVIEW_DLG_VISIBLE=0 +SELECT_SORT_COLUMN_ID=31 +SELECT_SORT_UPWARD=1 + +[DlgCommentWrapper] +ScreenDPIinSection=192 +WindowLeft=1014 +WindowLeft_dpi96=507 +WindowTop=524 +WindowTop_dpi96=262 +WindowWidth=1350 +WindowWidth_dpi96=675 +WindowHeight=923 +WindowHeight_dpi96=462 + +[DlgMdfComment] +ScreenDPIinSection=192 +WindowLeft=1027 +WindowLeft_dpi96=514 +WindowTop=582 +WindowTop_dpi96=291 +WindowWidth=1324 +WindowWidth_dpi96=662 +WindowHeight=786 +WindowHeight_dpi96=393 + +[DlgSaveConfigsMoreLess] +ScreenDPIinSection=192 +ColWidthName=700 +ColWidthDisplay=462 +ShowMore=0 +MoreHeight=566 +MoreHeight_dpi96=283 +WindowLeft=1070 +WindowLeft_dpi96=535 +WindowTop=646 +WindowTop_dpi96=323 +WindowWidth=1242 +WindowWidth_dpi96=621 +WindowHeight=260 +WindowHeight_dpi96=130 + +[DB_EXPLORER_SEARCH_FILTER] +SEARCH_CASE_SENSITIVE=0 +SEARCH_FULL_TEXT=1 +SEARCH_USE_MODE=1 +SEARCH_INCLUDE_SUB_GROUPS=1 +SEARCH_VARTYPE_MEASURE=255 +SEARCH_REFTYPE_MEA_LOC=255 +SEARCH_VARTYPE_VIRTUAL=1 +SEARCH_VARTYPE_REAL=1 +SEARCH_ACCESS=0 +SEARCH_ERRORTYPE=0 +SEARCH_DATAYPE_MASK=0 +SEARCH_DATAYPE=0 +SEARCH_COMP_ADDRESS=0 +SEARCH_START_ADDRESS=0 +SEARCH_END_ADDRESS=0 +FILTER_COMMENT= +FILTER_NAME=Search result +SEARCH_COMMENT= +SEARCH_NAME= +PARENT= + +[Dialog_MdiCfgDlg_Typ1] +LastOpenedDlgType=1 +TreeWidth=240 +TreeWidth_dpi96=120 +ScreenDPIinSection=192 +WindowLeft=464 +WindowLeft_dpi96=232 +WindowTop=494 +WindowTop_dpi96=247 +WindowWidth=2384 +WindowWidth_dpi96=1192 +WindowHeight=934 +WindowHeight_dpi96=467 + +[Dialog_MdiCfgDlg_Typ2097152] +LastOpenedDlgType=0 +TreeWidth=240 +TreeWidth_dpi96=120 +ScreenDPIinSection=192 +WindowLeft=1292 +WindowLeft_dpi96=646 +WindowTop=832 +WindowTop_dpi96=416 +WindowWidth=1430 +WindowWidth_dpi96=715 +WindowHeight=521 +WindowHeight_dpi96=261 + +[Dialog_MdiCfgDlg_Typ262144] +LastOpenedDlgType=8 +TreeWidth=240 +TreeWidth_dpi96=120 +ScreenDPIinSection=192 +WindowLeft=1292 +WindowLeft_dpi96=646 +WindowTop=832 +WindowTop_dpi96=416 +WindowWidth=1430 +WindowWidth_dpi96=715 +WindowHeight=608 +WindowHeight_dpi96=304 + +[InsertArrayRowColDialog] +ScreenDPIinSection=192 +WindowLeft=1401 +WindowLeft_dpi96=701 +WindowTop=908 +WindowTop_dpi96=454 +WindowWidth=797 +WindowWidth_dpi96=399 +WindowHeight=358 +WindowHeight_dpi96=179 + +[MEASUREMENT_DISPLAY_SELECT] +ScreenDPIinSection=192 +POSX=0 +POSX_dpi96=0 +POSY=0 +POSY_dpi96=0 +SIZEX=1620 +SIZEX_dpi96=810 +SIZEY=1200 +SIZEY_dpi96=600 +SHOWTOOLBAR=1 +SHOWSTATUSBAR=1 +SHOWGRID=0 +RIGHTPANE2HEIGHT=304 +RIGHTPANE2HEIGHT_dpi96=152 +TREEX=450 +TREEX_dpi96=225 +TREEY=1009 +TREEY_dpi96=505 +ACTIVEPANE=0 +SELECTED_TREENODE=Measurement signals +FIRSTVISIBLE_TREENODE=Measurement options +TREEEXPAND_COUNT=1 +TREEEXPAND_0=Measurement signals +LAST_FOCUSED_LISTCOLUMN=0 +LAST_FOCUSED_LISTINDEX=5 +LAST_TOP_LISTINDEX=0 +DAQLISTS=2 +STATUSBAR_BYTES=1 +DIALOGFILEEXTEXPORT=vsf +LABELLISTMEAMODE=0 +LABELLISTBUSSIGNALMODE=0 +TEXT_SEARCH= +VXIIColumnsAdded=0 + +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_EVENTS] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_EVENTS_CUSTOM] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_EVENTS_KEY] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_EVENTS_SYSTEM] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=196608 +SortUpward=1 + +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_EVENTS_SYSTEM_DEVICE] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_KNOWN_DYNAMIC_COLUMNS_NORMAL] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 +VERSION=100 + +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_NORMAL] +ScreenDPIinSection=192 +ColumnCount=8 +Column_0=65542, 100 +Column_0_dpi96=65542, 50 +Column_1=29, 88 +Column_1_dpi96=29, 44 +Column_2=34, 96 +Column_2_dpi96=34, 48 +Column_3=31, 460 +Column_3_dpi96=31, 230 +Column_4=65540, 160 +Column_4_dpi96=65540, 80 +Column_5=65541, 120 +Column_5_dpi96=65541, 60 +Column_6=65597, 200 +Column_6_dpi96=65597, 100 +Column_7=98305, 160 +Column_7_dpi96=98305, 80 +ColumnIdSort=-1 +SortUpward=1 +VERSION=100 + +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_RECORDER] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 +VERSION=100 + +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_RECORDER_BUSLOGGING] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_RECORDERS] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_SOUNDS] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_TARA_ACTIVE_SIGNALS] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_TARA_ALL_SIGNALS] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_DISPLAY_SELECT_COLUMNLIST_VIO] +ScreenDPIinSection=192 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_DISPLAY_SELECT_DYNAMIC_COLUMNS] +Count=0 + +[VDISPLAYIITLCTRL] +COLUMNS_TYP262144_CONTEXT1= +COLUMNS_TYP262144_CONTEXT1_dpi96= +COLUMNS_TYP262144_CONTEXT1_ScreenDPI=192 +COLUMNS_TYP1_CONTEXT1= +COLUMNS_TYP1_CONTEXT1_dpi96= +COLUMNS_TYP1_CONTEXT1_ScreenDPI=192 +COLUMNS_TYP2097152_CONTEXT1= +COLUMNS_TYP2097152_CONTEXT1_dpi96= +COLUMNS_TYP2097152_CONTEXT1_ScreenDPI=192 +COLUMNS_TYP1_CONTEXT4= +COLUMNS_TYP1_CONTEXT4_dpi96= +COLUMNS_TYP1_CONTEXT4_ScreenDPI=192 + +[DLG_AXIS_GROUP] +ScreenDPIinSection=192 +COLUMN_WIDTH_PREVIEW=200 +COLUMN_WIDTH_PREVIEW_dpi96=100 +COLUMN_WIDTH_NAME=696 +COLUMN_WIDTH_NAME_dpi96=348 + +[ModuleExplorer_no_a2l_demo] +ScreenDPIinSection=192 +POSX=0 +POSX_dpi96=0 +POSY=0 +POSY_dpi96=0 +SIZEX=1750 +SIZEX_dpi96=875 +SIZEY=1400 +SIZEY_dpi96=700 +SHOWTOOLBAR=1 +SHOWSTATUSBAR=1 +SHOWGRID=0 +RIGHTPANE2HEIGHT=-2 +RIGHTPANE2HEIGHT_dpi96=-1 +TREEX=450 +TREEX_dpi96=225 +TREEY=1286 +TREEY_dpi96=643 +ACTIVEPANE=1 +SELECTED_TREENODE=Networks/ETH_Network_Network/no_a2l_demo_Device/Protocol +FIRSTVISIBLE_TREENODE=Networks +TREEEXPAND_COUNT=5 +TREEEXPAND_0=Networks +TREEEXPAND_1=Networks/ETH_Network_Network +TREEEXPAND_2=Networks/ETH_Network_Network/no_a2l_demo_Device +TREEEXPAND_3=Networks/ETH_Network_Network/no_a2l_demo_Device/Protocol +TREEEXPAND_4=Channels +LAST_FOCUSED_LISTCOLUMN=0 +LAST_FOCUSED_LISTINDEX=0 +LAST_TOP_LISTINDEX=0 + +[MEASUREMENT_DISPLAY] +ScreenDPIinSection=96 +POSX=0 +POSX_dpi96=0 +POSY=0 +POSY_dpi96=0 +SIZEX=1165 +SIZEX_dpi96=1165 +SIZEY=600 +SIZEY_dpi96=600 +SHOWTOOLBAR=1 +SHOWSTATUSBAR=1 +SHOWGRID=0 +RIGHTPANE2HEIGHT=148 +RIGHTPANE2HEIGHT_dpi96=148 +TREEX=225 +TREEX_dpi96=225 +TREEY=495 +TREEY_dpi96=495 +ACTIVEPANE=1 +SELECTED_TREENODE=Measurement signals +FIRSTVISIBLE_TREENODE=Measurement options +TREEEXPAND_COUNT=2 +TREEEXPAND_0=Measurement signals +TREEEXPAND_1=Recorder list +LAST_FOCUSED_LISTCOLUMN=0 +LAST_FOCUSED_LISTINDEX=11 +LAST_TOP_LISTINDEX=0 +DAQLISTS=2 +STATUSBAR_BYTES=1 +DIALOGFILEEXTEXPORT=vsf +LABELLISTMEAMODE=0 +LABELLISTBUSSIGNALMODE=0 +TEXT_SEARCH= +VXIIColumnsAdded=0 +SHOWONLYACTIVE=0 + +[MEASUREMENT_DISPLAY_COLUMNLIST_EVENTS] +ScreenDPIinSection=96 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_DISPLAY_COLUMNLIST_EVENTS_CUSTOM] +ScreenDPIinSection=96 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_DISPLAY_COLUMNLIST_EVENTS_KEY] +ScreenDPIinSection=96 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_DISPLAY_COLUMNLIST_EVENTS_SYSTEM] +ScreenDPIinSection=96 +ColumnCount=0 +ColumnIdSort=196608 +SortUpward=1 + +[MEASUREMENT_DISPLAY_COLUMNLIST_EVENTS_SYSTEM_DEVICE] +ScreenDPIinSection=96 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_DISPLAY_COLUMNLIST_KNOWN_DYNAMIC_COLUMNS_NORMAL] +ScreenDPIinSection=96 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 +VERSION=100 + +[MEASUREMENT_DISPLAY_COLUMNLIST_NORMAL] +ScreenDPIinSection=96 +ColumnCount=9 +Column_0=65542, 50 +Column_0_dpi96=65542, 50 +Column_1=29, 44 +Column_1_dpi96=29, 44 +Column_2=34, 48 +Column_2_dpi96=34, 48 +Column_3=31, 222 +Column_3_dpi96=31, 222 +Column_4=65540, 130 +Column_4_dpi96=65540, 130 +Column_5=65541, 60 +Column_5_dpi96=65541, 60 +Column_6=65597, 100 +Column_6_dpi96=65597, 100 +Column_7=98305, 80 +Column_7_dpi96=98305, 80 +Column_8=1, 90 +Column_8_dpi96=1, 90 +ColumnIdSort=65542 +SortUpward=1 +VERSION=100 + +[MEASUREMENT_DISPLAY_COLUMNLIST_RECORDER] +ScreenDPIinSection=96 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 +VERSION=100 + +[MEASUREMENT_DISPLAY_COLUMNLIST_RECORDER_BUSLOGGING] +ScreenDPIinSection=96 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_DISPLAY_COLUMNLIST_RECORDERS] +ScreenDPIinSection=96 +ColumnCount=6 +Column_0=327711, 200 +Column_0_dpi96=327711, 200 +Column_1=327684, 60 +Column_1_dpi96=327684, 60 +Column_2=327709, 150 +Column_2_dpi96=327709, 150 +Column_3=327695, 65 +Column_3_dpi96=327695, 65 +Column_4=327681, 200 +Column_4_dpi96=327681, 200 +Column_5=327683, 200 +Column_5_dpi96=327683, 200 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_DISPLAY_COLUMNLIST_SOUNDS] +ScreenDPIinSection=96 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_DISPLAY_COLUMNLIST_TARA_ACTIVE_SIGNALS] +ScreenDPIinSection=96 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_DISPLAY_COLUMNLIST_TARA_ALL_SIGNALS] +ScreenDPIinSection=96 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_DISPLAY_COLUMNLIST_VIO] +ScreenDPIinSection=96 +ColumnCount=0 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_DISPLAY_DYNAMIC_COLUMNS] +Count=0 + +[COLOR_SCHEME_LIST] +COLOR_SCHEME0=COLOR_SCHEMEUSER_DEFINED +SCHEMES_COUNT=1 +ACTIVE=COLOR_SCHEME_H_CANAPE_CLASSIC +CURRENT_SCHEME_INDEX=0 + +[COLOR_SCHEMEUSER_DEFINED] +IS_USER_DEFINED=1 +SCHEME_NAME=[none] +ColorDisplay1=FF00 -1 8F400 -1 +ColorDisplay2=FF -1 8F4 -1 +ColorDisplay3=FFFF -1 F4F4 -1 +ColorDisplay4=FFFF00 -1 F4F400 -1 +ColorDisplay5=FF00FF -1 F400F4 -1 +ColorDisplay6=80FF -1 80F4 -1 +ColorDisplay7=FF8080 -1 F40000 -1 +ColorDisplay8=FFFFFF -1 0 -1 +ColorDisplay9=AA00 -1 AA00 -1 +ColorDisplay10=CC -1 CC -1 +ColorDisplay11=7070 -1 7070 -1 +ColorDisplay12=FFAA00 -1 FFAA00 -1 +ColorDisplay13=FF00AA -1 FF00AA -1 +ColorDisplay14=55AA -1 55AA -1 +ColorDisplay15=AA5555 -1 AA5555 -1 +ColorDisplay16=AAFFFF -1 AAFFFF -1 +ColorDisplay17=FFAA -1 FFAA -1 +ColorDisplay18=8080FF -1 8080FF -1 +ColorDisplay19=AAAA -1 AAAA -1 +ColorDisplay20=AAAA00 -1 AAAA00 -1 +ColorDisplay21=FFAAFF -1 FFAAFF -1 +ColorDisplay22=AAAAFF -1 AAAAFF -1 +ColorDisplay23=FFAAAA -1 FFAAAA -1 +ColorDisplay24=AAFFAA -1 AAFFAA -1 +ColorMarker1=FFFF00 -1 C6C600 -1 +ColorMarker2=FFFF -1 E1E1 -1 +ColorTrigger=FF00 -1 FF00 -1 +ColorEventAudio=A6620D -1 A6620D -1 +ColorEventMarker=FF -1 E7 -1 +ColorEventOther=FFFFFF -1 BABABA -1 +ColorHitMarker=FF00FF -1 FF00FF -1 +ColorGrid=8000 -1 8000 -1 +ColorBackground=0 -1 FFFFFF -1 +ColorChanged=FF0000 -1 FF0000 -1 +ColorWindowBg=C0C0C0 15 FFFFFF -1 +ColorAxis=FFFFFF -1 0 -1 +ColorAxisBackground=0 -1 FFFFFF -1 +ColorAxisSameScaled=FFFFFF -1 0 -1 +ColorAxisText=0 -1 0 -1 +ColorComments=FFFF00 -1 FFFF00 -1 +ColorCalComments=FFFF00 -1 FFFF00 -1 +ColorLegend=0 15 FFFFFF -1 +ColorLegendText=0 18 0 18 +ColorWindowFrameFocus=606060 -1 CEA27D -1 +ColorWindowFrameButtons=0 -1 0 -1 +ColorHexWinCalRam=8000 -1 8000 -1 +ColorHexWinNotCalRam=FF -1 FF -1 +ColorHexWinDbObject=80FFFF -1 80FFFF -1 +ColorHexWinInvalid=AFAFFF -1 AFAFFF -1 +ColorHexWinInvalidDb=FF -1 FF -1 +ColorHexWinSelection=FF 13 FF 13 +ColorHexWinSelText=0 14 0 14 +ColorWriteText=FFFF00 -1 FFFF00 -1 +ColorValLimitOK=FF00 -1 FF00 -1 +ColorValLimitWarn=FFFF -1 FFFF -1 +ColorValLimitError=FF -1 FF -1 +ColorActiveTitleLeft=54E3 2 54E3 2 +ColorActiveTitleRight=3D95FF 27 3D95FF 27 +ColorActiveTitleText=FFFFFF 9 FFFFFF 9 +ColorInactiveTitleLeft=7A96DF 3 7A96DF 3 +ColorInactiveTitleRight70=7A96DF 28 7A96DF 28 +ColorInactiveTitleText=D8E4F8 19 D8E4F8 19 +ColorMeaCursorTooltip=808080 -1 808080 -1 +ColorMeaCursorTooltipTxt=FFFFFF -1 FFFFFF -1 +ColorDisplayGray=999999 -1 999999 -1 +ColorDisplaySubGrid=4000 -1 4000 -1 +ColorGraphBackground=D2D2D2 -1 EEEEEE -1 +ColorInvalidSignal=F0F0F0 -1 F0F0F0 -1 +ColorLostVariable=C0C0C0 -1 C0C0C0 -1 +ColorMoveFrame=FAD5A3 -1 FAD5A3 -1 +ColorResizeMarkers=646464 -1 646464 -1 +ColorPageBackground=D8C7BC -1 D8C7BC -1 +ColorDisabledLegendText=A0A0A0 17 A0A0A0 17 +ColorBordersHighlight=FFFFFF 20 0 20 +ColorBordersShadow=A0A0A0 16 0 16 +ColorLookupTableX=FF -1 FF -1 +ColorLookupTableY=8000 -1 8000 -1 +ColorLookupTableZ=FF0000 -1 FF0000 -1 +ColorLookupTableZ4=FFFF00 -1 FFFF00 -1 +ColorLookupTableZ5=FF00FF -1 FF00FF -1 +ColorActiveCell=30FFFF -1 30FFFF -1 +ColorActiveCellText=0 -1 0 -1 +ColorMissingValues=FF -1 FF -1 +ColorBackgroundValues=FFFFFF -1 FFFFFF -1 +ColorWorkingPoint=880088 -1 880088 -1 +ColorColumnHeader=F0F0F0 30 F0F0F0 30 +ColorBackgroundMetaData=DADEE1 -1 FFFFFF -1 +ColorStatistic=FFFFFF -1 0 -1 +ColorMarker1CurveMode=F56DF3 -1 944293 -1 +ColorMarker2CurveMode=277FFF -1 2372E6 -1 + +[COMMENT_FIELD_0] +ID="Name" +MAX_LENGTH=32 +MODE=0 +VALUE_COUNT=0 +HISTORY_COUNT=0 + +[COMMENT_FIELD_1] +ID="Division" +MAX_LENGTH=32 +MODE=0 +VALUE_COUNT=0 +HISTORY_COUNT=0 + +[COMMENT_FIELD_2] +ID="Project" +MAX_LENGTH=32 +MODE=0 +VALUE_COUNT=0 +HISTORY_COUNT=0 + +[COMMENT_FIELD_3] +ID="Subject" +MAX_LENGTH=32 +MODE=0 +VALUE_COUNT=0 +HISTORY_COUNT=0 + +[COMMENT_FIELD_4] +ID="Comment" +MAX_LENGTH=-1 +MODE=12 +VALUE_COUNT=0 +HISTORY_COUNT=0 + +[DEVICE_EXPLORER_COLUMNLIST_CHANNELS] +ScreenDPIinSection=192 +ColumnCount=4 +Column_0=0, 306 +Column_0_dpi96=0, 153 +Column_1=1245185, 132 +Column_1_dpi96=1245185, 66 +Column_2=1245186, 66 +Column_2_dpi96=1245186, 33 +Column_3=1245187, 106 +Column_3_dpi96=1245187, 53 +ColumnIdSort=-1 +SortUpward=1 + +[DEVICE_EXPLORER_COLUMNLIST_DEVICES] +ScreenDPIinSection=192 +ColumnCount=10 +Column_0=34, 96 +Column_0_dpi96=34, 48 +Column_1=0, 460 +Column_1_dpi96=0, 230 +Column_2=131078, 160 +Column_2_dpi96=131078, 80 +Column_3=131103, 100 +Column_3_dpi96=131103, 50 +Column_4=131079, 100 +Column_4_dpi96=131079, 50 +Column_5=262145, 240 +Column_5_dpi96=262145, 120 +Column_6=131085, 200 +Column_6_dpi96=131085, 100 +Column_7=131080, 240 +Column_7_dpi96=131080, 120 +Column_8=131081, 160 +Column_8_dpi96=131081, 80 +Column_9=196609, 100 +Column_9_dpi96=196609, 50 +ColumnIdSort=-1 +SortUpward=1 + +[DEVICE_EXPLORER_COLUMNLIST_NETWORKS] +ScreenDPIinSection=192 +ColumnCount=6 +Column_0=34, 64 +Column_0_dpi96=34, 32 +Column_1=0, 304 +Column_1_dpi96=0, 152 +Column_2=983041, 192 +Column_2_dpi96=983041, 96 +Column_3=983042, 530 +Column_3_dpi96=983042, 265 +Column_4=983043, 252 +Column_4_dpi96=983043, 126 +Column_5=983044, 300 +Column_5_dpi96=983044, 150 +ColumnIdSort=-1 +SortUpward=1 + +[MEASUREMENT_0] +FileId=Measurement1 +MeasurementId=0b0e233f-7db0-4a8b-a0a3-839827cddec1 +LoadMeasurementSetting=3 + +[SIGNSELWND_DYNAMIC_COLUMNS] +Count=0 + +[~~~~~_CONSISTENCY_CHECK_END_SECTION_~~~~~] +GUID={9DAA6890-BF7E-488B-BDB6-8C27815EE897} + diff --git a/examples/no_a2l_demo/CANape/CanapeCmd.ini b/examples/no_a2l_demo/CANape/CanapeCmd.ini new file mode 100644 index 00000000..146b2196 --- /dev/null +++ b/examples/no_a2l_demo/CANape/CanapeCmd.ini @@ -0,0 +1,6375 @@ +[GLOBAL] +COMMAND_COUNT=0 +COMMAND_HISTORY=0 +COMMAND_DESCRIPTION=0 +MENU_ICON_WIDTH=32 +MENU_ICON_WIDTH_dpi96=16 +MENU_ICON_HEIGHT=32 +MENU_ICON_HEIGHT_dpi96=16 +COUNT=1273 + +[Command_0] +CmdId=ACTIVEX@FAULTMEMORY.FaultMemoryCtrl.1#ID_POPUP_CLEAR_DTC +VKey=0 +Key=0 + +[Command_1] +CmdId=ACTIVEX@DIAGNOSE.DiagnoseCtrl.1#ID_POPUP_IMPORT +VKey=0 +Key=0 + +[Command_2] +CmdId=ACTIVEX@OBD.OBDCtrl.1#ID_POPUP_OPTIONS +VKey=0 +Key=0 + +[Command_3] +CmdId=ACTIVEX@VARIANTCODING.VariantCodingCtrl.1#ID_POPUP_IMPORT +VKey=0 +Key=0 + +[Command_4] +CmdId=CM_SYMB_EXPL_DS_DECOMPRESS +VKey=0 +Key=0 + +[Command_5] +CmdId=CM_CREATE_AX_WINDOW_20 +VKey=0 +Key=0 + +[Command_6] +CmdId=CM_OPEN_PANEL_WINDOW_CONTAINER_8 +VKey=0 +Key=0 + +[Command_7] +CmdId=CM_CREATE_ADAS_EXPLORER_WINDOW +VKey=0 +Key=0 + +[Command_8] +CmdId=CM_MEASUREMENT_LIVEVIEW_DSP +VKey=0 +Key=0 + +[Command_9] +CmdId=CM_PRINT +VKey=0 +Key=0 + +[Command_10] +CmdId=CM_SYMB_EXPL_AddDsFromDevice +VKey=0 +Key=0 + +[Command_11] +CmdId=CM_MACRO_LICENSENAME +VKey=0 +Key=0 + +[Command_12] +CmdId=CM_DM_LAYOUT_MODIFY_PANE_HIDDEN +VKey=0 +Key=0 + +[Command_13] +CmdId=CM_SymbolExplorer_Search_Value +VKey=0 +Key=0 + +[Command_14] +CmdId=CM_TIME_XLEN_EDIT +VKey=0 +Key=0 + +[Command_15] +CmdId=CM_MDICHILD_4 +VKey=0 +Key=0 + +[Command_16] +CmdId=CM_HELP_DEMOS +VKey=0 +Key=0 + +[Command_17] +CmdId=CM_SETUPWND_DEL_MODULES +VKey=0 +Key=0 + +[Command_18] +CmdId=CM_DropMeasurement +VKey=0 +Key=0 + +[Command_19] +CmdId=CM_RECEIVE_FILE +VKey=0 +Key=0 + +[Command_20] +CmdId=CM_MEASUREMENT_STOP_REC_ALL +VKey=0 +Key=0 + +[Command_21] +CmdId=CM_CREATE_DISP_EL_TEXTBOX +VKey=0 +Key=0 + +[Command_22] +CmdId=CM_DropGeneralMeasurementWnd +VKey=0 +Key=0 + +[Command_23] +CmdId=CM_CONVERTER_IMPORT_1 +VKey=0 +Key=0 + +[Command_24] +CmdId=CM_MARKER10_RIGHT +VKey=27 +Key=39 + +[Command_25] +CmdId=CM_PARAMETERLAST3 +VKey=0 +Key=0 + +[Command_26] +CmdId=CM_CALIBRATION_RAM_FREEZE +VKey=0 +Key=0 + +[Command_27] +CmdId=CM_WRITE_SHOW_TIME +VKey=0 +Key=0 + +[Command_28] +CmdId=CM_SELECT_ALL +VKey=0 +Key=0 + +[Command_29] +CmdId=CM_NEW_DEVICE +VKey=0 +Key=0 + +[Command_30] +CmdId=CM_DEVEXP_APPLY_ALL_CHANGES +VKey=0 +Key=0 + +[Command_31] +CmdId=CM_BAR_HOR_BOTTOM +VKey=0 +Key=0 + +[Command_32] +CmdId=CM_COPY_PAGE +VKey=0 +Key=0 + +[Command_33] +CmdId=CM_CONFIGLAST4 +VKey=0 +Key=0 + +[Command_34] +CmdId=CM_NEW_DEVICE_FROM_PROJECT +VKey=0 +Key=0 + +[Command_35] +CmdId=CM_DS_DEVICE_3 +VKey=0 +Key=0 + +[Command_36] +CmdId=ACTIVEX@CNPTRACE.TraceCtrl.1#ID_REGTEST_CMD_NAV_PREV +VKey=0 +Key=0 + +[Command_37] +CmdId=CM_OMIT_INDEX_IN_TREE +VKey=11 +Key=88 + +[Command_38] +CmdId=CM_LEGEND_SHOW_LIFE_VALUES +VKey=0 +Key=0 + +[Command_39] +CmdId=CM_DE_COMMENT_VERTICAL_TOP +VKey=3 +Key=0 + +[Command_40] +CmdId=CM_SHOW_SELECTED_PARAMETERS_CDMSTUDIO +VKey=0 +Key=0 + +[Command_41] +CmdId=CM_CALIBRATION_UNDO_5 +VKey=0 +Key=0 + +[Command_42] +CmdId=CM_MACRO_USER_DEFINED_FIELD+8 +VKey=0 +Key=0 + +[Command_43] +CmdId=CM_USERMENU18 +VKey=0 +Key=0 + +[Command_44] +CmdId=CM_CALIB_RAM +VKey=0 +Key=0 + +[Command_45] +CmdId=CM_REMOVE_ALLDISP +VKey=0 +Key=0 + +[Command_46] +CmdId=ACTIVEX@MATLAB.MatlabCtrl.50#ID_ZOOM100 +VKey=3 +Key=79 + +[Command_47] +CmdId=CM_SETUP_AXIS_SCALING_PAGE +VKey=3 +Key=0 + +[Command_48] +CmdId=ACTIVEX@FAULTMEMORY.FaultMemoryCtrl.1#ID_POPUP_CYCLIC_UPDATE_OFF +VKey=0 +Key=0 + +[Command_49] +CmdId=ACTIVEX@DIAGNOSE.DiagnoseCtrl.1#ID_POPUP_SHOW_PARAM_TYPE +VKey=0 +Key=0 + +[Command_50] +CmdId=ACTIVEX@OBD.OBDCtrl.1#ID_POPUP_START_NETWORK_SCAN +VKey=0 +Key=0 + +[Command_51] +CmdId=CM_PAGE_END +VKey=3 +Key=35 + +[Command_52] +CmdId=CM_CALIBRATION_DIRECT_2 +VKey=0 +Key=0 + +[Command_53] +CmdId=CM_DM_SAVEANDMERGE +VKey=0 +Key=0 + +[Command_54] +CmdId=CM_COPY_LEGEND_TO_CLIPBOARD +VKey=0 +Key=0 + +[Command_55] +CmdId=CM_CALIBRATION_LOAD_PARAMS +VKey=0 +Key=0 + +[Command_56] +CmdId=CM_MACRO_WRITEWINDOW +VKey=0 +Key=0 + +[Command_57] +CmdId=CM_HEXWIN_EDIT +VKey=11 +Key=69 + +[Command_58] +CmdId=CM_DM_SAVEANDFLASH +VKey=0 +Key=0 + +[Command_59] +CmdId=CM_MEASUREMENT_START_TARA +VKey=0 +Key=0 + +[Command_60] +CmdId=CM_CREATE_AX_WINDOW_1 +VKey=0 +Key=0 + +[Command_61] +CmdId=CM_2DAUS +VKey=0 +Key=0 + +[Command_62] +CmdId=CM_DEZOOM +VKey=3 +Key=68 + +[Command_63] +CmdId=CM_VIEW_WORKINGPOINT_INPUT +VKey=0 +Key=0 + +[Command_64] +CmdId=CM_DM_NEXT_PROCFILE +VKey=0 +Key=0 + +[Command_65] +CmdId=CM_DATAMANAGEMENT +VKey=7 +Key=117 + +[Command_66] +CmdId=CM_MEASUREMENT_STOP_REC_10 +VKey=0 +Key=0 + +[Command_67] +CmdId=CM_ROTATE_VIEW_DOWN +VKey=11 +Key=40 + +[Command_68] +CmdId=CM_OPTIONS_DISPLAY_OTHEREVENT_LINES +VKey=0 +Key=0 + +[Command_69] +CmdId=CM_CALIBRATION_ONLINE_5 +VKey=0 +Key=0 + +[Command_70] +CmdId=CM_ACTIVITY_DISPLAY +VKey=3 +Key=65 + +[Command_71] +CmdId=CM_MEASUREMENT_START_REC_1 +VKey=0 +Key=0 + +[Command_72] +CmdId=CM_DropMatlabWnd +VKey=0 +Key=0 + +[Command_73] +CmdId=CM_CONVERTER_EXPORT_9 +VKey=0 +Key=0 + +[Command_74] +CmdId=CM_LEGEND_NAME +VKey=0 +Key=0 + +[Command_75] +CmdId=CM_PROJECTLAST4 +VKey=0 +Key=0 + +[Command_76] +CmdId=CM_PAGE_6 +VKey=19 +Key=54 + +[Command_77] +CmdId=CM_EXTEND_DOWN +VKey=7 +Key=40 + +[Command_78] +CmdId=CM_ShowSnapshotModified +VKey=0 +Key=0 + +[Command_79] +CmdId=CM_FILESIGNALLISTDLG_EDIT +VKey=19 +Key=13 + +[Command_80] +CmdId=CM_SHIFT_RIGHT_TEXT +VKey=3 +Key=39 + +[Command_81] +CmdId=CM_DE_COMMENT_CENTER +VKey=3 +Key=0 + +[Command_82] +CmdId=CM_DropNumberWnd +VKey=0 +Key=0 + +[Command_83] +CmdId=CM_USERMENU28 +VKey=0 +Key=0 + +[Command_84] +CmdId=CM_OPEN_LOGGER_CONFIG +VKey=0 +Key=0 + +[Command_85] +CmdId=CM_CALIB_RAM_9 +VKey=0 +Key=0 + +[Command_86] +CmdId=ACTIVEX@DIAGNOSE.DiagnoseCtrl.1#ID_POPUP_OPEN_TESTER_PRESENT_OFF +VKey=0 +Key=0 + +[Command_87] +CmdId=ACTIVEX@CNPTRACE.TraceCtrl.1#ID_HIDE_FADED_EVENTS +VKey=17 +Key=0 + +[Command_88] +CmdId=CM_SEARCH_VALUE +VKey=0 +Key=0 + +[Command_89] +CmdId=CM_DEFAULT_COLUMNS +VKey=0 +Key=0 + +[Command_90] +CmdId=CM_CALIBRATION_UPDATE +VKey=3 +Key=122 + +[Command_91] +CmdId=CM_FLIP_X_AXIS_VALUES +VKey=0 +Key=0 + +[Command_92] +CmdId=CM_MACRO_WEEKOFYEAR +VKey=0 +Key=0 + +[Command_93] +CmdId=CM_DIAGNOSE +VKey=0 +Key=0 + +[Command_94] +CmdId=CM_CALIB_ONLINE_4 +VKey=0 +Key=0 + +[Command_95] +CmdId=CM_DropCnaAdd +VKey=0 +Key=0 + +[Command_96] +CmdId=CM_CAL_METHOD_TOGGLE_CALIBRATEABLE +VKey=0 +Key=0 + +[Command_97] +CmdId=CM_MEASUREMENT_FIRE_TRIGGER +VKey=3 +Key=0 + +[Command_98] +CmdId=CM_PROJ_CHANGE_ACCEPT_1 +VKey=0 +Key=0 + +[Command_99] +CmdId=CM_CREATE_AX_WINDOW_11 +VKey=0 +Key=0 + +[Command_100] +CmdId=CM_DockBar_DockedHide +VKey=0 +Key=0 + +[Command_101] +CmdId=CM_SYMB_EXPL_SAVE_RESTORED_MDF_FILE +VKey=0 +Key=0 + +[Command_102] +CmdId=CM_MODE_XY +VKey=3 +Key=90 + +[Command_103] +CmdId=CM_SETUPWND_HIDE_ALL_COMMENTS +VKey=0 +Key=0 + +[Command_104] +CmdId=CM_SYMB_EXPL_OPEN_MDF_ATTACHMENT +VKey=0 +Key=0 + +[Command_105] +CmdId=CM_MACRO_PAGE_NUMBER +VKey=0 +Key=0 + +[Command_106] +CmdId=CM_FORMAT_BIN +VKey=11 +Key=66 + +[Command_107] +CmdId=CM_CALHISTORY_SNAPSHOT_NR2 +VKey=0 +Key=0 + +[Command_108] +CmdId=CM_NEW_VIRT_MATLAB_BASED_CHANNEL +VKey=0 +Key=0 + +[Command_109] +CmdId=CM_EXPORT_PDF +VKey=0 +Key=0 + +[Command_110] +CmdId=CM_CREATE_VAL_WINDOW +VKey=0 +Key=0 + +[Command_111] +CmdId=CM_NEW_STIMULATION_SIGNAL +VKey=0 +Key=0 + +[Command_112] +CmdId=CM_PLAY_PAUSE +VKey=0 +Key=0 + +[Command_113] +CmdId=CM_DropParameter +VKey=0 +Key=0 + +[Command_114] +CmdId=CM_ALIGNMENT_RIGHT +VKey=0 +Key=0 + +[Command_115] +CmdId=CM_MEASUREMENT_START_REC_11 +VKey=0 +Key=0 + +[Command_116] +CmdId=CM_MEA_DATA_FILTER_ENABLE_ALL +VKey=0 +Key=0 + +[Command_117] +CmdId=CM_DropPanelWnd +VKey=0 +Key=0 + +[Command_118] +CmdId=CM_LEGEND_LN_SCALING +VKey=0 +Key=0 + +[Command_119] +CmdId=CM_CALIBRATION_RAM_3 +VKey=0 +Key=0 + +[Command_120] +CmdId=CM_COMMON_AXIS_SET_6 +VKey=0 +Key=0 + +[Command_121] +CmdId=CM_LEGEND_FOCUS_NEXT +VKey=0 +Key=0 + +[Command_122] +CmdId=CM_BROWSER_GO_FORWARD +VKey=19 +Key=39 + +[Command_123] +CmdId=CM_MEASURELAST4 +VKey=0 +Key=0 + +[Command_124] +CmdId=CM_SORT_BY_ADDRESS +VKey=0 +Key=0 + +[Command_125] +CmdId=CM_HEXWIN_CHECKSUM +VKey=0 +Key=0 + +[Command_126] +CmdId=CM_CONVERTER_SETUP_10 +VKey=0 +Key=0 + +[Command_127] +CmdId=CM_SETUPWND_DATABASE_EDIT +VKey=0 +Key=0 + +[Command_128] +CmdId=CM_DELETE_SIGNAL +VKey=0 +Key=0 + +[Command_129] +CmdId=CM_FLOATING_WINDOW +VKey=0 +Key=0 + +[Command_130] +CmdId=CM_DropDataWnd +VKey=0 +Key=0 + +[Command_131] +CmdId=CM_ASAP3 +VKey=0 +Key=0 + +[Command_132] +CmdId=CM_CALIB_FLASH_7 +VKey=0 +Key=0 + +[Command_133] +CmdId=ACTIVEX@MATLAB.MatlabCtrl.50#ID_RESET_DISPLAY_VALUES +VKey=3 +Key=82 + +[Command_134] +CmdId=CM_CLOSEWINDOW +VKey=0 +Key=0 + +[Command_135] +CmdId=ACTIVEX@CNPTRACE.TraceCtrl.1#ID_VIEW_GLOBAL_HIGHLIGHTING +VKey=4 +Key=0 + +[Command_136] +CmdId=CM_ENABLE_XOFFSET_MODE +VKey=0 +Key=0 + +[Command_137] +CmdId=CM_CALIBRATION_ACTIVE_6 +VKey=0 +Key=0 + +[Command_138] +CmdId=CM_CALIBRATION_UPDATE_9 +VKey=0 +Key=0 + +[Command_139] +CmdId=CM_MACRO_INI+9 +VKey=0 +Key=0 + +[Command_140] +CmdId=CM_USERMENU9 +VKey=0 +Key=0 + +[Command_141] +CmdId=CM_CALIB_OFFLINE_2 +VKey=0 +Key=0 + +[Command_142] +CmdId=CM_AXIS_TEMPLATE_NEW +VKey=3 +Key=0 + +[Command_143] +CmdId=ACTIVEX@FAULTMEMORY.FaultMemoryCtrl.1#ID_POPUP_CLEAR_ALL_DTC +VKey=0 +Key=0 + +[Command_144] +CmdId=ACTIVEX@DIAGNOSE.DiagnoseCtrl.1#ID_POPUP_CLEAR +VKey=0 +Key=0 + +[Command_145] +CmdId=ACTIVEX@OBD.OBDCtrl.1#ID_POPUP_IMPORT +VKey=0 +Key=0 + +[Command_146] +CmdId=ACTIVEX@VARIANTCODING.VariantCodingCtrl.1#ID_POPUP_OPTIONS +VKey=0 +Key=0 + +[Command_147] +CmdId=CM_DEZOOMX +VKey=0 +Key=0 + +[Command_148] +CmdId=CM_CREATE_AX_WINDOW_21 +VKey=0 +Key=0 + +[Command_149] +CmdId=CM_OPEN_PANEL_WINDOW_CONTAINER_9 +VKey=0 +Key=0 + +[Command_150] +CmdId=CM_CREATE_GENERAL_PARA_WINDOW +VKey=0 +Key=0 + +[Command_151] +CmdId=CM_PRINTERSETUP +VKey=0 +Key=0 + +[Command_152] +CmdId=CM_SYMB_EXPL_ECDM +VKey=0 +Key=0 + +[Command_153] +CmdId=CM_MACRO_LICENSENO +VKey=0 +Key=0 + +[Command_154] +CmdId=CM_DM_LAYOUT_MODIFY_PANE_LEFT +VKey=0 +Key=0 + +[Command_155] +CmdId=CM_SymbolExplorer_Configure +VKey=7 +Key=115 + +[Command_156] +CmdId=CM_ZOOM_IN +VKey=0 +Key=0 + +[Command_157] +CmdId=CM_MDICHILD_5 +VKey=0 +Key=0 + +[Command_158] +CmdId=CM_NEXT_BOOKMARK +VKey=15 +Key=78 + +[Command_159] +CmdId=CM_SEND_FILE +VKey=0 +Key=0 + +[Command_160] +CmdId=CM_MEASUREMENT_STOP_REC_1 +VKey=0 +Key=0 + +[Command_161] +CmdId=CM_CREATE_DISP_EL_GRAPHIC +VKey=0 +Key=0 + +[Command_162] +CmdId=CM_CONVERTER_IMPORT_2 +VKey=0 +Key=0 + +[Command_163] +CmdId=CM_MARKER20_LEFT +VKey=23 +Key=37 + +[Command_164] +CmdId=CM_PARAMETERLAST4 +VKey=0 +Key=0 + +[Command_165] +CmdId=CM_WRITE_CLEAR_START +VKey=0 +Key=0 + +[Command_166] +CmdId=CM_CUSTOMIZE +VKey=0 +Key=0 + +[Command_167] +CmdId=ACTIVEX@MATLAB.MatlabCtrl.50#ID_CHANGE_FOCUS_EXPLORER_PATH +VKey=11 +Key=9 + +[Command_168] +CmdId=CM_DEVEXP_REVERT_ALL_CHANGES +VKey=0 +Key=0 + +[Command_169] +CmdId=CM_BAR_VER_ZERO +VKey=0 +Key=0 + +[Command_170] +CmdId=CM_PREVIEW_MODE +VKey=0 +Key=0 + +[Command_171] +CmdId=CM_CONFIGLAST5 +VKey=0 +Key=0 + +[Command_172] +CmdId=CM_CALIBRATION_UNDO_PARAM +VKey=0 +Key=0 + +[Command_173] +CmdId=CM_DS_DEVICE_4 +VKey=0 +Key=0 + +[Command_174] +CmdId=ACTIVEX@CNPTRACE.TraceCtrl.1#ID_REGTEST_CMD_NAV_NEXT +VKey=0 +Key=0 + +[Command_175] +CmdId=CM_CALIBRATION_SAVE_PARAMSBIN +VKey=0 +Key=0 + +[Command_176] +CmdId=CM_DE_COMMENT_VERTICAL_MIDDLE +VKey=3 +Key=0 + +[Command_177] +CmdId=CM_SHOW_SELECTED_PARAMETER_CDMSTUDIO +VKey=0 +Key=0 + +[Command_178] +CmdId=CM_CALIBRATION_UNDO_6 +VKey=0 +Key=0 + +[Command_179] +CmdId=CM_MACRO_USER_DEFINED_FIELD+9 +VKey=0 +Key=0 + +[Command_180] +CmdId=CM_USERMENU19 +VKey=0 +Key=0 + +[Command_181] +CmdId=CM_CALIB_RAM_0 +VKey=0 +Key=0 + +[Command_182] +CmdId=CM_DELETE_SELSIG +VKey=0 +Key=0 + +[Command_183] +CmdId=ACTIVEX@MATLAB.MatlabCtrl.50#ID_ZOOMFIT +VKey=3 +Key=70 + +[Command_184] +CmdId=CM_OPEN_LOGGER_PROJECT +VKey=0 +Key=0 + +[Command_185] +CmdId=ACTIVEX@FAULTMEMORY.FaultMemoryCtrl.1#ID_POPUP_DTC_LOGGING_ON +VKey=0 +Key=0 + +[Command_186] +CmdId=ACTIVEX@DIAGNOSE.DiagnoseCtrl.1#ID_POPUP_SELECTALL +VKey=9 +Key=65 + +[Command_187] +CmdId=ACTIVEX@OBD.OBDCtrl.1#ID_POPUP_CREATE_REPORT +VKey=0 +Key=0 + +[Command_188] +CmdId=CM_PAGE_LEFT +VKey=19 +Key=37 + +[Command_189] +CmdId=CM_CALIBRATION_DIRECT_3 +VKey=0 +Key=0 + +[Command_190] +CmdId=CM_CALIBRATION_SAVE_PARAMS +VKey=0 +Key=0 + +[Command_191] +CmdId=CM_MACRO_CONFIGURATION +VKey=0 +Key=0 + +[Command_192] +CmdId=CM_HEXWIN_GOTO_ADDRESS +VKey=0 +Key=0 + +[Command_193] +CmdId=CM_CREATE_AX_WINDOW_2 +VKey=0 +Key=0 + +[Command_194] +CmdId=CM_SYMB_EXPL_SELECT_MM_FILE +VKey=0 +Key=0 + +[Command_195] +CmdId=CM_SAVE_WINDOW_DEFAULT +VKey=0 +Key=0 + +[Command_196] +CmdId=CM_NEW_EXISTING_VIRTUAL +VKey=0 +Key=0 + +[Command_197] +CmdId=CM_FLASH_ODX +VKey=0 +Key=0 + +[Command_198] +CmdId=CM_DM_PREV_PROCFILE +VKey=0 +Key=0 + +[Command_199] +CmdId=CM_MEASUREMENT_STOP_REC_11 +VKey=0 +Key=0 + +[Command_200] +CmdId=CM_MACRO_USER +VKey=0 +Key=0 + +[Command_201] +CmdId=CM_ROTATE_VIEW_UP +VKey=11 +Key=38 + +[Command_202] +CmdId=CM_MEASUREMENT_START +VKey=3 +Key=120 + +[Command_203] +CmdId=CM_DE_OPEN_EDITOR +VKey=3 +Key=0 + +[Command_204] +CmdId=CM_CALIBRATION_ONLINE_6 +VKey=0 +Key=0 + +[Command_205] +CmdId=CM_MEASUREMENT_START_REC_2 +VKey=0 +Key=0 + +[Command_206] +CmdId=CM_CONVERTER_EXPORT_10 +VKey=0 +Key=0 + +[Command_207] +CmdId=CM_LEGEND_FULL +VKey=0 +Key=0 + +[Command_208] +CmdId=CM_PRINT_COMPONENT_WINDOW +VKey=0 +Key=0 + +[Command_209] +CmdId=CM_PROJECTLAST5 +VKey=0 +Key=0 + +[Command_210] +CmdId=CM_DropGroupCalWnd +VKey=0 +Key=0 + +[Command_211] +CmdId=CM_PAGE_7 +VKey=19 +Key=55 + +[Command_212] +CmdId=CM_EXTEND_HOME +VKey=7 +Key=36 + +[Command_213] +CmdId=CM_ShowSnapshotModifiedUpTo +VKey=0 +Key=0 + +[Command_214] +CmdId=CM_CONVERTER_SETUP_1 +VKey=0 +Key=0 + +[Command_215] +CmdId=CM_FILESIGNALLISTDLG_FILEID +VKey=0 +Key=0 + +[Command_216] +CmdId=CM_SHIFT_UP_TEXT +VKey=3 +Key=38 + +[Command_217] +CmdId=CM_DE_PROPERTIES +VKey=3 +Key=0 + +[Command_218] +CmdId=CM_SYMB_EXPL_DownloadDsIntoFlash +VKey=0 +Key=0 + +[Command_219] +CmdId=CM_HEXWIN_SHOW_HEX +VKey=0 +Key=0 + +[Command_220] +CmdId=CM_USERMENU29 +VKey=0 +Key=0 + +[Command_221] +CmdId=CM_SHOW_LEGEND +VKey=0 +Key=0 + +[Command_222] +CmdId=ACTIVEX@DIAGNOSE.DiagnoseCtrl.1#ID_POPUP_VSG_VIEW +VKey=0 +Key=0 + +[Command_223] +CmdId=ACTIVEX@CNPTRACE.TraceCtrl.1#ID_PAUSE_RESUME +VKey=17 +Key=0 + +[Command_224] +CmdId=CM_MARKER1_UP +VKey=11 +Key=38 + +[Command_225] +CmdId=CM_CALIBRATION_UPDATE_0 +VKey=0 +Key=0 + +[Command_226] +CmdId=CM_FLIP_Y_AXIS_VALUES +VKey=0 +Key=0 + +[Command_227] +CmdId=CM_MACRO_INI +VKey=0 +Key=0 + +[Command_228] +CmdId=CM_EXECUTE_SCRIPT +VKey=0 +Key=0 + +[Command_229] +CmdId=CM_CALIB_ONLINE_5 +VKey=0 +Key=0 + +[Command_230] +CmdId=CM_DropCnaLoadPartial +VKey=0 +Key=0 + +[Command_231] +CmdId=CM_ROUND +VKey=3 +Key=82 + +[Command_232] +CmdId=CM_PROJ_CHANGE_ACCEPT_2 +VKey=0 +Key=0 + +[Command_233] +CmdId=CM_CREATE_AX_WINDOW_12 +VKey=0 +Key=0 + +[Command_234] +CmdId=CM_OPEN_PANEL_WINDOW_CONTAINER_0 +VKey=0 +Key=0 + +[Command_235] +CmdId=CM_DockBar_DockedShow +VKey=0 +Key=0 + +[Command_236] +CmdId=CM_CREATE_ADAS_SCENE_WINDOW +VKey=0 +Key=0 + +[Command_237] +CmdId=CM_FILESIGNALLISTDLG_OFFLINE_DSP +VKey=0 +Key=0 + +[Command_238] +CmdId=CM_MODE_O +VKey=3 +Key=79 + +[Command_239] +CmdId=CM_CREATE_STATECHART_WINDOW +VKey=0 +Key=0 + +[Command_240] +CmdId=CM_SYMB_EXPL_SAVE_MDF_ATTACHMENT +VKey=0 +Key=0 + +[Command_241] +CmdId=CM_MACRO_DATE +VKey=0 +Key=0 + +[Command_242] +CmdId=CM_CALHISTORY_SNAPSHOT_NR3 +VKey=0 +Key=0 + +[Command_243] +CmdId=CM_NEW_VIRT_ALGEBRAIC_BASED_CHANNEL +VKey=0 +Key=0 + +[Command_244] +CmdId=CM_SymbolExplorer_Search +VKey=0 +Key=0 + +[Command_245] +CmdId=CM_CONFIGURE_PDF +VKey=0 +Key=0 + +[Command_246] +CmdId=CM_PLAY_END +VKey=7 +Key=176 + +[Command_247] +CmdId=CM_ALIGNMENT_DOT +VKey=3 +Key=68 + +[Command_248] +CmdId=CM_MEASUREMENT_START_REC_12 +VKey=0 +Key=0 + +[Command_249] +CmdId=CM_MEA_DATA_FILTER_REMOVE_ALL +VKey=0 +Key=0 + +[Command_250] +CmdId=CM_LEGEND_LN_VALUE +VKey=0 +Key=0 + +[Command_251] +CmdId=CM_CALIBRATION_RAM_4 +VKey=0 +Key=0 + +[Command_252] +CmdId=CM_COMMON_AXIS_SET_7 +VKey=0 +Key=0 + +[Command_253] +CmdId=CM_LEGEND_SELECT +VKey=11 +Key=32 + +[Command_254] +CmdId=CM_MEASURELAST5 +VKey=0 +Key=0 + +[Command_255] +CmdId=CM_SHIFT_LEFT_HEX +VKey=3 +Key=37 + +[Command_256] +CmdId=CM_DEVEXP_NEW_FLX_NETWORK +VKey=0 +Key=0 + +[Command_257] +CmdId=CM_PREVIEW_MODE_ALL_PAGES +VKey=0 +Key=0 + +[Command_258] +CmdId=CM_TOGGLE_YAXIS_NEXT +VKey=3 +Key=86 + +[Command_259] +CmdId=CM_CALIB_FLASH_8 +VKey=0 +Key=0 + +[Command_260] +CmdId=ACTIVEX@CNPTRACE.TraceCtrl.1#ID_REGTEST_CMD_PAGEUP +VKey=0 +Key=0 + +[Command_261] +CmdId=CM_DISABLE_XOFFSET_MODE +VKey=0 +Key=0 + +[Command_262] +CmdId=CM_CALIBRATION_ACTIVE_7 +VKey=0 +Key=0 + +[Command_263] +CmdId=CM_CALIBRATION_UPDATE_EXT +VKey=0 +Key=0 + +[Command_264] +CmdId=CM_MACRO_USER_DEFINED_FIELD +VKey=0 +Key=0 + +[Command_265] +CmdId=CM_USERMENU10 +VKey=0 +Key=0 + +[Command_266] +CmdId=CM_CALIB_OFFLINE_3 +VKey=0 +Key=0 + +[Command_267] +CmdId=CM_AXIS_TEMPLATE_0 +VKey=3 +Key=0 + +[Command_268] +CmdId=ACTIVEX@FAULTMEMORY.FaultMemoryCtrl.1#ID_POPUP_REFRESH +VKey=0 +Key=0 + +[Command_269] +CmdId=ACTIVEX@DIAGNOSE.DiagnoseCtrl.1#ID_POPUP_START_RECORD +VKey=0 +Key=0 + +[Command_270] +CmdId=ACTIVEX@OBD.OBDCtrl.1#ID_POPUP_UNCHECK_ALL_PIDS +VKey=0 +Key=0 + +[Command_271] +CmdId=ACTIVEX@VARIANTCODING.VariantCodingCtrl.1#ID_POPUP_OPEN_CONFIGURATION +VKey=0 +Key=0 + +[Command_272] +CmdId=CM_ENZOOMX +VKey=0 +Key=0 + +[Command_273] +CmdId=CM_CREATE_AX_WINDOW_22 +VKey=0 +Key=0 + +[Command_274] +CmdId=CM_HELP_ABOUT +VKey=0 +Key=0 + +[Command_275] +CmdId=CM_SYMB_EXPL_CheckDatasetsFolder +VKey=0 +Key=0 + +[Command_276] +CmdId=CM_MACRO_SIGNAL +VKey=0 +Key=0 + +[Command_277] +CmdId=CM_DM_LOADANDFLASH +VKey=0 +Key=0 + +[Command_278] +CmdId=CM_DM_LAYOUT_MODIFY_PANE_RIGHT +VKey=0 +Key=0 + +[Command_279] +CmdId=CM_SymbolExplorer_Close +VKey=0 +Key=0 + +[Command_280] +CmdId=CM_ZOOM_OUT +VKey=0 +Key=0 + +[Command_281] +CmdId=CM_MDICHILD_6 +VKey=0 +Key=0 + +[Command_282] +CmdId=CM_MEASURE_POINT +VKey=3 +Key=190 + +[Command_283] +CmdId=CM_PREV_BOOKMARK +VKey=15 +Key=80 + +[Command_284] +CmdId=CM_MEASUREMENT_SAVE +VKey=0 +Key=0 + +[Command_285] +CmdId=CM_MEASUREMENT_STOP_REC_2 +VKey=0 +Key=0 + +[Command_286] +CmdId=CM_CREATE_DISP_EL_LABEL +VKey=0 +Key=0 + +[Command_287] +CmdId=CM_DropADASVideoWnd +VKey=0 +Key=0 + +[Command_288] +CmdId=CM_CONVERTER_IMPORT_3 +VKey=0 +Key=0 + +[Command_289] +CmdId=CM_F12 +VKey=3 +Key=123 + +[Command_290] +CmdId=CM_MARKER20_RIGHT +VKey=23 +Key=39 + +[Command_291] +CmdId=CM_PARAMETERLAST5 +VKey=0 +Key=0 + +[Command_292] +CmdId=CM_CREATE_SET_WINDOW +VKey=0 +Key=0 + +[Command_293] +CmdId=CM_CALIBRATION_INITSELECTOR +VKey=0 +Key=0 + +[Command_294] +CmdId=CM_CONVERTER_EXPORT_1 +VKey=0 +Key=0 + +[Command_295] +CmdId=CM_MODULELIST +VKey=0 +Key=0 + +[Command_296] +CmdId=CM_BAR_HOR_ZERO +VKey=0 +Key=0 + +[Command_297] +CmdId=CM_PDF_FOR_CURRENT_PAGE +VKey=0 +Key=0 + +[Command_298] +CmdId=CM_CONFIGLAST6 +VKey=0 +Key=0 + +[Command_299] +CmdId=CM_PAGE +VKey=0 +Key=0 + +[Command_300] +CmdId=CM_MARKER_BOTH1_LEFT +VKey=15 +Key=37 + +[Command_301] +CmdId=CM_DS_DEVICE_5 +VKey=0 +Key=0 + +[Command_302] +CmdId=CM_FIT_COLUMNS +VKey=0 +Key=0 + +[Command_303] +CmdId=ACTIVEX@CNPTRACE.TraceCtrl.1#ID_REGTEST_CMD_EXPAND_ALL +VKey=0 +Key=0 + +[Command_304] +CmdId=CM_TABLE_VIEW +VKey=11 +Key=84 + +[Command_305] +CmdId=CM_CREATE_DATA_WINDOW +VKey=0 +Key=0 + +[Command_306] +CmdId=CM_DE_COMMENT_VERTICAL_BOTTOM +VKey=3 +Key=0 + +[Command_307] +CmdId=CM_COMPARE_MDF +VKey=0 +Key=0 + +[Command_308] +CmdId=CM_CALIBRATION_UNDO_7 +VKey=0 +Key=0 + +[Command_309] +CmdId=CM_USERMENU20 +VKey=0 +Key=0 + +[Command_310] +CmdId=CM_CALIB_RAM_1 +VKey=0 +Key=0 + +[Command_311] +CmdId=CM_DELETE_ALLSIG +VKey=0 +Key=0 + +[Command_312] +CmdId=ACTIVEX@FAULTMEMORY.FaultMemoryCtrl.1#ID_POPUP_DTC_LOGGING_OFF +VKey=0 +Key=0 + +[Command_313] +CmdId=ACTIVEX@DIAGNOSE.DiagnoseCtrl.1#ID_POPUP_UPDATE_PARAMS +VKey=9 +Key=73 + +[Command_314] +CmdId=CM_PAGE_RIGHT +VKey=19 +Key=39 + +[Command_315] +CmdId=CM_CALIBRATION_DIRECT_4 +VKey=0 +Key=0 + +[Command_316] +CmdId=CM_MACRO_DAYOFWEEKSTR +VKey=0 +Key=0 + +[Command_317] +CmdId=CM_SHOW_MEA_STRING_AS_TEXT +VKey=15 +Key=67 + +[Command_318] +CmdId=CM_MACRO_DAYOFWEEK +VKey=0 +Key=0 + +[Command_319] +CmdId=CM_HEXWIN_GOTO_OBJECT +VKey=0 +Key=0 + +[Command_320] +CmdId=CM_CREATE_AX_WINDOW_3 +VKey=0 +Key=0 + +[Command_321] +CmdId=CM_XGRID +VKey=0 +Key=0 + +[Command_322] +CmdId=CM_SYMB_EXPL_MDF_EXPORT_FILE +VKey=0 +Key=0 + +[Command_323] +CmdId=CM_TIME_FIT +VKey=7 +Key=84 + +[Command_324] +CmdId=CM_MODULE_SETTINGS +VKey=0 +Key=0 + +[Command_325] +CmdId=CM_SYMB_EXPL_CAL_FILE_OPEN +VKey=0 +Key=0 + +[Command_326] +CmdId=CM_PAGE_PRINT_VIEW +VKey=0 +Key=0 + +[Command_327] +CmdId=CM_MEASUREMENT_STOP_REC_12 +VKey=0 +Key=0 + +[Command_328] +CmdId=CM_MACRO_CONFIGDIR +VKey=0 +Key=0 + +[Command_329] +CmdId=CM_UNZOOM_VIEW +VKey=11 +Key=189 + +[Command_330] +CmdId=CM_MEASUREMENT_STOP +VKey=3 +Key=27 + +[Command_331] +CmdId=CM_CALIBRATION_ONLINE_7 +VKey=0 +Key=0 + +[Command_332] +CmdId=CM_FIT_TRIGGER +VKey=0 +Key=0 + +[Command_333] +CmdId=CM_MEASUREMENT_START_REC_3 +VKey=0 +Key=0 + +[Command_334] +CmdId=CM_DropMultimediaWnd +VKey=0 +Key=0 + +[Command_335] +CmdId=CM_GOTO_WP +VKey=3 +Key=87 + +[Command_336] +CmdId=CM_COMMON_AXIS_NEW +VKey=0 +Key=0 + +[Command_337] +CmdId=CM_EXPORT_COMPONENT_WINDOW +VKey=0 +Key=0 + +[Command_338] +CmdId=CM_PROJECTLAST6 +VKey=0 +Key=0 + +[Command_339] +CmdId=CM_PAGE_8 +VKey=19 +Key=56 + +[Command_340] +CmdId=CM_EXTEND_END +VKey=7 +Key=35 + +[Command_341] +CmdId=CM_ShowSnapshotComplete +VKey=0 +Key=0 + +[Command_342] +CmdId=CM_CONVERTER_SETUP_2 +VKey=0 +Key=0 + +[Command_343] +CmdId=CM_FILESIGNALLISTDLG_HELP +VKey=0 +Key=0 + +[Command_344] +CmdId=CM_SHIFT_DOWN_TEXT +VKey=3 +Key=40 + +[Command_345] +CmdId=CM_DE_MOVE_FRONT +VKey=3 +Key=0 + +[Command_346] +CmdId=CM_MDF_REPLACEFILE +VKey=0 +Key=0 + +[Command_347] +CmdId=CM_DropTextWnd +VKey=0 +Key=0 + +[Command_348] +CmdId=CM_USERMENU30 +VKey=0 +Key=0 + +[Command_349] +CmdId=CM_TXT_FIT_LEGEND +VKey=0 +Key=0 + +[Command_350] +CmdId=CM_CALIB_FLASH +VKey=0 +Key=0 + +[Command_351] +CmdId=CM_ENABLE_EVENT_COMPARE +VKey=0 +Key=0 + +[Command_352] +CmdId=ACTIVEX@DIAGNOSE.DiagnoseCtrl.1#ID_POPUP_CLASS_VIEW +VKey=0 +Key=0 + +[Command_353] +CmdId=ACTIVEX@CNPTRACE.TraceCtrl.1#ID_TOGGLE_TIME_MODE +VKey=17 +Key=0 + +[Command_354] +CmdId=CM_MARKER1_DOWN +VKey=11 +Key=40 + +[Command_355] +CmdId=CM_CALIBRATION_ACTIVE_ALL +VKey=0 +Key=0 + +[Command_356] +CmdId=CM_CALIBRATION_UPDATE_1 +VKey=0 +Key=0 + +[Command_357] +CmdId=CM_MACRO_INI+1 +VKey=0 +Key=0 + +[Command_358] +CmdId=CM_USERMENU1 +VKey=0 +Key=0 + +[Command_359] +CmdId=CM_CALIB_ONLINE_6 +VKey=0 +Key=0 + +[Command_360] +CmdId=CM_CREATE_AX_WINDOW_24 +VKey=0 +Key=0 + +[Command_361] +CmdId=CM_SYMB_EXPL_ALL_OFFSET_ADJUSTMENT +VKey=0 +Key=0 + +[Command_362] +CmdId=CM_VERMODE +VKey=0 +Key=0 + +[Command_363] +CmdId=CM_PROJ_CHANGE_ACCEPT_3 +VKey=0 +Key=0 + +[Command_364] +CmdId=CM_DEVICE_DATASET_ADMIN_ON +VKey=0 +Key=0 + +[Command_365] +CmdId=CM_CREATE_AX_WINDOW_13 +VKey=0 +Key=0 + +[Command_366] +CmdId=CM_OPEN_PANEL_WINDOW_CONTAINER_1 +VKey=0 +Key=0 + +[Command_367] +CmdId=CM_CREATE_ADAS_VIDEO_WINDOW +VKey=0 +Key=0 + +[Command_368] +CmdId=CM_FILESIGNALLISTDLG_ONLINE_DSP +VKey=0 +Key=0 + +[Command_369] +CmdId=CM_MODE_A +VKey=3 +Key=65 + +[Command_370] +CmdId=CM_WRITE_COPY_WITH_TITLES +VKey=0 +Key=0 + +[Command_371] +CmdId=CM_SYMB_EXPL_OPEN_FOLDER_MDF_ATTACHMENT +VKey=0 +Key=0 + +[Command_372] +CmdId=CM_MACRO_TIME +VKey=0 +Key=0 + +[Command_373] +CmdId=CM_CALHISTORY_SNAPSHOT_NR4 +VKey=0 +Key=0 + +[Command_374] +CmdId=CM_LEGEND_LN_VAL4 +VKey=0 +Key=0 + +[Command_375] +CmdId=CM_CREATE_CAL_WINDOW +VKey=0 +Key=0 + +[Command_376] +CmdId=CM_SETUPWND_SHOW_ALL_COMMENTS +VKey=0 +Key=0 + +[Command_377] +CmdId=CM_LEGEND_SELECT_ALL +VKey=11 +Key=65 + +[Command_378] +CmdId=CM_MEASUREMENT_START_REC_13 +VKey=0 +Key=0 + +[Command_379] +CmdId=CM_DropDiagnosticWnd +VKey=0 +Key=0 + +[Command_380] +CmdId=CM_LEGEND_LN_MINMAX +VKey=0 +Key=0 + +[Command_381] +CmdId=CM_CALIBRATION_RAM_5 +VKey=0 +Key=0 + +[Command_382] +CmdId=CM_COMMON_AXIS_SET_8 +VKey=0 +Key=0 + +[Command_383] +CmdId=CM_CREATE_DIG_WINDOW +VKey=0 +Key=0 + +[Command_384] +CmdId=CM_SYMB_EXPL_REPLACE_MEASUREMENT +VKey=0 +Key=0 + +[Command_385] +CmdId=CM_MEASURELAST6 +VKey=0 +Key=0 + +[Command_386] +CmdId=CM_SHIFT_TO_BOTTOM +VKey=11 +Key=40 + +[Command_387] +CmdId=CM_SYMB_EXPL_SETUPWND_MODULE_SETTINGS +VKey=0 +Key=0 + +[Command_388] +CmdId=CM_SHIFT_RIGHT_HEX +VKey=3 +Key=39 + +[Command_389] +CmdId=CM_SETUPWND_DATABASE_EXPORT +VKey=0 +Key=0 + +[Command_390] +CmdId=CM_DEVEXP_DEL_NETWORK +VKey=0 +Key=0 + +[Command_391] +CmdId=CM_PREVIEW_MODE_DISPLAY_PAGES +VKey=0 +Key=0 + +[Command_392] +CmdId=CM_CALIB_FLASH_9 +VKey=0 +Key=0 + +[Command_393] +CmdId=ACTIVEX@CNPTRACE.TraceCtrl.1#ID_REGTEST_CMD_PAGEDOWN +VKey=0 +Key=0 + +[Command_394] +CmdId=CM_RESET_XOFFSET +VKey=0 +Key=0 + +[Command_395] +CmdId=CM_WORKING_POINT_ON_ALL +VKey=0 +Key=0 + +[Command_396] +CmdId=CM_CALIBRATION_ACTIVE_8 +VKey=0 +Key=0 + +[Command_397] +CmdId=CM_MACRO_USER_DEFINED_FIELD+1 +VKey=0 +Key=0 + +[Command_398] +CmdId=CM_USERMENU11 +VKey=0 +Key=0 + +[Command_399] +CmdId=CM_CALIB_OFFLINE_4 +VKey=0 +Key=0 + +[Command_400] +CmdId=CM_AXIS_TEMPLATE_1 +VKey=3 +Key=0 + +[Command_401] +CmdId=ACTIVEX@DIAGNOSE.DiagnoseCtrl.1#ID_POPUP_END_RECORD +VKey=0 +Key=0 + +[Command_402] +CmdId=ACTIVEX@OBD.OBDCtrl.1#ID_POPUP_CHECK_ALL_PIDS +VKey=0 +Key=0 + +[Command_403] +CmdId=ACTIVEX@VARIANTCODING.VariantCodingCtrl.1#ID_POPUP_SAVE_CONFIGURATION +VKey=0 +Key=0 + +[Command_404] +CmdId=CM_NEW +VKey=3 +Key=119 + +[Command_405] +CmdId=CM_CREATE_AX_WINDOW_23 +VKey=0 +Key=0 + +[Command_406] +CmdId=CM_SYMB_EXPL_UPDATE_MEASUREMENT +VKey=0 +Key=0 + +[Command_407] +CmdId=CM_MACRO_EVAL +VKey=0 +Key=0 + +[Command_408] +CmdId=CM_DM_LAYOUT_MODIFY_PANE_TOP +VKey=0 +Key=0 + +[Command_409] +CmdId=CM_SPREADSHEET_TOGGLE_UNIT +VKey=11 +Key=73 + +[Command_410] +CmdId=CM_SymbolExplorer_ChangeModule +VKey=0 +Key=0 + +[Command_411] +CmdId=CM_VIEW_SIGNAL_COMMENT +VKey=0 +Key=0 + +[Command_412] +CmdId=CM_MDICHILD_7 +VKey=0 +Key=0 + +[Command_413] +CmdId=CM_MEASURE_DIFF +VKey=3 +Key=188 + +[Command_414] +CmdId=CM_DIGITAL_AUTOMATIC +VKey=0 +Key=0 + +[Command_415] +CmdId=CM_OPTIONS_VX +VKey=0 +Key=0 + +[Command_416] +CmdId=CM_MEASUREMENT_STOP_REC_3 +VKey=0 +Key=0 + +[Command_417] +CmdId=CM_CREATE_DISP_EL_ARROW +VKey=0 +Key=0 + +[Command_418] +CmdId=CM_CONVERTER_IMPORT_4 +VKey=0 +Key=0 + +[Command_419] +CmdId=CM_CONFIGSAVEAS +VKey=0 +Key=0 + +[Command_420] +CmdId=CM_CALIBRATION_ONLINE_ALL +VKey=7 +Key=120 + +[Command_421] +CmdId=CM_COMMON_AXIS_CONFIG +VKey=0 +Key=0 + +[Command_422] +CmdId=CM_WIRE_MODEL +VKey=0 +Key=0 + +[Command_423] +CmdId=CM_PARAMETERLAST6 +VKey=0 +Key=0 + +[Command_424] +CmdId=CM_CONVERTER_EXPORT_2 +VKey=0 +Key=0 + +[Command_425] +CmdId=CM_VIEW_FORMAT +VKey=0 +Key=0 + +[Command_426] +CmdId=CM_PDF_FOR_CURRENT_VIEW +VKey=0 +Key=0 + +[Command_427] +CmdId=CM_CONFIGLAST7 +VKey=0 +Key=0 + +[Command_428] +CmdId=CM_MARKER_BOTH10_LEFT +VKey=31 +Key=37 + +[Command_429] +CmdId=CM_DS_DEVICE_6 +VKey=0 +Key=0 + +[Command_430] +CmdId=ACTIVEX@CNPTRACE.TraceCtrl.1#ID_REGTEST_QRY_JOBCNT +VKey=0 +Key=0 + +[Command_431] +CmdId=CM_MOVE_SIGNAL_UP +VKey=19 +Key=38 + +[Command_432] +CmdId=CM_DE_DUPLICATE +VKey=3 +Key=0 + +[Command_433] +CmdId=CM_CALIBRATION_UNDO_8 +VKey=0 +Key=0 + +[Command_434] +CmdId=CM_USERMENU21 +VKey=0 +Key=0 + +[Command_435] +CmdId=CM_MODIFY_RESET2ORIGIN +VKey=0 +Key=0 + +[Command_436] +CmdId=CM_CALIB_RAM_2 +VKey=0 +Key=0 + +[Command_437] +CmdId=ACTIVEX@FAULTMEMORY.FaultMemoryCtrl.1#ID_POPUP_SHOW_DTC_DETAILS +VKey=0 +Key=0 + +[Command_438] +CmdId=ACTIVEX@DIAGNOSE.DiagnoseCtrl.1#ID_POPUP_OPTIONS +VKey=0 +Key=0 + +[Command_439] +CmdId=CM_CALIBRATION_DIRECT_5 +VKey=0 +Key=0 + +[Command_440] +CmdId=CM_ENABLE_3D_BOUNDINGBOX +VKey=0 +Key=0 + +[Command_441] +CmdId=CM_MACRO_LAST_PARAMETER_FILE +VKey=0 +Key=0 + +[Command_442] +CmdId=CM_OPTIONS_HMA +VKey=0 +Key=0 + +[Command_443] +CmdId=CM_SAVE_ALL_PARAMETERS_OF_PAGE +VKey=0 +Key=0 + +[Command_444] +CmdId=CM_CREATE_DIAGNOSTIC_CONSOLE_WINDOW +VKey=0 +Key=0 + +[Command_445] +CmdId=CM_MACRO_YEAR +VKey=0 +Key=0 + +[Command_446] +CmdId=CM_HEXWIN_DB_OBJECT_0 +VKey=0 +Key=0 + +[Command_447] +CmdId=CM_CREATE_AX_WINDOW_4 +VKey=0 +Key=0 + +[Command_448] +CmdId=CM_SYMB_EXPL_REMOVE_MDF_ATTACHMENT +VKey=0 +Key=0 + +[Command_449] +CmdId=CM_YGRID +VKey=0 +Key=0 + +[Command_450] +CmdId=CM_PREV_HEX +VKey=7 +Key=9 + +[Command_451] +CmdId=CM_CHECK_MEALIST_FOR_OPTIMIZATION +VKey=0 +Key=0 + +[Command_452] +CmdId=CM_SHIFT_LEFT +VKey=3 +Key=37 + +[Command_453] +CmdId=CM_CREATE_TRACE_WINDOW +VKey=0 +Key=0 + +[Command_454] +CmdId=CM_SYMB_EXPL_CAL_FILE_CDM_STUDIO +VKey=0 +Key=0 + +[Command_455] +CmdId=CM_PAGE_NORMAL_VIEW +VKey=0 +Key=0 + +[Command_456] +CmdId=CM_MEASUREMENT_STOP_REC_13 +VKey=0 +Key=0 + +[Command_457] +CmdId=CM_ZOOM_VIEW +VKey=11 +Key=187 + +[Command_458] +CmdId=CM_CALIBRATION_ONLINE_8 +VKey=0 +Key=0 + +[Command_459] +CmdId=CM_PLAY_PLAY +VKey=3 +Key=179 + +[Command_460] +CmdId=CM_MEASUREMENT_START_REC_4 +VKey=0 +Key=0 + +[Command_461] +CmdId=CM_EXPORT_WINDOW +VKey=0 +Key=0 + +[Command_462] +CmdId=CM_NEW_2D +VKey=0 +Key=0 + +[Command_463] +CmdId=CM_LEGEND_TOP +VKey=0 +Key=0 + +[Command_464] +CmdId=CM_SUPPORTASSISTANT +VKey=0 +Key=0 + +[Command_465] +CmdId=CM_PROJECTLAST7 +VKey=0 +Key=0 + +[Command_466] +CmdId=CM_DropNumberCalMapWnd +VKey=0 +Key=0 + +[Command_467] +CmdId=CM_PAGE_9 +VKey=19 +Key=57 + +[Command_468] +CmdId=CM_EXTEND_PGUP +VKey=7 +Key=33 + +[Command_469] +CmdId=CM_SnapshotProperties +VKey=0 +Key=0 + +[Command_470] +CmdId=CM_CONVERTER_SETUP_3 +VKey=0 +Key=0 + +[Command_471] +CmdId=CM_FILESIGNALLISTDLG_UPDATEFILE +VKey=0 +Key=0 + +[Command_472] +CmdId=CM_NEW_CAL +VKey=0 +Key=0 + +[Command_473] +CmdId=CM_DE_MOVE_BACK +VKey=3 +Key=0 + +[Command_474] +CmdId=CM_EXCEED_LIMIT_WARNING_STEADY +VKey=0 +Key=0 + +[Command_475] +CmdId=CM_USERMENU31 +VKey=0 +Key=0 + +[Command_476] +CmdId=CM_TXT_FIT_TEXT +VKey=0 +Key=0 + +[Command_477] +CmdId=CM_CALIB_FLASH_0 +VKey=0 +Key=0 + +[Command_478] +CmdId=CM_GRAPH_STATISTIC +VKey=0 +Key=0 + +[Command_479] +CmdId=ACTIVEX@DIAGNOSE.DiagnoseCtrl.1#ID_POPUP_SCRIPT_GENERATOR +VKey=0 +Key=0 + +[Command_480] +CmdId=ACTIVEX@CNPTRACE.TraceCtrl.1#ID_TOGGLE_DISPLAY_MODE +VKey=17 +Key=0 + +[Command_481] +CmdId=CM_MARKER2_UP +VKey=7 +Key=38 + +[Command_482] +CmdId=CM_CALIBRATION_ACTIVE_NONE +VKey=0 +Key=0 + +[Command_483] +CmdId=CM_CALIBRATION_UPDATE_2 +VKey=0 +Key=0 + +[Command_484] +CmdId=CM_MACRO_INI+2 +VKey=0 +Key=0 + +[Command_485] +CmdId=CM_USERMENU2 +VKey=0 +Key=0 + +[Command_486] +CmdId=CM_CALIB_ONLINE_7 +VKey=0 +Key=0 + +[Command_487] +CmdId=CM_DropCnaReplace +VKey=0 +Key=0 + +[Command_488] +CmdId=CM_CHECK_PROJECT_FOR_OPTIMIZATION +VKey=0 +Key=0 + +[Command_489] +CmdId=CM_HORMODE +VKey=0 +Key=0 + +[Command_490] +CmdId=CM_PROJ_CHANGE_ACCEPT_4 +VKey=0 +Key=0 + +[Command_491] +CmdId=CM_CREATE_AX_WINDOW_14 +VKey=0 +Key=0 + +[Command_492] +CmdId=CM_OPEN_PANEL_WINDOW_CONTAINER_2 +VKey=0 +Key=0 + +[Command_493] +CmdId=CM_DockBar_Close +VKey=11 +Key=115 + +[Command_494] +CmdId=CM_YAXIS_RIGHT +VKey=3 +Key=0 + +[Command_495] +CmdId=CM_NEXT +VKey=3 +Key=9 + +[Command_496] +CmdId=CM_MACRO_FILENAME +VKey=0 +Key=0 + +[Command_497] +CmdId=CM_XFIT_DIFF_MARKER +VKey=7 +Key=70 + +[Command_498] +CmdId=CM_CALHISTORY_SNAPSHOT_NR5 +VKey=0 +Key=0 + +[Command_499] +CmdId=CM_DEVEXP_DEVICE_UP +VKey=0 +Key=0 + +[Command_500] +CmdId=CM_SymbolExplorer_Property +VKey=19 +Key=13 + +[Command_501] +CmdId=CM_DATABASE_EXPORT_CONFIG +VKey=0 +Key=0 + +[Command_502] +CmdId=CM_CREATE_ARR_WINDOW +VKey=0 +Key=0 + +[Command_503] +CmdId=CM_SETUPWND_COMMENT +VKey=0 +Key=0 + +[Command_504] +CmdId=CM_VIEW_WORKINGPOINT_HISTORY +VKey=0 +Key=0 + +[Command_505] +CmdId=CM_LEGEND_INVERT_SELECTION +VKey=11 +Key=84 + +[Command_506] +CmdId=CM_CREATE_DIAGNOSTIC_WINDOW +VKey=0 +Key=0 + +[Command_507] +CmdId=CM_MEASUREMENT_START_REC_14 +VKey=0 +Key=0 + +[Command_508] +CmdId=CM_CALIBRATION_RAM_6 +VKey=0 +Key=0 + +[Command_509] +CmdId=CM_COMMON_AXIS_SET_9 +VKey=0 +Key=0 + +[Command_510] +CmdId=CM_GLOBAL_MEA_EDIT_COMMENT +VKey=11 +Key=77 + +[Command_511] +CmdId=CM_FORMAT_ASCII +VKey=0 +Key=0 + +[Command_512] +CmdId=CM_MEASURELAST7 +VKey=0 +Key=0 + +[Command_513] +CmdId=CM_SHIFT_UP_HEX +VKey=3 +Key=38 + +[Command_514] +CmdId=CM_SETUPWND_DATABASE_ACT +VKey=0 +Key=0 + +[Command_515] +CmdId=CM_DEVEXP_APPLY_CHANGES +VKey=0 +Key=0 + +[Command_516] +CmdId=CM_SET_HOME +VKey=3 +Key=75 + +[Command_517] +CmdId=CM_PREVIEW_MODE_REPORT_PAGES +VKey=0 +Key=0 + +[Command_518] +CmdId=CM_FOLLOW_WP +VKey=0 +Key=0 + +[Command_519] +CmdId=CM_HELP_CONTENTS +VKey=11 +Key=112 + +[Command_520] +CmdId=ACTIVEX@CNPTRACE.TraceCtrl.1#ID_REGTEST_CMD_HOME +VKey=0 +Key=0 + +[Command_521] +CmdId=CM_WORKING_POINT_OFF_ALL +VKey=0 +Key=0 + +[Command_522] +CmdId=CM_CALIBRATION_ACTIVE_9 +VKey=0 +Key=0 + +[Command_523] +CmdId=CM_CALIBRATION_UNDO +VKey=0 +Key=0 + +[Command_524] +CmdId=CM_MACRO_USER_DEFINED_FIELD+2 +VKey=0 +Key=0 + +[Command_525] +CmdId=CM_USERMENU12 +VKey=0 +Key=0 + +[Command_526] +CmdId=CM_CALIB_OFFLINE_5 +VKey=0 +Key=0 + +[Command_527] +CmdId=ACTIVEX@MATLAB.MatlabCtrl.50#ID_BACK +VKey=3 +Key=8 + +[Command_528] +CmdId=CM_AXIS_TEMPLATE_2 +VKey=3 +Key=0 + +[Command_529] +CmdId=ACTIVEX@FAULTMEMORY.FaultMemoryCtrl.1#ID_POPUP_CLIPBOARD +VKey=9 +Key=67 + +[Command_530] +CmdId=ACTIVEX@DIAGNOSE.DiagnoseCtrl.1#ID_POPUP_EXECUTE_MACRO +VKey=0 +Key=0 + +[Command_531] +CmdId=ACTIVEX@OBD.OBDCtrl.1#ID_POPUP_CHECK_ALL_SUPPORTED_PIDS +VKey=0 +Key=0 + +[Command_532] +CmdId=ACTIVEX@VARIANTCODING.VariantCodingCtrl.1#ID_POPUP_GO_ONLINE +VKey=0 +Key=0 + +[Command_533] +CmdId=CM_MDF_FILEOPEN +VKey=0 +Key=0 + +[Command_534] +CmdId=CM_CALHISTORY_START +VKey=0 +Key=0 + +[Command_535] +CmdId=CM_CREATE_GENERAL_MEAS_WINDOW +VKey=0 +Key=0 + +[Command_536] +CmdId=CM_MACRO_SCRIPT +VKey=0 +Key=0 + +[Command_537] +CmdId=CM_DM_LAYOUT_MODIFY_PANE_BOTTOM +VKey=0 +Key=0 + +[Command_538] +CmdId=CM_SYMB_EXPL_EDIT_BUSLOG_DB +VKey=0 +Key=0 + +[Command_539] +CmdId=CM_MACRO_PAGE_NAME +VKey=0 +Key=0 + +[Command_540] +CmdId=CM_SymbolExplorer_RenameSignal +VKey=19 +Key=113 + +[Command_541] +CmdId=CM_OPTIONS_PAGE_TIMEAXIS +VKey=27 +Key=83 + +[Command_542] +CmdId=CM_MDICHILD_8 +VKey=0 +Key=0 + +[Command_543] +CmdId=CM_DIGITAL_FIXED +VKey=0 +Key=0 + +[Command_544] +CmdId=CM_SYMB_EXPL_FUNCTION_CODE +VKey=0 +Key=0 + +[Command_545] +CmdId=CM_MOVE_CURVE_DOWN +VKey=15 +Key=40 + +[Command_546] +CmdId=CM_MEASUREMENT_STOP_REC_4 +VKey=0 +Key=0 + +[Command_547] +CmdId=CM_SEARCH_OBJECT +VKey=0 +Key=0 + +[Command_548] +CmdId=CM_CONVERTER_IMPORT_5 +VKey=0 +Key=0 + +[Command_549] +CmdId=CM_CONFIGSAVE +VKey=3 +Key=113 + +[Command_550] +CmdId=CM_CALIBRATION_ONLINE_ALL_OFF +VKey=15 +Key=120 + +[Command_551] +CmdId=CM_3D_COLOR +VKey=0 +Key=0 + +[Command_552] +CmdId=CM_PARAMETERLAST7 +VKey=0 +Key=0 + +[Command_553] +CmdId=ACTIVEX@MATLAB.MatlabCtrl.50#ID_OPEN_NEW_WINDOW +VKey=11 +Key=78 + +[Command_554] +CmdId=CM_CONVERTER_EXPORT_3 +VKey=0 +Key=0 + +[Command_555] +CmdId=CM_GRAPH_COMPONENT_ADD_GRA +VKey=0 +Key=0 + +[Command_556] +CmdId=CM_VIEW_COMMENT +VKey=0 +Key=0 + +[Command_557] +CmdId=CM_CONFIGLAST8 +VKey=0 +Key=0 + +[Command_558] +CmdId=CM_DISPLAY_PAGES +VKey=0 +Key=0 + +[Command_559] +CmdId=CM_MARKER_BOTH1_RIGHT +VKey=15 +Key=39 + +[Command_560] +CmdId=CM_DS_DEVICE_7 +VKey=0 +Key=0 + +[Command_561] +CmdId=CM_CREATE_SIGNAL_COMMENT +VKey=11 +Key=73 + +[Command_562] +CmdId=CM_FILESIGNALLISTDLG_OPENFILE +VKey=3 +Key=45 + +[Command_563] +CmdId=CM_PROJECDIRTOPEN +VKey=0 +Key=0 + +[Command_564] +CmdId=CM_MOVE_SIGNAL_DOWN +VKey=19 +Key=40 + +[Command_565] +CmdId=CM_DE_COMMENT_UNDERLINED +VKey=3 +Key=0 + +[Command_566] +CmdId=CM_PAGE_NEW_DISPLAY_PAGE +VKey=0 +Key=0 + +[Command_567] +CmdId=CM_CALIBRATION_UNDO_9 +VKey=0 +Key=0 + +[Command_568] +CmdId=CM_DropGraphicWnd +VKey=0 +Key=0 + +[Command_569] +CmdId=CM_USERMENU22 +VKey=0 +Key=0 + +[Command_570] +CmdId=CM_CALIB_RAM_3 +VKey=0 +Key=0 + +[Command_571] +CmdId=CM_DELETE_CTRL +VKey=11 +Key=46 + +[Command_572] +CmdId=ACTIVEX@FAULTMEMORY.FaultMemoryCtrl.1#ID_POPUP_HIDE_DTC_DETAILS +VKey=0 +Key=0 + +[Command_573] +CmdId=ACTIVEX@DIAGNOSE.DiagnoseCtrl.1#ID_POPUP_SHOW_PARAM_POSITION +VKey=0 +Key=0 + +[Command_574] +CmdId=CM_EDIT_VIRTUAL_FORMULA +VKey=0 +Key=0 + +[Command_575] +CmdId=CM_CALIBRATION_DIRECT_6 +VKey=0 +Key=0 + +[Command_576] +CmdId=CM_DISABLE_3D_BOUNDINGBOX +VKey=0 +Key=0 + +[Command_577] +CmdId=CM_OPTIONS_CAN +VKey=0 +Key=0 + +[Command_578] +CmdId=CM_SYMB_EXPL_UTC_OFFSET_ADJUSTMENT +VKey=0 +Key=0 + +[Command_579] +CmdId=CM_CREATE_PARFILE_FROM_MDF +VKey=0 +Key=0 + +[Command_580] +CmdId=CM_CALIBRATION_INVALIDATE +VKey=7 +Key=122 + +[Command_581] +CmdId=CM_MACRO_YEAR2 +VKey=0 +Key=0 + +[Command_582] +CmdId=CM_HEXWIN_CALWIN_0 +VKey=0 +Key=0 + +[Command_583] +CmdId=CM_CREATE_AX_WINDOW_5 +VKey=0 +Key=0 + +[Command_584] +CmdId=CM_SYMB_EXPL_ADD_MDF_ATTACHMENT +VKey=0 +Key=0 + +[Command_585] +CmdId=CM_MACRO_SIGNAL_AT_COMMENT_POS +VKey=0 +Key=0 + +[Command_586] +CmdId=kButtonNew +VKey=0 +Key=0 + +[Command_587] +CmdId=CM_SYMB_EXPL_MDF_UPDATE_ALL +VKey=0 +Key=0 + +[Command_588] +CmdId=CM_SHIFT_RIGHT +VKey=3 +Key=39 + +[Command_589] +CmdId=CM_SYMB_EXPL_CAL_FILE_CLOSE +VKey=0 +Key=0 + +[Command_590] +CmdId=CM_MEASUREMENT_STOP_REC_14 +VKey=0 +Key=0 + +[Command_591] +CmdId=CM_TIME_XMIN_EDIT +VKey=0 +Key=0 + +[Command_592] +CmdId=CM_IMPORT_PARAMSET +VKey=0 +Key=0 + +[Command_593] +CmdId=CM_CALIBRATION_ONLINE_9 +VKey=0 +Key=0 + +[Command_594] +CmdId=CM_PLAY_STOP +VKey=3 +Key=178 + +[Command_595] +CmdId=CM_MEASUREMENT_START_REC_5 +VKey=0 +Key=0 + +[Command_596] +CmdId=CM_ACT_DATASET_ACTION +VKey=0 +Key=0 + +[Command_597] +CmdId=CM_DropGPSWnd +VKey=0 +Key=0 + +[Command_598] +CmdId=CM_PAGE_MULTILINE +VKey=0 +Key=0 + +[Command_599] +CmdId=CM_DELETE_2D +VKey=0 +Key=0 + +[Command_600] +CmdId=CM_COMMON_AXIS_SET_0 +VKey=0 +Key=0 + +[Command_601] +CmdId=CM_LEGEND_LEFT +VKey=0 +Key=0 + +[Command_602] +CmdId=CM_PROJECTLAST8 +VKey=0 +Key=0 + +[Command_603] +CmdId=CM_PAGE_10 +VKey=19 +Key=48 + +[Command_604] +CmdId=CM_EXTEND_PGDN +VKey=7 +Key=34 + +[Command_605] +CmdId=CM_CONVERTER_SETUP_4 +VKey=0 +Key=0 + +[Command_606] +CmdId=CM_FILESIGNALLISTDLG_FILEDURABLE +VKey=0 +Key=0 + +[Command_607] +CmdId=CM_DE_ENABLE +VKey=3 +Key=0 + +[Command_608] +CmdId=CM_ONLY_HIGHTLIGHT_VIOLATIONS +VKey=0 +Key=0 + +[Command_609] +CmdId=CM_SYMB_EXPL_AddDataset2 +VKey=0 +Key=0 + +[Command_610] +CmdId=CM_DropNumberMapWnd +VKey=0 +Key=0 + +[Command_611] +CmdId=CM_USERMENU32 +VKey=0 +Key=0 + +[Command_612] +CmdId=CM_OPENPANELEDITORDOTNET +VKey=0 +Key=0 + +[Command_613] +CmdId=CM_CALIB_FLASH_1 +VKey=0 +Key=0 + +[Command_614] +CmdId=ACTIVEX@DIAGNOSE.DiagnoseCtrl.1#ID_POPUP_SEARCH_SERVICES +VKey=9 +Key=70 + +[Command_615] +CmdId=ACTIVEX@CNPTRACE.TraceCtrl.1#ID_TOGGLE_ANALYSIS_FILTER +VKey=17 +Key=0 + +[Command_616] +CmdId=CM_MARKER2_DOWN +VKey=7 +Key=40 + +[Command_617] +CmdId=CM_CALIBRATION_ACTIVE_0 +VKey=0 +Key=0 + +[Command_618] +CmdId=CM_CALIBRATION_UPDATE_3 +VKey=0 +Key=0 + +[Command_619] +CmdId=CM_SYMB_EXPL_OpenDsContainingFolder +VKey=0 +Key=0 + +[Command_620] +CmdId=CM_MACRO_INI+3 +VKey=0 +Key=0 + +[Command_621] +CmdId=CM_USERMENU3 +VKey=0 +Key=0 + +[Command_622] +CmdId=CM_CALIB_ONLINE_8 +VKey=0 +Key=0 + +[Command_623] +CmdId=CM_DATABASE_EXPORT +VKey=0 +Key=0 + +[Command_624] +CmdId=CM_PROJ_CHANGE_ACCEPT_5 +VKey=0 +Key=0 + +[Command_625] +CmdId=CM_CREATE_AX_WINDOW_15 +VKey=0 +Key=0 + +[Command_626] +CmdId=CM_OPEN_PANEL_WINDOW_CONTAINER_3 +VKey=0 +Key=0 + +[Command_627] +CmdId=CM_YAXIS_EDIT_LABEL +VKey=3 +Key=0 + +[Command_628] +CmdId=CM_PREV +VKey=7 +Key=9 + +[Command_629] +CmdId=CM_SYMB_EXPL_ShowDS +VKey=0 +Key=0 + +[Command_630] +CmdId=CM_MACRO_NAME +VKey=0 +Key=0 + +[Command_631] +CmdId=CM_FIT_CALCULATE +VKey=11 +Key=70 + +[Command_632] +CmdId=CM_CALHISTORY_SNAPSHOT_NR6 +VKey=0 +Key=0 + +[Command_633] +CmdId=CM_DEVEXP_DEVICE_DOWN +VKey=0 +Key=0 + +[Command_634] +CmdId=CM_SymbolExplorer_Save +VKey=0 +Key=0 + +[Command_635] +CmdId=CM_CREATE_TXT_WINDOW +VKey=0 +Key=0 + +[Command_636] +CmdId=CM_SETUPWND_COMMENT_VISIBLE +VKey=0 +Key=0 + +[Command_637] +CmdId=CM_HEXWIN_SELECT_VARIABLE +VKey=0 +Key=0 + +[Command_638] +CmdId=CM_Open_UPSCONFIG +VKey=0 +Key=0 + +[Command_639] +CmdId=CM_DUP_COL +VKey=0 +Key=0 + +[Command_640] +CmdId=CM_OPEN_DIAGNOSTIC_VIEW_CONFIG +VKey=0 +Key=0 + +[Command_641] +CmdId=CM_MEASUREMENT_START_REC_15 +VKey=0 +Key=0 + +[Command_642] +CmdId=CM_REVERSE_INDEX_IN_COLUMNS +VKey=0 +Key=0 + +[Command_643] +CmdId=CM_DropFaultMemWnd +VKey=0 +Key=0 + +[Command_644] +CmdId=CM_CALIBRATION_RAM_7 +VKey=0 +Key=0 + +[Command_645] +CmdId=CM_SHOW_SELECTED_SIGNALS +VKey=3 +Key=189 + +[Command_646] +CmdId=CM_MEASURELAST8 +VKey=0 +Key=0 + +[Command_647] +CmdId=CM_CREATE_WRT_WINDOW +VKey=0 +Key=0 + +[Command_648] +CmdId=CM_NEXT_HEX +VKey=3 +Key=9 + +[Command_649] +CmdId=CM_SHIFT_DOWN_HEX +VKey=3 +Key=40 + +[Command_650] +CmdId=CM_DEVEXP_REVERT_CHANGES +VKey=0 +Key=0 + +[Command_651] +CmdId=CM_MDF_FILELOAD +VKey=0 +Key=0 + +[Command_652] +CmdId=CM_PRINT_VIEW +VKey=0 +Key=0 + +[Command_653] +CmdId=CM_LOGGERDEVICESELECTION +VKey=0 +Key=0 + +[Command_654] +CmdId=CM_SIGNAL_YAXIS_RIGHT +VKey=3 +Key=0 + +[Command_655] +CmdId=CM_FLASH_ACTIVE_DATASET +VKey=0 +Key=0 + +[Command_656] +CmdId=CM_DS_DEVICE_EXT +VKey=0 +Key=0 + +[Command_657] +CmdId=CM_RAM_FREEZE +VKey=0 +Key=0 + +[Command_658] +CmdId=CM_MEASUREMENT_LIST +VKey=3 +Key=115 + +[Command_659] +CmdId=ACTIVEX@CNPTRACE.TraceCtrl.1#ID_REGTEST_CMD_END +VKey=0 +Key=0 + +[Command_660] +CmdId=CM_MEASUREMENT_START_RESUME +VKey=19 +Key=120 + +[Command_661] +CmdId=CM_CALIBRATION_ACTIVE_10 +VKey=0 +Key=0 + +[Command_662] +CmdId=CM_CALIBRATION_UNDO_0 +VKey=0 +Key=0 + +[Command_663] +CmdId=CM_MACRO_USER_DEFINED_FIELD+3 +VKey=0 +Key=0 + +[Command_664] +CmdId=CM_USERMENU13 +VKey=0 +Key=0 + +[Command_665] +CmdId=CM_CALIB_OFFLINE_6 +VKey=0 +Key=0 + +[Command_666] +CmdId=CM_AXIS_TEMPLATE_3 +VKey=3 +Key=0 + +[Command_667] +CmdId=ACTIVEX@FAULTMEMORY.FaultMemoryCtrl.1#ID_POPUP_SELECTALL +VKey=9 +Key=65 + +[Command_668] +CmdId=ACTIVEX@DIAGNOSE.DiagnoseCtrl.1#ID_POPUP_SAVE_MACRO +VKey=0 +Key=0 + +[Command_669] +CmdId=ACTIVEX@OBD.OBDCtrl.1#ID_POPUP_SELECTALL +VKey=9 +Key=65 + +[Command_670] +CmdId=ACTIVEX@VARIANTCODING.VariantCodingCtrl.1#ID_POPUP_GO_OFFLINE +VKey=0 +Key=0 + +[Command_671] +CmdId=CM_MDF_UPDATE +VKey=0 +Key=0 + +[Command_672] +CmdId=CM_CALIBRATION_DIRECT +VKey=0 +Key=0 + +[Command_673] +CmdId=CM_CALHISTORY_STOP +VKey=0 +Key=0 + +[Command_674] +CmdId=CM_SIGNAL_USE_AS_X_AXIS +VKey=3 +Key=0 + +[Command_675] +CmdId=CM_SYMB_EXPL_ADDEDIT_BUSLOG_DB +VKey=0 +Key=0 + +[Command_676] +CmdId=CM_MACRO_FILETIME +VKey=0 +Key=0 + +[Command_677] +CmdId=CM_AUTOZOOM +VKey=0 +Key=0 + +[Command_678] +CmdId=CM_MDICHILD_9 +VKey=0 +Key=0 + +[Command_679] +CmdId=CM_GRID +VKey=3 +Key=71 + +[Command_680] +CmdId=CM_EXIT +VKey=19 +Key=88 + +[Command_681] +CmdId=CM_CREATE_GRPCAL_WINDOW +VKey=0 +Key=0 + +[Command_682] +CmdId=CM_MEASUREMENT_STOP_REC_5 +VKey=0 +Key=0 + +[Command_683] +CmdId=CM_HELP_ON_HELP +VKey=0 +Key=0 + +[Command_684] +CmdId=CM_MACRO_USER_DEFINED_FIELD_DEFAULT +VKey=0 +Key=0 + +[Command_685] +CmdId=CM_ENABLE_LEGEND +VKey=3 +Key=32 + +[Command_686] +CmdId=CM_CONVERTER_IMPORT_6 +VKey=0 +Key=0 + +[Command_687] +CmdId=CM_CALIBRATION_ONLINE_0 +VKey=0 +Key=0 + +[Command_688] +CmdId=CM_PARAMETERLAST8 +VKey=0 +Key=0 + +[Command_689] +CmdId=CM_DEVICE_DATASET_ADMIN_OFF +VKey=0 +Key=0 + +[Command_690] +CmdId=CM_HIGHLIGH_IN_SYM_EXPLORER +VKey=11 +Key=75 + +[Command_691] +CmdId=CM_CONVERTER_EXPORT_4 +VKey=0 +Key=0 + +[Command_692] +CmdId=CM_GRAPH_COMPONENT_ADD_DIG +VKey=0 +Key=0 + +[Command_693] +CmdId=CM_VIEW_WORKINGPOINT +VKey=0 +Key=0 + +[Command_694] +CmdId=CM_CONFIGLAST9 +VKey=0 +Key=0 + +[Command_695] +CmdId=CM_PAGE_1 +VKey=19 +Key=49 + +[Command_696] +CmdId=CM_MARKER_BOTH10_RIGHT +VKey=31 +Key=39 + +[Command_697] +CmdId=CM_DS_DEVICE_8 +VKey=0 +Key=0 + +[Command_698] +CmdId=CM_EDIT_SIGNAL_COMMENT +VKey=0 +Key=0 + +[Command_699] +CmdId=CM_FILESIGNALLISTDLG_REPLACEFILE +VKey=19 +Key=82 + +[Command_700] +CmdId=CM_SHIFT_SINGLE_UP +VKey=7 +Key=38 + +[Command_701] +CmdId=CM_DE_COMMENT_TEXTCOLOR +VKey=3 +Key=0 + +[Command_702] +CmdId=CM_CALIBRATION_UNDO_EXT +VKey=0 +Key=0 + +[Command_703] +CmdId=CM_USERMENU23 +VKey=0 +Key=0 + +[Command_704] +CmdId=CM_MODIFY_RESET2ORIGIN_ALL +VKey=11 +Key=122 + +[Command_705] +CmdId=CM_CALIB_RAM_4 +VKey=0 +Key=0 + +[Command_706] +CmdId=CM_DELETE_SHIFT +VKey=7 +Key=46 + +[Command_707] +CmdId=ACTIVEX@DIAGNOSE.DiagnoseCtrl.1#ID_POPUP_GO_ONLINE +VKey=0 +Key=0 + +[Command_708] +CmdId=CM_ADJUST_TO_CONTENT +VKey=0 +Key=0 + +[Command_709] +CmdId=CM_CALIBRATION_DIRECT_7 +VKey=0 +Key=0 + +[Command_710] +CmdId=CM_MACRO_MEASUREMENTSTART +VKey=0 +Key=0 + +[Command_711] +CmdId=CM_CREATE_FAULT_MEMORY_WINDOW +VKey=0 +Key=0 + +[Command_712] +CmdId=CM_CREATE_HEX_WINDOW +VKey=0 +Key=0 + +[Command_713] +CmdId=CM_MACRO_MONTH +VKey=0 +Key=0 + +[Command_714] +CmdId=CM_CREATE_AX_WINDOW_6 +VKey=0 +Key=0 + +[Command_715] +CmdId=CM_SYMB_EXPL_SHOW_DS_REF +VKey=0 +Key=0 + +[Command_716] +CmdId=CM_TOGGLE_LEGEND_VIEW +VKey=11 +Key=76 + +[Command_717] +CmdId=kButtonModify +VKey=0 +Key=0 + +[Command_718] +CmdId=CM_SET_AXIS_INTERPOLATION_MODE +VKey=0 +Key=0 + +[Command_719] +CmdId=CM_SYMB_EXPL_MDF_UPDATE_FILE +VKey=0 +Key=0 + +[Command_720] +CmdId=CM_SHIFT_UP +VKey=3 +Key=38 + +[Command_721] +CmdId=CM_SYMB_EXPL_CAL_FILE_SAVE_AS +VKey=0 +Key=0 + +[Command_722] +CmdId=CM_GRID_TEXT +VKey=3 +Key=71 + +[Command_723] +CmdId=CM_MEASUREMENT_STOP_REC_15 +VKey=0 +Key=0 + +[Command_724] +CmdId=CM_SymbolExplorer_Paste +VKey=0 +Key=0 + +[Command_725] +CmdId=CM_TIME_XMAX_EDIT +VKey=0 +Key=0 + +[Command_726] +CmdId=CM_CALIBRATION_SAVE_CALWND +VKey=0 +Key=0 + +[Command_727] +CmdId=CM_INSERT_MEA_SIGNAL +VKey=3 +Key=45 + +[Command_728] +CmdId=CM_CALIBRATION_ONLINE_10 +VKey=0 +Key=0 + +[Command_729] +CmdId=CM_DropMdfVirtual +VKey=0 +Key=0 + +[Command_730] +CmdId=CM_FIT_ABOVE +VKey=3 +Key=66 + +[Command_731] +CmdId=CM_MEASUREMENT_START_REC_6 +VKey=0 +Key=0 + +[Command_732] +CmdId=CM_ACTIVE_DATASET +VKey=0 +Key=0 + +[Command_733] +CmdId=CM_SAVE_SIGNALS +VKey=0 +Key=0 + +[Command_734] +CmdId=CM_COMMON_AXIS_SET_1 +VKey=0 +Key=0 + +[Command_735] +CmdId=CM_LEGEND_BOTTOM +VKey=0 +Key=0 + +[Command_736] +CmdId=CM_BROWSER_SET_NAVIGATE_HOME_FILE +VKey=19 +Key=79 + +[Command_737] +CmdId=CM_PROJECTLAST9 +VKey=0 +Key=0 + +[Command_738] +CmdId=CM_HEXWIN_COPY +VKey=11 +Key=67 + +[Command_739] +CmdId=CM_CONVERTER_SETUP_5 +VKey=0 +Key=0 + +[Command_740] +CmdId=CM_DE_REMOVE +VKey=3 +Key=0 + +[Command_741] +CmdId=CM_SYMB_EXPL_OFFLINE_MDF_FILE +VKey=0 +Key=0 + +[Command_742] +CmdId=CM_PAGE_RIGHT_TEXT +VKey=19 +Key=39 + +[Command_743] +CmdId=CM_CALIB_FLASH_2 +VKey=0 +Key=0 + +[Command_744] +CmdId=ACTIVEX@DIAGNOSE.DiagnoseCtrl.1#ID_POPUP_ADD_USER_DEF_TELEGRAM +VKey=0 +Key=0 + +[Command_745] +CmdId=CM_TOGGLE_SCALE_FONT +VKey=3 +Key=70 + +[Command_746] +CmdId=CM_CALIBRATION_ACTIVE_1 +VKey=0 +Key=0 + +[Command_747] +CmdId=CM_CALIBRATION_UPDATE_4 +VKey=0 +Key=0 + +[Command_748] +CmdId=CM_SYMB_EXPL_SaveReferenceFile +VKey=0 +Key=0 + +[Command_749] +CmdId=CM_MACRO_INI+4 +VKey=0 +Key=0 + +[Command_750] +CmdId=CM_USERMENU4 +VKey=0 +Key=0 + +[Command_751] +CmdId=CM_CALIB_ONLINE_9 +VKey=0 +Key=0 + +[Command_752] +CmdId=CM_SET_AS_PULSEMASTER +VKey=0 +Key=0 + +[Command_753] +CmdId=CM_HEX_FILE_SAVE +VKey=0 +Key=0 + +[Command_754] +CmdId=CM_SHOW_UNSEL_SIGNALS_GRAY +VKey=7 +Key=189 + +[Command_755] +CmdId=CM_PROJ_CHANGE_ACCEPT_6 +VKey=0 +Key=0 + +[Command_756] +CmdId=CM_CREATE_AX_WINDOW_16 +VKey=0 +Key=0 + +[Command_757] +CmdId=CM_OPEN_PANEL_WINDOW_CONTAINER_4 +VKey=0 +Key=0 + +[Command_758] +CmdId=CM_DropDllBypassing +VKey=0 +Key=0 + +[Command_759] +CmdId=CM_YAXIS_LOCK_SCALE +VKey=3 +Key=0 + +[Command_760] +CmdId=CM_SHOW_DISPLAY_NAME +VKey=0 +Key=0 + +[Command_761] +CmdId=CM_SYMB_EXPL_AddDsFromDs +VKey=0 +Key=0 + +[Command_762] +CmdId=CM_MACRO_DIVISION +VKey=0 +Key=0 + +[Command_763] +CmdId=CM_FIT_ABOVE_CALCULATE +VKey=11 +Key=66 + +[Command_764] +CmdId=CM_CALHISTORY_SNAPSHOT_NR7 +VKey=0 +Key=0 + +[Command_765] +CmdId=CM_SHOW_DISABLED_SIGNALS +VKey=0 +Key=0 + +[Command_766] +CmdId=CM_MDICHILD_FIRST +VKey=0 +Key=0 + +[Command_767] +CmdId=CM_HEXWIN_SELECT_DEVICE +VKey=0 +Key=0 + +[Command_768] +CmdId=CM_DUP_ROW +VKey=0 +Key=0 + +[Command_769] +CmdId=CM_MEASUREMENT_START_REC_16 +VKey=0 +Key=0 + +[Command_770] +CmdId=CM_SYMB_EXPL_ResetDS +VKey=0 +Key=0 + +[Command_771] +CmdId=CM_BAR_AUTOMATIC +VKey=0 +Key=0 + +[Command_772] +CmdId=CM_CALIBRATION_RAM_8 +VKey=0 +Key=0 + +[Command_773] +CmdId=CM_MEASURELAST9 +VKey=0 +Key=0 + +[Command_774] +CmdId=CM_SETUPWND_MODULE_SETTINGS +VKey=0 +Key=0 + +[Command_775] +CmdId=CM_DEVEXP_ACTIVATE_NETWORK +VKey=0 +Key=0 + +[Command_776] +CmdId=CM_MIRROR +VKey=0 +Key=0 + +[Command_777] +CmdId=CM_PRINT_PAGE +VKey=0 +Key=0 + +[Command_778] +CmdId=CM_SHIFT_SINGLE_1_UP +VKey=23 +Key=38 + +[Command_779] +CmdId=CM_DS_DEVICE +VKey=0 +Key=0 + +[Command_780] +CmdId=CM_CHANGE_AREA_BY_LAPLACIAN_SMOOTHING +VKey=0 +Key=0 + +[Command_781] +CmdId=ACTIVEX@MATLAB.MatlabCtrl.50#ID_ADD_SUBSYSTEM_SIGNALS +VKey=3 +Key=107 + +[Command_782] +CmdId=CM_SHOWCHILDTOOLS +VKey=0 +Key=0 + +[Command_783] +CmdId=ACTIVEX@CNPTRACE.TraceCtrl.1#ID_REGTEST_CMD_SELECT_ALL +VKey=0 +Key=0 + +[Command_784] +CmdId=CM_ZOOM_REDO +VKey=7 +Key=8 + +[Command_785] +CmdId=CM_CALIBRATION_ACTIVE_EXT +VKey=0 +Key=0 + +[Command_786] +CmdId=CM_CALIBRATION_UNDO_1 +VKey=0 +Key=0 + +[Command_787] +CmdId=CM_MACRO_USER_DEFINED_FIELD+4 +VKey=0 +Key=0 + +[Command_788] +CmdId=CM_USERMENU14 +VKey=0 +Key=0 + +[Command_789] +CmdId=CM_CALIB_OFFLINE_7 +VKey=0 +Key=0 + +[Command_790] +CmdId=CM_AXIS_TEMPLATE_4 +VKey=3 +Key=0 + +[Command_791] +CmdId=ACTIVEX@FAULTMEMORY.FaultMemoryCtrl.1#ID_POPUP_OPTIONS +VKey=0 +Key=0 + +[Command_792] +CmdId=ACTIVEX@DIAGNOSE.DiagnoseCtrl.1#ID_POPUP_CLIPBOARD +VKey=9 +Key=67 + +[Command_793] +CmdId=ACTIVEX@OBD.OBDCtrl.1#ID_POPUP_CLIPBOARD +VKey=9 +Key=67 + +[Command_794] +CmdId=ACTIVEX@VARIANTCODING.VariantCodingCtrl.1#ID_POPUP_LOAD_SINGLE_STRING_VCS +VKey=0 +Key=0 + +[Command_795] +CmdId=CM_NEW_MDF +VKey=3 +Key=118 + +[Command_796] +CmdId=CM_CALIBRATION_DIRECT_ALL +VKey=0 +Key=0 + +[Command_797] +CmdId=CM_CALHISTORY_SNAPSHOT2 +VKey=0 +Key=0 + +[Command_798] +CmdId=CM_SIGNAL_USE_AS_X_AXIS_IN_GROUP +VKey=3 +Key=0 + +[Command_799] +CmdId=CM_DATABASE_EDIT +VKey=3 +Key=117 + +[Command_800] +CmdId=CM_MODIFY_VALSET2ORIGIN_ALL +VKey=15 +Key=122 + +[Command_801] +CmdId=CM_OPTIONS_GLOBAL_TIMEAXIS +VKey=0 +Key=0 + +[Command_802] +CmdId=CM_WINDOW_DLG +VKey=0 +Key=0 + +[Command_803] +CmdId=CM_MARK +VKey=3 +Key=77 + +[Command_804] +CmdId=CM_NEW_DEVICE_FROM_DATABASE +VKey=0 +Key=0 + +[Command_805] +CmdId=CM_NEWSTYLE_LEGEND_FONT +VKey=3 +Key=66 + +[Command_806] +CmdId=CM_MEASUREMENT_STOP_REC_6 +VKey=0 +Key=0 + +[Command_807] +CmdId=CM_TOGGLE_BOUNDINGBOX_GRADIENT +VKey=0 +Key=0 + +[Command_808] +CmdId=CM_CONVERTER_IMPORT_7 +VKey=0 +Key=0 + +[Command_809] +CmdId=CM_CONFIGNEW +VKey=0 +Key=0 + +[Command_810] +CmdId=CM_CALIBRATION_ONLINE_1 +VKey=0 +Key=0 + +[Command_811] +CmdId=CM_CREATE_DYNAMIC_CAL_WINDOW +VKey=0 +Key=0 + +[Command_812] +CmdId=CM_PARAMETERLAST9 +VKey=0 +Key=0 + +[Command_813] +CmdId=CM_DropTraceWnd +VKey=0 +Key=0 + +[Command_814] +CmdId=CM_CONVERTER_EXPORT_5 +VKey=0 +Key=0 + +[Command_815] +CmdId=CM_GRAPH_COMPONENT_REMOVE +VKey=0 +Key=0 + +[Command_816] +CmdId=CM_CONFIG_PROTECT +VKey=0 +Key=0 + +[Command_817] +CmdId=CM_PRINT_CONFIG +VKey=0 +Key=0 + +[Command_818] +CmdId=CM_CONFIGLAST10 +VKey=0 +Key=0 + +[Command_819] +CmdId=CM_PAGE_2 +VKey=19 +Key=50 + +[Command_820] +CmdId=CM_DS_DEVICE_9 +VKey=0 +Key=0 + +[Command_821] +CmdId=CM_DELETE_SIGNAL_COMMENT +VKey=0 +Key=0 + +[Command_822] +CmdId=CM_FILESIGNALLISTDLG_CLOSEFILE +VKey=0 +Key=0 + +[Command_823] +CmdId=CM_SHIFT_SINGLE_DOWN +VKey=7 +Key=40 + +[Command_824] +CmdId=CM_DE_COMMENT_FONT +VKey=3 +Key=0 + +[Command_825] +CmdId=CM_PROJECTSAVE +VKey=0 +Key=0 + +[Command_826] +CmdId=CM_DropDigitalWnd +VKey=0 +Key=0 + +[Command_827] +CmdId=CM_USERMENU24 +VKey=0 +Key=0 + +[Command_828] +CmdId=CM_CALIB_RAM_5 +VKey=0 +Key=0 + +[Command_829] +CmdId=CM_DELETE_CTRL_SHIFT +VKey=15 +Key=46 + +[Command_830] +CmdId=ACTIVEX@DIAGNOSE.DiagnoseCtrl.1#ID_POPUP_GO_OFFLINE +VKey=0 +Key=0 + +[Command_831] +CmdId=CM_MARKER1_LEFT +VKey=11 +Key=37 + +[Command_832] +CmdId=CM_CALIBRATION_DIRECT_8 +VKey=0 +Key=0 + +[Command_833] +CmdId=CM_ENZOOM +VKey=3 +Key=69 + +[Command_834] +CmdId=CM_CALIB_ONLINE_0 +VKey=0 +Key=0 + +[Command_835] +CmdId=CM_DATAMANAGEMENTFORPSET +VKey=0 +Key=0 + +[Command_836] +CmdId=CM_MEASUREMENT_SHOW_COMMENT +VKey=0 +Key=0 + +[Command_837] +CmdId=CM_SET_CALIB_FILTER +VKey=0 +Key=0 + +[Command_838] +CmdId=CM_PROJ_CHANGE_ACCEPT_ALL +VKey=0 +Key=0 + +[Command_839] +CmdId=CM_MACRO_DAY +VKey=0 +Key=0 + +[Command_840] +CmdId=CM_HEXWIN_FILL +VKey=11 +Key=70 + +[Command_841] +CmdId=CM_CREATE_AX_WINDOW_7 +VKey=0 +Key=0 + +[Command_842] +CmdId=CM_DockBar_Docked +VKey=0 +Key=0 + +[Command_843] +CmdId=CM_TOGGLE_VALUE_MODIFICATION_VIEW +VKey=11 +Key=69 + +[Command_844] +CmdId=CM_VN_STANDALONE_MODE_CONFIGURATION +VKey=0 +Key=0 + +[Command_845] +CmdId=CM_SYMB_EXPL_NO_OFFSET_ADJUSTMENT +VKey=0 +Key=0 + +[Command_846] +CmdId=CM_SHIFT_DOWN +VKey=3 +Key=40 + +[Command_847] +CmdId=CM_SHOW_SIGNAL_COMMENT +VKey=0 +Key=0 + +[Command_848] +CmdId=CM_SYMB_EXPL_CAL_FILE_SAVE +VKey=0 +Key=0 + +[Command_849] +CmdId=CM_MEASUREMENT_STOP_REC_16 +VKey=0 +Key=0 + +[Command_850] +CmdId=CM_MEA_CURSOR_POS_EDIT +VKey=0 +Key=0 + +[Command_851] +CmdId=CM_CALIBRATION_ONLINE_EXT +VKey=0 +Key=0 + +[Command_852] +CmdId=CM_PLAY_START +VKey=7 +Key=177 + +[Command_853] +CmdId=CM_DropMeaFunction +VKey=0 +Key=0 + +[Command_854] +CmdId=CM_OPEN_LOCAL_PROJECT_ON_LOGGER +VKey=0 +Key=0 + +[Command_855] +CmdId=CM_MEASUREMENT_START_REC_7 +VKey=0 +Key=0 + +[Command_856] +CmdId=CM_DownloadDsReferenceIntoFlash +VKey=0 +Key=0 + +[Command_857] +CmdId=CM_CONFIGURE_LEGEND +VKey=3 +Key=76 + +[Command_858] +CmdId=CM_COMMON_AXIS_SET_2 +VKey=0 +Key=0 + +[Command_859] +CmdId=CM_LEGEND_RIGHT +VKey=0 +Key=0 + +[Command_860] +CmdId=CM_BROWSER_SET_NAVIGATE_HOME_URL +VKey=19 +Key=76 + +[Command_861] +CmdId=CM_PROJECTLAST10 +VKey=0 +Key=0 + +[Command_862] +CmdId=CM_PAGE_EDIT +VKey=0 +Key=0 + +[Command_863] +CmdId=CM_HEXWIN_PASTE +VKey=11 +Key=86 + +[Command_864] +CmdId=CM_CHANGE_AREA_BY_INTERPOLATION_WITH_FKT_VALUES +VKey=0 +Key=0 + +[Command_865] +CmdId=CM_CONVERTER_SETUP_6 +VKey=0 +Key=0 + +[Command_866] +CmdId=CM_LOAD_PARAMSET +VKey=0 +Key=0 + +[Command_867] +CmdId=CM_DE_COMMENT_COPY +VKey=11 +Key=67 + +[Command_868] +CmdId=CM_SYMB_EXPL_ONLINE_MDF_FILE +VKey=0 +Key=0 + +[Command_869] +CmdId=CM_MARKER1_LEFT_END +VKey=11 +Key=36 + +[Command_870] +CmdId=CM_CALIB_FLASH_3 +VKey=0 +Key=0 + +[Command_871] +CmdId=ACTIVEX@DIAGNOSE.DiagnoseCtrl.1#ID_POPUP_DELETE_USER_DEF_TELEGRAM +VKey=0 +Key=0 + +[Command_872] +CmdId=CM_CALIBRATION_ACTIVE_2 +VKey=0 +Key=0 + +[Command_873] +CmdId=CM_CALIBRATION_UPDATE_5 +VKey=0 +Key=0 + +[Command_874] +CmdId=CM_MACRO_INI+5 +VKey=0 +Key=0 + +[Command_875] +CmdId=CM_USERMENU5 +VKey=0 +Key=0 + +[Command_876] +CmdId=CM_HEX_FILE_SAVEAS +VKey=0 +Key=0 + +[Command_877] +CmdId=CM_PARAM_EXPL +VKey=0 +Key=0 + +[Command_878] +CmdId=CM_PROJ_CHANGE_ACCEPT_7 +VKey=0 +Key=0 + +[Command_879] +CmdId=CM_CREATE_AX_WINDOW_17 +VKey=0 +Key=0 + +[Command_880] +CmdId=CM_OPEN_PANEL_WINDOW_CONTAINER_5 +VKey=0 +Key=0 + +[Command_881] +CmdId=CM_DropDllMatlab +VKey=0 +Key=0 + +[Command_882] +CmdId=CM_YAXIS_HIDE +VKey=3 +Key=0 + +[Command_883] +CmdId=CM_SETUP_TIME +VKey=3 +Key=84 + +[Command_884] +CmdId=CM_SYMB_EXPL_AddDataset +VKey=0 +Key=0 + +[Command_885] +CmdId=CM_MACRO_PROJECT +VKey=0 +Key=0 + +[Command_886] +CmdId=CM_CHANGE_COLOR +VKey=0 +Key=0 + +[Command_887] +CmdId=CM_CALHISTORY_SNAPSHOT_NR8 +VKey=0 +Key=0 + +[Command_888] +CmdId=CM_SYMB_EXPL_SAVE_CONV_TEMPLATE +VKey=0 +Key=0 + +[Command_889] +CmdId=CM_MACRO_PAGE_COUNT +VKey=0 +Key=0 + +[Command_890] +CmdId=CM_SymbolExplorer_PrintSymbolInTree +VKey=0 +Key=0 + +[Command_891] +CmdId=CM_COPY_SIGNALS +VKey=0 +Key=0 + +[Command_892] +CmdId=CM_MDICHILD_1 +VKey=0 +Key=0 + +[Command_893] +CmdId=CM_OPTIONS +VKey=0 +Key=0 + +[Command_894] +CmdId=CM_SETUPWND_FIT_OR_SCROLL +VKey=0 +Key=0 + +[Command_895] +CmdId=CM_DEL_COL +VKey=0 +Key=0 + +[Command_896] +CmdId=CM_TIME_FIT_CALCULATE +VKey=15 +Key=84 + +[Command_897] +CmdId=CM_LEGEND_ADJPOINT +VKey=3 +Key=0 + +[Command_898] +CmdId=CM_CALIBRATION_RAM_9 +VKey=0 +Key=0 + +[Command_899] +CmdId=CM_MEASURELAST10 +VKey=0 +Key=0 + +[Command_900] +CmdId=CM_INFO_CONTACT +VKey=0 +Key=0 + +[Command_901] +CmdId=CM_WRITE_CLEAR +VKey=0 +Key=0 + +[Command_902] +CmdId=CM_UNDO +VKey=19 +Key=8 + +[Command_903] +CmdId=CM_NEXT_S +VKey=3 +Key=9 + +[Command_904] +CmdId=CM_DEVEXP_LOAD_DEVICE +VKey=0 +Key=0 + +[Command_905] +CmdId=CM_VIEW_DB +VKey=19 +Key=13 + +[Command_906] +CmdId=CM_EXPORT_PAGE +VKey=0 +Key=0 + +[Command_907] +CmdId=CM_CONFIGLAST1 +VKey=0 +Key=0 + +[Command_908] +CmdId=CM_SHIFT_SINGLE_1_DOWN +VKey=23 +Key=40 + +[Command_909] +CmdId=CM_DS_DEVICE_0 +VKey=0 +Key=0 + +[Command_910] +CmdId=ACTIVEX@MATLAB.MatlabCtrl.50#ID_REMOVE_SUBSYSTEM_SIGNALS +VKey=3 +Key=109 + +[Command_911] +CmdId=ACTIVEX@CNPTRACE.TraceCtrl.1#ID_REGTEST_CMD_EXPAND_SEL +VKey=0 +Key=0 + +[Command_912] +CmdId=CM_OPTIONS_GLOBAL_CURSOR +VKey=0 +Key=0 + +[Command_913] +CmdId=CM_CALIBRATION_UNDO_2 +VKey=0 +Key=0 + +[Command_914] +CmdId=CM_MACRO_USER_DEFINED_FIELD+5 +VKey=0 +Key=0 + +[Command_915] +CmdId=CM_USERMENU15 +VKey=0 +Key=0 + +[Command_916] +CmdId=CM_CALIB_OFFLINE_8 +VKey=0 +Key=0 + +[Command_917] +CmdId=CM_AXIS_TEMPLATE_LAST +VKey=3 +Key=0 + +[Command_918] +CmdId=ACTIVEX@FAULTMEMORY.FaultMemoryCtrl.1#ID_POPUP_TESTER_PRESENT_ON +VKey=0 +Key=0 + +[Command_919] +CmdId=ACTIVEX@DIAGNOSE.DiagnoseCtrl.1#ID_POPUP_DELETE_MACRO +VKey=0 +Key=0 + +[Command_920] +CmdId=ACTIVEX@OBD.OBDCtrl.1#ID_POPUP_CLEAR +VKey=0 +Key=0 + +[Command_921] +CmdId=ACTIVEX@VARIANTCODING.VariantCodingCtrl.1#ID_POPUP_SAVE_SINGLE_STRING_VCS +VKey=0 +Key=0 + +[Command_922] +CmdId=CM_PAGE_UP +VKey=3 +Key=33 + +[Command_923] +CmdId=CM_CALIBRATION_DIRECT_NONE +VKey=0 +Key=0 + +[Command_924] +CmdId=CM_CALHISTORY_SHOW +VKey=0 +Key=0 + +[Command_925] +CmdId=CM_CREATE_VARIANT_CODING_WINDOW +VKey=0 +Key=0 + +[Command_926] +CmdId=CM_DATABASE_ACT +VKey=0 +Key=0 + +[Command_927] +CmdId=CM_HEXWIN_2BYTE_ADDRESS +VKey=0 +Key=0 + +[Command_928] +CmdId=CM_DB_TOGGLE_COLUMN_DEFAULT +VKey=0 +Key=0 + +[Command_929] +CmdId=CM_HOME +VKey=3 +Key=72 + +[Command_930] +CmdId=CM_DEVICE_GO_ONLINE +VKey=0 +Key=0 + +[Command_931] +CmdId=CM_PLAY_INSERT_INTO_TOOLBAR +VKey=0 +Key=0 + +[Command_932] +CmdId=CM_SYMB_EXPL_LOAD_MDF_FILE +VKey=0 +Key=0 + +[Command_933] +CmdId=CM_MEASUREMENT_STOP_REC_7 +VKey=0 +Key=0 + +[Command_934] +CmdId=CM_TEMPLATES_ADD +VKey=0 +Key=0 + +[Command_935] +CmdId=CM_CONVERTER_IMPORT_8 +VKey=0 +Key=0 + +[Command_936] +CmdId=CM_CONFIGRESTORE +VKey=0 +Key=0 + +[Command_937] +CmdId=CM_CALIBRATION_ONLINE_2 +VKey=0 +Key=0 + +[Command_938] +CmdId=CM_NEWSTYLE_ACTIVE +VKey=3 +Key=71 + +[Command_939] +CmdId=CM_PARAMETERLAST10 +VKey=0 +Key=0 + +[Command_940] +CmdId=CM_CONVERTER_EXPORT_6 +VKey=0 +Key=0 + +[Command_941] +CmdId=CM_GRAPH_COMPONENT_UP +VKey=0 +Key=0 + +[Command_942] +CmdId=CM_PDF_FOR_CURRENT_CONFIG +VKey=0 +Key=0 + +[Command_943] +CmdId=CM_PROJECTLAST1 +VKey=0 +Key=0 + +[Command_944] +CmdId=CM_PAGE_3 +VKey=19 +Key=51 + +[Command_945] +CmdId=CM_EXTEND_LEFT +VKey=7 +Key=37 + +[Command_946] +CmdId=CM_DS_Properties +VKey=0 +Key=0 + +[Command_947] +CmdId=CM_SAVE_SIGNAL_COMMENTS +VKey=0 +Key=0 + +[Command_948] +CmdId=CM_FILESIGNALLISTDLG_CLOSE +VKey=0 +Key=0 + +[Command_949] +CmdId=CM_TOGGLE_TIMEAXIS +VKey=3 +Key=86 + +[Command_950] +CmdId=CM_DE_COMMENT_LIST +VKey=3 +Key=0 + +[Command_951] +CmdId=CM_USERMENU25 +VKey=0 +Key=0 + +[Command_952] +CmdId=CM_CALIB_RAM_6 +VKey=0 +Key=0 + +[Command_953] +CmdId=CM_FILESIGNALLISTDLG_DELETESIG +VKey=0 +Key=0 + +[Command_954] +CmdId=ACTIVEX@DIAGNOSE.DiagnoseCtrl.1#ID_POPUP_OPEN_CALIBRATIONWINDOW +VKey=0 +Key=0 + +[Command_955] +CmdId=CM_MARKER1_RIGHT +VKey=11 +Key=39 + +[Command_956] +CmdId=CM_DM_ACTIVECELLOBJECTWITHGRID +VKey=0 +Key=0 + +[Command_957] +CmdId=CM_CALIBRATION_DIRECT_9 +VKey=0 +Key=0 + +[Command_958] +CmdId=CM_ZOOM_UNDO +VKey=3 +Key=8 + +[Command_959] +CmdId=CM_MACRO_DATESTR +VKey=0 +Key=0 + +[Command_960] +CmdId=CM_CALIB_ONLINE_1 +VKey=0 +Key=0 + +[Command_961] +CmdId=CM_SET_AS_TIMEMASTER +VKey=0 +Key=0 + +[Command_962] +CmdId=CM_PROJ_CHANGE_MORE +VKey=0 +Key=0 + +[Command_963] +CmdId=CM_MACRO_HOUR +VKey=0 +Key=0 + +[Command_964] +CmdId=CM_CREATE_ARR_MEASURE_WINDOW +VKey=0 +Key=0 + +[Command_965] +CmdId=CM_CREATE_AX_WINDOW_8 +VKey=0 +Key=0 + +[Command_966] +CmdId=CM_TOGGLE_GRAFIC_VIEW +VKey=11 +Key=71 + +[Command_967] +CmdId=CM_NEW_STATISTIC_COLUMN +VKey=0 +Key=0 + +[Command_968] +CmdId=CM_SYMB_EXPL_REPLACE_MDF_FILE +VKey=0 +Key=0 + +[Command_969] +CmdId=CM_CREATE_DOT_NET_WINDOW +VKey=0 +Key=0 + +[Command_970] +CmdId=CM_FORMAT_PHY +VKey=11 +Key=80 + +[Command_971] +CmdId=CM_CALHISTORY_SNAPSHOT_ALL +VKey=0 +Key=0 + +[Command_972] +CmdId=CM_SymbolExplorer_PasteIn +VKey=0 +Key=0 + +[Command_973] +CmdId=CM_DIF_CURSOR_POS_EDIT +VKey=0 +Key=0 + +[Command_974] +CmdId=CM_NEW_ALGEBRAIC_MEA_SIGNAL +VKey=0 +Key=0 + +[Command_975] +CmdId=CM_MEASUREMENT_START_DSP +VKey=0 +Key=0 + +[Command_976] +CmdId=CM_PLAY_FF +VKey=3 +Key=176 + +[Command_977] +CmdId=CM_MEASUREMENT_START_REC_8 +VKey=0 +Key=0 + +[Command_978] +CmdId=CM_SaveWorkingFile +VKey=0 +Key=0 + +[Command_979] +CmdId=CM_CALIBRATION_RAM_0 +VKey=7 +Key=123 + +[Command_980] +CmdId=CM_COMMON_AXIS_SET_3 +VKey=0 +Key=0 + +[Command_981] +CmdId=CM_LEGEND_EXTN +VKey=0 +Key=0 + +[Command_982] +CmdId=CM_BROWSER_NAVIGATE_HOME +VKey=19 +Key=72 + +[Command_983] +CmdId=CM_MEASURELAST1 +VKey=0 +Key=0 + +[Command_984] +CmdId=CM_DropDynamikCalWnd +VKey=0 +Key=0 + +[Command_985] +CmdId=CM_PAGE_DELETE +VKey=0 +Key=0 + +[Command_986] +CmdId=CM_HEXWIN_SAVE_FILE +VKey=7 +Key=83 + +[Command_987] +CmdId=CM_CONVERTER_SETUP_7 +VKey=0 +Key=0 + +[Command_988] +CmdId=CM_SAVE_PARAM_SET +VKey=0 +Key=0 + +[Command_989] +CmdId=CM_DE_COMMENT_PASTE +VKey=11 +Key=86 + +[Command_990] +CmdId=CM_NEW_DEVICE_FROM_TEAMSERVICES +VKey=0 +Key=0 + +[Command_991] +CmdId=CM_MARKER2_LEFT_END +VKey=7 +Key=36 + +[Command_992] +CmdId=CM_CALIB_FLASH_4 +VKey=0 +Key=0 + +[Command_993] +CmdId=CM_CHANGE_AREA_BY_INTERPOLATION_WITHOUT_FKT_VALUES +VKey=0 +Key=0 + +[Command_994] +CmdId=ACTIVEX@MATLAB.MatlabCtrl.50#ID_EXTENDED_TOOLTIP +VKey=3 +Key=84 + +[Command_995] +CmdId=CM_PROJECTNEW +VKey=0 +Key=0 + +[Command_996] +CmdId=ACTIVEX@DIAGNOSE.DiagnoseCtrl.1#ID_POPUP_CONFIG_USER_DEF_TELEGRAM +VKey=0 +Key=0 + +[Command_997] +CmdId=ACTIVEX@CNPTRACE.TraceCtrl.1#ID_TOGGLE_LOGGING +VKey=17 +Key=0 + +[Command_998] +CmdId=CM_SHOW_SEARCH_BAR +VKey=11 +Key=72 + +[Command_999] +CmdId=CM_GOTO_LOCATION +VKey=0 +Key=0 + +[Command_1000] +CmdId=CM_CASCADECHILDREN_NEW +VKey=0 +Key=0 + +[Command_1001] +CmdId=CM_CALIBRATION_ACTIVE_3 +VKey=0 +Key=0 + +[Command_1002] +CmdId=CM_CALIBRATION_UPDATE_6 +VKey=0 +Key=0 + +[Command_1003] +CmdId=CM_MACRO_INI+6 +VKey=0 +Key=0 + +[Command_1004] +CmdId=CM_USERMENU6 +VKey=0 +Key=0 + +[Command_1005] +CmdId=CM_PROJ_CHANGE_ACCEPT_8 +VKey=0 +Key=0 + +[Command_1006] +CmdId=CM_CREATE_AX_WINDOW_18 +VKey=0 +Key=0 + +[Command_1007] +CmdId=CM_OPEN_PANEL_WINDOW_CONTAINER_6 +VKey=0 +Key=0 + +[Command_1008] +CmdId=CM_DropDllVirtualMatlab +VKey=0 +Key=0 + +[Command_1009] +CmdId=CM_YAXIS_GO_TO_DISPLAY +VKey=3 +Key=0 + +[Command_1010] +CmdId=CM_SETUP +VKey=11 +Key=83 + +[Command_1011] +CmdId=CM_SYMB_EXPL_DeleteDataset +VKey=0 +Key=0 + +[Command_1012] +CmdId=CM_MACRO_SUBJECT +VKey=0 +Key=0 + +[Command_1013] +CmdId=CM_FUNCTION_COMPOSER +VKey=0 +Key=0 + +[Command_1014] +CmdId=CM_CALHISTORY_SNAPSHOT_NR9 +VKey=0 +Key=0 + +[Command_1015] +CmdId=CM_SYMB_EXPL_GROUP_DATASETS +VKey=0 +Key=0 + +[Command_1016] +CmdId=CM_MDICHILD_2 +VKey=0 +Key=0 + +[Command_1017] +CmdId=CM_CONFIGURATIONS_MANAGER +VKey=0 +Key=0 + +[Command_1018] +CmdId=CM_SETUPWND_FONT_BLOCK +VKey=0 +Key=0 + +[Command_1019] +CmdId=CM_SET_BESTFIT_MODE_FOR_COLUMNS +VKey=0 +Key=0 + +[Command_1020] +CmdId=CM_DEL_ROW +VKey=0 +Key=0 + +[Command_1021] +CmdId=CM_CALIBRATION_RAM_10 +VKey=0 +Key=0 + +[Command_1022] +CmdId=CM_PARAMETERLAST1 +VKey=0 +Key=0 + +[Command_1023] +CmdId=CM_INITIALIZE_CALIBRATION_RAM +VKey=0 +Key=0 + +[Command_1024] +CmdId=CM_TXT_ABSOLUTE_TIME +VKey=0 +Key=0 + +[Command_1025] +CmdId=CM_REDO +VKey=23 +Key=8 + +[Command_1026] +CmdId=CM_PREV_S +VKey=7 +Key=9 + +[Command_1027] +CmdId=CM_SETUPWND_DATAMANAGEMENT +VKey=0 +Key=0 + +[Command_1028] +CmdId=kButtonIdentify +VKey=0 +Key=0 + +[Command_1029] +CmdId=CM_DE_COMMENT_BOLD +VKey=3 +Key=0 + +[Command_1030] +CmdId=CM_CONFIGLAST2 +VKey=0 +Key=0 + +[Command_1031] +CmdId=CM_DS_DEVICE_1 +VKey=0 +Key=0 + +[Command_1032] +CmdId=CM_CREATE_DOCKEDSIGNALSELWND +VKey=11 +Key=13 + +[Command_1033] +CmdId=ACTIVEX@CNPTRACE.TraceCtrl.1#ID_REGTEST_CMD_DUMP_SEL +VKey=0 +Key=0 + +[Command_1034] +CmdId=CM_OMIT_INDEX_IN_TREE_ALL +VKey=0 +Key=0 + +[Command_1035] +CmdId=CM_SHOWMAINTOOLS +VKey=0 +Key=0 + +[Command_1036] +CmdId=CM_FILTER_SIGNAL +VKey=0 +Key=0 + +[Command_1037] +CmdId=CM_CALIBRATION_UNDO_3 +VKey=0 +Key=0 + +[Command_1038] +CmdId=CM_MACRO_USER_DEFINED_FIELD+6 +VKey=0 +Key=0 + +[Command_1039] +CmdId=CM_USERMENU16 +VKey=0 +Key=0 + +[Command_1040] +CmdId=CM_CALIB_OFFLINE_9 +VKey=0 +Key=0 + +[Command_1041] +CmdId=ACTIVEX@PANELDOTNET.PanelDotNetCtrl.70#ID_EDIT_PANEL +VKey=17 +Key=80 + +[Command_1042] +CmdId=ACTIVEX@MATLAB.MatlabCtrl.50#ID_ZOOMIN +VKey=3 +Key=69 + +[Command_1043] +CmdId=CM_AXIS_TEMPLATE_SELECT +VKey=3 +Key=0 + +[Command_1044] +CmdId=ACTIVEX@FAULTMEMORY.FaultMemoryCtrl.1#ID_POPUP_TESTER_PRESENT_OFF +VKey=0 +Key=0 + +[Command_1045] +CmdId=ACTIVEX@DIAGNOSE.DiagnoseCtrl.1#ID_POPUP_SHOW_PARAM_COMMENT +VKey=0 +Key=0 + +[Command_1046] +CmdId=ACTIVEX@OBD.OBDCtrl.1#ID_POPUP_SHOW_TRACE +VKey=0 +Key=0 + +[Command_1047] +CmdId=CM_PAGE_DOWN +VKey=3 +Key=34 + +[Command_1048] +CmdId=CM_CALIBRATION_DIRECT_0 +VKey=0 +Key=0 + +[Command_1049] +CmdId=CM_CREATE_FUNCTION_WINDOW +VKey=0 +Key=0 + +[Command_1050] +CmdId=CM_PROJECTOPEN +VKey=0 +Key=0 + +[Command_1051] +CmdId=CM_MACRO_DIRECTORY +VKey=0 +Key=0 + +[Command_1052] +CmdId=CM_HEXWIN_SHOW_ASCII +VKey=0 +Key=0 + +[Command_1053] +CmdId=CM_2DUNTEN +VKey=0 +Key=0 + +[Command_1054] +CmdId=CM_CREATE_NEW_PANEL_WINDOW +VKey=0 +Key=0 + +[Command_1055] +CmdId=CM_DEZOOMY +VKey=0 +Key=0 + +[Command_1056] +CmdId=CM_DATAWINDOW_SEARCH +VKey=11 +Key=70 + +[Command_1057] +CmdId=CM_COPYPROJECTDIRPATH +VKey=0 +Key=0 + +[Command_1058] +CmdId=CM_MODULE_ACTIVATE +VKey=0 +Key=0 + +[Command_1059] +CmdId=CM_MEASUREMENT_STOP_REC_8 +VKey=0 +Key=0 + +[Command_1060] +CmdId=CM_ROTATE_VIEW_LEFT +VKey=11 +Key=37 + +[Command_1061] +CmdId=CM_CONVERTER_IMPORT_9 +VKey=0 +Key=0 + +[Command_1062] +CmdId=CM_CONFIGPARTOPEN +VKey=0 +Key=0 + +[Command_1063] +CmdId=CM_CALIBRATION_ONLINE_3 +VKey=0 +Key=0 + +[Command_1064] +CmdId=CM_NEWSTYLE_COLOR +VKey=3 +Key=67 + +[Command_1065] +CmdId=CM_SHOW_PROJECT_MANAGER +VKey=0 +Key=0 + +[Command_1066] +CmdId=CM_MEASUREMENT_START_REC +VKey=0 +Key=0 + +[Command_1067] +CmdId=CM_DropDeviceWnd +VKey=0 +Key=0 + +[Command_1068] +CmdId=CM_CONVERTER_EXPORT_7 +VKey=0 +Key=0 + +[Command_1069] +CmdId=CM_GRAPH_COMPONENT_DOWN +VKey=0 +Key=0 + +[Command_1070] +CmdId=CM_PROJECTLAST2 +VKey=0 +Key=0 + +[Command_1071] +CmdId=CM_PAGE_4 +VKey=19 +Key=52 + +[Command_1072] +CmdId=CM_EXTEND_RIGHT +VKey=7 +Key=39 + +[Command_1073] +CmdId=CM_SYMB_EXPL_DuplicateDataset +VKey=0 +Key=0 + +[Command_1074] +CmdId=CM_FILESIGNALLISTDLG_DBVIEW +VKey=3 +Key=117 + +[Command_1075] +CmdId=CM_HEX_FILE_CLOSE +VKey=0 +Key=0 + +[Command_1076] +CmdId=CM_DE_COMMENT_LEFT +VKey=3 +Key=0 + +[Command_1077] +CmdId=CM_SAVE_SELECTED_PARAMETERS +VKey=0 +Key=0 + +[Command_1078] +CmdId=CM_DropBarWnd +VKey=0 +Key=0 + +[Command_1079] +CmdId=CM_USERMENU26 +VKey=0 +Key=0 + +[Command_1080] +CmdId=CM_CALIB_RAM_7 +VKey=0 +Key=0 + +[Command_1081] +CmdId=CM_FILESIGNALLISTDLG_DELETE +VKey=3 +Key=46 + +[Command_1082] +CmdId=ACTIVEX@DIAGNOSE.DiagnoseCtrl.1#ID_POPUP_SHOW_PARAM_UNIT +VKey=0 +Key=0 + +[Command_1083] +CmdId=CM_MARKER2_LEFT +VKey=7 +Key=37 + +[Command_1084] +CmdId=CM_CALIBRATION_DIRECT_EXT +VKey=0 +Key=0 + +[Command_1085] +CmdId=CM_MACRO_SECOND +VKey=0 +Key=0 + +[Command_1086] +CmdId=CM_TOGGLE_YAXIS +VKey=0 +Key=0 + +[Command_1087] +CmdId=CM_MODIFY_UNDO +VKey=19 +Key=8 + +[Command_1088] +CmdId=CM_CALIB_ONLINE_2 +VKey=0 +Key=0 + +[Command_1089] +CmdId=CM_MEASUREMENT_COMMENT +VKey=19 +Key=67 + +[Command_1090] +CmdId=CM_MACRO_MINUTE +VKey=0 +Key=0 + +[Command_1091] +CmdId=CM_CREATE_AX_WINDOW_9 +VKey=0 +Key=0 + +[Command_1092] +CmdId=CM_DockBar_Floated +VKey=0 +Key=0 + +[Command_1093] +CmdId=CM_TOGGLE_NUMERIC_VIEW +VKey=11 +Key=85 + +[Command_1094] +CmdId=CM_OPTIONS_DISPLAY_TRIGGER_LINES +VKey=0 +Key=0 + +[Command_1095] +CmdId=CM_SYMB_EXPL_SELECT_DEV_4_LOSTDEV +VKey=0 +Key=0 + +[Command_1096] +CmdId=CM_MODE_X +VKey=3 +Key=88 + +[Command_1097] +CmdId=CM_HEXWIN_SHOW_DECIMAL +VKey=0 +Key=0 + +[Command_1098] +CmdId=CM_FILESIGNALLISTDLG_DEFREPLACEFILE +VKey=0 +Key=0 + +[Command_1099] +CmdId=CM_FORMAT_HEX +VKey=11 +Key=72 + +[Command_1100] +CmdId=CM_CALHISTORY_SNAPSHOT_NR0 +VKey=0 +Key=0 + +[Command_1101] +CmdId=CM_MACRO_DISPLAYED_FILEID +VKey=0 +Key=0 + +[Command_1102] +CmdId=CM_GRAPH_FIT +VKey=0 +Key=0 + +[Command_1103] +CmdId=CM_CREATE_GRA_WINDOW +VKey=0 +Key=0 + +[Command_1104] +CmdId=CM_ORDER_TEST_LICENSE +VKey=0 +Key=0 + +[Command_1105] +CmdId=CM_SHOW_MEA_CONFIG_FOR_SIGNAL +VKey=7 +Key=115 + +[Command_1106] +CmdId=CM_PLAY_FR +VKey=3 +Key=177 + +[Command_1107] +CmdId=CM_MEASUREMENT_START_REC_9 +VKey=0 +Key=0 + +[Command_1108] +CmdId=CM_MEA_DATA_FILTER_DISABLE_ALL +VKey=0 +Key=0 + +[Command_1109] +CmdId=CM_LEGEND_LN_COMMENT +VKey=0 +Key=0 + +[Command_1110] +CmdId=CM_CALIBRATION_RAM_1 +VKey=0 +Key=0 + +[Command_1111] +CmdId=CM_COMMON_AXIS_SET_4 +VKey=0 +Key=0 + +[Command_1112] +CmdId=CM_PAGE_LEFT_TEXT +VKey=19 +Key=37 + +[Command_1113] +CmdId=CM_BROWSER_REFRESH +VKey=19 +Key=116 + +[Command_1114] +CmdId=CM_MEASURELAST2 +VKey=0 +Key=0 + +[Command_1115] +CmdId=CM_HEXWIN_LOAD_FILE +VKey=11 +Key=76 + +[Command_1116] +CmdId=CM_CONVERTER_SETUP_8 +VKey=0 +Key=0 + +[Command_1117] +CmdId=CM_FIT_TO_PAGE +VKey=11 +Key=113 + +[Command_1118] +CmdId=CM_DEVEXP_NEW_CAN_NETWORK +VKey=0 +Key=0 + +[Command_1119] +CmdId=CM_CHANGE_COLFUNC +VKey=0 +Key=0 + +[Command_1120] +CmdId=CM_DropHexWnd +VKey=0 +Key=0 + +[Command_1121] +CmdId=CM_MARKER1_RIGHT_END +VKey=11 +Key=35 + +[Command_1122] +CmdId=CM_CALIB_FLASH_5 +VKey=0 +Key=0 + +[Command_1123] +CmdId=CM_PROJECTSAVEAS +VKey=0 +Key=0 + +[Command_1124] +CmdId=ACTIVEX@CNPTRACE.TraceCtrl.1#ID_TOGGLE_CLEAR_START +VKey=4 +Key=0 + +[Command_1125] +CmdId=CM_GRAPH_TYPE +VKey=0 +Key=0 + +[Command_1126] +CmdId=CM_SHIFT_TO_TOP +VKey=11 +Key=38 + +[Command_1127] +CmdId=CM_CALIBRATION_ACTIVE_4 +VKey=0 +Key=0 + +[Command_1128] +CmdId=CM_CALIBRATION_UPDATE_7 +VKey=0 +Key=0 + +[Command_1129] +CmdId=CM_MACRO_INI+7 +VKey=0 +Key=0 + +[Command_1130] +CmdId=CM_USERMENU7 +VKey=0 +Key=0 + +[Command_1131] +CmdId=CM_CALIB_OFFLINE_0 +VKey=0 +Key=0 + +[Command_1132] +CmdId=CM_DATAMINING +VKey=0 +Key=0 + +[Command_1133] +CmdId=CM_HEX_FILE_LOAD +VKey=0 +Key=0 + +[Command_1134] +CmdId=CM_INSERT_DISPLAY +VKey=3 +Key=45 + +[Command_1135] +CmdId=CM_PROJ_CHANGE_ACCEPT_9 +VKey=0 +Key=0 + +[Command_1136] +CmdId=CM_CALHISTORY_SHOW_CURR_BASELINE_DIFF +VKey=0 +Key=0 + +[Command_1137] +CmdId=CM_CREATE_AX_WINDOW_19 +VKey=0 +Key=0 + +[Command_1138] +CmdId=CM_OPEN_PANEL_WINDOW_CONTAINER_7 +VKey=0 +Key=0 + +[Command_1139] +CmdId=CM_RELMODE +VKey=0 +Key=0 + +[Command_1140] +CmdId=CM_SYMB_EXPL_ActivateDataset +VKey=0 +Key=0 + +[Command_1141] +CmdId=CM_MACRO_COMMENT +VKey=0 +Key=0 + +[Command_1142] +CmdId=CM_SYMB_EXPL_DS_COMPRESS +VKey=0 +Key=0 + +[Command_1143] +CmdId=CM_SymbolExplorer_Delete +VKey=0 +Key=0 + +[Command_1144] +CmdId=CM_3D_VIEW +VKey=0 +Key=0 + +[Command_1145] +CmdId=CM_MDICHILD_3 +VKey=0 +Key=0 + +[Command_1146] +CmdId=CM_PRINT_PREVIEW_DESKTOP +VKey=0 +Key=0 + +[Command_1147] +CmdId=CM_SETUPWND_FONT_COMMENT +VKey=0 +Key=0 + +[Command_1148] +CmdId=CM_MOVE_CURVE_UP +VKey=15 +Key=38 + +[Command_1149] +CmdId=CM_UPDATE_DEPENDENT_PARAMETERS +VKey=0 +Key=0 + +[Command_1150] +CmdId=CM_MEASUREMENT_STOP_REC +VKey=0 +Key=0 + +[Command_1151] +CmdId=CM_DropGeneralParameterWnd +VKey=0 +Key=0 + +[Command_1152] +CmdId=CM_CALIBRATION_RAM_EXT +VKey=0 +Key=0 + +[Command_1153] +CmdId=CM_MARKER10_LEFT +VKey=27 +Key=37 + +[Command_1154] +CmdId=CM_PARAMETERLAST2 +VKey=0 +Key=0 + +[Command_1155] +CmdId=CM_PLAY_DECREASE +VKey=11 +Key=109 + +[Command_1156] +CmdId=CM_MEASUREMENT_ONLINE_DSP +VKey=0 +Key=0 + +[Command_1157] +CmdId=CM_PASTE_CLIPBOARD +VKey=11 +Key=86 + +[Command_1158] +CmdId=CM_DEVEXP_NETWORK_SETTINGS +VKey=0 +Key=0 + +[Command_1159] +CmdId=CM_BAR_VER_BOTTOM +VKey=0 +Key=0 + +[Command_1160] +CmdId=CM_DE_COMMENT_ITALIC +VKey=3 +Key=0 + +[Command_1161] +CmdId=CM_CONFIGLAST3 +VKey=0 +Key=0 + +[Command_1162] +CmdId=CM_CALIBRATION_UPDATE_PARAM +VKey=0 +Key=0 + +[Command_1163] +CmdId=CM_NEW_OBD_DEVICE +VKey=0 +Key=0 + +[Command_1164] +CmdId=CM_DS_DEVICE_2 +VKey=0 +Key=0 + +[Command_1165] +CmdId=ACTIVEX@CNPTRACE.TraceCtrl.1#ID_REGTEST_CMD_DUMP_SEL_APPEND +VKey=0 +Key=0 + +[Command_1166] +CmdId=CM_OMIT_INDEX_IN_TREE_NONE +VKey=0 +Key=0 + +[Command_1167] +CmdId=CM_BAR_FIXED +VKey=0 +Key=0 + +[Command_1168] +CmdId=CM_CONFIG_CALIBRATION_QUALITY_DATA +VKey=0 +Key=0 + +[Command_1169] +CmdId=CM_CALIBRATION_UNDO_4 +VKey=0 +Key=0 + +[Command_1170] +CmdId=CM_MACRO_USER_DEFINED_FIELD+7 +VKey=0 +Key=0 + +[Command_1171] +CmdId=CM_USERMENU17 +VKey=0 +Key=0 + +[Command_1172] +CmdId=ACTIVEX@PANELDOTNET.PanelDotNetCtrl.70#ID_ASSIGN_DATA +VKey=17 +Key=81 + +[Command_1173] +CmdId=CM_REMOVE_SELDISP +VKey=0 +Key=0 + +[Command_1174] +CmdId=ACTIVEX@MATLAB.MatlabCtrl.50#ID_ZOOMOUT +VKey=3 +Key=68 + +[Command_1175] +CmdId=CM_AXIS_TEMPLATE_CONFIG +VKey=3 +Key=0 + +[Command_1176] +CmdId=ACTIVEX@FAULTMEMORY.FaultMemoryCtrl.1#ID_POPUP_CYCLIC_UPDATE_ON +VKey=0 +Key=0 + +[Command_1177] +CmdId=ACTIVEX@DIAGNOSE.DiagnoseCtrl.1#ID_POPUP_SHOW_PARAM_IDENTIFIER +VKey=0 +Key=0 + +[Command_1178] +CmdId=ACTIVEX@OBD.OBDCtrl.1#ID_POPUP_CLOSE_TRACE +VKey=0 +Key=0 + +[Command_1179] +CmdId=CM_PAGE_HOME +VKey=3 +Key=36 + +[Command_1180] +CmdId=CM_CALIBRATION_DIRECT_1 +VKey=0 +Key=0 + +[Command_1181] +CmdId=CM_CALHISTORY_SNAPSHOT +VKey=0 +Key=0 + +[Command_1182] +CmdId=CM_CREATE_WEBVIEW_WINDOW +VKey=0 +Key=0 + +[Command_1183] +CmdId=CM_TARA_START +VKey=0 +Key=0 + +[Command_1184] +CmdId=CM_2DRECHTS +VKey=0 +Key=0 + +[Command_1185] +CmdId=CM_IMPORT_PANEL_WINDOW_CONTAINER +VKey=0 +Key=0 + +[Command_1186] +CmdId=CM_ENZOOMY +VKey=0 +Key=0 + +[Command_1187] +CmdId=CM_AUTOTEST +VKey=19 +Key=123 + +[Command_1188] +CmdId=CM_SYMB_EXPL_SELECT_VAR_4_LOSTVAR +VKey=0 +Key=0 + +[Command_1189] +CmdId=CM_CONFIGURATIONS_MANAGER_CONTEXTMENU +VKey=0 +Key=0 + +[Command_1190] +CmdId=CM_MEASUREMENT_STOP_REC_9 +VKey=0 +Key=0 + +[Command_1191] +CmdId=CM_ROTATE_VIEW_RIGHT +VKey=11 +Key=39 + +[Command_1192] +CmdId=CM_OPTIONS_DISPLAY_MARKER_LINES +VKey=0 +Key=0 + +[Command_1193] +CmdId=CM_CONVERTER_IMPORT_10 +VKey=0 +Key=0 + +[Command_1194] +CmdId=CM_COPY_CLIPBOARD +VKey=11 +Key=67 + +[Command_1195] +CmdId=CM_CALIBRATION_ONLINE_4 +VKey=0 +Key=0 + +[Command_1196] +CmdId=CM_MEASUREMENT_OFFLINE_DSP +VKey=0 +Key=0 + +[Command_1197] +CmdId=CM_MEASUREMENT_START_REC_ALL +VKey=0 +Key=0 + +[Command_1198] +CmdId=CM_CONVERTER_EXPORT_8 +VKey=0 +Key=0 + +[Command_1199] +CmdId=CM_LEGEND_NOT +VKey=0 +Key=0 + +[Command_1200] +CmdId=CM_PROJECTLAST3 +VKey=0 +Key=0 + +[Command_1201] +CmdId=CM_DropCalWnd +VKey=0 +Key=0 + +[Command_1202] +CmdId=CM_PAGE_5 +VKey=19 +Key=53 + +[Command_1203] +CmdId=CM_EXTEND_UP +VKey=7 +Key=38 + +[Command_1204] +CmdId=CM_LoadSnapshotInCANape +VKey=0 +Key=0 + +[Command_1205] +CmdId=CM_FILESIGNALLISTDLG_COMMENT +VKey=19 +Key=67 + +[Command_1206] +CmdId=CM_SHIFT_LEFT_TEXT +VKey=3 +Key=37 + +[Command_1207] +CmdId=CM_DE_COMMENT_RIGHT +VKey=3 +Key=0 + +[Command_1208] +CmdId=CM_USERMENU27 +VKey=0 +Key=0 + +[Command_1209] +CmdId=CM_OPEN_VMDM_CONSOLE +VKey=0 +Key=0 + +[Command_1210] +CmdId=CM_CALIB_RAM_8 +VKey=0 +Key=0 + +[Command_1211] +CmdId=CM_CREATE_GLOBAL_COMMENT +VKey=11 +Key=71 + +[Command_1212] +CmdId=ACTIVEX@DIAGNOSE.DiagnoseCtrl.1#ID_POPUP_OPEN_TESTER_PRESENT_ON +VKey=0 +Key=0 + +[Command_1213] +CmdId=ACTIVEX@CNPTRACE.TraceCtrl.1#ID_CLEAR_CONTENT +VKey=17 +Key=0 + +[Command_1214] +CmdId=CM_MARKER2_RIGHT +VKey=7 +Key=39 + +[Command_1215] +CmdId=CM_CONFIG_COLUMNS +VKey=0 +Key=0 + +[Command_1216] +CmdId=CM_FIT +VKey=3 +Key=70 + +[Command_1217] +CmdId=CM_MACRO_PROJECTNAME +VKey=0 +Key=0 + +[Command_1218] +CmdId=CM_MULTI_YAXIS +VKey=0 +Key=0 + +[Command_1219] +CmdId=CM_MODIFY_REDO +VKey=23 +Key=8 + +[Command_1220] +CmdId=CM_CALIB_ONLINE_3 +VKey=0 +Key=0 + +[Command_1221] +CmdId=CM_DropCnaLoad +VKey=0 +Key=0 + +[Command_1222] +CmdId=CM_CHANGE_DIM +VKey=0 +Key=0 + +[Command_1223] +CmdId=CM_EDIT_COLUMNS +VKey=0 +Key=0 + +[Command_1224] +CmdId=CM_MEASUREMENT_PAUSE +VKey=3 +Key=121 + +[Command_1225] +CmdId=CM_PROJ_CHANGE_ACCEPT_0 +VKey=0 +Key=0 + +[Command_1226] +CmdId=CM_CREATE_AX_WINDOW_10 +VKey=0 +Key=0 + +[Command_1227] +CmdId=CM_CREATE_ADAS_GPS_WINDOW +VKey=0 +Key=0 + +[Command_1228] +CmdId=CM_OPTIONS_DISPLAY_HIT_LINES +VKey=0 +Key=0 + +[Command_1229] +CmdId=CM_FILESIGNALLISTDLG_SAVE_RESTORED +VKey=0 +Key=0 + +[Command_1230] +CmdId=CM_MODE_Y +VKey=3 +Key=89 + +[Command_1231] +CmdId=CM_WRITE_ABSOLUTE_TIME +VKey=0 +Key=0 + +[Command_1232] +CmdId=CM_DEVEXP_NEW_KLINE_NETWORK +VKey=0 +Key=0 + +[Command_1233] +CmdId=CM_FORMAT_DEC +VKey=11 +Key=68 + +[Command_1234] +CmdId=CM_CALHISTORY_SNAPSHOT_NR1 +VKey=0 +Key=0 + +[Command_1235] +CmdId=CM_NEW_VIRT_CASL_BASED_CHANNEL +VKey=0 +Key=0 + +[Command_1236] +CmdId=CM_MACRO_DISPLAYED_FILENAME +VKey=0 +Key=0 + +[Command_1237] +CmdId=CM_SymbolExplorer_PasteInNewWnd +VKey=0 +Key=0 + +[Command_1238] +CmdId=CM_DELETE +VKey=3 +Key=46 + +[Command_1239] +CmdId=CM_CREATE_BAR_WINDOW +VKey=0 +Key=0 + +[Command_1240] +CmdId=CM_NEW_FUNCTION_MEA_SIGNAL +VKey=0 +Key=0 + +[Command_1241] +CmdId=CM_PLAY_REPEAT +VKey=7 +Key=179 + +[Command_1242] +CmdId=CM_DEVEXP_NEW_ETH_NETWORK +VKey=0 +Key=0 + +[Command_1243] +CmdId=CM_ALIGNMENT_LEFT +VKey=0 +Key=0 + +[Command_1244] +CmdId=CM_MEASUREMENT_START_REC_10 +VKey=0 +Key=0 + +[Command_1245] +CmdId=CM_NEW_DEVICE_WITH_NETWORK +VKey=0 +Key=0 + +[Command_1246] +CmdId=CM_LEGEND_LN_ORIGIN +VKey=0 +Key=0 + +[Command_1247] +CmdId=CM_CALIBRATION_RAM_2 +VKey=0 +Key=0 + +[Command_1248] +CmdId=CM_COMMON_AXIS_SET_5 +VKey=0 +Key=0 + +[Command_1249] +CmdId=CM_LEGEND_FOCUS_PREV +VKey=0 +Key=0 + +[Command_1250] +CmdId=CM_BROWSER_GO_BACK +VKey=19 +Key=37 + +[Command_1251] +CmdId=CM_MEASURELAST3 +VKey=0 +Key=0 + +[Command_1252] +CmdId=CM_DropDefaultWnd +VKey=0 +Key=0 + +[Command_1253] +CmdId=CM_SORT_BY_NAME +VKey=0 +Key=0 + +[Command_1254] +CmdId=CM_HEXWIN_COMPARE_FILE +VKey=0 +Key=0 + +[Command_1255] +CmdId=CM_CONVERTER_SETUP_9 +VKey=0 +Key=0 + +[Command_1256] +CmdId=CM_DEVEXP_NEW_LIN_NETWORK +VKey=0 +Key=0 + +[Command_1257] +CmdId=CM_INSERT_SIGNAL +VKey=3 +Key=119 + +[Command_1258] +CmdId=CM_PRINT_WINDOW +VKey=0 +Key=0 + +[Command_1259] +CmdId=CM_PROJECT_IMPORT +VKey=0 +Key=0 + +[Command_1260] +CmdId=CM_MDI_WINDOW +VKey=0 +Key=0 + +[Command_1261] +CmdId=CM_MARKER2_RIGHT_END +VKey=7 +Key=35 + +[Command_1262] +CmdId=CM_CALIB_FLASH_6 +VKey=0 +Key=0 + +[Command_1263] +CmdId=ACTIVEX@MATLAB.MatlabCtrl.50#ID_DISPLAY_VALUES +VKey=3 +Key=86 + +[Command_1264] +CmdId=CM_CONFIGOPEN +VKey=3 +Key=114 + +[Command_1265] +CmdId=ACTIVEX@CNPTRACE.TraceCtrl.1#ID_TOOGLE_ONLY_MEASUREMENT +VKey=4 +Key=0 + +[Command_1266] +CmdId=CM_EXCEED_LIMIT_WARNING +VKey=0 +Key=0 + +[Command_1267] +CmdId=CM_OPTIONS_TASK_MANAGER +VKey=0 +Key=0 + +[Command_1268] +CmdId=CM_CALIBRATION_ACTIVE_5 +VKey=0 +Key=0 + +[Command_1269] +CmdId=CM_CALIBRATION_UPDATE_8 +VKey=0 +Key=0 + +[Command_1270] +CmdId=CM_MACRO_INI+8 +VKey=0 +Key=0 + +[Command_1271] +CmdId=CM_USERMENU8 +VKey=0 +Key=0 + +[Command_1272] +CmdId=CM_CALIB_OFFLINE_1 +VKey=0 +Key=0 + diff --git a/examples/no_a2l_demo/CANape/XCP_104.aml b/examples/no_a2l_demo/CANape/XCP_104.aml new file mode 100644 index 00000000..1aa8cf84 --- /dev/null +++ b/examples/no_a2l_demo/CANape/XCP_104.aml @@ -0,0 +1,1329 @@ +/begin A2ML + +/***********************************************************/ +/* */ +/* ASAP2 meta language for XCP protocol layer V1.4 */ +/* */ +/* File version description */ +/* --------------------------------------------------- */ +/* 1.4.0 initial version */ +/* 1.4.1 taggedstruct member */ +/* OPTIMISATION_TYPE_ODT_STRICT was added */ +/* */ +/* Datatypes: */ +/* */ +/* A2ML description */ +/* --------------------------------------------------- */ +/* uchar unsigned 8 Bit */ +/* char signed 8 Bit */ +/* uint unsigned integer 16 Bit */ +/* int signed integer 16 Bit */ +/* ulong unsigned integer 32 Bit */ +/* long signed integer 32 Bit */ +/* int64 signed integer 64 Bit */ +/* uint64 unsigned integer 64 Bit */ +/* float float point 32 Bit IEEE 754 */ +/* double float point 64 Bit IEEE 754 */ +/* */ +/***********************************************************/ + +/*************** start of PROTOCOL_LAYER *******************/ + +struct Protocol_Layer { /* At MODULE */ + + uint; /* XCP protocol layer version */ + /* "1.4" = 0x0104 */ + + uint; /* T1 [ms] */ + uint; /* T2 [ms] */ + uint; /* T3 [ms] */ + uint; /* T4 [ms] */ + uint; /* T5 [ms] */ + uint; /* T6 [ms] */ + uint; /* T7 [ms] */ + + uchar; /* MAX_CTO */ + uint; /* MAX_DTO default for DAQ and STIM */ + + enum { /* BYTE_ORDER */ + "BYTE_ORDER_MSB_LAST" = 0, + "BYTE_ORDER_MSB_FIRST" = 1 + }; + + enum { /* ADDRESS_GRANULARITY */ + "ADDRESS_GRANULARITY_BYTE" = 1, + "ADDRESS_GRANULARITY_WORD" = 2, + "ADDRESS_GRANULARITY_DWORD" = 4 + }; + + taggedstruct { /* optional */ + + ("OPTIONAL_CMD" enum { /* XCP-Code of optional level 0 commands */ + /* supported by the slave */ + "GET_COMM_MODE_INFO" = 0xFB, + "GET_ID" = 0xFA, + "SET_REQUEST" = 0xF9, + "GET_SEED" = 0xF8, + "UNLOCK" = 0xF7, + "SET_MTA" = 0xF6, + "UPLOAD" = 0xF5, + "SHORT_UPLOAD" = 0xF4, + "BUILD_CHECKSUM" = 0xF3, + "TRANSPORT_LAYER_CMD" = 0xF2, + "USER_CMD" = 0xF1, + "DOWNLOAD" = 0xF0, + "DOWNLOAD_NEXT" = 0xEF, + "DOWNLOAD_MAX" = 0xEE, + "SHORT_DOWNLOAD" = 0xED, + "MODIFY_BITS" = 0xEC, + "SET_CAL_PAGE" = 0xEB, + "GET_CAL_PAGE" = 0xEA, + "GET_PAG_PROCESSOR_INFO" = 0xE9, + "GET_SEGMENT_INFO" = 0xE8, + "GET_PAGE_INFO" = 0xE7, + "SET_SEGMENT_MODE" = 0xE6, + "GET_SEGMENT_MODE" = 0xE5, + "COPY_CAL_PAGE" = 0xE4, + "CLEAR_DAQ_LIST" = 0xE3, + "SET_DAQ_PTR" = 0xE2, + "WRITE_DAQ" = 0xE1, + "SET_DAQ_LIST_MODE" = 0xE0, + "GET_DAQ_LIST_MODE" = 0xDF, + "START_STOP_DAQ_LIST" = 0xDE, + "START_STOP_SYNCH" = 0xDD, + "GET_DAQ_CLOCK" = 0xDC, + "READ_DAQ" = 0xDB, + "GET_DAQ_PROCESSOR_INFO" = 0xDA, + "GET_DAQ_RESOLUTION_INFO" = 0xD9, + "GET_DAQ_LIST_INFO" = 0xD8, + "GET_DAQ_EVENT_INFO" = 0xD7, + "FREE_DAQ" = 0xD6, + "ALLOC_DAQ" = 0xD5, + "ALLOC_ODT" = 0xD4, + "ALLOC_ODT_ENTRY" = 0xD3, + "PROGRAM_START" = 0xD2, + "PROGRAM_CLEAR" = 0xD1, + "PROGRAM" = 0xD0, + "PROGRAM_RESET" = 0xCF, + "GET_PGM_PROCESSOR_INFO" = 0xCE, + "GET_SECTOR_INFO" = 0xCD, + "PROGRAM_PREPARE" = 0xCC, + "PROGRAM_FORMAT" = 0xCB, + "PROGRAM_NEXT" = 0xCA, + "PROGRAM_MAX" = 0xC9, + "PROGRAM_VERIFY" = 0xC8, + "WRITE_DAQ_MULTIPLE" = 0xC7, + "TIME_CORRELATION_PROPERTIES" = 0xC6, + "DTO_CTR_PROPERTIES" = 0xC5 + /* do not use 0xC0 command code here, it is reserved as command extension code */ + })*; + + ("OPTIONAL_LEVEL1_CMD" enum { /* XCP-Code of optional level 1 commands, starting with level 0 0xC0 as first byte */ + "GET_VERSION" = 0x00, + "SET_DAQ_PACKED_MODE" = 0x01, + "GET_DAQ_PACKED_MODE" = 0x02, + "SW_DBG_COMMAND_SPACE" = 0xFC, + "POD_COMMAND_SPACE" = 0xFD + /* 0xFE shall not be used */ + /* 0xFF reserved for optional level 2 command space extension */ + })*; + + "COMMUNICATION_MODE_SUPPORTED" taggedunion { /* optional modes supported */ + "BLOCK" taggedstruct { + "SLAVE"; /* Slave Block Mode supported */ + "MASTER" struct { /* Master Block Mode supported */ + uchar; /* MAX_BS */ + uchar; /* MIN_ST */ + }; + }; + "INTERLEAVED" uchar; /* QUEUE_SIZE */ + }; + + "SEED_AND_KEY_EXTERNAL_FUNCTION" char[256]; /* Name of the Seed&Key function */ + /* including file extension */ + /* without path */ + "MAX_DTO_STIM" uint; /* overrules MAX_DTO see above for STIM use case */ + + block "ECU_STATES" taggedstruct{ + + (block "STATE" struct{ + uchar; /* STATE_NUMBER */ + char[100]; /* STATE_NAME */ + taggedstruct { + "ECU_SWITCHED_TO_DEFAULT_PAGE"; + }; + enum { /* CAL/PAG RESOURCE */ + "NOT_ACTIVE" = 0, + "ACTIVE" = 1, + "GETTER_ONLY" = 2 /* Setter methods not allowed */ + }; + enum { /* DAQ RESOURCE */ + "NOT_ACTIVE" = 0, + "ACTIVE" = 1 + }; + enum { /* STIM RESOURCE */ + "NOT_ACTIVE" = 0, + "ACTIVE" = 1 + }; + enum { /* PGM RESOURCE */ + "NOT_ACTIVE" = 0, + "ACTIVE" = 1 + }; + + taggedstruct { + + (block "MEMORY_ACCESS" struct{ /* CAL/PAG AVAILABLE */ + uchar; /* SEGMENT_NUMBER */ + uchar; /* PAGE_NUMBER */ + enum { + "READ_ACCESS_NOT_ALLOWED" = 0, + "READ_ACCESS_ALLOWED" = 1 + }; + enum { + "WRITE_ACCESS_NOT_ALLOWED" = 0, + "WRITE_ACCESS_ALLOWED" = 1 + }; + })*; + + }; + + })*; + + }; + + }; + +}; + +/***************** end of PROTOCOL_LAYER *******************/ + + + +/********************* start of DAQ ************************/ + +struct Daq { /* DAQ supported, at MODULE */ + enum { /* DAQ_CONFIG_TYPE */ + "STATIC" = 0, + "DYNAMIC" = 1 + }; + + uint; /* MAX_DAQ */ + uint; /* MAX_EVENT_CHANNEL */ + uchar; /* MIN_DAQ */ + + enum { /* OPTIMISATION_TYPE */ + "OPTIMISATION_TYPE_DEFAULT" = 0, + "OPTIMISATION_TYPE_ODT_TYPE_16" = 1, + "OPTIMISATION_TYPE_ODT_TYPE_32" = 2, + "OPTIMISATION_TYPE_ODT_TYPE_64" = 3, + "OPTIMISATION_TYPE_ODT_TYPE_ALIGNMENT" = 4, + "OPTIMISATION_TYPE_MAX_ENTRY_SIZE" = 5 + }; + + enum { /* ADDRESS_EXTENSION */ + "ADDRESS_EXTENSION_FREE" = 0, + "ADDRESS_EXTENSION_ODT" = 1, + "ADDRESS_EXTENSION_DAQ" = 3 + }; + + enum { /* IDENTIFICATION_FIELD */ + "IDENTIFICATION_FIELD_TYPE_ABSOLUTE" = 0, + "IDENTIFICATION_FIELD_TYPE_RELATIVE_BYTE" = 1, + "IDENTIFICATION_FIELD_TYPE_RELATIVE_WORD" = 2, + "IDENTIFICATION_FIELD_TYPE_RELATIVE_WORD_ALIGNED" = 3 + }; + + enum { /* GRANULARITY_ODT_ENTRY_SIZE_DAQ */ + "GRANULARITY_ODT_ENTRY_SIZE_DAQ_BYTE" = 1, + "GRANULARITY_ODT_ENTRY_SIZE_DAQ_WORD" = 2, + "GRANULARITY_ODT_ENTRY_SIZE_DAQ_DWORD" = 4, + "GRANULARITY_ODT_ENTRY_SIZE_DAQ_DLONG" = 8 + }; + + uchar; /* MAX_ODT_ENTRY_SIZE_DAQ */ + + enum { /* OVERLOAD_INDICATION */ + "NO_OVERLOAD_INDICATION" = 0, + "OVERLOAD_INDICATION_PID" = 1, + "OVERLOAD_INDICATION_EVENT" = 2 + }; + + taggedstruct { /* optional */ + "DAQ_ALTERNATING_SUPPORTED" uint; /* Display_Event_Channel_Number */ + "PRESCALER_SUPPORTED"; + "RESUME_SUPPORTED"; + "STORE_DAQ_SUPPORTED"; + "DTO_CTR_FIELD_SUPPORTED"; + "OPTIMISATION_TYPE_ODT_STRICT"; /* strict mode shall only be used in combination with */ + /* OPTIMISATION_TYPE_ODT_TYPE_16 */ + /* OPTIMISATION_TYPE_ODT_TYPE_32 */ + /* OPTIMISATION_TYPE_ODT_TYPE_64 */ + + block "STIM" struct { /* STIM supported */ + + enum { /* GRANULARITY_ODT_ENTRY_SIZE_STIM */ + "GRANULARITY_ODT_ENTRY_SIZE_STIM_BYTE" = 1, + "GRANULARITY_ODT_ENTRY_SIZE_STIM_WORD" = 2, + "GRANULARITY_ODT_ENTRY_SIZE_STIM_DWORD" = 4, + "GRANULARITY_ODT_ENTRY_SIZE_STIM_DLONG" = 8 + }; + + uchar; /* MAX_ODT_ENTRY_SIZE_STIM */ + + taggedstruct { /* bitwise stimulation */ + "BIT_STIM_SUPPORTED"; + "MIN_ST_STIM" uchar; /* separation time between DTOs */ + /* time in units of 100 microseconds */ + }; + }; + + block "TIMESTAMP_SUPPORTED" struct { + uint; /* TIMESTAMP_TICKS */ + enum { /* TIMESTAMP_SIZE */ + "NO_TIME_STAMP" = 0, + "SIZE_BYTE" = 1, + "SIZE_WORD" = 2, + "SIZE_DWORD" = 4 + }; + enum { /* RESOLUTION OF TIMESTAMP */ + "UNIT_1NS" = 0, + "UNIT_10NS" = 1, + "UNIT_100NS" = 2, + "UNIT_1US" = 3, + "UNIT_10US" = 4, + "UNIT_100US" = 5, + "UNIT_1MS" = 6, + "UNIT_10MS" = 7, + "UNIT_100MS" = 8, + "UNIT_1S" = 9, + "UNIT_1PS" = 10, + "UNIT_10PS" = 11, + "UNIT_100PS" = 12 + }; + taggedstruct { + "TIMESTAMP_FIXED"; + }; + }; + + "PID_OFF_SUPPORTED"; + + /* Configuration Limits */ + "MAX_DAQ_TOTAL" uint; + "MAX_ODT_TOTAL" uint; + "MAX_ODT_DAQ_TOTAL" uint; + "MAX_ODT_STIM_TOTAL" uint; + "MAX_ODT_ENTRIES_TOTAL" uint; + "MAX_ODT_ENTRIES_DAQ_TOTAL" uint; + "MAX_ODT_ENTRIES_STIM_TOTAL" uint; + + "CPU_LOAD_MAX_TOTAL" float; + "CORE_LOAD_MAX_TOTAL" float; /* max load of all cores */ + + (block "CORE_LOAD_MAX" struct { + uint; /* CORE_NR: core reference number */ + float; /* CORE_LOAD_MAX: max load of core(CORE_NR) */ + })*; + + block "DAQ_MEMORY_CONSUMPTION" struct { + ulong; /* DAQ_MEMORY_LIMIT: in Elements[AG] */ + uint; /* DAQ_SIZE: number of elements[AG] per DAQ list */ + uint; /* ODT_SIZE: number of elements[AG] per ODT */ + uint; /* ODT_ENTRY_SIZE: number of elements[AG] per ODT_entry */ + uint; /* ODT_DAQ_BUFFER_ELEMENT_SIZE: number of */ + /* payload elements[AG]*factor = sizeof(send buffer)[AG] */ + uint; /* ODT_STIM_BUFFER_ELEMENT_SIZE: number of */ + /* payload elements[AG]*factor = sizeof(receive buffer)[AG] */ + taggedstruct { + block "BUFFER_RESERVE" struct { /* default for all EVENTs */ + uchar; /* ODT_DAQ_BUFFER_ELEMENT_RESERVE in % of */ + /* ODT_DAQ_BUFFER_ELEMENT_SIZE */ + uchar; /* ODT_STIM_BUFFER_ELEMENT_RESERVE in % of */ + /* ODT_STIM_BUFFER_ELEMENT_SIZE */ + }; + }; + }; + +/******************* start of DAQ_LIST *********************/ + + (block "DAQ_LIST" struct { /* DAQ_LIST */ + /* multiple possible */ + uint; /* DAQ_LIST_NUMBER */ + taggedstruct { /* optional */ + "DAQ_LIST_TYPE" enum { + "DAQ" = 1, /* DIRECTION = DAQ only */ + "STIM" = 2, /* DIRECTION = STIM only */ + "DAQ_STIM" = 3 /* both directions possible */ + /* but not simultaneously */ + }; + + "MAX_ODT" uchar; /* MAX_ODT */ + "MAX_ODT_ENTRIES" uchar; /* MAX_ODT_ENTRIES */ + + "FIRST_PID" uchar; /* FIRST_PID for this DAQ_LIST */ + "EVENT_FIXED" uint; /* this DAQ_LIST always */ + /* in this event */ + "DAQ_PACKED_MODE_SUPPORTED"; /* supports DAQ packed mode */ + + block "PREDEFINED" taggedstruct { /* predefined */ + /* not configurable DAQ_LIST */ + (block "ODT" struct { + uchar; /* ODT number */ + taggedstruct { + ("ODT_ENTRY" struct { + uchar; /* ODT_ENTRY number */ + ulong; /* address of element */ + uchar; /* address extension of element */ + uchar; /* size of element [AG] */ + uchar; /* BIT_OFFSET */ + })*; + }; /* end of ODT_ENTRY */ + })*; /* end of ODT */ + }; /* end of PREDEFINED */ + }; + })*; + +/******************* end of DAQ_LIST ***********************/ + +/******************* start of EVENT ************************/ + + (block "EVENT" struct { /* EVENT */ + /* multiple possible */ + char[101]; /* EVENT_CHANNEL_NAME */ + char[9]; /* EVENT_CHANNEL_SHORT_NAME */ + uint; /* EVENT_CHANNEL_NUMBER */ + + enum { + "DAQ" = 1, /* only DAQ_LISTs */ + /* with DIRECTION = DAQ */ + "STIM" = 2, /* only DAQ_LISTs */ + /* with DIRECTION = STIM */ + "DAQ_STIM" = 3 /* both kind of DAQ_LISTs */ + }; + + uchar; /* MAX_DAQ_LIST */ + uchar; /* EVENT_CHANNEL_TIME_CYCLE */ + uchar; /* EVENT_CHANNEL_TIME_UNIT */ + uchar; /* EVENT_CHANNEL_PRIORITY */ + taggedstruct { /* optional */ + + "COMPLEMENTARY_BYPASS_EVENT_CHANNEL_NUMBER" uint; /* for compatibility reasons */ + /* not to be considered, if 1.3 Bypassing features are implemented */ + "CONSISTENCY" enum { + "DAQ" = 0, + "EVENT" = 1, + "ODT" = 2, + "NONE" = 3 + }; + + "EVENT_COUNTER_PRESENT"; + "RELATED_EVENT_CHANNEL_NUMBER" uint; + "RELATED_EVENT_CHANNEL_NUMBER_FIXED"; /* RELATED_EVENT_CHANNEL_NUMBER can not be modified. */ + "DTO_CTR_DAQ_MODE" enum { /* When inserting the DTO CTR field: */ + "INSERT_COUNTER" = 0, /* - use CTR of the related event channel */ + "INSERT_STIM_COUNTER_COPY" = 1 /* - use STIM CTR CPY of the related event channel */ + }; + "DTO_CTR_DAQ_MODE_FIXED"; /* DTO_CTR_DAQ_MODE properties can not be modified. */ + "DTO_CTR_STIM_MODE" enum { /* When receiving DTOs with CTR field: */ + "DO_NOT_CHECK_COUNTER" = 0, /* - do not check CTR */ + "CHECK_COUNTER" = 1 /* - check CTR */ + }; + "DTO_CTR_STIM_MODE_FIXED"; /* DTO_CTR_STIM_MODE properties can not be modified */ + "STIM_DTO_CTR_COPY_PRESENT"; /* DTO CTR can be saved for later reference */ + + block "DAQ_PACKED_MODE" struct { /* DAQ packed mode, applies for all associated DAQ lists */ + enum { /* El. A,B,C,D, 3 samples */ + "ELEMENT_GROUPED" = 1, /* A0A1A2B0B1B2C0C1C2D0D1D2 */ + "EVENT_GROUPED" = 2 /* A0B0C0D0A1B1C1D1A2B2C2D2 */ + }; + + enum { /* timestamp mode */ + "STS_LAST" = 0, /* single timestamp of last sample */ + "STS_FIRST" = 1 /* single timestamp of first sample */ + }; + + enum { /* usage */ + "OPTIONAL" = 0, /* optional, EVENT allows also non-packed mode */ + "MANDATORY" = 1 /* mandatory, only packed mode allowed */ + }; + + uint; /* DAQ packed mode sample count */ + taggedstruct { + ("ALT_SAMPLE_COUNT" uint)*; /* other valid sample count values (optional) */ + }; + }; + + block "MIN_CYCLE_TIME" struct { /* Configuration with 0-0 not allowed */ + uchar; /* EVENT_CHANNEL_TIME_CYCLE */ + uchar; /* EVENT_CHANNEL_TIME_UNIT */ + }; + block "BUFFER_RESERVE_EVENT" struct { + /* overrules default BUFFER_RESERVE for this EVENT */ + uchar; /* ODT_DAQ_BUFFER_ELEMENT_RESERVE in % of ODT_DAQ_BUFFER_ELEMENT_SIZE */ + uchar; /* ODT_STIM_BUFFER_ELEMENT_RESERVE in % of ODT_STIM_BUFFER_ELEMENT_SIZE */ + }; + + "CPU_LOAD_MAX" float; + + block "CPU_LOAD_CONSUMPTION_DAQ" struct { + float; /* DAQ_FACTOR */ + float; /* ODT_FACTOR */ + float; /* ODT_ENTRY_FACTOR */ + taggedstruct { + (block "ODT_ENTRY_SIZE_FACTOR_TABLE" struct{ + uint; /* SIZE */ + float; /* SIZE_FACTOR */ + })*; + block "CORE_LOAD_EP" struct { + uint; /* CORE_NR: core reference number */ + float; /* CORE_LOAD_EP_MAX: max load of this event part */ + }; + }; + }; + + block "CPU_LOAD_CONSUMPTION_STIM" struct { + float; /* DAQ_FACTOR */ + float; /* ODT_FACTOR */ + float; /* ODT_ENTRY_FACTOR */ + taggedstruct { + (block "ODT_ENTRY_SIZE_FACTOR_TABLE" struct{ + uint; /* SIZE */ + float; /* SIZE_FACTOR */ + })*; + block "CORE_LOAD_EP" struct { + uint; /* CORE_NR: core reference number */ + float; /* CORE_LOAD_EP_MAX: max load of this event part */ + }; + }; + }; + + block "CPU_LOAD_CONSUMPTION_QUEUE" struct { + /* default for DAQ and STIM QUEUE */ + float; /* ODT_FACTOR */ + float; /* ODT_ELEMENT_LOAD: length in elements[AG] */ + taggedstruct { + block "CORE_LOAD_EP" struct { + uint; /* CORE_NR: core reference number */ + float; /* CORE_LOAD_EP_MAX: max load of this event part */ + }; + }; + }; + + block "CPU_LOAD_CONSUMPTION_QUEUE_STIM" struct { + /* overrules CPU_LOAD_CONSUMPTION_QUEUE for STIM QUEUE */ + float; /* ODT_FACTOR */ + float; /* ODT_ELEMENT_LOAD: length in elements[AG] */ + taggedstruct { + block "CORE_LOAD_EP" struct { + uint; /* CORE_NR: core reference number */ + float; /* CORE_LOAD_EP_MAX: max load of this event part */ + }; + }; + }; + }; + })*; + +/********************* end of EVENT ************************/ + + }; /* end of optional at DAQ */ + +}; + +/********************* end of DAQ **************************/ + + +/***************** start of DAQ_EVENT **********************/ + +taggedunion Daq_Event { /* at MEASUREMENT */ + "FIXED_EVENT_LIST" taggedstruct { + ("EVENT" uint)*; + }; + "VARIABLE" taggedstruct { + block "AVAILABLE_EVENT_LIST" taggedstruct { + ("EVENT" uint)*; + }; + block "DEFAULT_EVENT_LIST" taggedstruct { + ("EVENT" uint)*; + }; + block "CONSISTENCY_EVENT_LIST" taggedstruct { + ("EVENT" uint)*; + }; + }; +}; + +/******************** end of DAQ_EVENT *********************/ + + +/********************** start of PAG ***********************/ + +struct Pag { /* PAG supported, at MODULE */ + uchar; /* MAX_SEGMENTS */ + taggedstruct { /* optional */ + "FREEZE_SUPPORTED"; + }; + +}; + +/*********************** end of PAG ************************/ + + +/********************** start of PGM ***********************/ + +struct Pgm { /* PGM supported, at MODULE */ + + enum { + "PGM_MODE_ABSOLUTE" = 1, + "PGM_MODE_FUNCTIONAL" = 2, + "PGM_MODE_ABSOLUTE_AND_FUNCTIONAL" = 3 + }; + uchar; /* MAX_SECTORS */ + uchar; /* MAX_CTO_PGM */ + + taggedstruct { /* optional */ + (block "SECTOR" struct { /* SECTOR */ + /* multiple possible */ + char[101]; /* SECTOR_NAME */ + uchar; /* SECTOR_NUMBER */ + ulong; /* Address */ + ulong; /* Length */ + uchar; /* CLEAR_SEQUENCE_NUMBER */ + uchar; /* PROGRAM_SEQUENCE_NUMBER */ + uchar; /* PROGRAM_METHOD */ + })*; /* end of SECTOR */ + + "COMMUNICATION_MODE_SUPPORTED" taggedunion { /* optional modes supported */ + "BLOCK" taggedstruct { + "SLAVE"; /* Slave Block Mode supported */ + "MASTER" struct { /* Master Block Mode supported */ + uchar; /* MAX_BS_PGM */ + uchar; /* MIN_ST_PGM */ + }; + }; + "INTERLEAVED" uchar; /* QUEUE_SIZE_PGM */ + }; + }; +}; + +/*********************** end of PGM ************************/ + + +/******************** start of SEGMENT *********************/ + +struct Segment { /* at MEMORY_SEGMENT */ + uchar; /* SEGMENT_NUMBER */ + uchar; /* number of pages */ + uchar; /* ADDRESS_EXTENSION */ + uchar; /* COMPRESSION_METHOD */ + uchar; /* ENCRYPTION_METHOD */ + + taggedstruct { /* optional */ + block "CHECKSUM" struct { + enum { /* checksum type */ + "XCP_ADD_11" = 1, + "XCP_ADD_12" = 2, + "XCP_ADD_14" = 3, + "XCP_ADD_22" = 4, + "XCP_ADD_24" = 5, + "XCP_ADD_44" = 6, + "XCP_CRC_16" = 7, + "XCP_CRC_16_CITT" = 8, + "XCP_CRC_32" = 9, + "XCP_USER_DEFINED" = 255 + }; + + taggedstruct { + "MAX_BLOCK_SIZE" ulong; /* maximum block size */ + /* for checksum calculation */ + "EXTERNAL_FUNCTION" char[256]; /* Name of the Checksum function */ + /* including file extension */ + /* without path */ + "MTA_BLOCK_SIZE_ALIGN" uint; /* required alignment of MTA and block size */ + }; + }; + + "DEFAULT_PAGE_NUMBER" uchar; /* Number of the default page */ + + (block "PAGE" struct { /* PAGES for this SEGMENT */ + /* multiple possible */ + uchar; /* PAGE_NUMBER */ + + enum { /* ECU_ACCESS_TYPE */ + "ECU_ACCESS_NOT_ALLOWED" = 0, + "ECU_ACCESS_WITHOUT_XCP_ONLY" = 1, + "ECU_ACCESS_WITH_XCP_ONLY" = 2, + "ECU_ACCESS_DONT_CARE" = 3 + }; + + enum { /* XCP_READ_ACCESS_TYPE */ + "XCP_READ_ACCESS_NOT_ALLOWED" = 0, + "XCP_READ_ACCESS_WITHOUT_ECU_ONLY" = 1, + "XCP_READ_ACCESS_WITH_ECU_ONLY" = 2, + "XCP_READ_ACCESS_DONT_CARE" = 3 + }; + + enum { /* XCP_WRITE_ACCESS_TYPE */ + "XCP_WRITE_ACCESS_NOT_ALLOWED" = 0, + "XCP_WRITE_ACCESS_WITHOUT_ECU_ONLY" = 1, + "XCP_WRITE_ACCESS_WITH_ECU_ONLY" = 2, + "XCP_WRITE_ACCESS_DONT_CARE" = 3 + }; + taggedstruct { + "INIT_SEGMENT" uchar; /* references segment that initialises this page */ + }; + + })*; /* end of PAGE */ + + (block "ADDRESS_MAPPING" struct { /* multiple possible */ + ulong; /* source address */ + ulong; /* destination address */ + ulong; /* length */ + })*; + + "PGM_VERIFY" ulong; /* verification value for PGM */ + }; /* end of optional */ + +}; + +/********************** end of SEGMENT *********************/ + + +/***************** start of TIME_CORRELATION ***************/ +taggedstruct Time_Correlation { + +/***********************************************************/ +/* XCP_SLAVE_CLOCK and ECU_CLOCK need not */ +/* necessarily be the same clock, i.e. in case of */ +/* an external XCP Slave, these clocks might differ */ +/***********************************************************/ + + "DAQ_TIMESTAMPS_RELATE_TO" enum { + "XCP_SLAVE_CLOCK" = 0, + "ECU_CLOCK" = 1 + }; + + (block "CLOCK" struct { + char; /* globally unique clock identifier (UUID/EUI), 1st octet (most significant byte) */ + char; /* globally unique clock identifier (UUID/EUI), 2nd octet */ + char; /* globally unique clock identifier (UUID/EUI), 3rd octet */ + char; /* globally unique clock identifier (UUID/EUI), 4th octet */ + char; /* globally unique clock identifier (UUID/EUI), 5th octet */ + char; /* globally unique clock identifier (UUID/EUI), 6th octet */ + char; /* globally unique clock identifier (UUID/EUI), 7th octet */ + char; /* globally unique clock identifier (UUID/EUI), 8th octet (least significant byte) */ + + enum { /* clock enumerator */ + "XCP_SLAVE_CLOCK" = 0, + "ECU_CLOCK" = 1, + "XCP_SLAVE_GRANDMASTER_CLOCK" = 2, /* related to XCP_SLAVE_CLOCK */ + "ECU_GRANDMASTER_CLOCK" = 3 /* related to ECU_CLOCK in case of an external slave */ + }; + enum { /* readability */ + "RANDOMLY_READABLE" = 0, + "LIMITED_READABLE" = 1, + "NOT_READABLE" = 2 + }; + enum { /* synchronization features */ + "SYN_UNSUPPORTED" = 0, /* clock neither supports synchronization */ + /* nor syntonization */ + "SYNCHRONIZATION_ONLY" = 1, /* clock only supports synchronization to */ + /* external grandmaster clock */ + "SYNTONIZATION_ONLY" = 2, /* clock only supports syntonization to */ + /* external grandmaster clock */ + "SYN_ALL" = 3 /* clock supports synchronization as well */ + /* as syntonization to external grandmaster clock */ + }; + uchar; /* clock quality, stratum level */ + + taggedstruct { + block "TIMESTAMP_CHARACTERIZATION" struct { + uint; /* TIMESTAMP_TICKS */ + enum { /* RESOLUTION OF TIMESTAMP */ + "UNIT_1NS" = 0, + "UNIT_10NS" = 1, + "UNIT_100NS" = 2, + "UNIT_1US" = 3, + "UNIT_10US" = 4, + "UNIT_100US" = 5, + "UNIT_1MS" = 6, + "UNIT_10MS" = 7, + "UNIT_100MS" = 8, + "UNIT_1S" = 9, + "UNIT_1PS" = 10, + "UNIT_10PS" = 11, + "UNIT_100PS" = 12 + }; + enum { /* NATIVE TIMESTAMP SIZE */ + "SIZE_FOUR_BYTE" = 4, + "SIZE_EIGHT_BYTE" = 8 + }; + }; + }; + + uint64; /* MAX_TIMESTAMP_VALUE_BEFORE_WRAP_AROUND */ + enum { /* epoch */ + "ATOMIC_TIME" = 0, /* TAI */ + "UNIVERSAL_COORDINATED_TIME" = 1, /* UTC */ + "ARBITRARY" = 2 /* unknown */ + }; + })*; +}; +/***************** end of TIME_CORRELATION ****************/ +/***************** start of Common Parameters **************/ + +taggedstruct Common_Parameters { + + block "PROTOCOL_LAYER" struct Protocol_Layer; + block "TIME_CORRELATION" taggedstruct Time_Correlation; + + block "SEGMENT" struct Segment; + + block "DAQ" struct Daq; + block "PAG" struct Pag; + block "PGM" struct Pgm; + + block "DAQ_EVENT" taggedunion Daq_Event; + +}; + +/****************** end of Common Parameters ***************/ + +/************************ start of CAN *********************/ + +struct CAN_Parameters { /* At MODULE */ + uint; /* XCP on CAN version */ + /* "1.4" = 0x0104 */ + taggedstruct { /* optional */ + "CAN_ID_BROADCAST" ulong; /* Auto detection CAN-ID */ + /* master -> slaves */ + /* Bit31= 1: extended identifier */ + /* Bit30= 1: CAN-FD identifier */ + "CAN_ID_MASTER" ulong; /* CMD/STIM CAN-ID */ + /* master -> slave */ + /* Bit31= 1: extended identifier */ + /* Bit30= 1: CAN-FD identifier */ + "CAN_ID_MASTER_INCREMENTAL"; /* master uses range of CAN-IDs */ + /* start of range = CAN_ID_MASTER */ + /* end of range = CAN_ID_MASTER+MAX_BS(_PGM)-1 */ + "CAN_ID_SLAVE" ulong; /* RES/ERR/EV/SERV/DAQ CAN-ID */ + /* slave -> master */ + /* Bit31= 1: extended identifier */ + /* Bit30= 1: CAN-FD identifier */ + "CAN_ID_GET_DAQ_CLOCK_MULTICAST" ulong; /* Only to be used for GET_DAQ_CLOCK_MULTICAST */ + /* master -> slaves */ + /* Bit31= 1: extended identifier */ + /* Bit30= 1: CAN-FD identifier */ + "BAUDRATE" ulong; /* BAUDRATE [Hz] */ + "SAMPLE_POINT" uchar; /* sample point */ + /* [% complete bit time] */ + "SAMPLE_RATE" enum { + "SINGLE" = 1, /* 1 sample per bit */ + "TRIPLE" = 3 /* 3 samples per bit */ + }; + "BTL_CYCLES" uchar; /* BTL_CYCLES */ + /* [slots per bit time] */ + "SJW" uchar; /* length synchr. segment */ + /* [BTL_CYCLES] */ + "SYNC_EDGE" enum { + "SINGLE" = 1, /* on falling edge only */ + "DUAL" = 2 /* on falling and rising edge */ + }; + "MAX_DLC_REQUIRED"; /* master to slave frames */ + /* always to have DLC = MAX_DLC = 8 */ + + (block "DAQ_LIST_CAN_ID" struct { /* At IF_DATA DAQ */ + uint; /* reference to DAQ_LIST_NUMBER */ + taggedstruct { /* exclusive tags */ + /* either VARIABLE or FIXED */ + "VARIABLE"; + "FIXED" ulong; /* this DAQ_LIST always */ + /* on this CAN_ID */ + }; + + })*; + (block "EVENT_CAN_ID_LIST" struct { /* At IF_DATA DAQ */ + uint; /* reference to EVENT_NUMBER */ + taggedstruct { /* exclusive tags */ + ("FIXED" ulong)*; /* this Event always on this ID */ + }; + })*; + + "MAX_BUS_LOAD" ulong; /* maximum available bus */ + /* load in percent */ + + "MEASUREMENT_SPLIT_ALLOWED"; /* Supports splitting of measurements to increase payload for MAX_DTO <= 8 */ + + block "CAN_FD" struct { /* The CAN_FD block definition indicates the use of CAN-FD frames */ + taggedstruct { + + "MAX_DLC" uint; /* 8, 12, 16, 20, 24, 32, 48 or 64 */ + "CAN_FD_DATA_TRANSFER_BAUDRATE" ulong; /* BAUDRATE [Hz] */ + + "SAMPLE_POINT" uchar; /* sample point receiver */ + /* [% complete bit time] */ + + "BTL_CYCLES" uchar; /* BTL_CYCLES */ + /* [slots per bit time] */ + "SJW" uchar; /* length synchr. segment */ + /* [BTL_CYCLES] */ + "SYNC_EDGE" enum { + "SINGLE" = 1, /* on falling edge only */ + "DUAL" = 2 /* on falling and rising edge */ + }; + + "MAX_DLC_REQUIRED"; /* master to slave frames */ + /* always to have DLC = MAX_DLC_for CAN-FD */ + + "SECONDARY_SAMPLE_POINT" uchar; /* sender sample point */ + /* [% complete bit time] */ + "TRANSCEIVER_DELAY_COMPENSATION" enum { + "OFF" = 0, + "ON" = 1 + }; + }; + }; + }; + + taggedstruct { + ("OPTIONAL_TL_SUBCMD" enum { /* XCP-Code of optional transport layer */ + /* specific subcommand supported by the slave */ + "GET_SLAVE_ID" = 0xFF, + "GET_DAQ_ID" = 0xFE, + "SET_DAQ_ID" = 0xFD, + "GET_DAQ_CLOCK_MULTICAST" = 0xFA + })*; + }; +}; + +/************************* end of CAN **********************/ + +/********************** start of SxI ***********************/ + +struct SxI_Parameters { /* At MODULE */ + uint; /* XCP on SxI version */ + /* "1.4" = 0x0104 */ + ulong; /* BAUDRATE [Hz] */ + taggedstruct { /* exclusive tags */ + "ASYNCH_FULL_DUPLEX_MODE" struct { + enum { + "PARITY_NONE" = 0, + "PARITY_ODD" = 1, + "PARITY_EVEN" = 2 + }; + enum { + "ONE_STOP_BIT" = 1, + "TWO_STOP_BITS" = 2 + }; + taggedstruct { + block "FRAMING" struct { + uchar; /* SYNC */ + uchar; /* ESC */ + }; + }; + }; + "SYNCH_FULL_DUPLEX_MODE_BYTE"; + "SYNCH_FULL_DUPLEX_MODE_WORD"; + "SYNCH_FULL_DUPLEX_MODE_DWORD"; + "SYNCH_MASTER_SLAVE_MODE_BYTE"; + "SYNCH_MASTER_SLAVE_MODE_WORD"; + "SYNCH_MASTER_SLAVE_MODE_DWORD"; + }; + enum { + "HEADER_LEN_BYTE" = 0, + "HEADER_LEN_CTR_BYTE" = 1, + "HEADER_LEN_FILL_BYTE" = 2, + "HEADER_LEN_WORD" = 3, + "HEADER_LEN_CTR_WORD" = 4, + "HEADER_LEN_FILL_WORD" = 5 + }; + enum { + "NO_CHECKSUM" = 0, + "CHECKSUM_BYTE" = 1, + "CHECKSUM_WORD" = 2 + }; + +}; + +/*************************** end of SxI ********************/ + + +/************************ start of TCP_IP ******************/ + +struct TCP_IP_Parameters { + + uint; /* XCP on TCP_IP version */ + /* "1.4" = 0x0104 */ + uint; /* PORT */ + + taggedunion { + "HOST_NAME" char[256]; + "ADDRESS" char[15]; + "IPV6" char[39]; + }; + taggedstruct{ + "MAX_BUS_LOAD" ulong; /* maximum available bus */ + /* load in percent */ + "MAX_BIT_RATE" ulong; /* Network speed which is */ + /* the base for MAX_BUS_LOAD in Mbit */ + }; + + taggedstruct{ + "PACKET_ALIGNMENT" enum { + "PACKET_ALIGNMENT_8" = 0, /* This is the default if the keyword is missing */ + "PACKET_ALIGNMENT_16" = 1, + "PACKET_ALIGNMENT_32" = 2 + }; + }; + + taggedstruct{ + ("OPTIONAL_TL_SUBCMD" enum { /* XCP-Code of optional transport layer */ + /* specific subcommand supported by the slave */ + "GET_SLAVE_ID" = 0xFF, + "GET_SLAVE_ID_EXTENDED" = 0xFD, + "SET_SLAVE_IP_ADDRESS" = 0xFC, + "GET_DAQ_CLOCK_MULTICAST" = 0xFA + })*; + }; +}; + +/************************* end of TCP_IP *******************/ + +/************************ start of UDP_IP ******************/ + +struct UDP_IP_Parameters { + + uint; /* XCP on UDP_IP version */ + /* "1.4" = 0x0104 */ + uint; /* PORT */ + + taggedunion { + "HOST_NAME" char[256]; + "ADDRESS" char[15]; + "IPV6" char[39]; + }; + taggedstruct{ + "MAX_BUS_LOAD" ulong; /* maximum available bus */ + /* load in percent */ + "MAX_BIT_RATE" ulong; /* Network speed which is */ + /* the base for MAX_BUS_LOAD in Mbit */ + }; + + taggedstruct{ + "PACKET_ALIGNMENT" enum { + "PACKET_ALIGNMENT_8" = 0, /* This is the default if the keyword is missing */ + "PACKET_ALIGNMENT_16" = 1, + "PACKET_ALIGNMENT_32" = 2 + }; + }; + + taggedstruct{ + ("OPTIONAL_TL_SUBCMD" enum { /* XCP-Code of optional transport layer */ + /* specific subcommand supported by the slave */ + "GET_SLAVE_ID" = 0xFF, + "GET_SLAVE_ID_EXTENDED" = 0xFD, + "SET_SLAVE_IP_ADDRESS" = 0xFC, + "GET_DAQ_CLOCK_MULTICAST" = 0xFA + })*; + }; +}; + +/*************************** end of UDP_IP *****************/ + +/************************ start of USB *********************/ + +struct ep_parameters { + uchar; /* ENDPOINT_NUMBER, not endpoint address */ + enum { + "BULK_TRANSFER" = 2, /* Numbers according to USB spec. */ + "INTERRUPT_TRANSFER" = 3 + }; + uint; /* wMaxPacketSize: Maximum packet */ + /* size of endpoint in bytes */ + uchar; /* bInterval: polling of endpoint */ + enum { /* Packing of XCP Messages */ + "MESSAGE_PACKING_SINGLE" = 0, /* Single per USB data packet */ + "MESSAGE_PACKING_MULTIPLE" = 1, /* Multiple per USB data packet */ + "MESSAGE_PACKING_STREAMING" = 2 /* No restriction by packet sizes */ + }; + enum { /* Alignment mandatory for all */ + "ALIGNMENT_8_BIT" = 0, /* packing types */ + "ALIGNMENT_16_BIT"= 1, + "ALIGNMENT_32_BIT"= 2, + "ALIGNMENT_64_BIT"= 3 + }; + taggedstruct { /* Optional */ + "RECOMMENDED_HOST_BUFSIZE" uint; /* Recommended size for the host */ + /* buffer size. The size is defined */ + /* as multiple of wMaxPacketSize. */ + }; +}; /* end of ep_parameters */ + +struct USB_Parameters { + uint; /* XCP on USB version */ + /* 1.4 = 0x0104 */ + uint; /* Vendor ID */ + uint; /* Product ID */ + uchar; /* Number of interface */ + enum { + "HEADER_LEN_BYTE" = 0, + "HEADER_LEN_CTR_BYTE" = 1, + "HEADER_LEN_FILL_BYTE" = 2, + "HEADER_LEN_WORD" = 3, + "HEADER_LEN_CTR_WORD" = 4, + "HEADER_LEN_FILL_WORD" = 5 + }; + taggedunion { /* OUT-EP for CMD and */ + /* STIM (if not specified otherwise) */ + block "OUT_EP_CMD_STIM" struct ep_parameters; + }; + taggedunion { /* IN-EP for RES/ERR, */ + /* DAQ (if not specified otherwise) and */ + /* EV/SERV (if not specified otherwise) */ + block "IN_EP_RESERR_DAQ_EVSERV" struct ep_parameters; + }; + /* Begin of optional */ + taggedstruct { /* Optional */ + "ALTERNATE_SETTING_NO" uchar; /* Number of alternate setting */ + /* String Descriptor of XCP */ + /* interface */ + "INTERFACE_STRING_DESCRIPTOR" char [101]; + /* multiple OUT-EP's for STIM */ + (block "OUT_EP_ONLY_STIM" struct ep_parameters)*; + /* multiple IN-EP's for DAQ */ + (block "IN_EP_ONLY_DAQ" struct ep_parameters)*; + /* only one IN-EP for EV/SERV */ + block "IN_EP_ONLY_EVSERV" struct ep_parameters; + (block "DAQ_LIST_USB_ENDPOINT" struct { + uint; /* reference to DAQ_LIST_NUMBER */ + taggedstruct { /* only mentioned if not VARIABLE */ + "FIXED_IN" uchar; /* this DAQ list always */ + /* ENDPOINT_NUMBER, not endpoint address */ + "FIXED_OUT" uchar; /* this STIM list always */ + /* ENDPOINT_NUMBER, not endpoint address */ + }; + })*; /* end of DAQ_LIST_USB_ENDPOINT */ + }; + + taggedstruct { + ("OPTIONAL_TL_SUBCMD" enum { /* XCP-Code of optional transport layer */ + /* specific subcommand supported by the slave */ + "GET_DAQ_EP" = 0xFF, + "SET_DAQ_EP" = 0xFE + })*; + + }; /* end of optional */ +}; + +/************************* end of USB **********************/ + +/************************ start of FLX *********************/ + +enum packet_assignment_type { + "NOT_ALLOWED", + "FIXED", + "VARIABLE_INITIALISED", + "VARIABLE" +}; /* end of packet_assignment_type */ + +struct buffer { + + uchar; /* FLX_BUF */ + + taggedstruct { + + "MAX_FLX_LEN_BUF" taggedunion { + "FIXED" uchar; /* constant value */ + "VARIABLE" uchar; /* initial value */ + }; /* end of MAX_FLX_LEN_BUF */ + + block "LPDU_ID" taggedstruct { + + "FLX_SLOT_ID" taggedunion { + "FIXED" uint; + "VARIABLE" taggedstruct{ + "INITIAL_VALUE" uint; + }; + }; /* end of FLX_SLOT_ID */ + + "OFFSET" taggedunion { + "FIXED" uchar; + "VARIABLE" taggedstruct{ + "INITIAL_VALUE" uchar; + }; + }; /* end of OFFSET */ + + "CYCLE_REPETITION" taggedunion { + "FIXED" uchar; + "VARIABLE" taggedstruct{ + "INITIAL_VALUE" uchar; + }; + }; /* end of CYCLE_REPETITION */ + + "CHANNEL" taggedunion { + "FIXED" enum { + "A" = 0, + "B" = 1 + }; + "VARIABLE" taggedstruct{ + "INITIAL_VALUE" enum { + "A" = 0, + "B" = 1 + }; + }; + }; /* end of CHANNEL */ + + }; /* end of LPDU_ID */ + + block "XCP_PACKET" taggedstruct { + + "CMD" enum packet_assignment_type; + "RES_ERR" enum packet_assignment_type; + "EV_SERV" enum packet_assignment_type; + "DAQ" enum packet_assignment_type; + "STIM" enum packet_assignment_type; + "MULTICAST" enum packet_assignment_type; + + }; /* end of XCP_PACKET */ + }; + +}; /* end of buffer */ + +struct FLX_Parameters { + + uint; /* XCP on FlexRay version */ + /* "1.4" = 0x0104 */ + + uint; /* T1_FLX [ms] */ + + char[256]; /* FIBEX-file including CHI information */ + /* including extension */ + /* without path */ + + char[256]; /* Cluster-ID */ + + uchar; /* NAX */ + + enum { + "HEADER_NAX" = 0, + "HEADER_NAX_FILL" = 1, + "HEADER_NAX_CTR" = 2, + "HEADER_NAX_FILL3" = 3, + "HEADER_NAX_CTR_FILL2" = 4, + "HEADER_NAX_LEN" = 5, + "HEADER_NAX_CTR_LEN" = 6, + "HEADER_NAX_FILL2_LEN" = 7, + "HEADER_NAX_CTR_FILL_LEN" = 8 + }; + + + enum { + "PACKET_ALIGNMENT_8" = 0, + "PACKET_ALIGNMENT_16" = 1, + "PACKET_ALIGNMENT_32" = 2 + }; + + taggedunion { + block "INITIAL_CMD_BUFFER" struct buffer; + }; + + taggedunion { + block "INITIAL_RES_ERR_BUFFER" struct buffer; + }; + + taggedstruct { + (block "POOL_BUFFER" struct buffer)*; + }; + + taggedstruct { + ("OPTIONAL_TL_SUBCMD" enum { /* XCP-Code of optional transport layer */ + /* specific subcommand supported by the slave */ + "FLX_ASSIGN" = 0xFF, + "FLX_ACTIVATE" = 0xFE, + "FLX_DEACTIVATE" = 0xFD, + "GET_DAQ_FLX_BUF" = 0xFC, + "SET_DAQ_FLX_BUF" = 0xFB, + "GET_DAQ_CLOCK_MULTICAST" = 0xFA + })*; + }; +}; + +block "IF_DATA" taggedunion if_data { +"XCP" struct { + taggedstruct Common_Parameters; /* default parameters */ + taggedstruct { + block "XCP_ON_CAN" struct { + struct CAN_Parameters; /* specific for CAN */ + taggedstruct Common_Parameters; /* overruling of default */ + }; + block "XCP_ON_SxI" struct { + struct SxI_Parameters; /* specific for SxI */ + taggedstruct Common_Parameters; /* overruling of default */ + }; + block "XCP_ON_TCP_IP" struct { + struct TCP_IP_Parameters; /* specific for TCP_IP */ + taggedstruct Common_Parameters; /* overruling of default */ + }; + block "XCP_ON_UDP_IP" struct { + struct UDP_IP_Parameters; /* specific for UDP */ + taggedstruct Common_Parameters; /* overruling of default */ + }; + block "XCP_ON_USB" struct { + struct USB_Parameters; /* specific for USB */ + taggedstruct Common_Parameters; /* overruling of default */ + }; + block "XCP_ON_FLX" struct { + struct FLX_Parameters; /* specific for FlexRay */ + taggedstruct Common_Parameters; /* overruling of default */ + }; + }; /* transport layer parameters*/ +}; + +"XCPplus" struct { + uint; /* XCP plus AML structure version */ + taggedstruct Common_Parameters; /* default parameters */ + taggedstruct { + (block "XCP_ON_CAN" struct { + struct CAN_Parameters; /* specific for CAN */ + taggedstruct Common_Parameters; /* overruling of default */ + taggedstruct { + "TRANSPORT_LAYER_INSTANCE" char[101]; /* name of the transport layer instance */ + }; + })*; + (block "XCP_ON_SxI" struct { + struct SxI_Parameters; /* specific for SxI */ + taggedstruct Common_Parameters; /* overruling of default */ + taggedstruct { + "TRANSPORT_LAYER_INSTANCE" char[101]; /* name of the transport layer instance */ + }; + })*; + (block "XCP_ON_TCP_IP" struct { + struct TCP_IP_Parameters; /* specific for TCP_IP */ + taggedstruct Common_Parameters; /* overruling of default */ + taggedstruct { + "TRANSPORT_LAYER_INSTANCE" char[101]; /* name of the transport layer instance */ + }; + })*; + (block "XCP_ON_UDP_IP" struct { + struct UDP_IP_Parameters; /* specific for UDP */ + taggedstruct Common_Parameters; /* overruling of default */ + taggedstruct { + "TRANSPORT_LAYER_INSTANCE" char[101]; /* name of the transport layer instance */ + }; + })*; + (block "XCP_ON_USB" struct { + struct USB_Parameters; /* specific for USB */ + taggedstruct Common_Parameters; /* overruling of default */ + taggedstruct { + "TRANSPORT_LAYER_INSTANCE" char[101]; /* name of the transport layer instance */ + }; + })*; + (block "XCP_ON_FLX" struct { + struct FLX_Parameters; /* specific for FlexRay */ + taggedstruct Common_Parameters; /* overruling of default */ + taggedstruct { + "TRANSPORT_LAYER_INSTANCE" char[101]; /* name of the transport layer instance */ + }; + })*; + }; /* transport layer specific parameters */ +}; +}; + +/end A2ML diff --git a/examples/no_a2l_demo/CANape/no_a2l_demo.A2L b/examples/no_a2l_demo/CANape/no_a2l_demo.A2L new file mode 100644 index 00000000..cc80cdf9 --- /dev/null +++ b/examples/no_a2l_demo/CANape/no_a2l_demo.A2L @@ -0,0 +1,260 @@ + +/* Created by xcp_client with target XCP event/segment and ELF/DWARF variable and type information, online mode - 2025-10-26 07:26:43 */ +ASAP2_VERSION 1 71 +/begin PROJECT no_a2l_demo "" +/begin HEADER "" VERSION "1.0" PROJECT_NO XCPLITE__CASDD /end HEADER + +/begin MODULE no_a2l_demo "" + + /include "XCP_104.aml" + + /begin MOD_COMMON "" + BYTE_ORDER MSB_LAST + ALIGNMENT_BYTE 1 + ALIGNMENT_WORD 1 + ALIGNMENT_LONG 1 + ALIGNMENT_FLOAT16_IEEE 1 + ALIGNMENT_FLOAT32_IEEE 1 + ALIGNMENT_FLOAT64_IEEE 1 + ALIGNMENT_INT64 1 + /end MOD_COMMON + + /* Predefined conversion rule for bool */ + /begin COMPU_METHOD BOOL "" + TAB_VERB "%.0" "" COMPU_TAB_REF BOOL.table + /end COMPU_METHOD + /begin COMPU_VTAB BOOL.table "" TAB_VERB 2 + 0 "false" 1 "true" + /end COMPU_VTAB + + /* Predefined conversion rule identity with no phys unit and zero decimal places */ + /begin COMPU_METHOD IDENTITY "" + IDENTICAL "%.0" "" + /end COMPU_METHOD + + /* Predefined characteristic record layouts for standard types */ + /begin RECORD_LAYOUT BOOL FNC_VALUES 1 UBYTE ROW_DIR DIRECT /end RECORD_LAYOUT + /begin RECORD_LAYOUT U8 FNC_VALUES 1 UBYTE ROW_DIR DIRECT /end RECORD_LAYOUT + /begin RECORD_LAYOUT U16 FNC_VALUES 1 UWORD ROW_DIR DIRECT /end RECORD_LAYOUT + /begin RECORD_LAYOUT U32 FNC_VALUES 1 ULONG ROW_DIR DIRECT /end RECORD_LAYOUT + /begin RECORD_LAYOUT U64 FNC_VALUES 1 A_UINT64 ROW_DIR DIRECT /end RECORD_LAYOUT + /begin RECORD_LAYOUT I8 FNC_VALUES 1 SBYTE ROW_DIR DIRECT /end RECORD_LAYOUT + /begin RECORD_LAYOUT I16 FNC_VALUES 1 SWORD ROW_DIR DIRECT /end RECORD_LAYOUT + /begin RECORD_LAYOUT I32 FNC_VALUES 1 SLONG ROW_DIR DIRECT /end RECORD_LAYOUT + /begin RECORD_LAYOUT I64 FNC_VALUES 1 A_INT64 ROW_DIR DIRECT /end RECORD_LAYOUT + /begin RECORD_LAYOUT F32 FNC_VALUES 1 FLOAT32_IEEE ROW_DIR DIRECT /end RECORD_LAYOUT + /begin RECORD_LAYOUT F64 FNC_VALUES 1 FLOAT64_IEEE ROW_DIR DIRECT /end RECORD_LAYOUT + + /* Predefined axis record layouts for standard types */ + /begin RECORD_LAYOUT A_U8 AXIS_PTS_X 1 UBYTE INDEX_INCR DIRECT /end RECORD_LAYOUT + /begin RECORD_LAYOUT A_U16 AXIS_PTS_X 1 UWORD INDEX_INCR DIRECT /end RECORD_LAYOUT + /begin RECORD_LAYOUT A_U32 AXIS_PTS_X 1 ULONG INDEX_INCR DIRECT /end RECORD_LAYOUT + /begin RECORD_LAYOUT A_U64 AXIS_PTS_X 1 A_UINT64 INDEX_INCR DIRECT /end RECORD_LAYOUT + /begin RECORD_LAYOUT A_I8 AXIS_PTS_X 1 SBYTE INDEX_INCR DIRECT /end RECORD_LAYOUT + /begin RECORD_LAYOUT A_I16 AXIS_PTS_X 1 SWORD INDEX_INCR DIRECT /end RECORD_LAYOUT + /begin RECORD_LAYOUT A_I32 AXIS_PTS_X 1 SLONG INDEX_INCR DIRECT /end RECORD_LAYOUT + /begin RECORD_LAYOUT A_I64 AXIS_PTS_X 1 A_INT64 INDEX_INCR DIRECT /end RECORD_LAYOUT + /begin RECORD_LAYOUT A_F32 AXIS_PTS_X 1 FLOAT32_IEEE INDEX_INCR DIRECT /end RECORD_LAYOUT + /begin RECORD_LAYOUT A_F64 AXIS_PTS_X 1 FLOAT64_IEEE INDEX_INCR DIRECT /end RECORD_LAYOUT + + /* Predefined measurement and characteristic typedefs for standard types */ + /begin TYPEDEF_MEASUREMENT M_BOOL "" UBYTE BOOL 0 0 0 1 /end TYPEDEF_MEASUREMENT + /begin TYPEDEF_MEASUREMENT M_U8 "" UBYTE NO_COMPU_METHOD 0 0 0 255 /end TYPEDEF_MEASUREMENT + /begin TYPEDEF_MEASUREMENT M_U16 "" UWORD NO_COMPU_METHOD 0 0 0 65535 /end TYPEDEF_MEASUREMENT + /begin TYPEDEF_MEASUREMENT M_U32 "" ULONG NO_COMPU_METHOD 0 0 0 4294967295 /end TYPEDEF_MEASUREMENT + /begin TYPEDEF_MEASUREMENT M_U64 "" A_UINT64 NO_COMPU_METHOD 0 0 0 1e12 /end TYPEDEF_MEASUREMENT + /begin TYPEDEF_MEASUREMENT M_I8 "" SBYTE NO_COMPU_METHOD 0 0 -128 127 /end TYPEDEF_MEASUREMENT + /begin TYPEDEF_MEASUREMENT M_I16 "" SWORD NO_COMPU_METHOD 0 0 -32768 32767 /end TYPEDEF_MEASUREMENT + /begin TYPEDEF_MEASUREMENT M_I32 "" SLONG NO_COMPU_METHOD 0 0 -2147483648 2147483647 /end TYPEDEF_MEASUREMENT + /begin TYPEDEF_MEASUREMENT M_I64 "" A_INT64 NO_COMPU_METHOD 0 0 -1e12 1e12 /end TYPEDEF_MEASUREMENT + /begin TYPEDEF_MEASUREMENT M_F32 "" FLOAT32_IEEE NO_COMPU_METHOD 0 0 -1e12 1e12 /end TYPEDEF_MEASUREMENT + /begin TYPEDEF_MEASUREMENT M_F64 "" FLOAT64_IEEE NO_COMPU_METHOD 0 0 -1e12 1e12 /end TYPEDEF_MEASUREMENT + /begin TYPEDEF_CHARACTERISTIC C_BOOL "" VALUE U8 0 BOOL 0 1 /end TYPEDEF_CHARACTERISTIC + /begin TYPEDEF_CHARACTERISTIC C_U8 "" VALUE U8 0 NO_COMPU_METHOD 0 255 /end TYPEDEF_CHARACTERISTIC + /begin TYPEDEF_CHARACTERISTIC C_U16 "" VALUE U16 0 NO_COMPU_METHOD 0 65535 /end TYPEDEF_CHARACTERISTIC + /begin TYPEDEF_CHARACTERISTIC C_U32 "" VALUE U32 0 NO_COMPU_METHOD 0 4294967295 /end TYPEDEF_CHARACTERISTIC + /begin TYPEDEF_CHARACTERISTIC C_U64 "" VALUE U64 0 NO_COMPU_METHOD 0 1e12 /end TYPEDEF_CHARACTERISTIC + /begin TYPEDEF_CHARACTERISTIC C_I8 "" VALUE I8 0 NO_COMPU_METHOD -128 127 /end TYPEDEF_CHARACTERISTIC + /begin TYPEDEF_CHARACTERISTIC C_I16 "" VALUE I16 0 NO_COMPU_METHOD -32768 32767 /end TYPEDEF_CHARACTERISTIC + /begin TYPEDEF_CHARACTERISTIC C_I32 "" VALUE I32 0 NO_COMPU_METHOD -2147483648 2147483647 /end TYPEDEF_CHARACTERISTIC + /begin TYPEDEF_CHARACTERISTIC C_I64 "" VALUE I64 0 NO_COMPU_METHOD -1e12 1e12 /end TYPEDEF_CHARACTERISTIC + /begin TYPEDEF_CHARACTERISTIC C_F64 "" VALUE F64 0 NO_COMPU_METHOD -1e12 1e12 /end TYPEDEF_CHARACTERISTIC + /begin TYPEDEF_CHARACTERISTIC C_F32 "" VALUE F32 0 NO_COMPU_METHOD -1e12 1e12 /end TYPEDEF_CHARACTERISTIC + +/begin MOD_PAR "" +/begin MEMORY_SEGMENT epk "" DATA FLASH INTERN 0x80000000 20 -1 -1 -1 -1 -1 +/begin IF_DATA XCP + /begin SEGMENT 0 2 0 0 0 + /begin CHECKSUM XCP_ADD_44 MAX_BLOCK_SIZE 0xFFFF EXTERNAL_FUNCTION "" /end CHECKSUM + /begin PAGE 0x0 ECU_ACCESS_DONT_CARE XCP_READ_ACCESS_DONT_CARE XCP_WRITE_ACCESS_DONT_CARE /end PAGE + /begin PAGE 0x1 ECU_ACCESS_DONT_CARE XCP_READ_ACCESS_DONT_CARE XCP_WRITE_ACCESS_NOT_ALLOWED /end PAGE + /end SEGMENT +/end IF_DATA +/end MEMORY_SEGMENT +/begin MEMORY_SEGMENT params "" DATA FLASH INTERN 0x80010000 56 -1 -1 -1 -1 -1 +/begin IF_DATA XCP + /begin SEGMENT 1 2 0 0 0 + /begin CHECKSUM XCP_ADD_44 MAX_BLOCK_SIZE 0xFFFF EXTERNAL_FUNCTION "" /end CHECKSUM + /begin PAGE 0x0 ECU_ACCESS_DONT_CARE XCP_READ_ACCESS_DONT_CARE XCP_WRITE_ACCESS_DONT_CARE /end PAGE + /begin PAGE 0x1 ECU_ACCESS_DONT_CARE XCP_READ_ACCESS_DONT_CARE XCP_WRITE_ACCESS_NOT_ALLOWED /end PAGE + /end SEGMENT +/end IF_DATA +/end MEMORY_SEGMENT +/end MOD_PAR + +/begin IF_DATA XCP + /begin PROTOCOL_LAYER + 0x104 1000 2000 0 0 0 0 0 252 1468 BYTE_ORDER_MSB_LAST ADDRESS_GRANULARITY_BYTE + OPTIONAL_CMD GET_COMM_MODE_INFO + OPTIONAL_CMD GET_ID + OPTIONAL_CMD SET_REQUEST + OPTIONAL_CMD SET_MTA + OPTIONAL_CMD UPLOAD + OPTIONAL_CMD SHORT_UPLOAD + OPTIONAL_CMD DOWNLOAD + OPTIONAL_CMD SHORT_DOWNLOAD + OPTIONAL_CMD GET_CAL_PAGE + OPTIONAL_CMD SET_CAL_PAGE + OPTIONAL_CMD COPY_CAL_PAGE + OPTIONAL_CMD BUILD_CHECKSUM + OPTIONAL_CMD GET_DAQ_RESOLUTION_INFO + OPTIONAL_CMD GET_DAQ_PROCESSOR_INFO + OPTIONAL_CMD FREE_DAQ + OPTIONAL_CMD ALLOC_DAQ + OPTIONAL_CMD ALLOC_ODT + OPTIONAL_CMD ALLOC_ODT_ENTRY + OPTIONAL_CMD SET_DAQ_PTR + OPTIONAL_CMD WRITE_DAQ + OPTIONAL_CMD GET_DAQ_LIST_MODE + OPTIONAL_CMD SET_DAQ_LIST_MODE + OPTIONAL_CMD START_STOP_SYNCH + OPTIONAL_CMD START_STOP_DAQ_LIST + OPTIONAL_CMD GET_DAQ_CLOCK + OPTIONAL_CMD WRITE_DAQ_MULTIPLE + OPTIONAL_CMD TIME_CORRELATION_PROPERTIES + OPTIONAL_CMD USER_CMD + OPTIONAL_LEVEL1_CMD GET_VERSION + /end PROTOCOL_LAYER + + /begin DAQ + DYNAMIC 0 4 0 OPTIMISATION_TYPE_DEFAULT ADDRESS_EXTENSION_FREE IDENTIFICATION_FIELD_TYPE_RELATIVE_BYTE GRANULARITY_ODT_ENTRY_SIZE_DAQ_BYTE 0xF8 OVERLOAD_INDICATION_PID + /begin TIMESTAMP_SUPPORTED + 0x1 SIZE_DWORD UNIT_1US TIMESTAMP_FIXED + /end TIMESTAMP_SUPPORTED + + /begin EVENT "async" "async" 0 DAQ 0xFF 0 0 0 CONSISTENCY DAQ /end EVENT + /* compilation unit = 0, function = main, CFA = 128 */ + /begin EVENT "mainloop" "mainloop" 1 DAQ 0xFF 0 0 0 CONSISTENCY DAQ /end EVENT + /* compilation unit = 0, function = task, CFA = 112 */ + /begin EVENT "task" "task" 2 DAQ 0xFF 0 0 0 CONSISTENCY DAQ /end EVENT + /* compilation unit = 0, function = foo, CFA = 112 */ + /begin EVENT "foo" "foo" 3 DAQ 0xFF 0 0 0 CONSISTENCY DAQ /end EVENT + + /end DAQ + + /begin XCP_ON_TCP_IP 0x104 5555 ADDRESS "192.168.0.206" /end XCP_ON_TCP_IP + +/end IF_DATA + + +/* TypeDefs */ +/begin TYPEDEF_CHARACTERISTIC counter_max "" VALUE U16 0 IDENTITY 0 65535 /end TYPEDEF_CHARACTERISTIC +/begin TYPEDEF_CHARACTERISTIC delay_us "" VALUE U32 0 IDENTITY 0 4294967295 /end TYPEDEF_CHARACTERISTIC +/begin TYPEDEF_CHARACTERISTIC test_par_uint8_array "" VAL_BLK U8 0 IDENTITY 0 255 MATRIX_DIM 10 /end TYPEDEF_CHARACTERISTIC +/begin TYPEDEF_CHARACTERISTIC test_par_double "" VALUE F64 0 NO_COMPU_METHOD -100000000000000000000000000000000 100000000000000000000000000000000 /end TYPEDEF_CHARACTERISTIC +/begin TYPEDEF_CHARACTERISTIC test_par_bool "" VALUE U8 0 IDENTITY 0 255 /end TYPEDEF_CHARACTERISTIC +/begin TYPEDEF_CHARACTERISTIC test_par_enum "" VALUE U32 0 IDENTITY 0 4294967295 /end TYPEDEF_CHARACTERISTIC +/begin TYPEDEF_CHARACTERISTIC test_field_uint16 "" VALUE U16 0 IDENTITY 0 65535 /end TYPEDEF_CHARACTERISTIC +/begin TYPEDEF_CHARACTERISTIC test_field_int16 "" VALUE I16 0 IDENTITY -32768 32767 /end TYPEDEF_CHARACTERISTIC +/begin TYPEDEF_CHARACTERISTIC test_field_float "" VALUE F32 0 NO_COMPU_METHOD -100000000000000000000000000000000 100000000000000000000000000000000 /end TYPEDEF_CHARACTERISTIC +/begin TYPEDEF_CHARACTERISTIC test_field_uint8_array "" VAL_BLK U8 0 IDENTITY 0 255 MATRIX_DIM 3 /end TYPEDEF_CHARACTERISTIC +/begin TYPEDEF_STRUCTURE test_par_struct "" 12 + /begin STRUCTURE_COMPONENT test_field_uint16 test_field_uint16 0 /end STRUCTURE_COMPONENT + /begin STRUCTURE_COMPONENT test_field_int16 test_field_int16 2 /end STRUCTURE_COMPONENT + /begin STRUCTURE_COMPONENT test_field_float test_field_float 4 /end STRUCTURE_COMPONENT + /begin STRUCTURE_COMPONENT test_field_uint8_array test_field_uint8_array 8 /end STRUCTURE_COMPONENT +/end TYPEDEF_STRUCTURE +/begin TYPEDEF_STRUCTURE params "" 56 + /begin STRUCTURE_COMPONENT counter_max counter_max 0 /end STRUCTURE_COMPONENT + /begin STRUCTURE_COMPONENT delay_us delay_us 4 /end STRUCTURE_COMPONENT + /begin STRUCTURE_COMPONENT test_par_uint8_array test_par_uint8_array 8 /end STRUCTURE_COMPONENT + /begin STRUCTURE_COMPONENT test_par_double test_par_double 24 /end STRUCTURE_COMPONENT + /begin STRUCTURE_COMPONENT test_par_bool test_par_bool 32 /end STRUCTURE_COMPONENT + /begin STRUCTURE_COMPONENT test_par_enum test_par_enum 36 /end STRUCTURE_COMPONENT + /begin STRUCTURE_COMPONENT test_par_struct test_par_struct 40 /end STRUCTURE_COMPONENT +/end TYPEDEF_STRUCTURE +/begin TYPEDEF_MEASUREMENT a "" UWORD IDENTITY 0 0 0 65535 /end TYPEDEF_MEASUREMENT +/begin TYPEDEF_MEASUREMENT b "" SWORD IDENTITY 0 0 -32768 32767 /end TYPEDEF_MEASUREMENT +/begin TYPEDEF_MEASUREMENT f "" FLOAT32_IEEE NO_COMPU_METHOD 0 0 -100000000000000000000000000000000 100000000000000000000000000000000 /end TYPEDEF_MEASUREMENT +/begin TYPEDEF_MEASUREMENT d "" UBYTE IDENTITY 0 0 0 255 MATRIX_DIM 3 /end TYPEDEF_MEASUREMENT +/begin TYPEDEF_STRUCTURE test_struct "" 12 + /begin STRUCTURE_COMPONENT a a 0 /end STRUCTURE_COMPONENT + /begin STRUCTURE_COMPONENT b b 2 /end STRUCTURE_COMPONENT + /begin STRUCTURE_COMPONENT f f 4 /end STRUCTURE_COMPONENT + /begin STRUCTURE_COMPONENT d d 8 /end STRUCTURE_COMPONENT +/end TYPEDEF_STRUCTURE + + +/* Measurements */ + +/* Measurements for event 'async' */ +/begin MEASUREMENT global_running "" UBYTE IDENTITY 0 0 0 255 ECU_ADDRESS 0x30200 ECU_ADDRESS_EXTENSION 1 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT global_counter "" UWORD IDENTITY 0 0 0 65535 ECU_ADDRESS 0x3026A ECU_ADDRESS_EXTENSION 1 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT global_test_uint8 "" UBYTE IDENTITY 0 0 0 255 ECU_ADDRESS 0x3024E ECU_ADDRESS_EXTENSION 1 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT global_test_uint16 "" UWORD IDENTITY 0 0 0 65535 ECU_ADDRESS 0x3024C ECU_ADDRESS_EXTENSION 1 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT global_test_uint32 "" ULONG IDENTITY 0 0 0 4294967295 ECU_ADDRESS 0x30248 ECU_ADDRESS_EXTENSION 1 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT global_test_uint64 "" A_UINT64 IDENTITY 0 0 0 18446744073709552000 ECU_ADDRESS 0x30240 ECU_ADDRESS_EXTENSION 1 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT global_test_int8 "" SBYTE IDENTITY 0 0 -128 127 ECU_ADDRESS 0x3023E ECU_ADDRESS_EXTENSION 1 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT global_test_int16 "" SWORD IDENTITY 0 0 -32768 32767 ECU_ADDRESS 0x3023C ECU_ADDRESS_EXTENSION 1 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT global_test_int32 "" SLONG IDENTITY 0 0 -2147483648 2147483647 ECU_ADDRESS 0x30238 ECU_ADDRESS_EXTENSION 1 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT global_test_int64 "" A_INT64 IDENTITY 0 0 -9223372036854776000 9223372036854776000 ECU_ADDRESS 0x30230 ECU_ADDRESS_EXTENSION 1 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT global_test_float "" FLOAT32_IEEE NO_COMPU_METHOD 0 0 -100000000000000000000000000000000 100000000000000000000000000000000 ECU_ADDRESS 0x30228 ECU_ADDRESS_EXTENSION 1 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT global_test_double "" FLOAT64_IEEE NO_COMPU_METHOD 0 0 -100000000000000000000000000000000 100000000000000000000000000000000 ECU_ADDRESS 0x30220 ECU_ADDRESS_EXTENSION 1 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT global_test_bool "" UBYTE IDENTITY 0 0 0 255 ECU_ADDRESS 0x3021B ECU_ADDRESS_EXTENSION 1 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT global_test_array "" UBYTE IDENTITY 0 0 0 255 ECU_ADDRESS 0x30218 ECU_ADDRESS_EXTENSION 1 MATRIX_DIM 3 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin INSTANCE global_test_struct "" test_struct 0x30208 ECU_ADDRESS_EXTENSION 1 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0 /end DAQ_EVENT /end IF_DATA /end INSTANCE +/begin MEASUREMENT XCPLITE__CASDD "" UWORD IDENTITY 0 0 0 65535 ECU_ADDRESS 0xD058 ECU_ADDRESS_EXTENSION 1 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT XcpCreateIndexedEvent.e "" UWORD IDENTITY 0 0 0 65535 ECU_ADDRESS 0x30688 ECU_ADDRESS_EXTENSION 1 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT + +/* Measurements for event 'mainloop' */ +/begin MEASUREMENT main.counter "" ULONG IDENTITY 0 0 0 4294967295 ECU_ADDRESS 0x1006C ECU_ADDRESS_EXTENSION 2 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 1 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT main.static_counter "" UWORD IDENTITY 0 0 0 65535 ECU_ADDRESS 0x30270 ECU_ADDRESS_EXTENSION 1 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 1 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT + +/* Measurements for event 'task' */ +/begin MEASUREMENT task.counter "" ULONG IDENTITY 0 0 0 4294967295 ECU_ADDRESS 0x2006C ECU_ADDRESS_EXTENSION 2 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 2 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT task.static_counter "" UWORD IDENTITY 0 0 0 65535 ECU_ADDRESS 0x3026C ECU_ADDRESS_EXTENSION 1 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 2 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT + +/* Measurements for event 'foo' */ +/begin MEASUREMENT foo.counter "" ULONG IDENTITY 0 0 0 4294967295 ECU_ADDRESS 0x3006C ECU_ADDRESS_EXTENSION 2 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 3 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT foo.static_counter "" UWORD IDENTITY 0 0 0 65535 ECU_ADDRESS 0x3026E ECU_ADDRESS_EXTENSION 1 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 3 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT foo.test_float "" FLOAT32_IEEE NO_COMPU_METHOD 0 0 -100000000000000000000000000000000 100000000000000000000000000000000 ECU_ADDRESS 0x30068 ECU_ADDRESS_EXTENSION 2 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 3 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT foo.test_double "" FLOAT64_IEEE NO_COMPU_METHOD 0 0 -100000000000000000000000000000000 100000000000000000000000000000000 ECU_ADDRESS 0x30060 ECU_ADDRESS_EXTENSION 2 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 3 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT foo.test_uint8 "" UBYTE IDENTITY 0 0 0 255 ECU_ADDRESS 0x3005F ECU_ADDRESS_EXTENSION 2 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 3 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT foo.test_uint16 "" UWORD IDENTITY 0 0 0 65535 ECU_ADDRESS 0x3005C ECU_ADDRESS_EXTENSION 2 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 3 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT foo.test_uint32 "" ULONG IDENTITY 0 0 0 4294967295 ECU_ADDRESS 0x30058 ECU_ADDRESS_EXTENSION 2 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 3 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT foo.test_uint64 "" A_UINT64 IDENTITY 0 0 0 18446744073709552000 ECU_ADDRESS 0x30050 ECU_ADDRESS_EXTENSION 2 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 3 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT foo.test_int8 "" SBYTE IDENTITY 0 0 -128 127 ECU_ADDRESS 0x3004F ECU_ADDRESS_EXTENSION 2 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 3 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT foo.test_int16 "" SWORD IDENTITY 0 0 -32768 32767 ECU_ADDRESS 0x3004C ECU_ADDRESS_EXTENSION 2 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 3 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT foo.test_int32 "" SLONG IDENTITY 0 0 -2147483648 2147483647 ECU_ADDRESS 0x30048 ECU_ADDRESS_EXTENSION 2 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 3 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT foo.test_int64 "" A_UINT64 IDENTITY 0 0 0 18446744073709552000 ECU_ADDRESS 0x30040 ECU_ADDRESS_EXTENSION 2 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 3 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin INSTANCE foo.test_struct "" test_struct 0x30030 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 3 /end DAQ_EVENT /end IF_DATA /end INSTANCE + +/* Measurements without fixed event */ + +/begin GROUP Measurements "" ROOT /begin SUB_GROUP async mainloop task foo /end SUB_GROUP /end GROUP +/begin GROUP async "" /begin REF_MEASUREMENT global_running global_counter global_test_uint8 global_test_uint16 global_test_uint32 global_test_uint64 global_test_int8 global_test_int16 global_test_int32 global_test_int64 global_test_float global_test_double global_test_bool global_test_array global_test_struct XCPLITE__CASDD XcpCreateIndexedEvent.e /end REF_MEASUREMENT /end GROUP +/begin GROUP mainloop "" /begin REF_MEASUREMENT main.counter main.static_counter /end REF_MEASUREMENT /end GROUP +/begin GROUP task "" /begin REF_MEASUREMENT task.counter task.static_counter /end REF_MEASUREMENT /end GROUP +/begin GROUP foo "" /begin REF_MEASUREMENT foo.counter foo.static_counter foo.test_float foo.test_double foo.test_uint8 foo.test_uint16 foo.test_uint32 foo.test_uint64 foo.test_int8 foo.test_int16 foo.test_int32 foo.test_int64 foo.test_struct /end REF_MEASUREMENT /end GROUP + +/* Axis */ + +/* Characteristics */ +/begin INSTANCE params "" params 0x80010000 /end INSTANCE + +/* Characteristic and Axis Groups */ + +/begin GROUP Characteristics "" ROOT /begin SUB_GROUP params /end SUB_GROUP /end GROUP + +/end MODULE +/end PROJECT diff --git a/examples/no_a2l_demo/CANape/no_a2l_demo.cna b/examples/no_a2l_demo/CANape/no_a2l_demo.cna new file mode 100644 index 00000000..91b86c0b --- /dev/null +++ b/examples/no_a2l_demo/CANape/no_a2l_demo.cna @@ -0,0 +1,3863 @@ +[FILE_INFO] +Identification=CANape-Configuration-File +FileName=no_a2l_demo.cna +FileNameAbsolute=Y:\XCPlite-RainerZ\examples\no_a2l_demo\CANape\no_a2l_demo.cna +WorkingDirectory=Y:\XCPlite-RainerZ\examples\no_a2l_demo\CANape +ProjectId=07e9-000a-0002-000b-0018-002f-0000 +FileVersion=2200 +PrgVersion=Version 23.0.20.3237 +PrgDate=16.06.2025 +Description= +CreationTime=11:34 +CreationDate=10/02/2025 ; Month/Day/Year +ModificationTime=08:33 +ModificationDate=10/26/2025 ; Month/Day/Year +Protected=0 +CurrentWindowsACP=1252 + +[ANALYSISPROFILE_MDF_LIST] +Count=1 + +[AUDIO_COMMENT_DEVICE] +Name=AudioComment +Disabled=0 +Mode=5 +Rate=0 +ModeIsDefault=0 +ModeModule= +ModeName=4,"AudioCommentHotkey" +ArchivBy_1=Recorder +DisplayCount=0 + +[AVI_LIST] +Count=0 + +[CALIBRATION_LIST] +Count=9 + +[CALIBRATION_OBJECT_1] +EditOffset=1 +EditFactor=2 +EditFormat=2 +ShowWorkingPoint=0 +FollowWorkingPoint=0 +OverwriteWorkingPointInputX= +OverwriteWorkingPointInputY= +Module=no_a2l_demo +Name=$params$params.counter_max +StimMode=0 +IsFallback=0 + +[CALIBRATION_OBJECT_2] +EditOffset=1 +EditFactor=2 +EditFormat=2 +ShowWorkingPoint=0 +FollowWorkingPoint=0 +OverwriteWorkingPointInputX= +OverwriteWorkingPointInputY= +Module=no_a2l_demo +Name=$params$params.delay_us +StimMode=0 +IsFallback=0 + +[CALIBRATION_OBJECT_3] +EditOffset=1 +EditFactor=2 +EditFormat=2 +ShowWorkingPoint=0 +FollowWorkingPoint=0 +OverwriteWorkingPointInputX= +OverwriteWorkingPointInputY= +Module=no_a2l_demo +Name=$params$params.test_par_double +StimMode=0 +IsFallback=0 + +[CALIBRATION_OBJECT_4] +EditOffset=1 +EditFactor=2 +EditFormat=2 +ShowWorkingPoint=0 +FollowWorkingPoint=0 +OverwriteWorkingPointInputX= +OverwriteWorkingPointInputY= +Module=no_a2l_demo +Name=$params$params.test_par_enum +StimMode=0 +IsFallback=0 + +[CALIBRATION_OBJECT_5] +EditOffset=1 +EditFactor=2 +EditFormat=2 +ShowWorkingPoint=0 +FollowWorkingPoint=0 +OverwriteWorkingPointInputX= +OverwriteWorkingPointInputY= +Module=no_a2l_demo +Name=$params$$test_par_struct$params.test_par_struct.test_field_float +StimMode=0 +IsFallback=0 + +[CALIBRATION_OBJECT_6] +EditOffset=1 +EditFactor=2 +EditFormat=2 +ShowWorkingPoint=0 +FollowWorkingPoint=0 +OverwriteWorkingPointInputX= +OverwriteWorkingPointInputY= +Module=no_a2l_demo +Name=$params$$test_par_struct$params.test_par_struct.test_field_int16 +StimMode=0 +IsFallback=0 + +[CALIBRATION_OBJECT_7] +EditOffset=1 +EditFactor=2 +EditFormat=2 +ShowWorkingPoint=0 +FollowWorkingPoint=0 +OverwriteWorkingPointInputX= +OverwriteWorkingPointInputY= +Module=no_a2l_demo +Name=$params$$test_par_struct$params.test_par_struct.test_field_uint16 +StimMode=0 +IsFallback=0 + +[CALIBRATION_OBJECT_8] +EditOffset=1 +EditFactor=2 +EditFormat=2 +ShowWorkingPoint=0 +FollowWorkingPoint=0 +OverwriteWorkingPointInputX= +OverwriteWorkingPointInputY= +Module=no_a2l_demo +Name=$params$$test_par_struct$params.test_par_struct.test_field_uint8_array +Array=1 +Rows=1 +Columns=3 +StimMode=0 +IsFallback=0 + +[CALIBRATION_OBJECT_9] +EditOffset=1 +EditFactor=2 +EditFormat=2 +ShowWorkingPoint=0 +FollowWorkingPoint=0 +OverwriteWorkingPointInputX= +OverwriteWorkingPointInputY= +Module=no_a2l_demo +Name=$params$params.test_par_uint8_array +Array=1 +Rows=1 +Columns=10 +StimMode=0 +IsFallback=0 + +[CANAPE_ENVIRONMENT] +OBJECT_COUNT=0 + +[CUSTOM_AXIS_TEMPLATE_LIST] +COUNT=0 + +[CUSTOM_TIME_AXIS_TEMPLATE_LIST] +COUNT=0 + +[DATAFLOW_LIST] +Count=0 + +[DATAMINING] +AnalysisFilename=Analysis-{YEAR}-{MONTH}-{DAY}_{HOUR}-{MINUTE}-{SECOND} +AnalysisDirectory= +Comment= +OptionMaxFindingsPerFile=100 +OptionMaxFindings=1000 +OptionCSVListSeparator=0 +OptionCSVExport=0 +OptionMARMFExport=0 +OptionMARMFExtended=0 +OptionSuppressCASLRuntimeErrors=1 +FromTime=-1 +FromActive=0 +FromTimePartActive=0 +ToTime=-1 +ToActive=0 +ToTimePartActive=0 +MDFExtensions=.mf4;.mdf;.dat;.mat;.h5;.xls;.xlsx;.tdms;.marmf +Methods= +Signals= +AnalysisProfiles= +ConditionEpsilon=1e-09 +ConditionEpsilonRelative=0 + +[DATAMINING_FILE_LIST] +Count=0 + +[DISPLAY_PAGE_1] +Name= +Comment= +Maximized=0 +ActiveWindow=1 +IsReportPage=0 +TimeAxisSynchronized=0 +PrintLayout=Default +GUID=DISPLAY_PAGE_70f0db69-d4f3-442f-aff2-585894fc7b32 + +[DISPLAY_PAGE_1_DisplayElements] +Count=0 + +[DISPLAY_PAGES] +Count=1 +Active=0 + +[DYNAMIC_COLUMNS] +Count=0 + +[EVENT_1] +Type=4 +Disabled=0 +KeyCode=86 +Modifier=1 +Name=AudioCommentHotkey +Comment=Audio Comments recorded by the user during measurement +IsFallback=0 + +[EVENT_LIST] +Count=1 + +[FILE_COMMENT_TEMPLATE] +1="Name","" +2="Division","" +3="Project","" +4="Subject","" +5="Comment","" +Count=5 + +[FUNCTION_OBJECT_LIST] +count=0 + +[FUNCTIONS] +COUNT=0 +COUNT_LIBRARY=0 + +[GFX_VISUALIZATION] +EnableRendering=1 + +[JOB_LIST] +Count=0 + +[MASTER_CONFIG] +CommentCOUNT=0 +DisplayName=no_a2l_demo +ColorUsed=0 +SubConfigsCount=0 + +[MDF_LIST] +Count=0 + +[MEASUREMENT_LIST] +Count=31 +OfflineFileName=no_a2l_demo.mf4 +OfflineFileCount=1 +MeaCfgLabellistName= + +[MEASUREMENT_OBJECT_1] +Module=no_a2l_demo +Name=global_counter +Disabled=0 +Mode=2147483648 +Rate=0 +ModeIsDefault=1 +Row=0 +Column=0 +MeaReferenced=1 +ArchivBy_1=Recorder +IsFallback=0 +HasManagedDisplay=0 +DisplayCount=2 + +[MEASUREMENT_OBJECT_10] +Module=no_a2l_demo +Name=foo.test_int8 +Disabled=0 +Mode=2147483651 +Rate=0 +ModeIsDefault=1 +Row=0 +Column=0 +MeaReferenced=1 +ArchivBy_1=Recorder +IsFallback=0 +HasManagedDisplay=0 +DisplayCount=1 + +[MEASUREMENT_OBJECT_10_DISPLAY_1] +Window=5 +Index=5 +Color=16755455 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=0 +YMaxHome=100 +YMin=0 +YMax=100 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=255 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=0 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_0fe4ddf5-71d8-43f8-9614-1aa37e182d8b + +[MEASUREMENT_OBJECT_11] +Module=no_a2l_demo +Name=foo.test_int16 +Disabled=0 +Mode=2147483651 +Rate=0 +ModeIsDefault=1 +Row=0 +Column=0 +MeaReferenced=1 +ArchivBy_1=Recorder +IsFallback=0 +HasManagedDisplay=0 +DisplayCount=1 + +[MEASUREMENT_OBJECT_11_DISPLAY_1] +Window=5 +Index=8 +Color=8421631 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=0 +YMaxHome=100 +YMin=0 +YMax=100 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=0 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_d0ca19f3-a26a-4eb9-b920-c820598221d2 + +[MEASUREMENT_OBJECT_12] +Module=no_a2l_demo +Name=foo.test_int32 +Disabled=0 +Mode=2147483651 +Rate=0 +ModeIsDefault=1 +Row=0 +Column=0 +MeaReferenced=1 +ArchivBy_1=Recorder +IsFallback=0 +HasManagedDisplay=0 +DisplayCount=1 + +[MEASUREMENT_OBJECT_12_DISPLAY_1] +Window=5 +Index=7 +Color=43690 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=0 +YMaxHome=100 +YMin=0 +YMax=100 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=0 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_cce51fa3-609f-4ccc-8465-b54896541857 + +[MEASUREMENT_OBJECT_13] +Module=no_a2l_demo +Name=foo.test_int64 +Disabled=0 +Mode=2147483651 +Rate=0 +ModeIsDefault=1 +Row=0 +Column=0 +MeaReferenced=1 +ArchivBy_1=Recorder +IsFallback=0 +HasManagedDisplay=0 +DisplayCount=1 + +[MEASUREMENT_OBJECT_13_DISPLAY_1] +Window=5 +Index=6 +Color=11184640 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=0 +YMaxHome=100 +YMin=0 +YMax=100 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=0 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_3f2637ed-1197-4462-8f72-ecf810acece2 + +[MEASUREMENT_OBJECT_14] +Module=no_a2l_demo +Name=foo.test_uint8 +Disabled=0 +Mode=2147483651 +Rate=0 +ModeIsDefault=1 +Row=0 +Column=0 +MeaReferenced=1 +ArchivBy_1=Recorder +IsFallback=0 +HasManagedDisplay=0 +DisplayCount=1 + +[MEASUREMENT_OBJECT_14_DISPLAY_1] +Window=5 +Index=1 +Color=255 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=0 +YMaxHome=100 +YMin=0 +YMax=100 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=255 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=0 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_fab8d2f5-33ba-44a2-8d77-4ed3ec7f1114 + +[MEASUREMENT_OBJECT_15] +Module=no_a2l_demo +Name=foo.test_uint16 +Disabled=0 +Mode=2147483651 +Rate=0 +ModeIsDefault=1 +Row=0 +Column=0 +MeaReferenced=1 +ArchivBy_1=Recorder +IsFallback=0 +HasManagedDisplay=0 +DisplayCount=1 + +[MEASUREMENT_OBJECT_15_DISPLAY_1] +Window=5 +Index=4 +Color=11184895 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=0 +YMaxHome=100 +YMin=0 +YMax=100 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=0 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_33046ed8-1422-43ff-b20d-f3ecd8e33ec6 + +[MEASUREMENT_OBJECT_16] +Module=no_a2l_demo +Name=foo.test_uint32 +Disabled=0 +Mode=2147483651 +Rate=0 +ModeIsDefault=1 +Row=0 +Column=0 +MeaReferenced=1 +ArchivBy_1=Recorder +IsFallback=0 +HasManagedDisplay=0 +DisplayCount=1 + +[MEASUREMENT_OBJECT_16_DISPLAY_1] +Window=5 +Index=3 +Color=16755370 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=0 +YMaxHome=100 +YMin=0 +YMax=100 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=0 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_98f1c3e7-1249-4a8a-bc52-68963cd4370b + +[MEASUREMENT_OBJECT_17] +Module=no_a2l_demo +Name=foo.test_uint64 +Disabled=0 +Mode=2147483651 +Rate=0 +ModeIsDefault=1 +Row=0 +Column=0 +MeaReferenced=1 +ArchivBy_1=Recorder +IsFallback=0 +HasManagedDisplay=0 +DisplayCount=1 + +[MEASUREMENT_OBJECT_17_DISPLAY_1] +Window=5 +Index=2 +Color=11206570 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=0 +YMaxHome=100 +YMin=0 +YMax=100 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=0 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_1b4d97ed-914f-4e15-aab2-b1df8f51c11a + +[MEASUREMENT_OBJECT_18] +Components=0 +Module=no_a2l_demo +Name=$foo.test_struct$ +Disabled=0 +Mode=2147483651 +Rate=0 +ModeIsDefault=1 +Row=0 +Column=0 +MeaReferenced=1 +ArchivBy_1=Recorder +IsFallback=0 +HasManagedDisplay=0 +DisplayCount=1 + +[MEASUREMENT_OBJECT_18_DISPLAY_1] +Window=5 +Index=0 +Color=65280 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=0 +YMaxHome=100 +YMin=0 +YMax=100 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=0 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_46873a4e-7dd5-47cf-9d1f-5bdebd848d18 + +[MEASUREMENT_OBJECT_19] +Module=no_a2l_demo +Name=task.counter +Disabled=0 +Mode=2147483650 +Rate=0 +ModeIsDefault=1 +Row=0 +Column=0 +MeaReferenced=1 +ArchivBy_1=Recorder +IsFallback=0 +HasManagedDisplay=0 +DisplayCount=2 + +[MEASUREMENT_OBJECT_19_DISPLAY_1] +Window=5 +Index=14 +Color=65535 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=0 +YMaxHome=100 +YMin=0 +YMax=100 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=0 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_77404029-bd0b-4370-98d9-58e38b962f22 + +[MEASUREMENT_OBJECT_19_DISPLAY_2] +Window=3 +Index=0 +Color=65535 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=-400 +YMaxHome=1600 +YMin=-400 +YMax=1600 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=1 +SublMask=1 +MeaSublMask=3 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=1 +AxisTemplate= +GUID=DISPLAY_406e17e7-f494-46c4-859f-92e355567002 + +[MEASUREMENT_OBJECT_1_DISPLAY_1] +Window=3 +Index=6 +Color=65535 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=-400 +YMaxHome=1600 +YMin=-400 +YMax=1600 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=1 +MeaSublMask=3 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=1 +AxisTemplate= +GUID=DISPLAY_f54f731f-fdd2-4734-bcb9-2067c6e3eaea + +[MEASUREMENT_OBJECT_1_DISPLAY_2] +Window=5 +Index=28 +Color=65535 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=0 +YMaxHome=100 +YMin=0 +YMax=100 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=0 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_f5908e73-266d-4f06-b830-396ad92c6629 + +[MEASUREMENT_OBJECT_2] +Components=0 +Module=no_a2l_demo +Name=$global_test_struct$ +Disabled=0 +Mode=2147483648 +Rate=0 +ModeIsDefault=1 +Row=0 +Column=0 +MeaReferenced=1 +ArchivBy_1=Recorder +IsFallback=0 +HasManagedDisplay=0 +DisplayCount=1 + +[MEASUREMENT_OBJECT_20] +Module=no_a2l_demo +Name=task.static_counter +Disabled=0 +Mode=2147483650 +Rate=0 +ModeIsDefault=1 +Row=0 +Column=0 +MeaReferenced=1 +ArchivBy_1=Recorder +IsFallback=0 +HasManagedDisplay=0 +DisplayCount=2 + +[MEASUREMENT_OBJECT_20_DISPLAY_1] +Window=5 +Index=13 +Color=33023 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=0 +YMaxHome=100 +YMin=0 +YMax=100 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=0 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_8fbe7fdb-5aa6-41cc-a15d-08a59e28f633 + +[MEASUREMENT_OBJECT_20_DISPLAY_2] +Window=3 +Index=1 +Color=33023 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=-400 +YMaxHome=1600 +YMin=-400 +YMax=1600 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=1 +MeaSublMask=3 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=1 +AxisTemplate= +GUID=DISPLAY_e234b676-34f1-4a0c-ad3e-6652579052ed + +[MEASUREMENT_OBJECT_21] +Module=no_a2l_demo +Name=global_running +Disabled=0 +Mode=2147483648 +Rate=0 +ModeIsDefault=1 +Row=0 +Column=0 +MeaReferenced=1 +ArchivBy_1=Recorder +IsFallback=0 +HasManagedDisplay=0 +DisplayCount=0 + +[MEASUREMENT_OBJECT_22] +Module=no_a2l_demo +Name=global_test_double +Disabled=0 +Mode=2147483648 +Rate=0 +ModeIsDefault=1 +Row=0 +Column=0 +MeaReferenced=1 +ArchivBy_1=Recorder +IsFallback=0 +HasManagedDisplay=0 +DisplayCount=1 + +[MEASUREMENT_OBJECT_22_DISPLAY_1] +Window=5 +Index=26 +Color=28784 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=0 +YMaxHome=100 +YMin=0 +YMax=100 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=0 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_f7b0b003-497b-430d-af33-bbbc819c1f4f + +[MEASUREMENT_OBJECT_23] +Module=no_a2l_demo +Name=global_test_float +Disabled=0 +Mode=2147483648 +Rate=0 +ModeIsDefault=1 +Row=0 +Column=0 +MeaReferenced=1 +ArchivBy_1=Recorder +IsFallback=0 +HasManagedDisplay=0 +DisplayCount=1 + +[MEASUREMENT_OBJECT_23_DISPLAY_1] +Window=5 +Index=25 +Color=16755200 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=0 +YMaxHome=100 +YMin=0 +YMax=100 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=0 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_c85e458d-a499-4b19-8731-4c9407493e91 + +[MEASUREMENT_OBJECT_24] +Module=no_a2l_demo +Name=global_test_int16 +Disabled=0 +Mode=2147483648 +Rate=0 +ModeIsDefault=1 +Row=0 +Column=0 +MeaReferenced=1 +ArchivBy_1=Recorder +IsFallback=0 +HasManagedDisplay=0 +DisplayCount=1 + +[MEASUREMENT_OBJECT_24_DISPLAY_1] +Window=5 +Index=24 +Color=16711850 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=0 +YMaxHome=100 +YMin=0 +YMax=100 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=0 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_70a34032-37bc-4fcb-afcc-992588401040 + +[MEASUREMENT_OBJECT_25] +Module=no_a2l_demo +Name=global_test_int32 +Disabled=0 +Mode=2147483648 +Rate=0 +ModeIsDefault=1 +Row=0 +Column=0 +MeaReferenced=1 +ArchivBy_1=Recorder +IsFallback=0 +HasManagedDisplay=0 +DisplayCount=1 + +[MEASUREMENT_OBJECT_25_DISPLAY_1] +Window=5 +Index=23 +Color=21930 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=0 +YMaxHome=100 +YMin=0 +YMax=100 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=0 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_ef5464ef-46b6-45c8-9b95-28e16cfe7fbe + +[MEASUREMENT_OBJECT_26] +Module=no_a2l_demo +Name=global_test_int64 +Disabled=0 +Mode=2147483648 +Rate=0 +ModeIsDefault=1 +Row=0 +Column=0 +MeaReferenced=1 +ArchivBy_1=Recorder +IsFallback=0 +HasManagedDisplay=0 +DisplayCount=1 + +[MEASUREMENT_OBJECT_26_DISPLAY_1] +Window=5 +Index=22 +Color=11162965 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=0 +YMaxHome=100 +YMin=0 +YMax=100 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=0 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_13ff4fe0-0651-4dcd-817e-0cd7309aee5d + +[MEASUREMENT_OBJECT_27] +Module=no_a2l_demo +Name=global_test_int8 +Disabled=0 +Mode=2147483648 +Rate=0 +ModeIsDefault=1 +Row=0 +Column=0 +MeaReferenced=1 +ArchivBy_1=Recorder +IsFallback=0 +HasManagedDisplay=0 +DisplayCount=1 + +[MEASUREMENT_OBJECT_27_DISPLAY_1] +Window=5 +Index=21 +Color=16777215 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=0 +YMaxHome=100 +YMin=0 +YMax=100 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=255 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=0 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_a214dfc1-1888-40fb-88a6-4608302e478d + +[MEASUREMENT_OBJECT_28] +Module=no_a2l_demo +Name=global_test_uint16 +Disabled=0 +Mode=2147483648 +Rate=0 +ModeIsDefault=1 +Row=0 +Column=0 +MeaReferenced=1 +ArchivBy_1=Recorder +IsFallback=0 +HasManagedDisplay=0 +DisplayCount=1 + +[MEASUREMENT_OBJECT_28_DISPLAY_1] +Window=5 +Index=20 +Color=43520 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=0 +YMaxHome=100 +YMin=0 +YMax=100 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=0 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_154c9d41-d5dc-4fff-b3af-ad354a4dbc4d + +[MEASUREMENT_OBJECT_29] +Module=no_a2l_demo +Name=global_test_uint32 +Disabled=0 +Mode=2147483648 +Rate=0 +ModeIsDefault=1 +Row=0 +Column=0 +MeaReferenced=1 +ArchivBy_1=Recorder +IsFallback=0 +HasManagedDisplay=0 +DisplayCount=1 + +[MEASUREMENT_OBJECT_29_DISPLAY_1] +Window=5 +Index=19 +Color=204 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=0 +YMaxHome=100 +YMin=0 +YMax=100 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=0 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_6e7aa625-ce14-46f5-8fc7-50687ddce7d5 + +[MEASUREMENT_OBJECT_2_DISPLAY_1] +Window=5 +Index=29 +Color=43520 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=0 +YMaxHome=100 +YMin=0 +YMax=100 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=0 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_b356d395-ca4d-43fa-97ab-f38e7d5ebf48 + +[MEASUREMENT_OBJECT_3] +Module=no_a2l_demo +Name=global_test_array +Disabled=0 +Mode=2147483648 +Rate=0 +ModeIsDefault=1 +Row=0 +Column=0 +MeaReferenced=1 +MeasureWorkingPoint=0 +ShowWorkingPoint=0 +FollowWorkingPoint=0 +OverwriteWorkingPointInputX= +OverwriteWorkingPointInputY= +Array=1 +Rows=1 +Columns=3 +ArchivBy_1=Recorder +IsFallback=0 +HasManagedDisplay=0 +DisplayCount=2 + +[MEASUREMENT_OBJECT_30] +Module=no_a2l_demo +Name=global_test_uint64 +Disabled=0 +Mode=2147483648 +Rate=0 +ModeIsDefault=1 +Row=0 +Column=0 +MeaReferenced=1 +ArchivBy_1=Recorder +IsFallback=0 +HasManagedDisplay=0 +DisplayCount=1 + +[MEASUREMENT_OBJECT_30_DISPLAY_1] +Window=5 +Index=18 +Color=28784 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=0 +YMaxHome=100 +YMin=0 +YMax=100 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=0 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_8d7731cf-97aa-499f-bbae-6bd153980385 + +[MEASUREMENT_OBJECT_31] +Module=no_a2l_demo +Name=global_test_uint8 +Disabled=0 +Mode=2147483648 +Rate=0 +ModeIsDefault=1 +Row=0 +Column=0 +MeaReferenced=1 +ArchivBy_1=Recorder +IsFallback=0 +HasManagedDisplay=0 +DisplayCount=1 + +[MEASUREMENT_OBJECT_31_DISPLAY_1] +Window=5 +Index=17 +Color=16755200 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=0 +YMaxHome=100 +YMin=0 +YMax=100 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=255 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=0 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_abdc8627-2666-4183-b630-cd1118dab567 + +[MEASUREMENT_OBJECT_3_DISPLAY_1] +Window=6 +Index=0 +Color=65535 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=0 +YMaxHome=100 +YMin=0 +YMax=255 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=255 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=1 +SublMask=1 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_9641b46a-641f-4fd2-8c34-11aa84f476c5 +MarkerSettingValid=1 + +[MEASUREMENT_OBJECT_3_DISPLAY_2] +Window=5 +Index=27 +Color=65535 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=0 +YMaxHome=100 +YMin=0 +YMax=100 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=255 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=0 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_fd26e113-4437-4e48-a888-986aa379af56 + +[MEASUREMENT_OBJECT_4] +Module=no_a2l_demo +Name=main.counter +Disabled=0 +Mode=2147483649 +Rate=0 +ModeIsDefault=1 +Row=0 +Column=0 +MeaReferenced=1 +ArchivBy_1=Recorder +IsFallback=0 +HasManagedDisplay=0 +DisplayCount=2 + +[MEASUREMENT_OBJECT_4_DISPLAY_1] +Window=3 +Index=4 +Color=255 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=-400 +YMaxHome=1600 +YMin=-400 +YMax=1600 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=1 +MeaSublMask=3 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=1 +AxisTemplate= +GUID=DISPLAY_94befd39-434a-4cf9-b1fb-b0839fa94275 + +[MEASUREMENT_OBJECT_4_DISPLAY_2] +Window=5 +Index=16 +Color=255 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=0 +YMaxHome=100 +YMin=0 +YMax=100 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=0 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_f3079fc6-3235-4fa2-a15f-4e9c320c6ff8 + +[MEASUREMENT_OBJECT_5] +Module=no_a2l_demo +Name=foo.counter +Disabled=0 +Mode=2147483651 +Rate=0 +ModeIsDefault=1 +Row=0 +Column=0 +MeaReferenced=1 +ArchivBy_1=Recorder +IsFallback=0 +HasManagedDisplay=0 +DisplayCount=2 + +[MEASUREMENT_OBJECT_5_DISPLAY_1] +Window=5 +Index=11 +Color=16776960 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=0 +YMaxHome=100 +YMin=0 +YMax=100 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=0 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_21002e6f-acca-4b5f-9c89-e90092a0e584 + +[MEASUREMENT_OBJECT_5_DISPLAY_2] +Window=3 +Index=2 +Color=16776960 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=-400 +YMaxHome=1600 +YMin=-400 +YMax=1600 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=1 +MeaSublMask=3 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=1 +AxisTemplate= +GUID=DISPLAY_dd922ee9-74c5-4ddb-92a3-bfd18dd788d4 + +[MEASUREMENT_OBJECT_6] +Module=no_a2l_demo +Name=foo.static_counter +Disabled=0 +Mode=2147483651 +Rate=0 +ModeIsDefault=1 +Row=0 +Column=0 +MeaReferenced=1 +ArchivBy_1=Recorder +IsFallback=0 +HasManagedDisplay=0 +DisplayCount=2 + +[MEASUREMENT_OBJECT_6_DISPLAY_1] +Window=5 +Index=12 +Color=16777215 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=0 +YMaxHome=100 +YMin=0 +YMax=100 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=0 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_b60b1ddf-be6d-42dc-ad35-63dbef59b42e + +[MEASUREMENT_OBJECT_6_DISPLAY_2] +Window=3 +Index=3 +Color=16777215 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=-400 +YMaxHome=1600 +YMin=-400 +YMax=1600 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=1 +MeaSublMask=3 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=1 +AxisTemplate= +GUID=DISPLAY_33028dcd-c7aa-43f5-82df-2bd78ad1e65e + +[MEASUREMENT_OBJECT_7] +Module=no_a2l_demo +Name=main.static_counter +Disabled=0 +Mode=2147483649 +Rate=0 +ModeIsDefault=1 +Row=0 +Column=0 +MeaReferenced=1 +ArchivBy_1=Recorder +IsFallback=0 +HasManagedDisplay=0 +DisplayCount=2 + +[MEASUREMENT_OBJECT_7_DISPLAY_1] +Window=5 +Index=15 +Color=16711935 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=0 +YMaxHome=100 +YMin=0 +YMax=100 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=0 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_5b48ea33-d113-475c-a83d-5eed238527c3 + +[MEASUREMENT_OBJECT_7_DISPLAY_2] +Window=3 +Index=5 +Color=16711935 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=-400 +YMaxHome=1600 +YMin=-400 +YMax=1600 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=1 +MeaSublMask=3 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=1 +AxisTemplate= +GUID=DISPLAY_91e83b83-115a-44ca-87fa-3f181020a9b2 + +[MEASUREMENT_OBJECT_8] +Module=no_a2l_demo +Name=foo.test_double +Disabled=0 +Mode=2147483651 +Rate=0 +ModeIsDefault=1 +Row=0 +Column=0 +MeaReferenced=1 +ArchivBy_1=Recorder +IsFallback=0 +HasManagedDisplay=0 +DisplayCount=1 + +[MEASUREMENT_OBJECT_8_DISPLAY_1] +Window=5 +Index=10 +Color=11206655 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=0 +YMaxHome=100 +YMin=0 +YMax=100 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=0 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_35a9f4d6-8b7e-4ef2-9f07-c51525840b00 + +[MEASUREMENT_OBJECT_9] +Module=no_a2l_demo +Name=foo.test_float +Disabled=0 +Mode=2147483651 +Rate=0 +ModeIsDefault=1 +Row=0 +Column=0 +MeaReferenced=1 +ArchivBy_1=Recorder +IsFallback=0 +HasManagedDisplay=0 +DisplayCount=1 + +[MEASUREMENT_OBJECT_9_DISPLAY_1] +Window=5 +Index=9 +Color=65450 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=0 +YMaxHome=100 +YMin=0 +YMax=100 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=0 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_bc0ad253-edd6-4cab-b9bc-36c72c501d04 + +[MEASUREMENT_OPTIONS] +RemainingRecordingTime=5000 +StopMeasurementOnRecorderStopped=0 +MaxTime=60000 +BufferSize=3600000 +TimeAxis=20000 +TimeLimited=0 +BufferSizeMem=5120 +ShowDialogForErrors=1 +SaveAllToDisplayBuffer=0 +SaveAllToDisplayBufferSignalLimit=1000 +TimeMode=0 +YMode=1 +PollingAlways=1 +PollingOnlyVisiblePage=0 +DrawLastValue=1 +UpdateCycleBar=100 +UpdateCycleVal=500 +UpdateCycleGraph=1000 +UpdateCycleArr=1000 +UpdateCycleCal=1000 +UpdateCycle2D3DMeasure=500 +UpdateCycleAx=100 +UpdateCycleWrt=100 +UpdateCycleTrace=100 +UpdateCycleTxt=1000 +TimeScrollSoft=0 +TimeScrollAt=100 +TimeScrollSoftAt=80 +TimeScrollBy=100 +FitTimeAxis=1 +FitYAxis=0 +AutoInsertComment=0 +OfflineFileSignals=1 +UpdateMeaInCalWindows=1 +MeaSaveParameterOnStart=0 +NoCpuThrottle=0 +ShowFileSignalsDuringMeasurement=0 +CreateInternalSignalsOnDemand=0 +LiveMeasurementRate=1000 +EditCommentAfterSaveSignals=1 +ShowRejectFileMsg=1 +MeasurementStopTimeoutMS=15000 +TaraMeasurementDurationMS=5000 +TaraMeasurementForerunMS=2000 +TaraMeasurementValueCount=5 +TaraSigmaCoefficient=0.3 +LinkOfflineFileSignalsAtOnce=0 +ParDeviceCount=0 +MeaSaveParameterFileName=Parameter +StopMeasurementOnEvent=0 +StopMeasurementEventsCount=0 +PauseMeasurementOnEvent=0 +PauseMeasurementEventsCount=0 +VmdmSaveToCloud=0 +VmdmMoveFile=0 +VmdmCollectionName= +VmdmCollectionId= +VmdmTenantName= +VmdmTenantId= +VmdmDescription= + +[MEASUREMENT_USERFILTER] +Count=0 + +[Module_no_a2l_demo] +EVENT_COUNT=4 +EVENT_CHANNEL_0=0x0000 +EVENT_CHANNEL_1=0x0001 +EVENT_CHANNEL_2=0x0002 +EVENT_CHANNEL_3=0x0003 +EVENT_CYCLE_0=100 +EVENT_CYCLE_1=0 +EVENT_CYCLE_2=0 +EVENT_CYCLE_3=0 +EVENT_SAMPLE_UNIT_0=7 +EVENT_SAMPLE_UNIT_1=3 +EVENT_SAMPLE_UNIT_2=3 +EVENT_SAMPLE_UNIT_3=3 +EVENT_MODE_0=4 +EVENT_MODE_1=4 +EVENT_MODE_2=4 +EVENT_MODE_3=4 +EVENT_PRIO_0=0 +EVENT_PRIO_1=0 +EVENT_PRIO_2=0 +EVENT_PRIO_3=0 +EVENT_MAX_DAQ_LIST_0=255 +EVENT_MAX_DAQ_LIST_1=255 +EVENT_MAX_DAQ_LIST_2=255 +EVENT_MAX_DAQ_LIST_3=255 +EVENT_NAME_0=async +EVENT_NAME_1=mainloop +EVENT_NAME_2=task +EVENT_NAME_3=foo +EVENT_MIN_CYCLE_TIME_CYCLE_0=0 +EVENT_MIN_CYCLE_TIME_CYCLE_1=0 +EVENT_MIN_CYCLE_TIME_CYCLE_2=0 +EVENT_MIN_CYCLE_TIME_CYCLE_3=0 +EVENT_MIN_CYCLE_TIME_UNIT_0=9 +EVENT_MIN_CYCLE_TIME_UNIT_1=9 +EVENT_MIN_CYCLE_TIME_UNIT_2=9 +EVENT_MIN_CYCLE_TIME_UNIT_3=9 +EVENT_MULTISAMPLES_0=0 +EVENT_MULTISAMPLES_1=0 +EVENT_MULTISAMPLES_2=0 +EVENT_MULTISAMPLES_3=0 +EVENT_DPM_SUPPORTED_0=0 +EVENT_DPM_SUPPORTED_1=0 +EVENT_DPM_SUPPORTED_2=0 +EVENT_DPM_SUPPORTED_3=0 +IGNORE_FIX_EVENTS=0 + +[OPTIONS] +WindowTextExtended=1 +WindowTextExtendedNew=1 +WindowSymbols=1 +GlobalCursor=0 +GlobalCursorTime=0 +GlobalCursorTimeNs=0 +MainWindowPos=1, 191, 102, 2997, 1767 ;cmd, x, y, w, h + +[PAR_COMMENT] +1="Name","" +2="Division","" +3="Project","" +4="Subject","" +5="Comment","" +Count=5 + +[POST_ANALYSIS_SCRIPT] +ScriptName= + +[POST_PROCESSEDFILE_SCRIPT] +ScriptName= + +[PRE_ANALYSIS_SCRIPT] +ScriptName= + +[PRE_PROCESSEDFILE_SCRIPT] +ScriptName= + +[PRINTING] +ScreenDPI=192 + +[PROFILE_MDF_OBJECT_1] +Unit= +Components=0 +TimeSeriesSaveMode=0 +OptionalMethod=0 +IsStatisticObject=0 +TimeObjectIndex=-1 +CycleDetection=0 +TimeGridNs=100000000 +TimeGrid=100 +TimeRangeObjectIndex=-1 +TimeRangeFromNs=0 +TimeRangeFrom=0 +TimeRangeObjectIndexTo=-1 +TimeRangeToNs=60000000000 +TimeRangeTo=60000 +DataMiningNoFindings=1 +DataMiningConditionOperator=3 +DataMiningConditionValue=0 +DataMiningComment= +DMAnalysisProfile= +DataMiningDescription= +Name=Global +Type=28 +TextFormula=Global +Disabled=0 +FromLibrary=1 +BurstSensitivity=10 +LPcount=0 +Count=0 +IsFallback=0 +DisplayCount=0 + +[RECORDER_1] +Name=Recorder +Type=0 +Comment= +FilenameTemplate=no_a2l_demo.mf4 +ConverterId= +TEXT_SEARCH= +RecStartStopEnabled=0 +RecStartStopEvent= +RecStartStopPostTimeMS=5000 +MaxSize=4294967295 +Enabled=1 +DefaultRecorder=1 +StartWithoutRecording=0 +SplitFileEnabled=0 +SplitFileTimeEnabled=0 +SplitFileSizeEnabled=1 +SplitFileEventEnabled=0 +SplitFileTimeS=3600 +SplitFileSizeBytes=104857600 +DataCompressionMode=0 +DataCompressionRate=6 +ForceFileSelection=0 +BuildFilenameAfterRecording=0 +TrgEnabled=0 +TrgStopRecording=0 +TrgStartStop=0 +TrgEnableMaxStopTime=0 +TrgExpandPostTime=0 +TrgSaveInOneFile=0 +TrgPreTimeMS=5000 +TrgPostTimeMS=5000 +TrgMaxStopTimeMS=5000 +TrgMaxBlockCount=1 +StartEvCount=0 +StopEvCount=0 +SplitEvCount=0 +BusLogNetworkKeyListCount=0 +IsFallback=0 +EditComment=1 +SaveMeasurementComment=1 +SaveCalibrationHistory=1 +SaveWriteWindowText=0 +SaveCalibrationCommands=0 +DataReduction=-1 +SaveParameterOnStart=0 +FlushMode=0 +AttachDeviceDatabase=1 +EmbedDeviceDatabase=0 +CompressDeviceDatabase=0 +vMDMCollectionId= +vMDMCollectionName= +vMDMTenantId= +vMDMTenantName= +vMDMUploadIndex=-1 +vMDMMoveFile=-1 + +[RECORDER_1_ATTACHMENT_OPTIONS] +AttachFileTime=0 +AttachFileMode=2 +MaxAttachFileCount=10 +MaxAttachFileSize=1000 +MaxTotalAttachSize=100000 +MaxLimitAttachFileCount=100 +MaxLimitAttachFileSize=10000 +MaxLimitTotalAttachSize=1000000 +AttachmentPathCount=0 + +[RECORDER_1_FILE_COMMENT] +1="Name","" +2="Division","" +3="Project","" +4="Subject","" +5="Comment","" +Count=5 + +[RECORDER_LIST] +RecorderCount=1 + +[REF_COLOR_FUNCTIONS] +Count=0 + +[SIGNAL_OBJECT_OFFLINE_OBJECTS] +Count=0 + +[SIGNALOBJECT_BINDINGS] +Count=0 + +[SIGNSELWND] +FocusID=2004 +ActiveTab=0 +FilterNodeID=All\Devices\no_a2l_demo +TreeExpand_0=@All +TreeExpand_1=All\Devices +TreeExpand_2=All\Devices\xcp_demo +TreeExpand_3=All\Devices\xcp_demo\xcp_demo_autodetect.a2l +TreeExpand_4=All\Devices\xcp_demo\Unknown variables +TreeExpand_5=All\Devices\xcp_demo\Unknown variables\calc_speed +TreeExpand_6=All\Devices\xcp_demo\xcp_demo_autodetect.a2l\Events +TreeExpand_7=All\Devices\xcp_demo\xcp_demo_autodetect.a2l\Events\mainloop +TreeExpand_8=All\Devices\xcp_demo\xcp_demo_autodetect.a2l\Parameters +TreeExpand_9=All\Measurement list\All signals +TreeExpand_10=All\Measurement list\All signals\Dt +TreeExpand_11=All\Measurement list\All signals\Dt\System information +TreeExpand_12=All\Measurement list\no_a2l_demo +TreeExpand_13=All\Devices\no_a2l_demo\no_a2l_demo.a2l +TreeExpand_14=All\Devices\no_a2l_demo\no_a2l_demo.a2l\Software structure\params +TreeExpand_15=All\Devices\no_a2l_demo\no_a2l_demo.a2l\Measurements +TreeExpand_16=All\Devices\no_a2l_demo\no_a2l_demo.a2l\Software structure\params\params.test_par_struct +TreeExpand_17=All\Devices\no_a2l_demo\no_a2l_demo.a2l\Measurements\task +TreeExpand_18=All\Devices\no_a2l_demo\no_a2l_demo.a2l\Software structure\global_test_struct +TreeExpand_19=All\Devices\no_a2l_demo\no_a2l_demo.a2l\Measurements\foo +TreeExpand_20=All\Devices\no_a2l_demo\no_a2l_demo.a2l\Measurements\mainloop +TreeExpand_21=All\Devices\no_a2l_demo\no_a2l_demo.a2l\Measurements\async +TreeExpand_22=All\Devices\no_a2l_demo\no_a2l_demo.a2l\Software structure +TreeExpand_23=$All\Devices +TreeExpand_24=#All\Devices +TreeExpand_25=@All\Devices\no_a2l_demo +TreeExpand_26=$All\Devices\no_a2l_demo\no_a2l_demo.a2l\Measurements\foo\foo.test_int8 +TreeExpand_27=#All\Devices\no_a2l_demo\no_a2l_demo.a2l\Software structure\params\params.test_par_enum +TreeExpand_28=@All\Measurement list +TreeExpand_29=$All\Measurement list\All signals +TreeExpand_30=#All\Measurement list\no_a2l_demo\mainloop +TextSearchCaseSensitive=0 +TextSearchUseMode=1 +TextSearchSearchFullText=1 +TextSearchSearchInComments=0 +TextSearchSearchInDisplayNames=1 + +[VIRTUAL_MDF_LIST] +Count=0 + +[WINDOW_1] +ShowTime=1 +TimeWidth=180 +CopyColumnTitles=1 +ClearStart=0 +AbsoluteTimeEnabled=0 +ShowGridLines=0 +ColumnCount=3 +Column_0=21, 80 +Column_0_dpi96=21, 40 +Column_1=22, 180 +Column_1_dpi96=22, 90 +Column_2=23, 1300 +Column_2_dpi96=23, 650 +Title=Write +Type=128 +Comment=Write Window +Number=1 +GUID=WINDOW_a32111b5-a5a8-46cf-969d-65f6529bf1c6 +ScreenDPIinSection=192 +Position=0, 10, 988, 1600, 306 ;cmd, x, y, w, h +Position_dpi96=0, 5, 494, 800, 153 ;cmd, x, y, w, h +Position_Page01=0, 10, 988, 1600, 306 ;cmd, x, y, w, h +Position_Page01_dpi96=0, 5, 494, 800, 153 ;cmd, x, y, w, h +FloatingWindow=0 +ShowSignalComments=1 +DisplayMask=1 ; pages 1 + +[WINDOW_2] +ComponentCount=1 +Title= +Type=65536 +Comment=Multi view window +Number=2 +GUID=WINDOW_ec6bccc5-2628-4812-b9d0-f7dbe6892d37 +ScreenDPIinSection=192 +Position=0, 10, 12, 1600, 434 ;cmd, x, y, w, h +Position_dpi96=0, 5, 6, 800, 217 ;cmd, x, y, w, h +Position_Page01=0, 10, 12, 1600, 434 ;cmd, x, y, w, h +Position_Page01_dpi96=0, 5, 6, 800, 217 ;cmd, x, y, w, h +FloatingWindow=0 +ShowSignalComments=1 +DisplayMask=1 ; pages 1 + +[WINDOW_3] +XLen=30155 +XMin=0 +XMinNs=0 +XMax=22847 +XMaxNs=22847763534 +Grid=1 +Mark=1 +YValue=1 +ShowLegend=2 +ShowLegendHeader=1 +LegendPixWidth=448 +LegendPixWidth_dpi96=224 +LegendPixHeight=196 +LegendPixHeight_dpi96=98 +LegendPos=2 +Optimize=1 +Average=0 +ShowMinMax=1 +XYModeIndexP1=-1 +DisplayModeAuto=0 +XStart=0 +AbsoluteTimeMode=0 +YAxisWidth=138 +YAxisWidth_dpi96=69 +RightYAxisWidth=0 +RightYAxisWidth_dpi96=0 +ObjectMode=1 +DisplayMode=1 +ShowSignalMode=0 +AxisScrollPos2=0 +LegendScrollPos=0 +LegendShowLifeValues=1 +ShowXScrollbar=1 +ShowWholeTimeRange=0 +YAxisDynScaleEnabled=0 +YAxisDynScaleEnlarge=25 +TimeStickToZero=0 +XYModeRedrawEnabled=0 +MARKER_TIME_1=81594910265 +MARKER_TIME_2=81595965747 +OscilloscopeEnabled=0 +OsciEventCount=0 +EventCompareModeEnabled=0 +ObjectCount=0 +Title=Measurement Data +Type=1 +Comment=Graphic Window +Number=3 +GUID=WINDOW_0fe20030-6334-4bce-83c3-5f0cc0d43d4d +ScreenDPIinSection=192 +Position=0, 0, 0, 0, 0 ;cmd, x, y, w, h +Position_dpi96=0, 0, 0, 0, 0 ;cmd, x, y, w, h +Position_Page01=0, 0, 0, 0, 0 ;cmd, x, y, w, h +Position_Page01_dpi96=0, 0, 0, 0, 0 ;cmd, x, y, w, h +FloatingWindow=0 +JointIndex=2 +ShowSignalComments=1 +ComponentOrder=0 +ComponentSpace=100 +LEGEND_HSCROLL_POS=0 +LEGEND_SHARED_COLUMNS=1 +TimeAxisTemplate= +DisplayMask=1 ; pages 1 + +[WINDOW_3_LEG_COLUMNS] +ScreenDPIinSection=192 +COUNT=2 +COL_0=31, 340 +COL_0_dpi96=31, 170 +COL_1=1048578, 100 +COL_1_dpi96=1048578, 50 + +[WINDOW_4] +ProgID= +PROPERTIES_COUNT=1 +PROPERTY_1={"Version":"1.3.0.0","Configuration":{"ArrayWindowSubControlConfiguration":{"NumericGraphicCompositeWidth":797,"NumericGraphicCompositeHeight":237,"LegendCoordinatePoint":{"X":0,"Y":0},"LegendWidth":0,"LegendHeight":0,"LegendLayoutGroupSizeWidth":0,"LegendLayoutGroupSizeHeight":0,"NumericCoordinatePoint":{"X":1,"Y":24},"NumericWidth":795,"NumericHeight":212,"NumericLayoutGroupSizeWidth":795,"NumericLayoutGroupSizeHeight":212,"Intersection2DXWCoordinatePoint":{"X":0,"Y":0},"Intersection2DXWWidth":0,"Intersection2DXWHeight":0,"Intersection2DXWLayoutGroupSizeWidth":0,"Intersection2DXWLayoutGroupSizeHeight":0,"Intersection2DYWCoordinatePoint":{"X":0,"Y":0},"Intersection2DYWWidth":0,"Intersection2DYWHeight":0,"Intersection2DYWLayoutGroupSizeWidth":0,"Intersection2DYWLayoutGroupSizeHeight":0,"Graphic3DCoordinatePoint":{"X":0,"Y":0},"Graphic3DWidth":0,"Graphic3DHeight":0,"Graphic3DLayoutGroupSizeWidth":0,"Graphic3DLayoutGroupSizeHeight":0},"ShowCalibrationBar":true,"ShowHorizontalChartLines":false,"ShowVerticalChartLines":false,"NonSelectedIntersectionLineTransparency":0.100000024,"FocusedValueSymbol":"DEVICE:\"no_a2l_demo\":\"$params$params.counter_max\":P","ValueObjectConfigurations":[{"Symbol":"DEVICE:\"no_a2l_demo\":\"$params$params.counter_max\":P","SerializationColor":{"R":0,"G":0,"B":0,"A":255},"Collapsed":false,"SerializationFrameColor":{"R":0,"G":0,"B":0,"A":255},"ValueFormat":0,"AxisValueFormats":[],"NumericFormat":4,"AxisNumericFormats":[],"NumericFormatDigits":6,"IsActive":true,"CurrentChartViewType":2,"PointMarker":1,"IsValueAnnotationEnabled":false,"ValueAxisMin":0,"ValueAxisMax":65535,"ValueAxisMinHome":0,"ValueAxisMaxHome":65535,"ValueAxisPosition":0,"CommonValueAxisName":null,"CommonValueAxisLabel":"","CommonValueAxisMin":0,"CommonValueAxisMax":0,"CommonValueAxisMinHome":0,"CommonValueAxisMaxHome":0,"SerializationCommonValueAxisColor":{"R":0,"G":0,"B":0,"A":0},"CommonValueAxisID":0,"CommonValueAxisFormat":null,"CommonValueAxisPosition":0,"CommonXAxisLabel":"","CommonYAxisLabel":"","CustomAxisLabels":["","","","","",""]},{"Symbol":"DEVICE:\"no_a2l_demo\":\"$params$params.delay_us\":P","SerializationColor":{"R":0,"G":0,"B":0,"A":255},"Collapsed":false,"SerializationFrameColor":{"R":0,"G":0,"B":0,"A":255},"ValueFormat":0,"AxisValueFormats":[],"NumericFormat":4,"AxisNumericFormats":[],"NumericFormatDigits":6,"IsActive":true,"CurrentChartViewType":2,"PointMarker":1,"IsValueAnnotationEnabled":false,"ValueAxisMin":0,"ValueAxisMax":4294967295,"ValueAxisMinHome":0,"ValueAxisMaxHome":4294967295,"ValueAxisPosition":0,"CommonValueAxisName":null,"CommonValueAxisLabel":"","CommonValueAxisMin":0,"CommonValueAxisMax":0,"CommonValueAxisMinHome":0,"CommonValueAxisMaxHome":0,"SerializationCommonValueAxisColor":{"R":0,"G":0,"B":0,"A":0},"CommonValueAxisID":0,"CommonValueAxisFormat":null,"CommonValueAxisPosition":0,"CommonXAxisLabel":"","CommonYAxisLabel":"","CustomAxisLabels":["","","","","",""]},{"Symbol":"DEVICE:\"no_a2l_demo\":\"$params$params.test_par_double\":P","SerializationColor":{"R":0,"G":0,"B":0,"A":255},"Collapsed":false,"SerializationFrameColor":{"R":0,"G":0,"B":0,"A":255},"ValueFormat":0,"AxisValueFormats":[],"NumericFormat":4,"AxisNumericFormats":[],"NumericFormatDigits":6,"IsActive":true,"CurrentChartViewType":2,"PointMarker":1,"IsValueAnnotationEnabled":false,"ValueAxisMin":-1.8446744073709552E+19,"ValueAxisMax":1.8446744073709552E+19,"ValueAxisMinHome":-1.8446744073709552E+19,"ValueAxisMaxHome":1.8446744073709552E+19,"ValueAxisPosition":0,"CommonValueAxisName":null,"CommonValueAxisLabel":"","CommonValueAxisMin":0,"CommonValueAxisMax":0,"CommonValueAxisMinHome":0,"CommonValueAxisMaxHome":0,"SerializationCommonValueAxisColor":{"R":0,"G":0,"B":0,"A":0},"CommonValueAxisID":0,"CommonValueAxisFormat":null,"CommonValueAxisPosition":0,"CommonXAxisLabel":"","CommonYAxisLabel":"","CustomAxisLabels":["","","","","",""]},{"Symbol":"DEVICE:\"no_a2l_demo\":\"$params$params.test_par_enum\":P","SerializationColor":{"R":0,"G":0,"B":0,"A":255},"Collapsed":false,"SerializationFrameColor":{"R":0,"G":0,"B":0,"A":255},"ValueFormat":0,"AxisValueFormats":[],"NumericFormat":4,"AxisNumericFormats":[],"NumericFormatDigits":6,"IsActive":true,"CurrentChartViewType":2,"PointMarker":1,"IsValueAnnotationEnabled":false,"ValueAxisMin":0,"ValueAxisMax":4294967295,"ValueAxisMinHome":0,"ValueAxisMaxHome":4294967295,"ValueAxisPosition":0,"CommonValueAxisName":null,"CommonValueAxisLabel":"","CommonValueAxisMin":0,"CommonValueAxisMax":0,"CommonValueAxisMinHome":0,"CommonValueAxisMaxHome":0,"SerializationCommonValueAxisColor":{"R":0,"G":0,"B":0,"A":0},"CommonValueAxisID":0,"CommonValueAxisFormat":null,"CommonValueAxisPosition":0,"CommonXAxisLabel":"","CommonYAxisLabel":"","CustomAxisLabels":["","","","","",""]},{"Symbol":"DEVICE:\"no_a2l_demo\":\"$params$params.test_par_uint8_array\":P","SerializationColor":{"R":255,"G":0,"B":0,"A":255},"Collapsed":false,"SerializationFrameColor":{"R":0,"G":0,"B":0,"A":255},"ValueFormat":0,"AxisValueFormats":[0],"NumericFormat":4,"AxisNumericFormats":[0],"NumericFormatDigits":6,"IsActive":true,"CurrentChartViewType":2,"PointMarker":1,"IsValueAnnotationEnabled":false,"ValueAxisMin":0,"ValueAxisMax":255,"ValueAxisMinHome":0,"ValueAxisMaxHome":255,"ValueAxisPosition":0,"CommonValueAxisName":null,"CommonValueAxisLabel":"","CommonValueAxisMin":0,"CommonValueAxisMax":0,"CommonValueAxisMinHome":0,"CommonValueAxisMaxHome":0,"SerializationCommonValueAxisColor":{"R":0,"G":0,"B":0,"A":0},"CommonValueAxisID":0,"CommonValueAxisFormat":null,"CommonValueAxisPosition":0,"CommonXAxisLabel":"","CommonYAxisLabel":"","CustomAxisLabels":["","","","","",""]},{"Symbol":"DEVICE:\"no_a2l_demo\":\"$params$$test_par_struct$params.test_par_struct.test_field_float\":P","SerializationColor":{"R":0,"G":0,"B":0,"A":255},"Collapsed":false,"SerializationFrameColor":{"R":0,"G":0,"B":0,"A":255},"ValueFormat":0,"AxisValueFormats":[],"NumericFormat":4,"AxisNumericFormats":[],"NumericFormatDigits":6,"IsActive":true,"CurrentChartViewType":2,"PointMarker":1,"IsValueAnnotationEnabled":false,"ValueAxisMin":-1.8446744073709552E+19,"ValueAxisMax":1.8446744073709552E+19,"ValueAxisMinHome":-1.8446744073709552E+19,"ValueAxisMaxHome":1.8446744073709552E+19,"ValueAxisPosition":0,"CommonValueAxisName":null,"CommonValueAxisLabel":"","CommonValueAxisMin":0,"CommonValueAxisMax":0,"CommonValueAxisMinHome":0,"CommonValueAxisMaxHome":0,"SerializationCommonValueAxisColor":{"R":0,"G":0,"B":0,"A":0},"CommonValueAxisID":0,"CommonValueAxisFormat":null,"CommonValueAxisPosition":0,"CommonXAxisLabel":"","CommonYAxisLabel":"","CustomAxisLabels":["","","","","",""]},{"Symbol":"DEVICE:\"no_a2l_demo\":\"$params$$test_par_struct$params.test_par_struct.test_field_int16\":P","SerializationColor":{"R":0,"G":0,"B":0,"A":255},"Collapsed":false,"SerializationFrameColor":{"R":0,"G":0,"B":0,"A":255},"ValueFormat":0,"AxisValueFormats":[],"NumericFormat":4,"AxisNumericFormats":[],"NumericFormatDigits":6,"IsActive":true,"CurrentChartViewType":2,"PointMarker":1,"IsValueAnnotationEnabled":false,"ValueAxisMin":-32768,"ValueAxisMax":32767,"ValueAxisMinHome":-32768,"ValueAxisMaxHome":32767,"ValueAxisPosition":0,"CommonValueAxisName":null,"CommonValueAxisLabel":"","CommonValueAxisMin":0,"CommonValueAxisMax":0,"CommonValueAxisMinHome":0,"CommonValueAxisMaxHome":0,"SerializationCommonValueAxisColor":{"R":0,"G":0,"B":0,"A":0},"CommonValueAxisID":0,"CommonValueAxisFormat":null,"CommonValueAxisPosition":0,"CommonXAxisLabel":"","CommonYAxisLabel":"","CustomAxisLabels":["","","","","",""]},{"Symbol":"DEVICE:\"no_a2l_demo\":\"$params$$test_par_struct$params.test_par_struct.test_field_uint16\":P","SerializationColor":{"R":0,"G":0,"B":0,"A":255},"Collapsed":false,"SerializationFrameColor":{"R":0,"G":0,"B":0,"A":255},"ValueFormat":0,"AxisValueFormats":[],"NumericFormat":4,"AxisNumericFormats":[],"NumericFormatDigits":6,"IsActive":true,"CurrentChartViewType":2,"PointMarker":1,"IsValueAnnotationEnabled":false,"ValueAxisMin":0,"ValueAxisMax":65535,"ValueAxisMinHome":0,"ValueAxisMaxHome":65535,"ValueAxisPosition":0,"CommonValueAxisName":null,"CommonValueAxisLabel":"","CommonValueAxisMin":0,"CommonValueAxisMax":0,"CommonValueAxisMinHome":0,"CommonValueAxisMaxHome":0,"SerializationCommonValueAxisColor":{"R":0,"G":0,"B":0,"A":0},"CommonValueAxisID":0,"CommonValueAxisFormat":null,"CommonValueAxisPosition":0,"CommonXAxisLabel":"","CommonYAxisLabel":"","CustomAxisLabels":["","","","","",""]},{"Symbol":"DEVICE:\"no_a2l_demo\":\"$params$$test_par_struct$params.test_par_struct.test_field_uint8_array\":P","SerializationColor":{"R":0,"G":255,"B":0,"A":255},"Collapsed":false,"SerializationFrameColor":{"R":0,"G":0,"B":0,"A":255},"ValueFormat":0,"AxisValueFormats":[0],"NumericFormat":4,"AxisNumericFormats":[0],"NumericFormatDigits":6,"IsActive":true,"CurrentChartViewType":2,"PointMarker":1,"IsValueAnnotationEnabled":false,"ValueAxisMin":0,"ValueAxisMax":255,"ValueAxisMinHome":0,"ValueAxisMaxHome":255,"ValueAxisPosition":0,"CommonValueAxisName":null,"CommonValueAxisLabel":"","CommonValueAxisMin":0,"CommonValueAxisMax":0,"CommonValueAxisMinHome":0,"CommonValueAxisMaxHome":0,"SerializationCommonValueAxisColor":{"R":0,"G":0,"B":0,"A":0},"CommonValueAxisID":0,"CommonValueAxisFormat":null,"CommonValueAxisPosition":0,"CommonXAxisLabel":"","CommonYAxisLabel":"","CustomAxisLabels":["","","","","",""]}],"NumericGraphicControlPosition":0,"NumericGraphicControlSelectedTab":0,"GraphicControlPosition":0,"Height2DXControl":1,"Height2DYControl":1,"Height3DControl":2,"HeightNumericControl":1,"HeightChartControl":1,"HeightLegendControl":0.44999998807907104,"Width2DXControl":1,"Width2DYControl":1,"Width3DControl":2,"WidthNumericControl":2,"WidthChartControl":2,"WidthLegendControl":0.30000001192092896,"HeightValueControl":1,"WidthValueControl":1,"HeightNumericGraphicControl":1,"WidthNumericGraphicControl":1,"Height2DChartsControl":1,"Width2DChartsControl":1,"IsXAxisHeightSynchronizedBetweenCharts":true,"IsYAxisAreaWidthSynchronizedBetweenCharts":true,"SyncedXAxisHeight":NaN,"XWChartXAxisHeight":NaN,"YWChartXAxisHeight":NaN,"SyncedLeftAxisAreaWidth":NaN,"XWChartLeftAxisAreaWidth":NaN,"YWChartLeftAxisAreaWidth":NaN,"SyncedRightAxisAreaWidth":NaN,"XWChartRightAxisAreaWidth":NaN,"YWChartRightAxisAreaWidth":NaN,"LegendPosition":0,"LegendViewType":0,"LegendTableColumnAttributes":[{"TypeId":"1048594","Size":40},{"TypeId":"1048601","Size":45},{"TypeId":"31","Size":100},{"TypeId":"3","Size":250},{"TypeId":"16","Size":70},{"TypeId":"1048627","Size":100},{"TypeId":"1048631","Size":100},{"TypeId":"1048634","Size":100}],"LegendTabItemAttributes":[{"TypeId":"31","Size":100}],"FlipAxes":false,"AxisDisplayNameMode":3,"ReversedAxis":[false,false],"ShowUnits":false,"ShowObjectColor":true,"SortDescending":false,"SortAttributeId":null,"ShowWorkingPointHistory":false,"NumericViewValueObjectDisplayOption":1,"ValueColumnWidth":50,"ValueColumnWidthDouble":50.5,"ParameterGroup":"","ModuleName":"","GroupIsFunction":false,"NumericControlAxisAttributes":[],"NumericControlColumnAttributes":[{"TypeId":"31","Size":250.5}],"ChartViewValueObjectDisplayOption":1,"SerializationCameraPosition":{"X":1,"Y":1,"Z":-1},"SerializationCameraTarget":{"X":0,"Y":0.5,"Z":0},"IsValueAnnotationRotated":false,"EquidistantAxisPoints":false,"BarThickness":0.6,"WorkingPointMarker":0,"LinearWorkingPointInterpolation":true,"ShowAllIntersectionLines":false,"IsValueAxisIndependent":true,"TickLabelRotationAngle":-90,"IsTickLabelRotationEnabled":false,"IsTickLabelRightAligned":false,"ShowBoundarySurface":true,"ShowBoundarySurfaceGradient":false,"ShowCursorAsCrosshair":false,"XAxisAutoRange":true,"ValueAxisAutoRange":true,"ShowAllValueAxes":false,"DrawAxisBands":false,"CurrentColumnChartType":0,"SerializationCursorCrosshairColor":{"R":0,"G":0,"B":0,"A":255},"AlignBarToZero":true,"DefaultChartViewType":2,"AttributeColumnPositioning":1}} +OBJECTS_COUNT=9 +OBJECT_1=DEVICE:"no_a2l_demo":"$params$params.counter_max":P +OBJECT_2=DEVICE:"no_a2l_demo":"$params$params.delay_us":P +OBJECT_3=DEVICE:"no_a2l_demo":"$params$params.test_par_double":P +OBJECT_4=DEVICE:"no_a2l_demo":"$params$params.test_par_enum":P +OBJECT_5=DEVICE:"no_a2l_demo":"$params$params.test_par_uint8_array":P +OBJECT_6=DEVICE:"no_a2l_demo":"$params$$test_par_struct$params.test_par_struct.test_field_float":P +OBJECT_7=DEVICE:"no_a2l_demo":"$params$$test_par_struct$params.test_par_struct.test_field_int16":P +OBJECT_8=DEVICE:"no_a2l_demo":"$params$$test_par_struct$params.test_par_struct.test_field_uint16":P +OBJECT_9=DEVICE:"no_a2l_demo":"$params$$test_par_struct$params.test_par_struct.test_field_uint8_array":P +ObjectCount=9 +HiddenDisplayCount=0 +Title=Parameters +Type=137438953472 +Comment=Parameters +Number=4 +GUID=WINDOW_c343785a-09dc-4f21-9c3c-19ce11f4fbd3 +ScreenDPIinSection=192 +Position=0, 10, 460, 1600, 514 ;cmd, x, y, w, h +Position_dpi96=0, 5, 230, 800, 257 ;cmd, x, y, w, h +Position_Page01=0, 10, 460, 1600, 514 ;cmd, x, y, w, h +Position_Page01_dpi96=0, 5, 230, 800, 257 ;cmd, x, y, w, h +FloatingWindow=0 +ShowSignalComments=1 +DisplayMask=1 ; pages 1 + +[WINDOW_4_OBJECT_1] +Type=2 +Module=no_a2l_demo +Name=$params$params.counter_max +Window=4 +Index=0 +Color=0 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=0 +YMaxHome=65535 +YMin=0 +YMax=65535 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=0 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_f16698fe-cc00-496b-a784-78112e245839 + +[WINDOW_4_OBJECT_2] +Type=2 +Module=no_a2l_demo +Name=$params$params.delay_us +Window=4 +Index=1 +Color=0 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=0 +YMaxHome=4294967295 +YMin=0 +YMax=4294967295 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=0 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_850b1b56-e42c-4fc0-afe2-5fef43d1f836 + +[WINDOW_4_OBJECT_3] +Type=2 +Module=no_a2l_demo +Name=$params$params.test_par_double +Window=4 +Index=2 +Color=0 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=-1.84467440737e+19 +YMaxHome=1.84467440737e+19 +YMin=-1.84467440737e+19 +YMax=1.84467440737e+19 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=0 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_34ba7fc3-d898-4ab5-8695-7d85ca429e65 + +[WINDOW_4_OBJECT_4] +Type=2 +Module=no_a2l_demo +Name=$params$params.test_par_enum +Window=4 +Index=3 +Color=0 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=0 +YMaxHome=4294967295 +YMin=0 +YMax=4294967295 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=0 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_c3080ac2-5aaf-442a-bd5f-eeb65ea52912 + +[WINDOW_4_OBJECT_5] +Type=2 +Module=no_a2l_demo +Name=$params$params.test_par_uint8_array +Window=4 +Index=4 +Color=255 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=0 +YMaxHome=255 +YMin=0 +YMax=255 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=0 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_e720269f-a359-401a-9040-be23f4712b92 + +[WINDOW_4_OBJECT_6] +Type=2 +Module=no_a2l_demo +Name=$params$$test_par_struct$params.test_par_struct.test_field_float +Window=4 +Index=5 +Color=0 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=-1.84467440737e+19 +YMaxHome=1.84467440737e+19 +YMin=-1.84467440737e+19 +YMax=1.84467440737e+19 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=0 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_8ad5aecb-3e1f-4018-bcd4-614ec4308f56 + +[WINDOW_4_OBJECT_7] +Type=2 +Module=no_a2l_demo +Name=$params$$test_par_struct$params.test_par_struct.test_field_int16 +Window=4 +Index=6 +Color=0 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=-32768 +YMaxHome=32767 +YMin=-32768 +YMax=32767 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=0 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_4db71c25-6c9f-41a7-91dd-723dc28a384b + +[WINDOW_4_OBJECT_8] +Type=2 +Module=no_a2l_demo +Name=$params$$test_par_struct$params.test_par_struct.test_field_uint16 +Window=4 +Index=7 +Color=0 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=0 +YMaxHome=65535 +YMin=0 +YMax=65535 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=0 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_43aed001-0373-4596-a565-487823a5b989 + +[WINDOW_4_OBJECT_9] +Type=2 +Module=no_a2l_demo +Name=$params$$test_par_struct$params.test_par_struct.test_field_uint8_array +Window=4 +Index=8 +Color=65280 +ApplyColorToBackground=0 +ColorFunction=0 +ColorFunctionScope=1 +LineTyp=2 +YMinHome=0 +YMaxHome=255 +YMin=0 +YMax=255 +XOffsetNS=0 +XOffset=0 +ValueFormat=3 +BitMask=1 +ShowYAxis=1 +Width=10 +LineStyle=1 +MarkerType=1 +SRMainValue=0 +InvalidValueDrawMode=3 +LineWidth=1 +Precision=-2 +Digits=6 +Enabled=1 +StoredFocused=0 +SublMask=0 +MeaSublMask=0 +LockScaling=0 +RightAxis=0 +MapMode=2 +OverlayGridColor=0 +ShadingMode=3 +EditOffset=1 +EditFactor=2 +WAxisLabel= +XAxisLabel= +YAxisLabel= +AxisCaption= +Row=0 +Col=0 +YAxis_ID=0 +AxisTemplate= +GUID=DISPLAY_7e86824b-816a-4a10-9d62-abe65d129ef8 + +[WINDOW_5] +ObjectCount=0 +Expanded_Root_0_GUID=DISPLAY_b356d395-ca4d-43fa-97ab-f38e7d5ebf48 +Expanded_Root_0_Count=0 +Expanded_Root_1_GUID=DISPLAY_f5908e73-266d-4f06-b830-396ad92c6629 +Expanded_Root_1_Count=0 +Expanded_Root_2_GUID=DISPLAY_fd26e113-4437-4e48-a888-986aa379af56 +Expanded_Root_2_Count=0 +Expanded_Root_3_GUID=DISPLAY_f7b0b003-497b-430d-af33-bbbc819c1f4f +Expanded_Root_3_Count=0 +Expanded_Root_4_GUID=DISPLAY_c85e458d-a499-4b19-8731-4c9407493e91 +Expanded_Root_4_Count=0 +Expanded_Root_5_GUID=DISPLAY_70a34032-37bc-4fcb-afcc-992588401040 +Expanded_Root_5_Count=0 +Expanded_Root_6_GUID=DISPLAY_ef5464ef-46b6-45c8-9b95-28e16cfe7fbe +Expanded_Root_6_Count=0 +Expanded_Root_7_GUID=DISPLAY_13ff4fe0-0651-4dcd-817e-0cd7309aee5d +Expanded_Root_7_Count=0 +Expanded_Root_8_GUID=DISPLAY_a214dfc1-1888-40fb-88a6-4608302e478d +Expanded_Root_8_Count=0 +Expanded_Root_9_GUID=DISPLAY_154c9d41-d5dc-4fff-b3af-ad354a4dbc4d +Expanded_Root_9_Count=0 +Expanded_Root_10_GUID=DISPLAY_6e7aa625-ce14-46f5-8fc7-50687ddce7d5 +Expanded_Root_10_Count=0 +Expanded_Root_11_GUID=DISPLAY_8d7731cf-97aa-499f-bbae-6bd153980385 +Expanded_Root_11_Count=0 +Expanded_Root_12_GUID=DISPLAY_abdc8627-2666-4183-b630-cd1118dab567 +Expanded_Root_12_Count=0 +Expanded_Root_13_GUID=DISPLAY_f3079fc6-3235-4fa2-a15f-4e9c320c6ff8 +Expanded_Root_13_Count=0 +Expanded_Root_14_GUID=DISPLAY_5b48ea33-d113-475c-a83d-5eed238527c3 +Expanded_Root_14_Count=0 +Expanded_Root_15_GUID=DISPLAY_77404029-bd0b-4370-98d9-58e38b962f22 +Expanded_Root_15_Count=0 +Expanded_Root_16_GUID=DISPLAY_8fbe7fdb-5aa6-41cc-a15d-08a59e28f633 +Expanded_Root_16_Count=0 +Expanded_Root_17_GUID=DISPLAY_b60b1ddf-be6d-42dc-ad35-63dbef59b42e +Expanded_Root_17_Count=0 +Expanded_Root_18_GUID=DISPLAY_21002e6f-acca-4b5f-9c89-e90092a0e584 +Expanded_Root_18_Count=0 +Expanded_Root_19_GUID=DISPLAY_35a9f4d6-8b7e-4ef2-9f07-c51525840b00 +Expanded_Root_19_Count=0 +Expanded_Root_20_GUID=DISPLAY_bc0ad253-edd6-4cab-b9bc-36c72c501d04 +Expanded_Root_20_Count=0 +Expanded_Root_21_GUID=DISPLAY_d0ca19f3-a26a-4eb9-b920-c820598221d2 +Expanded_Root_21_Count=0 +Expanded_Root_22_GUID=DISPLAY_cce51fa3-609f-4ccc-8465-b54896541857 +Expanded_Root_22_Count=0 +Expanded_Root_23_GUID=DISPLAY_3f2637ed-1197-4462-8f72-ecf810acece2 +Expanded_Root_23_Count=0 +Expanded_Root_24_GUID=DISPLAY_0fe4ddf5-71d8-43f8-9614-1aa37e182d8b +Expanded_Root_24_Count=0 +Expanded_Root_25_GUID=DISPLAY_33046ed8-1422-43ff-b20d-f3ecd8e33ec6 +Expanded_Root_25_Count=0 +Expanded_Root_26_GUID=DISPLAY_98f1c3e7-1249-4a8a-bc52-68963cd4370b +Expanded_Root_26_Count=0 +Expanded_Root_27_GUID=DISPLAY_1b4d97ed-914f-4e15-aab2-b1df8f51c11a +Expanded_Root_27_Count=0 +Expanded_Root_28_GUID=DISPLAY_fab8d2f5-33ba-44a2-8d77-4ed3ec7f1114 +Expanded_Root_28_Count=0 +Expanded_Root_29_GUID=DISPLAY_46873a4e-7dd5-47cf-9d1f-5bdebd848d18 +Expanded_Root_29_Count=0 +Expanded_Root_Count=30 +Omit_Root_0_GUID=DISPLAY_b356d395-ca4d-43fa-97ab-f38e7d5ebf48 +Omit_Root_0_Count=0 +Omit_Root_1_GUID=DISPLAY_f5908e73-266d-4f06-b830-396ad92c6629 +Omit_Root_1_Count=0 +Omit_Root_2_GUID=DISPLAY_fd26e113-4437-4e48-a888-986aa379af56 +Omit_Root_2_Count=0 +Omit_Root_3_GUID=DISPLAY_f7b0b003-497b-430d-af33-bbbc819c1f4f +Omit_Root_3_Count=0 +Omit_Root_4_GUID=DISPLAY_c85e458d-a499-4b19-8731-4c9407493e91 +Omit_Root_4_Count=0 +Omit_Root_5_GUID=DISPLAY_70a34032-37bc-4fcb-afcc-992588401040 +Omit_Root_5_Count=0 +Omit_Root_6_GUID=DISPLAY_ef5464ef-46b6-45c8-9b95-28e16cfe7fbe +Omit_Root_6_Count=0 +Omit_Root_7_GUID=DISPLAY_13ff4fe0-0651-4dcd-817e-0cd7309aee5d +Omit_Root_7_Count=0 +Omit_Root_8_GUID=DISPLAY_a214dfc1-1888-40fb-88a6-4608302e478d +Omit_Root_8_Count=0 +Omit_Root_9_GUID=DISPLAY_154c9d41-d5dc-4fff-b3af-ad354a4dbc4d +Omit_Root_9_Count=0 +Omit_Root_10_GUID=DISPLAY_6e7aa625-ce14-46f5-8fc7-50687ddce7d5 +Omit_Root_10_Count=0 +Omit_Root_11_GUID=DISPLAY_8d7731cf-97aa-499f-bbae-6bd153980385 +Omit_Root_11_Count=0 +Omit_Root_12_GUID=DISPLAY_abdc8627-2666-4183-b630-cd1118dab567 +Omit_Root_12_Count=0 +Omit_Root_13_GUID=DISPLAY_f3079fc6-3235-4fa2-a15f-4e9c320c6ff8 +Omit_Root_13_Count=0 +Omit_Root_14_GUID=DISPLAY_5b48ea33-d113-475c-a83d-5eed238527c3 +Omit_Root_14_Count=0 +Omit_Root_15_GUID=DISPLAY_77404029-bd0b-4370-98d9-58e38b962f22 +Omit_Root_15_Count=0 +Omit_Root_16_GUID=DISPLAY_8fbe7fdb-5aa6-41cc-a15d-08a59e28f633 +Omit_Root_16_Count=0 +Omit_Root_17_GUID=DISPLAY_b60b1ddf-be6d-42dc-ad35-63dbef59b42e +Omit_Root_17_Count=0 +Omit_Root_18_GUID=DISPLAY_21002e6f-acca-4b5f-9c89-e90092a0e584 +Omit_Root_18_Count=0 +Omit_Root_19_GUID=DISPLAY_35a9f4d6-8b7e-4ef2-9f07-c51525840b00 +Omit_Root_19_Count=0 +Omit_Root_20_GUID=DISPLAY_bc0ad253-edd6-4cab-b9bc-36c72c501d04 +Omit_Root_20_Count=0 +Omit_Root_21_GUID=DISPLAY_d0ca19f3-a26a-4eb9-b920-c820598221d2 +Omit_Root_21_Count=0 +Omit_Root_22_GUID=DISPLAY_cce51fa3-609f-4ccc-8465-b54896541857 +Omit_Root_22_Count=0 +Omit_Root_23_GUID=DISPLAY_3f2637ed-1197-4462-8f72-ecf810acece2 +Omit_Root_23_Count=0 +Omit_Root_24_GUID=DISPLAY_0fe4ddf5-71d8-43f8-9614-1aa37e182d8b +Omit_Root_24_Count=0 +Omit_Root_25_GUID=DISPLAY_33046ed8-1422-43ff-b20d-f3ecd8e33ec6 +Omit_Root_25_Count=0 +Omit_Root_26_GUID=DISPLAY_98f1c3e7-1249-4a8a-bc52-68963cd4370b +Omit_Root_26_Count=0 +Omit_Root_27_GUID=DISPLAY_1b4d97ed-914f-4e15-aab2-b1df8f51c11a +Omit_Root_27_Count=0 +Omit_Root_28_GUID=DISPLAY_fab8d2f5-33ba-44a2-8d77-4ed3ec7f1114 +Omit_Root_28_Count=0 +Omit_Root_29_GUID=DISPLAY_46873a4e-7dd5-47cf-9d1f-5bdebd848d18 +Omit_Root_29_Count=0 +Omit_Root_Count=30 +Hide_Root_0_GUID=DISPLAY_b356d395-ca4d-43fa-97ab-f38e7d5ebf48 +Hide_Root_0_Count=0 +Hide_Root_1_GUID=DISPLAY_f5908e73-266d-4f06-b830-396ad92c6629 +Hide_Root_1_Count=0 +Hide_Root_2_GUID=DISPLAY_fd26e113-4437-4e48-a888-986aa379af56 +Hide_Root_2_Count=0 +Hide_Root_3_GUID=DISPLAY_f7b0b003-497b-430d-af33-bbbc819c1f4f +Hide_Root_3_Count=0 +Hide_Root_4_GUID=DISPLAY_c85e458d-a499-4b19-8731-4c9407493e91 +Hide_Root_4_Count=0 +Hide_Root_5_GUID=DISPLAY_70a34032-37bc-4fcb-afcc-992588401040 +Hide_Root_5_Count=0 +Hide_Root_6_GUID=DISPLAY_ef5464ef-46b6-45c8-9b95-28e16cfe7fbe +Hide_Root_6_Count=0 +Hide_Root_7_GUID=DISPLAY_13ff4fe0-0651-4dcd-817e-0cd7309aee5d +Hide_Root_7_Count=0 +Hide_Root_8_GUID=DISPLAY_a214dfc1-1888-40fb-88a6-4608302e478d +Hide_Root_8_Count=0 +Hide_Root_9_GUID=DISPLAY_154c9d41-d5dc-4fff-b3af-ad354a4dbc4d +Hide_Root_9_Count=0 +Hide_Root_10_GUID=DISPLAY_6e7aa625-ce14-46f5-8fc7-50687ddce7d5 +Hide_Root_10_Count=0 +Hide_Root_11_GUID=DISPLAY_8d7731cf-97aa-499f-bbae-6bd153980385 +Hide_Root_11_Count=0 +Hide_Root_12_GUID=DISPLAY_abdc8627-2666-4183-b630-cd1118dab567 +Hide_Root_12_Count=0 +Hide_Root_13_GUID=DISPLAY_f3079fc6-3235-4fa2-a15f-4e9c320c6ff8 +Hide_Root_13_Count=0 +Hide_Root_14_GUID=DISPLAY_5b48ea33-d113-475c-a83d-5eed238527c3 +Hide_Root_14_Count=0 +Hide_Root_15_GUID=DISPLAY_77404029-bd0b-4370-98d9-58e38b962f22 +Hide_Root_15_Count=0 +Hide_Root_16_GUID=DISPLAY_8fbe7fdb-5aa6-41cc-a15d-08a59e28f633 +Hide_Root_16_Count=0 +Hide_Root_17_GUID=DISPLAY_b60b1ddf-be6d-42dc-ad35-63dbef59b42e +Hide_Root_17_Count=0 +Hide_Root_18_GUID=DISPLAY_21002e6f-acca-4b5f-9c89-e90092a0e584 +Hide_Root_18_Count=0 +Hide_Root_19_GUID=DISPLAY_35a9f4d6-8b7e-4ef2-9f07-c51525840b00 +Hide_Root_19_Count=0 +Hide_Root_20_GUID=DISPLAY_bc0ad253-edd6-4cab-b9bc-36c72c501d04 +Hide_Root_20_Count=0 +Hide_Root_21_GUID=DISPLAY_d0ca19f3-a26a-4eb9-b920-c820598221d2 +Hide_Root_21_Count=0 +Hide_Root_22_GUID=DISPLAY_cce51fa3-609f-4ccc-8465-b54896541857 +Hide_Root_22_Count=0 +Hide_Root_23_GUID=DISPLAY_3f2637ed-1197-4462-8f72-ecf810acece2 +Hide_Root_23_Count=0 +Hide_Root_24_GUID=DISPLAY_0fe4ddf5-71d8-43f8-9614-1aa37e182d8b +Hide_Root_24_Count=0 +Hide_Root_25_GUID=DISPLAY_33046ed8-1422-43ff-b20d-f3ecd8e33ec6 +Hide_Root_25_Count=0 +Hide_Root_26_GUID=DISPLAY_98f1c3e7-1249-4a8a-bc52-68963cd4370b +Hide_Root_26_Count=0 +Hide_Root_27_GUID=DISPLAY_1b4d97ed-914f-4e15-aab2-b1df8f51c11a +Hide_Root_27_Count=0 +Hide_Root_28_GUID=DISPLAY_fab8d2f5-33ba-44a2-8d77-4ed3ec7f1114 +Hide_Root_28_Count=0 +Hide_Root_29_GUID=DISPLAY_46873a4e-7dd5-47cf-9d1f-5bdebd848d18 +Hide_Root_29_Count=0 +Hide_Root_Count=30 +Table_Expanded_Root_0_GUID=DISPLAY_b356d395-ca4d-43fa-97ab-f38e7d5ebf48 +Table_Expanded_Root_0_Count=0 +Table_Expanded_Root_1_GUID=DISPLAY_f5908e73-266d-4f06-b830-396ad92c6629 +Table_Expanded_Root_1_Count=0 +Table_Expanded_Root_2_GUID=DISPLAY_fd26e113-4437-4e48-a888-986aa379af56 +Table_Expanded_Root_2_Count=0 +Table_Expanded_Root_3_GUID=DISPLAY_f7b0b003-497b-430d-af33-bbbc819c1f4f +Table_Expanded_Root_3_Count=0 +Table_Expanded_Root_4_GUID=DISPLAY_c85e458d-a499-4b19-8731-4c9407493e91 +Table_Expanded_Root_4_Count=0 +Table_Expanded_Root_5_GUID=DISPLAY_70a34032-37bc-4fcb-afcc-992588401040 +Table_Expanded_Root_5_Count=0 +Table_Expanded_Root_6_GUID=DISPLAY_ef5464ef-46b6-45c8-9b95-28e16cfe7fbe +Table_Expanded_Root_6_Count=0 +Table_Expanded_Root_7_GUID=DISPLAY_13ff4fe0-0651-4dcd-817e-0cd7309aee5d +Table_Expanded_Root_7_Count=0 +Table_Expanded_Root_8_GUID=DISPLAY_a214dfc1-1888-40fb-88a6-4608302e478d +Table_Expanded_Root_8_Count=0 +Table_Expanded_Root_9_GUID=DISPLAY_154c9d41-d5dc-4fff-b3af-ad354a4dbc4d +Table_Expanded_Root_9_Count=0 +Table_Expanded_Root_10_GUID=DISPLAY_6e7aa625-ce14-46f5-8fc7-50687ddce7d5 +Table_Expanded_Root_10_Count=0 +Table_Expanded_Root_11_GUID=DISPLAY_8d7731cf-97aa-499f-bbae-6bd153980385 +Table_Expanded_Root_11_Count=0 +Table_Expanded_Root_12_GUID=DISPLAY_abdc8627-2666-4183-b630-cd1118dab567 +Table_Expanded_Root_12_Count=0 +Table_Expanded_Root_13_GUID=DISPLAY_f3079fc6-3235-4fa2-a15f-4e9c320c6ff8 +Table_Expanded_Root_13_Count=0 +Table_Expanded_Root_14_GUID=DISPLAY_5b48ea33-d113-475c-a83d-5eed238527c3 +Table_Expanded_Root_14_Count=0 +Table_Expanded_Root_15_GUID=DISPLAY_77404029-bd0b-4370-98d9-58e38b962f22 +Table_Expanded_Root_15_Count=0 +Table_Expanded_Root_16_GUID=DISPLAY_8fbe7fdb-5aa6-41cc-a15d-08a59e28f633 +Table_Expanded_Root_16_Count=0 +Table_Expanded_Root_17_GUID=DISPLAY_b60b1ddf-be6d-42dc-ad35-63dbef59b42e +Table_Expanded_Root_17_Count=0 +Table_Expanded_Root_18_GUID=DISPLAY_21002e6f-acca-4b5f-9c89-e90092a0e584 +Table_Expanded_Root_18_Count=0 +Table_Expanded_Root_19_GUID=DISPLAY_35a9f4d6-8b7e-4ef2-9f07-c51525840b00 +Table_Expanded_Root_19_Count=0 +Table_Expanded_Root_20_GUID=DISPLAY_bc0ad253-edd6-4cab-b9bc-36c72c501d04 +Table_Expanded_Root_20_Count=0 +Table_Expanded_Root_21_GUID=DISPLAY_d0ca19f3-a26a-4eb9-b920-c820598221d2 +Table_Expanded_Root_21_Count=0 +Table_Expanded_Root_22_GUID=DISPLAY_cce51fa3-609f-4ccc-8465-b54896541857 +Table_Expanded_Root_22_Count=0 +Table_Expanded_Root_23_GUID=DISPLAY_3f2637ed-1197-4462-8f72-ecf810acece2 +Table_Expanded_Root_23_Count=0 +Table_Expanded_Root_24_GUID=DISPLAY_0fe4ddf5-71d8-43f8-9614-1aa37e182d8b +Table_Expanded_Root_24_Count=0 +Table_Expanded_Root_25_GUID=DISPLAY_33046ed8-1422-43ff-b20d-f3ecd8e33ec6 +Table_Expanded_Root_25_Count=0 +Table_Expanded_Root_26_GUID=DISPLAY_98f1c3e7-1249-4a8a-bc52-68963cd4370b +Table_Expanded_Root_26_Count=0 +Table_Expanded_Root_27_GUID=DISPLAY_1b4d97ed-914f-4e15-aab2-b1df8f51c11a +Table_Expanded_Root_27_Count=0 +Table_Expanded_Root_28_GUID=DISPLAY_fab8d2f5-33ba-44a2-8d77-4ed3ec7f1114 +Table_Expanded_Root_28_Count=0 +Table_Expanded_Root_29_GUID=DISPLAY_46873a4e-7dd5-47cf-9d1f-5bdebd848d18 +Table_Expanded_Root_29_Count=0 +Table_Expanded_Root_Count=30 +Table_Expanded_PropId_0=65560 +Table_Expanded_PropId_Count=1 +Table_Component_Column_OriginalName_0=Name/type +Table_Component_Column_Id_0=0 +Table_Component_Column_Name_0=Name/type +Table_Component_Column_Width_0=230 +Table_Component_Column_Visible_0=1 +Table_Component_Column_OriginalName_1=Value +Table_Component_Column_Id_1=3145728 +Table_Component_Column_Name_1=Value +Table_Component_Column_Width_1=100 +Table_Component_Column_Visible_1=1 +Table_Component_Column_OriginalName_2=a +Table_Component_Column_Id_2=3145729 +Table_Component_Column_Name_2=a +Table_Component_Column_Width_2=100 +Table_Component_Column_Visible_2=1 +Table_Component_Column_OriginalName_3=b +Table_Component_Column_Id_3=3145730 +Table_Component_Column_Name_3=b +Table_Component_Column_Width_3=100 +Table_Component_Column_Visible_3=1 +Table_Component_Column_OriginalName_4=d +Table_Component_Column_Id_4=3145731 +Table_Component_Column_Name_4=d +Table_Component_Column_Width_4=100 +Table_Component_Column_Visible_4=1 +Table_Component_Column_OriginalName_5=f +Table_Component_Column_Id_5=3145732 +Table_Component_Column_Name_5=f +Table_Component_Column_Width_5=100 +Table_Component_Column_Visible_5=1 +Table_Component_Column_Count=6 +Table_Hidden_Columns_Count=0 +Table_Hide_Root_0_GUID=DISPLAY_b356d395-ca4d-43fa-97ab-f38e7d5ebf48 +Table_Hide_Root_0_Count=0 +Table_Hide_Root_1_GUID=DISPLAY_f5908e73-266d-4f06-b830-396ad92c6629 +Table_Hide_Root_1_Count=0 +Table_Hide_Root_2_GUID=DISPLAY_fd26e113-4437-4e48-a888-986aa379af56 +Table_Hide_Root_2_Count=0 +Table_Hide_Root_3_GUID=DISPLAY_f7b0b003-497b-430d-af33-bbbc819c1f4f +Table_Hide_Root_3_Count=0 +Table_Hide_Root_4_GUID=DISPLAY_c85e458d-a499-4b19-8731-4c9407493e91 +Table_Hide_Root_4_Count=0 +Table_Hide_Root_5_GUID=DISPLAY_70a34032-37bc-4fcb-afcc-992588401040 +Table_Hide_Root_5_Count=0 +Table_Hide_Root_6_GUID=DISPLAY_ef5464ef-46b6-45c8-9b95-28e16cfe7fbe +Table_Hide_Root_6_Count=0 +Table_Hide_Root_7_GUID=DISPLAY_13ff4fe0-0651-4dcd-817e-0cd7309aee5d +Table_Hide_Root_7_Count=0 +Table_Hide_Root_8_GUID=DISPLAY_a214dfc1-1888-40fb-88a6-4608302e478d +Table_Hide_Root_8_Count=0 +Table_Hide_Root_9_GUID=DISPLAY_154c9d41-d5dc-4fff-b3af-ad354a4dbc4d +Table_Hide_Root_9_Count=0 +Table_Hide_Root_10_GUID=DISPLAY_6e7aa625-ce14-46f5-8fc7-50687ddce7d5 +Table_Hide_Root_10_Count=0 +Table_Hide_Root_11_GUID=DISPLAY_8d7731cf-97aa-499f-bbae-6bd153980385 +Table_Hide_Root_11_Count=0 +Table_Hide_Root_12_GUID=DISPLAY_abdc8627-2666-4183-b630-cd1118dab567 +Table_Hide_Root_12_Count=0 +Table_Hide_Root_13_GUID=DISPLAY_f3079fc6-3235-4fa2-a15f-4e9c320c6ff8 +Table_Hide_Root_13_Count=0 +Table_Hide_Root_14_GUID=DISPLAY_5b48ea33-d113-475c-a83d-5eed238527c3 +Table_Hide_Root_14_Count=0 +Table_Hide_Root_15_GUID=DISPLAY_77404029-bd0b-4370-98d9-58e38b962f22 +Table_Hide_Root_15_Count=0 +Table_Hide_Root_16_GUID=DISPLAY_8fbe7fdb-5aa6-41cc-a15d-08a59e28f633 +Table_Hide_Root_16_Count=0 +Table_Hide_Root_17_GUID=DISPLAY_b60b1ddf-be6d-42dc-ad35-63dbef59b42e +Table_Hide_Root_17_Count=0 +Table_Hide_Root_18_GUID=DISPLAY_21002e6f-acca-4b5f-9c89-e90092a0e584 +Table_Hide_Root_18_Count=0 +Table_Hide_Root_19_GUID=DISPLAY_35a9f4d6-8b7e-4ef2-9f07-c51525840b00 +Table_Hide_Root_19_Count=0 +Table_Hide_Root_20_GUID=DISPLAY_bc0ad253-edd6-4cab-b9bc-36c72c501d04 +Table_Hide_Root_20_Count=0 +Table_Hide_Root_21_GUID=DISPLAY_d0ca19f3-a26a-4eb9-b920-c820598221d2 +Table_Hide_Root_21_Count=0 +Table_Hide_Root_22_GUID=DISPLAY_cce51fa3-609f-4ccc-8465-b54896541857 +Table_Hide_Root_22_Count=0 +Table_Hide_Root_23_GUID=DISPLAY_3f2637ed-1197-4462-8f72-ecf810acece2 +Table_Hide_Root_23_Count=0 +Table_Hide_Root_24_GUID=DISPLAY_0fe4ddf5-71d8-43f8-9614-1aa37e182d8b +Table_Hide_Root_24_Count=0 +Table_Hide_Root_25_GUID=DISPLAY_33046ed8-1422-43ff-b20d-f3ecd8e33ec6 +Table_Hide_Root_25_Count=0 +Table_Hide_Root_26_GUID=DISPLAY_98f1c3e7-1249-4a8a-bc52-68963cd4370b +Table_Hide_Root_26_Count=0 +Table_Hide_Root_27_GUID=DISPLAY_1b4d97ed-914f-4e15-aab2-b1df8f51c11a +Table_Hide_Root_27_Count=0 +Table_Hide_Root_28_GUID=DISPLAY_fab8d2f5-33ba-44a2-8d77-4ed3ec7f1114 +Table_Hide_Root_28_Count=0 +Table_Hide_Root_29_GUID=DISPLAY_46873a4e-7dd5-47cf-9d1f-5bdebd848d18 +Table_Hide_Root_29_Count=0 +Table_Hide_Root_Count=30 +ScreenDPIinSection=192 +ColumnCount=2 +Column_0=0, 416 +Column_0_dpi96=0, 208 +Column_1=65560, 172 +Column_1_dpi96=65560, 86 +RecommendedWidths_Count=4 +RecWidth_0=0, 416 +RecWidth_0_dpi96=0, 208 +RecWidth_1=3, 500 +RecWidth_1_dpi96=3, 250 +RecWidth_2=16, 140 +RecWidth_2_dpi96=16, 70 +RecWidth_3=65560, 172 +RecWidth_3_dpi96=65560, 86 +ScrollHorz=0 +ScrollVert=0 +TransposedScrollHorz=0 +TransposedScrollVert=0 +ReverseIndexes=0 +ShowSearchBar=1 +TableView=0 +TextSearchCaseSensitive=0 +TextSearchUseMode=1 +TextSearchSearchFullText=1 +TextSearchSearchInComments=0 +TextSearchSearchInDisplayNames=1 +FilterHistorySize=0 +Title=Measurement Data +Type=262144 +Comment=Data Window +Number=5 +GUID=WINDOW_59288106-87cd-427f-835e-a379c0370e7a +Position=0, 1624, 12, 610, 868 ;cmd, x, y, w, h +Position_dpi96=0, 812, 6, 305, 434 ;cmd, x, y, w, h +Position_Page01=0, 1624, 12, 610, 868 ;cmd, x, y, w, h +Position_Page01_dpi96=0, 812, 6, 305, 434 ;cmd, x, y, w, h +FloatingWindow=0 +ShowSignalComments=1 +DisplayMask=1 ; pages 1 + +[WINDOW_6] +Title= +Type=8192 +Comment=Map/Curve Window +Number=6 +GUID=WINDOW_a46d638d-9996-4450-996a-0ae57dfe4f27 +ScreenDPIinSection=192 +Position=0, 1624, 890, 610, 404 ;cmd, x, y, w, h +Position_dpi96=0, 812, 445, 305, 202 ;cmd, x, y, w, h +Position_Page01=0, 1624, 890, 610, 404 ;cmd, x, y, w, h +Position_Page01_dpi96=0, 812, 445, 305, 202 ;cmd, x, y, w, h +FloatingWindow=0 +ShowSignalComments=1 +2DCutSplitFactor=0.5 +2DCutVerticalSplitFactor=0.5 +AlignBottom=1 +AutoZoom=0 +BarReference=0 +BarSize=60 +BoundingBoxGradient=1 +CLineTransparency=75 +ColWidth=203 +CrosshairCursor=0 +CursorColor=0 +DataWindowAreaHorizontalSplittingFactor=0.433774834437 +DataWindowAreaLayout=2 +DisplayMask=1 ; pages 1 +Distance=14 +FirstColWidth=51 +FixAxis=0 +FixAxisMax=1 +FixAxisMin=0 +FlipX=0 +FlipY=0 +GridSideBarWide=0 +GridTitleHeight=10 +GridX=0 +GridY=0 +InterpolateWorkingPoint=0 +LastFocus=SpreadSheet +LeftCol=1 +LegendWindowSelectionMode=0 +LegendWindowSizeInPercent=0.228021978022 +LegendWindowVerticalSizeInPixel=83 +LwColumns= +LwScrollPos=H:0,V:0 +markerMaxX=0 +markerMaxY=0 +markerMinX=0 +markerMinY=0 +Mirror=1 +ObjectCount=0 +Phi=20 +Psi=4294967251 +ScreenDPI=192 +ShowAllCLines=0 +ShowBoundingBox=1 +ShowLegend=1 +ShowLegendWindowHeader=1 +ShowValueModificationWindow=0 +ShowWorkingPointHistory=0 +SideAndTopHeaderContent=0 +SplitFactor=0.666666666667 +SplittedDataWindowArea=1 +SplitVerticalFactor=0.666666666667 +TopRow=1 +WireModel=0 +WorkingPointColor=16711680 +WorkingPointMarker=0 +WorkingPointSize=100 + +[WINDOWS] +Count=6 + +[Y_COMMON_AXIS_1] +YMin=-400 +YMax=1600 +ValueFormat=3 +AxisTemplate= +LockScaling=0 +ID=1 +Comment= +Color=16711935 +Name=Counters +YMin-Home=-400 +YMax-Home=1600 +DisplayOnlyComment=0 +XAxisGroup=0 + +[Y_COMMON_AXIS_LIST] +Count=1 + diff --git a/examples/no_a2l_demo/CANape/no_a2l_demo.cnaxml b/examples/no_a2l_demo/CANape/no_a2l_demo.cnaxml new file mode 100644 index 00000000..fbd3aecd --- /dev/null +++ b/examples/no_a2l_demo/CANape/no_a2l_demo.cnaxml @@ -0,0 +1,207 @@ + + + + vSymbolExplorerID + + Visible + + + + + + true + Desktop + + + false + Horizontal + -1 + false + + + true + + LayoutGroup + + + WindowLayoutRoot + + + false + Vertical + -1 + false + 150 + 357 + + + true + + LayoutGroup + WindowLayoutRoot + + LeftLayoutGroup + + + 0,0,0,0 + 0,0 + 250,600 + 150 + 250 + + + LayoutPanel + LeftLayoutGroup + + Hidden + vSymbolExplorerID + + + false + Vertical + -1 + false + 0.88609* + + + true + + LayoutGroup + WindowLayoutRoot + + MiddleLayoutGroup + + + true + false + -1 + false + 300 + + + true + + false + TabbedGroup + MiddleLayoutGroup + + TopDocumentGroup + + + NoWhere + true + false + 0 + Top + + + true + + DocumentGroup + MiddleLayoutGroup + + PageArea + + + true + false + -1 + false + 300 + + + true + + false + TabbedGroup + MiddleLayoutGroup + + BottomDocumentGroup + + + false + Vertical + -1 + false + 300 + + + true + + LayoutGroup + WindowLayoutRoot + + RightLayoutGroup + + + Left + false + Vertical + -1 + false + 300 + + + true + + AutoHideGroup + + $AutoHideGroups + LeftAutoHideGroup + + + Right + false + Vertical + -1 + false + 300 + + + true + + AutoHideGroup + + $AutoHideGroups + RightAutoHideGroup + + + Top + false + Horizontal + -1 + false + 300 + + + true + + AutoHideGroup + + $AutoHideGroups + TopAutoHideGroup + + + Bottom + false + Horizontal + -1 + false + 300 + + + true + + AutoHideGroup + + $AutoHideGroups + BottomAutoHideGroup + + + false + false + false + 96.5,196.5 + + + \ No newline at end of file diff --git a/examples/no_a2l_demo/CANape/no_a2l_demo.out b/examples/no_a2l_demo/CANape/no_a2l_demo.out new file mode 100755 index 00000000..ff0821e8 Binary files /dev/null and b/examples/no_a2l_demo/CANape/no_a2l_demo.out differ diff --git a/examples/no_a2l_demo/CANape/no_a2l_demo.template.a2l b/examples/no_a2l_demo/CANape/no_a2l_demo.template.a2l new file mode 100644 index 00000000..697ab32d --- /dev/null +++ b/examples/no_a2l_demo/CANape/no_a2l_demo.template.a2l @@ -0,0 +1,245 @@ + +/* Created by xcp_client with ELF/DWARF information only, offline mode - 2025-10-17 10:24:32 */ +ASAP2_VERSION 1 71 +/begin PROJECT project_name "" +/begin HEADER "" VERSION "1.0" PROJECT_NO XCP_LITE_ACSDD /end HEADER + +/begin MODULE project_name "" + + /include "XCP_104.aml" + + /begin MOD_COMMON "" + BYTE_ORDER MSB_LAST + ALIGNMENT_BYTE 1 + ALIGNMENT_WORD 1 + ALIGNMENT_LONG 1 + ALIGNMENT_FLOAT16_IEEE 1 + ALIGNMENT_FLOAT32_IEEE 1 + ALIGNMENT_FLOAT64_IEEE 1 + ALIGNMENT_INT64 1 + /end MOD_COMMON + + /* Predefined conversion rule for bool */ + /begin COMPU_METHOD BOOL "" + TAB_VERB "%.0" "" COMPU_TAB_REF BOOL.table + /end COMPU_METHOD + /begin COMPU_VTAB BOOL.table "" TAB_VERB 2 + 0 "false" 1 "true" + /end COMPU_VTAB + + /* Predefined conversion rule identity with no phys unit and zero decimal places */ + /begin COMPU_METHOD IDENTITY "" + IDENTICAL "%.0" "" + /end COMPU_METHOD + + /* Predefined characteristic record layouts for standard types */ + /begin RECORD_LAYOUT BOOL FNC_VALUES 1 UBYTE ROW_DIR DIRECT /end RECORD_LAYOUT + /begin RECORD_LAYOUT U8 FNC_VALUES 1 UBYTE ROW_DIR DIRECT /end RECORD_LAYOUT + /begin RECORD_LAYOUT U16 FNC_VALUES 1 UWORD ROW_DIR DIRECT /end RECORD_LAYOUT + /begin RECORD_LAYOUT U32 FNC_VALUES 1 ULONG ROW_DIR DIRECT /end RECORD_LAYOUT + /begin RECORD_LAYOUT U64 FNC_VALUES 1 A_UINT64 ROW_DIR DIRECT /end RECORD_LAYOUT + /begin RECORD_LAYOUT I8 FNC_VALUES 1 SBYTE ROW_DIR DIRECT /end RECORD_LAYOUT + /begin RECORD_LAYOUT I16 FNC_VALUES 1 SWORD ROW_DIR DIRECT /end RECORD_LAYOUT + /begin RECORD_LAYOUT I32 FNC_VALUES 1 SLONG ROW_DIR DIRECT /end RECORD_LAYOUT + /begin RECORD_LAYOUT I64 FNC_VALUES 1 A_INT64 ROW_DIR DIRECT /end RECORD_LAYOUT + /begin RECORD_LAYOUT F32 FNC_VALUES 1 FLOAT32_IEEE ROW_DIR DIRECT /end RECORD_LAYOUT + /begin RECORD_LAYOUT F64 FNC_VALUES 1 FLOAT64_IEEE ROW_DIR DIRECT /end RECORD_LAYOUT + + /* Predefined axis record layouts for standard types */ + /begin RECORD_LAYOUT A_U8 AXIS_PTS_X 1 UBYTE INDEX_INCR DIRECT /end RECORD_LAYOUT + /begin RECORD_LAYOUT A_U16 AXIS_PTS_X 1 UWORD INDEX_INCR DIRECT /end RECORD_LAYOUT + /begin RECORD_LAYOUT A_U32 AXIS_PTS_X 1 ULONG INDEX_INCR DIRECT /end RECORD_LAYOUT + /begin RECORD_LAYOUT A_U64 AXIS_PTS_X 1 A_UINT64 INDEX_INCR DIRECT /end RECORD_LAYOUT + /begin RECORD_LAYOUT A_I8 AXIS_PTS_X 1 SBYTE INDEX_INCR DIRECT /end RECORD_LAYOUT + /begin RECORD_LAYOUT A_I16 AXIS_PTS_X 1 SWORD INDEX_INCR DIRECT /end RECORD_LAYOUT + /begin RECORD_LAYOUT A_I32 AXIS_PTS_X 1 SLONG INDEX_INCR DIRECT /end RECORD_LAYOUT + /begin RECORD_LAYOUT A_I64 AXIS_PTS_X 1 A_INT64 INDEX_INCR DIRECT /end RECORD_LAYOUT + /begin RECORD_LAYOUT A_F32 AXIS_PTS_X 1 FLOAT32_IEEE INDEX_INCR DIRECT /end RECORD_LAYOUT + /begin RECORD_LAYOUT A_F64 AXIS_PTS_X 1 FLOAT64_IEEE INDEX_INCR DIRECT /end RECORD_LAYOUT + + /* Predefined measurement and characteristic typedefs for standard types */ + /begin TYPEDEF_MEASUREMENT M_BOOL "" UBYTE BOOL 0 0 0 1 /end TYPEDEF_MEASUREMENT + /begin TYPEDEF_MEASUREMENT M_U8 "" UBYTE NO_COMPU_METHOD 0 0 0 255 /end TYPEDEF_MEASUREMENT + /begin TYPEDEF_MEASUREMENT M_U16 "" UWORD NO_COMPU_METHOD 0 0 0 65535 /end TYPEDEF_MEASUREMENT + /begin TYPEDEF_MEASUREMENT M_U32 "" ULONG NO_COMPU_METHOD 0 0 0 4294967295 /end TYPEDEF_MEASUREMENT + /begin TYPEDEF_MEASUREMENT M_U64 "" A_UINT64 NO_COMPU_METHOD 0 0 0 1e12 /end TYPEDEF_MEASUREMENT + /begin TYPEDEF_MEASUREMENT M_I8 "" SBYTE NO_COMPU_METHOD 0 0 -128 127 /end TYPEDEF_MEASUREMENT + /begin TYPEDEF_MEASUREMENT M_I16 "" SWORD NO_COMPU_METHOD 0 0 -32768 32767 /end TYPEDEF_MEASUREMENT + /begin TYPEDEF_MEASUREMENT M_I32 "" SLONG NO_COMPU_METHOD 0 0 -2147483648 2147483647 /end TYPEDEF_MEASUREMENT + /begin TYPEDEF_MEASUREMENT M_I64 "" A_INT64 NO_COMPU_METHOD 0 0 -1e12 1e12 /end TYPEDEF_MEASUREMENT + /begin TYPEDEF_MEASUREMENT M_F32 "" FLOAT32_IEEE NO_COMPU_METHOD 0 0 -1e12 1e12 /end TYPEDEF_MEASUREMENT + /begin TYPEDEF_MEASUREMENT M_F64 "" FLOAT64_IEEE NO_COMPU_METHOD 0 0 -1e12 1e12 /end TYPEDEF_MEASUREMENT + /begin TYPEDEF_CHARACTERISTIC C_BOOL "" VALUE U8 0 BOOL 0 1 /end TYPEDEF_CHARACTERISTIC + /begin TYPEDEF_CHARACTERISTIC C_U8 "" VALUE U8 0 NO_COMPU_METHOD 0 255 /end TYPEDEF_CHARACTERISTIC + /begin TYPEDEF_CHARACTERISTIC C_U16 "" VALUE U16 0 NO_COMPU_METHOD 0 65535 /end TYPEDEF_CHARACTERISTIC + /begin TYPEDEF_CHARACTERISTIC C_U32 "" VALUE U32 0 NO_COMPU_METHOD 0 4294967295 /end TYPEDEF_CHARACTERISTIC + /begin TYPEDEF_CHARACTERISTIC C_U64 "" VALUE U64 0 NO_COMPU_METHOD 0 1e12 /end TYPEDEF_CHARACTERISTIC + /begin TYPEDEF_CHARACTERISTIC C_I8 "" VALUE I8 0 NO_COMPU_METHOD -128 127 /end TYPEDEF_CHARACTERISTIC + /begin TYPEDEF_CHARACTERISTIC C_I16 "" VALUE I16 0 NO_COMPU_METHOD -32768 32767 /end TYPEDEF_CHARACTERISTIC + /begin TYPEDEF_CHARACTERISTIC C_I32 "" VALUE I32 0 NO_COMPU_METHOD -2147483648 2147483647 /end TYPEDEF_CHARACTERISTIC + /begin TYPEDEF_CHARACTERISTIC C_I64 "" VALUE I64 0 NO_COMPU_METHOD -1e12 1e12 /end TYPEDEF_CHARACTERISTIC + /begin TYPEDEF_CHARACTERISTIC C_F64 "" VALUE F64 0 NO_COMPU_METHOD -1e12 1e12 /end TYPEDEF_CHARACTERISTIC + /begin TYPEDEF_CHARACTERISTIC C_F32 "" VALUE F32 0 NO_COMPU_METHOD -1e12 1e12 /end TYPEDEF_CHARACTERISTIC + +/begin MOD_PAR "" +/begin MEMORY_SEGMENT params "" DATA FLASH INTERN 0xBA00 56 -1 -1 -1 -1 -1 +/begin IF_DATA XCP + /begin SEGMENT 0 2 0 0 0 + /begin CHECKSUM XCP_ADD_44 MAX_BLOCK_SIZE 0xFFFF EXTERNAL_FUNCTION "" /end CHECKSUM + /begin PAGE 0x0 ECU_ACCESS_DONT_CARE XCP_READ_ACCESS_DONT_CARE XCP_WRITE_ACCESS_DONT_CARE /end PAGE + /begin PAGE 0x1 ECU_ACCESS_DONT_CARE XCP_READ_ACCESS_DONT_CARE XCP_WRITE_ACCESS_NOT_ALLOWED /end PAGE + /end SEGMENT +/end IF_DATA +/end MEMORY_SEGMENT +/end MOD_PAR + +/begin IF_DATA XCP + /begin PROTOCOL_LAYER + 0x104 1000 2000 0 0 0 0 0 252 1468 BYTE_ORDER_MSB_LAST ADDRESS_GRANULARITY_BYTE + OPTIONAL_CMD GET_COMM_MODE_INFO + OPTIONAL_CMD GET_ID + OPTIONAL_CMD SET_REQUEST + OPTIONAL_CMD SET_MTA + OPTIONAL_CMD UPLOAD + OPTIONAL_CMD SHORT_UPLOAD + OPTIONAL_CMD DOWNLOAD + OPTIONAL_CMD SHORT_DOWNLOAD + OPTIONAL_CMD GET_CAL_PAGE + OPTIONAL_CMD SET_CAL_PAGE + OPTIONAL_CMD COPY_CAL_PAGE + OPTIONAL_CMD BUILD_CHECKSUM + OPTIONAL_CMD GET_DAQ_RESOLUTION_INFO + OPTIONAL_CMD GET_DAQ_PROCESSOR_INFO + OPTIONAL_CMD FREE_DAQ + OPTIONAL_CMD ALLOC_DAQ + OPTIONAL_CMD ALLOC_ODT + OPTIONAL_CMD ALLOC_ODT_ENTRY + OPTIONAL_CMD SET_DAQ_PTR + OPTIONAL_CMD WRITE_DAQ + OPTIONAL_CMD GET_DAQ_LIST_MODE + OPTIONAL_CMD SET_DAQ_LIST_MODE + OPTIONAL_CMD START_STOP_SYNCH + OPTIONAL_CMD START_STOP_DAQ_LIST + OPTIONAL_CMD GET_DAQ_CLOCK + OPTIONAL_CMD WRITE_DAQ_MULTIPLE + OPTIONAL_CMD TIME_CORRELATION_PROPERTIES + OPTIONAL_CMD USER_CMD + OPTIONAL_LEVEL1_CMD GET_VERSION + /end PROTOCOL_LAYER + + /begin DAQ + DYNAMIC 0 3 0 OPTIMISATION_TYPE_DEFAULT ADDRESS_EXTENSION_FREE IDENTIFICATION_FIELD_TYPE_RELATIVE_BYTE GRANULARITY_ODT_ENTRY_SIZE_DAQ_BYTE 0xF8 OVERLOAD_INDICATION_PID + /begin TIMESTAMP_SUPPORTED + 0x1 SIZE_DWORD UNIT_1US TIMESTAMP_FIXED + /end TIMESTAMP_SUPPORTED + + /* compilation unit = 0, function = main, CFA = 128 */ + /begin EVENT "mainloop" "mainloop" 0 DAQ 0xFF 0 0 0 CONSISTENCY DAQ /end EVENT + /* compilation unit = 0, function = foo, CFA = 112 */ + /begin EVENT "foo" "foo" 1 DAQ 0xFF 0 0 0 CONSISTENCY DAQ /end EVENT + /* compilation unit = 0, function = task, CFA = 112 */ + /begin EVENT "task" "task" 2 DAQ 0xFF 0 0 0 CONSISTENCY DAQ /end EVENT + + /end DAQ + + /begin XCP_ON_TCP_IP 0x104 5555 ADDRESS "192.168.0.206" /end XCP_ON_TCP_IP + +/end IF_DATA + + +/* TypeDefs */ +/begin TYPEDEF_CHARACTERISTIC counter_max "" VALUE U16 0 IDENTITY 0 65535 /end TYPEDEF_CHARACTERISTIC +/begin TYPEDEF_CHARACTERISTIC delay_us "" VALUE U32 0 IDENTITY 0 4294967295 /end TYPEDEF_CHARACTERISTIC +/begin TYPEDEF_CHARACTERISTIC test_par_uint8_array "" VAL_BLK U8 0 IDENTITY 0 255 MATRIX_DIM 10 /end TYPEDEF_CHARACTERISTIC +/begin TYPEDEF_CHARACTERISTIC test_par_double "" VALUE F64 0 NO_COMPU_METHOD -100000000000000000000000000000000 100000000000000000000000000000000 /end TYPEDEF_CHARACTERISTIC +/begin TYPEDEF_CHARACTERISTIC test_par_bool "" VALUE U8 0 IDENTITY 0 255 /end TYPEDEF_CHARACTERISTIC +/begin TYPEDEF_CHARACTERISTIC test_par_enum "" VALUE U32 0 IDENTITY 0 4294967295 /end TYPEDEF_CHARACTERISTIC +/begin TYPEDEF_CHARACTERISTIC test_field_uint16 "" VALUE U16 0 IDENTITY 0 65535 /end TYPEDEF_CHARACTERISTIC +/begin TYPEDEF_CHARACTERISTIC test_field_int16 "" VALUE I16 0 IDENTITY -32768 32767 /end TYPEDEF_CHARACTERISTIC +/begin TYPEDEF_CHARACTERISTIC test_field_float "" VALUE F32 0 NO_COMPU_METHOD -100000000000000000000000000000000 100000000000000000000000000000000 /end TYPEDEF_CHARACTERISTIC +/begin TYPEDEF_CHARACTERISTIC test_field_uint8_array "" VAL_BLK U8 0 IDENTITY 0 255 MATRIX_DIM 3 /end TYPEDEF_CHARACTERISTIC +/begin TYPEDEF_STRUCTURE test_par_struct "" 12 + /begin STRUCTURE_COMPONENT test_field_uint16 test_field_uint16 0 /end STRUCTURE_COMPONENT + /begin STRUCTURE_COMPONENT test_field_int16 test_field_int16 2 /end STRUCTURE_COMPONENT + /begin STRUCTURE_COMPONENT test_field_float test_field_float 4 /end STRUCTURE_COMPONENT + /begin STRUCTURE_COMPONENT test_field_uint8_array test_field_uint8_array 8 /end STRUCTURE_COMPONENT +/end TYPEDEF_STRUCTURE +/begin TYPEDEF_STRUCTURE params "" 56 + /begin STRUCTURE_COMPONENT counter_max counter_max 0 /end STRUCTURE_COMPONENT + /begin STRUCTURE_COMPONENT delay_us delay_us 4 /end STRUCTURE_COMPONENT + /begin STRUCTURE_COMPONENT test_par_uint8_array test_par_uint8_array 8 /end STRUCTURE_COMPONENT + /begin STRUCTURE_COMPONENT test_par_double test_par_double 24 /end STRUCTURE_COMPONENT + /begin STRUCTURE_COMPONENT test_par_bool test_par_bool 32 /end STRUCTURE_COMPONENT + /begin STRUCTURE_COMPONENT test_par_enum test_par_enum 36 /end STRUCTURE_COMPONENT + /begin STRUCTURE_COMPONENT test_par_struct test_par_struct 40 /end STRUCTURE_COMPONENT +/end TYPEDEF_STRUCTURE +/begin TYPEDEF_MEASUREMENT a "" UWORD IDENTITY 0 0 0 65535 /end TYPEDEF_MEASUREMENT +/begin TYPEDEF_MEASUREMENT b "" SWORD IDENTITY 0 0 -32768 32767 /end TYPEDEF_MEASUREMENT +/begin TYPEDEF_MEASUREMENT f "" FLOAT32_IEEE NO_COMPU_METHOD 0 0 -100000000000000000000000000000000 100000000000000000000000000000000 /end TYPEDEF_MEASUREMENT +/begin TYPEDEF_MEASUREMENT d "" UBYTE IDENTITY 0 0 0 255 MATRIX_DIM 3 /end TYPEDEF_MEASUREMENT +/begin TYPEDEF_STRUCTURE test_struct "" 12 + /begin STRUCTURE_COMPONENT a a 0 /end STRUCTURE_COMPONENT + /begin STRUCTURE_COMPONENT b b 2 /end STRUCTURE_COMPONENT + /begin STRUCTURE_COMPONENT f f 4 /end STRUCTURE_COMPONENT + /begin STRUCTURE_COMPONENT d d 8 /end STRUCTURE_COMPONENT +/end TYPEDEF_STRUCTURE + + +/* Measurements */ + +/* Measurements for event 'mainloop' */ +/begin MEASUREMENT global_running "" UBYTE IDENTITY 0 0 0 255 ECU_ADDRESS 0x30200 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT global_counter "" UWORD IDENTITY 0 0 0 65535 ECU_ADDRESS 0x3026A /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT global_test_uint8 "" UBYTE IDENTITY 0 0 0 255 ECU_ADDRESS 0x3024E /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT global_test_uint16 "" UWORD IDENTITY 0 0 0 65535 ECU_ADDRESS 0x3024C /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT global_test_uint32 "" ULONG IDENTITY 0 0 0 4294967295 ECU_ADDRESS 0x30248 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT global_test_uint64 "" A_UINT64 IDENTITY 0 0 0 18446744073709552000 ECU_ADDRESS 0x30240 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT global_test_int8 "" SBYTE IDENTITY 0 0 -128 127 ECU_ADDRESS 0x3023E /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT global_test_int16 "" SWORD IDENTITY 0 0 -32768 32767 ECU_ADDRESS 0x3023C /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT global_test_int32 "" SLONG IDENTITY 0 0 -2147483648 2147483647 ECU_ADDRESS 0x30238 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT global_test_int64 "" A_INT64 IDENTITY 0 0 -9223372036854776000 9223372036854776000 ECU_ADDRESS 0x30230 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT global_test_float "" FLOAT32_IEEE NO_COMPU_METHOD 0 0 -100000000000000000000000000000000 100000000000000000000000000000000 ECU_ADDRESS 0x30228 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT global_test_double "" FLOAT64_IEEE NO_COMPU_METHOD 0 0 -100000000000000000000000000000000 100000000000000000000000000000000 ECU_ADDRESS 0x30220 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT global_test_bool "" UBYTE IDENTITY 0 0 0 255 ECU_ADDRESS 0x3021B /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT global_test_array "" UBYTE IDENTITY 0 0 0 255 ECU_ADDRESS 0x30218 MATRIX_DIM 3 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin INSTANCE global_test_struct "" test_struct 0x30208 ECU_ADDRESS_EXTENSION 0 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0 /end DAQ_EVENT /end IF_DATA /end INSTANCE +/begin MEASUREMENT main.counter "" ULONG IDENTITY 0 0 0 4294967295 ECU_ADDRESS 0x6C ECU_ADDRESS_EXTENSION 2 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT main.static_counter "" UWORD IDENTITY 0 0 0 65535 ECU_ADDRESS 0x30270 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT + +/* Measurements for event 'foo' */ +/begin MEASUREMENT foo.counter "" ULONG IDENTITY 0 0 0 4294967295 ECU_ADDRESS 0x1006C ECU_ADDRESS_EXTENSION 2 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 1 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT foo.static_counter "" UWORD IDENTITY 0 0 0 65535 ECU_ADDRESS 0x3026E /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 1 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT foo.test_float "" FLOAT32_IEEE NO_COMPU_METHOD 0 0 -100000000000000000000000000000000 100000000000000000000000000000000 ECU_ADDRESS 0x10068 ECU_ADDRESS_EXTENSION 2 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 1 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT foo.test_double "" FLOAT64_IEEE NO_COMPU_METHOD 0 0 -100000000000000000000000000000000 100000000000000000000000000000000 ECU_ADDRESS 0x10060 ECU_ADDRESS_EXTENSION 2 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 1 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT foo.test_uint8 "" UBYTE IDENTITY 0 0 0 255 ECU_ADDRESS 0x1005F ECU_ADDRESS_EXTENSION 2 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 1 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT foo.test_uint16 "" UWORD IDENTITY 0 0 0 65535 ECU_ADDRESS 0x1005C ECU_ADDRESS_EXTENSION 2 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 1 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT foo.test_uint32 "" ULONG IDENTITY 0 0 0 4294967295 ECU_ADDRESS 0x10058 ECU_ADDRESS_EXTENSION 2 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 1 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT foo.test_uint64 "" A_UINT64 IDENTITY 0 0 0 18446744073709552000 ECU_ADDRESS 0x10050 ECU_ADDRESS_EXTENSION 2 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 1 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT foo.test_int8 "" SBYTE IDENTITY 0 0 -128 127 ECU_ADDRESS 0x1004F ECU_ADDRESS_EXTENSION 2 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 1 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT foo.test_int16 "" SWORD IDENTITY 0 0 -32768 32767 ECU_ADDRESS 0x1004C ECU_ADDRESS_EXTENSION 2 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 1 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT foo.test_int32 "" SLONG IDENTITY 0 0 -2147483648 2147483647 ECU_ADDRESS 0x10048 ECU_ADDRESS_EXTENSION 2 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 1 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT foo.test_int64 "" A_UINT64 IDENTITY 0 0 0 18446744073709552000 ECU_ADDRESS 0x10040 ECU_ADDRESS_EXTENSION 2 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 1 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin INSTANCE foo.test_struct "" test_struct 0x10030 ECU_ADDRESS_EXTENSION 2 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 1 /end DAQ_EVENT /end IF_DATA /end INSTANCE + +/* Measurements for event 'task' */ +/begin MEASUREMENT task.counter "" ULONG IDENTITY 0 0 0 4294967295 ECU_ADDRESS 0x2006C ECU_ADDRESS_EXTENSION 2 READ_WRITE /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 2 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT +/begin MEASUREMENT task.static_counter "" UWORD IDENTITY 0 0 0 65535 ECU_ADDRESS 0x3026C /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 2 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT + +/* Measurements without fixed event */ + +/begin GROUP Measurements "" ROOT /begin SUB_GROUP mainloop foo task /end SUB_GROUP /end GROUP +/begin GROUP mainloop "" /begin REF_MEASUREMENT global_running global_counter global_test_uint8 global_test_uint16 global_test_uint32 global_test_uint64 global_test_int8 global_test_int16 global_test_int32 global_test_int64 global_test_float global_test_double global_test_bool global_test_array global_test_struct main.counter main.static_counter /end REF_MEASUREMENT /end GROUP +/begin GROUP foo "" /begin REF_MEASUREMENT foo.counter foo.static_counter foo.test_float foo.test_double foo.test_uint8 foo.test_uint16 foo.test_uint32 foo.test_uint64 foo.test_int8 foo.test_int16 foo.test_int32 foo.test_int64 foo.test_struct /end REF_MEASUREMENT /end GROUP +/begin GROUP task "" /begin REF_MEASUREMENT task.counter task.static_counter /end REF_MEASUREMENT /end GROUP + +/* Axis */ + +/* Characteristics */ +/begin INSTANCE params "" params 0xBA00 /end INSTANCE + +/* Characteristic and Axis Groups */ + +/begin GROUP Characteristics "" ROOT /begin SUB_GROUP params /end SUB_GROUP /end GROUP + +/end MODULE +/end PROJECT diff --git a/examples/no_a2l_demo/README.md b/examples/no_a2l_demo/README.md new file mode 100644 index 00000000..20ec4043 --- /dev/null +++ b/examples/no_a2l_demo/README.md @@ -0,0 +1,161 @@ +# no_a2l_demo Demo + +Demonstrates XCPlite operation without runtime A2L generation. +This is experimental and work in progress. +The A2L creator and ELF/DWARF reader are quick and dirty code, partly AI generated, partly taken from DanielT a2ltool and from the VectorGrp Rust xcp-lite MC registry and A2L writer. +Not ready for production. +This is could be be the base for the planned ThreadX version of XCPlite. + +## The Build Time A2L Generation Concept + +### Current State/* Achievements + +Needs a XCPlite specific A2L writer and an ELF/DWARF reader in a separate tool at build time to: + +Step 1: A2L template generation: + +- Create an A2L template from ELF by detecting segments and events + Event and segment numbers are sequentially allocated an may not have the correct number + +Step 2: AL2 content generation: + +- Add parameters + The reference pages of all calibration parameters must be in addressable (4 GB - 32bit) global memory (.bss segment must be in this range) + Parameters must be in a structure, a calibration segment contains a single structure to assure a defined memory area and layout + Detect calibration parameters by the address of their reference page by naming convention and segment marker variable + XCP needs to be configure for absolute calibration segment addressing +- Add measurements + Global or static measurements must be in addressable (4 GB - 32bit) global memory (.bss segment must be in this range) + Takes all global, static and local variables into account in specified compilation units + Try to detect an appropriate fixed event for each variable by detecting a event trigger in the same function, if not use the unsafe standard async event as default event +- Add all types required as TYPEDEF_STRUCTURE + +Content generation step 2 can alternatively be done by hand, with any other A2L tool from Vector or open source + +Step 3: A2L Fix: + +- The remaining problem is the wrong event and segment numbers. The A2L file is consistent and complete, but the numbers do not match the runtime numbers + This can be fixed connecting to the target and querying segments and events + CANape already does this for events, but not for segments + The associating is done by namme + Problem is, that the XCP standard command GET_SEGMENT_INFO does not support segment names, only numbers + The is a small extension in XCPlite, which supports segment name query + + The proposal is, to simply integrate this into CANape and we are done .... + + Of course the whole process could be integrated into CANape, which would eliminate the need for an A2L file at all! + +### TODO List + +- The xcp_client tool is just proof of concept + Make it more flexible by adding a regular expression filter to the xcp_client tool, allow to specify a list of compilation units, ... +- Support relative calibration segment addressing + XCPlite can then be configured for relative calibration segment addressing as an option + As long as all reference pages are in a 4 GB addressable range, there is no benefit of relative addressing + By convention, parameters always use address extension 0 ACFDD or CAFDD + Currently we preliminary use AAFDD, because the XCPlite macros for event triggering so not detect the calibration segment addressing mode and CANape can not handle ACFDD +- Free standing parameters not in calibration segments + Not implemented yet, would probably need code macro annotations to detect them +- Make sure the event trigger location and the variable location have the same CFA (have not seen any violations yet) +- Heap measurement variables + The A2L creator can not handle heap variables yet + Needs to detect trg__AASD or trg__AASDD type and analyze the argument type of DaqEvent(), pointer to type +- Thread local variables + The A2L creator can not handle thread local variables yet + The DAQ capture method does not work for TLS, need a ApplXcpGetTlsBaseAddress() function, maybe introduce AAST type + Detect the base address of the TLS block, like it is done in ApplXcpGetBaseAddr()/xcp_get_base_addr() for the global variables + The DaqCapture macros as an alternative, does not work yet +- EPK + Detect if the target application has a EPK segment or not + Currently not EPK segment is generated, switched off in XCPlite +- Function parameters + Define a macro to declare function parameters as XCP_MEA, which sills them to stack + A2L Creator ELF reader parser must detect the function parameters with the CFA offset in the stack frame +- bool + The A2L creator must create a BOOL conversion rule and detect the size of the bool type +- Nested structures + Should work, if Daniel handles it correct, not tested yet +- Arrays of structures + Should work, if Daniel handles it correct, not tested yet +- Multiple source files not tested yet +- Support for C++, name spaces, classes, member functions, ... + +## Using the xcp_client tool + +The xcp_client tool from Rust xcp-lite can generate A2L file templates for XCPlite, for further processing with other tools. +It can update A2L files with all visible measurement and calibration variables. +To generate the correct (safe) event id and calibration segment number for the XCP protocol, the application can be run on the target to enable xcp_client to upload event and calibration segment information via XCP. +CANape currently only detects and corrects event ids, but not calibration segment numbers !!! + +Example: Create an A2L template from target: +(Note that the tool will connect to the target ECU to get event id and calibration memory segment number information) + +```bash +$xcp_client --dest-addr=$TARGET_HOST:5555 --tcp --create-a2l --a2l no_a2l_demo.a2l +``` + +Example: Create an A2L template from binary file with debug information: +(Note that the protocol information is only needed, to store it in the A2L file, the A2L file will be consistent, but the event ids and calibration memory segment numbers may be wrong!) + +```bash +$xcp_client --dest-addr=$TARGET_HOST:5555 --tcp --offline --elf no_a2l_demo.out --create-a2l --a2l no_a2l_demo.a2l +``` + +Example: Create measurement and calibration variables from a binary file with ELF/DWARF debug information and add variable from specified compilation units filtered by a regular expression + +```bash +$xcp_client --dest-addr=$TARGET_HOST:5555 --tcp --offline --elf no_a2l_demo.out --a2l no_a2l_demo.a2l +``` + +Refer to the xcp_client command line parameter description for details. + +The A2L file template can now be modified, extended and updated with CANape or any other A2L tool. +This approach works for global measurement variables and calibration parameters. +XCPlite must be configured for absolute calibration segment addressing (OPTION_CAL_SEGMENTS_ABS). + +To make local variables visible, they have to live on stack which is usually not true with optimized code. +There is a macro XCP_MEA to spill local variables to stack with minimal runtime overhead. + +Example: + +```bash +XCP_MEA uint8_t counter = 0; +``` + +. + +### Using Vector CANape + +Drop the template generated by xcp_client into CANape and create a new XCP on Ethernet device. +Enable access to the ELF file in the device configuration. +Use the A2L editor to add individual measurement parameters. +For calibration create an calibration instance for the complete calibration parameter struct. + +### Using Vector A2L-Toolset A2L-Creator to add measurement and calibration metadata + +The example code contains some A2L creator metadata annotation to add metadata such as calibration variable limits and physical units + +### Using Open Source a2ltool + +Example: +Add the calibration segment 'params' and the measurment variable 'counter' to the A2L template: + +```bash +a2ltool --update --measurement-regex "counter" --characteristic-regex "params" --elffile no_a2l_demo.out --enable-structures --output no_a2l_demo.out no_a2l_demo.out +``` + +### Demo + +The demo script create_a2l.sh automates the complete remote build and A2L generation process. + +```bash +./create_a2l.sh +``` + +### Work in progress + +This is currently experimental. +The approach will be used for the upcoming ThreadX demo with build time A2L generation. + +objdump -W no_a2l_demo.out +objdump --all-headers no_a2l_demo.out diff --git a/examples/no_a2l_demo/create_a2l.sh b/examples/no_a2l_demo/create_a2l.sh new file mode 100755 index 00000000..90a927fd --- /dev/null +++ b/examples/no_a2l_demo/create_a2l.sh @@ -0,0 +1,241 @@ +# !/bin/bash + +# A2L file creator for the no_a2l_demo example project + +# The script syncs the example project to the target, builds it there, runs it with XCP on Ethernet, +# downloads the ELF file to the local machine and creates an A2L file either with xcp_client or with a2ltool +# Prerequisites: +# - The target must be reachable via SSH and have rsync installed +# - The local machine must have rsync and scp installed +# - The local machine must have xcp_client and a2ltool compiled and available + + +#====================================================================================================================== +# Parameters +#====================================================================================================================== + +LOGFILE="examples/no_a2l_demo/CANape/no_a2l_demo.log" +#LOGFILE='/dev/stdout' +#LOGFILE="/dev/null" + +# Target A2L name to generate +# The A2L file is generated in the local machine CANape project directory (examples/no_a2l_demo/CANape/) +A2LFILE="examples/no_a2l_demo/CANape/no_a2l_demo.a2l" +A2LFILE_TEMPLATE="examples/no_a2l_demo/CANape/no_a2l_demo.template.a2l" + +# Path to ELF file in local machine CANape project folder +ELFFILE="examples/no_a2l_demo/CANape/no_a2l_demo.out" + +# Build type for target executable: Release, RelWithDebInfo or Debug +# RelWithDebInfo is default to demonstrate operation with with -O1 and NDEBUG +BUILD_TYPE="RelWithDebInfo" +# -O0 +#BUILD_TYPE="Debug" +# -O2 no debug symbols +#BUILD_TYPE="Release" + +# Release build will of course not work because debug symbols are removed + +# Optimization level >= -O1 keeps variables in registers whenever possible, so local variables cannot be measured in any case +# The most efficient solution to keep local variables measurable is to use the DaqCapture macro, another option is mark the variable with volatile ot with the provided macro XCP_MEA +# Debug mode is the least efficient but keeps all variables and stack frames intact +# So far, the solution works well with -O1 + + +# Connect to the target system possible +#ECU_ONLINE=true +ECU_ONLINE=true + +# Connect to the target XCP server possible +# Start the XCP server on the target in background and stop it after A2L creation +#XCP_ONLINE=true +XCP_ONLINE=true + +# Use the offline A2L creator and then update the A2L with the online A2L updater when the ECU is online +OFFLINE_A2L_CREATION_AND_FIX=false +#OFFLINE_A2L_CREATION_AND_FIX=true + +# Target connection details +TARGET_USER="rainer" +TARGET_HOST="192.168.0.206" +TARGET_PATH="~/XCPlite-RainerZ/build/no_a2l_demo.out" + +# Path to a2ltool executable +A2LTOOL="../a2ltool-RainerZ/target/debug/a2ltool" + +# Path to xcp_client tool executable +XCPCLIENT="../xcp-lite-RainerZ/target/debug/xcp_client" + + +# Run a simple measurement with the created A2L file to verify that measurements and characteristics are working +#TEST=true +TEST=false + +#====================================================================================================================== +# Sync Target, Build Application on Target, Download ELF, Start ECU, ... +#====================================================================================================================== + + +echo "========================================================================================================" +echo "A2L file creator for the no_a2l_demo example project" +echo "========================================================================================================" + +echo "Logging to $LOGFILE enabled" +echo "" > $LOGFILE + +#--------------------------------------------------- +if [ $ECU_ONLINE == true ]; then + +# Sync target +echo "Sync target ..." +rsync -avz --delete --exclude=build/ --exclude=.git/ --exclude="*.o" --exclude="*.out" --exclude="*.a" ./ rainer@192.168.0.206:~/XCPlite-RainerZ/ 1> /dev/null +if [ $? -ne 0 ]; then + echo "❌ FAILED: Rsync with target" + exit 1 +fi + + +# Build on target +echo "Build executable on Target ..." +ssh $TARGET_USER@$TARGET_HOST "cd ~/XCPlite-RainerZ && ./build.sh $BUILD_TYPE" 1> /dev/null +if [ $? -ne 0 ]; then + echo "❌ FAILED: Build on target" + exit 1 +fi + + +# Download the target executable for the local A2L generation process +echo "Downloading executable from target $TARGET_PATH to $ELFFILE ..." +scp $TARGET_USER@$TARGET_HOST:$TARGET_PATH $ELFFILE 1> /dev/null +if [ $? -ne 0 ]; then + echo "❌ FAILED: Download $TARGET_PATH" + exit 1 +fi +cp $ELFFILE ../xcp-lite-RainerZ/fixtures/no_a2l_demo.out + + +# Run target executable with XCP on Ethernet in background# +if [ $XCP_ONLINE == true ]; then +ssh $TARGET_USER@$TARGET_HOST "pkill -f no_a2l_demo.out" 1> /dev/null +echo "" +echo "Starting executable $TARGET_PATH on Target ..." +ssh $TARGET_USER@$TARGET_HOST "cd ~/XCPlite-RainerZ && $TARGET_PATH" & +SSH_PID=$! +sleep 2 +fi + +fi +# ECU_ONLINE +#--------------------------------------------------- + + +#====================================================================================================================== +# Create A2L file +#====================================================================================================================== + +# Create a A2L template offline with xcp_client by uploading memory segments and events via XCP + +#--------------------------------------------------- +# One step +if [ $OFFLINE_A2L_CREATION_AND_FIX == false ]; then + +echo "" +echo "========================================================================================================" +echo "Creating A2L file in online mode via XCP event and segment information and from XCPlite ELF file ..." +echo "========================================================================================================" +echo "" +$XCPCLIENT --log-level=3 --verbose=5 --dest-addr=$TARGET_HOST --tcp --elf $ELFFILE --a2l $A2LFILE --create-a2l >> $LOGFILE +if [ $? -ne 0 ]; then + echo "❌ FAILED: xcp_client returned error" + exit 1 +fi + +#--------------------------------------------------- +# Two step +else + + +echo "" +echo "========================================================================================================" +echo "Creating A2L file template from XCPlite ELF file ..." +echo "========================================================================================================" +echo "" +$XCPCLIENT --log-level=3 --verbose=0 --dest-addr=$TARGET_HOST --tcp --offline --elf $ELFFILE --create-a2l --a2l $A2LFILE_TEMPLATE >> $LOGFILE +if [ $? -ne 0 ]; then + echo "❌ FAILED: xcp_client returned error" + exit 1 +fi + +if [ $XCP_ONLINE == true ]; then + +cp $A2LFILE_TEMPLATE $A2LFILE +echo "" +echo "========================================================================================================" +echo "Fixing A2L file with XCP server information to correct event ids, segment numbers and IF_DATA IP address ..." +echo "========================================================================================================" +echo "" +$XCPCLIENT --log-level=3 --verbose=0 --dest-addr=$TARGET_HOST --tcp --elf $ELFFILE --a2l $A2LFILE --fix-a2l >> $LOGFILE +if [ $? -ne 0 ]; then + echo "❌ FAILED: xcp_client returned error" + exit 1 +fi + +fi + + +fi +# OFFLINE_A2L_CREATION_AND_FIX +#--------------------------------------------------- + + +#====================================================================================================================== +# Shutdown +#====================================================================================================================== + + +echo "" +echo "" + + +if [ $ECU_ONLINE == true ]; then +if [ $XCP_ONLINE == true ]; then + +# Stop target - kill SSH process if it still exists, then kill remote process by name +echo "Stopping target executable $SSH_PID on Target ..." +if kill -0 $SSH_PID 2>/dev/null; then + kill $SSH_PID +fi +# Also kill the remote process by name to be sure +# ssh rainer@192.168.0.206 "pkill -f no_a2l_demo.out" +ssh $TARGET_USER@$TARGET_HOST "pkill -f no_a2l_demo.out" 2>/dev/null || true +# Give target some time to shutdown +sleep 1 + +fi +fi + +echo "" +echo "✅ SUCCESS:" +echo "Created a new A2L file $A2LFILE" +echo "" + + +#====================================================================================================================== +# Test +#====================================================================================================================== + +if [ $TEST == true ]; then + + +echo "========================================================================================================" +echo "Test measurement" +echo "========================================================================================================" + +echo "Start a test measurement" +ssh $TARGET_USER@$TARGET_HOST "cd ~/XCPlite-RainerZ && $TARGET_PATH" & +sleep 1 +$XCPCLIENT --log-level=3 --dest-addr=$TARGET_HOST:5555 --tcp --a2l $A2LFILE --mea ".*" --time-ms 100 +ssh $TARGET_USER@$TARGET_HOST "pkill -f no_a2l_demo.out" + + +fi \ No newline at end of file diff --git a/examples/no_a2l_demo/src/main.c b/examples/no_a2l_demo/src/main.c new file mode 100644 index 00000000..d18e7b28 --- /dev/null +++ b/examples/no_a2l_demo/src/main.c @@ -0,0 +1,303 @@ +// no_a2l_demo xcplib example +// Demonstrates XCPlite operation without runtime A2L generation +// See ../README.md for details +// Requires manual or tool based XCPlite specific A2L file creation and update process + +#include // for assert +#include // for signal handling +#include // for bool +#include // for uintxx_t +#include // for printf +#include // for malloc, free +#include // for sprintf + +#include "platform.h" // for platform abstraction for thread local, threads, mutex, sockets, sleepUs, ... +#include "xcplib.h" // for xcplib application programming interface + +static volatile bool global_running = true; +static void sig_handler(int sig) { global_running = false; } + +//----------------------------------------------------------------------------------------------------- +// XCP params + +#define OPTION_PROJECT_NAME "no_a2l_demo" // Project name, used to build the volatile and BIN file name +#define OPTION_PROJECT_EPK "v20_" __TIME__ // EPK version string +#define OPTION_USE_TCP true // TCP or UDP +#define OPTION_SERVER_PORT 5555 // Port +#define OPTION_SERVER_ADDR {0, 0, 0, 0} // Bind addr, 0.0.0.0 = ANY +#define OPTION_QUEUE_SIZE 1024 * 16 // Size of the measurement queue in bytes, must be a multiple of 8 +#define OPTION_LOG_LEVEL 3 // Log level, 0 = no log, 1 = error, 2 = warning, 3 = info, 4 = debug + +//----------------------------------------------------------------------------------------------------- +// Demo calibration parameters + +// Calibration parameters structure +struct params { + uint16_t counter_max; // Maximum value for the counter + uint32_t delay_us; // Sleep time in microseconds for the main loop + + // Test parameters of various types + uint8_t test_par_uint8_array[10]; + double test_par_double; + bool test_par_bool; + enum { ENUM_0 = 0, ENUM_1 = 1, ENUM_2 = 2, ENUM_3 = 3 } test_par_enum; + struct test_par_struct { + uint16_t test_field_uint16; + int16_t test_field_int16; + float test_field_float; + uint8_t test_field_uint8_array[3]; + } test_par_struct; +}; + +// Example A2L Creator code parser annotation +/* + @@ ELEMENT = counter_max + @@ STRUCTURE = params + @@ DATA_TYPE = UWORD [0 ... 10000] + @@ END +*/ + +// Example A2L Creator linker map parser annotation +XCP_LIMITS(delay_us, 1.0, 10000.0); +XCP_UNIT(delay_us, "us"); + +// Default values (reference page, "FLASH") for the calibration parameters +const struct params params = {.counter_max = 1024, + .delay_us = 1000, + .test_par_double = 0.123456789, + .test_par_bool = true, + .test_par_enum = ENUM_2, + .test_par_uint8_array = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, + .test_par_struct = {2, -2, 0.4f, {0, 1, 2}}}; + +//----------------------------------------------------------------------------------------------------- +// Demo global measurement values + +// Global measurement variable +// Modified in function foo +// Measuring it in main or task, is possible, but asynchronous and may give inconsistent results +uint16_t global_counter = 0; + +// Example A2L Creator code parser annotation +/* +@@ SYMBOL = global_counter +@@ DESCRIPTION = "Global counter incremented in function main synch with event mainloop" +@@ UNIT = "delay_us ticks" +@@ END +*/ + +// More global measurement variables of various basic and complex types +uint8_t global_test_uint8 = 8; +uint16_t global_test_uint16 = 16; +uint32_t global_test_uint32 = 32; +uint64_t global_test_uint64 = 64; +int8_t global_test_int8 = -8; +int16_t global_test_int16 = -16; +int32_t global_test_int32 = -32; +int64_t global_test_int64 = -64; +float global_test_float = 0.4f; +double global_test_double = 0.8; +bool global_test_bool = true; +uint8_t global_test_array[3] = {1, 2, 3}; +struct test_struct { + uint16_t a; + int16_t b; + float f; + uint8_t d[3]; +}; +struct test_struct global_test_struct = {1, -2, 0.3f, {1, 2, 3}}; + +//----------------------------------------------------------------------------------------------------- +// Demo thread + +void *task(void *p) { + + printf("Start thread %u ...\n", get_thread_id()); + printf("TLS base address = %p\n", xcp_get_tls_base_addr()); + + // Thread local measurement variables + static THREAD_LOCAL volatile uint16_t thread_local_counter = 0; + + // Static local scope measurement variable + volatile static uint16_t static_counter = 0; + + // Local measurement variable + volatile uint32_t counter = 0; + XCP_UNIT(counter, "ticks"); // Example for an A2L Creator annotation as code + + // Heap measurement variable + struct test_struct *volatile heap_struct = (struct test_struct *)malloc(sizeof(struct test_struct)); + assert(heap_struct); + heap_struct->a = 11; + heap_struct->b = -22; + heap_struct->f = 0.33f; + heap_struct->d[0] = 11; + heap_struct->d[1] = 22; + heap_struct->d[2] = 33; + + DaqCreateEvent(task); + // tXcpEventId event = DaqCreateEventInstance(task); // Create a measurement event instance for each instance of the this thread + + while (global_running) { + + counter = global_counter; + static_counter = global_counter; + thread_local_counter = global_counter; + + // @@@@ TODO: Thread local variables + // The volatile creator can not handle thread local variables yet + // The DAQ capture method does not work for TLS + // DaqCapture(task, thread_local_counter); + + DaqEventExt(task, heap_struct); + + sleepUs(1000); + } + + free(heap_struct); + return 0; +} + +//----------------------------------------------------------------------------------------------------- +// Demo function + +void foo(void) { + + // Static local scope measurement variable + volatile static uint16_t static_counter = 0; + + // Local variable + volatile uint32_t counter = 0; + + // More local measurement variables + volatile float test_float = 0.1f; + volatile double test_double = 0.2; + volatile uint8_t test_uint8 = 1; + volatile uint16_t test_uint16 = 2; + volatile uint32_t test_uint32 = 3; + volatile uint64_t test_uint64 = 4; + volatile int8_t test_int8 = -1; + volatile int16_t test_int16 = -2; + volatile int32_t test_int32 = -3; + volatile uint64_t test_int64 = 1; + volatile struct test_struct test_struct = {1, -2, 0.3f, {1, 2, 3}}; + // uint8_t test_array[3] = {1, 2, 3}; + + counter = global_counter; + static_counter = global_counter; + + DaqCreateEvent(foo); + DaqEvent(foo); +} + +//----------------------------------------------------------------------------------------------------- +// Demo main + +int main(void) { + + printf("\nXCP on Ethernet no_a2l_demo C xcplib demo\n"); + + // Print build configuration +#ifdef NDEBUG + printf("Build: Release "); +#else + printf("Build: Debug "); +#endif +#ifdef __OPTIMIZE__ + printf("(__OPTIMIZE__ = %u)\n", __OPTIMIZE__); +#else + printf("(no optimization)\n"); +#endif + + signal(SIGINT, sig_handler); + signal(SIGTERM, sig_handler); + + // XCP: Set log level (1-error, 2-warning, 3-info, 4-show XCP commands) + XcpSetLogLevel(OPTION_LOG_LEVEL); + + // XCP: Initialize the XCP singleton, activate XCP, must be called before starting the server + // If XCP is not activated, the server will not start and all XCP instrumentation will be passive with minimal overhead + XcpInit(OPTION_PROJECT_NAME, OPTION_PROJECT_EPK, true); + + // XCP: Initialize the XCP Server + const uint8_t __addr[4] = OPTION_SERVER_ADDR; + if (!XcpEthServerInit(__addr, OPTION_SERVER_PORT, OPTION_USE_TCP, OPTION_QUEUE_SIZE)) { + return 1; + } + + // XCP: Create a calibration segment named 'params' for the calibration parameters in 'const struct params params' as reference page + CalSegCreate(params); + + // Create 2 threads + THREAD __t1 = 0; + create_thread(&__t1, task); + // THREAD __t2 = 0; + // create_thread(&__t2, task); + + // Local measurement variable + volatile uint32_t counter = 0; + + // Local scope static measurement variable + volatile static uint16_t static_counter = 0; + + // XCP: Create a measurement event named "mainloop" + DaqCreateEvent(mainloop); + + // Test output + /* + printf("volatile base address = %p:\n", xcp_get_base_addr()); + printf("Stackframe = %p\n", xcp_get_frame_addr()); + A2lSetDynAddrMode(XcpFindEvent("mainloop", NULL), 0, xcp_get_frame_addr()); + printf("&counter = %p, volatile-addr = %u:0x%08X\n", &counter, A2lGetAddrExt_(), A2lGetAddr_(&counter)); + printf("&static_counter = %p, volatile-addr = 0x%08X\n", &static_counter, ApplXcpGetAddr((void *)&static_counter)); + printf("¶ms = %p, volatile-addr = 0x%08X, size = %u\n", ¶ms, ApplXcpGetAddr((void *)¶ms), (uint32_t)sizeof(params)); + */ + + // Mainloop + printf("Start main loop...\n"); + uint32_t delay_us; + while (global_running) { + // XCP: Lock the calibration parameter segment for consistent and safe access + // Calibration segment locking is wait-free, locks may be recursive, calibration segments may be shared among multiple threads + // Returns a pointer to the active page (working or reference) of the calibration segment + { + const struct params *p = CalSegLock(params); + + delay_us = p->delay_us; // Get the delay_us calibration value + + global_counter++; + if (global_counter > p->counter_max) { + global_counter = 0; + } + + // XCP: Unlock the calibration segment + CalSegUnlock(params); + } + + counter = global_counter; + static_counter = global_counter; + + // XCP: Trigger the measurement event "mainloop" + DaqEvent(mainloop); + + // Sleep for the specified delay parameter in microseconds, don't sleep with the XCP lock held to give the XCP client a chance to update params + sleepUs(delay_us); + + foo(); + + } // for (;;) + + // XCP: Force disconnect the XCP client + XcpDisconnect(); + + // Wait for the thread to stop + if (__t1) + join_thread(__t1); + // if (__t2) + // join_thread(__t2); + + // XCP: Stop the XCP server + XcpEthServerShutdown(); + + return 0; +} diff --git a/examples/no_a2l_demo/update_a2l.sh b/examples/no_a2l_demo/update_a2l.sh new file mode 100755 index 00000000..adc3d75f --- /dev/null +++ b/examples/no_a2l_demo/update_a2l.sh @@ -0,0 +1,14 @@ +# Target A2L +A2LFILE="examples/no_a2l_demo/CANape/no_a2l_demo.a2l" + +# Path to a2ltool +A2LTOOL="../a2ltool-RainerZ/target/debug/a2ltool" + +# Path to ELF file +ELFFILE="examples/no_a2l_demo/CANape/no_a2l_demo.out" + +# @@@@ Does not work: params does not get updated +# Update existing A2L file with ELF file +$A2LTOOL --verbose --strict --elffile $ELFFILE --enable-structures --update FULL --update-mode STRICT --output $A2LFILE $A2LFILE + + diff --git a/examples/struct_demo/src/main.c b/examples/struct_demo/src/main.c index b75532ab..9ab48814 100644 --- a/examples/struct_demo/src/main.c +++ b/examples/struct_demo/src/main.c @@ -19,6 +19,7 @@ // XCP parameters #define OPTION_PROJECT_NAME "struct_demo" // A2L project name +#define OPTION_PROJECT_EPK "_" __TIME__ // EPK version string #define OPTION_USE_TCP true // TCP or UDP #define OPTION_SERVER_PORT 5555 // Port #define OPTION_SERVER_ADDR {0, 0, 0, 0} // Bind addr, 0.0.0.0 = ANY @@ -64,7 +65,7 @@ int main(void) { // Initialize the XCP singleton, activate XCP, must be called before starting the server // If XCP is not activated, the server will not start and all XCP instrumentation will be passive with minimal overhead - XcpInit(true); + XcpInit(OPTION_PROJECT_NAME, OPTION_PROJECT_EPK, true); // Initialize the XCP Server uint8_t addr[4] = OPTION_SERVER_ADDR; @@ -73,7 +74,7 @@ int main(void) { } // Enable A2L generation and prepare the A2L file, finalize the A2L file on XCP connect - if (!A2lInit(OPTION_PROJECT_NAME, NULL, addr, OPTION_SERVER_PORT, OPTION_USE_TCP, A2L_MODE_WRITE_ALWAYS | A2L_MODE_FINALIZE_ON_CONNECT | A2L_MODE_AUTO_GROUPS)) { + if (!A2lInit(addr, OPTION_SERVER_PORT, OPTION_USE_TCP, A2L_MODE_WRITE_ALWAYS | A2L_MODE_FINALIZE_ON_CONNECT | A2L_MODE_AUTO_GROUPS)) { return 1; } diff --git a/inc/a2l.h b/inc/a2l.h index cfa830aa..db90469e 100644 --- a/inc/a2l.h +++ b/inc/a2l.h @@ -47,7 +47,7 @@ #include // for offsetof #include // for uintxx_t -#include "xcplib.h" // for tXcpEventId, tXcpCalSegIndex, get_stack_frame_pointer +#include "xcplib.h" // for tXcpEventId, tXcpCalSegIndex, xcp_get_frame_addr, ... // --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- // A2L generation modes @@ -323,9 +323,9 @@ static inline tA2lTypeId A2lGetTypeIdFromPtr_bool(const bool *p) { // Set addressing mode to stack and event 'event_name' // Error if the event does not exist -#define A2lSetStackAddrMode(event_name) A2lSetStackAddrMode__s(#event_name, get_stack_frame_pointer()); -#define A2lSetStackAddrMode_s(event_name_string) A2lSetStackAddrMode__s(event_name_string, get_stack_frame_pointer()); -#define A2lSetStackAddrMode_i(event_id) A2lSetStackAddrMode__i(event_id, get_stack_frame_pointer()); +#define A2lSetStackAddrMode(event_name) A2lSetStackAddrMode__s(#event_name, xcp_get_frame_addr()); +#define A2lSetStackAddrMode_s(event_name_string) A2lSetStackAddrMode__s(event_name_string, xcp_get_frame_addr()); +#define A2lSetStackAddrMode_i(event_id) A2lSetStackAddrMode__i(event_id, xcp_get_frame_addr()); // Set addressing mode to absolute and event 'event_name' // Error if the event does not exist @@ -566,8 +566,6 @@ void A2lCreateMeasurementGroupFromList(const char *name, char *names[], uint32_t /// Init A2L generation /// If the A2l file aready exists and matches the current EPK matches, if yes, load the binary persistence file /// If not, prepare the A2L file and start the runtime generation process -/// @param a2l_projectname Name of the A2L project, used to build the A2L and BIN file name -/// @param a2l_version Version string of the A2L project, used to build the A2L and BIN file name, can be NULL to generate a version based on time and date /// @param addr IP Address Used for IF_DATA XCP /// @param port Port Used for IF_DATA XCP /// @param useTCP Protocol Used for IF_DATA XCP @@ -577,7 +575,7 @@ void A2lCreateMeasurementGroupFromList(const char *name, char *names[], uint32_t /// A2L_MODE_FINALIZE_ON_CONNECT Finalize the A2L file on XCP client connect, if false, the A2L file has to finalized manually /// A2L_MODE_AUTO_GROUPS Enable automatic grouping of parameters (per segment) and measurements (per event), if false, grouping must be done manually /// @return true on success, false on failure -bool A2lInit(const char *a2l_projectname, const char *a2l_version, const uint8_t *addr, uint16_t port, bool useTCP, uint8_t mode); +bool A2lInit(const uint8_t *addr, uint16_t port, bool useTCP, uint8_t mode); /// Finish A2L generation /// Finalize the A2L file, write the binary persistence file diff --git a/inc/xcplib.h b/inc/xcplib.h index f1c99ac9..2a1ec771 100644 --- a/inc/xcplib.h +++ b/inc/xcplib.h @@ -16,6 +16,7 @@ ----------------------------------------------------------------------------*/ #include +#include // for size_t used in TLS functions #include #ifdef __cplusplus @@ -32,7 +33,7 @@ extern "C" { /// @param use_tcp Use TCP if true, otherwise UDP. /// @param measurement_queue_size Measurement queue size in bytes. Includes the bytes occupied by the queue header and some space needed for alignment. /// @return true on success, otherwise false. -bool XcpEthServerInit(uint8_t const *address, uint16_t port, bool use_tcp, uint32_t measurement_queue_size); +bool XcpEthServerInit(const uint8_t *address, uint16_t port, bool use_tcp, uint32_t measurement_queue_size); /// Shutdown the XCP on Ethernet server. bool XcpEthServerShutdown(void); @@ -71,6 +72,9 @@ typedef uint16_t tXcpCalSegIndex; /// @return a handle or XCP_UNDEFINED_CALSEG when out of memory or the name already exists. tXcpCalSegIndex XcpCreateCalSeg(const char *name, const void *default_page, uint16_t size); +/// Find a calibration segment by name, returns XCP_UNDEFINED_CALSEG if not found +tXcpCalSegIndex XcpFindCalSeg(const char *name); + /// Get the name of the calibration segment /// @return the name of the calibration segment or NULL if the index is invalid. const char *XcpGetCalSegName(tXcpCalSegIndex calseg); @@ -82,7 +86,7 @@ const char *XcpGetCalSegName(tXcpCalSegIndex calseg); /// The data can be safely accessed while the lock is held. /// There is no contention with the XCP client tool and with other threads acquiring the lock. /// Acquiring the lock is wait-free, locks may be recursive -uint8_t const *XcpLockCalSeg(tXcpCalSegIndex calseg); +const uint8_t *XcpLockCalSeg(tXcpCalSegIndex calseg); /// Unlock a calibration segment void XcpUnlockCalSeg(tXcpCalSegIndex calseg); @@ -103,6 +107,38 @@ bool XcpResetAllCalSegs(void); // Internal function used for A2L generation uint32_t XcpGetCalSegBaseAddress(tXcpCalSegIndex calseg); +// --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Calibration segment convenience macros + +/// Create calibration segment macro +/// Name given as identifier, type name and segment name are identical +/// Macro may be used anywhere in the code, even in loops +// cal__##name is the linker map file marker for calibration segments +#define CalSegCreate(name) \ + static tXcpCalSegIndex cal__##name = XCP_UNDEFINED_CALSEG; \ + static tXcpCalSegIndex __cal__##name = XCP_UNDEFINED_CALSEG; \ + if (cal__##name == XCP_UNDEFINED_CALSEG) { \ + cal__##name = XcpCreateCalSeg(#name, (uint8_t *)&(name), sizeof(name)); \ + __cal__##name = cal__##name; \ + } + +/// Get calibration segment macro +/// Name given as identifier +#define CalSegGet(name) \ + static tXcpCalSegIndex __cal__##name = XCP_UNDEFINED_CALSEG; \ + if (__cal__##name == XCP_UNDEFINED_CALSEG) { \ + __cal__##name = XcpFindCalSeg(#name); \ + } + +/// Lock calibration segment macro +/// Name given as identifier +/// Macro may be used anywhere in the code, even in loops +#define CalSegLock(name) ((const __typeof__(name) *)XcpLockCalSeg(__cal__##name)) + +/// Unlock calibration segment macro +/// Name given as identifier +#define CalSegUnlock(name) XcpUnlockCalSeg(__cal__##name) + // --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- // Dynamic DAQ event creation @@ -153,9 +189,9 @@ uint16_t XcpGetEventIndex(tXcpEventId event); /// TLS once pattern, only the first call per thread does the event lookup #define DaqCreateEvent(name) \ if (XcpIsActivated()) { \ - static THREAD_LOCAL tXcpEventId daq_create_event_##name##_ = XCP_UNDEFINED_EVENT_ID; \ - if (daq_create_event_##name##_ == XCP_UNDEFINED_EVENT_ID) { \ - daq_create_event_##name##_ = XcpCreateEvent(#name, 0, 0); \ + static THREAD_LOCAL tXcpEventId evt__##name = XCP_UNDEFINED_EVENT_ID; \ + if (evt__##name == XCP_UNDEFINED_EVENT_ID) { \ + evt__##name = XcpCreateEvent(#name, 0, 0); \ } \ } @@ -164,21 +200,27 @@ uint16_t XcpGetEventIndex(tXcpEventId event); /// TLS once pattern, only the first call per thread does the event lookup #define DaqCreateEvent_s(name) \ if (XcpIsActivated()) { \ - static THREAD_LOCAL tXcpEventId daq_create_event__ = XCP_UNDEFINED_EVENT_ID; \ - if (daq_create_event__ == XCP_UNDEFINED_EVENT_ID) { \ - daq_create_event__ = XcpCreateEvent(name, 0, 0); \ + static THREAD_LOCAL tXcpEventId evt__dynname = XCP_UNDEFINED_EVENT_ID; \ + if (evt__dynname == XCP_UNDEFINED_EVENT_ID) { \ + evt__dynname = XcpCreateEvent(name, 0, 0); \ } \ } /// Multi instance event /// Name given as identifier /// No caching of the event id, a new event instance is created for each call -#define DaqCreateEventInstance(name) XcpCreateEventInstance(#name, 0, 0); +#define DaqCreateEventInstance(name) \ + XcpCreateEventInstance(#name, 0, 0); \ + static THREAD_LOCAL tXcpEventId evt__##name = XCP_UNDEFINED_EVENT_ID; /// Multi instance event (thread local) /// Name given as char string /// No caching of the event id, a new event instance is created for each call -#define DaqCreateEventInstance_s(name) XcpCreateEventInstance(name, 0, 0); +// @@@@ TODO: Currently not supported to create event instances with runtime defined names +/* +#define DaqCreateEventInstance_s(name) \ + static THREAD_LOCAL tXcpEventId evt__##name = XCP_UNDEFINED_EVENT_ID; \ XcpCreateEventInstance(name, 0, 0); +*/ // --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- // DAQ event trigger measurement instrumentation point @@ -203,7 +245,6 @@ void XcpEventExt_(tXcpEventId event, const uint8_t **bases); /// Trigger the XCP event 'event' with explicitly given base addresses for all addressing modes (address extensions XCP_ADDR_EXT_SEG, XCP_ADDR_EXT_ABS, XCP_ADDR_EXT_DYN, ...) /// For explicitly setting the event time stamp (clock > 0) -/// For xplicitly setting the event time stamp (clock > 0) /// @param event /// @param base address pointers /// @param time stamp in CLOCK_TICKS_PER_S units @@ -216,7 +257,20 @@ void XcpEventExt_At(tXcpEventId event, const uint8_t **bases, uint64_t clock); // Linux, MACOS gnu and clang compiler #if defined(__GNUC__) || defined(__clang__) -#define get_stack_frame_pointer() (const uint8_t *)__builtin_frame_address(0) +// Option 1: Traditional frame pointer, sufficient for runtime A2L generation and CFA aware A2L updaters +#define xcp_get_frame_addr() (const uint8_t *)__builtin_frame_address(0) + +// Option 2: Canonical Frame Address (CFA) compatible, when ELF/DWARF is used to update the A2L file +// #ifdef __x86_64__ +// #define xcp_get_frame_addr() ((const uint8_t *)__builtin_frame_address(0) + 16) +// #elif defined(__i386__) +// #define xcp_get_frame_addr() ((const uint8_t *)__builtin_frame_address(0) + 8) +// #elif defined(__aarch64__) +// // On ARM64, CFA = frame pointer (x29), DWARF fbreg offsets are relative to frame pointer directly +// #define xcp_get_frame_addr() (const uint8_t *)__builtin_frame_address(0) +// #else +// #define xcp_get_frame_addr() (const uint8_t *)__builtin_frame_address(0) +// #endif // MSVC compiler #elif defined(_MSC_VER) @@ -227,23 +281,75 @@ void XcpEventExt_At(tXcpEventId event, const uint8_t **bases, uint64_t clock); // Suppress the warning since this is intentional behavior for stack frame detection #pragma warning(push) #pragma warning(disable : 4172) // returning address of local variable - intentional -static __forceinline const uint8_t *get_stack_frame_pointer_msvc(void) { +static __forceinline const uint8_t *xcp_get_frame_addr_msvc(void) { volatile char stack_marker = 0; return (const uint8_t *)&stack_marker; } #pragma warning(pop) -#define get_stack_frame_pointer() get_stack_frame_pointer_msvc() +#define xcp_get_frame_addr() xcp_get_frame_addr_msvc() // Other compilers #else -#error "get_stack_frame_pointer is not defined for this compiler. Please implement it." +#error "xcp_get_frame_addr is not defined for this compiler. Please implement it." +#endif + +// --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Global storage + +// Get the base address for absolute XCP/A2L 32 bit address +const uint8_t *ApplXcpGetBaseAddr(void); +extern const uint8_t *gXcpBaseAddr; +#define xcp_get_base_addr() gXcpBaseAddr // For runtime optimization, use xcp_get_base_addr() instead of ApplXcpGetBaseAddr() + +// Calculate the absolute XCP/A2L 32 bit address from a pointer +uint32_t ApplXcpGetAddr(const uint8_t *p); + +// --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Thread local storage + +// Platform-specific TLS base address access +#ifdef __aarch64__ +static inline void *xcp_get_tls_base_addr(void) { + void *tls_base; + __asm__("mrs %0, tpidr_el0" : "=r"(tls_base)); + return tls_base; +} +#elif defined(__x86_64__) +static inline void *xcp_get_tls_base_addr(void) { + void *tls_base; + __asm__("mov %%fs:0, %0" : "=r"(tls_base)); + return tls_base; +} +#else +#error +// Fallback: requires proper TLS index setup +static inline void *xcp_get_tls_base_addr(void) { + // This is a placeholder - actual implementation would need TLS module info + // Use __tls_get_addr with proper tls_index_t parameter + return NULL; // Platform not supported for direct TLS access +} + +// Forward declaration for TLS runtime function +// extern void *__tls_get_addr(void *ti); + +// TLS index structure for __tls_get_addr +// typedef struct { +// size_t ti_module; // TLS module ID +// size_t ti_offset; // Offset within TLS block +// } tls_index_t; + +// Resolve TLS variable address (requires TLS offset from DWARF) +// static inline void *resolve_tls_variable_address(size_t tls_module_id, size_t tls_offset) { +// tls_index_t ti = {.ti_module = tls_module_id, .ti_offset = tls_offset}; +// return __tls_get_addr(&ti); +// } #endif // --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- // DAQ event trigger convenience macros // Event name parameter is a symbol, a string (_s) or an event index (_i) -// Creates linker map file markers (static variables: daq_event_stackframe_'eventname'_ or daq_event_relative_'eventname'_) for the XCP event id used +// Creates linker map file markers (static variables: trg__xxxx_'eventname' ) for the XCP event id used // No need to take care to store the event id // Uses thread local storage to create a thread safe once pattern for the event lookup // All macros can be used to measure variables registered in absolute addressing mode as well @@ -264,89 +370,93 @@ static __forceinline const uint8_t *get_stack_frame_pointer_msvc(void) { #endif #endif // THREAD_LOCAL -// Get the base address for DAQ data access -uint8_t *ApplXcpGetBaseAddr(void); - /// Trigger the XCP event 'name' for stack relative or absolute addressing /// Cache the event name lookup #define DaqEvent(name) \ if (XcpIsActivated()) { \ - static THREAD_LOCAL tXcpEventId daq_event_stackframe_##name##_ = XCP_UNDEFINED_EVENT_ID; \ - if (daq_event_stackframe_##name##_ == XCP_UNDEFINED_EVENT_ID) { \ - daq_event_stackframe_##name##_ = XcpFindEvent(#name, NULL); \ - assert(daq_event_stackframe_##name##_ != XCP_UNDEFINED_EVENT_ID); \ + static THREAD_LOCAL tXcpEventId trg__AAS__##name = XCP_UNDEFINED_EVENT_ID; \ + if (trg__AAS__##name == XCP_UNDEFINED_EVENT_ID) { \ + trg__AAS__##name = XcpFindEvent(#name, NULL); \ + assert(trg__AAS__##name != XCP_UNDEFINED_EVENT_ID); \ } \ - const uint8_t *base[4] = {NULL, ApplXcpGetBaseAddr(), get_stack_frame_pointer(), NULL}; \ - XcpEventExt_(daq_event_stackframe_##name##_, base); \ + const uint8_t *__base[4] = {xcp_get_base_addr(), xcp_get_base_addr(), xcp_get_frame_addr(), NULL}; \ + XcpEventExt_(trg__AAS__##name, __base); \ } #define DaqEventAt(name, clock) \ if (XcpIsActivated()) { \ - static THREAD_LOCAL tXcpEventId daq_event_stackframe_##name##_ = XCP_UNDEFINED_EVENT_ID; \ - if (daq_event_stackframe_##name##_ == XCP_UNDEFINED_EVENT_ID) { \ - daq_event_stackframe_##name##_ = XcpFindEvent(#name, NULL); \ - assert(daq_event_stackframe_##name##_ != XCP_UNDEFINED_EVENT_ID); \ + static THREAD_LOCAL tXcpEventId trg__AAS__##name = XCP_UNDEFINED_EVENT_ID; \ + if (trg__AAS__##name == XCP_UNDEFINED_EVENT_ID) { \ + trg__AAS__##name = XcpFindEvent(#name, NULL); \ + assert(trg__AAS__##name != XCP_UNDEFINED_EVENT_ID); \ } \ - const uint8_t *base[4] = {NULL, ApplXcpGetBaseAddr(), get_stack_frame_pointer(), NULL}; \ - XcpEventExt_At(daq_event_stackframe_##name##_, base, clock); \ + const uint8_t *__base[4] = {xcp_get_base_addr(), xcp_get_base_addr(), xcp_get_frame_addr(), NULL}; \ + XcpEventExt_At(trg__AAS__##name, __base, clock); \ } /// Trigger the XCP event 'name' for stack relative or absolute addressing /// Name is a character string, but must not be a string literal /// Cache the event name lookup -#define DaqEvent_s(name) \ - if (XcpIsActivated()) { \ - static THREAD_LOCAL tXcpEventId daq_event_stackframe__ = XCP_UNDEFINED_EVENT_ID; \ - if (daq_event_stackframe__ == XCP_UNDEFINED_EVENT_ID) { \ - daq_event_stackframe__ = XcpFindEvent(name, NULL); \ - assert(daq_event_stackframe__ != XCP_UNDEFINED_EVENT_ID); \ - } \ - const uint8_t *base[4] = {NULL, ApplXcpGetBaseAddr(), get_stack_frame_pointer(), NULL}; \ - XcpEventExt_(daq_event_stackframe__, base); \ +// @@@@ TODO: Currently not supported to have events with runtime defined names +/* +#define DaqEvent_s(name) \ + if (XcpIsActivated()) { \ + static THREAD_LOCAL tXcpEventId trg__AAS__ = XCP_UNDEFINED_EVENT_ID; \ + if (trg__AAS__ == XCP_UNDEFINED_EVENT_ID) { \ + trg__AAS__ = XcpFindEvent(name, NULL); \ + assert(trg__AAS__ != XCP_UNDEFINED_EVENT_ID); \ + } \ + const uint8_t *__base[4] = {xcp_get_base_addr(), xcp_get_base_addr(), xcp_get_frame_addr(), NULL}; \ + XcpEventExt_(trg__AAS__, __base); \ } -#define DaqEventAt_s(name, clock) \ - if (XcpIsActivated()) { \ - static THREAD_LOCAL tXcpEventId daq_event_stackframe__ = XCP_UNDEFINED_EVENT_ID; \ - if (daq_event_stackframe__ == XCP_UNDEFINED_EVENT_ID) { \ - daq_event_stackframe__ = XcpFindEvent(name, NULL); \ - assert(daq_event_stackframe__ != XCP_UNDEFINED_EVENT_ID); \ - } \ - const uint8_t *base[4] = {NULL, ApplXcpGetBaseAddr(), get_stack_frame_pointer(), NULL}; \ - XcpEventExt_At(daq_event_stackframe__, base, clock); \ +#define DaqEventAt_s(name, clock) \ + if (XcpIsActivated()) { \ + static THREAD_LOCAL tXcpEventId trg__AAS__ = XCP_UNDEFINED_EVENT_ID; \ + if (trg__AAS__ == XCP_UNDEFINED_EVENT_ID) { \ + trg__AAS__ = XcpFindEvent(name, NULL); \ + assert(trg__AAS__ != XCP_UNDEFINED_EVENT_ID); \ + } \ + const uint8_t *__base[4] = {xcp_get_base_addr(), xcp_get_base_addr(), xcp_get_frame_addr(), NULL}; \ + XcpEventExt_At(trg__AAS__, __base, clock); \ } +*/ /// Trigger the XCP event by handle 'event_id' for stack relative or absolute addressing #define DaqEvent_i(event_id) \ if (XcpIsActivated()) { \ - const uint8_t *base[4] = {NULL, ApplXcpGetBaseAddr(), get_stack_frame_pointer(), NULL}; \ - XcpEventExt_(event_id, base); \ + static THREAD_LOCAL tXcpEventId trg__AAS__##name = XCP_UNDEFINED_EVENT_ID; \ + const uint8_t *__base[4] = {xcp_get_base_addr(), xcp_get_base_addr(), xcp_get_frame_addr(), NULL}; \ + trg__AAS__##name = event_id; \ + XcpEventExt_(event_id, __base); \ } #define DaqEventAt_i(event_id, clock) \ if (XcpIsActivated()) { \ - const uint8_t *base[4] = {NULL, ApplXcpGetBaseAddr(), get_stack_frame_pointer(), NULL}; \ - XcpEventExt_At(event_id, base, clock); \ + static THREAD_LOCAL tXcpEventId trg__AAS__##name = event_id; \ + const uint8_t *__base[4] = {xcp_get_base_addr(), xcp_get_base_addr(), xcp_get_frame_addr(), NULL}; \ + trg__AAS__##name = event_id; \ + XcpEventExt_At(event_id, __base, clock); \ } /// Trigger the XCP event 'name' for absolute, stack and relative addressing mode with given individual base address (from A2lSetRelativeAddrMode(base_addr)) /// Cache the event lookup #define DaqEvent1(name, base_addr) \ if (XcpIsActivated()) { \ - static THREAD_LOCAL tXcpEventId daq_event_relative_##name##_ = XCP_UNDEFINED_EVENT_ID; \ - if (daq_event_relative_##name##_ == XCP_UNDEFINED_EVENT_ID) { \ - daq_event_relative_##name##_ = XcpFindEvent(#name, NULL); \ - assert(daq_event_relative_##name##_ != XCP_UNDEFINED_EVENT_ID); \ + static THREAD_LOCAL tXcpEventId trg__AASD__##name = XCP_UNDEFINED_EVENT_ID; \ + if (trg__AASD__##name == XCP_UNDEFINED_EVENT_ID) { \ + trg__AASD__##name = XcpFindEvent(#name, NULL); \ + assert(trg__AASD__##name != XCP_UNDEFINED_EVENT_ID); \ } \ - const uint8_t *base[4] = {NULL, ApplXcpGetBaseAddr(), get_stack_frame_pointer(), (const uint8_t *)base_addr}; \ - XcpEventExt_(daq_event_relative_##name##_, base); \ + const uint8_t *__base[4] = {xcp_get_base_addr(), xcp_get_base_addr(), xcp_get_frame_addr(), (const uint8_t *)base_addr}; \ + XcpEventExt_(trg__AASD__##name, __base); \ } #define DaqEvent2(name, base_addr1, base_addr2) \ if (XcpIsActivated()) { \ - static THREAD_LOCAL tXcpEventId daq_event_relative_##name##_ = XCP_UNDEFINED_EVENT_ID; \ - if (daq_event_relative_##name##_ == XCP_UNDEFINED_EVENT_ID) { \ - daq_event_relative_##name##_ = XcpFindEvent(#name, NULL); \ - assert(daq_event_relative_##name##_ != XCP_UNDEFINED_EVENT_ID); \ + static THREAD_LOCAL tXcpEventId trg__AASDD__##name = XCP_UNDEFINED_EVENT_ID; \ + if (trg__AASDD__##name == XCP_UNDEFINED_EVENT_ID) { \ + trg__AASDD__##name = XcpFindEvent(#name, NULL); \ + assert(trg__AASDD__##name != XCP_UNDEFINED_EVENT_ID); \ } \ - const uint8_t *base[5] = {NULL, ApplXcpGetBaseAddr(), get_stack_frame_pointer(), (const uint8_t *)base_addr1, (const uint8_t *)base_addr2}; \ - XcpEventExt_(daq_event_relative_##name##_, base); \ + const uint8_t *__base[5] = {xcp_get_base_addr(), xcp_get_base_addr(), xcp_get_frame_addr(), (const uint8_t *)base_addr1, (const uint8_t *)base_addr2}; \ + XcpEventExt_(trg__AASDD__##name, __base); \ } /// Trigger the XCP event 'name' for absolute, stack and relative addressing mode with given individual base address (from A2lSetRelativeAddrMode(base_addr)) @@ -354,27 +464,74 @@ uint8_t *ApplXcpGetBaseAddr(void); /// Cache the event lookup #define DaqEvent1_s(name, base_addr) \ if (XcpIsActivated()) { \ - static THREAD_LOCAL tXcpEventId daq_event_relative__ = XCP_UNDEFINED_EVENT_ID; \ - if (daq_event_relative__ == XCP_UNDEFINED_EVENT_ID) { \ - daq_event_relative__ = XcpFindEvent(name, NULL); \ - assert(daq_event_relative__ != XCP_UNDEFINED_EVENT_ID); \ + static THREAD_LOCAL tXcpEventId trg__AASD__ = XCP_UNDEFINED_EVENT_ID; \ + if (trg__AASD__ == XCP_UNDEFINED_EVENT_ID) { \ + trg__AASD__ = XcpFindEvent(name, NULL); \ + assert(trg__AASD__ != XCP_UNDEFINED_EVENT_ID); \ } \ - const uint8_t *base[4] = {NULL, ApplXcpGetBaseAddr(), get_stack_frame_pointer(), (const uint8_t *)base_addr}; \ - XcpEventExt_(daq_event_relative__, base); \ + const uint8_t *__base[4] = {xcp_get_base_addr(), xcp_get_base_addr(), xcp_get_frame_addr(), (const uint8_t *)base_addr}; \ + XcpEventExt_(trg__AASD__, __base); \ } /// Trigger the XCP event by handle 'event_id' for absolute, stack and relative addressing mode with given individual base address (from A2lSetRelativeAddrMode(base_addr)) /// Cache the event lookup #define DaqEvent1_i(event_id, base_addr) \ if (XcpIsActivated()) { \ - const uint8_t *base[4] = {NULL, ApplXcpGetBaseAddr(), get_stack_frame_pointer(), (const uint8_t *)base_addr}; \ - XcpEventExt_(event_id, base); \ + static THREAD_LOCAL tXcpEventId trg__AASD__##name = event_id; \ + const uint8_t *__base[4] = {xcp_get_base_addr(), xcp_get_base_addr(), xcp_get_frame_addr(), (const uint8_t *)base_addr}; \ + XcpEventExt_(event_id, __base); \ } +// Compatibility macros with older naming #define DaqEventRelative DaqEvent1 +#define DaqEventExt DaqEvent1 #define DaqEventRelative_s DaqEvent1_s #define DaqEventRelative_i DaqEvent1_i +// --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Build time A2L file generation helpers +// @@@@ Work in progress + +#define _XCP_STRING(var_name, suffix, value) static const char __attribute__((section(XCP_STRING_SECTION), used)) __xcp_str_##var_name##suffix[] = value + +#ifdef __APPLE__ +// macOS Mach-O: segment,section format +#define XCP_META_SECTION "__DATA,__xcp_meta" +#define XCP_STRING_SECTION "__DATA,__xcp_str" +#else +// Linux ELF: simple section names +#define XCP_META_SECTION ".xcp.meta" +#define XCP_STRING_SECTION ".xcp.strings" +#endif + +// Metadata annotations +#define XCP_COMMENT (name, comment) static const char *__attribute__((section(XCP_STRING_SECTION), used)) __a2l_comment_##name = comment; +#define XCP_UNIT(name, unit) static const char *__attribute__((section(XCP_STRING_SECTION), used)) __a2l_unit_##name = unit; +#define XCP_LIMITS(name, min, max) \ + static const double __attribute__((section(XCP_META_SECTION), used)) __a2l_min_##name = min; \ + static const double __attribute__((section(XCP_META_SECTION), used)) __a2l_max_##name = max; + +// --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +// Measurement of stack variables + +// Mark a (local) variable as volatile and used to prevent compiler optimizations and force spilling it to a memory location +// XCPlite can measure stack variables but not registers +// The A2L updater or creator can handle only simple location expressions such as absolute addresses, stack relative addresses (CFA) and calibration segment relative addresses +// For complex cases, use the DaqCapture macro to capture the variable in a hidden static variable +/// Attribute to mark a variable as measurable by XCP/A2L +/// Example usage: XCP_MEA int32_t my_var = 0; +#define XCP_MEA volatile +// #define XCP_MEA volatile __attribute__((used)) + +/// Capture a local variable for measurement with a specific event +/// The variable must be in scope when the event is triggered with DaqEvent +/// The build time A2L file generator will find the hidden static variable 'daq__##event##__##var' and create the measurement with approriate addressing mode and event association +#define DaqCapture(event, var) \ + do { \ + static __typeof__(var) daq__##event##__##var; \ + daq__##event##__##var = var; \ + } while (0) + // --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- // Misc @@ -386,7 +543,7 @@ void XcpSetLogLevel(uint8_t level); /// Initialize the XCP singleton, activate XCP, must be called before starting the server /// If XCP is not activated, the server will not start and all XCP instrumentation will be passive with minimal overhead /// @param activate If true, the XCP library is activated -void XcpInit(bool activate); +void XcpInit(const char *name, const char *epk, bool activate); /// Check if XCP has been activated bool XcpIsActivated(void); @@ -394,16 +551,18 @@ bool XcpIsActivated(void); /// Check if XCP is connected bool XcpIsConnected(void); -// Set the A2L file name -// To enable automatic detection by the XCP client tool (GET_ID IDT_ASAM_NAME, IDT_ASAM_NAME and for IDT_ASAM_UPLOAD) -// Internal function used by the A2L generator -#define XCP_A2L_FILENAME_MAX_LENGTH 255 // Maximum length of A2L filename with extension -void ApplXcpSetA2lName(const char *name); +// Project name +void XcpSetProjectName(const char *name); +const char *XcpGetProjectName(void); + +// A2L file name +// Notify xcplib there is a valid A2L with this name to be provided for upload via XCP command GET_ID +void XcpSetA2lName(const char *name); +const char *XcpGetA2lName(void); -// Set software version identifier (EPK) -// Internal function used by the A2L generator -#define XCP_EPK_MAX_LENGTH 32 // Maximum length of EPK string +// EPK software version identifier void XcpSetEpk(const char *epk); +const char *XcpGetEpk(void); /// Force Disconnect /// Stop DAQ, flush queue, flush pending calibrations diff --git a/inc/xcplib.hpp b/inc/xcplib.hpp index 01f9c85d..893c887e 100644 --- a/inc/xcplib.hpp +++ b/inc/xcplib.hpp @@ -31,8 +31,8 @@ template class CalSeg { /// Constructor - creates the calibration segment struct wrapper /// @param name Name of the calibration segment /// @param default_params Default parameter values (reference page) - CalSeg(const char *name, const T &default_params) { - segment_index_ = XcpCreateCalSeg(name, &default_params, sizeof(T)); + CalSeg(const char *name, const T *default_params) { + segment_index_ = XcpCreateCalSeg(name, default_params, sizeof(T)); assert(segment_index_ != XCP_UNDEFINED_CALSEG); // Ensure the calibration segment was created successfully } @@ -82,6 +82,6 @@ template class CalSeg { /// Convenience function to create calibration segment wrappers /// Usage: auto calseg = xcp::CreateCalSeg("Parameters", default_parameters); -template CalSeg CreateCalSeg(const char *name, const T &default_params) { return CalSeg(name, default_params); } +template CalSeg CreateCalSeg(const char *name, const T *default_params) { return CalSeg(name, default_params); } } // namespace xcplib diff --git a/src/a2l.c b/src/a2l.c index 3c245c99..6c029baa 100644 --- a/src/a2l.c +++ b/src/a2l.c @@ -22,7 +22,7 @@ #include "dbg_print.h" // for DBG_PRINTF3, DBG_PRINT4, DBG_PRINTF4, DBG... #include "main_cfg.h" // for OPTION_xxx -#include "persistency.h" // for XcpBinWrite, XcpBinLoad +#include "persistency.h" // for XcpBinWrite #include "platform.h" // for platform defines (WIN_, LINUX_, MACOS_) and specific implementation of sockets, clock, thread, mutex #include "xcp.h" // for CRC_XXX #include "xcpLite.h" // for tXcpDaqLists, XcpXxx, ApplXcpXxx, ... @@ -35,15 +35,19 @@ #endif #endif +#ifdef OPTION_ENABLE_A2L_GENERATOR + +//---------------------------------------------------------------------------------- + +#define INCLUDE_AML_FILES // Use /include "file.aml" +// #define EMBED_AML_FILES // Embed AML files into generated A2L file + //---------------------------------------------------------------------------------- static FILE *gA2lFile = NULL; static bool gA2lFileFinalized = false; static char gA2lFilename[256]; -#ifdef OPTION_CAL_PERSISTENCE -static char gBinFilename[256]; -#endif static bool gA2lFinalizeOnConnect = false; // Finalize A2L file on connect static bool gA2lWriteAlways = true; // Write A2L file always, even if no changes were made @@ -56,7 +60,7 @@ static FILE *gA2lGroupsFile = NULL; static FILE *gA2lConversionsFile = NULL; static char gA2lConvName[256]; -static char gA2lAutoGroups = true; // Automatically create groups for measurements and parameters +static bool gA2lAutoGroups = true; // Automatically create groups for measurements and parameters static const char *gA2lAutoGroupName = NULL; // Current open group static bool gA2lAutoGroupIsParameter = false; // Group is a parameter group @@ -78,26 +82,31 @@ static uint32_t gA2lInstances; static uint32_t gA2lConversions; //---------------------------------------------------------------------------------- -static const char *gA2lHeader = "ASAP2_VERSION 1 71\n" - "/begin PROJECT %s \"\"\n\n" - "/begin HEADER \"\" VERSION \"1.0\" PROJECT_NO XCPlite /end HEADER\n\n" - "/begin MODULE %s \"\"\n\n" - "/include \"XCP_104.aml\"\n\n" - "/begin MOD_COMMON \"\"\n" - "BYTE_ORDER MSB_LAST\n" - "ALIGNMENT_BYTE 1\n" - "ALIGNMENT_WORD 1\n" - "ALIGNMENT_LONG 1\n" - "ALIGNMENT_FLOAT16_IEEE 1\n" - "ALIGNMENT_FLOAT32_IEEE 1\n" - "ALIGNMENT_FLOAT64_IEEE 1\n" - "ALIGNMENT_INT64 1\n" - "/end MOD_COMMON\n" - "\n\n"; +static const char *gA2lHeader1 = "ASAP2_VERSION 1 71\n" + "/begin PROJECT %s \"\"\n\n" // project name + "/begin HEADER \"\" VERSION \"1.0\" PROJECT_NO " XCP_ADDRESS_MODE " /end HEADER\n\n" + "/begin MODULE %s \"\"\n\n"; // module name + +static const char *gA2lHeader2 = "/begin MOD_COMMON \"\"\n" + "BYTE_ORDER MSB_LAST\n" + "ALIGNMENT_BYTE 1\n" + "ALIGNMENT_WORD 1\n" + "ALIGNMENT_LONG 1\n" + "ALIGNMENT_FLOAT16_IEEE 1\n" + "ALIGNMENT_FLOAT32_IEEE 1\n" + "ALIGNMENT_FLOAT64_IEEE 1\n" + "ALIGNMENT_INT64 1\n" + "/end MOD_COMMON\n" + "\n\n"; + +//---------------------------------------------------------------------------------- +#ifdef EMBED_AML_FILES +static const char *gA2lAml = ""; +#endif //---------------------------------------------------------------------------------- #ifdef XCP_ENABLE_CALSEG_LIST -static const char *gA2lMemorySegment = "/begin MEMORY_SEGMENT %s \"\" DATA FLASH INTERN 0x%08X 0x%X -1 -1 -1 -1 -1\n" // name, start, size +static const char *gA2lMemorySegment = "/begin MEMORY_SEGMENT %s \"\" DATA FLASH INTERN 0x%08X %u -1 -1 -1 -1 -1\n" // name, start, size "/begin IF_DATA XCP\n" "/begin SEGMENT %u 2 0 0 0\n" // index "/begin CHECKSUM XCP_CRC_16_CITT MAX_BLOCK_SIZE 0xFFFF EXTERNAL_FUNCTION \"\" /end CHECKSUM\n" @@ -106,21 +115,12 @@ static const char *gA2lMemorySegment = "/begin MEMORY_SEGMENT %s \"\" DATA FLASH "/begin PAGE 1 ECU_ACCESS_DONT_CARE XCP_READ_ACCESS_DONT_CARE XCP_WRITE_ACCESS_NOT_ALLOWED /end PAGE\n" "/end SEGMENT\n" "/end IF_DATA\n" - "/end MEMORY_SEGMENT\n"; - -#ifdef XCP_ENABLE_EPK_CALSEG -static const char *gA2lEpkMemorySegment = "/begin MEMORY_SEGMENT epk \"\" DATA FLASH INTERN 0x%08X %u -1 -1 -1 -1 -1\n" - "/begin IF_DATA XCP\n" - "/begin SEGMENT 0 2 0 0 0\n" - // @@@@ TODO: Workaround: EPK segment has 2 readonly pages, CANape would not care for a single page EPK segment, reads active page always - // from segment 0 and uses only SET_CAL_PAGE ALL mode - "/begin CHECKSUM XCP_CRC_16_CITT MAX_BLOCK_SIZE 0xFFFF EXTERNAL_FUNCTION \"\" /end CHECKSUM\n" - "/begin PAGE 0 ECU_ACCESS_DONT_CARE XCP_READ_ACCESS_DONT_CARE XCP_WRITE_ACCESS_NOT_ALLOWED /end PAGE\n" - "/begin PAGE 1 ECU_ACCESS_DONT_CARE XCP_READ_ACCESS_DONT_CARE XCP_WRITE_ACCESS_NOT_ALLOWED /end PAGE\n" - "/end SEGMENT\n" - "/end IF_DATA\n" - "/end MEMORY_SEGMENT\n"; +#ifdef OPTION_CAL_SEGMENTS_ABS + "/begin IF_DATA CANAPE_ADDRESS_UPDATE\n" + "/begin MEMORY_SEGMENT \"%s\" FIRST \"%s\" 0 LAST \"%s\" %u /end MEMORY_SEGMENT\n" + "/end IF_DATA\n" #endif + "/end MEMORY_SEGMENT\n"; #endif @@ -145,7 +145,9 @@ static const char *gA2lIfDataProtocolLayer = // Parameter: XCP_PROTOCOL_LAYER_VE #ifdef XCP_ENABLE_CAL_PAGE "OPTIONAL_CMD GET_CAL_PAGE\n" "OPTIONAL_CMD SET_CAL_PAGE\n" +#ifdef XCP_ENABLE_COPY_CAL_PAGE "OPTIONAL_CMD COPY_CAL_PAGE\n" +#endif #ifdef XCP_ENABLE_CALSEG_LIST "OPTIONAL_CMD GET_PAG_PROCESSOR_INFO\n" "OPTIONAL_CMD GET_SEGMENT_INFO\n" @@ -211,14 +213,14 @@ static const char *gA2lIfDataProtocolLayer = // Parameter: XCP_PROTOCOL_LAYER_VE //---------------------------------------------------------------------------------- static const char *gA2lIfDataBeginDAQ = // Parameter: %u max event, %s timestamp unit "/begin DAQ\n" - "DYNAMIC 0 %u 0 OPTIMISATION_TYPE_DEFAULT ADDRESS_EXTENSION_FREE IDENTIFICATION_FIELD_TYPE_RELATIVE_BYTE GRANULARITY_ODT_ENTRY_SIZE_DAQ_BYTE 0xF8 OVERLOAD_INDICATION_PID\n" - "/begin TIMESTAMP_SUPPORTED\n" - "0x1 SIZE_DWORD %s TIMESTAMP_FIXED\n" - "/end TIMESTAMP_SUPPORTED\n"; + "DYNAMIC 0 %u 0 OPTIMISATION_TYPE_DEFAULT ADDRESS_EXTENSION_FREE IDENTIFICATION_FIELD_TYPE_RELATIVE_BYTE GRANULARITY_ODT_ENTRY_SIZE_DAQ_BYTE 0xF8 OVERLOAD_INDICATION_PID" +#ifdef XCP_ENABLE_DAQ_PRESCALER + " PRESCALER_SUPPORTED" +#endif + "\n/begin TIMESTAMP_SUPPORTED 0x1 SIZE_DWORD %s TIMESTAMP_FIXED /end TIMESTAMP_SUPPORTED\n"; // ... Event list follows, before EndDaq -//---------------------------------------------------------------------------------- static const char *const gA2lIfDataEndDAQ = "/end DAQ\n"; //---------------------------------------------------------------------------------- @@ -424,7 +426,7 @@ static double getTypeMax(tA2lTypeId type) { return max; } -static bool A2lOpen(const char *filename, const char *projectname) { +static bool A2lOpen(const char *filename) { assert(!gA2lFileFinalized); @@ -432,6 +434,9 @@ static bool A2lOpen(const char *filename, const char *projectname) { gA2lTypedefsFile = NULL; gA2lFixedEvent = XCP_UNDEFINED_EVENT_ID; gA2lMeasurements = gA2lParameters = gA2lTypedefs = gA2lInstances = gA2lConversions = gA2lComponents = 0; + if (fexists(filename)) { + DBG_PRINTF_WARNING("A2L filename %s already exists!\n", filename); + } gA2lFile = fopen(filename, "w"); gA2lTypedefsFile = fopen("typedefs.a2l", "w"); gA2lGroupsFile = fopen("groups.a2l", "w"); @@ -443,7 +448,19 @@ static bool A2lOpen(const char *filename, const char *projectname) { } // Create headers - fprintf(gA2lFile, gA2lHeader, projectname, projectname); // main file + fprintf(gA2lFile, gA2lHeader1, XcpGetProjectName(), XcpGetProjectName()); +#ifdef INCLUDE_AML_FILES + // To include multiple AML files, remove the /begin A2ML and /end A2LM in the XCP_104.aml and CANape.aml files and uncomment the following lines + // fprintf(gA2lFile,"/begin A2ML\n" + // "/include \"XCP_104.aml\"\n\n" + // "/include \"CANape.aml\"\n\n" + // "/end A2ML\n"); + fprintf(gA2lFile, "/include \"XCP_104.aml\"\n\n"); +#endif +#ifdef EMBED_AML_FILES + fprintf(gA2lFile, gA2lAml); // main file +#endif + fprintf(gA2lFile, gA2lHeader2); fprintf(gA2lTypedefsFile, "\n/* Typedefs */\n"); // typedefs temporary file fprintf(gA2lGroupsFile, "\n/* Groups */\n"); // groups temporary file @@ -495,29 +512,15 @@ static void A2lCreate_MOD_PAR(void) { const char *epk = XcpGetEpk(); if (epk) { fprintf(gA2lFile, "EPK \"%s\" ADDR_EPK 0x%08X\n", epk, XCP_ADDR_EPK); - - // EPK memory segment is segment 0 -#ifdef XCP_ENABLE_CALSEG_LIST -#ifdef XCP_ENABLE_EPK_CALSEG - fprintf(gA2lFile, gA2lEpkMemorySegment, XCP_ADDR_EPK, strlen(epk)); -#endif -#endif // XCP_ENABLE_CALSEG_LIST } // Memory segments #ifdef XCP_ENABLE_CALSEG_LIST - tXcpCalSegList const *calSegList = XcpGetCalSegList(); + const tXcpCalSegList *calSegList = XcpGetCalSegList(); if (calSegList != NULL && calSegList->count > 0) { for (tXcpCalSegIndex i = 0; i < calSegList->count; i++) { - tXcpCalSeg const *calseg = &calSegList->calseg[i]; - fprintf(gA2lFile, gA2lMemorySegment, calseg->name, XcpGetCalSegBaseAddress(i), calseg->size, -#ifdef XCP_ENABLE_EPK_CALSEG - i + 1 -#else - i -#endif - - ); + const tXcpCalSeg *calseg = &calSegList->calseg[i]; + fprintf(gA2lFile, gA2lMemorySegment, calseg->name, XcpGetCalSegBaseAddress(i), calseg->size, i, calseg->name, calseg->name, calseg->name, calseg->size); } } #endif // XCP_ENABLE_CALSEG_LIST @@ -700,10 +703,13 @@ void A2lSetSegmentAddrMode__i(tXcpCalSegIndex calseg_index, const uint8_t *calse DBG_PRINTF_ERROR("SetSegAddrMode: Calibration segment %u not found!\n", calseg_index); return; } - +#if XCP_ADDR_EXT_SEG == 0x00 A2lSetSegAddrMode(calseg_index, (const uint8_t *)calseg_instance_addr); fprintf(gA2lFile, "\n/* Segment relative addressing mode: calseg=%s */\n", calseg->name); - +#else + A2lSetAbsAddrMode(XCP_UNDEFINED_EVENT_ID); + fprintf(gA2lFile, "\n/* Absolute segment addressing mode: calseg=%s */\n", calseg->name); +#endif if (gA2lAutoGroups) { A2lBeginGroup(calseg->name, "Calibration Segment", true); } @@ -712,24 +718,27 @@ void A2lSetSegmentAddrMode__i(tXcpCalSegIndex calseg_index, const uint8_t *calse // Set segment relative address mode with calibration segment name void A2lSetSegmentAddrMode__s(const char *calseg_name, const uint8_t *calseg_instance_addr) { - - tXcpCalSegIndex calseg_index = XcpFindCalSeg(calseg_name); - if (calseg_index == XCP_UNDEFINED_CALSEG) { - DBG_PRINTF_ERROR("SetSegAddrMode: Calibration segment %s not found!\n", calseg_name); - return; - } - const tXcpCalSeg *calseg = XcpGetCalSeg(calseg_index); - if (calseg == NULL) { - DBG_PRINTF_ERROR("SetSegAddrMode: Calibration segment %u not found!\n", calseg_index); - return; - } - - A2lSetSegAddrMode(calseg_index, (const uint8_t *)calseg_instance_addr); - if (gA2lFile != NULL) + if (gA2lFile != NULL) { + tXcpCalSegIndex calseg_index = XcpFindCalSeg(calseg_name); + if (calseg_index == XCP_UNDEFINED_CALSEG) { + DBG_PRINTF_ERROR("SetSegAddrMode: Calibration segment %s not found!\n", calseg_name); + return; + } + const tXcpCalSeg *calseg = XcpGetCalSeg(calseg_index); + if (calseg == NULL) { + DBG_PRINTF_ERROR("SetSegAddrMode: Calibration segment %u not found!\n", calseg_index); + return; + } +#if XCP_ADDR_EXT_SEG == 0x00 + A2lSetSegAddrMode(calseg_index, (const uint8_t *)calseg_instance_addr); fprintf(gA2lFile, "\n/* Segment relative addressing mode: calseg=%s */\n", calseg->name); - - if (gA2lAutoGroups) { - A2lBeginGroup(calseg->name, "Calibration Segment", true); +#else + A2lSetAbsAddrMode(XCP_UNDEFINED_EVENT_ID); + fprintf(gA2lFile, "\n/* Absolute segment addressing mode: calseg=%s */\n", calseg->name); +#endif + if (gA2lAutoGroups) { + A2lBeginGroup(calseg->name, "Calibration Segment", true); + } } } @@ -816,7 +825,6 @@ void A2lSetAbsoluteAddrMode__i(tXcpEventId event_id) { } } } - #endif //---------------------------------------------------------------------------------- @@ -1466,15 +1474,15 @@ bool A2lFinalize(void) { DBG_PRINTF3("A2L created: %u measurements, %u params, %u typedefs, %u components, %u instances, %u conversions\n", gA2lMeasurements, gA2lParameters, gA2lTypedefs, gA2lComponents, gA2lInstances, gA2lConversions); - // Write the binary persistence file if calsegment list and DAQ event list are enabled + // Write the binary persistence file + // This is required to make sure the A2L file remains valid, even if the creation order of event or calibration segment is different #ifdef OPTION_CAL_PERSISTENCE if (!gA2lWriteAlways) - XcpBinWrite(gBinFilename); + XcpBinWrite(XCP_CALPAGE_WORKING_PAGE); #endif // Notify XCP that there is an A2L file available for upload by the XCP client - ApplXcpSetA2lName(gA2lFilename); - + XcpSetA2lName(gA2lFilename); return true; // A2L file generation successful } @@ -1497,14 +1505,13 @@ void A2lUnlock(void) { } // Open the A2L file and register the finalize callback -bool A2lInit(const char *a2l_projectname, const char *a2l_version, const uint8_t *addr, uint16_t port, bool useTCP, uint8_t mode) { +bool A2lInit(const uint8_t *addr, uint16_t port, bool useTCP, uint8_t mode) { - assert(a2l_projectname != NULL); assert(addr != NULL); // Check and ignore, if the XCP singleton has not been initialized and activated if (!XcpIsActivated()) { - DBG_PRINT3("A2lInit: XCP not initialized and activated!\n"); + DBG_PRINT3("A2lInit: XCP is deactivated!\n"); return true; } @@ -1514,51 +1521,32 @@ bool A2lInit(const char *a2l_projectname, const char *a2l_version, const uint8_t gA2lUseTCP = useTCP; // Save mode - gA2lWriteAlways = mode & A2L_MODE_WRITE_ALWAYS; + gA2lWriteAlways = !!(mode & A2L_MODE_WRITE_ALWAYS); #ifndef OPTION_CAL_PERSISTENCE assert(gA2lWriteAlways); #endif - gA2lAutoGroups = mode & A2L_MODE_AUTO_GROUPS; - gA2lFinalizeOnConnect = mode & A2L_MODE_FINALIZE_ON_CONNECT; + gA2lAutoGroups = !!(mode & A2L_MODE_AUTO_GROUPS); + gA2lFinalizeOnConnect = !!(mode & A2L_MODE_FINALIZE_ON_CONNECT); mutexInit(&gA2lMutex, false, 0); - // EPK generation if not provided - // Set the EPK (software version number) for the A2L file - char epk[64]; - if (a2l_version == NULL) { - SNPRINTF(epk, sizeof(epk), "_%s_%s", __DATE__, __TIME__); - } else { - SNPRINTF(epk, sizeof(epk), "_%s", a2l_version); + // Build A2L filename from project name and EPK + // If A2l file is generated only once for a new build, the EPK is appended to the filename + SNPRINTF(gA2lFilename, sizeof(gA2lFilename), "%s_%s.a2l", XcpGetProjectName(), gA2lWriteAlways ? "" : XcpGetEpk()); + + // Check if the A2L file already exists and the persistence BIN file has been loaded and checked + // If yes, skip generation if not write always + if (!gA2lWriteAlways && (XcpGetSessionStatus() & SS_PERSISTENCE_LOADED) && fexists(gA2lFilename)) { + // Notify XCP that there is an A2L file available for upload by the XCP client + XcpSetA2lName(gA2lFilename); + DBG_PRINTF3("A2L file %s already exists, disable A2L generation\n", gA2lFilename); + return true; } - XcpSetEpk(epk); - // Build filenames - // If A2l file is build once for a new build, the EPK is appended to the filename - const char *epk_suffix = gA2lWriteAlways ? "" : XcpGetEpk(); - SNPRINTF(gA2lFilename, sizeof(gA2lFilename), "%s%s.a2l", a2l_projectname, epk_suffix); DBG_PRINTF3("Start A2L generator, file=%s, write_always=%u, finalize_on_connect=%u, auto_groups=%u\n", gA2lFilename, gA2lWriteAlways, gA2lFinalizeOnConnect, gA2lAutoGroups); -// Check if the BIN file and the A2L exists and load the binary file -#ifdef OPTION_CAL_PERSISTENCE - SNPRINTF(gBinFilename, sizeof(gBinFilename), "%s%s.bin", a2l_projectname, epk_suffix); - if (!gA2lWriteAlways) { - - if (fexists(gA2lFilename)) { - if (XcpBinLoad(gBinFilename, XcpGetEpk())) { - DBG_PRINTF3("Loaded binary file %s, A2L generation has been disabled\n", gBinFilename); - - // Notify XCP that there is an A2L file available for upload by the XCP client - ApplXcpSetA2lName(gA2lFilename); - - return true; // Do not generate A2L, but still provide the existing file, if binary file exists - } - } - } -#endif - // Open A2L file for generation - if (!A2lOpen(gA2lFilename, a2l_projectname)) { + if (!A2lOpen(gA2lFilename)) { printf("Failed to open A2L file %s\n", gA2lFilename); return false; } @@ -1568,3 +1556,5 @@ bool A2lInit(const char *a2l_projectname, const char *a2l_version, const uint8_t return true; } + +#endif // XCP_ENABLE_A2L_GENERATOR diff --git a/src/dbg_print.h b/src/dbg_print.h index 901d6ba9..c68a3cd1 100644 --- a/src/dbg_print.h +++ b/src/dbg_print.h @@ -31,8 +31,8 @@ #ifdef OPTION_FIXED_DBG_LEVEL #define DBG_LEVEL OPTION_FIXED_DBG_LEVEL #else -extern uint8_t gDebugLevel; -#define DBG_LEVEL gDebugLevel +extern uint8_t gXcpDebugLevel; +#define DBG_LEVEL gXcpDebugLevel #endif #define DBG_PRINTF(format, ...) printf(format, __VA_ARGS__) diff --git a/src/main_cfg.h b/src/main_cfg.h index e6f6dd9a..856308f4 100644 --- a/src/main_cfg.h +++ b/src/main_cfg.h @@ -7,106 +7,112 @@ | | Description: | General configuration and build options for XCPlite / xcplib -|| +| ----------------------------------------------------------------------------*/ +/* + More specific XCP configuration is in xcp_cfg.h (Protocol Layer) and xcptl_cfg.h (Transport Layer)) + The values for XCP_xxx and XCPTL_xxx define constants (in xcp_cfg.h and xcptl_cfg.h) may depend on options +*/ + // Version #define OPTION_VERSION_MAJOR 0 #define OPTION_VERSION_MINOR 9 #define OPTION_VERSION_PATCH 3 -/* +//------------------------------------------------------------------------------- +// Logging - A #define OPTION_xxx may be a higher abstraction level configuration set - More specific XCP configuration is in xcp_cfg.h (Protocol Layer) and xcptl_cfg.h (Transport Layer)) - The default values for XCP_xxx and XCPTL_xxx defines (in xcp_cfg.h and xcptl_cfg.h) may depend on options +// Enable debug prints +#define OPTION_ENABLE_DBG_PRINTS +// Enable debug print errors and warnings go to stderr +#define OPTION_ENABLE_DBG_STDERR +// Default log level: 1 - Error, 2 - Warn, 3 - Info, 4 - Trace, 5 - Debug +// Use level 4 print all XCP commands +#define OPTION_DEFAULT_DBG_LEVEL 3 +// Optimize code size, only errors and warnings enabled, other levels optimized out +// #define OPTION_FIXED_DBG_LEVEL 2 +//------------------------------------------------------------------------------- +// Clock - XCP library build options: +// Epoch options (only one must be defined) +#define OPTION_CLOCK_EPOCH_ARB // Arbitrary epoch -> uses CLOCK_MONOTONIC_RAW +// #define OPTION_CLOCK_EPOCH_PTP // Precision Time Protocol epoch -> uses CLOCK_REALTIME - // Logging - #define OPTION_ENABLE_DBG_PRINTS Enable debug prints - #define OPTION_ENABLE_DBG_STDERR Enable debug print errors and warnings go to stderr - #define OPTION_DEFAULT_DBG_LEVEL x Default log level: 1 - Error, 2 - Warn, 3 - Info, 4 - Trace, 5 - Debug - #define OPTION_FIXED_DBG_LEVEL x Fixed log level to optimize code size +// Resolution 1ns or 1us, granularity depends on platform (only one must be defined) +#define OPTION_CLOCK_TICKS_1NS +// #define OPTION_CLOCK_TICKS_1US - // Clock - #define OPTION_CLOCK_EPOCH_ARB Arbitrary epoch or since 1.1.1970 - #define OPTION_CLOCK_EPOCH_PTP - #define OPTION_CLOCK_TICKS_1NS Resolution 1ns or 1us, granularity depends on platform - #define OPTION_CLOCK_TICKS_1US +//------------------------------------------------------------------------------- +// XCP server options - // XCP server settings - #define OPTION_ENABLE_TCP - #define OPTION_ENABLE_UDP - #define OPTION_MTU x Ethernet MTU, must be %8 - #define OPTION_SERVER_FORCEFULL_TERMINATION Terminate the server threads instead of waiting for the tasks to finish +#define OPTION_ENABLE_TCP +#define OPTION_ENABLE_UDP +#define OPTION_MTU 8000 // Ethernet packet size (MTU), must be %8 - Jumbo frames supported +#define OPTION_SERVER_FORCEFULL_TERMINATION // Don't wait for the rx and tx thread to finish, just terminate them - // DAQ settings - #define OPTION_DAQ_MEM_SIZE x Size of memory for DAQ setup in bytes (integer value, 6 bytes per signal needed) - #define OPTION_DAQ_EVENT_COUNT x Maximum number of DAQ events (integer value, must be even) +//------------------------------------------------------------------------------- +// CAL setting - // CAL settings - #define OPTION_CAL_SEGMENTS Enable calibration segment management (otherwise callbacks are used for calibration segment commands) - #define OPTION_CAL_SEGMENT_COUNT x Maximum number of calibration segments - #define OPTION_CAL_PERSISTENCE Enable calibration segment persistence, BIN file is used to store calibration segments, A2L maybe generated only once per build - #define OPTION_CAL_SEGMENT_EPK Enable EPK calibration segment to detect HEX file incompatibility +#ifndef XCPLIB_FOR_RUST // Disable for Rust, the Rust wrapper for XCPlite currently has its own calibration segment management and uses the callbacks in xcpAppl.c - // A2L generation settings - #define OPTION_ENABLE_A2L_UPLOAD Enable A2L upload through XCP - #define OPTION_ENABLE_GET_LOCAL_ADDR Determine an existing IP address for A2L file, if bound to ANY +// Enable calibration segment management +// (otherwise the callbacks in xcpAppl.c are used for calibration segment commands and memory read/write) +#define OPTION_CAL_SEGMENTS -*/ +// Maximum number of calibration segments +#define OPTION_CAL_SEGMENT_COUNT 4 -// Logging -#define OPTION_ENABLE_DBG_PRINTS -#define OPTION_ENABLE_DBG_STDERR -#define OPTION_DEFAULT_DBG_LEVEL 3 // User adjustable log level, default 3 -// #define OPTION_FIXED_DBG_LEVEL 2 // Optimize code size, only errors and warnings enabled, other levels optimized out +// Enable calibration segment persistence, a binary (.BIN) file is used to store calibration segments +// This allows to safely build the A2L file only once per build, even if the creation order of events and segments changes +#define OPTION_CAL_PERSISTENCE -// Clock -#define OPTION_CLOCK_EPOCH_ARB // -> use CLOCK_MONOTONIC_RAW -// #define OPTION_CLOCK_EPOCH_PTP // -> use CLOCK_REALTIME -// #define OPTION_CLOCK_TICKS_1US -#define OPTION_CLOCK_TICKS_1NS +// Enable EPK calibration segment to check HEX/BIN file compatibility +// If the EPK is included in the HEX/BIN file, the version of the data structure can be checked using the EPK address specified in the A2L file +#define OPTION_CAL_SEGMENT_EPK -// XCP server options -#define OPTION_ENABLE_TCP -#define OPTION_ENABLE_UDP -#define OPTION_MTU 8000 // Ethernet packet size (MTU) - Jumbo frames supported -#define OPTION_SERVER_FORCEFULL_TERMINATION // Don't wait for the rx and tx thread to finish, just terminate them +// Enable absolute addressing for calibration segments +// Default is segment relative addressing, uses address extension 0 for segment relative and 1 for absolute and encodes the segment number in the address high word +// As this is not compatible to most well known tools to update, modify and create A2L files, this option switches to absolute addressing on address extension 0 +// Requirement is, that the address of all reference pages must be stable and in address range of 0x0000_0000 to 0xFFFF_FFFF +// #define OPTION_CAL_SEGMENTS_ABS -#ifndef XCPLIB_FOR_RUST // Set by the rust build script +// Enable persistency (freeze) to reference page or to working page on next application restart +// This decides which pages (reference/FLASH or working/RAM) are stored to the calibration segment binary file (.BIN) on XCP freeze request +// #define OPTION_CAL_REFERENCE_PAGE_PERSISTENCY -// CAL -#define OPTION_CAL_SEGMENTS // Enable calibration segment management -#define OPTION_CAL_SEGMENT_COUNT 4 // Maximum number of calibration segments -#define OPTION_CAL_PERSISTENCE // Enable calibration segment persistence, BIN file is used to store calibration segments, A2L maybe generated only once per build -// #define OPTION_CAL_SEGMENT_EPK // Enable EPK calibration segment to detect HEX file incompatibility +// Start on reference/default page or on working page +#define OPTION_CAL_SEGMENT_START_ON_REFERENCE_PAGE -// DAQ -#define OPTION_DAQ_MEM_SIZE (1000 * 6) // Memory bytes used for XCP DAQ tables - max 6 bytes per measurement signal needed -#define OPTION_DAQ_EVENT_COUNT 32 // Maximum number of DAQ events (integer value, must be even) +// Automatically persist the working page on XCP disconnect +// #define OPTION_CAL_PERSIST_ON_DISCONNECT -#else +#endif -#define OPTION_DAQ_MEM_SIZE (10000 * 6) // Memory bytes used for XCP DAQ tables - max 6 bytes per measurement signal needed -#define OPTION_DAQ_EVENT_COUNT 256 // Maximum number of DAQ events (integer value, must be even) +//------------------------------------------------------------------------------- +// DAQ settings -#endif +#define OPTION_DAQ_MEM_SIZE (1024 * 8) // Memory bytes used for XCP DAQ tables - 6 bytes per measurement signal/block needed +#define OPTION_DAQ_EVENT_COUNT 256 // Maximum number of DAQ events (integer value, must be even) +#define OPTION_DAQ_ASYNC_EVENT // Create an asynchronous, cyclic DAQ event for asynchronous data acquisition + +//------------------------------------------------------------------------------- +// A2L generation settings -// A2L -#define OPTION_ENABLE_A2L_UPLOAD // Enable A2L upload via XCP +#define OPTION_ENABLE_A2L_GENERATOR // Enable A2L generator +#define OPTION_ENABLE_A2L_UPLOAD // Enable A2L upload via XCP // Enable socketGetLocalAddr and XcpEthTlGetInfo // Used for convenience to get an existing ip address in A2L, when bound to ANY 0.0.0.0 #define OPTION_ENABLE_GET_LOCAL_ADDR //------------------------------------------------------------------------------- +// Miscellaneous options // Enable atomic emulation for platforms without stdatomic.h -// This is used on Windows and automatically set in platform.hin this case +// This is used on Windows and automatically set in platform.h in this case // Switches to 32 bit transmit queue implementation // Not designed for non x86 platforms, needs strong memory ordering -// Explicit define used for testing only +// Used for testing on Windows // #define OPTION_ATOMIC_EMULATION diff --git a/src/persistency.c b/src/persistency.c index fa7d537a..44a98ba3 100644 --- a/src/persistency.c +++ b/src/persistency.c @@ -35,53 +35,95 @@ #error "XCP_ENABLE_DAQ_EVENT_LIST and XCP_ENABLE_CALSEG_LIST must be enabled for calibration segment persistency" #endif -#define BIN_SIGNATURE "XCPlite__BINARY" -#define BIN_VERSION 0x0100 +#define BIN_SIGNATURE "XCPLITE__BINARY" +#define BIN_VERSION 0x0203 + #pragma pack(push, 1) typedef struct { - char signature[16]; // File signature "XCPlite__BINARY" - uint16_t version; // File version, currently 0x0100 - char Epk[XCP_EPK_MAX_LENGTH + 1]; // EPK string, 0 terminated, 32 bytes - uint16_t event_count; // Number of events tEventDescriptor - uint16_t calseg_count; - uint32_t res; + char signature[16]; // File signature "XCPLITE__BINARY" + uint16_t version; // File version, currently 0x0100 + uint16_t event_count; // Number of events, tEventDescriptor + uint16_t calseg_count; // Number of calibration segments, tCalSegDescriptor + uint8_t reserved[128]; // Reserved for future use + char Epk[XCP_EPK_MAX_LENGTH + 1]; // EPK string, 0 terminated + uint8_t padding[256 - 16 - 2 - 2 - 2 - 128 - XCP_EPK_MAX_LENGTH - 1]; // Reserved for longer EPK strings } tHeader; +static_assert(sizeof(tHeader) == 256, "Size of tHeader must be 256 bytes"); + typedef struct { - char name[XCP_MAX_EVENT_NAME + 1]; // event name, 0 terminated, 16 bytes - uint16_t id; - uint16_t index; - uint32_t cycleTimeNs; // cycle time in ns - uint8_t priority; // priority 0 = queued, 1 = pushing, 2 = realtime - uint8_t res[3]; // reserved, 3 bytes + uint16_t id; // Event ID + uint16_t index; // Event index + uint32_t cycleTimeNs; // Cycle time in ns + uint8_t priority; // Priority 0 = queued, 1 = pushing, 2 = realtime + uint8_t reserved[128]; // Reserved for future use + char name[XCP_MAX_EVENT_NAME + 1]; // Event name, 0 terminated + uint8_t padding[256 - 2 - 2 - 4 - 1 - 128 - XCP_MAX_EVENT_NAME - 1]; // Reserved for longer event names } tEventDescriptor; +static_assert(sizeof(tEventDescriptor) == 256, "Size of tEventDescriptor must be 256 bytes"); + typedef struct { - char name[XCP_MAX_CALSEG_NAME + 1]; // calibration segment name, 0 terminated, 16 bytes - uint16_t size; // size of the calibration segment in bytes, multiple of 4 - uint16_t index; // index of the calibration segment in the list, 0.. 0) + return; // Already built + const char *project_name = XcpGetProjectName(); + assert(project_name != NULL); + const char *epk = XcpGetEpk(); + assert(epk != NULL); + SNPRINTF(gXcpBinFilename, XCP_BIN_FILENAME_MAX_LENGTH, "%s_%s.bin", project_name, epk); +} + +// Print the content of a calibration segment page for debugging +#ifdef OPTION_ENABLE_DBG_PRINTS +static void printCalsegPage(const uint8_t *page, uint16_t size) { + for (uint16_t i = 0; i < size; i++) { + printf("%02X ", page[i]); + if ((i + 1) % 16 == 0) { + printf("\n"); + } + } + if (size % 16 != 0) { + printf("\n"); + } +} +#endif +// Write the BIN file header static bool writeHeader(FILE *file, const char *epk, uint16_t event_count, uint16_t calseg_count) { - strncpy(gHeader.signature, BIN_SIGNATURE, sizeof(gHeader.signature) - 1); - gHeader.signature[sizeof(gHeader.signature) - 1] = '\0'; // Ensure null termination - gHeader.version = BIN_VERSION; - strncpy(gHeader.Epk, epk, XCP_EPK_MAX_LENGTH); - gHeader.Epk[XCP_EPK_MAX_LENGTH] = '\0'; // Ensure null termination - gHeader.event_count = event_count; - gHeader.calseg_count = calseg_count; - gHeader.res = 0; - size_t written = fwrite(&gHeader, sizeof(tHeader), 1, file); + memset(&gBinHeader, 0, sizeof(tHeader)); + strncpy(gBinHeader.signature, BIN_SIGNATURE, sizeof(gBinHeader.signature) - 1); + gBinHeader.signature[sizeof(gBinHeader.signature) - 1] = '\0'; // Ensure null termination + gBinHeader.version = BIN_VERSION; + strncpy(gBinHeader.Epk, epk, XCP_EPK_MAX_LENGTH); + gBinHeader.Epk[XCP_EPK_MAX_LENGTH] = '\0'; // Ensure null termination + gBinHeader.event_count = event_count; + gBinHeader.calseg_count = calseg_count; + size_t written = fwrite(&gBinHeader, sizeof(tHeader), 1, file); if (written != 1) { DBG_PRINTF3("Failed to write header to file: %s\n", strerror(errno)); return false; @@ -89,18 +131,16 @@ static bool writeHeader(FILE *file, const char *epk, uint16_t event_count, uint1 return true; } +// Write an event descriptor to the BIN file static bool writeEvent(FILE *file, tXcpEventId event_id, const tXcpEvent *event) { tEventDescriptor desc; + memset(&desc, 0, sizeof(tEventDescriptor)); strncpy(desc.name, event->name, XCP_MAX_EVENT_NAME); desc.name[XCP_MAX_EVENT_NAME] = '\0'; // Ensure null termination desc.cycleTimeNs = event->cycleTimeNs; desc.priority = event->priority; desc.id = event_id; desc.index = XcpGetEventIndex(event_id); - desc.res[0] = 0xEE; - desc.res[1] = 0xEE; - desc.res[2] = 0xEE; - size_t written = fwrite(&desc, sizeof(tEventDescriptor), 1, file); if (written != 1) { DBG_PRINTF3("Failed to write event descriptor to file: %s\n", strerror(errno)); @@ -110,21 +150,28 @@ static bool writeEvent(FILE *file, tXcpEventId event_id, const tXcpEvent *event) return true; } -static bool writeCalseg(FILE *file, tXcpCalSegIndex calseg, tXcpCalSeg *seg) { +// Write a calibration segment descriptor and page data to the BIN file +static bool writeCalseg(FILE *file, tXcpCalSegIndex calseg, tXcpCalSeg *seg, uint8_t page) { tCalSegDescriptor desc; + memset(&desc, 0, sizeof(tCalSegDescriptor)); strncpy(desc.name, seg->name, XCP_MAX_CALSEG_NAME); desc.name[XCP_MAX_CALSEG_NAME] = '\0'; // Ensure null termination desc.size = seg->size; + desc.addr = XcpGetCalSegBaseAddress(calseg); desc.index = calseg; - *(uint32_t *)&desc.res[0] = 0xDDDDDDDD; - size_t written = fwrite(&desc, sizeof(tCalSegDescriptor), 1, file); if (written != 1) { DBG_PRINTF3("Failed to write calibration segment descriptor to file: %s\n", strerror(errno)); return false; } seg->file_pos = (uint32_t)ftell(file); // Save the position of the segment page data in the file - written = fwrite(seg->ecu_page, seg->size, 1, file); +#ifdef OPTION_ENABLE_DBG_PRINTS + DBG_PRINTF4("Writing calibration segment %u, size=%u %s page data:\n", calseg, seg->size, page == XCP_CALPAGE_DEFAULT_PAGE ? "default" : "working"); + if (DBG_LEVEL >= 4) + printCalsegPage(page == XCP_CALPAGE_DEFAULT_PAGE ? seg->default_page : seg->ecu_page, seg->size); +#endif + // This is safe, because XCP is not connected + written = fwrite(page == XCP_CALPAGE_DEFAULT_PAGE ? seg->default_page : seg->ecu_page, seg->size, 1, file); if (written != 1) { DBG_PRINTF3("Failed to write calibration segment data to file: %s\n", strerror(errno)); return false; @@ -137,18 +184,25 @@ static bool writeCalseg(FILE *file, tXcpCalSegIndex calseg, tXcpCalSeg *seg) { /// Write the binary persistency file. /// This function writes the current state of the XCP events and calibration segments to a binary file. /// It creates a file with the specified filename and writes the header, events, and calibration segments. +/// The tool must not be connected at that time /// @param filename The name of the file to write. /// @return /// Returns true if the file was successfully written, false otherwise. -bool XcpBinWrite(const char *filename) { - assert(filename != NULL); +bool XcpBinWrite(uint8_t page) { - FILE *file = fopen(filename, "wb"); - if (file == NULL) { - DBG_PRINTF3("Failed to open file for writing: %s\n", strerror(errno)); + buildBinFilename(); + + if (XcpIsConnected() && page == XCP_CALPAGE_WORKING_PAGE) { + DBG_PRINT_ERROR("Cannot write persistency file while XCP is connected\n"); return false; } + // Open file for writing + FILE *file = fopen(gXcpBinFilename, "wb"); + if (file == NULL) { + DBG_PRINTF3("Failed to open file %s for writing: %s\n", gXcpBinFilename, strerror(errno)); + return false; + } if (!writeHeader(file, XcpGetEpk(), gXcp.EventList.count, gXcp.CalSegList.count)) { fclose(file); return false; @@ -167,16 +221,15 @@ bool XcpBinWrite(const char *filename) { for (tXcpCalSegIndex i = 0; i < gXcp.CalSegList.count; i++) { tXcpCalSeg *seg = XcpGetCalSeg(i); assert(seg != NULL); - if (!writeCalseg(file, i, seg)) { + if (!writeCalseg(file, i, seg, page)) { fclose(file); return false; } } fclose(file); - gBinFilename = filename; - DBG_PRINTF3("Persistency data written to file '%s'\n", filename); + DBG_PRINTF3("Persistency data written to file '%s'\n", gXcpBinFilename); return true; } @@ -195,9 +248,15 @@ bool XcpBinFreezeCalSeg(tXcpCalSegIndex calseg) { return false; } - FILE *file = fopen(gBinFilename, "r+b"); + buildBinFilename(); + FILE *file = fopen(gXcpBinFilename, "r+b"); if (file == NULL) { - DBG_PRINTF_ERROR("Failed to open file '%s' for read/write: %s\n", gBinFilename, strerror(errno)); + // If the file does not exist yet, create a new initial one with default page data + XcpBinWrite(XCP_CALPAGE_DEFAULT_PAGE); + file = fopen(gXcpBinFilename, "r+b"); + } + if (file == NULL) { + DBG_PRINTF_ERROR("Failed to open file '%s' for read/write: %s\n", gXcpBinFilename, strerror(errno)); return false; } @@ -205,14 +264,18 @@ bool XcpBinFreezeCalSeg(tXcpCalSegIndex calseg) { assert(seg->file_pos > 0); // Ensure the file position is set size_t n = 0; if (0 == fseek(file, seg->file_pos, SEEK_SET)) { - printf("Writing calibration segment %u, size=%u active page data to file '%s'+%u\n", calseg, seg->size, gBinFilename, seg->file_pos); const uint8_t *ecu_page = XcpLockCalSeg(calseg); +#ifdef OPTION_ENABLE_DBG_PRINTS + DBG_PRINTF4("Freezing calibration segment %u, size=%u active page data to file '%s'+%u\n", calseg, seg->size, gXcpBinFilename, seg->file_pos); + if (DBG_LEVEL >= 4) + printCalsegPage(ecu_page, seg->size); +#endif n = fwrite(ecu_page, seg->size, 1, file); XcpUnlockCalSeg(calseg); } fclose(file); if (n != 1) { - DBG_PRINTF_ERROR("Failed to write calibration segment %u, size=%u active page data to file '%s'+%u\n", calseg, seg->size, gBinFilename, seg->file_pos); + DBG_PRINTF_ERROR("Failed to write calibration segment %u, size=%u active page data to file '%s'+%u\n", calseg, seg->size, gXcpBinFilename, seg->file_pos); return false; } else { return true; @@ -221,74 +284,115 @@ bool XcpBinFreezeCalSeg(tXcpCalSegIndex calseg) { //-------------------------------------------------------------------------------------------------------------------------------- -/// Load the binary persistency file. -/// This function reads the binary file containing calibration segment descriptors and data and event descriptors -/// It verifies the file signature and EPK, and creates the events and calibration segments -/// @return -/// If the file is successfully loaded, it returns true. -/// If the file does not exist, has an invalid format, or the EPK does not match, it returns false. -bool XcpBinLoad(const char *filename, const char *epk) { +// Load the binary persistency file. +// @param filename The pathname of the file (with extension) to read +// @param epk The expected EPK string for verification +// @return +// If the file is successfully loaded, it returns true. +// Returns false, if the file does not exist, has an invalid format, the EPK does not match or any other reason +static bool load(const char *filename, const char *epk) { assert(filename != NULL); - gBinFilename = NULL; - FILE *file = fopen(filename, "rb"); if (file == NULL) { - DBG_PRINTF3("File '%s' does not exist\n", filename); + DBG_PRINTF3("File '%s' does not exist, starting with default calibration parameters\n", filename); return false; } - size_t read = fread(&gHeader, sizeof(tHeader), 1, file); - if (read != 1 || strncmp(gHeader.signature, BIN_SIGNATURE, sizeof(gHeader.signature)) != 0) { - DBG_PRINTF3("Invalid file format or signature in '%s'\n", filename); + // Read and verify header + size_t read = fread(&gBinHeader, sizeof(tHeader), 1, file); + if (read != 1 || strncmp(gBinHeader.signature, BIN_SIGNATURE, sizeof(gBinHeader.signature)) != 0) { + DBG_PRINTF_ERROR("Invalid file format or signature in '%s'\n", filename); + fclose(file); + return false; + } + if (gBinHeader.version != BIN_VERSION) { + DBG_PRINTF_ERROR("Unsupported BIN file version 0x%04X in '%s'\n", gBinHeader.version, filename); fclose(file); return false; } // Check EPK match - if (strncmp(gHeader.Epk, epk, XCP_EPK_MAX_LENGTH) != 0) { - DBG_PRINTF_WARNING("Persistence file '%s' not loaded, EPK mismatch: file EPK '%s', current EPK '%s'\n", filename, gHeader.Epk, epk); + if (strncmp(gBinHeader.Epk, epk, XCP_EPK_MAX_LENGTH) != 0) { + DBG_PRINTF_WARNING("Persistence file '%s' not loaded, EPK mismatch: file EPK '%s', current EPK '%s'\n", filename, gBinHeader.Epk, epk); fclose(file); return false; // EPK mismatch } DBG_PRINTF3("Loading '%s', EPK '%s'\n", filename, epk); - gBinFilename = filename; // Load events - for (uint16_t i = 0; i < gHeader.event_count; i++) { + // Event list must be empty at this point + if (gXcp.EventList.count != 0) { + DBG_PRINT_ERROR("Event list not empty prior to loading persistency file\n"); + fclose(file); + return false; + } + for (uint16_t i = 0; i < gBinHeader.event_count; i++) { tEventDescriptor desc; + tXcpEventId event_id; + + // Read event descriptor read = fread(&desc, sizeof(tEventDescriptor), 1, file); if (read != 1) { - DBG_PRINTF3("Failed to read event descriptor from file: %s\n", strerror(errno)); + DBG_PRINTF_ERROR("Failed to read event descriptor from file: %s\n", strerror(errno)); fclose(file); return false; } - tXcpEventId event_id = XcpCreateIndexedEvent(desc.name, desc.index, desc.cycleTimeNs, desc.priority); - assert(event_id == desc.id); // Ensure the event ID matches the descriptor ID - (void)event_id; + // Create the event + // As it is created in the original order, the event ID must match + event_id = XcpCreateIndexedEvent(desc.name, desc.index, desc.cycleTimeNs, desc.priority); + if (event_id == XCP_UNDEFINED_EVENT_ID || event_id != desc.id) { // Should not happen + DBG_PRINTF_ERROR("Failed to create event '%s' from persistency file\n", desc.name); + fclose(file); + return false; + } } // Load calibration segments - for (uint16_t i = 0; i < gHeader.calseg_count; i++) { + // Calibration segment list must be empty at this point + if (gXcp.CalSegList.count != 0) { + DBG_PRINT_ERROR("Calibration segment list not empty prior to loading persistency file\n"); + fclose(file); + return false; + } + for (uint16_t i = 0; i < gBinHeader.calseg_count; i++) { + tXcpCalSegIndex calseg; + tCalSegDescriptor desc; read = fread(&desc, sizeof(tCalSegDescriptor), 1, file); if (read != 1) { - DBG_PRINTF3("Failed to read calibration segment descriptor from file: %s\n", strerror(errno)); + DBG_PRINTF_ERROR("Failed to read calibration segment descriptor from file: %s\n", strerror(errno)); fclose(file); return false; } - void *default_page = malloc(desc.size); - read = fread(default_page, desc.size, 1, file); + // Read calibration segment page data + // Allocate memory for persisted page from heap + void *page = malloc(desc.size); + read = fread(page, desc.size, 1, file); if (read != 1) { - DBG_PRINTF3("Failed to read calibration segment data from file: %s\n", strerror(errno)); - free(default_page); + DBG_PRINTF_ERROR("Failed to read calibration segment data from file: %s\n", strerror(errno)); + free(page); + fclose(file); + return false; + } +#ifdef OPTION_ENABLE_DBG_PRINTS + DBG_PRINTF4("Reading calibration segment %u, size=%u:\n", i, desc.size); + if (DBG_LEVEL >= 4) + printCalsegPage(page, desc.size); +#endif + + // The persisted data will become the preliminary reference page + // Providing a heap allocated default page may not work for absolute segment addressing mode in reference page persistency mode + // In working page persistency mode, the default page will be moved to working page in the later XcpCreateCalSeg called by the user, otherwise fail + calseg = XcpCreateCalSeg(desc.name, page, desc.size); + if (calseg != desc.index) { + DBG_PRINT_ERROR("Failed to create calibration segment\n"); + free(page); fclose(file); return false; } - tXcpCalSegIndex calseg = XcpCreateCalSeg(desc.name, default_page, desc.size); - assert(calseg == desc.index); // Mark the segment as pre initialized tXcpCalSeg *seg = XcpGetCalSeg(calseg); @@ -299,4 +403,24 @@ bool XcpBinLoad(const char *filename, const char *epk) { return true; } +// Load the binary persistency file. +// This function reads the binary file containing calibration segment descriptors and data and event descriptors +// It verifies the file signature and EPK, and creates the events and calibration segments +// This must be done early, before any event or segments are created +// @return +// If the file is successfully loaded, it returns true. +// Returns false, if the file does not exist, has an invalid format, the EPK does not match or any other reason + +bool XcpBinLoad(void) { + + buildBinFilename(); + const char *epk = XcpGetEpk(); + assert(epk != NULL); + if (load(gXcpBinFilename, epk)) { + DBG_PRINTF3("Loaded binary file %s\n", gXcpBinFilename); + return true; + } + return false; +} + #endif // OPTION_CAL_PERSISTENCE diff --git a/src/persistency.h b/src/persistency.h index a982e81e..1387607d 100644 --- a/src/persistency.h +++ b/src/persistency.h @@ -25,8 +25,8 @@ extern "C" { #endif -bool XcpBinWrite(const char *filename); -bool XcpBinLoad(const char *filename, const char *epk); +bool XcpBinWrite(uint8_t page); +bool XcpBinLoad(void); bool XcpBinFreezeCalSeg(tXcpCalSegIndex calseg); #ifdef __cplusplus diff --git a/src/platform.c b/src/platform.c index 0f18c86b..4e3c6187 100644 --- a/src/platform.c +++ b/src/platform.c @@ -357,12 +357,12 @@ static bool GetMAC(char *ifname, uint8_t *mac) { } bool socketGetLocalAddr(uint8_t *mac, uint8_t *addr) { - static uint32_t addr1 = 0; - static uint8_t mac1[6] = {0, 0, 0, 0, 0, 0}; + static uint32_t __addr1 = 0; + static uint8_t __mac1[6] = {0, 0, 0, 0, 0, 0}; #ifdef DBG_LEVEL char strbuf[64]; #endif - if (addr1 == 0) { + if (__addr1 == 0) { struct ifaddrs *ifaddrs, *ifa; struct ifaddrs *ifa1 = NULL; if (-1 != getifaddrs(&ifaddrs)) { @@ -370,33 +370,33 @@ bool socketGetLocalAddr(uint8_t *mac, uint8_t *addr) { if ((NULL != ifa->ifa_addr) && (AF_INET == ifa->ifa_addr->sa_family)) { // IPV4 struct sockaddr_in *sa = (struct sockaddr_in *)(ifa->ifa_addr); if (0x100007f != sa->sin_addr.s_addr) { /* not 127.0.0.1 */ - if (addr1 == 0) { - addr1 = sa->sin_addr.s_addr; + if (__addr1 == 0) { + __addr1 = sa->sin_addr.s_addr; ifa1 = ifa; break; } } } } - if (addr1 != 0 && ifa1 != NULL) { - GetMAC(ifa1->ifa_name, mac1); + if (__addr1 != 0 && ifa1 != NULL) { + GetMAC(ifa1->ifa_name, __mac1); #ifdef DBG_LEVEL if (DBG_LEVEL >= 5) { - inet_ntop(AF_INET, &addr1, strbuf, sizeof(strbuf)); + inet_ntop(AF_INET, &__addr1, strbuf, sizeof(strbuf)); printf(" Use IPV4 adapter %s with IP=%s, MAC=%02X-%02X-%02X-%02X-%02X-%02X for A2L info and clock " "UUID\n", - ifa1->ifa_name, strbuf, mac1[0], mac1[1], mac1[2], mac1[3], mac1[4], mac1[5]); + ifa1->ifa_name, strbuf, __mac1[0], __mac1[1], __mac1[2], __mac1[3], __mac1[4], __mac1[5]); } #endif } freeifaddrs(ifaddrs); } } - if (addr1 != 0) { + if (__addr1 != 0) { if (mac) - memcpy(mac, mac1, 6); + memcpy(mac, __mac1, 6); if (addr) - memcpy(addr, &addr1, 4); + memcpy(addr, &__addr1, 4); return true; } else { return false; @@ -548,14 +548,14 @@ bool socketClose(SOCKET *sockp) { bool socketGetLocalAddr(uint8_t *mac, uint8_t *addr) { - static uint8_t addr1[4] = {0, 0, 0, 0}; - static uint8_t mac1[6] = {0, 0, 0, 0, 0, 0}; + static uint8_t __addr1[4] = {0, 0, 0, 0}; + static uint8_t __mac1[6] = {0, 0, 0, 0, 0, 0}; uint32_t a; PIP_ADAPTER_INFO pAdapterInfo; PIP_ADAPTER_INFO pAdapter = NULL; DWORD dwRetVal = 0; - if (addr1[0] == 0) { + if (__addr1[0] == 0) { ULONG ulOutBufLen = sizeof(IP_ADAPTER_INFO); pAdapterInfo = (IP_ADAPTER_INFO *)malloc(sizeof(IP_ADAPTER_INFO)); @@ -586,9 +586,9 @@ bool socketGetLocalAddr(uint8_t *mac, uint8_t *addr) { // if (pAdapter->DhcpEnabled) DBG_PRINTF5(" DHCP"); DBG_PRINT5("\n"); #endif - if (addr1[0] == 0) { - memcpy(addr1, (uint8_t *)&a, 4); - memcpy(mac1, pAdapter->Address, 6); + if (__addr1[0] == 0) { + memcpy(__addr1, (uint8_t *)&a, 4); + memcpy(__mac1, pAdapter->Address, 6); } } } @@ -599,11 +599,11 @@ bool socketGetLocalAddr(uint8_t *mac, uint8_t *addr) { free(pAdapterInfo); } - if (addr1[0] != 0) { + if (__addr1[0] != 0) { if (mac) - memcpy(mac, mac1, 6); + memcpy(mac, __mac1, 6); if (addr) - memcpy(addr, addr1, 4); + memcpy(addr, __addr1, 4); return true; } return false; @@ -721,13 +721,13 @@ int16_t socketSend(SOCKET sock, const uint8_t *buffer, uint16_t size) { return ( // Clock /**************************************************************************/ -static uint64_t sClock = 0; +static uint64_t __gClock = 0; // Get the last known clock value // Save CPU load, clockGet may take resonable run time, depending on platform // For slow timeouts and timers, it is sufficient to rely on the relatively high call frequency of clockGet() by other // parts of the application -uint64_t clockGetLast(void) { return sClock; } +uint64_t clockGetLast(void) { return __gClock; } // Not used, might be faster on macOS // #ifdef _MACOS @@ -810,7 +810,7 @@ bool clockInit(void) { DBG_PRINT3(" ticks = OPTION_CLOCK_TICKS_1NS\n"); #endif - sClock = 0; + __gClock = 0; #ifdef DBG_LEVEL if (DBG_LEVEL >= 3) { // Test @@ -845,10 +845,10 @@ uint64_t clockGet(void) { struct timespec ts; clock_gettime(CLOCK_TYPE, &ts); #ifdef OPTION_CLOCK_TICKS_1NS // ns - return sClock = (((uint64_t)(ts.tv_sec) * 1000000000ULL) + (uint64_t)(ts.tv_nsec)); + return __gClock = (((uint64_t)(ts.tv_sec) * 1000000000ULL) + (uint64_t)(ts.tv_nsec)); #else // us - return sClock = (((uint64_t)(ts.tv_sec) * 1000000ULL) + (uint64_t)(ts.tv_nsec / 1000)); // us - // return sClock = (((uint64_t)(ts.tv_sec - gts0.tv_sec) * 1000000ULL) + (uint64_t)(ts.tv_nsec / 1000)); + return __gClock = (((uint64_t)(ts.tv_sec) * 1000000ULL) + (uint64_t)(ts.tv_nsec / 1000)); // us + // return __gClock = (((uint64_t)(ts.tv_sec - gts0.tv_sec) * 1000000ULL) + (uint64_t)(ts.tv_nsec / 1000)); #endif } @@ -916,7 +916,7 @@ bool clockInit(void) { #endif DBG_PRINTF4(" CLOCK_TICKS_PER_S = %u\n\n", CLOCK_TICKS_PER_S); - sClock = 0; + __gClock = 0; // Get current performance counter frequency // Determine conversion to CLOCK_TICKS_PER_S -> sDivide/sFactor @@ -1010,7 +1010,7 @@ uint64_t clockGet(void) { } else { t = t * sFactor + sOffset; } - sClock = t; + __gClock = t; return t; } diff --git a/src/platform.h b/src/platform.h index 891dd95b..c4ee2db5 100644 --- a/src/platform.h +++ b/src/platform.h @@ -234,6 +234,7 @@ typedef HANDLE THREAD; WaitForSingleObject(h, 1000); \ CloseHandle(h); \ } +#define get_thread_id() GetCurrentThreadId() #elif defined(_LINUX) // Linux @@ -246,6 +247,7 @@ typedef pthread_t THREAD; pthread_cancel(h); \ } #define yield_thread(void) sched_yield(void) +#define get_thread_id() ((uint32_t)(uintptr_t)pthread_self()) #endif diff --git a/src/xcp.h b/src/xcp.h index b1131d7f..2c00c21a 100644 --- a/src/xcp.h +++ b/src/xcp.h @@ -233,12 +233,14 @@ #define SS_RESUME ((uint16_t)0x0080) // Internal states (high byte) */ -#define SS_BLOCK_UPLOAD ((uint16_t)0x0100) /* Block upload in progress */ -#define SS_LEGACY_MODE ((uint16_t)0x0200) /* XCP 1.3 legacy mode */ -#define SS_INITIALIZED ((uint16_t)0x8000) /* initialized */ -#define SS_STARTED ((uint16_t)0x4000) /* started*/ -#define SS_CONNECTED ((uint16_t)0x2000) /* connected */ -#define SS_ACTIVATED ((uint16_t)0x1000) /* activated or passive */ +#define SS_BLOCK_UPLOAD ((uint16_t)0x0100) /* Block upload in progress */ +#define SS_LEGACY_MODE ((uint16_t)0x0200) /* XCP 1.3 legacy mode */ +#define SS_PERSISTENCE_LOADED ((uint16_t)0x0400) /* Persistence loaded from BIN file*/ +#define SS_UNUSED2 ((uint16_t)0x0800) +#define SS_INITIALIZED ((uint16_t)0x8000) /* initialized */ +#define SS_STARTED ((uint16_t)0x4000) /* started*/ +#define SS_CONNECTED ((uint16_t)0x2000) /* connected */ +#define SS_ACTIVATED ((uint16_t)0x1000) /* activated or passive */ /*-------------------------------------------------------------------------*/ /* Identifier Type (GET_ID) */ diff --git a/src/xcpAppl.c b/src/xcpAppl.c index db6809b7..b3d68c2c 100644 --- a/src/xcpAppl.c +++ b/src/xcpAppl.c @@ -30,45 +30,38 @@ // @@@@ TODO improve #ifdef XCP_ENABLE_USER_COMMAND -static bool write_delayed = false; +static bool __write_delayed = false; #endif -/**************************************************************************/ -// Logging -/**************************************************************************/ - -// This is used by the Rust ffi to set the log level -void ApplXcpSetLogLevel(uint8_t level) { XcpSetLogLevel(level); } - /**************************************************************************/ // Callbacks /**************************************************************************/ -static bool (*callback_connect)(void) = NULL; -static uint8_t (*callback_prepare_daq)(void) = NULL; -static uint8_t (*callback_start_daq)(void) = NULL; -static void (*callback_stop_daq)(void) = NULL; -static uint8_t (*callback_freeze_daq)(uint8_t clear, uint16_t config_id) = NULL; -static uint8_t (*callback_get_cal_page)(uint8_t segment, uint8_t mode) = NULL; -static uint8_t (*callback_set_cal_page)(uint8_t segment, uint8_t page, uint8_t mode) = NULL; -static uint8_t (*callback_init_cal)(uint8_t src_page, uint8_t dst_page) = NULL; -static uint8_t (*callback_freeze_cal)(void) = NULL; -static uint8_t (*callback_read)(uint32_t src, uint8_t size, uint8_t *dst) = NULL; -static uint8_t (*callback_write)(uint32_t dst, uint8_t size, const uint8_t *src, uint8_t delay) = NULL; -static uint8_t (*callback_flush)(void) = NULL; - -void ApplXcpRegisterConnectCallback(bool (*cb_connect)(void)) { callback_connect = cb_connect; } -void ApplXcpRegisterPrepareDaqCallback(uint8_t (*cb_prepare_daq)(void)) { callback_prepare_daq = cb_prepare_daq; } -void ApplXcpRegisterStartDaqCallback(uint8_t (*cb_start_daq)(void)) { callback_start_daq = cb_start_daq; } -void ApplXcpRegisterStopDaqCallback(void (*cb_stop_daq)(void)) { callback_stop_daq = cb_stop_daq; } -void ApplXcpRegisterFreezeDaqCallback(uint8_t (*cb_freeze_daq)(uint8_t clear, uint16_t config_id)) { callback_freeze_daq = cb_freeze_daq; } -void ApplXcpRegisterGetCalPageCallback(uint8_t (*cb_get_cal_page)(uint8_t segment, uint8_t mode)) { callback_get_cal_page = cb_get_cal_page; } -void ApplXcpRegisterSetCalPageCallback(uint8_t (*cb_set_cal_page)(uint8_t segment, uint8_t page, uint8_t mode)) { callback_set_cal_page = cb_set_cal_page; } -void ApplXcpRegisterFreezeCalCallback(uint8_t (*cb_freeze_cal)(void)) { callback_freeze_cal = cb_freeze_cal; } -void ApplXcpRegisterInitCalCallback(uint8_t (*cb_init_cal)(uint8_t src_page, uint8_t dst_page)) { callback_init_cal = cb_init_cal; } -void ApplXcpRegisterReadCallback(uint8_t (*cb_read)(uint32_t src, uint8_t size, uint8_t *dst)) { callback_read = cb_read; } -void ApplXcpRegisterWriteCallback(uint8_t (*cb_write)(uint32_t dst, uint8_t size, const uint8_t *src, uint8_t delay)) { callback_write = cb_write; } -void ApplXcpRegisterFlushCallback(uint8_t (*cb_flush)(void)) { callback_flush = cb_flush; } +static bool (*__callback_connect)(void) = NULL; +static uint8_t (*__callback_prepare_daq)(void) = NULL; +static uint8_t (*__callback_start_daq)(void) = NULL; +static void (*__callback_stop_daq)(void) = NULL; +static uint8_t (*__callback_freeze_daq)(uint8_t clear, uint16_t config_id) = NULL; +static uint8_t (*__callback_get_cal_page)(uint8_t segment, uint8_t mode) = NULL; +static uint8_t (*__callback_set_cal_page)(uint8_t segment, uint8_t page, uint8_t mode) = NULL; +static uint8_t (*__callback_init_cal)(uint8_t src_page, uint8_t dst_page) = NULL; +static uint8_t (*__callback_freeze_cal)(void) = NULL; +static uint8_t (*__callback_read)(uint32_t src, uint8_t size, uint8_t *dst) = NULL; +static uint8_t (*__callback_write)(uint32_t dst, uint8_t size, const uint8_t *src, uint8_t delay) = NULL; +static uint8_t (*__callback_flush)(void) = NULL; + +void ApplXcpRegisterConnectCallback(bool (*cb_connect)(void)) { __callback_connect = cb_connect; } +void ApplXcpRegisterPrepareDaqCallback(uint8_t (*cb_prepare_daq)(void)) { __callback_prepare_daq = cb_prepare_daq; } +void ApplXcpRegisterStartDaqCallback(uint8_t (*cb_start_daq)(void)) { __callback_start_daq = cb_start_daq; } +void ApplXcpRegisterStopDaqCallback(void (*cb_stop_daq)(void)) { __callback_stop_daq = cb_stop_daq; } +void ApplXcpRegisterFreezeDaqCallback(uint8_t (*cb_freeze_daq)(uint8_t clear, uint16_t config_id)) { __callback_freeze_daq = cb_freeze_daq; } +void ApplXcpRegisterGetCalPageCallback(uint8_t (*cb_get_cal_page)(uint8_t segment, uint8_t mode)) { __callback_get_cal_page = cb_get_cal_page; } +void ApplXcpRegisterSetCalPageCallback(uint8_t (*cb_set_cal_page)(uint8_t segment, uint8_t page, uint8_t mode)) { __callback_set_cal_page = cb_set_cal_page; } +void ApplXcpRegisterFreezeCalCallback(uint8_t (*cb_freeze_cal)(void)) { __callback_freeze_cal = cb_freeze_cal; } +void ApplXcpRegisterInitCalCallback(uint8_t (*cb_init_cal)(uint8_t src_page, uint8_t dst_page)) { __callback_init_cal = cb_init_cal; } +void ApplXcpRegisterReadCallback(uint8_t (*cb_read)(uint32_t src, uint8_t size, uint8_t *dst)) { __callback_read = cb_read; } +void ApplXcpRegisterWriteCallback(uint8_t (*cb_write)(uint32_t dst, uint8_t size, const uint8_t *src, uint8_t delay)) { __callback_write = cb_write; } +void ApplXcpRegisterFlushCallback(uint8_t (*cb_flush)(void)) { __callback_flush = cb_flush; } // Internal function used by the Rust API void ApplXcpRegisterCallbacks(bool (*cb_connect)(void), uint8_t (*cb_prepare_daq)(void), uint8_t (*cb_start_daq)(void), void (*cb_stop_daq)(void), @@ -78,18 +71,18 @@ void ApplXcpRegisterCallbacks(bool (*cb_connect)(void), uint8_t (*cb_prepare_daq uint8_t (*cb_write)(uint32_t dst, uint8_t size, const uint8_t *src, uint8_t delay), uint8_t (*cb_flush)(void)) { - callback_connect = cb_connect; - callback_prepare_daq = cb_prepare_daq; - callback_start_daq = cb_start_daq; - callback_stop_daq = cb_stop_daq; - callback_freeze_daq = cb_freeze_daq; - callback_get_cal_page = cb_get_cal_page; - callback_set_cal_page = cb_set_cal_page; - callback_freeze_cal = cb_freeze_cal; - callback_init_cal = cb_init_cal; - callback_read = cb_read; - callback_write = cb_write; - callback_flush = cb_flush; + __callback_connect = cb_connect; + __callback_prepare_daq = cb_prepare_daq; + __callback_start_daq = cb_start_daq; + __callback_stop_daq = cb_stop_daq; + __callback_freeze_daq = cb_freeze_daq; + __callback_get_cal_page = cb_get_cal_page; + __callback_set_cal_page = cb_set_cal_page; + __callback_freeze_cal = cb_freeze_cal; + __callback_init_cal = cb_init_cal; + __callback_read = cb_read; + __callback_write = cb_write; + __callback_flush = cb_flush; } /**************************************************************************/ @@ -99,10 +92,10 @@ void ApplXcpRegisterCallbacks(bool (*cb_connect)(void), uint8_t (*cb_prepare_daq bool ApplXcpConnect(void) { DBG_PRINT4("ApplXcpConnect\n"); #ifdef XCP_ENABLE_USER_COMMAND - write_delayed = false; + __write_delayed = false; #endif - if (callback_connect != NULL) - return callback_connect(); + if (__callback_connect != NULL) + return __callback_connect(); return true; } @@ -111,8 +104,8 @@ void ApplXcpDisconnect(void) { DBG_PRINT4("ApplXcpDisconnect\n"); } #if XCP_PROTOCOL_LAYER_VERSION >= 0x0104 bool ApplXcpPrepareDaq(void) { DBG_PRINT4("ApplXcpPrepareDaq\n"); - if (callback_prepare_daq != NULL) { - if (!callback_prepare_daq()) { + if (__callback_prepare_daq != NULL) { + if (!__callback_prepare_daq()) { DBG_PRINT_WARNING("DAQ start canceled by AppXcpPrepareDaq!\n"); return false; }; @@ -123,14 +116,14 @@ bool ApplXcpPrepareDaq(void) { void ApplXcpStartDaq(void) { DBG_PRINT4("ApplXcpStartDaq\n"); - if (callback_start_daq != NULL) - callback_start_daq(); + if (__callback_start_daq != NULL) + __callback_start_daq(); } void ApplXcpStopDaq(void) { DBG_PRINT4("ApplXcpStartDaq\n"); - if (callback_stop_daq != NULL) - callback_stop_daq(); + if (__callback_stop_daq != NULL) + __callback_stop_daq(); } /**************************************************************************/ @@ -182,25 +175,29 @@ bool ApplXcpGetClockInfoGrandmaster(uint8_t *uuid, uint8_t *epoch, uint8_t *stra #ifdef XCP_ENABLE_ABS_ADDRESSING -#ifdef _WIN +// Global module load address to optimize resolving relocated absolute addresses during runtime +// xcp_get_base_addr() uses gXcpBaseAddr directly, not ApplXcpGetBaseAddr(), assuming XCP has been initialized before + +const uint8_t *gXcpBaseAddr = NULL; +uint8_t gXcpBaseAddrValid = 0; -static uint8_t *baseAddr = NULL; -static uint8_t baseAddrValid = 0; +#ifdef _WIN // Get base pointer for the XCP address range // This function is time sensitive, as it is called once on every XCP event -uint8_t *ApplXcpGetBaseAddr(void) { +const uint8_t *ApplXcpGetBaseAddr(void) { - if (!baseAddrValid) { - baseAddr = (uint8_t *)GetModuleHandle(NULL); - baseAddrValid = 1; - DBG_PRINTF4("ApplXcpGetBaseAddr() = 0x%I64X\n", (uint64_t)baseAddr); + if (!gXcpBaseAddrValid) { + gXcpBaseAddr = (uint8_t *)GetModuleHandle(NULL); + gXcpBaseAddrValid = 1; + DBG_PRINTF4("ApplXcpGetBaseAddr() = 0x%I64X\n", (uint64_t)gXcpBaseAddr); } - return baseAddr; + return gXcpBaseAddr; } uint32_t ApplXcpGetAddr(const uint8_t *p) { + DBG_PRINTF5("Windows Address: base = %p, addr = %p, diff = %ld\n", (void *)ApplXcpGetBaseAddr(), (void *)p, (long)(p - ApplXcpGetBaseAddr())); assert(p >= ApplXcpGetBaseAddr()); #ifdef _WIN64 assert(((uint64_t)p - (uint64_t)ApplXcpGetBaseAddr()) <= 0xffffffff); // be sure that XCP address range is sufficient @@ -217,15 +214,12 @@ uint32_t ApplXcpGetAddr(const uint8_t *p) { #endif #include -static uint8_t *baseAddr = NULL; -static uint8_t baseAddrValid = 0; - static int dump_phdr(struct dl_phdr_info *pinfo, size_t size, void *data) { // DBG_PRINTF3("name=%s (%d segments)\n", pinfo->dlpi_name, pinfo->dlpi_phnum); // Application modules has no name if (0 == strlen(pinfo->dlpi_name)) { - baseAddr = (uint8_t *)pinfo->dlpi_addr; + gXcpBaseAddr = (uint8_t *)pinfo->dlpi_addr; } (void)size; @@ -233,22 +227,27 @@ static int dump_phdr(struct dl_phdr_info *pinfo, size_t size, void *data) { return 0; } -uint8_t *ApplXcpGetBaseAddr(void) { +const uint8_t *ApplXcpGetBaseAddr(void) { - if (!baseAddrValid) { + if (!gXcpBaseAddrValid) { dl_iterate_phdr(dump_phdr, NULL); - assert(baseAddr != NULL); - baseAddrValid = 1; - DBG_PRINTF4("Base address for absolute addressing = %p\n", (void *)baseAddr); + assert(gXcpBaseAddr != NULL); + gXcpBaseAddrValid = 1; + DBG_PRINTF4("Base address for absolute addressing = %p\n", (void *)gXcpBaseAddr); } - return baseAddr; + return gXcpBaseAddr; } uint32_t ApplXcpGetAddr(const uint8_t *p) { - uint8_t *b = ApplXcpGetBaseAddr(); + const uint8_t *b = ApplXcpGetBaseAddr(); + DBG_PRINTF5("Linux Address: base = %p, addr = %p, diff = %ld\n", (void *)b, (void *)p, (long)(p - b)); assert(p >= b); - assert(((uint64_t)p - (uint64_t)b) <= 0xffffffff); // be sure that XCP address range is sufficient + if (((uint64_t)p - (uint64_t)b) > 0xffffffff) { // be sure that XCP address range is sufficient + DBG_PRINTF_ERROR("Address out of range! base = %p, addr = %p\n", (void *)b, (void *)p); + assert(0); + return 0; + } return (uint32_t)(p - b); } @@ -271,24 +270,21 @@ static int dump_so(void) { } */ -static uint8_t *baseAddr = NULL; -static uint8_t baseAddrValid = 0; - -uint8_t *ApplXcpGetBaseAddr(void) { - - if (!baseAddrValid) { +const uint8_t *ApplXcpGetBaseAddr(void) { + if (!gXcpBaseAddrValid) { // dump_so(); - baseAddr = (uint8_t *)_dyld_get_image_header(0); // Module addr - assert(baseAddr != NULL); - baseAddrValid = 1; - DBG_PRINTF4("Base address for absolute addressing = %p\n", (void *)baseAddr); + gXcpBaseAddr = (uint8_t *)_dyld_get_image_header(0); // Module addr + assert(gXcpBaseAddr != NULL); + gXcpBaseAddrValid = 1; + DBG_PRINTF4("Base address for absolute addressing = %p\n", (void *)gXcpBaseAddr); } - return baseAddr; + return gXcpBaseAddr; } uint32_t ApplXcpGetAddr(const uint8_t *p) { - uint8_t *b = ApplXcpGetBaseAddr(); + const uint8_t *b = ApplXcpGetBaseAddr(); + DBG_PRINTF5("Mac Address: base = %p, addr = %p, diff = %ld\n", (void *)b, (void *)p, (long)(p - b)); if (p < b || ((uint64_t)p - (uint64_t)b) > 0xffffffff) { // be sure that XCP address range is sufficient DBG_PRINTF_ERROR("Address out of range! base = %p, addr = %p\n", (void *)b, (void *)p); assert(0); // Ensure the address is in range @@ -301,7 +297,7 @@ uint32_t ApplXcpGetAddr(const uint8_t *p) { #ifdef _LINUX32 -uint8_t *ApplXcpGetBaseAddr(void) { return ((uint8_t *)0); } +const uint8_t *ApplXcpGetBaseAddr(void) { return ((uint8_t *)0); } uint32_t ApplXcpGetAddr(const uint8_t *p) { return ((uint32_t)(p)); } @@ -320,13 +316,13 @@ uint8_t ApplXcpUserCommand(uint8_t cmd) { switch (cmd) { case 0x01: // Begin atomic calibration operation - write_delayed = true; + __write_delayed = true; break; case 0x02: // End atomic calibration operation; - write_delayed = false; + __write_delayed = false; #ifdef XCP_ENABLE_APP_ADDRESSING - if (callback_flush != NULL) - return callback_flush(); + if (__callback_flush != NULL) + return __callback_flush(); #endif break; default: @@ -340,35 +336,34 @@ uint8_t ApplXcpUserCommand(uint8_t cmd) { // Called for SEG addressing mode, only when internal calibration segment management is not used or not enabled #ifdef XCP_ENABLE_APP_ADDRESSING uint8_t ApplXcpReadMemory(uint32_t src, uint8_t size, uint8_t *dst) { - if (callback_read != NULL) - return callback_read(src, size, dst); + if (__callback_read != NULL) + return __callback_read(src, size, dst); return CRC_ACCESS_DENIED; } uint8_t ApplXcpWriteMemory(uint32_t dst, uint8_t size, const uint8_t *src) { - if (callback_write != NULL) - return callback_write(dst, size, src, write_delayed); + if (__callback_write != NULL) + return __callback_write(dst, size, src, __write_delayed); return CRC_ACCESS_DENIED; } #endif /**************************************************************************/ +// Operations on calibration memory segments // Calibration page switching callbacks /**************************************************************************/ -// Operations on calibration memory segments - -// Called only when internal calibration segment management is not used or not enabled +// Called only when internal calibration segment management is not enabled #ifdef XCP_ENABLE_CAL_PAGE uint8_t ApplXcpGetCalPage(uint8_t segment, uint8_t mode) { - if (callback_get_cal_page != NULL) - return callback_get_cal_page(segment, mode); // return cal page number - return XCP_CALPAGE_WORKING_PAGE; // page 0 = working page (RAM) is default + if (__callback_get_cal_page != NULL) + return __callback_get_cal_page(segment, mode); // return cal page number + return XCP_CALPAGE_WORKING_PAGE; // page 0 = working page (RAM) is default } uint8_t ApplXcpSetCalPage(uint8_t segment, uint8_t page, uint8_t mode) { - if (callback_set_cal_page != NULL) - return callback_set_cal_page(segment, page, mode); // return CRC_CMD_xxx return code + if (__callback_set_cal_page != NULL) + return __callback_set_cal_page(segment, page, mode); // return CRC_CMD_xxx return code return CRC_CMD_UNKNOWN; } @@ -376,16 +371,16 @@ uint8_t ApplXcpSetCalPage(uint8_t segment, uint8_t page, uint8_t mode) { uint8_t ApplXcpCopyCalPage(uint8_t srcSeg, uint8_t srcPage, uint8_t dstSeg, uint8_t dstPage) { if (srcSeg != dstSeg && srcSeg > 0) return CRC_PAGE_NOT_VALID; // Only one segment supported - if (callback_init_cal != NULL) - return callback_init_cal(srcPage, dstPage); // return CRC_CMD_xxx return code + if (__callback_init_cal != NULL) + return __callback_init_cal(srcPage, dstPage); // return CRC_CMD_xxx return code return CRC_CMD_UNKNOWN; } #endif #ifdef XCP_ENABLE_FREEZE_CAL_PAGE uint8_t ApplXcpCalFreeze(void) { - if (callback_freeze_cal != NULL) - return callback_freeze_cal(); // return CRC_CMD_xxx return code + if (__callback_freeze_cal != NULL) + return __callback_freeze_cal(); // return CRC_CMD_xxx return code return CRC_CMD_UNKNOWN; } #endif @@ -416,10 +411,11 @@ uint8_t ApplXcpDaqResumeClear(void) { // Functions for upload of A2L file /**************************************************************************/ +#define XCP_A2L_FILENAME_MAX_LENGTH 255 // Maximum length of A2L filename with extension static char gXcpA2lName[XCP_A2L_FILENAME_MAX_LENGTH + 1] = ""; // A2L filename (without extension .a2l) // Set the A2L file (filename without extension .a2l) to be provided to the host for upload -void ApplXcpSetA2lName(const char *name) { +void XcpSetA2lName(const char *name) { assert(name != NULL && strlen(name) < XCP_A2L_FILENAME_MAX_LENGTH); STRNCPY(gXcpA2lName, name, XCP_A2L_FILENAME_MAX_LENGTH); @@ -428,11 +424,11 @@ void ApplXcpSetA2lName(const char *name) { if (dot != NULL) *dot = '\0'; // Null-terminate the string at the dot gXcpA2lName[XCP_A2L_FILENAME_MAX_LENGTH] = '\0'; // Ensure null-termination - DBG_PRINTF4("ApplXcpSetA2lName '%s'\n", name); + DBG_PRINTF4("XcpSetA2lName '%s'\n", name); } // Return the A2L name (without extension) -const char *ApplXcpGetA2lName(void) { return gXcpA2lName; } +const char *XcpGetA2lName(void) { return gXcpA2lName; } #ifdef XCP_ENABLE_IDT_A2L_UPLOAD // Enable GET_ID A2L content upload to host @@ -473,6 +469,7 @@ static uint32_t openA2lFile(void) { bool ApplXcpReadA2L(uint8_t size, uint32_t addr, uint8_t *data) { if (gXcpFile == NULL) return false; + assert(gXcpFile != NULL); if (addr + size > gXcpFileLength || size != fread(data, 1, (uint32_t)size, gXcpFile)) { closeA2lFile(); DBG_PRINTF_ERROR("ApplXcpReadA2L addr=%u size=%u exceeds file length=%u\n", addr, size, gXcpFileLength); @@ -498,8 +495,18 @@ uint32_t ApplXcpGetId(uint8_t id, uint8_t *buf, uint32_t bufLen) { uint32_t len = 0; switch (id) { - case IDT_ASCII: - case IDT_ASAM_NAME: + case IDT_ASCII: { + const char *project_name = XcpGetProjectName(); + len = (uint32_t)strlen(project_name); + if (buf) { + if (len >= bufLen - 1) + return 0; // Insufficient buffer space + STRNCPY((char *)buf, project_name, len); + } + DBG_PRINTF3("ApplXcpGetId GET_ID%u project_name=%s\n", id, project_name); + } break; + + case IDT_ASAM_NAME: { if (gXcpA2lName[0] == 0) return 0; len = (uint32_t)strlen(gXcpA2lName); @@ -508,10 +515,10 @@ uint32_t ApplXcpGetId(uint8_t id, uint8_t *buf, uint32_t bufLen) { return 0; // Insufficient buffer space STRNCPY((char *)buf, gXcpA2lName, len); } - DBG_PRINTF3("ApplXcpGetId GET_ID%u name=%s\n", id, gXcpA2lName); - break; + DBG_PRINTF3("ApplXcpGetId GET_ID%u a2l_name=%s\n", id, gXcpA2lName); + } break; - case IDT_ASAM_PATH: + case IDT_ASAM_PATH: { if (gXcpA2lName[0] == 0) return 0; len = (uint32_t)strlen(gXcpA2lName) + 4; @@ -520,8 +527,8 @@ uint32_t ApplXcpGetId(uint8_t id, uint8_t *buf, uint32_t bufLen) { return 0; // Insufficient buffer space SNPRINTF((char *)buf, bufLen, "%s.a2l", gXcpA2lName); } - DBG_PRINTF3("ApplXcpGetId GET_ID%u A2L path=%s\n", id, buf); - break; + DBG_PRINTF3("ApplXcpGetId GET_ID%u a2l_path=%s\n", id, buf); + } break; case IDT_ASAM_EPK: { const char *epk = XcpGetEpk(); @@ -539,16 +546,16 @@ uint32_t ApplXcpGetId(uint8_t id, uint8_t *buf, uint32_t bufLen) { } break; #ifdef XCP_ENABLE_IDT_A2L_UPLOAD - case IDT_ASAM_UPLOAD: + case IDT_ASAM_UPLOAD: { if (buf != NULL) return 0; // A2L not available as response buffer len = openA2lFile(); DBG_PRINTF3("ApplXcpGetId GET_ID%u A2L as upload (len=%u)\n", id, len); - break; + } break; #endif #ifdef XCP_ENABLE_IDT_A2L_HTTP_GET - case IDT_ASAM_URL: + case IDT_ASAM_URL: { if (buf) { uint8_t addr[4]; if (socketGetLocalAddr(NULL, addr)) { @@ -556,8 +563,16 @@ uint32_t ApplXcpGetId(uint8_t id, uint8_t *buf, uint32_t bufLen) { len = (uint32_t)strlen((char *)buf); } } - break; + } break; #endif + + /* + case IDT_ASAM_ECU: + case IDT_ASAM_SYSID: + case IDT_VECTOR_MAPNAMES: + case IDT_VECTOR_GET_A2LOBJECTS_FROM_ECU: + // Not implemented + */ } return len; } diff --git a/src/xcpEthServer.c b/src/xcpEthServer.c index fcd3c282..48322b95 100644 --- a/src/xcpEthServer.c +++ b/src/xcpEthServer.c @@ -75,7 +75,7 @@ bool XcpEthServerInit(const uint8_t *addr, uint16_t port, bool useTCP, uint32_t // Check and ignore, if the XCP singleton has not been initialized and activated if (!XcpIsActivated()) { - DBG_PRINT3("XcpEthServerInit: XCP not initialized and activated!\n"); + DBG_PRINT3("XcpEthServerInit: XCP is deactivated!\n"); return true; } diff --git a/src/xcpEthServer.h b/src/xcpEthServer.h index 2686d94e..f197d114 100644 --- a/src/xcpEthServer.h +++ b/src/xcpEthServer.h @@ -23,7 +23,7 @@ /// @param use_tcp Use TCP if true, otherwise UDP. /// @param measurement_queue_size Measurement queue size in bytes. Includes the bytes occupied by the queue header and some space needed for alignment. /// @return true on success, otherwise false. -bool XcpEthServerInit(uint8_t const *address, uint16_t port, bool use_tcp, uint32_t measurement_queue_size); +bool XcpEthServerInit(const uint8_t *address, uint16_t port, bool use_tcp, uint32_t measurement_queue_size); /// Shutdown the XCP on Ethernet server. bool XcpEthServerShutdown(void); diff --git a/src/xcpEthTl.c b/src/xcpEthTl.c index 7ee57187..88044238 100644 --- a/src/xcpEthTl.c +++ b/src/xcpEthTl.c @@ -592,6 +592,14 @@ int32_t XcpTlHandleTransmitQueue(void) { const uint32_t outer_loop_sleep_ms = 1; // Sleep time in ms for each outer loop #endif +// @@@@ TODO This is too early, when the server is started before A2lInit !!!!!!!!!!!!! +#if defined(OPTION_DAQ_ASYNC_EVENT) && defined(XCP_ENABLE_DAQ_EVENT_LIST) + static tXcpEventId gXcpAsyncEvent = XCP_UNDEFINED_EVENT_ID; + if (gXcpAsyncEvent == XCP_UNDEFINED_EVENT_ID) { + gXcpAsyncEvent = XcpCreateEvent("async", outer_loop_sleep_ms * CLOCK_TICKS_PER_MS, 0); + } +#endif + int32_t n = 0; // Number of bytes sent bool flush = false; // Flush queue in regular intervals @@ -636,6 +644,10 @@ int32_t XcpTlHandleTransmitQueue(void) { } sleepMs(outer_loop_sleep_ms); +#if defined(OPTION_DAQ_ASYNC_EVENT) && defined(XCP_ENABLE_DAQ_EVENT_LIST) + XcpEvent(gXcpAsyncEvent); +#endif + } // for(j) return n; } diff --git a/src/xcpLite.c b/src/xcpLite.c index de5cbd1f..065ecc9f 100644 --- a/src/xcpLite.c +++ b/src/xcpLite.c @@ -4,7 +4,7 @@ | | Description: | Implementation of the ASAM XCP Protocol Layer V1.4 -| Version V0.9.2 +| Version V0.9.3 | - Designed and optimized for 64 bit POSIX based platforms (Linux or MacOS) | - Tested on x86 strong and ARM weak memory model | - Can be adapted for 32 bit platforms @@ -22,7 +22,6 @@ | - Only dynamic DAQ list allocation supported | - Resume is not supported | - Overload indication by event is not supported -| - DAQ does not support prescaler | - ODT optimization not supported | - Seed & key is not supported | - Flash programming is not supported @@ -130,6 +129,32 @@ #define XCP_MAX_DAQ_COUNT 256 #endif +/* Check length of of event and segment names with null termination must be even*/ +#if XCP_EPK_MAX_LENGTH & 1 == 0 || XCP_EPK_MAX_LENGTH >= 256 +#error "XCP_EPK_MAX_LENGTH must be <256 and odd for null termination" +#endif +#if XCP_MAX_EVENT_NAME & 1 == 0 +#error "XCP_MAX_EVENT_NAME must be odd for null termination" +#endif + +/****************************************************************************/ +/* XCPlite memoryy signature (XCPLITE__XXXXX) */ +/****************************************************************************/ + +// Current supported addressing schemes are: +// For the Rust wrapper: XCP_ADDRESS_MODE_XCPLITE__C_DR +// For A2L-Toolset compatibilityAbsolute addressing mode: XCP_ADDRESS_MODE_XCPLITE__ACSDD +// Default: Segment relative addressing mode: XCP_ADDRESS_MODE_XCPLITE__CASDD +#ifdef XCP_ADDRESS_MODE_XCPLITE__C_DR +__attribute__((used)) const uint16_t XCPLITE__C_DR = XCP_DRIVER_VERSION; +#elif defined(XCP_ADDRESS_MODE_XCPLITE__ACSDD) +__attribute__((used)) const uint16_t XCPLITE__ACSDD = XCP_DRIVER_VERSION; +#elif defined(XCP_ADDRESS_MODE_XCPLITE__CASDD) +__attribute__((used)) const uint16_t XCPLITE__CASDD = XCP_DRIVER_VERSION; +#else +#error "Please define one of XCP_ADDRESS_MODE_XCPLITE__C_DR, XCP_ADDRESS_MODE_XCPLITE__ACSDD, XCP_ADDRESS_MODE_XCPLITE__CASDD" +#endif + /****************************************************************************/ /* Protocol layer state data */ /****************************************************************************/ @@ -167,7 +192,11 @@ static uint8_t XcpAsyncCommand(bool async, const uint32_t *cmdBuf, uint8_t cmdLe #define DaqListAddrExt(i) gXcp.DaqLists->u.daq_list[i].addr_ext #define DaqListPriority(i) gXcp.DaqLists->u.daq_list[i].priority #ifdef XCP_MAX_EVENT_COUNT -#define DaqListFirst(event) gXcp.DaqLists->daq_first[event] +#ifdef XCP_ENABLE_DAQ_EVENT_LIST +#define DaqListFirst(event_id) gXcp.EventList.event[event_id].daq_first +#else +#define DaqListFirst(event_id) gXcp.DaqLists->daq_first[event_id] +#endif #define DaqListNext(daq) gXcp.DaqLists->u.daq_list[daq].next #endif @@ -207,13 +236,13 @@ static uint8_t XcpAsyncCommand(bool async, const uint32_t *cmdBuf, uint8_t cmdLe #if defined(OPTION_ENABLE_DBG_PRINTS) && !defined(OPTION_FIXED_DBG_LEVEL) && defined(OPTION_DEFAULT_DBG_LEVEL) -uint8_t gDebugLevel = OPTION_DEFAULT_DBG_LEVEL; +uint8_t gXcpDebugLevel = OPTION_DEFAULT_DBG_LEVEL; // Set the log level void XcpSetLogLevel(uint8_t level) { if (level > 3) - DBG_PRINTF_WARNING("Set log level %u -> %u\n", gDebugLevel, level); - gDebugLevel = level; + DBG_PRINTF_WARNING("Set log level %u -> %u\n", gXcpDebugLevel, level); + gXcpDebugLevel = level; } #else @@ -281,13 +310,37 @@ uint64_t XcpGetDaqStartTime(void) { return gXcp.DaqStartClock64; } uint32_t XcpGetDaqOverflowCount(void) { return gXcp.DaqOverflowCount; } +/**************************************************************************/ +/* Project/ECU name */ +/**************************************************************************/ + +// Set the project name +void XcpSetProjectName(const char *name) { + + assert(name != NULL); + + size_t name_len = STRNLEN(name, XCP_PROJECT_NAME_MAX_LENGTH); + STRNCPY(gXcp.ProjectName, name, name_len); + gXcp.ProjectName[XCP_PROJECT_NAME_MAX_LENGTH] = 0; // Ensure null-termination + DBG_PRINTF3("Project Name = '%s'\n", gXcp.ProjectName); +} + +// Get the project name +const char *XcpGetProjectName(void) { + if (STRNLEN(gXcp.ProjectName, XCP_PROJECT_NAME_MAX_LENGTH) == 0) + return NULL; + return gXcp.ProjectName; +} + /**************************************************************************/ /* EPK version string */ /**************************************************************************/ -// Set/get the EPK (A2l file version string) +// Set the EPK void XcpSetEpk(const char *epk) { + assert(epk != NULL); + size_t epk_len = STRNLEN(epk, XCP_EPK_MAX_LENGTH); STRNCPY(gXcp.Epk, epk, epk_len); gXcp.Epk[XCP_EPK_MAX_LENGTH] = 0; // Ensure null-termination @@ -299,6 +352,8 @@ void XcpSetEpk(const char *epk) { } DBG_PRINTF3("EPK = '%s'\n", gXcp.Epk); } + +// Get the EPK const char *XcpGetEpk(void) { if (STRNLEN(gXcp.Epk, XCP_EPK_MAX_LENGTH) == 0) return NULL; @@ -342,7 +397,7 @@ static void XcpFreeCalSegList(void) { } // Get a pointer to the list and the size of the list -tXcpCalSegList const *XcpGetCalSegList(void) { +const tXcpCalSegList *XcpGetCalSegList(void) { assert(isInitialized()); return &gXcp.CalSegList; } @@ -367,6 +422,18 @@ tXcpCalSegIndex XcpFindCalSeg(const char *name) { return XCP_UNDEFINED_CALSEG; // Not found } +// Get the index of a calibration segment by address (inside of the default page) +tXcpCalSegIndex XcpFindCalSegByAddr(uint8_t *addr) { + assert(isInitialized()); + for (tXcpCalSegIndex i = 0; i < gXcp.CalSegList.count; i++) { + tXcpCalSeg *calseg = &gXcp.CalSegList.calseg[i]; + if (addr >= calseg->default_page && addr < calseg->default_page + calseg->size) { + return i; + } + } + return XCP_UNDEFINED_CALSEG; // Not found +} + // Get the name of the calibration segment const char *XcpGetCalSegName(tXcpCalSegIndex calseg) { assert(isInitialized()); @@ -374,11 +441,18 @@ const char *XcpGetCalSegName(tXcpCalSegIndex calseg) { return gXcp.CalSegList.calseg[calseg].name; } -// Get the XCP/A2L address (address mode XCP_ADDR_MODE_SEG) of a calibration segment +// Get the XCP/A2L address (address mode XCP_ADDR_MODE_SEG or XCP_ADDR_MODE_ABS) of a calibration segment uint32_t XcpGetCalSegBaseAddress(tXcpCalSegIndex calseg) { assert(isInitialized()); assert(calseg < gXcp.CalSegList.count); +#if XCP_ADDR_EXT_SEG == 0x00 // Memory segments are addressed in relative mode return XcpAddrEncodeSegIndex(calseg, 0); +#else // Memory segments are addressed in absolute mode +#if defined(XCP_ENABLE_ABS_ADDRESSING) && XCP_ADDR_EXT_ABS != 0x00 +#error "XCP_ADDR_EXT_ABS must be 0x00" +#endif + return XcpAddrEncodeAbs(gXcp.CalSegList.calseg[calseg].default_page); +#endif } // Create a calibration segment @@ -406,7 +480,7 @@ tXcpCalSegIndex XcpCreateCalSeg(const char *name, const void *default_page, uint // Preloaded segments have the correct size and a valid default page, loaded from the binary calibration segment image file on startup c = &gXcp.CalSegList.calseg[index]; if (size == c->size && c->default_page != NULL && (c->mode & PAG_PROPERTY_PRELOAD) != 0) { - DBG_PRINTF3("Use preloaded CalSeg %u: %s index=%u, addr=0x%08X, size=%u\n", index, c->name, index, XcpGetCalSegBaseAddress(index), c->size); + DBG_PRINTF3("Use preloaded CalSeg %u: %s index=%u, size=%u\n", index, c->name, index, c->size); } else #endif { @@ -427,7 +501,7 @@ tXcpCalSegIndex XcpCreateCalSeg(const char *name, const void *default_page, uint #ifdef XCP_ENABLE_FREEZE_CAL_PAGE c->file_pos = 0; #endif - DBG_PRINTF3("Create CalSeg %u: %s index=%u, addr=0x%08X, size=%u\n", index, c->name, index, XcpGetCalSegBaseAddress(index), c->size); + DBG_PRINTF3("Create CalSeg %u: %s index=%u, size=%u\n", index, c->name, index, c->size); } // Init @@ -438,41 +512,76 @@ tXcpCalSegIndex XcpCreateCalSeg(const char *name, const void *default_page, uint atomic_store_explicit(&c->ecu_page_next, (uintptr_t)NULL, memory_order_relaxed); c->write_pending = false; c->xcp_access = XCP_CALPAGE_DEFAULT_PAGE; // Default page for XCP access - atomic_store_explicit(&c->ecu_access, XCP_CALPAGE_DEFAULT_PAGE, memory_order_relaxed); // Default page for ECU access + atomic_store_explicit(&c->ecu_access, XCP_CALPAGE_DEFAULT_PAGE, memory_order_relaxed); // Default page for ECU access if XCP is not activated atomic_store_explicit(&c->lock_count, 0, memory_order_relaxed); // No locks -#ifdef XCP_ENABLE_FREEZE_CAL_PAGE - c->mode = 0; // Default mode is freeze not enabled, set by XCP command SET_SEGMENT_MODE -#endif // Allocate the working page and initialize RCU, if XCP has been activated if (isActivated()) { - // Allocate the ecu working page (RAM page) - c->xcp_page = malloc(size); - memcpy(c->xcp_page, c->default_page, size); // Copy default page to XCP working page copy - - // Allocate the xcp page + // Allocate the ECU working page (RAM page) c->ecu_page = malloc(size); memcpy(c->ecu_page, c->default_page, size); // Copy default page to ECU working page copy + // Allocate the xcp working page (RAM page) +#ifdef XCP_ENABLE_REFERENCE_PAGE_PERSISTENCY +// No persistency possible in absolute segment addressing mode +#if defined(XCP_ENABLE_ABS_ADDRESSING) && XCP_ADDR_EXT_ABS == 0 +#error "XCP_ENABLE_REFERENCE_PAGE_PERSISTENCY requires segment relative addressing mode!" +#endif + + // Reference page persistency + // Allocate the working page + c->xcp_page = malloc(size); + memcpy(c->xcp_page, c->default_page, size); // Copy default page to working page + if (c->mode & PAG_PROPERTY_PRELOAD) { + DBG_PRINTF3("Persistence data loaded into reference page of CalSeg %u: %s size=%u\n", index, c->name, c->size); + } +#else // XCP_ENABLE_REFERENCE_PAGE_PERSISTENCY + + // Working page persistency + // If it is a preloaded segment with a heap allocated default page, use this default page as XCP working page + if (c->mode & PAG_PROPERTY_PRELOAD) { + c->xcp_page = (uint8_t *)c->default_page; // Swap XCP working page and preloaded default page + c->default_page = default_page; + memcpy(c->ecu_page, c->xcp_page, size); // Copy XCP working page to ECU working page copy as well + DBG_PRINTF3("Persistence data loaded into working page of CalSeg %u: %s addr=0x%08X, size=%u\n", index, c->name, XcpGetCalSegBaseAddress(index), c->size); + } + // else allocate and initialize the working page + else { + + // Allocate the XCP working page + c->xcp_page = malloc(size); + memcpy(c->xcp_page, default_page, size); // Copy default page to working page + } +#endif // !XCP_ENABLE_REFERENCE_PAGE_PERSISTENCY + // Allocate a free uninitialized page atomic_store_explicit(&c->free_page, (uintptr_t)malloc(size), memory_order_relaxed); // New ECU page version not updated atomic_store_explicit(&c->ecu_page_next, (uintptr_t)c->ecu_page, memory_order_relaxed); +#ifdef OPTION_CAL_SEGMENT_START_ON_REFERENCE_PAGE + // Enable access to the reference page + c->xcp_access = XCP_CALPAGE_DEFAULT_PAGE; // Default page for XCP access is the reference page + atomic_store_explicit(&c->ecu_access, XCP_CALPAGE_DEFAULT_PAGE, memory_order_relaxed); // Default page for ECU access is the reference page +#else // Enable access to the working page c->xcp_access = XCP_CALPAGE_WORKING_PAGE; // Default page for XCP access is the working page atomic_store_explicit(&c->ecu_access, XCP_CALPAGE_WORKING_PAGE, memory_order_relaxed); // Default page for ECU access is the working page - // No write pending +#endif } +#ifdef XCP_ENABLE_FREEZE_CAL_PAGE + c->mode = 0; // Default mode is freeze not enabled, set by XCP command SET_SEGMENT_MODE, clear the preloaded flag +#endif + mutexUnlock(&gXcp.CalSegList.mutex); return index; } // Lock a calibration segment and return a pointer to the ECU page -uint8_t const *XcpLockCalSeg(tXcpCalSegIndex calseg) { +const uint8_t *XcpLockCalSeg(tXcpCalSegIndex calseg) { assert(isInitialized()); @@ -503,6 +612,8 @@ uint8_t const *XcpLockCalSeg(tXcpCalSegIndex calseg) { } } + // DBG_PRINTF5("CalSeg %u: %s locked, ecu_access=%u\n", calseg, c->name, atomic_load_explicit(&c->ecu_access, memory_order_relaxed)); + // Return the active ECU page (RAM or FLASH) if (atomic_load_explicit(&c->ecu_access, memory_order_relaxed) != XCP_CALPAGE_WORKING_PAGE) { return c->default_page; @@ -534,22 +645,6 @@ static uint8_t XcpCalSegReadMemory(uint32_t src, uint16_t size, uint8_t *dst) { uint16_t calseg = XcpAddrDecodeSegNumber(src); // Get the calibration segment number from the address uint16_t offset = XcpAddrDecodeSegOffset(src); // Get the offset within the calibration segment -// Check for EPK read access -#ifdef XCP_ENABLE_EPK_CALSEG - if (calseg == 0) { - const char *epk = XcpGetEpk(); - if (epk != NULL) { - uint16_t epk_len = (uint16_t)strlen(epk); - if (size + offset <= epk_len) { - memcpy(dst, epk + offset, size); - return CRC_CMD_OK; - } - } - return CRC_ACCESS_DENIED; - } - calseg--; // Adjust for EPK segment at index 0 -#endif - if (calseg >= gXcp.CalSegList.count) { DBG_PRINTF_ERROR("invalid calseg index %u\n", calseg); return CRC_ACCESS_DENIED; @@ -631,14 +726,6 @@ static uint8_t XcpCalSegWriteMemory(uint32_t dst, uint16_t size, const uint8_t * uint16_t calseg = XcpAddrDecodeSegNumber(dst); uint16_t offset = XcpAddrDecodeSegOffset(dst); -#ifdef XCP_ENABLE_EPK_CALSEG - if (calseg == 0) { - DBG_PRINT_ERROR("invalid write access to calseg number 0 (EPK)\n"); - return CRC_ACCESS_DENIED; - } - calseg--; // Adjust for EPK segment at index 0 -#endif - if (calseg >= gXcp.CalSegList.count) { DBG_PRINTF_ERROR("invalid calseg number %u\n", calseg); return CRC_ACCESS_DENIED; @@ -682,50 +769,6 @@ static uint8_t XcpCalSegWriteMemory(uint32_t dst, uint16_t size, const uint8_t * static uint8_t XcpGetSegInfo(tXcpCalSegNumber segment, uint8_t mode, uint8_t seg_info, uint8_t map_index) { (void)map_index; // Mapping not supported -// EPK segment (segment = 0) does not support calibration pages or mappings -// @@@@ TODO: better handling if EPK is not set -#ifdef XCP_ENABLE_EPK_CALSEG - if (segment == 0) { - const char *epk = XcpGetEpk(); - if (epk == NULL) { - DBG_PRINT_ERROR("EPK segment not available\n"); - return CRC_OUT_OF_RANGE; - } - switch (mode) { - case 0: // Mode 0 - get get basic info (address, length or name) - CRM_LEN = CRM_GET_SEGMENT_INFO_LEN_MODE0; - if (seg_info == 0) { - CRM_GET_SEGMENT_INFO_BASIC_INFO = XCP_ADDR_EPK; // EPK segment address - return CRC_CMD_OK; - } else if (seg_info == 1) { - CRM_GET_SEGMENT_INFO_BASIC_INFO = strlen(epk); // EPK segment size - return CRC_CMD_OK; - } else if (seg_info == 2) { // EPK segment name (Vector extension, name via MTA and upload) - CRM_GET_SEGMENT_INFO_BASIC_INFO = 3; // Length of the name - gXcp.MtaPtr = (uint8_t *)"epk"; - gXcp.MtaExt = XCP_ADDR_EXT_PTR; - return CRC_CMD_OK; - } else { - return CRC_OUT_OF_RANGE; - } - break; - case 1: // Mode 1 - get standard info - CRM_LEN = CRM_GET_SEGMENT_INFO_LEN_MODE1; - CRM_GET_SEGMENT_INFO_MAX_PAGES = 1; - CRM_GET_SEGMENT_INFO_ADDRESS_EXTENSION = XCP_ADDR_EXT_EPK; - CRM_GET_SEGMENT_INFO_MAX_MAPPING = 0; - CRM_GET_SEGMENT_INFO_COMPRESSION = 0; - CRM_GET_SEGMENT_INFO_ENCRYPTION = 0; - return CRC_CMD_OK; - case 2: // Mode 2 - get mapping info not supported - return CRC_OUT_OF_RANGE; - default: // Illegal mode - return CRC_CMD_SYNTAX; - } - } - segment--; // Adjust for EPK segment at index 0 -#endif - tXcpCalSegIndex calseg = segment; if (segment >= gXcp.CalSegList.count) { DBG_PRINTF_ERROR("invalid segment index: %u\n", segment); @@ -754,7 +797,7 @@ static uint8_t XcpGetSegInfo(tXcpCalSegNumber segment, uint8_t mode, uint8_t seg case 1: // Get standard info for this SEGMENT CRM_LEN = CRM_GET_SEGMENT_INFO_LEN_MODE1; CRM_GET_SEGMENT_INFO_MAX_PAGES = 2; - CRM_GET_SEGMENT_INFO_ADDRESS_EXTENSION = XCP_ADDR_EXT_SEG; + CRM_GET_SEGMENT_INFO_ADDRESS_EXTENSION = 0; // Address extension for segments is always 0 (SEG or ABS address mode) CRM_GET_SEGMENT_INFO_MAX_MAPPING = 0; CRM_GET_SEGMENT_INFO_COMPRESSION = 0; CRM_GET_SEGMENT_INFO_ENCRYPTION = 0; @@ -770,15 +813,6 @@ uint8_t XcpGetSegPageInfo(tXcpCalSegNumber segment, uint8_t page) { CRM_LEN = CRM_GET_PAGE_INFO_LEN; -#ifdef XCP_ENABLE_EPK_CALSEG - if (segment == 0) { - CRM_GET_PAGE_INFO_PROPERTIES = 0x0F; // EPK segment, write access not allowed, read access don't care - CRM_GET_PAGE_INFO_INIT_SEGMENT = 0; - return CRC_CMD_OK; - } - segment--; // Adjust for EPK segment at index 0 -#endif - if (segment >= gXcp.CalSegList.count) return CRC_OUT_OF_RANGE; if (page > 1) @@ -804,12 +838,6 @@ static uint8_t XcpCalSegGetCalPage(tXcpCalSegNumber segment, uint8_t mode) { DBG_PRINTF_ERROR("invalid segment number: %u\n", segment); return XCP_CALPAGE_INVALID_PAGE; } -#ifdef XCP_ENABLE_EPK_CALSEG - if (segment == 0) { - return XCP_CALPAGE_DEFAULT_PAGE; // EPK segment does not have calibration pages - } - segment--; // Adjust for EPK segment at index 0 -#endif if (mode == CAL_PAGE_MODE_ECU) { return (uint8_t)atomic_load_explicit(&gXcp.CalSegList.calseg[segment].ecu_access, memory_order_relaxed); } @@ -838,13 +866,6 @@ static uint8_t XcpCalSegSetCalPage(tXcpCalSegNumber segment, uint8_t page, uint8 } } else { -#ifdef XCP_ENABLE_EPK_CALSEG - if (segment == 0) { - return CRC_ACCESS_DENIED; // EPK segment does not have calibration pages - } - segment--; // Adjust for EPK segment at index 0 -#endif - if (segment >= gXcp.CalSegList.count) { DBG_PRINTF_ERROR("invalid segment index %u\n", segment); return CRC_ACCESS_DENIED; // Invalid calseg @@ -864,31 +885,16 @@ static uint8_t XcpCalSegSetCalPage(tXcpCalSegNumber segment, uint8_t page, uint8 #ifdef XCP_ENABLE_COPY_CAL_PAGE static uint8_t XcpCalSegCopyCalPage(tXcpCalSegNumber srcSeg, uint8_t srcPage, tXcpCalSegNumber dstSeg, uint8_t dstPage) { -#ifdef XCP_ENABLE_EPK_CALSEG - if (srcSeg == 0) { - return CRC_ACCESS_DENIED; // EPK segment does not have calibration pages - } - srcSeg--; // Adjust for EPK segment at index 0 -#endif - // Only copy from default page to working page supported if (srcSeg != dstSeg || srcSeg >= gXcp.CalSegList.count || dstPage != XCP_CALPAGE_WORKING_PAGE || srcPage != XCP_CALPAGE_DEFAULT_PAGE) { - DBG_PRINT_ERROR("invalid calseg copy operation\n"); + DBG_PRINT_ERROR("unsupported or invalid calseg copy operation\n"); return CRC_WRITE_PROTECTED; } - // @@@@ TODO: CANape does not support individual segment copy operations, copy all segments at once - - // if (dstSeg >= 1) { - // tXcpCalSeg *c = &gXcp.CalSegList.calseg[dstSeg - 1]; - // uint16_t size = c->size; - // const uint8_t *srcPtr = c->default_page; - // return XcpCalSegWriteMemory(XcpAddrEncodeSegNumber(dstSeg, 0), size, srcPtr); - // } else { - // return CRC_WRITE_PROTECTED; // Copy operation on EPK segment - // } +#ifdef XCP_ENABLE_COPY_CAL_PAGE_WORKAROUND - // Copy all segments from default page to working page + // Older CANapes < 24SP1 do not send individual segment copy operations for each segment + // Copy all existing segments from default page to working page, ignoring srcSeg/dstSeg for (tXcpCalSegIndex i = 0; i < gXcp.CalSegList.count; i++) { tXcpCalSeg *c = &gXcp.CalSegList.calseg[i]; uint16_t size = c->size; @@ -899,6 +905,15 @@ static uint8_t XcpCalSegCopyCalPage(tXcpCalSegNumber srcSeg, uint8_t srcPage, tX } } return CRC_CMD_OK; + +#else + + tXcpCalSeg *c = &gXcp.CalSegList.calseg[dstSeg]; + uint16_t size = c->size; + const uint8_t *srcPtr = c->default_page; + return XcpCalSegWriteMemory(XcpAddrEncodeSegNumber(dstSeg, 0), size, srcPtr); + +#endif } #endif @@ -930,22 +945,12 @@ uint8_t XcpCalSegCommand(uint8_t cmd) { #ifdef XCP_ENABLE_FREEZE_CAL_PAGE static uint8_t XcpGetCalSegMode(tXcpCalSegNumber segment) { -#ifdef XCP_ENABLE_EPK_CALSEG - if (segment == 0) - return 0; // EPK segment has no mode - segment--; // Adjust for EPK segment at index 0 -#endif if (segment >= gXcp.CalSegList.count) return 0; // Segment number out of range, ignore return gXcp.CalSegList.calseg[segment].mode; // Return the segment mode } static uint8_t XcpSetCalSegMode(tXcpCalSegNumber segment, uint8_t mode) { -#ifdef XCP_ENABLE_EPK_CALSEG - if (segment == 0) - return CRC_CMD_OK; // EPK segment has no mode - segment--; // Adjust for EPK segment at index 0 -#endif if (segment >= gXcp.CalSegList.count) return CRC_OUT_OF_RANGE; // Segment number out of range gXcp.CalSegList.calseg[segment].mode = mode; @@ -993,16 +998,16 @@ void XcpResetAllCalSegs(void) { /* XcpWriteMta is not performance critical, but critical for data consistency. It is used to modify calibration variables. -When using memcpy, it is not guaranteed that is uses multibyte move operations specifically for alignment to provide thread safety. -Its primary responsibility is only to copy memory. Any considerations regarding thread safety must be explicitly managed. -This is also a requirement to the tool, which must ensure that the data is consistent by choosing the right granularity for DOWNLOAD and SHORT_DOWNLOAD operations. +For size 1, 2, 4, 8 it uses single "atomic" writes assuming valid aligned target memory locations. +Its responsibility is only to copy memory. Any considerations regarding thread safety must be explicitly managed. +This is alsoa requirement to the tool, which must ensure that the data is consistent by choosing the right granularity for DOWNLOAD and SHORT_DOWNLOAD operations. */ // Copy of size bytes from data to gXcp.MtaPtr or gXcp.MtaAddr depending on the addressing mode uint8_t XcpWriteMta(uint8_t size, const uint8_t *data) { +#ifdef XCP_ENABLE_SEG_ADDRESSING // EXT == XCP_ADDR_EXT_SEG calibration segment memory access -#ifdef XCP_ENABLE_CALSEG_LIST if (XcpAddrIsSeg(gXcp.MtaExt)) { uint8_t res = XcpCalSegWriteMemory(gXcp.MtaAddr, size, data); gXcp.MtaAddr += size; @@ -1010,8 +1015,8 @@ uint8_t XcpWriteMta(uint8_t size, const uint8_t *data) { } #endif - // EXT == XCP_ADDR_EXT_APP Application specific memory access #ifdef XCP_ENABLE_APP_ADDRESSING + // EXT == XCP_ADDR_EXT_APP Application specific memory access if (XcpAddrIsApp(gXcp.MtaExt)) { uint8_t res = ApplXcpWriteMemory(gXcp.MtaAddr, size, data); gXcp.MtaAddr += size; @@ -1032,7 +1037,7 @@ uint8_t XcpWriteMta(uint8_t size, const uint8_t *data) { // sleepUs(1); // } - // Fast write with atomic copies of basic types, assuming correctly aligned target memory locations + // Fast write with "atomic" copies of basic types, assuming correctly aligned target memory locations switch (size) { case 1: *gXcp.MtaPtr = *data; @@ -1060,8 +1065,8 @@ uint8_t XcpWriteMta(uint8_t size, const uint8_t *data) { // Copying of size bytes from data to gXcp.MtaPtr or gXcp.MtaAddr, depending on the addressing mode static uint8_t XcpReadMta(uint8_t size, uint8_t *data) { +#ifdef XCP_ENABLE_SEG_ADDRESSING // EXT == XCP_ADDR_EXT_SEG calibration segment memory access -#ifdef XCP_ENABLE_CALSEG_LIST if (XcpAddrIsSeg(gXcp.MtaExt)) { uint8_t res = XcpCalSegReadMemory(gXcp.MtaAddr, size, data); gXcp.MtaAddr += size; @@ -1069,8 +1074,8 @@ static uint8_t XcpReadMta(uint8_t size, uint8_t *data) { } #endif - // EXT == XCP_ADDR_EXT_APP Application specific memory access #ifdef XCP_ENABLE_APP_ADDRESSING + // EXT == XCP_ADDR_EXT_APP Application specific memory access if (XcpAddrIsApp(gXcp.MtaExt)) { uint8_t res = ApplXcpReadMemory(gXcp.MtaAddr, size, data); gXcp.MtaAddr += size; @@ -1078,7 +1083,7 @@ static uint8_t XcpReadMta(uint8_t size, uint8_t *data) { } #endif - // Ext == XCP_ADDR_EXT_ABS Standard memory access by absolute address pointer + // Ext == XCP_ADDR_EXT_PTR - Standard memory access by pointer if (gXcp.MtaExt == XCP_ADDR_EXT_PTR) { if (gXcp.MtaPtr == NULL) return CRC_ACCESS_DENIED; @@ -1087,8 +1092,8 @@ static uint8_t XcpReadMta(uint8_t size, uint8_t *data) { return 0; // Ok } - // Ext == XCP_ADDR_EXT_A2L A2L file upload address space #ifdef XCP_ENABLE_IDT_A2L_UPLOAD + // Ext == XCP_ADDR_EXT_A2L - A2L file upload address space if (gXcp.MtaExt == XCP_ADDR_EXT_A2L) { if (!ApplXcpReadA2L(size, gXcp.MtaAddr, data)) return CRC_ACCESS_DENIED; // Access violation @@ -1097,51 +1102,80 @@ static uint8_t XcpReadMta(uint8_t size, uint8_t *data) { } #endif - return CRC_ACCESS_DENIED; // Access violation, illegal address or extension + return CRC_ACCESS_DENIED; // Access violation, illegal address or addressing mode } // Set MTA +// Sets the memory transfer address in gXcp.MtaAddr/gXcp.MtaExt +// Absolute addressing mode: +// Converted to pointer addressing mode gXcp.MtaPtr=ApplXcpGetBaseAddr()+XcpAddrDecodeAbsOffset(gXcp.MtaAddr) and gXcp.MtaExt=XCP_ADDR_EXT_PTR +// EPK access is gXcp.MtaPtr=XcpGetEpk() and gXcp.MtaExt=XCP_ADDR_EXT_PTR +// Absolute access to calibration segments is converted to segment relative addressing mode gXcp.MtaExt=XCP_ADDR_EXT_SEG +// Other addressing mode are left unchanged +// Called by XCP commands SET_MTA, SHORT_DOWNLOAD and SHORT_UPLOAD uint8_t XcpSetMta(uint8_t ext, uint32_t addr) { gXcp.MtaExt = ext; gXcp.MtaAddr = addr; -#ifndef XCP_ENABLE_EPK_CALSEG + gXcp.MtaPtr = NULL; // MtaPtr not defined + + // If not EPK calibration segment or addressing mode 0 is absolute +#if !defined(XCP_ENABLE_EPK_CALSEG) || (defined(XCP_ENABLE_ABS_ADDRESSING) && (XCP_ADDR_EXT_ABS == 0)) // Direct EPK access if (gXcp.MtaExt == XCP_ADDR_EXT_EPK && gXcp.MtaAddr == XCP_ADDR_EPK) { gXcp.MtaPtr = (uint8_t *)XcpGetEpk(); gXcp.MtaExt = XCP_ADDR_EXT_PTR; - } else + return CRC_CMD_OK; + } #endif + #ifdef XCP_ENABLE_DYN_ADDRESSING - // Event relative addressing mode, MtaPtr unknown yet - if (XcpAddrIsDyn(gXcp.MtaExt)) { - gXcp.MtaPtr = NULL; // MtaPtr not used - } else + // Event relative addressing mode + if (XcpAddrIsDyn(gXcp.MtaExt)) { + return CRC_CMD_OK; + } #endif -#ifdef XCP_ENABLE_CALSEG_LIST - // Segment relative addressing mode - if (XcpAddrIsSeg(gXcp.MtaExt)) { - gXcp.MtaPtr = NULL; // MtaPtr not used - } else + +#ifdef XCP_ENABLE_REL_ADDRESSING + // Relative addressing mode + if (XcpAddrIsRel(gXcp.MtaExt)) { + return CRC_CMD_OK; + } #endif -#if defined(XCP_ENABLE_APP_ADDRESSING) - // Application specific addressing mode - if (XcpAddrIsApp(gXcp.MtaExt)) { - gXcp.MtaPtr = NULL; // MtaPtr not used - } else + +#ifdef XCP_ENABLE_SEG_ADDRESSING + // Segment relative addressing mode + if (XcpAddrIsSeg(gXcp.MtaExt)) { + return CRC_CMD_OK; + } +#endif + +#ifdef XCP_ENABLE_APP_ADDRESSING + // Application specific addressing mode + if (XcpAddrIsApp(gXcp.MtaExt)) { + return CRC_CMD_OK; + } #endif + #ifdef XCP_ENABLE_ABS_ADDRESSING - // Absolute addressing mode - if (XcpAddrIsAbs(gXcp.MtaExt)) { - gXcp.MtaPtr = ApplXcpGetBaseAddr() + gXcp.MtaAddr; - gXcp.MtaExt = XCP_ADDR_EXT_PTR; - } else -#endif - { - return CRC_OUT_OF_RANGE; // Unsupported addressing mode for direct memory access - } + // Absolute addressing mode + if (XcpAddrIsAbs(gXcp.MtaExt)) { + gXcp.MtaPtr = (uint8_t *)ApplXcpGetBaseAddr() + XcpAddrDecodeAbsOffset(gXcp.MtaAddr); + gXcp.MtaExt = XCP_ADDR_EXT_PTR; +#ifdef XCP_ENABLE_CALSEG_LIST + // Check for calibration segment absolute address (XcpSetMta is not performance critical) + tXcpCalSegIndex calseg = XcpFindCalSegByAddr(gXcp.MtaPtr); + if (calseg != XCP_UNDEFINED_CALSEG) { + tXcpCalSeg *c = &gXcp.CalSegList.calseg[calseg]; + gXcp.MtaExt = XCP_ADDR_EXT_SEG; + gXcp.MtaAddr = XcpAddrEncodeSegIndex(calseg, gXcp.MtaPtr - c->default_page); // Convert to segment relative address + } +#endif + return CRC_CMD_OK; + } +#endif - return CRC_CMD_OK; + return CRC_OUT_OF_RANGE; // Unsupported addressing mode } /**************************************************************************/ @@ -1152,7 +1186,7 @@ uint8_t XcpSetMta(uint8_t ext, uint32_t addr) { #ifdef XCP_ENABLE_CHECKSUM #if (XCP_CHECKSUM_TYPE == XCP_CHECKSUM_TYPE_CRC16CCITT) -static const uint16_t CRC16CCITTtab[256] = { +static const uint16_t gXcpCRC16CCITTtab[256] = { 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7u, 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1efu, 0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6u, 0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3deu, 0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485u, 0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58du, 0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4u, 0xb75b, 0xa77a, 0x9719, 0x8738, @@ -1182,7 +1216,7 @@ static uint8_t calcChecksum(uint32_t checksum_size, uint32_t *checksum_result) { uint8_t res = XcpReadMta(1, &value); if (res != CRC_CMD_OK) return res; - sum = CRC16CCITTtab[((uint8_t)(sum >> 8)) ^ value] ^ (uint16_t)(sum << 8); + sum = gXcpCRC16CCITTtab[((uint8_t)(sum >> 8)) ^ value] ^ (uint16_t)(sum << 8); } *checksum_result = (uint32_t)sum; @@ -1294,6 +1328,11 @@ tXcpEventId XcpCreateIndexedEvent(const char *name, uint16_t index, uint32_t cyc STRNCPY(gXcp.EventList.event[e].name, name, XCP_MAX_EVENT_NAME); gXcp.EventList.event[e].name[XCP_MAX_EVENT_NAME] = 0; gXcp.EventList.event[e].priority = priority; +#ifdef XCP_ENABLE_DAQ_PRESCALER + gXcp.EventList.event[e].daq_prescaler = 0; + gXcp.EventList.event[e].daq_prescaler_cnt = 0; +#endif + gXcp.EventList.event[e].daq_first = XCP_UNDEFINED_DAQ_LIST; gXcp.EventList.event[e].cycleTimeNs = cycleTimeNs; DBG_PRINTF3("Create Event %u: %s index=%u, cycle=%uns, prio=%u\n", e, gXcp.EventList.event[e].name, index, cycleTimeNs, priority); return e; @@ -1368,11 +1407,16 @@ static void XcpClearDaq(void) { gXcp.DaqLists->res = 0xBEAC; #ifdef XCP_MAX_EVENT_COUNT - uint16_t event; - for (event = 0; event < XCP_MAX_EVENT_COUNT; event++) { +#ifdef XCP_ENABLE_DAQ_EVENT_LIST + for (uint16_t event = 0; event < gXcp.EventList.count; event++) { + gXcp.EventList.event[event].daq_first = XCP_UNDEFINED_DAQ_LIST; + } +#else + for (uint16_t event = 0; event < XCP_MAX_EVENT_COUNT; event++) { gXcp.DaqLists->daq_first[event] = XCP_UNDEFINED_DAQ_LIST; } #endif +#endif } // Check if there is sufficient memory for the values of DaqCount, OdtCount and OdtEntryCount @@ -1593,25 +1637,40 @@ static uint8_t XcpAddOdtEntry(uint32_t addr, uint8_t ext, uint8_t size) { // Set DAQ list mode // All DAQ lists associated with an event, must have the same address extension -static uint8_t XcpSetDaqListMode(uint16_t daq, uint16_t event, uint8_t mode, uint8_t prio) { +static uint8_t XcpSetDaqListMode(uint16_t daq, uint16_t event_id, uint8_t mode, uint8_t prescaler, uint8_t prio) { if (gXcp.DaqLists == NULL || daq >= gXcp.DaqLists->daq_count) return CRC_DAQ_CONFIG; +#ifndef XCP_ENABLE_DAQ_PRESCALER + if (prescaler > 1) + return CRC_OUT_OF_RANGE; // prescaler is not supported +#else + (void)prescaler; +#endif + #ifdef XCP_ENABLE_DAQ_EVENT_LIST - // If any events are registered, check if this event exists - if (gXcp.EventList.count > 0) { - tXcpEvent *e = XcpGetEvent(event); // Check if event exists - if (e == NULL) - return CRC_OUT_OF_RANGE; - } + // Check if this event exists + tXcpEvent *event = XcpGetEvent(event_id); // Check if event exists + if (event == NULL) + return CRC_OUT_OF_RANGE; + +// Set the prescaler to the associated event, individual prescaler per DAQ list are not supported +#ifdef XCP_ENABLE_DAQ_PRESCALER +#ifndef XCP_ENABLE_DAQ_EVENT_LIST +#error "XCP_ENABLE_DAQ_PRESCALER requires XCP_ENABLE_DAQ_EVENT_LIST" +#endif + event->daq_prescaler = prescaler; // Conflicts are not checked + event->daq_prescaler_cnt = 0; +#endif + #endif #ifdef XCP_ENABLE_DYN_ADDRESSING // Check if the DAQ list requires a specific event and it matches - uint16_t event0 = DaqListEventChannel(daq); - if (event0 != XCP_UNDEFINED_EVENT_ID && event != event0) + uint16_t event_id0 = DaqListEventChannel(daq); + if (event_id0 != XCP_UNDEFINED_EVENT_ID && event_id != event_id0) return CRC_DAQ_CONFIG; // Error event not unique // Check all DAQ lists with same event have the same address extension @@ -1628,14 +1687,14 @@ static uint8_t XcpSetDaqListMode(uint16_t daq, uint16_t event, uint8_t mode, uin #endif #endif - DaqListEventChannel(daq) = event; + DaqListEventChannel(daq) = event_id; DaqListMode(daq) = mode; DaqListPriority(daq) = prio; - // Add daq to linked list of daq lists already associated to this event + // Append daq to linked list of daq lists already associated to this event #ifdef XCP_MAX_EVENT_COUNT - uint16_t daq0 = DaqListFirst(event); - uint16_t *daq0_next = &DaqListFirst(event); + uint16_t daq0 = DaqListFirst(event_id); + uint16_t *daq0_next = &DaqListFirst(event_id); while (daq0 != XCP_UNDEFINED_DAQ_LIST) { assert(daq0 < gXcp.DaqLists->daq_count); daq0 = DaqListNext(daq0); @@ -1876,9 +1935,7 @@ static void XcpTriggerDaqList(tQueueHandle queueHandle, uint16_t daq, const uint // Trigger event // DAQ must be running -static void XcpTriggerDaqEvent(tQueueHandle queueHandle, tXcpEventId event, const uint8_t **bases, uint64_t clock) { - - uint16_t daq; +static void XcpTriggerDaqEvent(tQueueHandle queueHandle, tXcpEventId event_id, const uint8_t **bases, uint64_t clock) { // No DAQ lists allocated if (gXcp.DaqLists == NULL) @@ -1888,25 +1945,17 @@ static void XcpTriggerDaqEvent(tQueueHandle queueHandle, tXcpEventId event, cons if (!isDaqRunning()) return; - // Event is invalid - if (event >= XCP_MAX_EVENT_COUNT) { - DBG_PRINTF_ERROR("Event %u out of range\n", event); - return; - } - // Get clock, if not given as parameter if (clock == 0) clock = ApplXcpGetClock64(); -#ifndef XCP_MAX_EVENT_COUNT - - // @@@@ Non optimized version for arbitrary event ids +#ifndef XCP_MAX_EVENT_COUNT // Basic mode for arbitrary event ids // Loop over all active DAQ lists associated to the current event - for (daq = 0; daq < gXcp.DaqLists->daq_count; daq++) { + for (uint16_t daq = 0; daq < gXcp.DaqLists->daq_count; daq++) { if ((DaqListState(daq) & DAQ_STATE_RUNNING) == 0) continue; // DAQ list not active - if (DaqListEventChannel(daq) != event) + if (DaqListEventChannel(daq) != event_id) continue; // DAQ list not associated with this event #ifndef XCP_ENABLE_DAQ_ADDREXT @@ -1920,18 +1969,35 @@ static void XcpTriggerDaqEvent(tQueueHandle queueHandle, tXcpEventId event, cons } /* daq */ -#else +#else // Event number space is limited to XCP_MAX_EVENT_COUNT, with and without event list - // Optimized - // Loop over linked list of daq lists associated to event - if (event >= XCP_MAX_EVENT_COUNT) - return; // Event out of range +#ifdef XCP_ENABLE_DAQ_EVENT_LIST + if (event_id >= gXcp.EventList.count) { + DBG_PRINTF_ERROR("Event id %u out of range\n", event_id); + return; + } - daq = DaqListFirst(event); - while (daq != XCP_UNDEFINED_DAQ_LIST) { +#ifdef XCP_ENABLE_DAQ_PRESCALER + tXcpEvent *event = &gXcp.EventList.event[event_id]; + event->daq_prescaler_cnt++; + if (event->daq_prescaler_cnt >= event->daq_prescaler) { + event->daq_prescaler_cnt = 0; + } else { + return; + } +#endif + +#else + if (event_id >= XCP_MAX_EVENT_COUNT) { + DBG_PRINTF_ERROR("Event id %u out of range\n", event_id); + return; + } +#endif + + // Loop over all active DAQ lists associated to the current event + for (uint16_t daq = DaqListFirst(event_id); daq != XCP_UNDEFINED_DAQ_LIST; daq = DaqListNext(daq)) { assert(daq < gXcp.DaqLists->daq_count); if (DaqListState(daq) & DAQ_STATE_RUNNING) { // DAQ list active - #ifndef XCP_ENABLE_DAQ_ADDREXT // Address extension unique per DAQ list // Build base pointer for this DAQ list @@ -1941,7 +2007,6 @@ static void XcpTriggerDaqEvent(tQueueHandle queueHandle, tXcpEventId event, cons XcpTriggerDaqList(queueHandle, daq, bases, clock); // Trigger DAQ list #endif } - daq = DaqListNext(daq); } #endif } @@ -1992,12 +2057,12 @@ void XcpEventExt_(tXcpEventId event, const uint8_t **bases) { } void XcpEventExt(tXcpEventId event, const uint8_t *base) { - const uint8_t *bases[4] = {NULL, ApplXcpGetBaseAddr(), base, base}; + const uint8_t *bases[4] = {xcp_get_base_addr(), xcp_get_base_addr(), base, base}; XcpEventExt_(event, bases); } void XcpEventExtAt(tXcpEventId event, const uint8_t *base, uint64_t clock) { - const uint8_t *bases[4] = {NULL, ApplXcpGetBaseAddr(), base, base}; + const uint8_t *bases[4] = {xcp_get_base_addr(), xcp_get_base_addr(), base, base}; XcpEventExt_At(event, bases, clock); } @@ -2005,7 +2070,7 @@ void XcpEventExtAt(tXcpEventId event, const uint8_t *base, uint64_t clock) { void XcpEvent(tXcpEventId event) { if (!isDaqRunning()) return; // DAQ not running - const uint8_t *bases[4] = {NULL, ApplXcpGetBaseAddr(), NULL, NULL}; + const uint8_t *bases[4] = {xcp_get_base_addr(), xcp_get_base_addr(), NULL, NULL}; XcpTriggerDaqEvent(gXcp.Queue, event, bases, 0); } #endif @@ -2032,6 +2097,11 @@ void XcpDisconnect(void) { gXcp.SessionStatus &= (uint16_t)(~SS_CONNECTED); ApplXcpDisconnect(); + + // Must be done in disconnected state +#if defined(OPTION_CAL_PERSISTENCE) && defined(OPTION_CAL_PERSIST_ON_DISCONNECT) + XcpBinWrite(XCP_CALPAGE_WORKING_PAGE); +#endif } } @@ -2191,13 +2261,8 @@ static uint8_t XcpAsyncCommand(bool async, const uint32_t *cmdBuf, uint8_t cmdLe case CC_GET_COMM_MODE_INFO: { CRM_LEN = CRM_GET_COMM_MODE_INFO_LEN; CRM_GET_COMM_MODE_INFO_DRIVER_VERSION = XCP_DRIVER_VERSION; -#ifdef XCP_ENABLE_INTERLEAVED - CRM_GET_COMM_MODE_INFO_COMM_OPTIONAL = 0; // CMO_INTERLEAVED_MODE; - CRM_GET_COMM_MODE_INFO_QUEUE_SIZE = XCP_INTERLEAVED_QUEUE_SIZE; -#else CRM_GET_COMM_MODE_INFO_COMM_OPTIONAL = 0; CRM_GET_COMM_MODE_INFO_QUEUE_SIZE = 0; -#endif CRM_GET_COMM_MODE_INFO_MAX_BS = 0; CRM_GET_COMM_MODE_INFO_MIN_ST = 0; } break; @@ -2231,14 +2296,11 @@ static uint8_t XcpAsyncCommand(bool async, const uint32_t *cmdBuf, uint8_t cmdLe CRM_GET_ID_MODE = 0x01; // Transfer mode is "Uncompressed data in response" } else */ - { // EPK provided via upload + { + // EPK provided via upload gXcp.MtaAddr = XCP_ADDR_EPK; -#ifdef XCP_ENABLE_EPK_CALSEG - gXcp.MtaExt = XCP_ADDR_EXT_EPK; -#else gXcp.MtaPtr = (uint8_t *)XcpGetEpk(); gXcp.MtaExt = XCP_ADDR_EXT_PTR; -#endif CRM_GET_ID_LENGTH = ApplXcpGetId(CRO_GET_ID_TYPE, NULL, 0); CRM_GET_ID_MODE = 0x00; // Transfer mode is "Uncompressed data upload" } @@ -2472,11 +2534,8 @@ static uint8_t XcpAsyncCommand(bool async, const uint32_t *cmdBuf, uint8_t cmdLe case CC_GET_PAG_PROCESSOR_INFO: { check_len(CRO_GET_PAG_PROCESSOR_INFO_LEN); CRM_LEN = CRM_GET_PAG_PROCESSOR_INFO_LEN; -#ifdef XCP_ENABLE_EPK_CALSEG CRM_GET_PAG_PROCESSOR_INFO_MAX_SEGMENTS = (uint8_t)(gXcp.CalSegList.count + 1); // +1 for segment 0 (EPK) -#else CRM_GET_PAG_PROCESSOR_INFO_MAX_SEGMENTS = (uint8_t)(gXcp.CalSegList.count); -#endif #ifdef XCP_ENABLE_FREEZE_CAL_PAGE CRM_GET_PAG_PROCESSOR_INFO_PROPERTIES = PAG_PROPERTY_FREEZE; // Freeze mode supported #else @@ -2566,21 +2625,22 @@ static uint8_t XcpAsyncCommand(bool async, const uint32_t *cmdBuf, uint8_t cmdLe CRM_GET_DAQ_PROCESSOR_INFO_DAQ_KEY_BYTE |= DAQ_EXT_DAQ; #endif - // Dynamic DAQ list configuration, timestamps, resume and overload indication supported - // Identification field can not be switched off, bitwise data stimulation not supported, Prescaler not supported - CRM_GET_DAQ_PROCESSOR_INFO_PROPERTIES = (uint8_t)( - DAQ_PROPERTY_CONFIG_TYPE | - DAQ_PROPERTY_TIMESTAMP | + // Dynamic DAQ list configuration, timestamps, resume, prescaler and overrun indication options + // Identification field can not be switched off, bitwise data stimulation not supported + CRM_GET_DAQ_PROCESSOR_INFO_PROPERTIES = (uint8_t)(DAQ_PROPERTY_CONFIG_TYPE | DAQ_PROPERTY_TIMESTAMP | #ifdef XCP_ENABLE_OVERRUN_INDICATION_PID - DAQ_OVERLOAD_INDICATION_PID) | + DAQ_OVERLOAD_INDICATION_PID | #endif #ifdef XCP_ENABLE_OVERRUN_INDICATION_EVENT - DAQ_OVERLOAD_INDICATION_EVENT | + DAQ_OVERLOAD_INDICATION_EVENT | #endif #ifdef XCP_ENABLE_DAQ_RESUME - DAQ_PROPERTY_RESUME | + DAQ_PROPERTY_RESUME | #endif - 0); +#ifdef XCP_ENABLE_DAQ_PRESCALER + DAQ_PROPERTY_PRESCALER | +#endif + 0); } break; @@ -2679,6 +2739,7 @@ static uint8_t XcpAsyncCommand(bool async, const uint32_t *cmdBuf, uint8_t cmdLe uint16_t event = CRO_SET_DAQ_LIST_MODE_EVENTCHANNEL; uint8_t mode = CRO_SET_DAQ_LIST_MODE_MODE; uint8_t prio = CRO_SET_DAQ_LIST_MODE_PRIORITY; + uint8_t prescaler = CRO_SET_DAQ_LIST_MODE_PRESCALER; if (gXcp.DaqLists == NULL) error(CRC_SEQUENCE); if (daq >= gXcp.DaqLists->daq_count) @@ -2687,9 +2748,7 @@ static uint8_t XcpAsyncCommand(bool async, const uint32_t *cmdBuf, uint8_t cmdLe error(CRC_OUT_OF_RANGE); // none of these modes implemented if ((mode & DAQ_MODE_TIMESTAMP) == 0) error(CRC_CMD_SYNTAX); // timestamp is fixed on - if (CRO_SET_DAQ_LIST_MODE_PRESCALER > 1) - error(CRC_OUT_OF_RANGE); // prescaler is not implemented - check_error(XcpSetDaqListMode(daq, event, mode, prio)); + check_error(XcpSetDaqListMode(daq, event, mode, prescaler, prio)); break; } @@ -3088,7 +3147,7 @@ void XcpPrint(const char *str) { // Init XCP protocol layer singleton once // This is a once initialization of the static gXcp singleton data structure // Memory for the DAQ lists are provided by the caller if daq_lists != NULL -void XcpInit(bool activate) { +void XcpInit(const char *name, const char *epk, bool activate) { // Once if (isActivated()) { // Already initialized, just ignore return; @@ -3097,16 +3156,40 @@ void XcpInit(bool activate) { // Clear XCP state memset((uint8_t *)&gXcp, 0, sizeof(gXcp)); + gXcp.SessionStatus = SS_INITIALIZED; if (!activate) { - gXcp.SessionStatus = SS_INITIALIZED; - return; // Do not activate XCP protocol layer + return; // Do not activate XCP protocol layer, state is safe now } + // Initialize the base address for absolute addressing +#ifdef XCP_ENABLE_ABS_ADDRESSING + ApplXcpGetBaseAddr(); + assert(xcp_get_base_addr() != NULL); +#endif + // Allocate DAQ list memory gXcp.DaqLists = malloc(sizeof(tXcpDaqLists)); assert(gXcp.DaqLists != NULL); XcpClearDaq(); + // Initialize high resolution clock + clockInit(); + + // Set the EPK + if (epk != NULL) { + XcpSetEpk(epk); + } + + // Set the project name + if (name != NULL) { + XcpSetProjectName(name); + } + +#ifdef XCP_ENABLE_DAQ_CLOCK_MULTICAST + gXcp.ClusterId = XCP_MULTICAST_CLUSTER_ID; // XCP default cluster id (multicast addr 239,255,0,1, group 127,0,1 (mac 01-00-5E-7F-00-01) + XcpEthTlSetClusterId(gXcp.ClusterId); +#endif + #ifdef XCP_ENABLE_CALSEG_LIST XcpInitCalSegList(); #endif @@ -3115,15 +3198,26 @@ void XcpInit(bool activate) { XcpInitEventList(); #endif -#ifdef XCP_ENABLE_DAQ_CLOCK_MULTICAST - gXcp.ClusterId = XCP_MULTICAST_CLUSTER_ID; // XCP default cluster id (multicast addr 239,255,0,1, group 127,0,1 (mac 01-00-5E-7F-00-01) - XcpEthTlSetClusterId(gXcp.ClusterId); -#endif + // Activate XCP protocol layer + gXcp.SessionStatus |= SS_ACTIVATED; - // Initialize high resolution clock - clockInit(); +// Check if the BIN file exists and load it +// If successful, do not start the A2L generation process, but still provide the existing A2L file to the XCP client +#ifdef OPTION_CAL_PERSISTENCE + if (XcpBinLoad()) { + gXcp.SessionStatus |= SS_PERSISTENCE_LOADED; + } +#endif - gXcp.SessionStatus = SS_INITIALIZED | SS_ACTIVATED; +#ifdef XCP_ENABLE_CALSEG_LIST +#ifdef XCP_ENABLE_EPK_CALSEG + // Create the EPK calibration segment + // Make sure it has index 0 + // @@@@ TODO: Currently the EPK segment is treated like any other segment, even if it is read-only and does not need 2 pages + tXcpCalSegIndex epk_seg = XcpCreateCalSeg("epk", XcpGetEpk(), STRNLEN(XcpGetEpk(), XCP_EPK_MAX_LENGTH)); + assert(epk_seg == 0); +#endif +#endif } // Start XCP protocol layer @@ -3141,6 +3235,8 @@ void XcpStart(tQueueHandle queueHandle, bool resumeMode) { DBG_PRINTF3(" Version=%u.%u, MAX_CTO=%u, MAX_DTO=%u, DAQ_MEM=%u, MAX_DAQ=%u, MAX_ODT_ENTRY=%u, MAX_ODT_ENTRYSIZE=%u, %u KiB memory used\n", XCP_PROTOCOL_LAYER_VERSION >> 8, XCP_PROTOCOL_LAYER_VERSION & 0xFF, XCPTL_MAX_CTO_SIZE, XCPTL_MAX_DTO_SIZE, XCP_DAQ_MEM_SIZE, (1 << sizeof(uint16_t) * 8) - 1, (1 << sizeof(uint16_t) * 8) - 1, (1 << (sizeof(uint8_t) * 8)) - 1, (unsigned int)sizeof(gXcp) / 1024); + + DBG_PRINT3(" Addressing scheme=" XCP_ADDRESS_MODE "\n"); DBG_PRINT3(" Options=("); // Print activated XCP protocol options @@ -3150,6 +3246,12 @@ void XcpStart(tQueueHandle queueHandle, bool resumeMode) { #ifdef XCP_DAQ_CLOCK_64BIT // Use 64 Bit time stamps DBG_PRINT("DAQ_CLK_64BIT,"); #endif +#ifdef XCP_ENABLE_DAQ_ADDREXT // Enable DAQ with individual address extension per entry + DBG_PRINT("DAQ_ADDREXT,"); +#endif +#ifdef XCP_ENABLE_DAQ_PRESCALER // Enable DAQ prescaler + DBG_PRINT("DAQ_PRESCALER,"); +#endif #ifdef XCP_ENABLE_PTP // Enable server clock synchronized to PTP grandmaster clock DBG_PRINT("GM_CLK_INFO,"); #endif @@ -3165,14 +3267,26 @@ void XcpStart(tQueueHandle queueHandle, bool resumeMode) { #ifdef XCP_ENABLE_CALSEG_LIST // Enable XCP calibration segments DBG_PRINT("CALSEG_LIST,"); #endif +#ifdef XCP_ENABLE_EPK_CALSEG // Enable EPK calibration segment + DBG_PRINT("EPK_CALSEG,"); +#endif +#ifdef XCP_ENABLE_COPY_CAL_PAGE + DBG_PRINT("COPY_CAL_PAGE,"); +#endif +#ifdef XCP_ENABLE_A2L_UPLOAD // Enable A2L upload to host + DBG_PRINT("A2L_UPLOAD,"); +#endif +#ifdef XCP_ENABLE_FREEZE_CAL_PAGE // Enable freeze calibration page + DBG_PRINT("FREEZE_CAL_PAGE,"); +#endif +#ifdef XCP_ENABLE_DAQ_RESUME // Enable DAQ resume mode + DBG_PRINT("DAQ_RESUME,"); +#endif #ifdef XCP_ENABLE_DAQ_EVENT_INFO // Enable XCP event info by protocol instead of A2L DBG_PRINT("DAQ_EVT_INFO,"); #endif #ifdef XCP_ENABLE_CHECKSUM // Enable BUILD_CHECKSUM command DBG_PRINT("CHECKSUM,"); -#endif -#ifdef XCP_ENABLE_INTERLEAVED // Enable interleaved command execution - DBG_PRINT("INTERLEAVED,"); #endif DBG_PRINT(")\n"); } @@ -3200,7 +3314,7 @@ void XcpStart(tQueueHandle queueHandle, bool resumeMode) { uint8_t uuid[8] = XCP_DAQ_CLOCK_UIID; memcpy(gXcp.ClockInfo.server.UUID, uuid, 8); - DBG_PRINTF4(" ServerClock: ticks=%u, unit=%s, size=%u, UUID=%02X-%02X-%02X-%02X-%02X-%02X-%02X-%02X\n\n", gXcp.ClockInfo.server.timestampTicks, + DBG_PRINTF4(" ServerClock: ticks=%u, unit=%s, size=%u, UUID=%02X-%02X-%02X-%02X-%02X-%02X-%02X-%02X\n", gXcp.ClockInfo.server.timestampTicks, (gXcp.ClockInfo.server.timestampUnit == DAQ_TIMESTAMP_UNIT_1NS) ? "ns" : "us", gXcp.ClockInfo.server.nativeTimestampSize, gXcp.ClockInfo.server.UUID[0], gXcp.ClockInfo.server.UUID[1], gXcp.ClockInfo.server.UUID[2], gXcp.ClockInfo.server.UUID[3], gXcp.ClockInfo.server.UUID[4], gXcp.ClockInfo.server.UUID[5], gXcp.ClockInfo.server.UUID[6], gXcp.ClockInfo.server.UUID[7]); @@ -3268,7 +3382,7 @@ void XcpReset(void) { XcpFreeCalSegList(); #endif - XcpInit(true); // Reset XCP state + XcpInit(NULL, NULL, false); // Reset XCP state } /****************************************************************************/ diff --git a/src/xcpLite.h b/src/xcpLite.h index 511c9483..ed9984e5 100644 --- a/src/xcpLite.h +++ b/src/xcpLite.h @@ -1,5 +1,5 @@ #pragma once -#define __XCP_LITE_H__ +#define __XCPLITE_H__ /*---------------------------------------------------------------------------- | File: @@ -34,17 +34,16 @@ extern "C" { /****************************************************************************/ // Initialization for the XCP Protocol Layer -void XcpInit(bool activate); +void XcpInit(const char *name, const char *epk, bool activate); bool XcpIsInitialized(void); bool XcpIsActivated(void); void XcpStart(tQueueHandle queueHandle, bool resumeMode); void XcpReset(void); +// Project name +const char *XcpGetProjectName(void); + // EPK software version identifier -#ifndef XCP_EPK_MAX_LENGTH -#define XCP_EPK_MAX_LENGTH 31 // Maximum length of EPK string -#endif -void XcpSetEpk(const char *epk); const char *XcpGetEpk(void); // XCP command processor @@ -119,12 +118,15 @@ void XcpSetLogLevel(uint8_t level); #endif typedef struct { - uint16_t daqList; // associated DAQ list - uint16_t index; // Event instance index, 0 = single instance, 1.. = multiple instances - uint32_t cycleTimeNs; // cycle time in nanoseconds, 0 means sporadic event - uint8_t priority; // priority 0 = queued, 1 = pushing, 2 = realtime - uint8_t res; // reserved - char name[XCP_MAX_EVENT_NAME + 1]; // event name + uint32_t cycleTimeNs; // Cycle time in nanoseconds, 0 means sporadic event + uint16_t index; // Event instance index, 0 = single instance, 1.. = multiple instances + uint16_t daq_first; // First associated DAQ list, linked list + uint8_t priority; // Priority 0 = queued, >=1 flushing +#ifdef XCP_ENABLE_DAQ_PRESCALER + uint8_t daq_prescaler; // Current prescaler set with SET_DAQ_LIST_MODE + uint8_t daq_prescaler_cnt; // Current prescaler counter +#endif + char name[XCP_MAX_EVENT_NAME + 1]; // Event name } tXcpEvent; typedef struct { @@ -136,9 +138,9 @@ typedef struct { // Create an XCP event (internal use) tXcpEventId XcpCreateIndexedEvent(const char *name, uint16_t index, uint32_t cycleTimeNs, uint8_t priority); // Add a measurement event to event list, return event number (0..MAX_EVENT-1) -tXcpEventId XcpCreateEvent(const char *name, uint32_t cycleTimeNs /* ns */, uint8_t priority /* 0-normal, >=1 realtime*/); +tXcpEventId XcpCreateEvent(const char *name, uint32_t cycleTimeNs /* ns */, uint8_t priority /* 0 = queued, >=1 flushing*/); // Add a measurement event to event list, return event number (0..MAX_EVENT-1), thread safe, if name exists, an instance id is appended to the name -tXcpEventId XcpCreateEventInstance(const char *name, uint32_t cycleTimeNs /* ns */, uint8_t priority /* 0-normal, >=1 realtime*/); +tXcpEventId XcpCreateEventInstance(const char *name, uint32_t cycleTimeNs /* ns */, uint8_t priority /* 0 = queued, >=1 flushing */); // Get event list tXcpEventList *XcpGetEventList(void); @@ -179,7 +181,7 @@ lock-free, wait-free CalSeg RCU: if free_page != NULL Copy xcp_page to free_page NULL -> free_page --> xcp_page --> ecu_page_next - ECU thread XcpCalSegLock: + ECU thread XcpLockCalSeg: if ecu_page_next != ecu_page ecu_page_next --> ecu_page --> free_page @@ -213,7 +215,7 @@ typedef struct { bool write_pending; // write pending because write delay bool free_page_hazard; // safe free page use is not guaranteed yet, it may be in use #ifdef XCP_ENABLE_FREEZE_CAL_PAGE - uint8_t mode; // reuested for freeze and preload + uint8_t mode; // requested for freeze and preload uint32_t file_pos; // position of the calibration segment in the persistency file #endif char name[XCP_MAX_CALSEG_NAME + 1]; @@ -228,7 +230,7 @@ typedef struct { } tXcpCalSegList; // Get calibration segment list -tXcpCalSegList const *XcpGetCalSegList(void); +const tXcpCalSegList *XcpGetCalSegList(void); // Find a calibration segment by name, returns XCP_UNDEFINED_CALSEG if not found tXcpCalSegIndex XcpFindCalSeg(const char *name); @@ -248,7 +250,7 @@ uint32_t XcpGetCalSegBaseAddress(tXcpCalSegIndex calseg); tXcpCalSegIndex XcpCreateCalSeg(const char *name, const void *default_page, uint16_t size); // Lock a calibration segment and return a pointer to the ECU page -uint8_t const *XcpLockCalSeg(tXcpCalSegIndex calseg); +const uint8_t *XcpLockCalSeg(tXcpCalSegIndex calseg); // Unlock a calibration segment // Single threaded, must be used in the thread it was created @@ -315,8 +317,8 @@ typedef struct { uint16_t config_id; uint16_t res1; #endif -#ifdef XCP_MAX_EVENT_COUNT - uint16_t daq_first[XCP_MAX_EVENT_COUNT]; // Event channel to DAQ list mapping +#if !defined(XCP_ENABLE_DAQ_EVENT_LIST) && defined(XCP_MAX_EVENT_COUNT) + uint16_t daq_first[XCP_MAX_EVENT_COUNT]; // Event channel to DAQ list mapping when there is no event management #endif // DAQ array @@ -385,6 +387,9 @@ typedef struct { uint64_t DaqStartClock64; // DAQ start time uint32_t DaqOverflowCount; // DAQ queue overflow + /* Project Name */ + char ProjectName[XCP_PROJECT_NAME_MAX_LENGTH + 1]; // Project name string, null terminated + /* EPK */ char Epk[XCP_EPK_MAX_LENGTH + 1]; // EPK string, null terminated @@ -437,8 +442,13 @@ void ApplXcpStopDaq(void); /* Address conversions from A2L address to pointer and vice versa in absolute addressing mode */ #ifdef XCP_ENABLE_ABS_ADDRESSING +extern const uint8_t *gXcpBaseAddr; // For runtime optimization, use xcp_get_base_addr() instead of ApplXcpGetBaseAddr() +const uint8_t *ApplXcpGetBaseAddr(void); // Get the base address for DAQ data access */ +#define xcp_get_base_addr() gXcpBaseAddr // For runtime optimization, use xcp_get_base_addr() instead of ApplXcpGetBaseAddr() uint32_t ApplXcpGetAddr(const uint8_t *p); // Calculate the xcpAddr address from a pointer -uint8_t *ApplXcpGetBaseAddr(void); // Get the base address for DAQ data access */ +#else +#define ApplXcpGetBaseAddr() +#define xcp_get_base_addr() NULL #endif /* Read and write memory */ @@ -494,10 +504,8 @@ bool ApplXcpGetClockInfoGrandmaster(uint8_t *uuid, uint8_t *epoch, uint8_t *stra /* DAQ resume */ #ifdef XCP_ENABLE_DAQ_RESUME - uint8_t ApplXcpDaqResumeStore(uint16_t config_id); uint8_t ApplXcpDaqResumeClear(void); - #endif /* Get info for GET_ID command (pointer to and length of data) */ @@ -511,9 +519,6 @@ uint32_t ApplXcpGetId(uint8_t id, uint8_t *buf, uint32_t bufLen); bool ApplXcpReadA2L(uint8_t size, uint32_t offset, uint8_t *data); #endif -// Logging -void ApplXcpSetLogLevel(uint8_t level); - // Register XCP callbacks void ApplXcpRegisterConnectCallback(bool (*cb_connect)(void)); void ApplXcpRegisterPrepareDaqCallback(uint8_t (*cb_prepare_daq)(void)); @@ -535,10 +540,9 @@ void ApplXcpRegisterCallbacks(bool (*cb_connect)(void), uint8_t (*cb_prepare_daq uint8_t (*cb_init_cal)(uint8_t src_page, uint8_t dst_page), uint8_t (*cb_read)(uint32_t src, uint8_t size, uint8_t *dst), uint8_t (*cb_write)(uint32_t dst, uint8_t size, const uint8_t *src, uint8_t delay), uint8_t (*cb_flush)(void)); -// Set/get the A2L file name (for GET_ID IDT_ASAM_NAME, IDT_ASAM_NAME and for IDT_ASAM_UPLOAD) -#define XCP_A2L_FILENAME_MAX_LENGTH 255 // Maximum length of A2L filename with extension -void ApplXcpSetA2lName(const char *name); -const char *ApplXcpGetA2lName(void); +// Set/get the A2L file name (for GET_ID IDT_ASAM_NAME and for IDT_ASAM_UPLOAD) +void XcpSetA2lName(const char *name); +const char *XcpGetA2lName(void); #ifdef __cplusplus } // extern "C" diff --git a/src/xcpQueue32.c b/src/xcpQueue32.c index 4ba06510..127012e4 100644 --- a/src/xcpQueue32.c +++ b/src/xcpQueue32.c @@ -301,7 +301,7 @@ tQueueBuffer QueuePeek(tQueueHandle queueHandle, bool flush, uint32_t *packets_l if (packets_lost != NULL) { *packets_lost = queue->packets_lost; if (*packets_lost > 0) - DBG_PRINTF4("QueuePeek: packets_lost=%" PRIu32 "\n", *packets_lost); + DBG_PRINTF5("QueuePeek: packets_lost=%" PRIu32 "\n", *packets_lost); queue->packets_lost = 0; // Reset lost packets count } @@ -314,7 +314,7 @@ tQueueBuffer QueuePeek(tQueueHandle queueHandle, bool flush, uint32_t *packets_l // Flush tail segment buffer if it is not empty if (queue->queue_len == 1 && b->size > 0 && flush) { - DBG_PRINT4("QueuePeek: flush\n"); + DBG_PRINT5("QueuePeek: flush\n"); newSegmentBuffer(queue); } diff --git a/src/xcp_cfg.h b/src/xcp_cfg.h index a7042db6..f8d89364 100644 --- a/src/xcp_cfg.h +++ b/src/xcp_cfg.h @@ -28,40 +28,91 @@ // #define XCP_PROTOCOL_LAYER_VERSION 0x0103 // GET_DAQ_CLOCK_MULTICAST, GET_TIME_CORRELATION_PROPERTIES #define XCP_PROTOCOL_LAYER_VERSION 0x0104 // PACKED_MODE, CC_START_STOP_SYNCH prepare +// Maximum length of EPK string (excluding null terminator), must be odd +#define XCP_EPK_MAX_LENGTH 31 + +// Maximum length of the project name (excluding null terminator), must be odd +#define XCP_PROJECT_NAME_MAX_LENGTH 31 + /*----------------------------------------------------------------------------*/ // Enable calibration segment list management -#ifndef XCPLIB_FOR_RUST // Not needed for Rust xcp-lite, has its own calibration segment management and uses the callbacks #ifdef OPTION_CAL_SEGMENTS #define XCP_ENABLE_CALSEG_LIST #if OPTION_CAL_SEGMENT_COUNT > 0 #define XCP_MAX_CALSEG_COUNT OPTION_CAL_SEGMENT_COUNT #endif #endif // OPTION_CAL_SEGMENTS -#endif /*----------------------------------------------------------------------------*/ /* Address, address extension coding */ /* -Address extensions: -0x00 - Calibration segment relative addressing mode (XCP_ADDR_EXT_SEG) +Address extensions and addressing modes: + +XCPlite absolute addressing: XCPLITE__ACSDD (default) +0x00 - Calibration segment relative addressing mode (XCP_ADDR_EXT_SEG with u16 offset) 0x01 - Absolute addressing mode (XCP_ADDR_EXT_ABS) -0x02-0x04 - Event based relative addressing mode with asynchronous access ([XCP_ADDR_EXT_DYN+x]) +0x02 - Stackframe relative (Event based relative addressing mode with asynchronous access and i16 offset) +0x03-0x04 - Pointer relative (Event based relative addressing mode with asynchronous access and i16 offset) 0x05-0xFC - Reserved 0xFD - A2L upload memory space (XCP_ADDR_EXT_A2L) 0xFE - MTA pointer address space (XCP_ADDR_EXT_PTR) 0xFF - Undefined address extension (XCP_UNDEFINED_ADDR_EXT) + +XCPlite relative addressing: XCPLITE__CASDD: +0x00 - Absolute addressing mode (XCP_ADDR_EXT_ABS) +0x01 - Calibration segment relative addressing mode (XCP_ADDR_EXT_SEG) + +xcp-lite for Rust XCPLITE__CADR: +0x00 - Absolute addressing mode (XCP_ADDR_EXT_ABS) +0x01 - Calibration segment relative addressing mode (XCP_ADDR_EXT_SEG with u16 offset) +0x02 - Pointer relative (Event based relative addressing mode with asynchronous access and i16 offset) +0x03 - Stackframe relative (Not event based, with i32 offset) + +... */ // --- Event based addressing mode without asynchronous access -#ifdef XCPLIB_FOR_RUST +#ifdef XCPLIB_FOR_RUST // XCPLIB_FOR_RUST is set by the Rust build script + +// Rust xcp-lite uses only relative addressing (0x03) and dynamic addressing (0x02) and application specific addressing (0x00) for calibration via callbacks +// Calibration segments are currently handled by the application +#define XCP_ADDRESS_MODE_XCPLITE__C_DR +#define XCP_ADDRESS_MODE "XCPLITE__C_DR" +#define XCP_ENABLE_APP_ADDRESSING +#define XCP_ADDR_EXT_APP 0x00 #define XCP_ENABLE_REL_ADDRESSING +#define XCP_ADDR_EXT_REL 0x03 +#define XCP_ENABLE_DYN_ADDRESSING +#define XCP_ADDR_EXT_DYN 0x02 +#define XCP_ADDR_EXT_DYN_MAX 0x02 + +#else + +// C/C++ XCPlite uses absolute, dynamic and calibration segment relative addressing +#define XCP_ENABLE_ABS_ADDRESSING +#define XCP_ENABLE_SEG_ADDRESSING +#if !defined(XCP_ENABLE_CALSEG_LIST) || defined(OPTION_CAL_SEGMENTS_ABS) +#define XCP_ADDRESS_MODE_XCPLITE__ACSDD +#define XCP_ADDRESS_MODE "XCPLITE__ACSDD" +#define XCP_ADDR_EXT_ABS 0x00 +#define XCP_ADDR_EXT_SEG 0x01 +#else +#define XCP_ADDRESS_MODE_XCPLITE__CASDD +#define XCP_ADDRESS_MODE "XCPLITE__CASDD" +#define XCP_ADDR_EXT_ABS 0x01 +#define XCP_ADDR_EXT_SEG 0x00 #endif +#define XCP_ENABLE_DYN_ADDRESSING +#define XCP_ADDR_EXT_DYN 0x02 +#define XCP_ADDR_EXT_DYN_MAX 0x04 + +#endif + #ifdef XCP_ENABLE_REL_ADDRESSING // Use addr_ext XCP_ADDR_EXT_REL to indicate relative addr format (rel_base + (offset as int32_t)) // Used for stack frame relative addressing -#define XCP_ADDR_EXT_REL 0x03 // Event relative address format #define XcpAddrIsRel(addr_ext) ((addr_ext) == XCP_ADDR_EXT_REL) #define XcpAddrEncodeRel(signed_int32_offset) ((uint32_t)(signed_int32_offset & 0xFFFFFFFF)) #define XcpAddrDecodeRelOffset(addr) (int32_t)(addr) // signed address offset @@ -69,17 +120,9 @@ Address extensions: #endif // XCP_ENABLE_REL_ADDRESSING // --- Event based addressing modes with asynchronous access -#define XCP_ENABLE_DYN_ADDRESSING #ifdef XCP_ENABLE_DYN_ADDRESSING -// Use addr_ext DYN to indicate relative addr format (dyn_base + (((event as uint16_t) <<16) | offset as int16_t)) -#define XCP_ADDR_EXT_DYN 0x02 // Relative address format 0x02..0x04 (stack, base_addr1, base_addr2) -#ifdef XCPLIB_FOR_RUST -#define XCP_ADDR_EXT_DYN_MAX 0x02 -#else -#define XCP_ADDR_EXT_DYN_MAX 0x03 -#endif - +// Relative addr format (dyn_base + (((event as uint16_t) <<16) | offset as int16_t)) #define XcpAddrIsDyn(addr_ext) (((addr_ext) >= XCP_ADDR_EXT_DYN && (addr_ext) <= XCP_ADDR_EXT_DYN_MAX)) #define XcpAddrEncodeDyn(signed_int16_offset, event) (((uint32_t)(event) << 16) | ((signed_int16_offset) & 0xFFFF)) #define XcpAddrDecodeDynEvent(addr) (uint16_t)((addr) >> 16) // event @@ -88,12 +131,10 @@ Address extensions: #endif // XCP_ENABLE_DYN_ADDRESSING // --- Asynchronous absolute addressing mode (not thread safe) -#define XCP_ENABLE_ABS_ADDRESSING #ifdef XCP_ENABLE_ABS_ADDRESSING -// Use addr_ext XCP_ADDR_EXT_ABS to indicate absolute addr format (ApplXcpGetBaseAddr() + (addr as uint32_t)) +// Absolute addr format (xcp_get_base_addr() + (addr as uint32_t)) // Used for global data -#define XCP_ADDR_EXT_ABS 0x01 // Absolute address format #define XcpAddrIsAbs(addr_ext) ((addr_ext) == XCP_ADDR_EXT_ABS) #define XcpAddrEncodeAbs(p) ApplXcpGetAddr(p) // Calculate absolute address encoding from a pointer, application specific function #define XcpAddrDecodeAbsOffset(addr) (uint32_t)(addr) @@ -101,23 +142,30 @@ Address extensions: #endif // XCP_ENABLE_ABS_ADDRESSING // --- Calibration segment relative addressing mode -#ifdef XCP_ENABLE_CALSEG_LIST // If calibration segments are enabled +#ifdef XCP_ENABLE_SEG_ADDRESSING + +#ifndef XCP_ENABLE_CALSEG_LIST +#error "XCP_ENABLE_SEG_ADDRESSING requires XCP_ENABLE_CALSEG_LIST" +#endif + +#define XcpAddrIsSeg(addr_ext) ((addr_ext) == XCP_ADDR_EXT_SEG) // Enable the EPK calibration segment to detect HEX file incompatibility #ifdef OPTION_CAL_SEGMENT_EPK #define XCP_ENABLE_EPK_CALSEG #endif -#define XCP_ADDR_EXT_SEG 0x00 // Segment relative address format, must be 0, CANape does not support memory segment address extensions -#define XcpAddrIsSeg(addr_ext) ((addr_ext) == XCP_ADDR_EXT_SEG) +#if defined(XCP_ENABLE_EPK_CALSEG) && XCP_ADDR_EXT_SEG == 0 + +#define XCP_ADDR_EPK 0x80000000 // Segment relative EPK address +#define XcpAddrEncodeSegIndex(seg_index, offset) (0x80000000 + ((uint32_t)((seg_index)) << 16) + (offset)) +// Assuming the EPK calibration segment has the lowest segment index (0) -#ifdef XCP_ENABLE_EPK_CALSEG -#define XCP_ADDR_EPK 0x80000000 -#define XcpAddrEncodeSegIndex(seg_index, offset) \ - (0x80000000 + (((uint32_t)((seg_index) + 1)) << 16) + (offset)) // +1, because 0x80000000 is used to access the virtual A2L EPK segment #else -#define XCP_ADDR_EPK 0xFFFF0000 -#define XcpAddrEncodeSegIndex(seg_index, offset) (0x80000000 + (((uint32_t)(seg_index)) << 16) + (offset)) // +1, because 0x80000000 is used to access the virtual A2L EPK segment + +#define XCP_ADDR_EPK 0xFFFFFF00 // Absolute EPK address +#define XcpAddrEncodeSegIndex(seg_index, offset) (0x80000000 + (((uint32_t)(seg_index)) << 16) + (offset)) + #endif #define XcpAddrEncodeSegNumber(seg_number, offset) (0x80000000 + (((uint32_t)((seg_number))) << 16) + (offset)) @@ -126,9 +174,12 @@ Address extensions: #else +#define XCP_ADDR_EPK 0xFFFFFF00 + +#endif // XCP_ENABLE_SEG_ADDRESSING + // --- Application specific addressing mode for external calibration segment management and memory access // If built-in calibration segment management is disabled -#define XCP_ENABLE_APP_ADDRESSING #ifdef XCP_ENABLE_APP_ADDRESSING // Use addr_ext XCP_ADDR_EXT_APP/SEG to indicate application specific addr format or segment relative address format @@ -139,10 +190,6 @@ Address extensions: #endif // XCP_ENABLE_APP_ADDRESSING -#define XCP_ADDR_EPK 0xFFFF0000 - -#endif // !defined(XCP_ENABLE_CALSEG_LIST) - // --- Internally used address extensions // Use addr_ext XCP_ADDR_EXT_EPK to indicate EPK upload memory space // A2L specification does not allow to specify the address extension for the EPK address, we use a virtual calibration segment (number 0, address ext 0) @@ -159,19 +206,35 @@ Address extensions: /*----------------------------------------------------------------------------*/ /* Protocol features and commands */ -#define XCP_ENABLE_CAL_PAGE // Enable calibration page commands +#define XCP_ENABLE_CAL_PAGE // Enable calibration page commands (GET/SET_CAL_PAGE) #ifdef XCP_ENABLE_CAL_PAGE -// Enable calibration page initialization (FLASH->RAM copy) +// Enable calibration page initialization (COPY_CAL_PAGE, FLASH->RAM copy only) #define XCP_ENABLE_COPY_CAL_PAGE - -// Enable calibration page freeze request +// Activate workaround for CANape issue with COPY_CAL_PAGE command +// COPY_CAL_PAGE always copies all segments from default to working, this is not compliant to the XCP specification +#define XCP_ENABLE_COPY_CAL_PAGE_WORKAROUND + +// Enable working page freeze request +// There are 2 modes: +// 1. A persisted working page will become the new reference page (this requires segment relative addressing mode) +// 2. Just persist the working page #ifdef OPTION_CAL_PERSISTENCE + +// Enable the FREEZE_CAL_PAGE command +// Required for calibration segment persistency #define XCP_ENABLE_FREEZE_CAL_PAGE + +// Enable persistency of reference (default) page, instead of working page +// This requires segment relative addressing mode ! +#ifdef OPTION_CAL_REFERENCE_PAGE_PERSISTENCY +#define XCP_ENABLE_REFERENCE_PAGE_PERSISTENCY #endif #endif +#endif // XCP_ENABLE_CAL_PAGE + // Enable checksum calculation command #define XCP_ENABLE_CHECKSUM #define XCP_CHECKSUM_TYPE XCP_CHECKSUM_TYPE_CRC16CCITT @@ -208,21 +271,24 @@ Address extensions: #ifdef OPTION_DAQ_MEM_SIZE #define XCP_DAQ_MEM_SIZE OPTION_DAQ_MEM_SIZE #else -#define XCP_DAQ_MEM_SIZE (1024 * 5) // Amount of memory for DAQ tables, each ODT entry (e.g. measurement variable or memory block) needs 5 bytes +#define XCP_DAQ_MEM_SIZE (1024 * 6) // Amount of memory for DAQ tables, each ODT entry (e.g. measurement variable or memory block) needs 5 bytes #endif -// Enable DAQ resume mode -#define XCP_ENABLE_DAQ_RESUME +// Enable DAQ resume mode, requires XCP_ENABLE_DAQ_EVENT_LIST +// #define XCP_ENABLE_DAQ_RESUME + +// Enable prescaler for DAQ events, requires XCP_ENABLE_DAQ_EVENT_LIST +#define XCP_ENABLE_DAQ_PRESCALER // Overrun indication via PID -// Not needed for Ethernet, client detects data loss via transport layer counters +// Not needed for Ethernet, client detects data loss via transport layer counter gaps // #define XCP_ENABLE_OVERRUN_INDICATION_PID /*----------------------------------------------------------------------------*/ /* DAQ event management */ // Enable event list -#ifndef XCPLIB_FOR_RUST // Not needed for Rust xcp-lite, has its own event management +#ifndef XCPLIB_FOR_RUST // // Set by the Rust build script, not needed for Rust xcp-lite, currently has its own event management #define XCP_ENABLE_DAQ_EVENT_LIST #endif diff --git a/test/a2l_test/src/main.c b/test/a2l_test/src/main.c index e8ce8ede..fbc9009a 100644 --- a/test/a2l_test/src/main.c +++ b/test/a2l_test/src/main.c @@ -23,12 +23,14 @@ extern bool A2lCheckFinalizeOnConnect(void); // return false; // } +#define A2lTOOL_PATH "../a2ltool/target/debug/a2ltool" + #define OPTION_PROJECT_NAME "a2l_test" // A2L project name +#define OPTION_PROJECT_EPK "_" __TIME__ // EPK version string #define OPTION_LOG_LEVEL 4 // Log level, 0 = no log, 1 = error, 2 = warning, 3 = info, 4 = debugs #define OPTION_USE_TCP false // TCP or UDP #define OPTION_SERVER_PORT 5555 // Port #define OPTION_SERVER_ADDR {0, 0, 0, 0} // Bind addr, 0.0.0.0 = ANY -#define OPTION_QUEUE_SIZE 1024 * 32 // Size of the measurement queue in bytes, must be a multiple of 8 //----------------------------------------------------------------------------------------------------- // Measurements @@ -239,13 +241,13 @@ int main() { // XCP must be initialized and activated before A2L generation // Initialize the XCP singleton, activate XCP // If XCP is not activated, the server will not start and all XCP instrumentation will be passive with minimal overhead - XcpInit(true); + XcpInit(OPTION_PROJECT_NAME, OPTION_PROJECT_EPK, true); XcpSetLogLevel(OPTION_LOG_LEVEL); // Set the log level for XCP // No need to start the XCP server // Initialize the XCP Server uint8_t addr[4] = OPTION_SERVER_ADDR; - if (!A2lInit(OPTION_PROJECT_NAME, "EPK", addr, OPTION_SERVER_PORT, OPTION_USE_TCP, A2L_MODE_WRITE_ALWAYS | A2L_MODE_AUTO_GROUPS)) { + if (!A2lInit(addr, OPTION_SERVER_PORT, OPTION_USE_TCP, A2L_MODE_WRITE_ALWAYS | A2L_MODE_AUTO_GROUPS)) { return 1; } @@ -277,7 +279,7 @@ int main() { A2lCreateMapWithSharedAxis(static_map2, 8, 4, "Global memory parameter", "", -128, 127, "static_map2_x_axis", "static_map2_y_axis"); A2lCreateAxis(static_map2_x_axis, 8, "Global memory parameter", "unit", 0, 1000.0); A2lCreateAxis(static_map2_y_axis, 4, "Global memory parameter", "unit", 0, 500.0); - A2lCreateMapWithSharedAxis(static_map3, 8, 4, "Global memory parameter", "", -128, 127, "static_map3_x_axis", NULL); + A2lCreateMapWithSharedAxis(static_map3, 8, 4, "Global memory parameter", "", 0, 10000, "static_map3_x_axis", NULL); A2lCreateAxis(static_map3_x_axis, 8, "Global memory parameter", "unit", 0, 1000.0); // Create parameters in the struct instance params in global memory @@ -298,7 +300,7 @@ int main() { A2lCreateMapWithSharedAxis(static_params.map2, 8, 4, "Global memory parameter struct field", "", -128, 127, "static_params.map2_x_axis", "static_params.map2_y_axis"); A2lCreateAxis(static_params.map2_x_axis, 8, "Global memory parameter struct field", "unit", 0, 1000.0); A2lCreateAxis(static_params.map2_y_axis, 4, "Global memory parameter struct field", "unit", 0, 500.0); - A2lCreateMapWithSharedAxis(static_params.map3, 8, 4, "Global memory parameter struct field", "", -128, 127, "static_params.map3_x_axis", NULL); + A2lCreateMapWithSharedAxis(static_params.map3, 8, 4, "Global memory parameter struct field", "", 0, 127, "static_params.map3_x_axis", NULL); A2lCreateAxis(static_params.map3_x_axis, 8, "Global memory parameter struct field", "unit", 0, 1000.0); A2lEndGroup(); @@ -317,7 +319,7 @@ int main() { A2lTypedefParameterComponent(int8, params_t, "Parameter typedef field", "unit", -128, 127); A2lTypedefParameterComponent(int16, params_t, "Parameter typedef field", "unit", -32768, 32767); A2lTypedefParameterComponent(int32, params_t, "Parameter typedef field", "unit", -2147483647 - 1, 2147483647); - A2lTypedefParameterComponent(int_64, params_t, "Parameter typedef field", "unit", -1e19, 1e19); + A2lTypedefParameterComponent(int_64, params_t, "Parameter typedef field", "unit", -1e6, 1e6); A2lTypedefParameterComponent(float4, params_t, "Parameter typedef field", "unit", -1000.0, 1000.0); A2lTypedefParameterComponent(double8, params_t, "Parameter typedef field", "unit", -1000.0, 1000.0); A2lTypedefCurveComponent(curve1, params_t, 8, "Parameter typedef field", "unit", -20, 20); @@ -327,7 +329,7 @@ int main() { A2lTypedefMapComponentWithSharedAxis(map2, params_t, 8, 4, "Parameter typedef field", "", -128, 127, "map2_x_axis", "map2_y_axis"); A2lTypedefAxisComponent(map2_x_axis, params_t, 8, "Parameter typedef field", "unit", 0, 1000.0); A2lTypedefAxisComponent(map2_y_axis, params_t, 4, "Parameter typedef field", "unit", 0, 500.0); - A2lTypedefMapComponentWithSharedAxis(map3, params_t, 8, 4, "Parameter typedef field", "", -128, 127, "map3_x_axis", NULL); + A2lTypedefMapComponentWithSharedAxis(map3, params_t, 8, 4, "Parameter typedef field", "", 0, 127, "map3_x_axis", NULL); A2lTypedefAxisComponent(map3_x_axis, params_t, 8, "Parameter typedef field", "unit", 0, 1000.0); A2lTypedefEnd(); @@ -345,7 +347,7 @@ int main() { A2lCreateParameter(params.int8, "Parameter in calibration segment", "unit", -128, 127); A2lCreateParameter(params.int16, "Parameter in calibration segment", "unit", -32768, 32767); A2lCreateParameter(params.int32, "Parameter in calibration segment", "unit", -2147483647 - 1, 2147483647); - A2lCreateParameter(params.int_64, "Parameter in calibration segment", "unit", -1e19, 1e19); + A2lCreateParameter(params.int_64, "Parameter in calibration segment", "unit", -1e6, 1e6); A2lCreateParameter(params.float4, "Parameter in calibration segment", "unit", -1000.0, 1000.0); A2lCreateParameter(params.double8, "Parameter in calibration segment", "unit", -1000.0, 1000.0); A2lCreateCurve(params.curve1, 8, "Parameter in calibration segment", "unit", -20, 20); @@ -356,7 +358,7 @@ int main() { A2lCreateAxis(params.map3_x_axis, 8, "Comment", "unit", 0, 1000.0); A2lCreateCurveWithSharedAxis(params.curve2, 8, "Comment", "unit", 0, 1000.0, "params.curve2_axis"); A2lCreateMapWithSharedAxis(params.map2, 8, 4, "Comment", "", -128, 127, "params.map2_x_axis", "params.map2_y_axis"); - A2lCreateMapWithSharedAxis(params.map3, 8, 4, "Comment", "", -128, 127, "params.map3_x_axis", NULL); + A2lCreateMapWithSharedAxis(params.map3, 8, 4, "Comment", "", 0, 127, "params.map3_x_axis", NULL); //--------------------------------------------------------------------------------------------------------------------------------- // Measurement @@ -474,7 +476,8 @@ int main() { Display the XCP settings in the a2l file, if they exist */ printf("Running A2L validation tool...\n"); - int result = system("../a2ltool/target/release/a2ltool -c -s a2l_test.a2l"); + // int result = system(A2lTOOL_PATH " --check --strict a2l_test.a2l"); + int result = system(A2lTOOL_PATH " --check a2l_test.a2l"); if (result == 0) { printf("A2L validation passed\n"); } else { @@ -482,19 +485,19 @@ int main() { } // Compare a2l_test.a2l to the expected output in test/a2l_test/a2l_test_expected.a2l - printf("Comparing generated A2L file with expected output...\n"); - result = system("diff a2l_test.a2l ./test/a2l_test/a2l_test_expected.a2l"); - if (result == 0) { - printf("A2L file matches expected output\n"); - } else if (result == 1) { - printf("A2L file does not match expected output\n"); - } else { - printf("Error comparing A2L file, exit code: %d\n", result); - } + // printf("Comparing generated A2L file with expected output...\n"); + // result = system("diff a2l_test.a2l ./test/a2l_test/a2l_test_expected.a2l"); + // if (result == 0) { + // printf("A2L file matches expected output\n"); + // } else if (result == 1) { + // printf("A2L file does not match expected output\n"); + // } else { + // printf("Error comparing A2L file, exit code: %d\n", result); + // } // Run A2l update // printf("Running A2L update tool...\n"); - // result = system("../a2ltool/target/release/a2ltool -v -e build/a2l_test.out --update -o a2l_test_updated.a2l a2l_test.a2l"); + // result = system(A2lTOOL_PATH " --verbose --elffile build/a2l_test.out --update --output a2l_test_updated.a2l a2l_test.a2l"); // if (result == 0) { // printf("A2L update passed\n"); // } else { diff --git a/test/cal_test/src/main.cpp b/test/cal_test/src/main.cpp index 45429cad..3ae2dd5a 100644 --- a/test/cal_test/src/main.cpp +++ b/test/cal_test/src/main.cpp @@ -24,12 +24,13 @@ uint8_t XcpCalSegCommand(uint8_t cmd); //----------------------------------------------------------------------------------------------------- // XCP parameters -#define OPTION_PROJECT_NAME "cal_test" // A2L project name -#define OPTION_USE_TCP false // TCP or UDP -#define OPTION_SERVER_PORT 5555 // Port -#define OPTION_SERVER_ADDR {0, 0, 0, 0} // Bind addr, 0.0.0.0 = ANY -#define OPTION_QUEUE_SIZE (1024 * 256) // Size of the measurement queue in bytes, must be a multiple of 8 -#define OPTION_LOG_LEVEL 3 // Log level, 0 = no log, 1 = error, 2 = warning, 3 = info, 4 = debug +#define OPTION_PROJECT_NAME "cal_test" // A2L project name +#define OPTION_PROJECT_EPK __DATE__ "_" __TIME__ // EPK version string +#define OPTION_USE_TCP false // TCP or UDP +#define OPTION_SERVER_PORT 5555 // Port +#define OPTION_SERVER_ADDR {0, 0, 0, 0} // Bind addr, 0.0.0.0 = ANY +#define OPTION_QUEUE_SIZE (1024 * 256) // Size of the measurement queue in bytes, must be a multiple of 8 +#define OPTION_LOG_LEVEL 3 // Log level, 0 = no log, 1 = error, 2 = warning, 3 = info, 4 = debug #define DEFAULT_THREAD_COUNT 10 // Default number of threads #define DEFAULT_TEST_WRITE_COUNT 100000 // Default test writes @@ -161,7 +162,7 @@ int main(int argc, char *argv[]) { XcpSetLogLevel(OPTION_LOG_LEVEL); // Initialize XCP - XcpInit(true); + XcpInit(OPTION_PROJECT_NAME, OPTION_PROJECT_EPK, true); // Initialize XCP Server uint8_t addr[4] = OPTION_SERVER_ADDR; @@ -171,13 +172,13 @@ int main(int argc, char *argv[]) { } // Initialize A2L generation - if (!A2lInit(OPTION_PROJECT_NAME, nullptr, addr, OPTION_SERVER_PORT, OPTION_USE_TCP, A2L_MODE_WRITE_ALWAYS | A2L_MODE_FINALIZE_ON_CONNECT | A2L_MODE_AUTO_GROUPS)) { + if (!A2lInit(addr, OPTION_SERVER_PORT, OPTION_USE_TCP, A2L_MODE_WRITE_ALWAYS | A2L_MODE_FINALIZE_ON_CONNECT | A2L_MODE_AUTO_GROUPS)) { printf("Failed to initialize A2L generation\n"); return 1; } // Create the test calibration segment - auto calseg1 = xcplib::CreateCalSeg("TestParameters", kParameters); + auto calseg1 = xcplib::CreateCalSeg("kParameters", &kParameters); // Add the calibration segment description as a typedef instance to the A2L file A2lTypedefBegin(ParametersT, "A2L Typedef for ParametersT"); diff --git a/test/test_bintool.sh b/test/test_bintool.sh new file mode 100755 index 00000000..8e7fbf42 --- /dev/null +++ b/test/test_bintool.sh @@ -0,0 +1,449 @@ +#!/bin/bash + +# BINTOOL Test Script for Raspberry Pi +# This script tests the complete bintool workflow: +# 1. Sync project to target +# 2. Build demo on target (has multiple calibration segments) +# 3. Start demo XCP server +# 4. Download A2L and BIN files using xcp_client +# 5. Convert BIN to HEX using bintool +# 6. Upload HEX file back to target to verify round-trip +# +# Usage: ./test_bin2hex_pi.sh [demo_name] +# demo_name: hello_xcp, c_demo, cpp_demo, multi_thread_demo, struct_demo (default: cpp_demo) + +set -e # Exit on error + +#====================================================================================================================== +# Configuration +#====================================================================================================================== + +# Demo to test (can be overridden by command line argument) +DEMO_NAME="${1:-cpp_demo}" + +# Determine XCP protocol based on demo +# TCP demos: bpf_demo, hello_xcp, no_a2l_demo, struct_demo +# UDP demos: c_demo, cpp_demo, multi_thread_demo +case "$DEMO_NAME" in + bpf_demo|hello_xcp|no_a2l_demo|struct_demo) + XCP_PROTOCOL="--tcp" + ;; + *) + XCP_PROTOCOL="--udp" + ;; +esac + +# Test target connection details +TARGET_USER="rainer" +TARGET_HOST="192.168.0.206" +TARGET_PATH="~/XCPlite-RainerZ" +TARGET_EXECUTABLE="$TARGET_PATH/build/${DEMO_NAME}.out" + +# Tools +XCPCLIENT="xcp_client" # Installed via: cargo install --path (in xcp-lite project) +BINTOOL="bintool" # Installed via: cargo install --path tools/bintool + + +# Local paths +TEST_DIR="./test_bintool" +LOGFILE="$TEST_DIR/test_bintool.log" + +# Test files created during the test +A2L_FILE="$TEST_DIR/${DEMO_NAME}.a2l" +BIN_FILE="$TEST_DIR/${DEMO_NAME}.bin" +HEX_FROM_BIN="$TEST_DIR/${DEMO_NAME}_from_bin.hex" +HEX_FROM_XCP="$TEST_DIR/${DEMO_NAME}_from_xcp.hex" +BIN_BACKUP="$TEST_DIR/${DEMO_NAME}_backup.bin" +BIN_RESTORED="$TEST_DIR/${DEMO_NAME}_restored.bin" + +# Build type for target executable +BUILD_TYPE="Debug" + +#====================================================================================================================== +# Helper Functions +#====================================================================================================================== + +cleanup_target() { + echo "Cleaning up target processes..." + ssh $TARGET_USER@$TARGET_HOST "pkill -f ${DEMO_NAME}.out" 2>/dev/null || true + sleep 1 +} + +cleanup_local() { + echo "Cleaning up local test directory..." + rm -rf $TEST_DIR + mkdir -p $TEST_DIR +} + +#====================================================================================================================== +# Main Test Flow +#====================================================================================================================== + +echo "========================================================================================================" +echo "BINTOOL Test Script" +echo "========================================================================================================" +echo "Target: $TARGET_USER@$TARGET_HOST" +echo "Demo: $DEMO_NAME" +echo "Log: $LOGFILE" +echo "" +echo "Test workflow:" +echo " 1. Sync and build $DEMO_NAME on target" +echo " 2. Start XCP server ($DEMO_NAME generates BIN file on startup)" +echo " 3. Download A2L via XCP" +echo " 4. Upload calibration data via XCP to create HEX file (xcp_client --upload-bin)" +echo " 5. Download BIN file via scp" +echo " 6. Convert BIN → HEX using bintool" +echo " 7. Compare both HEX files (from XCP vs from BIN)" +echo " 8. Test round-trip: HEX → BIN" +echo "" + +# Initialize +cleanup_local +echo "" > $LOGFILE + +#--------------------------------------------------- +# Step 1: Sync project to target +#--------------------------------------------------- +echo "Step 1: Syncing project to target..." +rsync -avz --delete \ + --exclude=build/ \ + --exclude=.git/ \ + --exclude="*.o" \ + --exclude="*.out" \ + --exclude="*.a" \ + ./ $TARGET_USER@$TARGET_HOST:$TARGET_PATH/ >> $LOGFILE 2>&1 + +if [ $? -ne 0 ]; then + echo "❌ FAILED: Rsync to target" + exit 1 +fi +echo "✅ Sync completed" + +#--------------------------------------------------- +# Step 2: Build demo on target +#--------------------------------------------------- +echo "" +echo "Step 2: Building $DEMO_NAME on target..." +ssh $TARGET_USER@$TARGET_HOST "cd $TARGET_PATH && ./build.sh $BUILD_TYPE" >> $LOGFILE 2>&1 + +if [ $? -ne 0 ]; then + echo "❌ FAILED: Build on target" + exit 1 +fi +echo "✅ Build completed" + +#--------------------------------------------------- +# Step 3: Start demo XCP server +#--------------------------------------------------- +echo "" +echo "Step 3: Starting $DEMO_NAME XCP server on target..." +cleanup_target +ssh $TARGET_USER@$TARGET_HOST "cd $TARGET_PATH && $TARGET_EXECUTABLE" >> $LOGFILE 2>&1 & +SSH_PID=$! +sleep 3 +echo "✅ XCP server started (PID: $SSH_PID)" + +#--------------------------------------------------- +# Step 4: Upload calibration data via XCP to create HEX file +#--------------------------------------------------- +echo "" +echo "Step 4: Uploading calibration data from target via XCP..." +echo "(xcp_client --upload-bin reads calibration segments and creates Intel-Hex file)" +echo "Using protocol: $XCP_PROTOCOL" + +# Check if xcp_client is available +if ! command -v $XCPCLIENT &> /dev/null; then + echo "❌ FAILED: xcp_client not found in PATH" + echo "Please install it first from the xcp-lite project" + cleanup_target + exit 1 +fi + +$XCPCLIENT \ + --dest-addr=$TARGET_HOST \ + $XCP_PROTOCOL \ + --upload-a2l \ + --upload-bin \ + >> $LOGFILE 2>&1 + +if [ $? -ne 0 ]; then + echo "❌ FAILED: xcp_client upload from target" + cleanup_target + exit 1 +fi + +# Move uploaded files to test directory +mv ${DEMO_NAME}.a2l $A2L_FILE 2>/dev/null || true +mv ${DEMO_NAME}.hex $HEX_FROM_XCP 2>/dev/null || true + +if [ ! -f "$HEX_FROM_XCP" ]; then + echo "❌ FAILED: HEX file not created by xcp_client" + cleanup_target + exit 1 +fi + +echo "✅ Created HEX file via XCP: $HEX_FROM_XCP ($(wc -l < "$HEX_FROM_XCP") lines)" + +#--------------------------------------------------- +# Step 5: Download BIN file from target +#--------------------------------------------------- +echo "" +echo "Step 5: Downloading BIN file from target using scp..." +echo "(BIN file is generated by $DEMO_NAME on startup with timestamp in name)" + +# Find the BIN file on target (name includes build time: ${DEMO_NAME}_v10_21_01_18.bin) +# BIN file is created by ${DEMO_NAME}.out in the project root directory +echo "Finding BIN file on target..." +TARGET_BIN_PATTERN="$TARGET_PATH/${DEMO_NAME}_v*.bin" +TARGET_BIN_FILE=$(ssh $TARGET_USER@$TARGET_HOST "ls -t $TARGET_BIN_PATTERN 2>/dev/null | head -1") + +if [ -z "$TARGET_BIN_FILE" ]; then + echo "❌ FAILED: Could not find BIN file on target matching pattern: $TARGET_BIN_PATTERN" + cleanup_target + exit 1 +fi + +echo "Found BIN file on target: $TARGET_BIN_FILE" + +# Download the BIN file +scp $TARGET_USER@$TARGET_HOST:$TARGET_BIN_FILE $BIN_FILE >> $LOGFILE 2>&1 + +if [ $? -ne 0 ]; then + echo "❌ FAILED: BIN file download from target" + cleanup_target + exit 1 +fi + +if [ ! -f "$BIN_FILE" ]; then + echo "❌ FAILED: BIN file not found after download" + cleanup_target + exit 1 +fi + +# Get just the filename for display +BIN_FILENAME=$(basename "$TARGET_BIN_FILE") +echo "✅ Downloaded BIN file from target: $BIN_FILENAME → $BIN_FILE ($(stat -f%z "$BIN_FILE" 2>/dev/null || stat -c%s "$BIN_FILE") bytes)" + +#--------------------------------------------------- +# Step 6: Check bintool availability +#--------------------------------------------------- +echo "" +echo "Step 6: Checking bintool availability..." +if ! command -v $BINTOOL &> /dev/null; then + echo "❌ FAILED: bintool not found in PATH" + echo "Please install it first: cargo install --path tools/bintool" + cleanup_target + exit 1 +fi +echo "✅ bintool ready ($(which $BINTOOL))" + +#--------------------------------------------------- +# Step 7: Convert BIN to HEX +#--------------------------------------------------- +echo "" +echo "Step 7: Converting BIN to HEX using bintool (new convenient syntax)..." +$BINTOOL $BIN_FILE --dump --verbose +$BINTOOL $BIN_FILE -o $HEX_FROM_BIN +if [ $? -ne 0 ]; then + echo "❌ FAILED: Reading BIN" + cleanup_target + exit 1 +fi +# Simple syntax: just provide BIN file, HEX is auto-derived +$BINTOOL $BIN_FILE -o $HEX_FROM_BIN +if [ $? -ne 0 ]; then + echo "❌ FAILED: BIN to HEX conversion" + cleanup_target + exit 1 +fi + + +if [ ! -f "$HEX_FROM_BIN" ]; then + echo "❌ FAILED: HEX file not created" + cleanup_target + exit 1 +fi + +echo "✅ Created HEX file from BIN: $HEX_FROM_BIN ($(wc -l < "$HEX_FROM_BIN") lines)" + +#--------------------------------------------------- +# Step 8: Compare HEX files +#--------------------------------------------------- +echo "" +echo "Step 8: Comparing HEX files (XCP vs BINTOOL)..." +echo "HEX from XCP: $HEX_FROM_XCP" +echo "HEX from BIN: $HEX_FROM_BIN" + +# Show first few lines of each +echo "" +echo "First 10 lines of HEX from XCP:" +head -10 $HEX_FROM_XCP + +echo "" +echo "First 10 lines of HEX from BIN:" +head -10 $HEX_FROM_BIN + +# Compare files +echo "" +if cmp -s $HEX_FROM_XCP $HEX_FROM_BIN; then + echo "✅ HEX files are IDENTICAL - bintool produces same output as xcp_client!" +else + echo "ℹ️ HEX files differ - comparing content..." + + # Count segments in each + SEGMENTS_XCP=$(grep -c "^:02000004" $HEX_FROM_XCP || echo "0") + SEGMENTS_BIN=$(grep -c "^:02000004" $HEX_FROM_BIN || echo "0") + + echo "Segments in XCP HEX: $SEGMENTS_XCP" + echo "Segments in BIN HEX: $SEGMENTS_BIN" + + # Show differences + echo "" + echo "Differences (if any):" + diff $HEX_FROM_XCP $HEX_FROM_BIN || true + + echo "" + echo "✅ Both HEX files created successfully (minor differences may be expected)" +fi + +#--------------------------------------------------- +# Step 9: Display HEX file info +#--------------------------------------------------- +echo "" +echo "Step 9: HEX file detailed info..." +echo "HEX from BIN file:" +echo "HEX from BIN file:" +echo "First 10 lines of HEX file:" +head -10 $HEX_FROM_BIN +echo "..." +echo "Last 2 lines of HEX file:" +tail -2 $HEX_FROM_BIN + +# Count segments +SEGMENT_COUNT=$(grep -c "^:02000004" $HEX_FROM_BIN || echo "0") +echo "" +echo "Number of segments (Extended Linear Address records): $SEGMENT_COUNT" + +#--------------------------------------------------- +# Step 10: Test round-trip conversion +#--------------------------------------------------- +echo "" +echo "Step 10: Testing round-trip conversion (HEX → BIN)..." + +# Backup original BIN +cp $BIN_FILE $BIN_BACKUP + +# Apply HEX to BIN (using HEX from BIN conversion) - new convenient syntax +$BINTOOL $BIN_FILE --apply-hex $HEX_FROM_BIN + +if [ $? -ne 0 ]; then + echo "❌ FAILED: HEX to BIN conversion" + cleanup_target + exit 1 +fi + +# Compare original and restored +echo "Comparing original and restored BIN files..." +if cmp -s $BIN_BACKUP $BIN_FILE; then + echo "✅ Round-trip successful: Files are identical" +else + echo "❌ FAILED: Round-trip produced different file" + cleanup_target + exit 1 +fi + +#--------------------------------------------------- +# Step 11: Test incomplete HEX rejection +#--------------------------------------------------- +echo "" +echo "Step 11: Testing incomplete segment data rejection..." + +# Create incomplete HEX file with truncated data in a segment (not just fewer lines) +# This creates a HEX with segment data that's too short +echo ":0200000480007A" > $TEST_DIR/incomplete.hex +echo ":0400007631305F3153" >> $TEST_DIR/incomplete.hex # EPK segment with only 4 bytes instead of 12 +echo ":00000001FF" >> $TEST_DIR/incomplete.hex + +# Try to apply incomplete HEX (should fail because segment 0 needs 12 bytes but only has 4) +# Try to apply incomplete HEX (should fail) +$BINTOOL $BIN_FILE --apply-hex $TEST_DIR/incomplete.hex 2>&1 | tee $TEST_DIR/incomplete_test.log + +if [ ${PIPESTATUS[0]} -eq 0 ]; then + echo "❌ FAILED: Incomplete segment data was accepted (should have been rejected)" + cleanup_target + exit 1 +fi + +# Verify BIN file unchanged +if cmp -s $BIN_BACKUP $BIN_FILE; then + echo "✅ Incomplete segment data correctly rejected, BIN file unchanged" +else + echo "❌ FAILED: BIN file was modified by incomplete segment data" + cleanup_target + exit 1 +fi + +#--------------------------------------------------- +# Step 12: Test partial HEX update (subset of segments) +#--------------------------------------------------- +echo "" +echo "Step 12: Testing partial HEX update (subset of segments)..." + +# Restore backup +cp $BIN_BACKUP $BIN_FILE + +# Create HEX file with only first 3 segments (not all 4) +head -n -5 $HEX_FROM_BIN > $TEST_DIR/partial.hex 2>/dev/null || \ + tail -r $HEX_FROM_BIN | tail -n +6 | tail -r > $TEST_DIR/partial.hex +echo ":00000001FF" >> $TEST_DIR/partial.hex + +# This should succeed and update only the 3 segments present +$BINTOOL $BIN_FILE --apply-hex $TEST_DIR/partial.hex 2>&1 | tee $TEST_DIR/partial_test.log + +if [ ${PIPESTATUS[0]} -ne 0 ]; then + echo "❌ FAILED: Partial HEX update failed" + cleanup_target + exit 1 +fi + +echo "✅ Partial HEX update successful (updated 3 of 4 segments)" + +#--------------------------------------------------- +# Step 13: Cleanup +#--------------------------------------------------- +echo "" +echo "Step 13: Cleanup..." +cleanup_target +echo "✅ Target processes stopped" + +#====================================================================================================================== +# Summary +#====================================================================================================================== + +echo "" +echo "========================================================================================================" +echo "✅ ALL TESTS PASSED" +echo "========================================================================================================" +echo "" +echo "Test Results:" +echo " - Demo tested: $DEMO_NAME" +echo " - Project synced and built on target" +echo " - XCP server started successfully" +echo " - HEX file created via XCP upload: $HEX_FROM_XCP" +echo " - BIN file downloaded from target via scp: $BIN_FILE" +echo " - HEX file created from BIN: $HEX_FROM_BIN ($SEGMENT_COUNT segments)" +echo " - HEX files comparison completed" +echo " - Round-trip conversion verified (BIN → HEX → BIN)" +echo " - Incomplete segment data rejection verified" +echo " - Partial HEX update tested (subset of segments)" +echo " - BIN file integrity maintained" +echo "" +echo "Files available in: $TEST_DIR/" +echo " - ${DEMO_NAME}.a2l : A2L file from target" +echo " - ${DEMO_NAME}.bin : Original BIN file from target (via scp)" +echo " - ${DEMO_NAME}_from_xcp.hex : HEX created by xcp_client --upload-bin" +echo " - ${DEMO_NAME}_from_bin.hex : HEX created by bintool" +echo " - ${DEMO_NAME}_backup.bin : Backup for comparison" +echo "" +echo "Log file: $LOGFILE" +echo "" diff --git a/test_bpf_demo_pi.sh b/test/test_bpf_demo_pi.sh similarity index 84% rename from test_bpf_demo_pi.sh rename to test/test_bpf_demo_pi.sh index 81b14bfc..4abd05c6 100755 --- a/test_bpf_demo_pi.sh +++ b/test/test_bpf_demo_pi.sh @@ -5,24 +5,24 @@ set -e -PI_HOST="rainer@192.168.0.206" +TARGET_HOST="rainer@192.168.0.206" PROJECT_DIR="~/XCPlite-RainerZ" echo "=== BPF Demo Test on Raspberry Pi ===" -echo "Target: $PI_HOST" +echo "Target: $TARGET_HOST" echo "Project: $PROJECT_DIR" echo # Function to run command on Pi run_on_pi() { echo "Running on Pi: $1" - ssh "$PI_HOST" "$1" + ssh "$TARGET_HOST" "$1" } # Function to run command on Pi with pseudo-tty (for interactive commands) run_on_pi_interactive() { echo "Running on Pi (interactive): $1" - ssh -t "$PI_HOST" "$1" + ssh -t "$TARGET_HOST" "$1" } echo "Step 1: Syncing project to Pi..." @@ -32,7 +32,7 @@ rsync -avz --delete \ --exclude="*.o" \ --exclude="*.out" \ --exclude="*.a" \ - ./ "$PI_HOST:$PROJECT_DIR/" + ./ "$TARGET_HOST:$PROJECT_DIR/" echo echo "Step 2: Configuring CMake on Pi..." @@ -54,10 +54,10 @@ echo echo "=== Build completed successfully! ===" echo echo "To run the BPF demo manually:" -echo " ssh -t $PI_HOST 'cd $PROJECT_DIR && sudo ./build/bpf_demo.out'" +echo " ssh -t $TARGET_HOST 'cd $PROJECT_DIR && sudo ./build/bpf_demo.out'" echo echo "To test process creation:" -echo " ssh $PI_HOST 'cd $PROJECT_DIR/examples/bpf_demo && ./test_processes.sh'" +echo " ssh $TARGET_HOST 'cd $PROJECT_DIR/examples/bpf_demo && ./test_processes.sh'" echo echo "Or run the automated test:" read -p "Do you want to run the BPF demo now? (y/N): " -n 1 -r diff --git a/tools/bintool/.gitignore b/tools/bintool/.gitignore new file mode 100644 index 00000000..2d94534e --- /dev/null +++ b/tools/bintool/.gitignore @@ -0,0 +1,14 @@ +# Rust build artifacts +target/ +Cargo.lock + +# IDE +.vscode/ +.idea/ +*.swp +*.swo +*~ + +# OS +.DS_Store +Thumbs.db diff --git a/tools/bintool/Cargo.toml b/tools/bintool/Cargo.toml new file mode 100644 index 00000000..07f4e267 --- /dev/null +++ b/tools/bintool/Cargo.toml @@ -0,0 +1,16 @@ +[package] +name = "bintool" +version = "0.2.0" +edition = "2021" +authors = ["RainerZ"] +description = "XCPlite BIN file tool - inspect, convert to Intel-Hex, and update calibration data" +license = "MIT" + +[dependencies] +clap = { version = "4.5", features = ["derive"] } +ihex = "3.0" +thiserror = "1.0" + +[[bin]] +name = "bintool" +path = "src/main.rs" diff --git a/tools/bintool/README.md b/tools/bintool/README.md new file mode 100644 index 00000000..b75ede72 --- /dev/null +++ b/tools/bintool/README.md @@ -0,0 +1,328 @@ +# bintool - XCPlite BIN File Tool + +A command-line tool for XCPlite `.BIN` persistency files: +- **Inspect**: View BIN file structure and calibration data +- **Convert**: Extract calibration data to Intel-Hex format +- **Update**: Apply Intel-Hex data back to BIN files + +Persistency features in XCPlite are enabled with OPTION_CAL_PERSISTENCE. + +Disclaimer: This is an AI generated tool. Don't use it for production. Improper use may corrupt calibration data. + +## Overview + +This tool provides comprehensive management of XCPlite binary persistency files: +- **BIN to HEX**: Extract calibration segment data to Intel-Hex format +- **HEX to BIN**: Update calibration segment data from Intel-Hex files +- **Dump/Inspect**: View file structure, events, segments, and hex dumps + +The tool uses a hardcoded 32-bit segment relative addressing scheme: `Address = 0x80000000 | (segment_index << 16)` which is default in XCPlite. +Absolute addressing (OPTION_CAL_SEGMENTS_ABS in XCPlite main_cfg.h) is not supported yet. +There is no check for the correct addressing mode. +For safety, it is essential to use the EPK version segment. This can be enabled with OPTION_CAL_SEGMENT_EPK. + + + +## Usage + +### Quick Start (Convenient Syntax) + +**Convert BIN to HEX** (output filename auto-derived): +```bash +bintool input.bin +# Creates: input.hex +``` + +**Inspect BIN file contents**: +```bash +bintool input.bin --dump +bintool input.bin --dump --verbose # With hex dump +``` + +**Apply HEX data back to BIN**: +```bash +bintool input.bin --apply-hex changes.hex +``` + +### Detailed Usage + +#### Mode 1: BIN to HEX Conversion + +Convert a BIN file to Intel-Hex format: + +```bash +bintool [BIN_FILE] [OPTIONS] +bintool --bin --hex [OPTIONS] # Old style +``` + +If output filename is not specified, it's automatically derived from input (changes .bin to .hex). + +#### Mode 2: HEX to BIN Update + +Apply Intel-Hex data to update calibration segments in a BIN file: + +```bash +bintool --apply-hex [OPTIONS] +``` + +#### Mode 3: Dump BIN File Contents + +Inspect BIN file structure without converting: + +```bash +bintool --dump [--verbose] +``` + +Shows header information and calibration segments. With `--verbose`, displays hex dump of all calibration data. + +### Arguments + +- `[BIN_FILE]` - Input .BIN file path (positional argument, or use `--bin`) +- `-b, --bin ` - Input .BIN file path (alternative to positional) +- `-o, --hex ` - Output .HEX file path (optional, auto-derived from input if omitted) +- `--apply-hex ` - Apply Intel-Hex file data to update the BIN file (HEX to BIN mode) +- `-d, --dump` - Dump BIN file header and segment information (does not convert) +- `-v, --verbose` - Enable verbose output (with `--dump`, shows hex data) +- `-h, --help` - Display help information +- `-V, --version` - Display version information + +**Note**: Options `--hex`, `--apply-hex`, and `--dump` are mutually exclusive. + +### Examples + +**BIN to HEX conversion (simple):** +```bash +bintool myproject_v1.0.bin # Creates myproject_v1.0.hex +bintool myproject_v1.0.bin -o out.hex # Explicit output name +``` + +**BIN to HEX conversion (old style):** +```bash +bintool --bin myproject_v1.0.bin --hex output.hex +bintool -b myproject_v1.0.bin -o output.hex -v +``` + +**Dump BIN file contents:** +```bash +bintool myproject_v1.0.bin --dump # Header and segments only +bintool myproject_v1.0.bin --dump --verbose # With hex dump of data +bintool myproject_v1.0.bin -d -v # Short form +``` + +**HEX to BIN update:** +```bash +bintool myproject_v1.0.bin --apply-hex calibration.hex +bintool -b myproject_v1.0.bin --apply-hex calibration.hex -v +``` + +## Suggestions for improvement + +- Extend the file header format to define the addressing scheme used (segment relative or absolute) +- Extend the segment header with the absolute address of the default page +- Abstract the addressing scheme used + + +# BINTOOL Architecture + +## Key Concepts +- XCP upload = FROM target, download = TO target (this typically gets confused by AI tools) +- Address: 0x80000000 | (segment_index << 16) hardcoded, no address information in the segment header, this should be changed in a future version +- BIN files: timestamp in name (cpp_demo_v10_21_01_18.bin) + +## Implementation +- Location: tools/bintool/ +- Rust with #[repr(C, packed)] for C ABI +- Structs: BinHeaderRaw (58B), EventDescriptorRaw (28B), CalSegDescriptorRaw (24B) + +## Validation +- EPK must match if present +- Segment data must be complete +- Atomic three-phase updates + + +## Building + +```bash +cd tools/bintool +cargo build --release +# Optional, install to ~/.cargo/bin/bintool or use the compiled binary will be in `target/release/bintool` +cargo install --path . +``` + + + + + +## BIN File Format + +The tool reads the binary format defined in `XCPlite/src/persistency.c`: + +### Header (58 bytes) +- Signature: 16 bytes - "XCPLITE__BINARY" +- Version: 2 bytes - 0x0100 +- EPK: 32 bytes - null-terminated string +- Event Count: 2 bytes +- CalSeg Count: 2 bytes +- Reserved: 4 bytes + +### Event Descriptors (28 bytes each) +Events are skipped during conversion. + +### Calibration Segment Descriptors (24 bytes each) +- Name: 16 bytes - null-terminated string +- Size: 2 bytes - size in bytes +- Index: 2 bytes +- Reserved: 4 bytes + +Followed immediately by the calibration data (size bytes). + +## Dump Feature + +The `--dump` option allows inspection of BIN file contents without conversion: + +```bash +bintool input.bin --dump # Header and segment info +bintool input.bin --dump --verbose # With hex dump of data +``` + +### Output Format + +**Without `--verbose`:** +- File signature and version +- EPK (firmware identifier) +- Event and calibration segment counts +- Per-segment: Name, Index, Size, XCP Address + +**With `--verbose`:** +- All of the above, plus: +- Hex dump of calibration data +- 16 bytes per line +- Address offsets (0000, 0010, etc.) +- ASCII representation (printable chars or '.') + +### Example Output + +``` +======================================== +BIN File: cpp_demo.bin +======================================== + +HEADER: + Signature: XCPLITE__BINARY + Version: 0x0100 + EPK: v10_21_01_18 + Event Count: 4 + CalSeg Count: 4 + +CALIBRATION SEGMENTS: + +Segment 0: + Name: epk + Index: 0 + Size: 12 bytes + Address: 0x80000000 (XCP address) + + Data (hex dump): + 0000: 76 31 30 5F 32 31 5F 30 31 5F 31 38 |v10_21_01_18| +``` + +## Intel-Hex Output + +The tool generates Intel-Hex files with: +- Extended Linear Address records for 32-bit addressing +- Data records (32 bytes per record) +- Calibration segments placed at: `0x80000000 | (segment_index << 16)` +- End-of-file record + +### Address Mapping + +Each calibration segment is placed at a unique address based on its index: + +| Segment Index | Address | Example | +|--------------|--------------|---------------| +| 0 | 0x80000000 | epk | +| 1 | 0x80010000 | kParameters | +| 2 | 0x80020000 | SigGen1 | +| 3 | 0x80030000 | SigGen2 | + +Formula: `Address = 0x80000000 | (index << 16)` + +## HEX to BIN Update Safety Features + +When updating a BIN file from Intel-Hex data (`--apply-hex`), the tool enforces strict validation: + +### 1. EPK Segment Protection +If the first segment is named "epk", its size and content must exactly match between BIN and HEX files. This prevents incompatible firmware updates. + +### 2. Complete Segment Coverage +HEX data must completely cover each BIN segment. Partial segment updates are rejected to prevent calibration data corruption. +- HEX segment size must be ≥ BIN segment size +- If HEX has more data, only the required bytes are written + +### 3. Atomic Updates +All validations occur **before** any file modifications: +1. **Phase 1**: Read all segment descriptors +2. **Phase 2**: Validate all segments completely +3. **Phase 3**: Only if all validations pass, write the data + +This ensures the original BIN file remains completely unchanged if any validation fails. + +## Dependencies + +- [clap](https://crates.io/crates/clap) - Command-line argument parsing +- [ihex](https://crates.io/crates/ihex) - Intel-Hex file format support +- [thiserror](https://crates.io/crates/thiserror) - Error handling + +## Use Cases + +### 1. Inspect BIN File Structure +```bash +# Quick overview +bintool myapp.bin --dump + +# Detailed analysis with hex dump +bintool myapp.bin --dump --verbose +``` + +### 2. Backup and Restore Calibration Data +```bash +# Backup calibration to HEX format +bintool myapp.bin -o backup.hex + +# Restore calibration from HEX (if EPK matches) +bintool myapp.bin --apply-hex backup.hex +``` + +### 3. Transfer Calibration Between Systems +```bash +# On development system: export calibration +bintool dev_calibration.bin + +# On production system: import calibration (with validation) +bintool prod_firmware.bin --apply-hex dev_calibration.hex +``` + +### 4. Version Control for Calibration Data +Store `.hex` files in version control (human-readable, diff-friendly) instead of binary `.bin` files. + +## Error Handling + +The tool provides clear error messages for common issues: + +- **Invalid signature**: Not an XCPlite BIN file +- **EPK mismatch**: EPK segment content differs between BIN and HEX +- **Incomplete data**: HEX segment doesn't fully cover BIN segment +- **Invalid format**: Corrupted or malformed files + +All errors prevent file modification, ensuring data integrity. + + + +## License + +MIT License - See LICENSE file in the project root. + +## Author + +RainerZ + diff --git a/tools/bintool/hex_diff.py b/tools/bintool/hex_diff.py new file mode 100644 index 00000000..c87cd1bd --- /dev/null +++ b/tools/bintool/hex_diff.py @@ -0,0 +1,185 @@ +#!/usr/bin/env python3 +""" +Detailed comparison of Intel HEX files - reconstructs segments and compares byte-by-byte. +""" + +import sys +from collections import defaultdict + +def parse_hex_file(filename): + """Parse Intel HEX file and return dict of address -> data""" + memory = {} + extended_addr = 0 + + with open(filename, 'r') as f: + for line_num, line in enumerate(f, 1): + line = line.strip() + if not line: + continue + + if not line.startswith(':'): + print(f"Warning: Line {line_num} doesn't start with ':'") + continue + + # Parse record + byte_count = int(line[1:3], 16) + address = int(line[3:7], 16) + record_type = int(line[7:9], 16) + + if record_type == 0x00: # Data record + full_addr = extended_addr | address + data_bytes = bytes.fromhex(line[9:9+byte_count*2]) + # Store each byte individually to handle overlapping/fragmented records + for i, byte in enumerate(data_bytes): + memory[full_addr + i] = byte + + elif record_type == 0x01: # End of file + break + + elif record_type == 0x02: # Extended Segment Address + seg = int(line[9:13], 16) + extended_addr = seg << 4 + + elif record_type == 0x04: # Extended Linear Address + ela = int(line[9:13], 16) + extended_addr = ela << 16 + + elif record_type == 0x05: # Start Linear Address + pass # Ignore + + return memory + +def reconstruct_segments(memory): + """Reconstruct contiguous segments from memory map""" + if not memory: + return [] + + segments = [] + sorted_addrs = sorted(memory.keys()) + + start_addr = sorted_addrs[0] + data = bytearray([memory[start_addr]]) + + for i in range(1, len(sorted_addrs)): + addr = sorted_addrs[i] + if addr == sorted_addrs[i-1] + 1: + # Contiguous + data.append(memory[addr]) + else: + # Gap found, save current segment and start new one + segments.append((start_addr, bytes(data))) + start_addr = addr + data = bytearray([memory[addr]]) + + # Don't forget the last segment + segments.append((start_addr, bytes(data))) + + return segments + +def compare_segments(file1, file2): + """Compare two hex files segment by segment""" + print(f"Parsing {file1}...") + memory1 = parse_hex_file(file1) + segments1 = reconstruct_segments(memory1) + + print(f"Parsing {file2}...") + memory2 = parse_hex_file(file2) + segments2 = reconstruct_segments(memory2) + + print(f"\n{'='*80}") + print(f"Segment Analysis:") + print(f"{'='*80}\n") + + print(f"File 1: {file1}") + total_bytes1 = sum(len(data) for _, data in segments1) + print(f" Segments: {len(segments1)}") + print(f" Total bytes: {total_bytes1}") + for addr, data in segments1: + print(f" 0x{addr:08X}: {len(data):4d} bytes") + + print(f"\nFile 2: {file2}") + total_bytes2 = sum(len(data) for _, data in segments2) + print(f" Segments: {len(segments2)}") + print(f" Total bytes: {total_bytes2}") + for addr, data in segments2: + print(f" 0x{addr:08X}: {len(data):4d} bytes") + + # Create maps for easier comparison + seg_map1 = {addr: data for addr, data in segments1} + seg_map2 = {addr: data for addr, data in segments2} + + all_addrs = sorted(set(seg_map1.keys()) | set(seg_map2.keys())) + + print(f"\n{'='*80}") + print(f"Detailed Comparison:") + print(f"{'='*80}\n") + + identical = True + + for addr in all_addrs: + in1 = addr in seg_map1 + in2 = addr in seg_map2 + + if in1 and in2: + data1 = seg_map1[addr] + data2 = seg_map2[addr] + + if data1 == data2: + print(f"✓ Segment at 0x{addr:08X}: IDENTICAL ({len(data1)} bytes)") + else: + print(f"✗ Segment at 0x{addr:08X}: DIFFERENT") + print(f" File1: {len(data1)} bytes") + print(f" File2: {len(data2)} bytes") + + # Show first difference + min_len = min(len(data1), len(data2)) + for i in range(min_len): + if data1[i] != data2[i]: + print(f" First difference at offset {i} (0x{addr+i:08X}):") + start = max(0, i-4) + end = min(min_len, i+12) + print(f" File1[{start}:{end}]: {data1[start:end].hex()}") + print(f" File2[{start}:{end}]: {data2[start:end].hex()}") + break + + if len(data1) != len(data2): + print(f" Length mismatch: File1={len(data1)}, File2={len(data2)}") + + identical = False + + elif in1: + print(f"✗ Segment at 0x{addr:08X}: Only in {file1} ({len(seg_map1[addr])} bytes)") + # Show content if small + if len(seg_map1[addr]) <= 32: + print(f" Data: {seg_map1[addr].hex()}") + # Try to decode as ASCII + try: + ascii_str = seg_map1[addr].decode('ascii') + if all(32 <= ord(c) < 127 or c == '\n' for c in ascii_str): + print(f" ASCII: {ascii_str}") + except: + pass + identical = False + + else: + print(f"✗ Segment at 0x{addr:08X}: Only in {file2} ({len(seg_map2[addr])} bytes)") + if len(seg_map2[addr]) <= 32: + print(f" Data: {seg_map2[addr].hex()}") + identical = False + + print(f"\n{'='*80}") + if identical: + print(f"✓✓✓ FILES ARE IDENTICAL! ✓✓✓") + else: + print(f"✗✗✗ FILES DIFFER ✗✗✗") + print(f"{'='*80}\n") + + return identical + +if __name__ == '__main__': + if len(sys.argv) != 3: + print("Usage: compare_hex_detailed.py ") + sys.exit(1) + + result = compare_segments(sys.argv[1], sys.argv[2]) + sys.exit(0 if result else 1) diff --git a/tools/bintool/src/bin_format.rs b/tools/bintool/src/bin_format.rs new file mode 100644 index 00000000..cef99469 --- /dev/null +++ b/tools/bintool/src/bin_format.rs @@ -0,0 +1,215 @@ +#![allow(dead_code)] + +use std::fs::File; +use std::io::Read; +use std::mem; + +use crate::Bin2HexError; + +// Compatibility with C code in persistency.h +// The BIN_VERSION check at runtime is the actual protection against format mismatches. +// If the C code changes the format, it should bump BIN_VERSION, and this tool will reject the file. + +const BIN_SIGNATURE: &str = "XCPLITE__BINARY"; +const BIN_VERSION: u16 = 0x0203; + +// This code only assumes the size of the header and descriptor structures +const BIN_HEADER_SIZE: usize = 256; +const BIN_EVENT_DESC_SIZE: usize = 256; +const BIN_CALSEG_DESC_SIZE: usize = 256; + +/// BIN file header - corresponds to tHeader in C +/// Version 0x0203: 256 bytes total + +#[repr(C, packed)] +struct BinHeaderRaw { + signature: [u8; 16], // "XCPLITE__BINARY" + version: u16, // 0x0203 + event_count: u16, // Number of event descriptors + calseg_count: u16, // Number of calibration segment descriptors + reserved: [u8; 128], // Reserved for future use + epk: [u8; BIN_HEADER_SIZE - 16 - 2 - 2 - 2 - 128], // EPK string, null terminated (106 bytes remaining) +} + +/// Safe wrapper for BinHeaderRaw +#[derive(Debug, Clone)] +pub struct BinHeader { + pub signature: String, + pub version: u16, + pub event_count: u16, + pub calseg_count: u16, + pub epk: String, +} + +impl BinHeader { + pub fn read_from(file: &mut File) -> Result { + // Read raw struct directly from file using unsafe + let raw: BinHeaderRaw = unsafe { + let mut raw: BinHeaderRaw = mem::zeroed(); + let raw_ptr = &mut raw as *mut BinHeaderRaw as *mut u8; + let raw_slice = std::slice::from_raw_parts_mut(raw_ptr, mem::size_of::()); + file.read_exact(raw_slice)?; + raw + }; + + // Extract and verify signature + let signature = String::from_utf8_lossy(&raw.signature) + .trim_end_matches('\0') + .to_string(); + + if signature != BIN_SIGNATURE { + return Err(Bin2HexError::InvalidFormat(format!( + "Invalid signature: expected '{}', got '{}'", + BIN_SIGNATURE, signature + ))); + } + + // Extract EPK + let epk = String::from_utf8_lossy(&raw.epk) + .trim_end_matches('\0') + .to_string(); + + // Copy values from packed struct to avoid unaligned access + let version = raw.version; + let event_count = raw.event_count; + let calseg_count = raw.calseg_count; + + // Check version - only 0x0203 is supported + if version != BIN_VERSION { + return Err(Bin2HexError::InvalidFormat(format!( + "Unsupported file version 0x{:04X}. This tool only supports version 0x{:04X}.", + version, BIN_VERSION + ))); + } + + Ok(BinHeader { + signature, + version, + event_count, + calseg_count, + epk, + }) + } +} + +/// Event descriptor - corresponds to tEventDescriptor in C +/// New version 0x0203: 256 bytes total +/// Fields: 2 + 2 + 4 + 1 + 128 + (256 - 2 - 2 - 4 - 1 - 128) = 256 bytes +#[repr(C, packed)] +struct EventDescriptorRaw { + id: u16, // Event ID + index: u16, // Event index + cycle_time_ns: u32, // Cycle time in nanoseconds + priority: u8, // Priority (0=queued, 1=pushing, 2=realtime) + reserved: [u8; 128], // Reserved for future use + name: [u8; BIN_EVENT_DESC_SIZE - 2 - 2 - 4 - 1 - 128], // Event name, null terminated (119 bytes remaining) +} + +/// Safe wrapper for EventDescriptorRaw +#[derive(Debug, Clone)] +pub struct EventDescriptor { + pub id: u16, + pub index: u16, + pub cycle_time_ns: u32, + pub priority: u8, + pub name: String, +} + +impl EventDescriptor { + pub fn read_from(file: &mut File) -> Result { + // Read raw struct directly from file using unsafe + let raw: EventDescriptorRaw = unsafe { + let mut raw: EventDescriptorRaw = mem::zeroed(); + let raw_ptr = &mut raw as *mut EventDescriptorRaw as *mut u8; + let raw_slice = + std::slice::from_raw_parts_mut(raw_ptr, mem::size_of::()); + file.read_exact(raw_slice)?; + raw + }; + + // Extract name + let name = String::from_utf8_lossy(&raw.name) + .trim_end_matches('\0') + .to_string(); + + // Copy values from packed struct to avoid unaligned access + let id = raw.id; + let index = raw.index; + let cycle_time_ns = raw.cycle_time_ns; + let priority = raw.priority; + + Ok(EventDescriptor { + id, + index, + cycle_time_ns, + priority, + name, + }) + } +} + +/// Calibration segment descriptor - corresponds to tCalSegDescriptor in C +/// New version 0x0203: 256 bytes total +/// Fields: 2 + 2 + 4 + 128 + (256 - 2 - 2 - 4 - 128) = 256 bytes +#[repr(C, packed)] +struct CalSegDescriptorRaw { + index: u16, // Index in calibration segment list + size: u16, // Size in bytes, multiple of 4 + addr: u32, // Address of the calibration segment + reserved: [u8; 128], // Reserved for future use + name: [u8; BIN_CALSEG_DESC_SIZE - 2 - 2 - 4 - 128], // Calibration segment name, null terminated (120 bytes remaining) +} + +/// Safe wrapper for CalSegDescriptorRaw +#[derive(Debug, Clone)] +pub struct CalSegDescriptor { + pub index: u16, + pub size: u16, + pub addr: u32, + pub name: String, +} + +impl CalSegDescriptor { + pub fn read_from(file: &mut File) -> Result { + // Read raw struct directly from file using unsafe + let raw: CalSegDescriptorRaw = unsafe { + let mut raw: CalSegDescriptorRaw = mem::zeroed(); + let raw_ptr = &mut raw as *mut CalSegDescriptorRaw as *mut u8; + let raw_slice = + std::slice::from_raw_parts_mut(raw_ptr, mem::size_of::()); + file.read_exact(raw_slice)?; + raw + }; + + // Extract name + let name = String::from_utf8_lossy(&raw.name) + .trim_end_matches('\0') + .to_string(); + + // Copy values from packed struct to avoid unaligned access + let index = raw.index; + let size = raw.size; + let addr = raw.addr; + + Ok(CalSegDescriptor { + index, + size, + addr, + name, + }) + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_struct_sizes() { + // Verify struct sizes match C definitions for version 0x0203 + // All structs must be exactly 256 bytes + assert_eq!(mem::size_of::(), 256); + assert_eq!(mem::size_of::(), 256); + assert_eq!(mem::size_of::(), 256); + } +} diff --git a/tools/bintool/src/main.rs b/tools/bintool/src/main.rs new file mode 100644 index 00000000..2984e707 --- /dev/null +++ b/tools/bintool/src/main.rs @@ -0,0 +1,612 @@ +// bintool - XCPlite BIN File Tool +// +// Inspect BIN file: +// bintool cpp_demo.bin --dump --verbose +// +// Convert BIN to HEX: +// bintool cpp_demo.bin +// +// Apply HEX to BIN: +// bintool cpp_demo.bin --apply-hex cpp_demo.hex + +#![allow(clippy::type_complexity)] + +use clap::Parser; +use std::fs::File; +use std::io::{self, Read}; +use std::path::PathBuf; +use thiserror::Error; + +mod bin_format; +use bin_format::{BinHeader, CalSegDescriptor, EventDescriptor}; + +#[derive(Error, Debug)] +pub enum Bin2HexError { + #[error("I/O error: {0}")] + Io(#[from] io::Error), + + #[error("Invalid file format: {0}")] + InvalidFormat(String), + + #[error("Intel-Hex write error: {0}")] + IntelHexWrite(#[from] ihex::WriterError), + + #[error("Intel-Hex read error: {0}")] + IntelHexRead(#[from] ihex::ReaderError), + + #[error("Segment mismatch: {0}")] + SegmentMismatch(String), +} + +#[derive(Parser, Debug)] +#[command(name = "bintool")] +#[command(author = "RainerZ")] +#[command(version)] // Automatically uses version from Cargo.toml +#[command(about = "XCPlite BIN file tool - inspect, convert, and update calibration data", long_about = None)] +struct Args { + /// Input .BIN file path (can be specified as positional argument or with --bin) + #[arg(value_name = "BIN_FILE")] + bin_file: Option, + + /// Input .BIN file path (alternative to positional argument) + #[arg(short, long, value_name = "FILE")] + bin: Option, + + /// Output .HEX file path (optional, defaults to input with .hex extension) + #[arg(short = 'o', long, value_name = "FILE", conflicts_with = "apply_hex")] + hex: Option, + + /// Apply Intel-Hex file data to update the BIN file (HEX to BIN mode) + /// Can be specified as just the HEX filename - BIN file will be derived from it + #[arg(long, value_name = "FILE", conflicts_with = "hex")] + apply_hex: Option, + + /// Dump BIN file header and segment information (does not convert) + /// With --verbose, also shows hex dump of calibration data + #[arg(short, long, conflicts_with_all = ["hex", "apply_hex"])] + dump: bool, + + /// Verbose output + #[arg(short, long)] + verbose: bool, +} + +fn read_bin_file( + path: &PathBuf, + verbose: bool, +) -> Result< + ( + BinHeader, + Vec, + Vec<(CalSegDescriptor, Vec)>, + ), + Bin2HexError, +> { + let mut file = File::open(path)?; + + // Read header + let header = BinHeader::read_from(&mut file)?; + + if verbose { + println!("BIN File Header:"); + println!(" Signature: {}", header.signature); + println!(" Version: 0x{:04X}", header.version); + println!(" EPK: {}", header.epk); + println!(" Event Count: {}", header.event_count); + println!(" CalSeg Count: {}", header.calseg_count); + println!(); + } + + // Read events + let mut events = Vec::new(); + for i in 0..header.event_count { + let event = EventDescriptor::read_from(&mut file)?; + if verbose { + println!("Read Event {}: {}", i, event.name); + } + events.push(event); + } + + if verbose { + println!(); + } + + // Read calibration segments + let mut calseg_data = Vec::new(); + + for i in 0..header.calseg_count { + let calseg_desc = CalSegDescriptor::read_from(&mut file)?; + + if verbose { + println!("Calibration Segment {}:", i); + println!(" Name: {}", calseg_desc.name); + println!(" Size: {} bytes", calseg_desc.size); + println!(" Index: {}", calseg_desc.index); + } + + // Read calibration segment data + let mut data = vec![0u8; calseg_desc.size as usize]; + file.read_exact(&mut data)?; + + if verbose { + println!(" Data: {} bytes read", data.len()); + // Print first few bytes + if !data.is_empty() { + print!(" First bytes: "); + for (idx, byte) in data.iter().take(16).enumerate() { + print!("{:02X} ", byte); + if (idx + 1) % 16 == 0 { + println!(); + } + } + if data.len() < 16 { + println!(); + } + } + println!(); + } + + calseg_data.push((calseg_desc, data)); + } + + Ok((header, events, calseg_data)) +} + +fn dump_bin_file(path: &PathBuf, verbose: bool) -> Result<(), Bin2HexError> { + let (header, events, calseg_data) = read_bin_file(path, false)?; + + // Print header information + println!("========================================"); + println!("BIN File: {}", path.display()); + println!("========================================"); + println!(); + println!("HEADER:"); + println!(" Signature: {}", header.signature); + println!(" Version: 0x{:04X}", header.version); + println!(" EPK: {}", header.epk); + println!(" Event Count: {}", header.event_count); + println!(" CalSeg Count: {}", header.calseg_count); + println!(); + + // Print event information + if !events.is_empty() { + println!("EVENTS:"); + println!(); + + for (idx, event) in events.iter().enumerate() { + println!("Event {}:", idx); + println!(" Name: {}", event.name); + println!(" ID: {}", event.id); + println!(" Index: {}", event.index); + println!(" Cycle Time: {} ns", event.cycle_time_ns); + println!(" Priority: {}", event.priority); + println!(); + } + } + + // Print calibration segment information + println!("CALIBRATION SEGMENTS:"); + println!(); + + for (idx, (desc, data)) in calseg_data.iter().enumerate() { + println!("Segment {}:", idx); + println!(" Name: {}", desc.name); + println!(" Index: {}", desc.index); + println!(" Size: {} bytes", desc.size); + println!(" Address: 0x{:08X}", desc.addr); + + if verbose { + println!(); + println!(" Data (hex dump):"); + dump_hex_data(data, desc.addr); + } + + println!(); + } + + if !verbose { + println!("(Use --verbose to see hex dump of calibration data)"); + } + + Ok(()) +} + +fn dump_hex_data(data: &[u8], base_address: u32) { + const BYTES_PER_LINE: usize = 16; + + for (line_idx, chunk) in data.chunks(BYTES_PER_LINE).enumerate() { + let address = base_address + (line_idx * BYTES_PER_LINE) as u32; + + // Print full 32-bit address + print!(" {:08X}: ", address); + + // Print hex bytes + for (byte_idx, byte) in chunk.iter().enumerate() { + print!("{:02X} ", byte); + + // Add extra space in the middle for readability + if byte_idx == 7 { + print!(" "); + } + } + + // Pad if this is the last line and it's not complete + if chunk.len() < BYTES_PER_LINE { + for i in chunk.len()..BYTES_PER_LINE { + print!(" "); + if i == 7 { + print!(" "); + } + } + } + + // Print ASCII representation + print!(" |"); + for byte in chunk.iter() { + if *byte >= 0x20 && *byte <= 0x7E { + print!("{}", *byte as char); + } else { + print!("."); + } + } + print!("|"); + + println!(); + } +} + +fn write_hex_file( + path: &PathBuf, + calseg_data: &[(CalSegDescriptor, Vec)], + verbose: bool, +) -> Result<(), Bin2HexError> { + let mut records = Vec::new(); + + for (desc, data) in calseg_data { + // Use the address from the descriptor + let segment_address = desc.addr; + + if verbose { + println!( + "Writing segment '{}' (index {}) at address 0x{:08X}", + desc.name, desc.index, segment_address + ); + } + + // Create data records for this segment + // Split into chunks (typically 16 or 32 bytes per record) + const CHUNK_SIZE: usize = 32; + + for (chunk_idx, chunk) in data.chunks(CHUNK_SIZE).enumerate() { + let chunk_address = segment_address + (chunk_idx * CHUNK_SIZE) as u32; + + // Handle extended linear address (32-bit addressing) + let extended_addr = (chunk_address >> 16) as u16; + if chunk_idx == 0 || (chunk_address & 0xFFFF) < CHUNK_SIZE as u32 { + // Add Extended Linear Address record when upper 16 bits change + records.push(ihex::Record::ExtendedLinearAddress(extended_addr)); + } + + // Add data record + let lower_addr = (chunk_address & 0xFFFF) as u16; + records.push(ihex::Record::Data { + offset: lower_addr, + value: chunk.to_vec(), + }); + } + } + + // Add end-of-file record + records.push(ihex::Record::EndOfFile); + + // Write to file + let hex_content = ihex::create_object_file_representation(&records)?; + std::fs::write(path, hex_content)?; + + if verbose { + println!( + "\nIntel-Hex file written successfully to: {}", + path.display() + ); + println!("Total records: {}", records.len()); + } + + Ok(()) +} + +fn read_hex_file( + path: &PathBuf, + verbose: bool, +) -> Result>, Bin2HexError> { + use std::collections::HashMap; + + let hex_string = std::fs::read_to_string(path)?; + let records = ihex::Reader::new(&hex_string).collect::, _>>()?; + + if verbose { + println!("Reading Intel-Hex file: {}", path.display()); + println!(" Total records: {}", records.len()); + } + + let mut segments: HashMap> = HashMap::new(); + let mut current_extended_addr: u32 = 0; + + for record in records { + match record { + ihex::Record::Data { offset, value } => { + let full_address = current_extended_addr | (offset as u32); + + // Find which segment this address belongs to by checking if it falls + // within any existing segment's range + let mut found_segment = None; + for (&segment_base, segment_data) in segments.iter() { + let segment_end = segment_base + segment_data.len() as u32; + if full_address >= segment_base && full_address < segment_end + 0x100 { + // Allow small gap (256 bytes) for continuation + found_segment = Some(segment_base); + break; + } + } + + let segment_base = if let Some(base) = found_segment { + base + } else { + // New segment starts at this address + if verbose { + println!(" Found segment at 0x{:08X}", full_address); + } + full_address + }; + + let segment_data = segments.entry(segment_base).or_default(); + + // Calculate offset within segment (relative to segment base) + let offset_in_segment = (full_address - segment_base) as usize; + + // Extend vector if needed + if segment_data.len() < offset_in_segment + value.len() { + segment_data.resize(offset_in_segment + value.len(), 0); + } + + // Copy data + segment_data[offset_in_segment..offset_in_segment + value.len()] + .copy_from_slice(&value); + } + ihex::Record::ExtendedLinearAddress(addr) => { + current_extended_addr = (addr as u32) << 16; + if verbose { + println!(" Extended address: 0x{:08X}", current_extended_addr); + } + } + ihex::Record::EndOfFile => { + if verbose { + println!(" End of file"); + } + } + _ => { + // Ignore other record types + } + } + } + + if verbose { + println!(" Found {} segment(s)", segments.len()); + } + + Ok(segments) +} + +fn apply_hex_to_bin( + bin_path: &PathBuf, + hex_path: &PathBuf, + verbose: bool, +) -> Result<(), Bin2HexError> { + use std::io::{Seek, SeekFrom, Write}; + + if verbose { + println!("Applying Intel-Hex data to BIN file"); + println!(" BIN file: {}", bin_path.display()); + println!(" HEX file: {}", hex_path.display()); + println!(); + } + + // Read the hex file + let hex_segments = read_hex_file(hex_path, verbose)?; + + if hex_segments.is_empty() { + println!("Warning: No data found in HEX file"); + return Ok(()); + } + + // Open BIN file for reading and writing + let mut file = std::fs::OpenOptions::new() + .read(true) + .write(true) + .open(bin_path)?; + + // Read BIN header to get segment information + let header = BinHeader::read_from(&mut file)?; + + if verbose { + println!("BIN File Info:"); + println!(" EPK: {}", header.epk); + println!(" Segments: {}", header.calseg_count); + println!(); + } + + // Skip events + for _ in 0..header.event_count { + EventDescriptor::read_from(&mut file)?; + } + + // PHASE 1: Read all segment descriptors and validate completeness BEFORE any writes + let mut segment_info = Vec::new(); + for i in 0..header.calseg_count { + let calseg_desc = CalSegDescriptor::read_from(&mut file)?; + let data_position = file.stream_position()?; + + // Use the address from the descriptor + let segment_addr = calseg_desc.addr; + + // Skip the data for now - we'll come back to write it + file.seek(SeekFrom::Current(calseg_desc.size as i64))?; + + segment_info.push((i, calseg_desc, data_position, segment_addr)); + } + + // PHASE 2: Validate all segments that will be updated + for (i, calseg_desc, data_position, segment_addr) in &segment_info { + if let Some(hex_data) = hex_segments.get(segment_addr) { + if verbose { + println!( + "Validating segment {} '{}' at file offset 0x{:X}", + i, calseg_desc.name, data_position + ); + println!( + " Segment address: 0x{:08X}, size: {} bytes", + segment_addr, calseg_desc.size + ); + println!(" HEX data size: {} bytes", hex_data.len()); + } + + // Special check for EPK segment (first segment, name == "epk") + if *i == 0 && calseg_desc.name.trim() == "epk" { + // Read current BIN EPK data + let mut bin_epk_data = vec![0u8; calseg_desc.size as usize]; + file.seek(SeekFrom::Start(*data_position))?; + file.read_exact(&mut bin_epk_data)?; + + // Check size + if hex_data.len() != calseg_desc.size as usize { + return Err(Bin2HexError::SegmentMismatch(format!( + "EPK segment size mismatch: BIN={} HEX={}", + calseg_desc.size, + hex_data.len() + ))); + } + // Check content + if bin_epk_data != *hex_data { + return Err(Bin2HexError::SegmentMismatch( + "EPK segment content mismatch between BIN and HEX. Refusing to patch." + .to_string(), + )); + } + } + + // Validate size - HEX data must exactly match or exceed BIN segment size + if hex_data.len() < calseg_desc.size as usize { + return Err(Bin2HexError::SegmentMismatch(format!( + "HEX data for segment '{}' ({} bytes) does not completely cover BIN segment ({} bytes). Refusing to patch.", + calseg_desc.name, + hex_data.len(), + calseg_desc.size + ))); + } + + if verbose { + println!(" ✓ Validation passed"); + println!(); + } + } + } + + // PHASE 3: All validations passed, now write the data + let mut updated_count = 0; + for (i, calseg_desc, data_position, segment_addr) in &segment_info { + if let Some(hex_data) = hex_segments.get(segment_addr) { + // Seek to data position and write + file.seek(SeekFrom::Start(*data_position))?; + file.write_all(&hex_data[0..calseg_desc.size as usize])?; + + updated_count += 1; + + if verbose { + println!( + "Updated segment {} '{}' at file offset 0x{:X}", + i, calseg_desc.name, data_position + ); + } + } else if verbose { + println!( + "Skipped segment {} '{}' (not in HEX file)", + i, calseg_desc.name + ); + } + } + + if verbose { + println!(); + } + + if verbose { + println!("Update complete!"); + println!(" Updated {} segment(s)", updated_count); + } else { + println!( + "Updated {} of {} segment(s) in '{}'", + updated_count, + header.calseg_count, + bin_path.display() + ); + } + + Ok(()) +} + +fn main() -> Result<(), Bin2HexError> { + let args = Args::parse(); + + // Determine the BIN file path from positional arg or --bin flag + let bin_path = args.bin_file.or(args.bin).ok_or_else(|| { + Bin2HexError::InvalidFormat( + "BIN file must be specified (either as argument or with --bin)".to_string(), + ) + })?; + + // Helper function to derive HEX filename from BIN filename + let derive_hex_path = |bin_path: &PathBuf| -> PathBuf { + let mut hex_path = bin_path.clone(); + hex_path.set_extension("hex"); + hex_path + }; + + // Determine mode based on arguments + if args.dump { + // Dump mode: Show BIN file contents + dump_bin_file(&bin_path, args.verbose)?; + } else if let Some(hex_path) = args.apply_hex { + // HEX to BIN mode: Apply hex data to update BIN file + apply_hex_to_bin(&bin_path, &hex_path, args.verbose)?; + } else { + // BIN to HEX mode: Convert BIN to HEX + let hex_path = args.hex.unwrap_or_else(|| derive_hex_path(&bin_path)); + + if args.verbose { + println!("bintool - XCPlite BIN File Tool"); + println!("Input file: {}", bin_path.display()); + println!("Output file: {}", hex_path.display()); + println!(); + } + + // Read BIN file + let (_header, _events, calseg_data) = read_bin_file(&bin_path, args.verbose)?; + + if calseg_data.is_empty() { + println!("Warning: No calibration segments found in BIN file"); + return Ok(()); + } + + // Write Intel-Hex file + write_hex_file(&hex_path, &calseg_data, args.verbose)?; + + println!("Conversion complete!"); + println!( + " Converted {} calibration segment(s) from '{}'", + calseg_data.len(), + bin_path.display() + ); + println!(" Output written to '{}'", hex_path.display()); + } + + Ok(()) +} diff --git a/tools/cfa_lookup.sh b/tools/cfa_lookup.sh new file mode 100644 index 00000000..eb43f57b --- /dev/null +++ b/tools/cfa_lookup.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +# Simple CFA lookup script using objdump and nm +# Usage: ./cfa_lookup.sh + +if [ $# -lt 2 ]; then + echo "Usage: $0 " + echo " $0 --list-functions" + exit 1 +fi + +EXECUTABLE="$1" +FUNCTION="$2" + +if [ "$FUNCTION" = "--list-functions" ]; then + echo "Available functions:" + nm -n "$EXECUTABLE" | grep ' T ' | awk '{print $3 " (0x" $1 ")"}' + exit 0 +fi + +# Get function address from symbol table +FUNC_ADDR=$(nm "$EXECUTABLE" | grep " T $FUNCTION$" | awk '{print $1}') + +if [ -z "$FUNC_ADDR" ]; then + echo "Function '$FUNCTION' not found" + echo "Available functions:" + nm -n "$EXECUTABLE" | grep ' T ' | head -10 | awk '{print " " $3}' + exit 1 +fi + +echo "Function: $FUNCTION" +echo "Address: 0x$FUNC_ADDR" + +# Note: For actual CFA offset, we would need to parse .eh_frame section +# This requires more sophisticated tooling (like gimli in Rust) +echo "CFA Offset: [Requires .eh_frame parsing - use SSH to Pi with readelf for now]" +echo "" +echo "For manual lookup on Pi:" +echo " ssh rainer@192.168.0.206 \"cd ~/XCPlite-RainerZ && readelf -wF ./build/no_a2l_demo.out | grep -A3 -B3 '$FUNC_ADDR'\"" \ No newline at end of file