Skip to content

Commit e8ee785

Browse files
committed
feat: update to RELAY spec v1.11 — remove CLI waiver, add RELAY_BUILD_CLI alias
RELAY v1.11 §17.7 removes the waiver that allowed CLI-less C++ libraries to mark CLI requirements as not applicable. Every conformant implementation must now ship the version/capabilities/status CLI, buildable via -DRELAY_BUILD_CLI=ON. cpp-LIN already shipped the CLI in v0.1.0; this update: - Bumps kSpecVersion "1.10" -> "1.11" in relay.hpp and lin.hpp - Updates CLI JSON responses (version, capabilities) to report spec_version 1.11 - Adds RELAY_BUILD_CLI=OFF alias option to CMakeLists.txt (§17.7 compliance) - Updates all test vectors (spec_version field in relay-vectors/) - Updates REQ-RELAY-020 in .fusa-reqs.json to expect "1.11" - Sweeps v1.10 -> v1.11 across all docs: README, ROADMAP, SAFETY_PLAN, SAFETY_MANUAL, INCIDENT-RESPONSE, SECURITY, HARA, sas.md Signed-off-by: Matt Jones <matt@jellybaby.com> Signed-off-by: Matt Jones <47545907+SoundMatt@users.noreply.github.com>
1 parent fc7d369 commit e8ee785

17 files changed

Lines changed: 28 additions & 26 deletions

.fusa-reqs.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -852,7 +852,7 @@
852852
{
853853
"id": "REQ-RELAY-001",
854854
"title": "Protocol enum values are defined and stable",
855-
"description": "relay::Protocol shall define CAN=1, DDS=2, LIN=3, MQTT=4, RCP=5, SOMEIP=6 as stable integer values matching RELAY spec v1.10 §3.",
855+
"description": "relay::Protocol shall define CAN=1, DDS=2, LIN=3, MQTT=4, RCP=5, SOMEIP=6 as stable integer values matching RELAY spec v1.11 §3.",
856856
"asil": "ASIL-B",
857857
"rationale": "Protocol values are wire-format identifiers; changing them breaks cross-language interop.",
858858
"tags": ["relay", "protocol"]
@@ -1003,8 +1003,8 @@
10031003
},
10041004
{
10051005
"id": "REQ-RELAY-020",
1006-
"title": "kSpecVersion constant equals '1.10'",
1007-
"description": "relay::kSpecVersion shall be a constexpr const char* equal to '1.10'.",
1006+
"title": "kSpecVersion constant equals '1.11'",
1007+
"description": "relay::kSpecVersion shall be a constexpr const char* equal to '1.11'.",
10081008
"asil": "ASIL-B",
10091009
"rationale": "RELAY §2: spec version constant enables runtime conformance checking.",
10101010
"tags": ["relay", "version"]

CMakeLists.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,9 @@ endif()
6565
# ── CLI binary ────────────────────────────────────────────────────────────────
6666

6767
option(CPPLIN_BUILD_CLI "Build RELAY convert CLI" ON)
68-
if(CPPLIN_BUILD_CLI)
68+
# RELAY spec v1.11 §17.7: C++ implementations must be buildable via -DRELAY_BUILD_CLI=ON
69+
option(RELAY_BUILD_CLI "Alias for CPPLIN_BUILD_CLI (RELAY spec §17.7)" OFF)
70+
if(CPPLIN_BUILD_CLI OR RELAY_BUILD_CLI)
6971
add_subdirectory(cli)
7072
endif()
7173

HARA.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,6 @@ ASIL-D at system level if required.
131131

132132
- ISO 26262:2018 Part 3 — Concept phase
133133
- LIN Specification Package Rev 2.2A — Section 2 (Frame structure)
134-
- RELAY Specification v1.10 — §15 (Error handling)
134+
- RELAY Specification v1.11 — §15 (Error handling)
135135
- `SEOOC.md` — Assumptions on use
136136
- `SAFETY_PLAN.md` — Development process

INCIDENT-RESPONSE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,6 @@ For safety-critical (ASIL-B) vulnerabilities, the following additional steps app
125125
- **ISO/SAE 21434:2021** §7.4 — Vulnerability management and disclosure
126126
- **IEC 62443-4-1:2018** SM-2 — Security management (vulnerability response)
127127
- **IEC/TR 62443-2-3:2015** — Patch management for IACS
128-
- **RELAY Spec v1.10** §22 — Security considerations
128+
- **RELAY Spec v1.11** §22 — Security considerations
129129
- `SECURITY.md` — Public-facing vulnerability disclosure policy
130130
- `SEOOC.md` — Safety Element out of Context assumptions (integrator scope)

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@
33
C++ LIN bus library — RELAY-conformant, ISO 26262 ASIL-B.
44

55
[![CI](https://github.com/SoundMatt/cpp-LIN/actions/workflows/ci.yml/badge.svg)](https://github.com/SoundMatt/cpp-LIN/actions/workflows/ci.yml)
6-
[![RELAY Conformant](https://img.shields.io/badge/RELAY-v1.10%20conformant-blue)](https://github.com/SoundMatt/RELAY)
6+
[![RELAY Conformant](https://img.shields.io/badge/RELAY-v1.11%20conformant-blue)](https://github.com/SoundMatt/RELAY)
77
[![ASIL-B](https://img.shields.io/badge/ISO%2026262-ASIL--B-orange)](SAFETY_PLAN.md)
88
[![License: MPL 2.0](https://img.shields.io/badge/License-MPL%202.0-brightgreen.svg)](LICENSE)
99

1010
## Overview
1111

1212
cpp-LIN is a production-quality C++ implementation of the LIN (Local Interconnect
13-
Network) protocol, following the RELAY specification v1.10. It is the C++ sibling
13+
Network) protocol, following the RELAY specification v1.11. It is the C++ sibling
1414
of [go-LIN](https://github.com/SoundMatt/go-LIN) and is patterned after
1515
[cpp-CAN](https://github.com/SoundMatt/cpp-CAN).
1616

@@ -49,7 +49,7 @@ ctest --test-dir build --output-on-failure
4949
```
5050
include/lin/
5151
channel.hpp — Chan<T>: bounded, thread-safe FIFO
52-
relay.hpp — RELAY v1.10 types (Protocol, Message, INode, …)
52+
relay.hpp — RELAY v1.11 types (Protocol, Message, INode, …)
5353
lin.hpp — IBus, IMasterBus, Frame, Filter, free functions
5454
virtual/bus.hpp — In-process virtual LIN bus
5555
safety/e2e.hpp — E2E Protector / Receiver
@@ -95,7 +95,7 @@ P1 = NOT(ID1 ^ ID3 ^ ID4 ^ ID5) (bit 7)
9595

9696
## RELAY Integration
9797

98-
cpp-LIN exposes a RELAY v1.10 `INode` adapter:
98+
cpp-LIN exposes a RELAY v1.11 `INode` adapter:
9999

100100
```cpp
101101
#include <lin/lin.hpp>

ROADMAP.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
- [x] Master node with schedule table runner (`std::stop_token`)
99
- [x] Slave node with per-ID response registration
1010
- [x] E2E safety: Protector and Receiver (CRC-16/CCITT-FALSE, 10-byte header)
11-
- [x] RELAY v1.10 adapter (`relay::INode`)
11+
- [x] RELAY v1.11 adapter (`relay::INode`)
1212
- [x] CLI binary (`cpp-lin-cli`) for relay conform/interop
1313
- [x] ISO 26262 ASIL-B requirements traceability
1414
- [x] CI pipeline: build, test, coverage, sanitizers, RELAY conform, cpfusa

SAFETY_MANUAL.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@ must ensure:
245245
4. The `id` field in `relay::Message` carries the decimal string representation
246246
of the LIN frame ID (e.g., `"16"` for frame 0x10).
247247

248-
See `RELAY Spec v1.10 §8.3` for the complete LIN-over-RELAY envelope specification.
248+
See `RELAY Spec v1.11 §8.3` for the complete LIN-over-RELAY envelope specification.
249249

250250
---
251251

@@ -290,4 +290,4 @@ Reproducing from `SEOOC.md` for convenience:
290290
- `sas.md` — Software Architecture Specification
291291
- ISO 26262:2018 Part 6 §7 — Software integration and verification
292292
- ISO 26262:2018 Part 10 §9 — Safety element out of context
293-
- RELAY Specification v1.10 §8.3 — LIN bus binding
293+
- RELAY Specification v1.11 §8.3 — LIN bus binding

SAFETY_PLAN.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
This Safety Plan governs the development of **cpp-LIN**, a C++ software
1515
component implementing the LIN (Local Interconnect Network) bus protocol,
16-
conformant to the RELAY specification v1.10.
16+
conformant to the RELAY specification v1.11.
1717

1818
cpp-LIN is classified as a **Safety Element out of Context (SEooC)** per
1919
ISO 26262-10 §9. It is intended for integration into automotive ECUs and
@@ -131,7 +131,7 @@ See [HARA.md](HARA.md).
131131
- IEC 61508:2010 — Functional safety of E/E/PE safety-related systems
132132
- ISO/SAE 21434:2021 — Road vehicles — Cybersecurity engineering
133133
- LIN Specification Package, Revision 2.2A (LIN Consortium)
134-
- RELAY Specification v1.10 (SoundMatt)
134+
- RELAY Specification v1.11 (SoundMatt)
135135
- `.fusa-reqs.json` — Machine-readable requirements
136136
- `HARA.md` — Hazard Analysis and Risk Assessment
137137
- `SEOOC.md` — Safety Element out of Context document

SECURITY.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,4 +67,4 @@ escalation contacts.
6767

6868
- ISO/SAE 21434:2021 §7.4 — Vulnerability management
6969
- IEC 62443-4-1:2018 SM-2 — Security management
70-
- RELAY Spec v1.10 §22 — Security considerations
70+
- RELAY Spec v1.11 §22 — Security considerations

cli/json.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ inline std::string version_json() {
177177
"\"protocol\":\"LIN\","
178178
"\"protocol_int\":3,"
179179
"\"version\":\"0.1.0\","
180-
"\"spec_version\":\"1.10\","
180+
"\"spec_version\":\"1.11\","
181181
"\"language\":\"cpp\","
182182
"\"runtime\":\"c++17\""
183183
"}";
@@ -191,7 +191,7 @@ inline std::string capabilities_json() {
191191
"\"protocol\":\"LIN\","
192192
"\"protocol_int\":3,"
193193
"\"version\":\"0.1.0\","
194-
"\"spec_version\":\"1.10\","
194+
"\"spec_version\":\"1.11\","
195195
"\"commands\":[\"version\",\"capabilities\",\"status\",\"convert\"],"
196196
"\"transports\":[\"LIN\"],"
197197
"\"features\":[\"ldf\",\"e2e\",\"master\",\"slave\",\"virtual\"],"

0 commit comments

Comments
 (0)