Automation and CIAutomatisation et intégration continueAutomatisering en CI

The command line arnodiqa uses the same engine and the same project files as the desktop app. It is intended for test benches without a screen, nightly runs and CI pipelines. Every command returns a documented exit code and, with --json, a report for further processing.La ligne de commande arnodiqa utilise le même moteur et les mêmes fichiers de projet que l'application de bureau. Elle est destinée aux bancs de test sans écran, aux exécutions nocturnes et aux pipelines d'intégration continue (CI). Chaque commande renvoie un code de sortie documenté et, avec --json, un rapport exploitable par d'autres outils.De command line arnodiqa gebruikt dezelfde engine en dezelfde projectbestanden als de desktop-app. Ze is bedoeld voor testbanken zonder scherm, nachtelijke runs en CI-pipelines. Elk commando geeft een gedocumenteerde exitcode en met --json een rapport voor verdere verwerking.

EULA and licence on build agentsCLUF et licence sur les agents de buildEULA en licentie op build-agents

On first use, Arnodiqa asks you to accept the EULA. On a non-interactive build agent, use --accept-eula or the environment variable ARNODIQA_ACCEPT_EULA=yes; the acceptance is recorded locally once. For a silent installation, pass ARNODIQA_ACCEPT_EULA=yes to msiexec /qn or setup.exe /S; the acceptance then applies to the whole machine. arnodiqa license eula shows the text offline.À la première utilisation, Arnodiqa demande d'accepter le contrat de licence utilisateur final (CLUF). Sur un agent de build sans interaction, utilisez --accept-eula ou la variable d'environnement ARNODIQA_ACCEPT_EULA=yes ; l'acceptation est enregistrée une seule fois en local. Pour une installation silencieuse, transmettez ARNODIQA_ACCEPT_EULA=yes à msiexec /qn ou à setup.exe /S ; l'acceptation vaut alors pour toute la machine. arnodiqa license eula affiche le texte hors ligne.Bij het eerste gebruik vraagt Arnodiqa om de EULA te aanvaarden. Op een build-agent zonder interactie doe je dat met --accept-eula of de omgevingsvariabele ARNODIQA_ACCEPT_EULA=yes; de aanvaarding wordt één keer lokaal vastgelegd. Wie de installer stil uitvoert, geeft ARNODIQA_ACCEPT_EULA=yes mee aan msiexec /qn of setup.exe /S; de aanvaarding geldt dan voor de hele machine. arnodiqa license eula toont de tekst offline.

Place a licence file in the machine licence folder or pass it with ARNODIQA_LICENSE_FILE, for example as a read-only mount in a container.Déposez le fichier de licence dans le dossier de licences de la machine ou indiquez-le avec ARNODIQA_LICENSE_FILE, par exemple sous forme de montage en lecture seule dans un conteneur.Een licentiebestand zet je klaar in de licentiemap van de machine of geef je mee met ARNODIQA_LICENSE_FILE, bijvoorbeeld als alleen-lezen mount in een container.

CI agent
export ARNODIQA_ACCEPT_EULA=yes
export ARNODIQA_LICENSE_FILE=/licences/site.bflic
arnodiqa license show --json

Run a projectExécuter un projetEen project draaien

The desktop app comes as a Windows installer that installs and runs without an internet connection. The examples need no hardware. Without a licence file, Arnodiqa works for 30 days with all features.L'application de bureau est livrée sous forme d'installateur Windows, qui s'installe et fonctionne sans connexion Internet. Les exemples ne nécessitent aucun matériel. Sans fichier de licence, Arnodiqa fonctionne 30 jours avec toutes les fonctions.De desktop-app komt als Windows-installer die zonder internetverbinding installeert en draait. Voor de voorbeelden is geen hardware nodig. Zonder licentiebestand werkt Arnodiqa 30 dagen met alle functies.

1. Validate a project1. Valider un projet1. Een project valideren

arnodiqa validate
$ arnodiqa validate examples/demo/demo.yaml
ok

2. Run a measurement2. Exécuter une mesure2. Een meting draaien

The demo project has two virtual CAN networks (PowerTrain on CAN FD, Comfort on CAN). The interaction layer simulates all nodes from the two DBC files. The measurement runs on the simulated bus, so it runs as fast as the CPU allows.Le projet de démonstration comporte deux réseaux CAN virtuels (PowerTrain en CAN FD, Comfort en CAN). La couche d'interaction simule tous les nœuds des deux fichiers DBC. La mesure s'exécute sur le bus simulé, donc aussi vite que le processeur le permet.Het demoproject heeft twee virtuele CAN-netwerken (PowerTrain op CAN FD, Comfort op CAN). De Interaction Layer simuleert alle nodes uit de twee DBC-bestanden. De meting draait op de gesimuleerde bus, dus zo snel als de CPU toelaat.

arnodiqa run
$ arnodiqa run examples/demo/demo.yaml --duration 2s
measurement #3: 2.000000 s, 990 events, stop: Duration

channel  frames      rx      tx  err  fps(last s)  load%   peak%  state
CAN1        920       0     920    0          460   14.2    14.2  ErrorActive
CAN2         70       0      70    0           35    0.8     0.8  ErrorActive

channel  id            count  cycle avg/min/max [ms]
CAN1    400             400  4.998/4.002/5.998
CAN1    100             200  9.999/9.496/10.504
CAN1    210             200  10.000/9.500/10.500
CAN1    1A0             100  19.989/18.865/20.252
CAN2    320              40  50.000/49.536/50.464
CAN1    300              20  99.987/99.750/100.000
CAN2    321              20  99.987/99.708/100.292
CAN2    18FF1E01x        10  199.953/199.580/200.000

logging:
  Logging: 990 events, 0 lost
    examples\demo\logs\Demo_3.blf
  HighRpmLog: 94 events, 0 lost
    examples\demo\logs\high_rpm_003.asc

The measurement index (#3) is kept outside the project in demo.state.yaml. The project file therefore does not change on every run, and git stays clean.L'index de mesure (#3) est conservé hors du projet, dans demo.state.yaml. Le fichier de projet ne change donc pas à chaque exécution et le dépôt git reste propre.De meetindex (#3) wordt buiten het project bijgehouden in demo.state.yaml. Zo verandert het projectbestand niet bij elke run en blijft git schoon.

3. In CI: JSON report3. En CI : rapport JSON3. In CI: JSON-rapport

With --json, the complete report is printed on stdout as one JSON object (shown formatted here). Times are in nanoseconds.Avec --json, le rapport complet est écrit sur stdout sous la forme d'un seul objet JSON (mis en forme ici pour la lecture). Les temps sont exprimés en nanosecondes.Met --json komt het volledige rapport als één JSON-object op stdout (hier geformatteerd weergegeven). Tijden staan in nanoseconden.

arnodiqa run --json
$ arnodiqa run examples/demo/demo.yaml --duration 2s --json | jq .
{
  "exitCode": 0,
  "report": {
    "duration": 2000000000,
    "events": 990,
    "lateEvents": 0,
    "logging": [
      {
        "error": null,
        "eventsWritten": 990,
        "files": [
          "examples\\demo\\logs\\Demo_4.blf"
        ],
        "id": "Logging",
        "lost": 0,
        "preTriggerOverflow": 0,
        "sysvarsWritten": 0
      },
      {
        "error": null,
        "eventsWritten": 94,
        "files": [
          "examples\\demo\\logs\\high_rpm_004.asc"
        ],
        "id": "HighRpmLog",
        "lost": 0,
        "preTriggerOverflow": 0,
        "sysvarsWritten": 0
      }
    ],
    "mainQueueDropped": 0,
    "measurementIndex": 4,
    "messages": [],
    "statistics": {
      "channels": [
        {
          "busloadMeasured": true,
          "busloadPeakPercent": 14.1834,
          "busloadPercent": 14.1832,
          "channel": 1,
          "chipState": "errorActive",
          "errorFrames": 0,
          "errorFramesPerSec": 0.0,
          "extData": 0,
          "extRemote": 0,
          "fdFrames": 400,
          "frames": 920,
          "framesPerSec": 460.0,
          "rec": 0,
          "recPeak": 0,
          "rx": 0,
          "rxOverruns": 0,
          "stdData": 920,
          "stdRemote": 0,
          "tec": 0,
          "tecPeak": 0,
          "tx": 920,
          "txQueueOverflows": 0,
          "txRequests": 0
        },
        {
          "busloadMeasured": true,
          "busloadPeakPercent": 0.814,
          "busloadPercent": 0.814,
          "channel": 2,
          "chipState": "errorActive",
          "errorFrames": 0,
          "errorFramesPerSec": 0.0,
          "extData": 10,
          "extRemote": 0,
          "fdFrames": 0,
          "frames": 70,
          "framesPerSec": 35.0,
          "rec": 0,
          "recPeak": 0,
          "rx": 0,
          "rxOverruns": 0,
          "stdData": 60,
          "stdRemote": 0,
          "tec": 0,
          "tecPeak": 0,
          "tx": 70,
          "txQueueOverflows": 0,
          "txRequests": 0
        }
      ],
      "eventsTotal": 990,
      "ids": [
        {
          "channel": 1,
          "count": 200,
          "cycleAvg": 9998723.618090453,
          "cycleLast": 9748000,
          "cycleMax": 10504000,
          "cycleMin": 9496000,
          "dlc": 8,
          "id": "0x100",
          "lastTime": 1990488000,
          "minSendDistance": 9258000
        },
        {
          "channel": 1,
          "count": 100,
          "cycleAvg": 19988535.353535354,
          "cycleLast": 20000000,
          "cycleMax": 20252000,
          "cycleMin": 18865000,
          "dlc": 8,
          "id": "0x1A0",
          "lastTime": 1980242000,
          "minSendDistance": 18623000
        },
        {
          "channel": 1,
          "count": 200,
          "cycleAvg": 10000000.0,
          "cycleLast": 9752000,
          "cycleMax": 10500000,
          "cycleMin": 9500000,
          "dlc": 8,
          "id": "0x210",
          "lastTime": 1990244000,
          "minSendDistance": 9256000
        },
        {
          "channel": 1,
          "count": 20,
          "cycleAvg": 99986842.10526316,
          "cycleLast": 100000000,
          "cycleMax": 100000000,
          "cycleMin": 99750000,
          "dlc": 8,
          "id": "0x300",
          "lastTime": 1900246000,
          "minSendDistance": 99504000
        },
        {
          "channel": 1,
          "count": 400,
          "cycleAvg": 4998125.313283208,
          "cycleLast": 4506000,
          "cycleMax": 5998000,
          "cycleMin": 4002000,
          "dlc": 15,
          "id": "0x400",
          "lastTime": 1995381000,
          "minSendDistance": 3621000
        },
        {
          "channel": 2,
          "count": 40,
          "cycleAvg": 50000000.0,
          "cycleLast": 49828000,
          "cycleMax": 50464000,
          "cycleMin": 49536000,
          "dlc": 8,
          "id": "0x320",
          "lastTime": 1950242000,
          "minSendDistance": 49294000
        },
        {
          "channel": 2,
          "count": 20,
          "cycleAvg": 99986947.36842105,
          "cycleLast": 99708000,
          "cycleMax": 100292000,
          "cycleMin": 99708000,
          "dlc": 4,
          "id": "0x321",
          "lastTime": 1900166000,
          "minSendDistance": 99542000
        },
        {
          "channel": 2,
          "count": 10,
          "cycleAvg": 199953333.33333334,
          "cycleLast": 200000000,
          "cycleMax": 200000000,
          "cycleMin": 199580000,
          "dlc": 8,
          "id": "0x18FF1E01x",
          "lastTime": 1800286000,
          "minSendDistance": 199294000
        }
      ],
      "time": 2000000000
    },
    "stopReason": "duration",
    "txFailed": 0
  }
}

4. Offline: re-analyse a log file4. Hors ligne : analyser à nouveau un fichier journal4. Offline: een logbestand opnieuw analyseren

shell
arnodiqa run examples/demo/demo.yaml --offline examples/demo/logs/Demo_1.blf

The log files replace the project's sources. Filters, triggers and logging blocks behave exactly as they do online.Les fichiers journaux remplacent les sources du projet. Les filtres, les déclencheurs et les blocs de journalisation se comportent exactement comme en ligne.De logbestanden vervangen de bronnen van het project. Filters, triggers en logging-blokken werken net als online.

CommandsCommandesCommando's

arnodiqa --help
arnodiqa headless measurement runner

Usage: arnodiqa.exe <COMMAND>

Commands:
  run       Run a measurement and print statistics
  validate  Check a project for errors
  schema    Print the JSON Schema of project files
  capl      CAPL tools
  convert   Convert a log file between ASC, BLF, MF4 and PCAPNG (formats from the extensions)
  export    Decode a log file with databases and export the signals as CSV, MATLAB (.mat) or Parquet
  stats     Print the contents of a log file: duration, counts per channel and identifier
  hw        Hardware interfaces
  db        Database tools for DBC, LDF and ARXML: lint, diff, convert, info
  test      Run the test units (`*.vtestunit.yaml`) or CAPL test modules of a project in the simulated bus and write reports. Exit code by verdict
  flash     Flash an ECU with its flash program (`diagnostics.ecus[].flash`): Intel HEX, S-record, binary or ODX-F/PDX. Exit code and JSON report for CI and the production line
  support   Support: bundle with logs and system information, system info, log folder
  license   Licence: status, install a licence file, machine fingerprint, EULA
  help      Print this message or the help of the given subcommand(s)

Options:
      --accept-eula  Accept the EULA on behalf of your company (recorded once; for CI also ARNODIQA_ACCEPT_EULA=yes). Read it with `arnodiqa license eula`
  -h, --help         Print help
  -V, --version      Print version
CommandCommandeCommandoPurposeRôleDoel
runRun a measurement (online, offline or simulated), statistics and log filesExécuter une mesure (en ligne, hors ligne ou simulée), statistiques et fichiers journauxMeting draaien (online, offline of gesimuleerd), statistiek en logbestanden
validate, schemaCheck a project; JSON Schema of project filesContrôler un projet ; schéma JSON des fichiers de projetProject controleren; JSON Schema van projectbestanden
testRun test units and CAPL test modules, write reportsExécuter les unités de test et les modules de test CAPL, écrire les rapportsTest units en CAPL-testmodules uitvoeren, rapporten schrijven
capl check, capl lspCompile a CAPL program and show diagnostics; language server for editorsCompiler un programme CAPL et afficher les diagnostics ; serveur de langage pour éditeursCAPL-programma compileren en foutmeldingen tonen; language server voor editors
hw list, hw selftestDriver backends, status and connected channels; self-test of an interfaceBack-ends de pilotes, état et canaux connectés ; autotest d'une interfaceDriverbackends, status en aangesloten kanalen; zelftest van een interface
flashFlash an ECU via UDS, with JSON reportFlasher un calculateur via UDS, avec rapport JSONEen ECU flashen via UDS, met JSON-rapport
licenseLicence status, install a licence file, fingerprint, EULAÉtat de la licence, installation d'un fichier de licence, empreinte machine, CLUFLicentiestatus, licentiebestand installeren, fingerprint, EULA
supportSupport bundle, system information and log folderPaquet de support, informations système et dossier des journauxSupportbundel, systeeminformatie en logmap
stats, convertSummarise a log file; convert between ASC, BLF, MF4 and PCAPNGRésumer un fichier journal ; convertir entre ASC, BLF, MF4 et PCAPNGLogbestand samenvatten; converteren tussen ASC, BLF, MF4 en PCAPNG
exportExport signals to CSV, MATLAB or ParquetExporter des signaux en CSV, MATLAB ou ParquetSignalen exporteren naar CSV, MATLAB of Parquet
dbCheck, compare, convert and summarise databases (DBC, LDF, ARXML)Contrôler, comparer, convertir et résumer des bases de données (DBC, LDF, ARXML)Databases controleren, vergelijken, converteren en samenvatten (DBC, LDF, ARXML)

arnodiqa run <PROJECT>

OptionOptionOptieMeaningSignificationBetekenis
--duration <SPAN>Stop after this measurement time (e.g. 10s, 500ms, 2min). Without this option, an online measurement runs until Ctrl+C.Arrêt après cette durée de mesure (par exemple 10s, 500ms, 2min). Sans cette option, une mesure en ligne tourne jusqu'à Ctrl+C.Stop na deze meettijd (bv. 10s, 500ms, 2min). Zonder deze optie loopt een online meting tot Ctrl+C.
--offline <FILE>Offline with these log files (repeatable); replaces the project's sources.Mode hors ligne avec ces fichiers journaux (répétable) ; remplace les sources du projet.Offline met deze logbestanden (herhaalbaar); vervangt de bronnen van het project.
--simulatedSimulated bus (no hardware).Bus simulé (sans matériel).Gesimuleerde bus (geen hardware).
--real-busReal bus (hardware or virtual networks on the wall clock).Bus réel (matériel ou réseaux virtuels cadencés sur l'horloge réelle).Echte bus (hardware of virtuele netwerken op de wandklok).
--without-loggingStart with all logging blocks disabled.Démarrage avec tous les blocs de journalisation désactivés.Start met alle logging-blokken uit.
--timeout <SPAN>Wall-clock safety limit for the whole run; reaching it returns exit code 6.Limite de sécurité en temps réel pour toute l'exécution ; si elle est atteinte, le code de sortie est 6.Veiligheidslimiet in wandkloktijd voor de hele run; wordt die bereikt, dan is de exitcode 6.
--start-time <ISO8601>Fixed start time for log file headers and {MeasurementStart}, for reproducible files.Heure de début fixe pour les en-têtes des fichiers journaux et {MeasurementStart}, afin d'obtenir des fichiers reproductibles.Vaste starttijd voor de headers van logbestanden en {MeasurementStart}, voor reproduceerbare bestanden.
--top-ids <N>Number of IDs listed in the statistics (default 20).Nombre d'identifiants affichés dans les statistiques (20 par défaut).Aantal ID's in de statistieken (standaard 20).
-q, --quietOnly errors and the summary line.Uniquement les erreurs et la ligne de synthèse.Alleen fouten en de samenvattingsregel.
--jsonReport as JSON on stdout: {"exitCode": n, "report": {…}} or {"exitCode": n, "error": "…"}.Rapport JSON sur stdout : {"exitCode": n, "report": {…}} ou {"exitCode": n, "error": "…"}.Rapport als JSON op stdout: {"exitCode": n, "report": {…}} of {"exitCode": n, "error": "…"}.

A project with CAPL nodes runs the same way. Messages from the nodes appear with their measurement time before the report.Un projet avec des nœuds CAPL s'exécute de la même manière. Les messages des nœuds s'affichent avec leur temps de mesure avant le rapport.Een project met CAPL-nodes draait op dezelfde manier. Meldingen van de nodes verschijnen met hun meettijd vóór het rapport.

arnodiqa run
$ arnodiqa run examples/demo/capl_demo.yaml --duration 2s
[    0.000000] info: CaplGateway: gateway PowerTrain -> Comfort active
[    0.000000] info: ParkAssist: park assist started
[    1.000000] info: CaplGateway: 100 frames routed, last speed 800 rpm
[    2.000000] info: CaplGateway: id 0x100 seen 200 times
[    2.000000] info: CaplGateway: id 0x210 seen 200 times
measurement #3: 2.000000 s, 1209 events, stop: Duration

channel  frames      rx      tx  err  fps(last s)  load%   peak%  state
CAN1        939       0     939    0          470   14.4    14.4  ErrorActive
CAN2        270       0     270    0          135    2.5     2.5  ErrorActive
…

arnodiqa validate <PROJECT> · arnodiqa schema

validate checks the YAML model, then loads the databases and block references through the engine and prints ok or the issues found. schema prints the JSON Schema of project files.validate contrôle le modèle YAML, charge ensuite les bases de données et les références de blocs via le moteur, puis affiche ok ou la liste des problèmes. schema affiche le schéma JSON des fichiers de projet.validate controleert het YAML-model, laadt daarna de databases en de blokverwijzingen via de engine en print ok of de gevonden problemen. schema print het JSON Schema van projectbestanden.

Exit codes of runCodes de sortie de runExitcodes van run

CodeMeaningSignificationBetekenis
0Measurement ran and stopped normallyLa mesure s'est exécutée et s'est arrêtée normalementMeting gedraaid en normaal gestopt
1Measurement ran, but a logging block reported an errorLa mesure s'est exécutée, mais un bloc de journalisation a signalé une erreurMeting gedraaid, maar een logging-blok meldde een fout
2Invalid command lineLigne de commande invalideOngeldige command line
3Project could not be loaded or is inconsistentProjet impossible à charger ou incohérentProject niet te laden of inconsistent
4Measurement could not be started or failed while runningLa mesure n'a pas pu démarrer ou a échoué en cours d'exécutionMeting kon niet starten of faalde tijdens het draaien
5Measurement ran, but events were lost (overload or full logging queue)La mesure s'est exécutée, mais des événements ont été perdus (surcharge ou file de journalisation pleine)Meting gedraaid, maar events gingen verloren (overbelasting of volle logging-queue)
6--timeout reached; report and log files are complete up to that point--timeout atteint ; le rapport et les fichiers journaux sont complets jusqu'à ce moment--timeout bereikt; rapport en logbestanden zijn compleet tot dat moment
130Stopped with Ctrl+C (after a clean stop with report and closed logs); a second Ctrl+C exits immediatelyArrêt par Ctrl+C (après un arrêt propre, avec rapport et journaux fermés) ; un second Ctrl+C quitte immédiatementGestopt met Ctrl+C (na een nette stop met rapport en gesloten logs); een tweede Ctrl+C stopt direct

arnodiqa test <PROJECT>

Runs the test units (*.vtestunit.yaml) or CAPL test modules of a project on the simulated bus. Each unit runs in its own measurement with the simulation nodes, the rest bus and a test node. Simulated time runs as fast as the PC allows, so a 1 s wait takes less than a real second, and two runs produce identical reports.Exécute les unités de test (*.vtestunit.yaml) ou les modules de test CAPL d'un projet sur le bus simulé. Chaque unité tourne dans sa propre mesure, avec les nœuds de simulation, le bus résiduel et un nœud de test. Le temps simulé avance aussi vite que le PC le permet : une attente de 1 s dure moins d'une seconde réelle, et deux exécutions produisent des rapports identiques.Voert de test units (*.vtestunit.yaml) of CAPL-testmodules van een project uit in de gesimuleerde bus. Elke unit draait in een eigen meting met de simulatienodes, de restbus en een testnode. Omdat de gesimuleerde tijd zo snel loopt als de pc toelaat, duurt een wachttijd van 1 s minder dan een echte seconde, en twee runs geven identieke rapporten.

arnodiqa test
$ arnodiqa test examples/demo/capl_demo.yaml --html report.html --junit junit.xml --report report.json
running Demo ...
Demo [test unit] PASS
  PASS         T-1 EngineData cycle time
  PASS         T-2 Cycle time 256 in [9, 11] ms
  PASS         T-2 Cycle time 416 in [18, 22] ms
  PASS         T-2 Cycle time 528 in [9, 11] ms
  PASS         T-3 Park assist / Mode request 1
  PASS         T-3 Park assist / Mode request 2
  PASS         T-4 Park assist / Mode Off stops the status frame
  PASS         T-5 Speed limit ramp (stimulus)
verdict PASS: 1 test unit(s), 8 test case(s): 8 passed, 0 failed, 0 inconclusive, 0 error, 0 skipped
$ echo $?
0
OptionOptionOptieMeaningSignificationBetekenis
--unit <UNIT>Unit by name, .vtestunit.yaml file or CAPL test module (.can); repeatable. Default: all units of the project.Unité par nom, fichier .vtestunit.yaml ou module de test CAPL (.can) ; répétable. Par défaut : toutes les unités du projet.Unit op naam, .vtestunit.yaml-bestand of CAPL-testmodule (.can); herhaalbaar. Standaard: alle units van het project.
--variant <NAME=VALUE>Value of a variant property (repeatable).Valeur d'une propriété de variante (répétable).Waarde van een variant property (herhaalbaar).
--report, --junit, --html <FILE>Report as JSON, JUnit XML or HTML. The HTML report is a single self-contained page without scripts.Rapport au format JSON, JUnit XML ou HTML. Le rapport HTML est une page autonome unique, sans scripts.Rapport als JSON, JUnit XML of HTML. Het HTML-rapport is één zelfstandige pagina zonder scripts.
--max-time <SPAN>Maximum measurement time per unit (default 1 hour of simulated time).Durée de mesure maximale par unité (1 heure de temps simulé par défaut).Maximale meettijd per unit (standaard 1 uur gesimuleerde tijd).
--real-busUse the project's working mode instead of the simulated bus.Utilise le mode de fonctionnement (working mode) du projet au lieu du bus simulé.De working mode van het project gebruiken in plaats van de gesimuleerde bus.
--json, -qJSON report on stdout; summary only.Rapport JSON sur stdout ; synthèse uniquement.JSON-rapport op stdout; alleen de samenvatting.
Exit codeCode de sortieExitcodeMeaningSignificationBetekenis
0All executed test cases passedTous les cas de test exécutés ont réussiAlle uitgevoerde testcases geslaagd
1At least one test case failedAu moins un cas de test a échouéMinstens één testcase gefaald
2Invalid command lineLigne de commande invalideOngeldige command line
3Project, test unit or test tree could not be loaded, or no unit foundProjet, unité de test ou arborescence de tests impossible à charger, ou aucune unité trouvéeProject, test unit of testboom niet te laden, of geen unit gevonden
4Error in the test system (compile error, runtime error, unit not completed)Erreur dans le système de test (erreur de compilation, erreur d'exécution, unité non terminée)Fout in het testsysteem (compileerfout, runtime-fout, unit niet afgerond)
5Worst verdict: inconclusivePire verdict : inconclusiveSlechtste verdict: inconclusive
8No test case executedAucun cas de test exécutéGeen enkele testcase uitgevoerd

arnodiqa capl check <FILE>

Compiles a CAPL program and prints diagnostics as file:line:col: severity code: message. With --project, the compiler uses the project's databases and system variables; without a project, messages and system variables are unknown. --json returns the diagnostics as JSON for editors. The exit code is 0 without errors, 1 with errors and 3 if the project cannot be loaded.Compile un programme CAPL et affiche les diagnostics au format fichier:ligne:colonne: gravité code: message. Avec --project, le compilateur utilise les bases de données et les variables système du projet ; sans projet, les messages et les variables système sont inconnus. --json fournit les diagnostics en JSON pour les éditeurs. Le code de sortie est 0 sans erreur, 1 en cas d'erreurs et 3 si le projet ne peut pas être chargé.Compileert een CAPL-programma en toont foutmeldingen als bestand:regel:kolom: ernst code: melding. Met --project gebruikt de compiler de databases en systeemvariabelen van het project; zonder project zijn berichten en systeemvariabelen onbekend. --json levert de meldingen in JSON voor editors. De exitcode is 0 zonder fouten, 1 met fouten en 3 als het project niet te laden is.

arnodiqa capl check
$ arnodiqa capl check examples/demo/capl/gateway.can --project examples/demo/capl_demo.yaml
examples/demo/capl/gateway.can: 0 error(s), 0 warning(s)
$ arnodiqa capl check examples/demo/capl/gateway.can
examples/demo/capl/gateway.can:21:12: error E1012: unknown message 'EngineData'
examples/demo/capl/gateway.can:31:12: error E1012: unknown message 'WheelSpeeds'
examples/demo/capl/gateway.can:36:1: error E1013: unknown system variable 'Demo::Mode'
examples/demo/capl/gateway.can: 3 error(s), 0 warning(s)
$ echo $?
1

Further options: --db (additional DBC files), -I (include paths), --node (value of %NODE_NAME%), --allow-undeclared-sysvars.Autres options : --db (fichiers DBC supplémentaires), -I (chemins d'inclusion), --node (valeur de %NODE_NAME%), --allow-undeclared-sysvars.Verdere opties: --db (extra DBC-bestanden), -I (include-paden), --node (waarde van %NODE_NAME%), --allow-undeclared-sysvars.

arnodiqa hw list

For each driver backend, shows whether the manufacturer's library was found and which devices and channels are connected. A missing library is not an error; the backend is then reported as "not found". Use --json for scripts.Indique, pour chaque back-end de pilote, si la bibliothèque du fabricant a été trouvée et quels périphériques et canaux sont connectés. Une bibliothèque absente n'est pas une erreur ; le back-end est alors signalé comme « not found ». L'option --json produit une sortie pour les scripts.Toont per driverbackend of de bibliotheek van de fabrikant gevonden is, en welke apparaten en kanalen aangesloten zijn. Een ontbrekende bibliotheek is geen fout; de backend wordt dan als "not found" gemeld. Met --json voor scripts.

arnodiqa hw list
$ arnodiqa hw list
virtual    Virtual CAN bus (in-process) found, 8 channels
             Virtual CAN Bus (serial VIRTUAL, 8 channels)
pcan       not found: PCANBasic.dll is missing (LoadLibraryExW failed)
vector-xl  not found: vxlapi64.dll is missing (LoadLibraryExW failed)
kvaser     not found: canlib32.dll is missing (LoadLibraryExW failed)
socketcan  not available on this operating system
slcan      SLCAN (serial) found, 2 channels
             COM4 (serial COM4, 1 channel)
             COM5 (serial COM5, 1 channel)
gs_usb     gs_usb / candleLight found, 0 channels

Output on a Windows PC without PEAK, Vector and Kvaser drivers installed. Channel mapping in the project: hardware: {pcan: {channel: PCAN_USBBUS1}}, {vector: {app: arnodiqa, channel: 1}}, {kvaser: {serial: …, channel: 0}}, {socketcan: {interface: can0}}, {slcan: {port: COM5}}, {gs_usb: {channel: 0}}.Sortie sur un PC Windows sans pilotes PEAK, Vector ni Kvaser installés. Affectation des canaux dans le projet : hardware: {pcan: {channel: PCAN_USBBUS1}}, {vector: {app: arnodiqa, channel: 1}}, {kvaser: {serial: …, channel: 0}}, {socketcan: {interface: can0}}, {slcan: {port: COM5}}, {gs_usb: {channel: 0}}.Uitvoer op een Windows-pc zonder geïnstalleerde PEAK-, Vector- en Kvaser-drivers. Kanaalmapping in het project: hardware: {pcan: {channel: PCAN_USBBUS1}}, {vector: {app: arnodiqa, channel: 1}}, {kvaser: {serial: …, channel: 0}}, {socketcan: {interface: can0}}, {slcan: {port: COM5}}, {gs_usb: {channel: 0}}.

arnodiqa hw selftest tests a new interface with two channels on one bus (--pair), one channel with internal loopback (--channel) or two LIN channels (--lin-pair), and writes a report as JSON or HTML.arnodiqa hw selftest teste une nouvelle interface avec deux canaux sur un même bus (--pair), un canal en boucle interne (--channel) ou deux canaux LIN (--lin-pair), et produit un rapport JSON ou HTML.arnodiqa hw selftest test een nieuwe interface met twee kanalen op één bus (--pair), één kanaal met interne loopback (--channel) of twee LIN-kanalen (--lin-pair), en schrijft een rapport als JSON of HTML.

arnodiqa flash <PROJECT> --ecu <ECU>

Flashes an ECU with the flash program from the project (diagnostics.ecus[].flash). Firmware can be Intel HEX, Motorola S-record, a binary file (with --base) or ODX-F/PDX (--odx-session). Without custom steps, the default sequence applies: extended session, DTC setting and communication off, programming session, security access, fingerprint, then erase, download and verify per segment, and finally an ECU reset. After an error or a cancellation, an ECU reset follows.Flashe un calculateur (ECU) avec le programme de flashage défini dans le projet (diagnostics.ecus[].flash). Le firmware peut être fourni en Intel HEX, Motorola S-record, fichier binaire (avec --base) ou ODX-F/PDX (--odx-session). Sans étapes personnalisées, la séquence standard s'applique : session étendue, désactivation du DTC setting et de la communication, session de programmation, security access, empreinte (fingerprint), puis effacement, téléchargement et vérification par segment, et enfin reset de l'ECU. En cas d'erreur ou d'annulation, un reset de l'ECU est effectué.Flasht een ECU met het flashprogramma uit het project (diagnostics.ecus[].flash). Firmware als Intel HEX, Motorola S-record, binair bestand (met --base) of ODX-F/PDX (--odx-session). Zonder eigen stappen geldt de standaardsequentie: extended session, DTC-setting en communicatie uit, programming session, security access, fingerprint, per segment wissen, downloaden en controleren, en tot slot ECU-reset. Bij een fout of annulering volgt een ECU-reset.

arnodiqa flash
arnodiqa flash project.yaml --ecu DoorECU --file door_v2.hex --report flash.json
arnodiqa flash project.yaml --ecu DoorECU --file door.bin --base 0x80000 --var fingerprint=261015000000000001
arnodiqa flash project.yaml --ecu DoorECU --file door.pdx --odx-session APP --simulated --json

Further options: --format ihex|srec|bin|odx, --timeout (exit code 6 when exceeded), --real-bus, -q. With --simulated, the project's ECU simulation responds, so a flash program can be checked without hardware.Autres options : --format ihex|srec|bin|odx, --timeout (code de sortie 6 en cas de dépassement), --real-bus, -q. Avec --simulated, c'est la simulation d'ECU du projet qui répond ; un programme de flashage peut ainsi être vérifié sans matériel.Verdere opties: --format ihex|srec|bin|odx, --timeout (exitcode 6 bij overschrijding), --real-bus, -q. Met --simulated antwoordt de ECU-simulatie van het project, zodat een flashprogramma zonder hardware te controleren is.

arnodiqa support bundle | info | logs

Creates a support bundle (zip) with system information, version and settings, the hardware list, recent logs and crash reports. User names, host name and serial numbers are anonymised. Keys, bus data and CAPL sources are never included. Nothing is uploaded. --dry-run shows in advance what the bundle will contain.Crée un paquet de support (zip) contenant les informations système, la version et les paramètres, la liste du matériel, les journaux récents et les rapports de plantage. Les noms d'utilisateur, le nom d'hôte et les numéros de série sont anonymisés. Les clés, les données de bus et les sources CAPL n'y figurent jamais. Rien n'est envoyé. --dry-run affiche au préalable le contenu du paquet.Maakt een supportbundel (zip) met systeeminformatie, versie en instellingen, de hardwarelijst, recente logs en crashrapporten. Gebruikersnamen, hostnaam en serienummers worden geanonimiseerd. Sleutels, busdata en CAPL-bronnen gaan er nooit in. Er wordt niets geüpload. --dry-run toont vooraf wat erin gaat.

arnodiqa support
arnodiqa support bundle --since 7d --out support.zip
arnodiqa support bundle --include-project project.yaml --dry-run
arnodiqa support info
arnodiqa support logs

On Windows, logs are stored in %LOCALAPPDATA%\arnodiqa\logs; on Linux, in ~/.local/state/arnodiqa/logs. Set the log level with ARNODIQA_LOG or in diagnostics.json, or in the app via Help.Sous Windows, les journaux se trouvent dans %LOCALAPPDATA%\arnodiqa\logs ; sous Linux, dans ~/.local/state/arnodiqa/logs. Le niveau de journalisation se règle avec ARNODIQA_LOG ou dans diagnostics.json, et dans l'application via Help.Logs staan op Windows in %LOCALAPPDATA%\arnodiqa\logs, op Linux in ~/.local/state/arnodiqa/logs. Het logniveau stel je in met ARNODIQA_LOG of in diagnostics.json, in de app via Help.

arnodiqa export --db <[CH:]FILE> <INPUT> <OUTPUT>

Decodes a log file (ASC, BLF, MF4 or PCAPNG) with DBC or LDF databases and exports the signals as CSV, MATLAB (.mat) or Parquet. With a CHANNEL: prefix, a database applies to that channel only. The wide layout (default) gives one table per message; long gives one table with a row per signal value (time, channel, message, signal, value, unit, text).Décode un fichier journal (ASC, BLF, MF4 ou PCAPNG) avec des bases de données DBC ou LDF et exporte les signaux en CSV, MATLAB (.mat) ou Parquet. Avec le préfixe CANAL:, une base de données ne s'applique qu'à ce canal. La disposition wide (par défaut) produit une table par message ; long produit une seule table avec une ligne par valeur de signal (temps, canal, message, signal, valeur, unité, texte).Decodeert een logbestand (ASC, BLF, MF4 of PCAPNG) met DBC- of LDF-databases en exporteert de signalen als CSV, MATLAB (.mat) of Parquet. Met het voorvoegsel KANAAL: geldt een database alleen voor dat kanaal. Layout wide (standaard) geeft één tabel per bericht; long geeft één tabel met een rij per signaalwaarde (tijd, kanaal, bericht, signaal, waarde, eenheid, tekst).

arnodiqa export
$ arnodiqa export --db 1:powertrain.dbc --db 2:comfort.dbc --format csv Demo_1.blf signals
1485 frames decoded (0 without database entry) of 1485 events, 12638 signal values in 8 table(s), 0.041 s
  EngineData                              300 rows  signals\EngineData.csv
  BCM_Lights                               60 rows  signals\BCM_Lights.csv
  DCM_DoorState                            30 rows  signals\DCM_DoorState.csv
  TransmissionData                        150 rows  signals\TransmissionData.csv
  Seat_Climate                             15 rows  signals\Seat_Climate.csv
  WheelSpeeds                             300 rows  signals\WheelSpeeds.csv
  BCM_MuxInfo                              30 rows  signals\BCM_MuxInfo.csv
  PT_FD_Status                            600 rows  signals\PT_FD_Status.csv
$ head -3 signals/EngineData.csv
time,channel,EngineSpeed,CoolantTemp,OilTemp,ThrottlePos,EngineState,EngineTorque,AliveCounter,Checksum
0.000242,1,768,20,0,0,0,0,0,0
0.01024,1,768.25,20,0,0,0,0,0,0
$ arnodiqa export --db 1:powertrain.dbc --db 2:comfort.dbc --format parquet --layout long Demo_1.blf signals.parquet
1485 frames decoded (0 without database entry) of 1485 events, 12638 signal values in 1 table(s), 0.066 s
  signals                               12638 rows  signals.parquet
FormatFormatFormaatwidelongNotesRemarquesOpmerkingen
csvfolder with <Message>.csvdossier avec <Message>.csvmap met <Bericht>.csvsignals.csvComma separator, dot as decimal markVirgule comme séparateur, point comme séparateur décimalKomma als scheidingsteken, punt als decimaalteken
matstruct per messagestruct par messagestruct per berichtcolumns and signal namescolonnes et noms de signauxkolommen en signaalnamenMATLAB Level 5
parquetfolder with <Message>.parquetdossier avec <Message>.parquetmap met <Bericht>.parquetsignals.parquetSnappy compression, units as metadata; for pandas, Polars, Spark and DuckDBCompression Snappy, unités en métadonnées ; pour pandas, Polars, Spark et DuckDBSnappy-compressie, eenheden als metadata; voor pandas, Polars, Spark en DuckDB

time is in seconds since measurement start; the absolute start time is stored in the metadata. CSV and Parquet are written while reading and therefore suit very large logs. Exit codes: 0 success, 2 usage error, 3 database cannot be loaded, 4 read or write error.time est exprimé en secondes depuis le début de la mesure ; l'heure de début absolue figure dans les métadonnées. CSV et Parquet sont écrits pendant la lecture et conviennent donc aux très gros journaux. Codes de sortie : 0 succès, 2 erreur d'utilisation, 3 base de données impossible à charger, 4 erreur de lecture ou d'écriture.time staat in seconden sinds de meetstart; de absolute starttijd staat in de metadata. CSV en Parquet schrijven tijdens het lezen weg en zijn daarom geschikt voor zeer grote logs. Exitcodes: 0 succes, 2 gebruiksfout, 3 database niet te laden, 4 lees- of schrijffout.

arnodiqa db lint | diff | convert | info

Database tools for DBC, LDF and ARXML. For an ARXML file with several clusters, select one with --cluster; without it, lint and info handle each cluster separately.Outils de bases de données pour DBC, LDF et ARXML. Pour un fichier ARXML contenant plusieurs clusters, choisissez-en un avec --cluster ; sans cette option, lint et info traitent chaque cluster séparément.Databasetools voor DBC, LDF en ARXML. Bij een ARXML-bestand met meerdere clusters kies je er één met --cluster; zonder die optie behandelen lint en info elk cluster afzonderlijk.

arnodiqa db info
$ arnodiqa db info system.arxml
system.arxml#PT_CAN (CAN (AUTOSAR))
  frames:        5
  signals:       24
  nodes:         3 (ECM, GW, TCM)
  value tables:  0
  bus load:      3.6 % .. 4.3 % at 500 / 2000 kbit/s (cycle times; 3 frames, 160 frames/s; bit rate from database)

system.arxml#Body_CANFD (CAN FD (AUTOSAR))
  frames:        4
  signals:       15
  nodes:         2 (BCM, GW)
  value tables:  0
  bus load:      4.2 % .. 7.5 % at 500 / 2000 kbit/s (cycle times; 3 frames, 152 frames/s; bit rate from database)

system.arxml#Door_LIN (LIN)
  frames:        6
  signals:       9
  nodes:         3 (BCM, DDM, PDM)
  value tables:  2
  schedules:     Normal, Collision_Resolve, Config
  bus load:      33.3 % .. 46.7 % at 19.2 kbit/s (schedule table Normal; 4 frames, 100 frames/s; bit rate from database)
$ arnodiqa db convert system.arxml pt_can.dbc --cluster PT_CAN
pt_can.dbc written (dbc: 5 frames, 24 signals)
$ arnodiqa db diff system.arxml pt_can.dbc --cluster-a PT_CAN
--- system.arxml#PT_CAN
+++ pt_can.dbc
no differences
arnodiqa db lint
$ arnodiqa db lint body.ldf
body.ldf:20: warning[parse-warning] frame 'F2' reuses id 0x10
body.ldf:19: warning[parse-warning] frame 'F1': signal 'B' overlaps another signal
body.ldf: error[duplicate-id] F1: identifier 0x10 used by F1, F2
body.ldf: warning[unused-signal] Orphan: signal Orphan is in no frame
body.ldf: warning[unused-value-table] encoding type Unused is not used by any signal
body.ldf: error[zero-factor] encoding TooBig: scale 0
body.ldf: warning[value-description-out-of-range] Small: encoding TooBig uses raw 9..9, signal has 2 bits
body.ldf: warning[value-description-out-of-range] Small: encoding TooBig uses raw 0..10, signal has 2 bits
body.ldf: warning[suspicious-cycle-time] schedule table Main: delay 7 ms is no multiple of the time base 5 ms
2 error(s), 7 warning(s), 2 info(s)
$ arnodiqa db lint --format github body.ldf
::warning file=body.ldf,line=20,title=parse-warning::frame 'F2' reuses id 0x10
::warning file=body.ldf,line=19,title=parse-warning::frame 'F1': signal 'B' overlaps another signal
::error file=body.ldf,title=duplicate-id::F1: identifier 0x10 used by F1, F2
…
CommandCommandeCommandoPurpose and optionsRôle et optionsDoel en optiesExit codeCode de sortieExitcode
db lint <FILES>…Errors and warnings (overlapping signals, duplicate IDs, ranges, cycle times, unused value tables and more). Several files count as one network and are also checked for ID conflicts. --level, --strict, --format text|json|github.Erreurs et avertissements (signaux qui se chevauchent, identifiants en double, plages, temps de cycle, tables de valeurs inutilisées, etc.). Plusieurs fichiers sont traités comme un seul réseau et sont aussi contrôlés pour les conflits d'identifiants. --level, --strict, --format text|json|github.Fouten en waarschuwingen (overlappende signalen, dubbele ID's, bereiken, cyclustijden, ongebruikte waardetabellen enzovoort). Meerdere bestanden gelden als één netwerk en worden ook op ID-conflicten gecontroleerd. --level, --strict, --format text|json|github.0 without errors, 1 with errors (with --strict also with warnings), 4 file cannot be loaded0 sans erreur, 1 avec erreurs (avec --strict, aussi en cas d'avertissements), 4 fichier impossible à charger0 zonder fouten, 1 met fouten (met --strict ook bij waarschuwingen), 4 bestand niet te laden
db diff <A> <B>Semantic differences in frames, signals and nodes, also across formats (ARXML against DBC).Différences de contenu dans les trames, les signaux et les nœuds, y compris entre formats (ARXML face à DBC).Inhoudelijke verschillen in frames, signalen en nodes, ook tussen formaten (ARXML tegen DBC).0 equal, 1 differences, 4 file cannot be loaded0 identiques, 1 différences, 4 fichier impossible à charger0 gelijk, 1 verschillen, 4 bestand niet te laden
db convert <IN> <OUT>ARXML to DBC (CAN cluster) or LDF (LIN cluster), or normalise a DBC/LDF. --check writes nothing and checks in CI whether a file is normalised; --cp1252 for DBC in Windows-1252.ARXML vers DBC (cluster CAN) ou LDF (cluster LIN), ou normalisation d'un DBC/LDF. --check n'écrit rien et vérifie en CI qu'un fichier est normalisé ; --cp1252 pour un DBC en Windows-1252.ARXML naar DBC (CAN-cluster) of LDF (LIN-cluster), of een DBC/LDF normaliseren. --check schrijft niets en controleert in CI of een bestand genormaliseerd is; --cp1252 voor DBC in Windows-1252.with --check: 1 if the file would changeavec --check : 1 si le fichier changeraitbij --check: 1 als het bestand zou wijzigen
db info <FILE>Number of frames, signals, nodes and value tables, with a bus load estimate. --frames, --bitrate.Nombre de trames, de signaux, de nœuds et de tables de valeurs, avec une estimation de la charge de bus. --frames, --bitrate.Aantallen frames, signalen, nodes en waardetabellen, met een busload-schatting. --frames, --bitrate.0

arnodiqa license show | install | fingerprint | eula | accept

Licences are signed files (*.bflic) that are checked locally, without a network connection.Les licences sont des fichiers signés (*.bflic), vérifiés localement, sans connexion réseau.Licenties zijn ondertekende bestanden (*.bflic) die lokaal gecontroleerd worden, zonder netwerkverbinding.

CommandCommandeCommandoPurposeRôleDoel
license showStatus: type, customer, end of maintenance, evaluation (--json)État : type, client, fin de maintenance, évaluation (--json)Status: type, klant, einde onderhoud, evaluatie (--json)
license install <FILE>Install a licence file after checking its signature; --system for all users of the computerInstalle un fichier de licence après vérification de sa signature ; --system pour tous les utilisateurs de l'ordinateurLicentiebestand installeren na controle van de handtekening; --system voor alle gebruikers van de computer
license fingerprintFingerprint of this computer, for a node-locked licenceEmpreinte de cet ordinateur, pour une licence liée à la machineFingerprint van deze computer, voor een machinegebonden licentie
license eulaShow the EULA (--lang nl|en)Affiche le CLUF (--lang nl|en)De EULA tonen (--lang nl|en)
license acceptAccept the EULA on behalf of the company; --system for all usersAccepte le CLUF au nom de l'entreprise ; --system pour tous les utilisateursDe EULA aanvaarden namens het bedrijf; --system voor alle gebruikers

arnodiqa capl lsp and VS Codeet VS Codeen VS Code

The CAPL language server speaks the Language Server Protocol over stdin/stdout and uses the same compiler as capl check and measurement start. It provides diagnostics while typing, completion (including messages, signals and system variables from the project), hover, go to definition, outline, signature help and semantic tokens. The server finds the project through the arnodiqa.project setting or takes the nearest project above the file.Le serveur de langage CAPL implémente le Language Server Protocol sur stdin/stdout et utilise le même compilateur que capl check et le démarrage de la mesure. Il fournit les diagnostics pendant la saisie, la complétion (y compris les messages, signaux et variables système du projet), le survol (hover), l'accès à la définition, le plan (outline), l'aide à la signature et les jetons sémantiques. Le serveur trouve le projet grâce au paramètre arnodiqa.project ou, à défaut, retient le projet le plus proche au-dessus du fichier.De CAPL Language Server spreekt het Language Server Protocol over stdin/stdout en gebruikt dezelfde compiler als capl check en de meetstart. Hij levert foutmeldingen tijdens het typen, completion (ook met berichten, signalen en systeemvariabelen uit het project), hover, go-to-definition, outline, signature help en semantic tokens. Het project wordt gevonden via de instelling arnodiqa.project of het dichtstbijzijnde project boven het bestand.

The VS Code extension contains syntax highlighting, snippets, the LSP client and the command Arnodiqa: run test. It is delivered as a .vsix file and installs without an internet connection:L'extension VS Code comprend la coloration syntaxique, des snippets, le client LSP et la commande Arnodiqa: run test. Elle est livrée sous forme de fichier .vsix et s'installe sans connexion Internet :De VS Code-extensie bevat syntaxkleuring, snippets, de LSP-client en het commando Arnodiqa: run test. Ze wordt geleverd als .vsix en installeert zonder internetverbinding:

shell
$ code --install-extension arnodiqa-capl.vsix

Other editors use arnodiqa capl lsp (or arnodiqa-capl-lsp) as language server; a TextMate grammar is available for syntax highlighting.Les autres éditeurs utilisent arnodiqa capl lsp (ou arnodiqa-capl-lsp) comme serveur de langage ; une grammaire TextMate est disponible pour la coloration syntaxique.Andere editors gebruiken arnodiqa capl lsp (of arnodiqa-capl-lsp) als language server; een TextMate-grammatica is beschikbaar voor syntaxkleuring.

Example: CI stepExemple : étape CIVoorbeeld: CI-stap

.gitlab-ci.yml / GitHub Actions (sketchesquisseschets)
export ARNODIQA_ACCEPT_EULA=yes
arnodiqa db lint --format github db/*.dbc db/*.ldf
arnodiqa validate project.yaml
arnodiqa test project.yaml --junit junit.xml --html report.html
code=$?      # 0 = pass, 1 = fail, 4 = error in test system, 8 = no test case ...
arnodiqa run project.yaml --simulated --duration 30s --json > run.json
exit $code

File formats, stats and convertFormats de fichiers, stats et convertBestandsformaten, stats en convert

FormatFormatFormaatReadLectureLezenWriteÉcritureSchrijvenDetailsDétailsDetails
BLFYesOuiJaYesOuiJaObjects CAN_MESSAGE(2), CAN_FD_MESSAGE(_64), error frames, driver error and chip state, LIN objects; zlib containers; streaming with bounded memory; resync on corrupt objects; salvages complete objects from a truncated file.Objets CAN_MESSAGE(2), CAN_FD_MESSAGE(_64), trames d'erreur, erreurs de pilote et état du contrôleur, objets LIN ; conteneurs zlib ; lecture en flux à mémoire bornée ; resynchronisation sur les objets corrompus ; récupération des objets complets d'un fichier tronqué.Objecten CAN_MESSAGE(2), CAN_FD_MESSAGE(_64), error frames, driver-error/chip-state, LIN-objecten; zlib-containers; streaming met begrensd geheugen; resync bij corrupte objecten; redt complete objecten uit een afgekapt bestand.
ASCYesOuiJaYesOuiJaVariants from CANoe 7 to 13, EN/DE date, absolute or relative time, CAN FD lines with length and bit count, LIN lines, system variables (SV:), 6 or 9 decimals.Variantes de CANoe 7 à 13, date EN/DE, temps absolu ou relatif, lignes CAN FD avec longueur et nombre de bits, lignes LIN, variables système (SV:), 6 ou 9 décimales.Varianten van CANoe 7 tot 13, EN/DE-datum, absolute of relatieve tijd, CAN FD-regels met lengte en bitcount, LIN-regels, systeemvariabelen (SV:), 6 of 9 decimalen.
DBCYesOuiJaYesOuiJaUTF-8 and Windows-1252; mux and extended mux, VAL_, SIG_VALTYPE_, attributes, J1939.UTF-8 et Windows-1252 ; mux et mux étendu, VAL_, SIG_VALTYPE_, attributs, J1939.UTF-8 en Windows-1252; mux en extended mux, VAL_, SIG_VALTYPE_, attributen, J1939.
LDFYesOuiJaYesOuiJaLIN 1.3, 2.0, 2.1, 2.2A, ISO 17987-3, SAE J2602-3.
ODX / PDXYesOuiJaNoNonNeeDiagnostic descriptions (ASAM MCD-2D) for symbolic diagnostics and ECU simulation.Descriptions de diagnostic (ASAM MCD-2D) pour le diagnostic symbolique et la simulation d'ECU.Diagnosebeschrijvingen (ASAM MCD-2D) voor symbolische diagnose en ECU-simulatie.
MF4YesOuiJaYesOuiJaASAM MDF 4.1, bus logging for CAN, CAN FD and LIN; deflate compression.ASAM MDF 4.1, journalisation de bus pour CAN, CAN FD et LIN ; compression deflate.ASAM MDF 4.1, bus logging voor CAN, CAN FD en LIN; deflate-compressie.
PCAPNGYesOuiJaYesOuiJaCAN and CAN FD (SocketCAN link type), opens in Wireshark. LIN is skipped and counted.CAN et CAN FD (type de lien SocketCAN), lisible dans Wireshark. Le LIN est ignoré et comptabilisé.CAN en CAN FD (SocketCAN-linktype), te openen in Wireshark. LIN wordt overgeslagen en geteld.
ARXMLYesOuiJato DBC/LDFvers DBC/LDFnaar DBC/LDFAUTOSAR Classic 4.x and 3.x: CAN, CAN FD, container PDUs, LIN clusters; E2E and SecOC properties are read. Several files are merged.AUTOSAR Classic 4.x et 3.x : CAN, CAN FD, PDU conteneurs, clusters LIN ; les propriétés E2E et SecOC sont lues. Plusieurs fichiers sont fusionnés.AUTOSAR Classic 4.x en 3.x: CAN, CAN FD, container-PDU's, LIN-clusters; E2E- en SecOC-eigenschappen worden ingelezen. Meerdere bestanden worden samengevoegd.
CSV, MATLAB, ParquetNoNonNeeYesOuiJaSignal export, see arnodiqa export.Export de signaux, voir arnodiqa export.Signaalexport, zie arnodiqa export.

arnodiqa stats <FILE>

arnodiqa stats
$ arnodiqa stats examples/demo/logs/Demo_1.blf
file:        examples/demo/logs/Demo_1.blf
format:      BLF
start:       2026-10-14 17:51:22.976
stop:        2026-10-14 17:51:25.971
objects (header): 1485
events:      1485
time span:   0.000242 .. 2.995380 s (duration 2.995138 s)
skipped:     0

channel  classic   remote       fd   errors
      1      780        0      600        0
      2      105        0        0        0

channel  id            count
      1  100             300
      1  1A0             150
      1  210             300
      1  300              30
      1  400             600
      2  320              60
      2  321              30
      2  18FF1E01x        15

read in 0.004 s (395715 events/s)

For a small file, start-up time dominates throughput; see Performance for large files.Pour un petit fichier, le temps de démarrage détermine le débit ; voir Performances pour les gros fichiers.Bij een klein bestand bepaalt de opstarttijd de doorvoer; zie Prestaties voor grote bestanden.

arnodiqa convert <INPUT> <OUTPUT>

arnodiqa convert
$ arnodiqa convert Demo_1.blf Demo_1.mf4
1485 events written to Demo_1.mf4 in 0.018 s (81291 events/s); 0 skipped, 0 unparsable, 0 not representable
$ arnodiqa convert Demo_1.mf4 Demo_1.pcapng
1485 events written to Demo_1.pcapng in 0.013 s (112468 events/s); 0 skipped, 0 unparsable, 0 not representable

Converts between ASC, BLF, MF4 and PCAPNG; the format follows from the extensions. Start time and channel names are kept. Events the target format cannot store (for example LIN in PCAPNG) are skipped and counted. With --db, the output may also be a signal file (.csv, .parquet, .mat). --level 0-9 sets the compression for BLF and MF4 (default 6, the smallest file; measurements log with level 1). --json prints the result as JSON. bf-logtool is an alias with the same functions.Convertit entre ASC, BLF, MF4 et PCAPNG ; le format découle des extensions. L'heure de début et les noms des canaux sont conservés. Les événements que le format cible ne peut pas stocker (par exemple le LIN en PCAPNG) sont ignorés et comptabilisés. Avec --db, la sortie peut aussi être un fichier de signaux (.csv, .parquet, .mat). --level 0-9 règle la compression pour BLF et MF4 (6 par défaut, qui donne le plus petit fichier ; les mesures journalisent au niveau 1). --json renvoie le résultat en JSON. bf-logtool est un alias offrant les mêmes fonctions.Zet om tussen ASC, BLF, MF4 en PCAPNG; het formaat volgt uit de extensies. Starttijd en kanaalnamen gaan mee. Events die het doelformaat niet kan bewaren (bijvoorbeeld LIN in PCAPNG), worden overgeslagen en geteld. Met --db mag de uitvoer ook een signaalbestand zijn (.csv, .parquet, .mat). --level 0-9 zet de compressie voor BLF en MF4 (standaard 6, het kleinste bestand; metingen loggen met niveau 1). --json geeft het resultaat als JSON. bf-logtool is een alias met dezelfde functies.