Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
112 changes: 56 additions & 56 deletions .fusa-reqs.json
Original file line number Diff line number Diff line change
Expand Up @@ -2394,96 +2394,96 @@
},
{
"id": "REQ-GRPC-001",
"title": "GrpcController::send returns function_not_supported when stub",
"text": "GrpcController::send() shall return std::errc::function_not_supported until a concrete gRPC adapter is linked.",
"title": "GrpcBridge::request returns function_not_supported when stub",
"text": "GrpcBridge::request() shall return std::errc::function_not_supported until a concrete gRPC adapter is linked.",
"standard": "iso26262",
"level": "ASIL-A",
"asil": "ASIL-A"
},
{
"id": "REQ-GRPC-002",
"title": "GrpcController::zone returns configured zone",
"text": "GrpcController::zone() shall return the zone supplied at construction.",
"title": "GrpcBridge::stream_key returns configured value",
"text": "GrpcBridge::stream_key() shall return the stream_key supplied at construction.",
"standard": "iso26262",
"level": "ASIL-A",
"asil": "ASIL-A"
},
{
"id": "REQ-GRPC-003",
"title": "GrpcController::subscribe returns function_not_supported when stub",
"text": "GrpcController::subscribe() shall return std::errc::function_not_supported until a concrete gRPC adapter is linked.",
"title": "GrpcBridge::endpoint returns configured value",
"text": "GrpcBridge::endpoint() shall return the avtp::ByteBusId endpoint supplied at construction.",
"standard": "iso26262",
"level": "ASIL-A",
"asil": "ASIL-A"
},
{
"id": "REQ-GRPC-004",
"title": "GrpcController::close returns no error",
"text": "GrpcController::close() shall return a zero error_code (stub has no resources to release).",
"title": "GrpcBridge::close returns no error",
"text": "GrpcBridge::close() shall return a zero error_code (stub has no resources to release).",
"standard": "iso26262",
"level": "ASIL-A",
"asil": "ASIL-A"
},
{
"id": "REQ-REST-001",
"title": "RestController::send returns function_not_supported when stub",
"text": "RestController::send() shall return std::errc::function_not_supported until an HTTP client adapter is linked.",
"title": "RestBridge::request returns function_not_supported when stub",
"text": "RestBridge::request() shall return std::errc::function_not_supported until an HTTP client adapter is linked.",
"standard": "iso26262",
"level": "ASIL-A",
"asil": "ASIL-A"
},
{
"id": "REQ-REST-002",
"title": "RestController::zone returns configured zone",
"text": "RestController::zone() shall return the zone supplied at construction.",
"title": "RestBridge::stream_key returns configured value",
"text": "RestBridge::stream_key() shall return the stream_key supplied at construction.",
"standard": "iso26262",
"level": "ASIL-A",
"asil": "ASIL-A"
},
{
"id": "REQ-REST-003",
"title": "RestController::subscribe returns function_not_supported when stub",
"text": "RestController::subscribe() shall return std::errc::function_not_supported until an HTTP adapter is linked.",
"title": "RestBridge::endpoint returns configured value",
"text": "RestBridge::endpoint() shall return the avtp::ByteBusId endpoint supplied at construction.",
"standard": "iso26262",
"level": "ASIL-A",
"asil": "ASIL-A"
},
{
"id": "REQ-REST-004",
"title": "RestController::close returns no error",
"text": "RestController::close() shall return a zero error_code.",
"title": "RestBridge::close returns no error",
"text": "RestBridge::close() shall return a zero error_code (stub has no resources to release).",
"standard": "iso26262",
"level": "ASIL-A",
"asil": "ASIL-A"
},
{
"id": "REQ-SOMEIP-001",
"title": "SomeIpController::send returns function_not_supported when stub",
"text": "SomeIpController::send() shall return std::errc::function_not_supported until a vsomeip adapter is linked.",
"title": "SomeIpBridge::request returns function_not_supported when stub",
"text": "SomeIpBridge::request() shall return std::errc::function_not_supported until the vsomeip adapter is linked.",
"standard": "iso26262",
"level": "ASIL-A",
"asil": "ASIL-A"
},
{
"id": "REQ-SOMEIP-002",
"title": "SomeIpController::zone returns configured zone",
"text": "SomeIpController::zone() shall return the zone supplied at construction.",
"title": "SomeIpBridge::stream_key returns configured value",
"text": "SomeIpBridge::stream_key() shall return the stream_key supplied at construction.",
"standard": "iso26262",
"level": "ASIL-A",
"asil": "ASIL-A"
},
{
"id": "REQ-SOMEIP-003",
"title": "SomeIpController::subscribe returns function_not_supported when stub",
"text": "SomeIpController::subscribe() shall return std::errc::function_not_supported until a vsomeip adapter is linked.",
"title": "SomeIpBridge::endpoint returns configured value",
"text": "SomeIpBridge::endpoint() shall return the avtp::ByteBusId endpoint supplied at construction.",
"standard": "iso26262",
"level": "ASIL-A",
"asil": "ASIL-A"
},
{
"id": "REQ-SOMEIP-004",
"title": "SomeIpController::close returns no error",
"text": "SomeIpController::close() shall return a zero error_code.",
"title": "SomeIpBridge::close returns no error",
"text": "SomeIpBridge::close() shall return a zero error_code (stub has no resources to release).",
"standard": "iso26262",
"level": "ASIL-A",
"asil": "ASIL-A"
Expand Down Expand Up @@ -2522,64 +2522,64 @@
},
{
"id": "REQ-DDS-001",
"title": "DdsController::send returns function_not_supported when stub",
"text": "DdsController::send() shall return std::errc::function_not_supported until a DDS adapter is linked.",
"title": "DdsBridge::request returns function_not_supported when stub",
"text": "DdsBridge::request() shall return std::errc::function_not_supported until a concrete DDS backend is linked.",
"standard": "iso26262",
"level": "ASIL-A",
"asil": "ASIL-A"
},
{
"id": "REQ-DDS-002",
"title": "DdsController::zone returns configured zone",
"text": "DdsController::zone() shall return the zone supplied at construction.",
"title": "DdsBridge::stream_key returns configured value",
"text": "DdsBridge::stream_key() shall return the stream_key supplied at construction.",
"standard": "iso26262",
"level": "ASIL-A",
"asil": "ASIL-A"
},
{
"id": "REQ-DDS-003",
"title": "DdsController::subscribe returns function_not_supported when stub",
"text": "DdsController::subscribe() shall return std::errc::function_not_supported until a DDS adapter is linked.",
"title": "DdsBridge::endpoint returns configured value",
"text": "DdsBridge::endpoint() shall return the avtp::ByteBusId endpoint supplied at construction.",
"standard": "iso26262",
"level": "ASIL-A",
"asil": "ASIL-A"
},
{
"id": "REQ-DDS-004",
"title": "DdsController::close returns no error",
"text": "DdsController::close() shall return a zero error_code.",
"title": "DdsBridge::close returns no error",
"text": "DdsBridge::close() shall return a zero error_code (stub has no resources to release).",
"standard": "iso26262",
"level": "ASIL-A",
"asil": "ASIL-A"
},
{
"id": "REQ-MQTT-001",
"title": "MqttController::send returns function_not_supported when stub",
"text": "MqttController::send() shall return std::errc::function_not_supported until a Paho adapter is linked.",
"title": "MqttBridge::request returns function_not_supported when stub",
"text": "MqttBridge::request() shall return std::errc::function_not_supported until a concrete MQTT backend is linked.",
"standard": "iso26262",
"level": "ASIL-A",
"asil": "ASIL-A"
},
{
"id": "REQ-MQTT-002",
"title": "MqttController::zone returns configured zone",
"text": "MqttController::zone() shall return the zone supplied at construction.",
"title": "MqttBridge::stream_key returns configured value",
"text": "MqttBridge::stream_key() shall return the stream_key supplied at construction.",
"standard": "iso26262",
"level": "ASIL-A",
"asil": "ASIL-A"
},
{
"id": "REQ-MQTT-003",
"title": "MqttController::subscribe returns function_not_supported when stub",
"text": "MqttController::subscribe() shall return std::errc::function_not_supported until a Paho adapter is linked.",
"title": "MqttBridge::endpoint returns configured value",
"text": "MqttBridge::endpoint() shall return the avtp::ByteBusId endpoint supplied at construction.",
"standard": "iso26262",
"level": "ASIL-A",
"asil": "ASIL-A"
},
{
"id": "REQ-MQTT-004",
"title": "MqttController::close returns no error",
"text": "MqttController::close() shall return a zero error_code.",
"title": "MqttBridge::close returns no error",
"text": "MqttBridge::close() shall return a zero error_code (stub has no resources to release).",
"standard": "iso26262",
"level": "ASIL-A",
"asil": "ASIL-A"
Expand Down Expand Up @@ -2618,64 +2618,64 @@
},
{
"id": "REQ-UDS-001",
"title": "UdsController::send returns function_not_supported when stub",
"text": "UdsController::send() shall return std::errc::function_not_supported until a UDS stack adapter is linked.",
"title": "UdsBridge::request returns function_not_supported when stub",
"text": "UdsBridge::request() shall return std::errc::function_not_supported until a concrete UDS stack is linked.",
"standard": "iso26262",
"level": "ASIL-A",
"asil": "ASIL-A"
},
{
"id": "REQ-UDS-002",
"title": "UdsController::zone returns configured zone",
"text": "UdsController::zone() shall return the zone supplied at construction.",
"title": "UdsBridge::stream_key returns configured value",
"text": "UdsBridge::stream_key() shall return the stream_key supplied at construction.",
"standard": "iso26262",
"level": "ASIL-A",
"asil": "ASIL-A"
},
{
"id": "REQ-UDS-003",
"title": "UdsController::subscribe returns function_not_supported when stub",
"text": "UdsController::subscribe() shall return std::errc::function_not_supported until a UDS adapter is linked.",
"title": "UdsBridge::endpoint returns configured value",
"text": "UdsBridge::endpoint() shall return the avtp::ByteBusId endpoint supplied at construction.",
"standard": "iso26262",
"level": "ASIL-A",
"asil": "ASIL-A"
},
{
"id": "REQ-UDS-004",
"title": "UdsController::close returns no error",
"text": "UdsController::close() shall return a zero error_code.",
"title": "UdsBridge::close returns no error",
"text": "UdsBridge::close() shall return a zero error_code (stub has no resources to release).",
"standard": "iso26262",
"level": "ASIL-A",
"asil": "ASIL-A"
},
{
"id": "REQ-DOIP-001",
"title": "DoIpController::send returns function_not_supported when stub",
"text": "DoIpController::send() shall return std::errc::function_not_supported until a DoIP stack adapter is linked.",
"title": "DoIpBridge::request returns function_not_supported when stub",
"text": "DoIpBridge::request() shall return std::errc::function_not_supported until a concrete DoIP stack is linked.",
"standard": "iso26262",
"level": "ASIL-A",
"asil": "ASIL-A"
},
{
"id": "REQ-DOIP-002",
"title": "DoIpController::zone returns configured zone",
"text": "DoIpController::zone() shall return the zone supplied at construction.",
"title": "DoIpBridge::stream_key returns configured value",
"text": "DoIpBridge::stream_key() shall return the stream_key supplied at construction.",
"standard": "iso26262",
"level": "ASIL-A",
"asil": "ASIL-A"
},
{
"id": "REQ-DOIP-003",
"title": "DoIpController::subscribe returns function_not_supported when stub",
"text": "DoIpController::subscribe() shall return std::errc::function_not_supported until a DoIP adapter is linked.",
"title": "DoIpBridge::endpoint returns configured value",
"text": "DoIpBridge::endpoint() shall return the avtp::ByteBusId endpoint supplied at construction.",
"standard": "iso26262",
"level": "ASIL-A",
"asil": "ASIL-A"
},
{
"id": "REQ-DOIP-004",
"title": "DoIpController::close returns no error",
"text": "DoIpController::close() shall return a zero error_code.",
"title": "DoIpBridge::close returns no error",
"text": "DoIpBridge::close() shall return a zero error_code (stub has no resources to release).",
"standard": "iso26262",
"level": "ASIL-A",
"asil": "ASIL-A"
Expand Down
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
cmake_minimum_required(VERSION 3.21)

project(cpp-rcp
VERSION 2.14.0
VERSION 2.15.0
DESCRIPTION "Remote Control Protocol for automotive zonal architecture (C++)"
HOMEPAGE_URL "https://github.com/SoundMatt/cpp-RCP"
LANGUAGES CXX
Expand Down
35 changes: 35 additions & 0 deletions ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -1187,6 +1187,41 @@ same as the equivalent disclaimers in `rcp/avtp.hpp`, `rcp/acf.hpp`,
external dependency (an MQTT/DDS/SOME-IP/UDS library) is unchanged by
this rework

**Done (v2.15.0):** All seven files are ADAPTed in place per the Satellite
Package Disposition table's entries — each pre-replacement
`<Name>Controller : public rcp::Controller` wrapper (keyed by the removed
`Zone` type) becomes a standalone `<Name>Bridge` class, the same
"primitives, not a wrapped chokepoint" choice `rcp/authz.hpp` (v2.11.0) and
`rcp/tsn.hpp`/`rcp/record.hpp`/`rcp/observe.hpp` (v2.14.0) already made —
there is no unified client-side `send()` chokepoint left to wrap. Addressing
moves from `Zone` to the opaque per-connection `stream_key` (typically
`avtp::StreamId::to_u64()`) plus `avtp::ByteBusId` endpoint pair every other
Phase 14/15 header keys on since v2.10.0. Each bridge's pre-replacement
`send()` becomes `request()`, shaped to match `rcp/record.hpp`'s/
`rcp/observe.hpp`'s `RequestFn` — the same "new client-side send-equivalent
call" shape as `rcp/udp.hpp`'s `Client::request` core signature — so a
caller can address a bridge exactly where it would otherwise address a
transport `Client`; the pre-replacement `subscribe()`/`StatusChannel`
method is dropped with no replacement, since it belonged to
`rcp::Controller`'s status-telemetry push model, which has no analog in the
target specification's request/response shape. Every method still returns
`errc::function_not_supported` (`close()` still succeeds) — no real
MQTT/DDS/SOME-IP/REST/gRPC/UDS/DoIP behavior is implemented here, exactly as
this milestone's own scope states; each protocol's `Config` struct is
unchanged. `canbr.hpp`/`linbr.hpp` are untouched, per this milestone's own
scope note — they remain a separate DEPRECATE item at milestone 61
(v2.17.0). Grepping the tree for consumers of each file's pre-v2.15.0 API
beyond its own (now-rewritten) test found none, so no legacy-shim split
file was needed for any of the seven, same as `rcp/udp.hpp`'s v2.13.0
rebuild and the seven files ADAPTed at v2.14.0. New coverage lives in
`tests/test_mqttbr.cpp`, `tests/test_ddsbr.cpp`, `tests/test_someipbr.cpp`,
`tests/test_restbridge.cpp`, `tests/test_grpcbridge.cpp`,
`tests/test_udsbr.cpp`, and `tests/test_doipbr.cpp` (`REQ-MQTT-001..004`,
`REQ-DDS-001..004`, `REQ-SOMEIP-001..004`, `REQ-REST-001..004`,
`REQ-GRPC-001..004`, `REQ-UDS-001..004`, `REQ-DOIP-001..004`), entirely
rewritten under the same file/prefix identity as the discarded
pre-replacement coverage, traced in `.fusa-reqs.json`.

### 60. C ABI & CLI Rebuild (v2.16.0)

- Rebuild `capi.h`/`capi_impl.hpp`: the current C structs
Expand Down
Loading
Loading