RJCP.Diagnostics.Log.Dlt
0.8.1
dotnet add package RJCP.Diagnostics.Log.Dlt --version 0.8.1
NuGet\Install-Package RJCP.Diagnostics.Log.Dlt -Version 0.8.1
<PackageReference Include="RJCP.Diagnostics.Log.Dlt" Version="0.8.1" />
paket add RJCP.Diagnostics.Log.Dlt --version 0.8.1
#r "nuget: RJCP.Diagnostics.Log.Dlt, 0.8.1"
// Install RJCP.Diagnostics.Log.Dlt as a Cake Addin #addin nuget:?package=RJCP.Diagnostics.Log.Dlt&version=0.8.1 // Install RJCP.Diagnostics.Log.Dlt as a Cake Tool #tool nuget:?package=RJCP.Diagnostics.Log.Dlt&version=0.8.1
RJCP.Diagnostics.Log.Dlt Project
1. DLT Trace Reader
The DLT Trace Reader implements version 1 of the AutoSAR Diagnostics Log and Trace Protocol Specification R20-11.
It is used by the DltDump application.
1.1. Reading
It implements reading streams from:
- The serial port (e.g. using RJCP.SerialPortStream)
- TCP Networks
- From disk
It supports the AutoSAR DLT version 1 packet, in three variants:
- As a network stream, i.e. in the format streamed from logging devices
- Stored on disk, with a storage header
- Sent over serial port with an (undocumented) serial header, in the same format as the Covesa DLT Viewer.
It can interpret Non-Verbose streams based on the FIBEX file format and convert them to a verbose string.
It supports most of the data types defined in the AutoSAR standard, including:
- Boolean
BOOL
- Signed Int
SINT
- Unsigned Int
UINT
- With additional Integer Coding (Hex, Octal, Binary, Decimal)
- Float
FLOA
- Raw
RAWD
- Strings
STRG
- With String Coding ASCII and UTF-8 (
SCOD
) being stricter than Covesa.
- With String Coding ASCII and UTF-8 (
Not implemented are:
- Arrays
ARAY
- Structures (
STRU
) - Variable Info (
VARI
) - Fixed Point (
FIXP
) - Trace Info (
TRAI
)
It adds extra heuristics to try and determine corrupted data, by checking the length of verbose payloads with the packet payload (looking for errors in datastreams), and tries to synchronise where possible.
The output of the string tries to be compatible with the same output given by the Covesa DLT Viewer.
1.2. Constraints
Various constraints are added for fast filtering of DLT lines.
DltAppId
DltCtxId
DltEcuId
DltIsControl
DltIsVerbose
DltMessageId
DltMessageType
DltSessionId
These can be used in addition the constraints defined by the
RJCP.Diagnostics.Log
package.
1.3. Control Messages
The reading and interpreting of various control messages over multiple versions of the standard is supported (so long as the control message identifiers don't conflict).
The X
indicates the control message is implemented.
Service Id | Name | Request | Response | Standard |
---|---|---|---|---|
0x01 |
SetLogLevel | R/W | R/W | PRS 1.4.0 |
0x02 |
SetTraceStatus | R/W | R/W | PRS 1.4.0 |
0x03 |
GetLogInfo | R/W | R/W | PRS 1.4.0 |
0x04 |
GetDefaultLogLevel | R/W | R/W | PRS 1.4.0 |
0x05 |
StoreConfiguration | R/W | R/W | PRS 1.4.0 |
0x06 |
ResetToFactoryDefault | R/W | R/W | PRS 1.4.0 |
0x07 |
SetComInterfaceStatus¹ | SWS 4.2.2 | ||
0x08 |
SetComInterfaceMaxBandwidth¹ | SWS 4.2.2 | ||
0x09 |
SetVerboseMode¹ | R/W | R/W | SWS 4.2.2 |
0x0A |
SetMessageFiltering | R/W | R/W | PRS 1.4.0 |
0x0B |
SetTimingPackets | R/W | R/W | SWS 4.2.2 |
0x0C |
GetLocalTime¹ | R/W | R/W | SWS 4.2.2 |
0x0D |
SetUseECUID¹ | R/W | R/W | SWS 4.2.2 |
0x0E |
SetUseSessionId¹ | R/W | R/W | SWS 4.2.2 |
0x0F |
UseTimestamp¹ | R/W | R/W | SWS 4.2.2 |
0x10 |
UseExtendedHeader¹ | R/W | R/W | SWS 4.2.2 |
0x11 |
SetDefaultLogLevel | R/W | R/W | PRS 1.4.0 |
0x12 |
SetDefaultTraceStatus | R/W | R/W | PRS 1.4.0 |
0x13 |
GetSoftwareVersion | R/W | R/W | PRS 1.4.0 |
0x14 |
MessageBufferOverflow¹ | R/W | R/W | SWS 4.2.2 |
0x15 |
GetDefaultTraceStatus | R/W | R/W | PRS 1.4.0 |
0x17 |
GetLogChannelNames | PRS 1.4.0 | ||
0x16 |
GetComInterfaceStatus¹ | SWS 4.2.2 | ||
0x17 |
GetComInterfaceNames² | SWS 4.2.2 | ||
0x18 |
GetComInterfaceMaxBandwidth¹ | SWS 4.2.2 | ||
0x19 |
GetVerboseModeStatus¹ | R/W | R/W | SWS 4.2.2 |
0x1A |
GetMessageFilteringStatus¹ | R/W | R/W | SWS 4.2.2 |
0x1B |
GetUseECUID¹ | R/W | R/W | SWS 4.2.2 |
0x1C |
GetUseSessionID¹ | R/W | R/W | SWS 4.2.2 |
0x1D |
GetUseTimestamp¹ | R/W | R/W | SWS 4.2.2 |
0x1E |
GetUseExtendedHeader¹ | R/W | R/W | SWS 4.2.2 |
0x1F |
GetTraceStatus | R/W | R/W | PRS 1.4.0 |
0x20 |
SetLogChannelAssignment | PRS 1.4.0 | ||
0x21 |
SetLogChannelThreshold | PRS 1.4.0 | ||
0x22 |
GetLogChannelThreshold | PRS 1.4.0 | ||
0x23 |
BufferOverflowNotification | R/W | R/W | PRS 1.4.0 |
0x24 |
SyncTimeStamp | R/W | R/W | PRS R19-11 |
0xF01 |
Unregister Context | N/A | R/W | |
0xF02 |
Connection Info | N/A | R/W | |
0xF03 |
TimeZone Info | N/A | R/W | |
0xF04 |
Marker | N/A | R/W | |
0xFFF ..0xFFFFFFFF |
CallSWCInjection | R | R | PRS 1.4.0 |
2. DLT Trace Writer
The DltTraceWriterFactory
allows to create a DltTraceWriter
that can be used
to write a trace line to disk. This allows one to implement tooling to read log
files (e.g. event logs, journals) and write out as DLT (for example, over the
network).
It supports writing verbose and control messages, as DLTv1 packets.
It does not support writing non-verbose messages.
If access to the raw payload is needed, extend the
DltTraceDecoderBase.CheckLine
in your own class. The payload is not exposed to
a DltTraceLine
to avoid an unnecessary copy. This could allow reading a packet
that is a non-verbose raw message, and instead of using the DltWriter, write the
original line (for example, this filtering is done by DltDump).
3. Release History
3.1. Version 0.8.1
Bugfixes:
- Workaround corrupted verbose with no arguments (DOTNET-921)
Quality:
- Add README.md to NuGet package (DOTNET-816, DOTNET-817, DOTNET-932)
- Mark common secondary warnings as Verbose (DOTNET-922)
- Upgrade to .NET 6.0 (DOTNET-936, DOTNET-942, DOTNET-943, DOTNET-945, DOTNET-951)
- Update to .NET 8.0 (DOTNET-982, DOTNET-983, DOTNET-989, DOTNET-990)
3.2. Version 0.8.0
- Initial Release
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net6.0
- RJCP.Core.Datastructures (>= 0.2.1)
- RJCP.Core.Text (>= 0.5.1)
- RJCP.Core.Xml (>= 0.2.1)
- RJCP.Diagnostics.Log (>= 0.8.1)
- RJCP.Diagnostics.Trace (>= 0.2.1)
-
net8.0
- RJCP.Core.Datastructures (>= 0.2.1)
- RJCP.Core.Text (>= 0.5.1)
- RJCP.Core.Xml (>= 0.2.1)
- RJCP.Diagnostics.Log (>= 0.8.1)
- RJCP.Diagnostics.Trace (>= 0.2.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.