Keep the colleague's microbu-esp32c5 tree in this repository

obu-firmware builds against vanetza-idf from microbu-esp32c5/external, but
that tree was gitignored, so a clone of this repository could not build the
firmware it ships. It is now committed here as ordinary files in its own
folder, microbu-esp32c5/: the colleague's commit cf4b99f plus the V2X2MAP
bridge's signature verification (--trust) used on the bench. Nothing is
fetched from or pushed to the colleague's repository; this repository and
its remotes carry everything. The folder's own .gitignore keeps build output,
downloaded components and private key material out, as it did there; the
committed file set is identical to that repository's tracked files.

The ESP32-C5 is still flashed from obu-firmware/, which only takes
vanetza-idf from microbu-esp32c5/, so the two stay separate folders.
FLASHING.md says how to take a newer version of the colleague's tree (copy
it over the folder, rebuild, test, commit).
This commit is contained in:
Ashin Walpola
2026-09-23 17:46:40 +02:00
parent 2f60623e18
commit 0e9525162d
9881 changed files with 1582523 additions and 17 deletions
@@ -0,0 +1,60 @@
diff --git a/Ieee1609Dot2Dot1Protocol.asn b/Ieee1609Dot2Dot1Protocol.asn
index 78c0489..1bfb644 100644
--- a/Ieee1609Dot2Dot1Protocol.asn
+++ b/Ieee1609Dot2Dot1Protocol.asn
@@ -440,31 +440,35 @@ SignerSelf ::= SignerIdentifier (WITH COMPONENTS {
-- Certificate Requests --
--***************************************************************************--
+ScmsPdu-RaAcaCertRequest ::= ScmsPdu-Scoped {
+ AcaRaInterfacePdu (WITH COMPONENTS {
+ raAcaCertRequest
+ })
+}
+ScmsPdu-EeEcaCertRequest ::= ScmsPdu-Scoped {
+ EcaEeInterfacePdu (WITH COMPONENTS {
+ eeEcaCertRequest
+ })
+}
+ScmsPdu-EeRaCertRequest ::= ScmsPdu-Scoped {
+ EeRaInterfacePdu (WITH COMPONENTS {
+ eeRaCertRequest
+ })
+}
+ScmsPdu-EeRaSuccessorEnrollmentCertRequest ::= ScmsPdu-Scoped {
+ EeRaInterfacePdu (WITH COMPONENTS {
+ eeRaSuccessorEnrollmentCertRequest
+ })
+}
+
+
/**
* @brief This structure defines the all certificate request structures as a
* scoped version of the ScmsPdu.
*/
ScopedCertificateRequest ::= ScmsPdu (
- ScmsPdu-Scoped {
- AcaRaInterfacePdu (WITH COMPONENTS {
- raAcaCertRequest
- })
- } |
- ScmsPdu-Scoped {
- EcaEeInterfacePdu (WITH COMPONENTS {
- eeEcaCertRequest
- })
- } |
- ScmsPdu-Scoped {
- EeRaInterfacePdu (WITH COMPONENTS {
- eeRaCertRequest
- })
- } |
- ScmsPdu-Scoped {
- EeRaInterfacePdu (WITH COMPONENTS {
- eeRaSuccessorEnrollmentCertRequest
- })
- }
+ ScmsPdu-RaAcaCertRequest | ScmsPdu-EeEcaCertRequest |
+ ScmsPdu-EeRaCertRequest | ScmsPdu-EeRaSuccessorEnrollmentCertRequest
)
/**
@@ -0,0 +1,13 @@
diff --git a/vanetza/asn1/support/INTEGER_oer.c b/vanetza/asn1/support/INTEGER_oer.c
index 8e0db3244..40dd53f4c 100644
--- a/vanetza/asn1/support/INTEGER_oer.c
+++ b/vanetza/asn1/support/INTEGER_oer.c
@@ -49,7 +49,7 @@ INTEGER_decode_oer(const asn_codec_ctx_t *opt_codec_ctx,
size -= consumed;
}
- if(req_bytes > size) {
+ if(req_bytes == 0 || req_bytes > size) {
ASN__DECODE_STARVED;
}
@@ -0,0 +1,75 @@
diff --git a/vanetza/asn1/its/ConnectionManeuverAssist-addGrpC.c b/vanetza/asn1/its/ConnectionManeuverAssist-addGrpC.c
index 479097e44..4067a8953 100644
--- a/vanetza/asn1/its/ConnectionManeuverAssist-addGrpC.c
+++ b/vanetza/asn1/its/ConnectionManeuverAssist-addGrpC.c
@@ -6,6 +6,7 @@
*/
#include "ConnectionManeuverAssist-addGrpC.h"
+#include "ItsStationPositionList.h"
asn_TYPE_member_t asn_MBR_ConnectionManeuverAssist_addGrpC_1[] = {
{ ATF_POINTER, 1, offsetof(struct ConnectionManeuverAssist_addGrpC, itsStationPosition),
diff --git a/vanetza/asn1/its/ConnectionManeuverAssist-addGrpC.h b/vanetza/asn1/its/ConnectionManeuverAssist-addGrpC.h
index 5fab8e140..705cbd324 100644
--- a/vanetza/asn1/its/ConnectionManeuverAssist-addGrpC.h
+++ b/vanetza/asn1/its/ConnectionManeuverAssist-addGrpC.h
@@ -43,7 +43,7 @@ extern asn_TYPE_member_t asn_MBR_ConnectionManeuverAssist_addGrpC_1[1];
#endif
/* Referred external types */
-#include "ItsStationPositionList.h"
+/* #include "ItsStationPositionList.h" */
#endif /* _ConnectionManeuverAssist_addGrpC_H_ */
#include "asn_internal.h"
diff --git a/vanetza/asn1/its/MapData-addGrpC.c b/vanetza/asn1/its/MapData-addGrpC.c
index 771d73165..b5481881f 100644
--- a/vanetza/asn1/its/MapData-addGrpC.c
+++ b/vanetza/asn1/its/MapData-addGrpC.c
@@ -6,6 +6,7 @@
*/
#include "MapData-addGrpC.h"
+#include "SignalHeadLocationList.h"
asn_TYPE_member_t asn_MBR_MapData_addGrpC_1[] = {
{ ATF_POINTER, 1, offsetof(struct MapData_addGrpC, signalHeadLocations),
diff --git a/vanetza/asn1/its/MapData-addGrpC.h b/vanetza/asn1/its/MapData-addGrpC.h
index 57a319245..6eeed4138 100644
--- a/vanetza/asn1/its/MapData-addGrpC.h
+++ b/vanetza/asn1/its/MapData-addGrpC.h
@@ -43,7 +43,7 @@ extern asn_TYPE_member_t asn_MBR_MapData_addGrpC_1[1];
#endif
/* Referred external types */
-#include "SignalHeadLocationList.h"
+/* #include "SignalHeadLocationList.h" */
#endif /* _MapData_addGrpC_H_ */
#include "asn_internal.h"
diff --git a/vanetza/asn1/its/NodeSetXY.c b/vanetza/asn1/its/NodeSetXY.c
index b07348a5b..0cdd012c0 100644
--- a/vanetza/asn1/its/NodeSetXY.c
+++ b/vanetza/asn1/its/NodeSetXY.c
@@ -6,6 +6,7 @@
*/
#include "NodeSetXY.h"
+#include "NodeXY.h"
#if !defined(ASN_DISABLE_OER_SUPPORT)
asn_oer_constraints_t asn_OER_type_NodeSetXY_constr_1 CC_NOTUSED = {
diff --git a/vanetza/asn1/its/NodeSetXY.h b/vanetza/asn1/its/NodeSetXY.h
index c7bde7e41..1018d28a2 100644
--- a/vanetza/asn1/its/NodeSetXY.h
+++ b/vanetza/asn1/its/NodeSetXY.h
@@ -42,7 +42,7 @@ extern asn_per_constraints_t asn_PER_type_NodeSetXY_constr_1;
#endif
/* Referred external types */
-#include "NodeXY.h"
+/* #include "NodeXY.h" */
#endif /* _NodeSetXY_H_ */
#include "asn_internal.h"
@@ -0,0 +1,132 @@
diff --git a/vanetza/asn1/its/RegionalExtension.h b/vanetza/asn1/its/RegionalExtension.h
index 3ad7797f..3118dd43 100644
--- a/vanetza/asn1/its/RegionalExtension.h
+++ b/vanetza/asn1/its/RegionalExtension.h
@@ -165,6 +165,7 @@ typedef struct Reg_RTCMcorrections {
struct Reg_RTCMcorrections__regExtValue {
Reg_RTCMcorrections__regExtValue_PR present;
union Reg_RTCMcorrections__regExtValue_u {
+ char _placeholder; /* avoid empty union */
} choice;
/* Context for parsing across buffer boundaries */
@@ -179,6 +180,7 @@ typedef struct Reg_SPAT {
struct Reg_SPAT__regExtValue {
Reg_SPAT__regExtValue_PR present;
union Reg_SPAT__regExtValue_u {
+ char _placeholder; /* avoid empty union */
} choice;
/* Context for parsing across buffer boundaries */
@@ -193,6 +195,7 @@ typedef struct Reg_SignalRequestMessage {
struct Reg_SignalRequestMessage__regExtValue {
Reg_SignalRequestMessage__regExtValue_PR present;
union Reg_SignalRequestMessage__regExtValue_u {
+ char _placeholder; /* avoid empty union */
} choice;
/* Context for parsing across buffer boundaries */
@@ -207,6 +210,7 @@ typedef struct Reg_SignalStatusMessage {
struct Reg_SignalStatusMessage__regExtValue {
Reg_SignalStatusMessage__regExtValue_PR present;
union Reg_SignalStatusMessage__regExtValue_u {
+ char _placeholder; /* avoid empty union */
} choice;
/* Context for parsing across buffer boundaries */
@@ -221,6 +225,7 @@ typedef struct Reg_AdvisorySpeed {
struct Reg_AdvisorySpeed__regExtValue {
Reg_AdvisorySpeed__regExtValue_PR present;
union Reg_AdvisorySpeed__regExtValue_u {
+ char _placeholder; /* avoid empty union */
} choice;
/* Context for parsing across buffer boundaries */
@@ -235,6 +240,7 @@ typedef struct Reg_ComputedLane {
struct Reg_ComputedLane__regExtValue {
Reg_ComputedLane__regExtValue_PR present;
union Reg_ComputedLane__regExtValue_u {
+ char _placeholder; /* avoid empty union */
} choice;
/* Context for parsing across buffer boundaries */
@@ -279,6 +285,7 @@ typedef struct Reg_IntersectionGeometry {
struct Reg_IntersectionGeometry__regExtValue {
Reg_IntersectionGeometry__regExtValue_PR present;
union Reg_IntersectionGeometry__regExtValue_u {
+ char _placeholder; /* avoid empty union */
} choice;
/* Context for parsing across buffer boundaries */
@@ -323,6 +330,7 @@ typedef struct Reg_LaneDataAttribute {
struct Reg_LaneDataAttribute__regExtValue {
Reg_LaneDataAttribute__regExtValue_PR present;
union Reg_LaneDataAttribute__regExtValue_u {
+ char _placeholder; /* avoid empty union */
} choice;
/* Context for parsing across buffer boundaries */
@@ -352,6 +360,7 @@ typedef struct Reg_MovementState {
struct Reg_MovementState__regExtValue {
Reg_MovementState__regExtValue_PR present;
union Reg_MovementState__regExtValue_u {
+ char _placeholder; /* avoid empty union */
} choice;
/* Context for parsing across buffer boundaries */
@@ -381,6 +390,7 @@ typedef struct Reg_NodeOffsetPointXY {
struct Reg_NodeOffsetPointXY__regExtValue {
Reg_NodeOffsetPointXY__regExtValue_PR present;
union Reg_NodeOffsetPointXY__regExtValue_u {
+ char _placeholder; /* avoid empty union */
} choice;
/* Context for parsing across buffer boundaries */
@@ -425,6 +435,7 @@ typedef struct Reg_RequestorType {
struct Reg_RequestorType__regExtValue {
Reg_RequestorType__regExtValue_PR present;
union Reg_RequestorType__regExtValue_u {
+ char _placeholder; /* avoid empty union */
} choice;
/* Context for parsing across buffer boundaries */
@@ -454,6 +465,7 @@ typedef struct Reg_RoadSegment {
struct Reg_RoadSegment__regExtValue {
Reg_RoadSegment__regExtValue_PR present;
union Reg_RoadSegment__regExtValue_u {
+ char _placeholder; /* avoid empty union */
} choice;
/* Context for parsing across buffer boundaries */
@@ -468,6 +480,7 @@ typedef struct Reg_SignalControlZone {
struct Reg_SignalControlZone__regExtValue {
Reg_SignalControlZone__regExtValue_PR present;
union Reg_SignalControlZone__regExtValue_u {
+ char _placeholder; /* avoid empty union */
} choice;
/* Context for parsing across buffer boundaries */
@@ -482,6 +495,7 @@ typedef struct Reg_SignalRequest {
struct Reg_SignalRequest__regExtValue {
Reg_SignalRequest__regExtValue_PR present;
union Reg_SignalRequest__regExtValue_u {
+ char _placeholder; /* avoid empty union */
} choice;
/* Context for parsing across buffer boundaries */
@@ -496,6 +510,7 @@ typedef struct Reg_SignalRequestPackage {
struct Reg_SignalRequestPackage__regExtValue {
Reg_SignalRequestPackage__regExtValue_PR present;
union Reg_SignalRequestPackage__regExtValue_u {
+ char _placeholder; /* avoid empty union */
} choice;
/* Context for parsing across buffer boundaries */
@@ -510,6 +525,7 @@ typedef struct Reg_SignalStatus {
struct Reg_SignalStatus__regExtValue {
Reg_SignalStatus__regExtValue_PR present;
union Reg_SignalStatus__regExtValue_u {
+ char _placeholder; /* avoid empty union */
} choice;
/* Context for parsing across buffer boundaries */
@@ -0,0 +1,94 @@
diff --git a/vanetza/asn1/its/TimestampIts.c b/vanetza/asn1/its/TimestampIts.c
index d377fc9db..b03f21b69 100644
--- a/vanetza/asn1/its/TimestampIts.c
+++ b/vanetza/asn1/its/TimestampIts.c
@@ -11,7 +11,7 @@ int
TimestampIts_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
asn_app_constraint_failed_f *ctfailcb, void *app_key) {
const INTEGER_t *st = (const INTEGER_t *)sptr;
- unsigned long value;
+ uintmax_t value;
if(!sptr) {
ASN__CTFAIL(app_key, td, sptr,
@@ -20,7 +20,7 @@ TimestampIts_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
return -1;
}
- if(asn_INTEGER2ulong(st, &value)) {
+ if(asn_INTEGER2umax(st, &value)) {
ASN__CTFAIL(app_key, td, sptr,
"%s: value too large (%s:%d)",
td->name, __FILE__, __LINE__);
@@ -49,10 +49,15 @@ asn_oer_constraints_t asn_OER_type_TimestampIts_constr_1 CC_NOTUSED = {
#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */
#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT)
asn_per_constraints_t asn_PER_type_TimestampIts_constr_1 CC_NOTUSED = {
- { APC_CONSTRAINED, 42, -1, 0, 4398046511103 } /* (0..4398046511103) */,
+ { APC_CONSTRAINED, 42, -1, 0, 4398046511103UL } /* (0..4398046511103) */,
{ APC_UNCONSTRAINED, -1, -1, 0, 0 },
0, 0 /* No PER value map */
};
+const asn_INTEGER_specifics_t asn_SPC_TimestampIts_specs_1 = {
+ 0, 0, 0, 0, 0,
+ 0, /* Native long size */
+ 1 /* Unsigned representation */
+};
#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */
static const ber_tlv_tag_t asn_DEF_TimestampIts_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
@@ -80,6 +85,6 @@ asn_TYPE_descriptor_t asn_DEF_TimestampIts = {
TimestampIts_constraint
},
0, 0, /* Defined elsewhere */
- 0 /* No specifics */
+ &asn_SPC_TimestampIts_specs_1 /* Manually added specifics */
};
diff --git a/vanetza/asn1/its/r2/TimestampIts.c b/vanetza/asn1/its/r2/TimestampIts.c
index 07bb4bf21..8169b5cce 100644
--- a/vanetza/asn1/its/r2/TimestampIts.c
+++ b/vanetza/asn1/its/r2/TimestampIts.c
@@ -11,7 +11,7 @@ int
Vanetza_ITS2_TimestampIts_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
asn_app_constraint_failed_f *ctfailcb, void *app_key) {
const INTEGER_t *st = (const INTEGER_t *)sptr;
- unsigned long value;
+ uintmax_t value;
if(!sptr) {
ASN__CTFAIL(app_key, td, sptr,
@@ -20,7 +20,7 @@ Vanetza_ITS2_TimestampIts_constraint(const asn_TYPE_descriptor_t *td, const void
return -1;
}
- if(asn_INTEGER2ulong(st, &value)) {
+ if(asn_INTEGER2umax(st, &value)) {
ASN__CTFAIL(app_key, td, sptr,
"%s: value too large (%s:%d)",
td->name, __FILE__, __LINE__);
@@ -49,10 +49,15 @@ asn_oer_constraints_t asn_OER_type_Vanetza_ITS2_TimestampIts_constr_1 CC_NOTUSED
#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */
#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT)
asn_per_constraints_t asn_PER_type_Vanetza_ITS2_TimestampIts_constr_1 CC_NOTUSED = {
- { APC_CONSTRAINED, 42, -1, 0, 4398046511103 } /* (0..4398046511103) */,
+ { APC_CONSTRAINED, 42, -1, 0, 4398046511103UL } /* (0..4398046511103) */,
{ APC_UNCONSTRAINED, -1, -1, 0, 0 },
0, 0 /* No PER value map */
};
+const asn_INTEGER_specifics_t asn_SPC_Vanetza_ITS2_TimestampIts_specs_1 = {
+ 0, 0, 0, 0, 0,
+ 0, /* Native long size */
+ 1 /* Unsigned representation */
+};
#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */
static const ber_tlv_tag_t asn_DEF_Vanetza_ITS2_TimestampIts_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
@@ -80,6 +85,6 @@ asn_TYPE_descriptor_t asn_DEF_Vanetza_ITS2_TimestampIts = {
Vanetza_ITS2_TimestampIts_constraint
},
0, 0, /* No members */
- 0 /* No specifics */
+ &asn_SPC_Vanetza_ITS2_TimestampIts_specs_1 /* Manually added specifics */
};
@@ -0,0 +1,34 @@
From 14774309f6b18136037adb5c0d15fa73aac657a7 Mon Sep 17 00:00:00 2001
From: Raphael Riebl <raphael@riebl.net>
Date: Mon, 26 Jan 2026 09:50:36 +0100
Subject: [PATCH] asn1: patch ITS2 SituationContainer #277
---
vanetza/asn1/its/r2/SituationContainer.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/vanetza/asn1/its/r2/SituationContainer.h b/vanetza/asn1/its/r2/SituationContainer.h
index 441b6df81..9a5b0235e 100644
--- a/vanetza/asn1/its/r2/SituationContainer.h
+++ b/vanetza/asn1/its/r2/SituationContainer.h
@@ -25,7 +25,7 @@ extern "C" {
/* Forward declarations */
struct Vanetza_ITS2_CauseCodeV2;
-struct Vanetza_ITS2_EventZone;
+struct Vanetza_ITS2_EventHistory;
struct Vanetza_ITS2_ActionIdList;
/* Vanetza_ITS2_SituationContainer */
@@ -33,7 +33,7 @@ typedef struct Vanetza_ITS2_SituationContainer {
Vanetza_ITS2_InformationQuality_t informationQuality;
Vanetza_ITS2_CauseCodeV2_t eventType;
struct Vanetza_ITS2_CauseCodeV2 *linkedCause; /* OPTIONAL */
- struct Vanetza_ITS2_EventZone *eventZone; /* OPTIONAL */
+ struct Vanetza_ITS2_EventHistory *eventZone; /* OPTIONAL */
/*
* This type is extensible,
* possible extensions are below.
--
2.52.0
@@ -0,0 +1,188 @@
diff --git a/vanetza/asn1/security/Time64.c b/vanetza/asn1/security/Time64.c
index bdbe30d7d..3bd3abb53 100644
--- a/vanetza/asn1/security/Time64.c
+++ b/vanetza/asn1/security/Time64.c
@@ -11,7 +11,7 @@ int
Vanetza_Security_Time64_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
asn_app_constraint_failed_f *ctfailcb, void *app_key) {
const Vanetza_Security_Uint64_t *st = (const Vanetza_Security_Uint64_t *)sptr;
- unsigned long value;
+ uintmax_t value;
if(!sptr) {
ASN__CTFAIL(app_key, td, sptr,
@@ -20,7 +20,7 @@ Vanetza_Security_Time64_constraint(const asn_TYPE_descriptor_t *td, const void *
return -1;
}
- if(asn_INTEGER2ulong(st, &value)) {
+ if(asn_INTEGER2umax(st, &value)) {
ASN__CTFAIL(app_key, td, sptr,
"%s: value too large (%s:%d)",
td->name, __FILE__, __LINE__);
@@ -49,10 +49,15 @@ asn_oer_constraints_t asn_OER_type_Vanetza_Security_Time64_constr_1 CC_NOTUSED =
#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */
#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT)
asn_per_constraints_t asn_PER_type_Vanetza_Security_Time64_constr_1 CC_NOTUSED = {
- { APC_CONSTRAINED, 64, -1, 0, 18446744073709551615 } /* (0..18446744073709551615) */,
+ { APC_CONSTRAINED, 64, -1, 0, 18446744073709551615UL } /* (0..18446744073709551615) */,
{ APC_UNCONSTRAINED, -1, -1, 0, 0 },
0, 0 /* No PER value map */
};
+const asn_INTEGER_specifics_t asn_SPC_Vanetza_Security_Time64_specs_1 = {
+ 0, 0, 0, 0, 0,
+ 0, /* Native long size */
+ 1 /* Unsigned representation */
+};
#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */
static const ber_tlv_tag_t asn_DEF_Vanetza_Security_Time64_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
@@ -80,6 +85,6 @@ asn_TYPE_descriptor_t asn_DEF_Vanetza_Security_Time64 = {
Vanetza_Security_Time64_constraint
},
0, 0, /* No members */
- 0 /* No specifics */
+ &asn_SPC_Vanetza_Security_Time64_specs_1 /* Manually added specifics */
};
diff --git a/vanetza/asn1/security/Uint64.c b/vanetza/asn1/security/Uint64.c
index a54a77f80..8ba62797a 100644
--- a/vanetza/asn1/security/Uint64.c
+++ b/vanetza/asn1/security/Uint64.c
@@ -11,7 +11,7 @@ int
Vanetza_Security_Uint64_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
asn_app_constraint_failed_f *ctfailcb, void *app_key) {
const INTEGER_t *st = (const INTEGER_t *)sptr;
- unsigned long value;
+ uintmax_t value;
if(!sptr) {
ASN__CTFAIL(app_key, td, sptr,
@@ -20,7 +20,7 @@ Vanetza_Security_Uint64_constraint(const asn_TYPE_descriptor_t *td, const void *
return -1;
}
- if(asn_INTEGER2ulong(st, &value)) {
+ if(asn_INTEGER2umax(st, &value)) {
ASN__CTFAIL(app_key, td, sptr,
"%s: value too large (%s:%d)",
td->name, __FILE__, __LINE__);
@@ -49,10 +49,15 @@ asn_oer_constraints_t asn_OER_type_Vanetza_Security_Uint64_constr_1 CC_NOTUSED =
#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */
#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT)
asn_per_constraints_t asn_PER_type_Vanetza_Security_Uint64_constr_1 CC_NOTUSED = {
- { APC_CONSTRAINED, 64, -1, 0, 18446744073709551615 } /* (0..18446744073709551615) */,
+ { APC_CONSTRAINED, 64, -1, 0, 18446744073709551615UL } /* (0..18446744073709551615) */,
{ APC_UNCONSTRAINED, -1, -1, 0, 0 },
0, 0 /* No PER value map */
};
+const asn_INTEGER_specifics_t asn_SPC_Vanetza_Security_Uint64_specs_1 = {
+ 0, 0, 0, 0, 0,
+ 0, /* Native long size */
+ 1 /* Unsigned representation */
+};
#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */
static const ber_tlv_tag_t asn_DEF_Vanetza_Security_Uint64_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
@@ -80,6 +85,6 @@ asn_TYPE_descriptor_t asn_DEF_Vanetza_Security_Uint64 = {
Vanetza_Security_Uint64_constraint
},
0, 0, /* No members */
- 0 /* No specifics */
+ &asn_SPC_Vanetza_Security_Uint64_specs_1 /* Manually added specifics */
};
diff --git a/vanetza/asn1/security/r2/Time64.c b/vanetza/asn1/security/r2/Time64.c
index 231e36513..0e77ec0f6 100644
--- a/vanetza/asn1/security/r2/Time64.c
+++ b/vanetza/asn1/security/r2/Time64.c
@@ -11,7 +11,7 @@ int
Vanetza_Security2_Time64_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
asn_app_constraint_failed_f *ctfailcb, void *app_key) {
const Vanetza_Security2_Uint64_t *st = (const Vanetza_Security2_Uint64_t *)sptr;
- unsigned long value;
+ uintmax_t value;
if(!sptr) {
ASN__CTFAIL(app_key, td, sptr,
@@ -20,7 +20,7 @@ Vanetza_Security2_Time64_constraint(const asn_TYPE_descriptor_t *td, const void
return -1;
}
- if(asn_INTEGER2ulong(st, &value)) {
+ if(asn_INTEGER2umax(st, &value)) {
ASN__CTFAIL(app_key, td, sptr,
"%s: value too large (%s:%d)",
td->name, __FILE__, __LINE__);
@@ -49,10 +49,15 @@ asn_oer_constraints_t asn_OER_type_Vanetza_Security2_Time64_constr_1 CC_NOTUSED
#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */
#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT)
asn_per_constraints_t asn_PER_type_Vanetza_Security2_Time64_constr_1 CC_NOTUSED = {
- { APC_CONSTRAINED, 64, -1, 0, 18446744073709551615 } /* (0..18446744073709551615) */,
+ { APC_CONSTRAINED, 64, -1, 0, 18446744073709551615UL } /* (0..18446744073709551615) */,
{ APC_UNCONSTRAINED, -1, -1, 0, 0 },
0, 0 /* No PER value map */
};
+const asn_INTEGER_specifics_t asn_SPC_Vanetza_Security2_Time64_specs_1 = {
+ 0, 0, 0, 0, 0,
+ 0, /* Native long size */
+ 1 /* Unsigned representation */
+};
#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */
static const ber_tlv_tag_t asn_DEF_Vanetza_Security2_Time64_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
@@ -80,6 +85,6 @@ asn_TYPE_descriptor_t asn_DEF_Vanetza_Security2_Time64 = {
Vanetza_Security2_Time64_constraint
},
0, 0, /* No members */
- 0 /* No specifics */
+ &asn_SPC_Vanetza_Security2_Time64_specs_1 /* Manually added specifics */
};
diff --git a/vanetza/asn1/security/r2/Uint64.c b/vanetza/asn1/security/r2/Uint64.c
index 812c6c56b..09139ab77 100644
--- a/vanetza/asn1/security/r2/Uint64.c
+++ b/vanetza/asn1/security/r2/Uint64.c
@@ -11,7 +11,7 @@ int
Vanetza_Security2_Uint64_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
asn_app_constraint_failed_f *ctfailcb, void *app_key) {
const INTEGER_t *st = (const INTEGER_t *)sptr;
- unsigned long value;
+ uintmax_t value;
if(!sptr) {
ASN__CTFAIL(app_key, td, sptr,
@@ -20,7 +20,7 @@ Vanetza_Security2_Uint64_constraint(const asn_TYPE_descriptor_t *td, const void
return -1;
}
- if(asn_INTEGER2ulong(st, &value)) {
+ if(asn_INTEGER2umax(st, &value)) {
ASN__CTFAIL(app_key, td, sptr,
"%s: value too large (%s:%d)",
td->name, __FILE__, __LINE__);
@@ -49,10 +49,15 @@ asn_oer_constraints_t asn_OER_type_Vanetza_Security2_Uint64_constr_1 CC_NOTUSED
#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */
#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT)
asn_per_constraints_t asn_PER_type_Vanetza_Security2_Uint64_constr_1 CC_NOTUSED = {
- { APC_CONSTRAINED, 64, -1, 0, 18446744073709551615 } /* (0..18446744073709551615) */,
+ { APC_CONSTRAINED, 64, -1, 0, 18446744073709551615UL } /* (0..18446744073709551615) */,
{ APC_UNCONSTRAINED, -1, -1, 0, 0 },
0, 0 /* No PER value map */
};
+const asn_INTEGER_specifics_t asn_SPC_Vanetza_Security2_Uint64_specs_1 = {
+ 0, 0, 0, 0, 0,
+ 0, /* Native long size */
+ 1 /* Unsigned representation */
+};
#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */
static const ber_tlv_tag_t asn_DEF_Vanetza_Security2_Uint64_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
@@ -80,6 +85,6 @@ asn_TYPE_descriptor_t asn_DEF_Vanetza_Security2_Uint64 = {
Vanetza_Security2_Uint64_constraint
},
0, 0, /* No members */
- 0 /* No specifics */
+ &asn_SPC_Vanetza_Security2_Uint64_specs_1 /* Manually added specifics */
};
@@ -0,0 +1,22 @@
diff --git a/vanetza/asn1/support/asn_system.h b/vanetza/asn1/support/asn_system.h
index 51859cdd..c97a9ad5 100644
--- a/vanetza/asn1/support/asn_system.h
+++ b/vanetza/asn1/support/asn_system.h
@@ -125,7 +125,7 @@ typedef unsigned int uint32_t;
#endif /* __GNUC__ */
#endif /* MIN */
-#if __STDC_VERSION__ >= 199901L
+#if __STDC_VERSION__ >= 199901L || __cplusplus >= 201103L
#ifndef SIZE_MAX
#define SIZE_MAX ((~((size_t)0)) >> 1)
#endif
@@ -145,7 +145,7 @@ typedef unsigned int uint32_t;
#define RSSIZE_MAX ((ssize_t)(RSIZE_MAX >> 1))
#endif
-#if __STDC_VERSION__ >= 199901L
+#if __STDC_VERSION__ >= 199901L || __cplusplus >= 201103L
#define ASN_PRI_SIZE "zu"
#define ASN_PRI_SSIZE "zd"
#define ASN_PRIuMAX PRIuMAX