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
45 changes: 30 additions & 15 deletions .fusa-reqs.json
Original file line number Diff line number Diff line change
Expand Up @@ -2524,7 +2524,8 @@
"standard": "iso26262",
"level": "ASIL-B",
"asil": "ASIL-B",
"scope": "tc18"
"scope": "tc18",
"tc18": "§12.3's Table 32 (\"0x0002.0 ep_enable ... indicating if the endpoint is enabled to executed requests from its request storage\"), TC18.txt L3900-3905"
},
{
"id": "REQ-SRV-002",
Expand All @@ -2533,7 +2534,8 @@
"standard": "iso26262",
"level": "ASIL-B",
"asil": "ASIL-B",
"scope": "tc18"
"scope": "tc18",
"tc18": "§12.3's Table 32 (\"0x0002.0 ep_enable ... indicating if the endpoint is enabled to executed requests from its request storage\"), TC18.txt L3900-3905"
},
{
"id": "REQ-SRV-003",
Expand All @@ -2542,7 +2544,8 @@
"standard": "iso26262",
"level": "ASIL-B",
"asil": "ASIL-B",
"scope": "tc18"
"scope": "tc18",
"tc18": "§12.3's Table 32 (\"0x0002.0 ep_enable ... indicating if the endpoint is enabled to executed requests from its request storage\"), TC18.txt L3900-3905"
},
{
"id": "REQ-LIFECYCLE-021",
Expand Down Expand Up @@ -7847,7 +7850,8 @@
"standard": "iso26262",
"level": "ASIL-B",
"asil": "ASIL-B",
"scope": "tc18"
"scope": "tc18",
"tc18": "§12.9.1.1 (\"An RC Server shall support to handle multiple requests in one frame and check each of them individually if to be processed or not\"), TC18.txt L3221-3224; request_type identifiers per §11.2.2 Table 5, TC18.txt L1186-1199"
},
{
"id": "REQ-SRV-005",
Expand All @@ -7856,7 +7860,8 @@
"standard": "iso26262",
"level": "ASIL-B",
"asil": "ASIL-B",
"scope": "tc18"
"scope": "tc18",
"tc18": "§12.9.1.1 (\"An RC Server shall support to handle multiple requests in one frame and check each of them individually if to be processed or not\"), TC18.txt L3221-3224; request_type identifiers per §11.2.2 Table 5, TC18.txt L1186-1199; UNSUPPORTED_CMD error-code basis per §11.2.2.1/.2's own optional-feature-not-supported rule, TC18.txt L1204-1205, L1300-1301"
},
{
"id": "REQ-SRV-006",
Expand All @@ -7865,7 +7870,8 @@
"standard": "iso26262",
"level": "ASIL-B",
"asil": "ASIL-B",
"scope": "tc18"
"scope": "tc18",
"tc18": "§12.9.2 (\"Whenever an Endpoint is able to start a new request, it shall check for all requests in the EP request storage whether they are due for execution\" ... priority list: 1. cancellation 2. triggered 3. timed 4. compound 5. compound wait 6. chained 7. standard), TC18.txt L3248-3266"
},
{
"id": "REQ-SRV-007",
Expand All @@ -7874,7 +7880,8 @@
"standard": "iso26262",
"level": "ASIL-B",
"asil": "ASIL-B",
"scope": "tc18"
"scope": "tc18",
"tc18": "§12.9.2 (\"Whenever an Endpoint is able to start a new request, it shall check for all requests in the EP request storage whether they are due for execution\" ... priority list: 1. cancellation 2. triggered 3. timed 4. compound 5. compound wait 6. chained 7. standard), TC18.txt L3248-3266; safety-tagged (MSB-set) requests staying in the store until the endpoint's safe state per §11.2.2, TC18.txt L1189-1191 (already implemented as REQ-E2E-012/013's e2e.h gate, rcp_e2e_request_may_execute())"
},
{
"id": "REQ-SRV-008",
Expand All @@ -7883,7 +7890,8 @@
"standard": "iso26262",
"level": "ASIL-B",
"asil": "ASIL-B",
"scope": "tc18"
"scope": "tc18",
"tc18": "§12.9.2 (\"When two or more requests with the same priority are due then starting the execution shall happen in the order with which the requests arrived in the EP request storage.\"), TC18.txt L3265-3266"
},
{
"id": "REQ-SRV-009",
Expand All @@ -7892,7 +7900,8 @@
"standard": "iso26262",
"level": "ASIL-B",
"asil": "ASIL-B",
"scope": "tc18"
"scope": "tc18",
"tc18": "§12.9.3 Table 26 (execution procedure per request type -- compound/compound-wait sequencer-state advance and repeat_count decrement, triggered request's exec_delay-from-threshold timing), TC18.txt L3282-3341"
},
{
"id": "REQ-SRV-010",
Expand All @@ -7901,7 +7910,8 @@
"standard": "iso26262",
"level": "ASIL-B",
"asil": "ASIL-B",
"scope": "tc18"
"scope": "tc18",
"tc18": "§12.9.3 Table 26 (execution procedure per request type -- compound/compound-wait sequencer-state advance and repeat_count decrement, triggered request's exec_delay-from-threshold timing), TC18.txt L3282-3341 -- repeat_count 0xFFFF-infinite / zero-removes-on-finalize rule shared with Table 6/7, TC18.txt L1268-1271, L1385-1388"
},
{
"id": "REQ-SRV-011",
Expand All @@ -7910,7 +7920,8 @@
"standard": "iso26262",
"level": "ASIL-B",
"asil": "ASIL-B",
"scope": "tc18"
"scope": "tc18",
"tc18": "§12.9.3 Table 26 (execution procedure per request type -- compound/compound-wait sequencer-state advance and repeat_count decrement, triggered request's exec_delay-from-threshold timing), TC18.txt L3282-3341 (Triggered request row: \"Upon entering RS state the counted number of received trigger signals is reset to zero and newly arriving trigger signals are counted from zero\"), TC18.txt L3298-3300"
},
{
"id": "REQ-SRV-012",
Expand All @@ -7919,7 +7930,8 @@
"standard": "iso26262",
"level": "ASIL-B",
"asil": "ASIL-B",
"scope": "tc18"
"scope": "tc18",
"tc18": "§11.2.2.4 (\"the second and following requests always wait on the predecessor request to finish its execution\"), TC18.txt L3283-3286 (chapter reference); worked description at TC18.txt L1514-1516"
},
{
"id": "REQ-SRV-013",
Expand All @@ -7928,7 +7940,8 @@
"standard": "iso26262",
"level": "ASIL-B",
"asil": "ASIL-B",
"scope": "tc18"
"scope": "tc18",
"tc18": "§11.2.3.1/.2 clear-all/clear-single cancellation request handling, TC18.txt L1681, L1735-1738, L1794 (established Phase 1 basis, issue #163)"
},
{
"id": "REQ-SRV-014",
Expand All @@ -7937,7 +7950,8 @@
"standard": "iso26262",
"level": "ASIL-B",
"asil": "ASIL-B",
"scope": "tc18"
"scope": "tc18",
"tc18": "watch-dog-overflow queue-clearing rule for non-safety-tagged conditional requests (\"compound requests with 0x0F will be cleared from the queue while the requests with 0x8F remain active after watch-dog overflow\"), TC18.txt L1231-1234, L1330-1332 (compound-wait analogue)"
},
{
"id": "REQ-MOCK-021",
Expand Down Expand Up @@ -9415,7 +9429,8 @@
"standard": "iso26262",
"level": "ASIL-B",
"asil": "ASIL-B",
"scope": "tc18"
"scope": "tc18",
"tc18": "§12.9.2 (\"Each endpoint receives request via its dedicated EP request storage.\"), TC18.txt L3193"
},
{
"id": "REQ-SRV-022",
Expand Down
2 changes: 1 addition & 1 deletion .fusa.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"configVersion": "1.0",
"project": {
"name": "c-RCP",
"version": "0.138.0"
"version": "0.139.0"
},
"standard": "iso26262",
"strict": false,
Expand Down
13 changes: 13 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,19 @@ the rationale.

## Releases

### v0.139.0 -- 2026-08-07

**Citation backfill, batch 19: SRV.** Issue #164. Cited all 15
remaining uncited requirements for `server.c`'s request-storage/
admission/priority-scheduling/completion core against TC18 §12.9.1's
request handling, §12.9.2's seven-tier priority-in-execution ordering,
and §12.9.3 Table 26's per-request-type execution procedure -- SRV is
now 100% cited. Also records that PWR (`powerstate.c`) was scoped and
rejected as a batch candidate: a thin client-side wrapper with no
distinct TC18 text of its own. See `ROADMAP.md` milestone 139 for full
detail. 1028 requirements (unchanged), 100% traced+tested, 0
`cfusa check` errors.

### v0.138.0 -- 2026-08-07

**Citation backfill, batch 18: WAKEUP.** Issue #164. Cited 13 of 16
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.16)

project(c-rcp
VERSION 0.138.0
VERSION 0.139.0
DESCRIPTION "OPEN Alliance TC18 Remote Control Protocol (C)"
HOMEPAGE_URL "https://github.com/SoundMatt/c-RCP"
LANGUAGES C
Expand Down
53 changes: 53 additions & 0 deletions ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -6845,3 +6845,56 @@ were genuinely uncited before writing anything.

Purely additive; no code or test changed. 1028 requirements (unchanged
count), 100% traced+tested, 0 `cfusa check` errors.

### 139. Citation backfill, batch 19: SRV (issue #164) (v0.139.0)

Nineteenth batch. `server.c`/`server.h` -- the RC Server's per-endpoint
request-storage/admission/priority-scheduling/completion core, 15/22
uncited going in. Before committing, this batch's scoping pass first
checked PWR (`powerstate.c`, 15 uncited) and found it a thin
client-side convenience wrapper over already-cited primitives
(ep_wakeup.h + power.h) with no TC18 text of its own -- rejected as a
batch candidate, same reasoning as batch 18's MDIO rejection. SRV, by
contrast, sits at the heart of TC18's own request-handling model and
has the richest single-batch TC18 basis of the session: §12.9.1/
§12.9.1.1's request-handling and multi-request-per-frame admission
rules, §12.9.2's priority-in-execution ordering (cancellation >
triggered > timed > compound > compound-wait > chained > standard,
plus same-priority FIFO tiebreak), and §12.9.3 Table 26's per-
request-type execution procedure, which maps almost line for line onto
`rcp_server_endpoint_complete()`'s own per-kind tick/repeat_count
switch.

Cited all 15 of the 15 uncited `REQ-SRV-*` requirements -- SRV is now
100% cited. Highlights: the pre-load-then-drain-on-enable queue
(`REQ-SRV-001`-`003`) against Table 32's `ep_enable` common field;
multi-request admission/rejection (`REQ-SRV-004`-`005`) against
§12.9.1.1's per-request accept/reject rule and Table 5's request_type
identifiers; the full priority-selection function
(`REQ-SRV-006`-`008`) against §12.9.2's seven-tier ordering, the
safety-tagged persistence rule (cross-referencing the already-cited
`REQ-E2E-012`/`013` e2e.h gate this function calls), and the FIFO
tiebreak; completion (`REQ-SRV-009`-`010`) and trigger-occurrence
recording (`REQ-SRV-011`) against Table 26's compound/compound-wait/
triggered rows; chain-predecessor marking (`REQ-SRV-012`) against
§11.2.2.4's "the second and following requests always wait on the
predecessor request to finish its execution" rule; cancellation
(`REQ-SRV-013`) reusing Phase 1's already-established §11.2.3.1/.2
basis; watchdog purge (`REQ-SRV-014`) against the 0x0F-cleared/
0x8F-remains-active watch-dog-overflow rule already used for CMP; and
the pending-count getter (`REQ-SRV-021`) against §12.9.2's own "EP
request storage" framing.

One citation-text error caught and fixed during scoping (before any
edit was written): `rcp_e2e_request_may_execute()` was initially
attributed to `REQ-E2E-014` by proximity guess; a direct grep against
`src/e2e.c`'s own tags showed it is actually `REQ-E2E-012`/`013` --
corrected before the citation script ran. Always verify a
cross-reference's req-id against the real source tag, never infer it
from nearby line numbers.

Used the pre-flight citation-target check -- confirmed all 15 targets
were genuinely uncited before writing anything.

Purely additive; no code or test changed. 1028 requirements (unchanged
count), 100% traced+tested, 0 `cfusa check` errors.
2 changes: 1 addition & 1 deletion include/rcp/version.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@
#ifndef RCP_VERSION_H
#define RCP_VERSION_H

#define RCP_VERSION "0.138.0"
#define RCP_VERSION "0.139.0"

#endif /* RCP_VERSION_H */
Loading