Link V2X ETSI library
Produce and consume uPer compiled ETSI compliant C-ITS messages
Link V2X SDK:s for development of C-ITS and CCAM services offer the easiest and fastest way to connect to the smart mobility ecosystem. Integrate our toolkits into your application to send, receive, produce and consume V2X messages. With solid compliance to European C-ITS standards we ensure direct interoperability in deployments such as Nordic way, C-roads, UDAP and Mobilidata. Our toolkits doesn’t just meet expectations, it sets the standard.
Link V2X ETSI library simplifies the process of generating and interpreting DENM, IVI, CAM, SREM, SPATem and MAPem. With its well documentet and user-friendly interface you can effortlessly create and integrate C-ITS traffic data and services into your applications within hours.
Link V2X - ETSI library key capabilities
ETSI V2X Compliant
Support creating and reading uPer encoded CAM, DENM, IVI, SREM messages with or without Geonet Basic or Secure packet
Integrated security
Support X1609 signing and verification of V2X messages according to ETSI-standard TS 103 097.
Supports EU CCMS
Support EU CCMS PKI certificate enrolement processes with butterfly key management.
No third party libraries
Delivered in native .NET Core or JAVA libraries without third party dependencies
Low latency ASN.1 compiler
Encoding and decoding of ETSI-based messages faster than 0.2ms.
Of grid licensemanagment
We support your zero trust security architecture. Lockdown your implementation deep inside your network.
Example of usage
Create a Denm-message and encode it to an ETSI compliant uPer encoded message with geonet security header
using Digitraffic.link.facilities;
using Digitraffic.link.transport;
String key = "";
//Optional: Add a logger to SDK
ConsoleLogger logger = new ConsoleLogger(Level.Info);
//If needed initialize software security module
SoftwareSecurityModule ssm = new SoftwareSecurityModule("", "", logger);
//Initiate PKI handling for signing and verification of messages
ETSISecurity_L0 sec = new ETSISecurity_L0("", ssm, false, logger);
//Initialize library (pass null for argument log to disable logging)
LibInitializer.Initialize(key, log, sec);
//Initialize clients (pass null for argument log to disable logging)
ConnectInitializer.Initialize(key, log);
/* Create a new EtsiMessage with geonetheader according to ETSI TS 103 097 */
EtsiMessage message = new EtsiMessage(CompileFlags.Signed);
/* Create a new payload of the type DENM211 (Decentralized Notication Message version 2.1.1) */
DENM211 payload = new DENM211();
/* Add the payload to the EtsiMessage */
message.Payload = payload;
/* Generate the complete Etsi binary message signed with Iee1609 credential */
byte[] binaryEtsiMessage = message.Encode();
import digitraffic.link.facilities;
import digitraffic.link.transport;
String key = "";
//Optional: Add a logger to SDK
ConsoleLogger logger = new ConsoleLogger(Level.Info);
//If needed initialize software security module
SoftwareSecurityModule ssm = new SoftwareSecurityModule("", "", logger);
//Initiate PKI handling for signing and verification of messages
ETSISecurity_L0 sec = new ETSISecurity_L0("", ssm, false, logger);
//Initialize library (pass null for argument log to disable logging)
LibInitializer.Initialize(key, log, sec);
//Initialize clients (pass null for argument log to disable logging)
ConnectInitializer.Initialize(key, log);
/* Create a new EtsiMessage with geonetheader according to ETSI TS 103 097 */
EtsiMessage message = new EtsiMessage(CompileFlags.Signed);
/* Create a new payload of the type DENM211 (Decentralized Notication Message version 2.1.1) */
DENM211 payload = new DENM211();
/* Add the payload to the EtsiMessage */
message.Payload = payload;
/* Generate the complete Etsi binary message signed with Iee1609 credential */
byte[] binaryEtsiMessage = message.Encode();