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
352 changes: 0 additions & 352 deletions .fusa-reqs.json
Original file line number Diff line number Diff line change
Expand Up @@ -1200,70 +1200,6 @@
"level": "ASIL-B",
"asil": "ASIL-B"
},
{
"id": "REQ-PQ-001",
"title": "Higher priority dispatched first",
"text": "prioqueue::Controller shall dispatch Priority::Critical before Priority::High before Priority::Normal when multiple commands are queued.",
"standard": "iso26262",
"level": "ASIL-B",
"asil": "ASIL-B"
},
{
"id": "REQ-PQ-002",
"title": "FIFO within same priority",
"text": "Commands with equal priority shall be dispatched in the order they were submitted (first-in, first-out).",
"standard": "iso26262",
"level": "ASIL-B",
"asil": "ASIL-B"
},
{
"id": "REQ-PQ-003",
"title": "Deadline respected per entry",
"text": "If a queued command's context deadline expires before dispatch, send() shall return ErrTimeout.",
"standard": "iso26262",
"level": "ASIL-B",
"asil": "ASIL-B"
},
{
"id": "REQ-PQ-004",
"title": "done() context rejected",
"text": "send() shall return ErrTimeout immediately if the provided context is already done.",
"standard": "iso26262",
"level": "ASIL-B",
"asil": "ASIL-B"
},
{
"id": "REQ-PQ-005",
"title": "Zone mismatch rejected",
"text": "send() shall return ErrZoneMismatch if cmd.zone differs from the inner controller's zone.",
"standard": "iso26262",
"level": "ASIL-B",
"asil": "ASIL-B"
},
{
"id": "REQ-PQ-006",
"title": "Subscribe delegates to inner",
"text": "subscribe() shall delegate directly to the inner controller.",
"standard": "iso26262",
"level": "ASIL-B",
"asil": "ASIL-B"
},
{
"id": "REQ-PQ-007",
"title": "Close stops dispatch thread",
"text": "close() shall stop the dispatch thread and cause subsequent send() calls to return ErrClosed.",
"standard": "iso26262",
"level": "ASIL-B",
"asil": "ASIL-B"
},
{
"id": "REQ-PQ-008",
"title": "send() after close returns ErrClosed",
"text": "Any send() call after close() shall return ErrClosed.",
"standard": "iso26262",
"level": "ASIL-B",
"asil": "ASIL-B"
},
{
"id": "REQ-RL-001",
"title": "Manager::admit admits while the domain's bucket has tokens",
Expand Down Expand Up @@ -1816,166 +1752,6 @@
"level": "SL-2",
"asil": "ASIL-B"
},
{
"id": "REQ-FW-001",
"title": "FirmwareSession begins in Idle state",
"text": "A freshly constructed FirmwareSession shall report SessionState::Idle.",
"standard": "iso26262",
"level": "ASIL-B",
"asil": "ASIL-B"
},
{
"id": "REQ-FW-002",
"title": "initiate transitions to Initiated",
"text": "FirmwareSession::initiate() shall transition the session to SessionState::Initiated on success.",
"standard": "iso26262",
"level": "ASIL-B",
"asil": "ASIL-B"
},
{
"id": "REQ-FW-003",
"title": "transfer requires Initiated state",
"text": "FirmwareSession::transfer() shall return FirmwareErrc::bad_state if the session is not in Initiated state.",
"standard": "iso26262",
"level": "ASIL-B",
"asil": "ASIL-B"
},
{
"id": "REQ-FW-004",
"title": "verify requires Transferring state",
"text": "FirmwareSession::verify() shall return FirmwareErrc::bad_state if the session is not in Transferring state.",
"standard": "iso26262",
"level": "ASIL-B",
"asil": "ASIL-B"
},
{
"id": "REQ-FW-005",
"title": "activate requires Verifying state",
"text": "FirmwareSession::activate() shall return FirmwareErrc::bad_state if the session is not in Verifying state.",
"standard": "iso26262",
"level": "ASIL-B",
"asil": "ASIL-B"
},
{
"id": "REQ-FW-006",
"title": "transfer chunks firmware in Config::chunk_size segments",
"text": "FirmwareSession::transfer() shall send the image in segments not exceeding Config::chunk_size bytes.",
"standard": "iso26262",
"level": "ASIL-B",
"asil": "ASIL-B"
},
{
"id": "REQ-FW-007",
"title": "rollback resets session to Idle",
"text": "FirmwareSession::rollback() shall reset the session state to Idle on success.",
"standard": "iso26262",
"level": "ASIL-B",
"asil": "ASIL-B"
},
{
"id": "REQ-FW-008",
"title": "transfer progress callback is called per chunk",
"text": "If a ProgressCallback is supplied, FirmwareSession::transfer() shall invoke it once for each chunk successfully delivered.",
"standard": "iso26262",
"level": "ASIL-A",
"asil": "ASIL-A"
},
{
"id": "REQ-ZG-001",
"title": "ZoneGroup::all() contains all five zones",
"text": "ZoneGroup::all() shall return a group containing Zone::FrontLeft, FrontRight, RearLeft, RearRight, and Central.",
"standard": "iso26262",
"level": "ASIL-A",
"asil": "ASIL-A"
},
{
"id": "REQ-ZG-002",
"title": "send_group dispatches to every zone concurrently",
"text": "GroupRegistry::send_group() shall dispatch the command to all zones in the group using independent asynchronous tasks.",
"standard": "iso26262",
"level": "ASIL-B",
"asil": "ASIL-B"
},
{
"id": "REQ-ZG-003",
"title": "GroupResponse::ok() is false if any zone fails",
"text": "GroupResponse::ok() shall return false if any per-zone result has a non-zero error_code.",
"standard": "iso26262",
"level": "ASIL-B",
"asil": "ASIL-B"
},
{
"id": "REQ-ZG-004",
"title": "GroupResponse::errors() lists failing zones",
"text": "GroupResponse::errors() shall return the set of zones for which the error_code is non-zero.",
"standard": "iso26262",
"level": "ASIL-A",
"asil": "ASIL-A"
},
{
"id": "REQ-ZG-005",
"title": "ZoneGroup is a value type",
"text": "ZoneGroup shall be copyable and default-constructible.",
"standard": "iso26262",
"level": "ASIL-A",
"asil": "ASIL-A"
},
{
"id": "REQ-ZG-006",
"title": "send_group uses caller context deadline",
"text": "GroupRegistry::send_group() shall forward the caller's Context (including deadline) to each zone controller.",
"standard": "iso26262",
"level": "ASIL-B",
"asil": "ASIL-B"
},
{
"id": "REQ-PROXY-001",
"title": "ProxyController enforces latency budget",
"text": "ProxyController::send() shall derive a tighter deadline equal to min(caller deadline, now + latency_budget) and forward that to the upstream controller.",
"standard": "iso26262",
"level": "ASIL-B",
"asil": "ASIL-B"
},
{
"id": "REQ-PROXY-002",
"title": "ProxyRegistry::lookup returns proxy-wrapped controller",
"text": "Controllers added via ProxyRegistry::add_route() shall be wrapped in a ProxyController before being returned by lookup().",
"standard": "iso26262",
"level": "ASIL-A",
"asil": "ASIL-A"
},
{
"id": "REQ-PROXY-003",
"title": "ProxyRegistry::deregister closes upstream",
"text": "ProxyRegistry::deregister() shall call close() on the removed controller.",
"standard": "iso26262",
"level": "ASIL-A",
"asil": "ASIL-A"
},
{
"id": "REQ-PROXY-004",
"title": "ProxyRegistry returns ErrNotFound for unknown zones",
"text": "ProxyRegistry::lookup() shall return ErrNotFound for zones not registered via add_route().",
"standard": "iso26262",
"level": "ASIL-A",
"asil": "ASIL-A"
},
{
"id": "REQ-PROXY-005",
"title": "ProxyRegistry close is idempotent",
"text": "Calling ProxyRegistry::close() more than once shall return no error on subsequent calls.",
"standard": "iso26262",
"level": "ASIL-A",
"asil": "ASIL-A"
},
{
"id": "REQ-PROXY-006",
"title": "ProxyController zone() matches upstream",
"text": "ProxyController::zone() shall return the same zone as the wrapped upstream controller.",
"standard": "iso26262",
"level": "ASIL-A",
"asil": "ASIL-A"
},
{
"id": "REQ-RED-001",
"title": "RedundantController routes sends to primary",
Expand Down Expand Up @@ -2040,70 +1816,6 @@
"level": "ASIL-A",
"asil": "ASIL-A"
},
{
"id": "REQ-FED-001",
"title": "FederatedRegistry prefers local over remote lease",
"text": "When both a local controller and a remote lease exist for the same zone, FederatedRegistry::lookup() shall return the local controller.",
"standard": "iso26262",
"level": "ASIL-B",
"asil": "ASIL-B"
},
{
"id": "REQ-FED-002",
"title": "Expired lease returns ErrNotFound",
"text": "FederatedRegistry::lookup() shall return ErrNotFound for a zone whose only entry is an expired Lease.",
"standard": "iso26262",
"level": "ASIL-B",
"asil": "ASIL-B"
},
{
"id": "REQ-FED-003",
"title": "revoke_lease removes lease immediately",
"text": "FederatedRegistry::revoke_lease() shall remove the lease so that subsequent lookup() calls return ErrNotFound.",
"standard": "iso26262",
"level": "ASIL-B",
"asil": "ASIL-B"
},
{
"id": "REQ-FED-004",
"title": "add_lease stores lease for valid zone",
"text": "FederatedRegistry::add_lease() shall store the lease so that lookup() returns the remote controller until the lease expires.",
"standard": "iso26262",
"level": "ASIL-B",
"asil": "ASIL-B"
},
{
"id": "REQ-FED-005",
"title": "local_id identifies the HPC node",
"text": "FederatedRegistry::local_id() shall return the identifier supplied at construction.",
"standard": "iso26262",
"level": "ASIL-A",
"asil": "ASIL-A"
},
{
"id": "REQ-FED-006",
"title": "close() closes local and remote controllers",
"text": "FederatedRegistry::close() shall close all local controllers and all remote_ctrl handles in active leases.",
"standard": "iso26262",
"level": "ASIL-B",
"asil": "ASIL-B"
},
{
"id": "REQ-FED-007",
"title": "closed registry returns ErrClosed on lookup",
"text": "After FederatedRegistry::close(), lookup() shall return ErrClosed.",
"standard": "iso26262",
"level": "ASIL-B",
"asil": "ASIL-B"
},
{
"id": "REQ-FED-008",
"title": "register_ctrl returns ErrAlreadyExists for duplicate zone",
"text": "FederatedRegistry::register_ctrl() shall return ErrAlreadyExists if a controller for that zone is already registered locally.",
"standard": "iso26262",
"level": "ASIL-A",
"asil": "ASIL-A"
},
{
"id": "REQ-OBS-001",
"title": "ObservingClient records a span per request",
Expand Down Expand Up @@ -2488,38 +2200,6 @@
"level": "ASIL-A",
"asil": "ASIL-A"
},
{
"id": "REQ-CAN-001",
"title": "CanController::send returns function_not_supported when stub",
"text": "CanController::send() shall return std::errc::function_not_supported until a SocketCAN adapter is linked.",
"standard": "iso26262",
"level": "ASIL-A",
"asil": "ASIL-A"
},
{
"id": "REQ-CAN-002",
"title": "CanController::zone returns configured zone",
"text": "CanController::zone() shall return the zone supplied at construction.",
"standard": "iso26262",
"level": "ASIL-A",
"asil": "ASIL-A"
},
{
"id": "REQ-CAN-003",
"title": "CanController::subscribe returns function_not_supported when stub",
"text": "CanController::subscribe() shall return std::errc::function_not_supported until a SocketCAN adapter is linked.",
"standard": "iso26262",
"level": "ASIL-A",
"asil": "ASIL-A"
},
{
"id": "REQ-CAN-004",
"title": "CanController::close returns no error",
"text": "CanController::close() shall return a zero error_code.",
"standard": "iso26262",
"level": "ASIL-A",
"asil": "ASIL-A"
},
{
"id": "REQ-DDS-001",
"title": "DdsBridge::request returns function_not_supported when stub",
Expand Down Expand Up @@ -2584,38 +2264,6 @@
"level": "ASIL-A",
"asil": "ASIL-A"
},
{
"id": "REQ-LIN-001",
"title": "LinController::send returns function_not_supported when stub",
"text": "LinController::send() shall return std::errc::function_not_supported until a LIN driver adapter is linked.",
"standard": "iso26262",
"level": "ASIL-A",
"asil": "ASIL-A"
},
{
"id": "REQ-LIN-002",
"title": "LinController::zone returns configured zone",
"text": "LinController::zone() shall return the zone supplied at construction.",
"standard": "iso26262",
"level": "ASIL-A",
"asil": "ASIL-A"
},
{
"id": "REQ-LIN-003",
"title": "LinController::subscribe returns function_not_supported when stub",
"text": "LinController::subscribe() shall return std::errc::function_not_supported until a LIN adapter is linked.",
"standard": "iso26262",
"level": "ASIL-A",
"asil": "ASIL-A"
},
{
"id": "REQ-LIN-004",
"title": "LinController::close returns no error",
"text": "LinController::close() shall return a zero error_code.",
"standard": "iso26262",
"level": "ASIL-A",
"asil": "ASIL-A"
},
{
"id": "REQ-UDS-001",
"title": "UdsBridge::request returns function_not_supported when stub",
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.16.0
VERSION 2.17.0
DESCRIPTION "Remote Control Protocol for automotive zonal architecture (C++)"
HOMEPAGE_URL "https://github.com/SoundMatt/cpp-RCP"
LANGUAGES CXX
Expand Down
Loading
Loading