Automatisering en CI
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 en licentie op build-agents
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.
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.
export ARNODIQA_ACCEPT_EULA=yes export ARNODIQA_LICENSE_FILE=/licences/site.arnlic arnodiqa license show --json
Een project draaien
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. Een project valideren
$ arnodiqa validate examples/demo/demo.yaml ok
2. Een meting draaien
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 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
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-rapport
Met --json komt het volledige rapport als één JSON-object op stdout (hier geformatteerd weergegeven). Tijden staan in nanoseconden.
$ 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: een logbestand opnieuw analyseren
arnodiqa run examples/demo/demo.yaml --offline examples/demo/logs/Demo_1.blfDe logbestanden vervangen de bronnen van het project. Filters, triggers en logging-blokken werken net als online.
Commando's
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
| Commando | Doel |
|---|---|
run | Meting draaien (online, offline of gesimuleerd), statistiek en logbestanden |
validate, schema | Project controleren; JSON Schema van projectbestanden |
test | Test units en CAPL-testmodules uitvoeren, rapporten schrijven |
capl check, capl lsp | CAPL-programma compileren en foutmeldingen tonen; language server voor editors |
hw list, hw selftest | Driverbackends, status en aangesloten kanalen; zelftest van een interface |
flash | Een ECU flashen via UDS, met JSON-rapport |
license | Licentiestatus, licentiebestand installeren, fingerprint, EULA |
support | Supportbundel, systeeminformatie en logmap |
stats, convert | Logbestand samenvatten; converteren tussen ASC, BLF, MF4 en PCAPNG |
export | Signalen exporteren naar CSV, MATLAB of Parquet |
db | Databases controleren, vergelijken, converteren en samenvatten (DBC, LDF, ARXML) |
arnodiqa run <PROJECT>
| Optie | Betekenis |
|---|---|
--duration <SPAN> | Stop na deze meettijd (bv. 10s, 500ms, 2min). Zonder deze optie loopt een online meting tot Ctrl+C. |
--offline <FILE> | Offline met deze logbestanden (herhaalbaar); vervangt de bronnen van het project. |
--simulated | Gesimuleerde bus (geen hardware). |
--real-bus | Echte bus (hardware of virtuele netwerken op de wandklok). |
--without-logging | Start met alle logging-blokken uit. |
--timeout <SPAN> | Veiligheidslimiet in wandkloktijd voor de hele run; wordt die bereikt, dan is de exitcode 6. |
--start-time <ISO8601> | Vaste starttijd voor de headers van logbestanden en {MeasurementStart}, voor reproduceerbare bestanden. |
--top-ids <N> | Aantal ID's in de statistieken (standaard 20). |
-q, --quiet | Alleen fouten en de samenvattingsregel. |
--json | Rapport als JSON op stdout: {"exitCode": n, "report": {…}} of {"exitCode": n, "error": "…"}. |
Een project met CAPL-nodes draait op dezelfde manier. Meldingen van de nodes verschijnen met hun meettijd vóór het rapport.
$ 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 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.
Exitcodes van run
| Code | Betekenis |
|---|---|
| 0 | Meting gedraaid en normaal gestopt |
| 1 | Meting gedraaid, maar een logging-blok meldde een fout |
| 2 | Ongeldige command line |
| 3 | Project niet te laden of inconsistent |
| 4 | Meting kon niet starten of faalde tijdens het draaien |
| 5 | Meting gedraaid, maar events gingen verloren (overbelasting of volle logging-queue) |
| 6 | --timeout bereikt; rapport en logbestanden zijn compleet tot dat moment |
| 130 | Gestopt met Ctrl+C (na een nette stop met rapport en gesloten logs); een tweede Ctrl+C stopt direct |
arnodiqa test <PROJECT>
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 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
| Optie | Betekenis |
|---|---|
--unit <UNIT> | Unit op naam, .vtestunit.yaml-bestand of CAPL-testmodule (.can); herhaalbaar. Standaard: alle units van het project. |
--variant <NAME=VALUE> | Waarde van een variant property (herhaalbaar). |
--report, --junit, --html <FILE> | Rapport als JSON, JUnit XML of HTML. Het HTML-rapport is één zelfstandige pagina zonder scripts. |
--max-time <SPAN> | Maximale meettijd per unit (standaard 1 uur gesimuleerde tijd). |
--real-bus | De working mode van het project gebruiken in plaats van de gesimuleerde bus. |
--json, -q | JSON-rapport op stdout; alleen de samenvatting. |
| Exitcode | Betekenis |
|---|---|
| 0 | Alle uitgevoerde testcases geslaagd |
| 1 | Minstens één testcase gefaald |
| 2 | Ongeldige command line |
| 3 | Project, test unit of testboom niet te laden, of geen unit gevonden |
| 4 | Fout in het testsysteem (compileerfout, runtime-fout, unit niet afgerond) |
| 5 | Slechtste verdict: inconclusive |
| 8 | Geen enkele testcase uitgevoerd |
arnodiqa capl check <FILE>
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 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
Verdere opties: --db (extra DBC-bestanden), -I (include-paden), --node (waarde van %NODE_NAME%), --allow-undeclared-sysvars.
arnodiqa hw list
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 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
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 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>
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 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
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
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 bundle --since 7d --out support.zip arnodiqa support bundle --include-project project.yaml --dry-run arnodiqa support info arnodiqa support logs
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>
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 --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
| Formaat | wide | long | Opmerkingen |
|---|---|---|---|
csv | map met <Bericht>.csv | signals.csv | Komma als scheidingsteken, punt als decimaalteken |
mat | struct per bericht | kolommen en signaalnamen | MATLAB Level 5 |
parquet | map met <Bericht>.parquet | signals.parquet | Snappy-compressie, eenheden als metadata; voor pandas, Polars, Spark en DuckDB |
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
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 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 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 …
| Commando | Doel en opties | Exitcode |
|---|---|---|
db lint <FILES>… | 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 zonder fouten, 1 met fouten (met --strict ook bij waarschuwingen), 4 bestand niet te laden |
db diff <A> <B> | Inhoudelijke verschillen in frames, signalen en nodes, ook tussen formaten (ARXML tegen DBC). | 0 gelijk, 1 verschillen, 4 bestand niet te laden |
db convert <IN> <OUT> | 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. | bij --check: 1 als het bestand zou wijzigen |
db info <FILE> | Aantallen frames, signalen, nodes en waardetabellen, met een busload-schatting. --frames, --bitrate. | 0 |
arnodiqa license show | install | fingerprint | eula | accept
Licenties zijn ondertekende bestanden (*.arnlic) die lokaal gecontroleerd worden, zonder netwerkverbinding.
| Commando | Doel |
|---|---|
license show | Status: type, klant, einde onderhoud, evaluatie (--json) |
license install <FILE> | Licentiebestand installeren na controle van de handtekening; --system voor alle gebruikers van de computer |
license fingerprint | Fingerprint van deze computer, voor een machinegebonden licentie |
license eula | De EULA tonen (--lang nl|en) |
license accept | De EULA aanvaarden namens het bedrijf; --system voor alle gebruikers |
arnodiqa capl lsp en VS Code
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.
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:
$ code --install-extension arnodiqa-capl.vsix
Andere editors gebruiken arnodiqa capl lsp (of arnodiqa-capl-lsp) als language server; een TextMate-grammatica is beschikbaar voor syntaxkleuring.
Voorbeeld: CI-stap
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
Bestandsformaten, stats en convert
| Formaat | Lezen | Schrijven | Details |
|---|---|---|---|
| BLF | Ja | Ja | 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. |
| ASC | Ja | Ja | 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. |
| DBC | Ja | Ja | UTF-8 en Windows-1252; mux en extended mux, VAL_, SIG_VALTYPE_, attributen, J1939. |
| LDF | Ja | Ja | LIN 1.3, 2.0, 2.1, 2.2A, ISO 17987-3, SAE J2602-3. |
| ODX / PDX | Ja | Nee | Diagnosebeschrijvingen (ASAM MCD-2D) voor symbolische diagnose en ECU-simulatie. |
| MF4 | Ja | Ja | ASAM MDF 4.1, bus logging voor CAN, CAN FD en LIN; deflate-compressie. |
| PCAPNG | Ja | Ja | CAN en CAN FD (SocketCAN-linktype), te openen in Wireshark. LIN wordt overgeslagen en geteld. |
| ARXML | Ja | naar DBC/LDF | 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, Parquet | Nee | Ja | Signaalexport, zie arnodiqa export. |
arnodiqa stats <FILE>
$ 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)
Bij een klein bestand bepaalt de opstarttijd de doorvoer; zie Prestaties voor grote bestanden.
arnodiqa convert <INPUT> <OUTPUT>
$ 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
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.