Skip to content
Open
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
488 changes: 484 additions & 4 deletions .fusa-reqs.json

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions include/rcp/acf.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
// fusa:req REQ-WIRE-013
// fusa:req REQ-WIRE-014
// fusa:req REQ-WIRE-015
// fusa:req REQ-EVT-001

// TC18 wire codec, message half — the ACF_ABB / ACF_GBB message types (ACF —
// AVTP Control Format) the OPEN Alliance TC18 Remote Control Protocol
Expand Down
27 changes: 27 additions & 0 deletions include/rcp/adc.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,11 @@
// fusa:req REQ-ADC-004
// fusa:req REQ-ADC-005
// fusa:req REQ-ADC-006
// fusa:req REQ-ADC-007
// fusa:req REQ-ADC-008
// fusa:req REQ-ADC-009
// fusa:req REQ-ADC-010
// fusa:req REQ-ADC-011

// ADC endpoint (ep_type 0x09) — the three-level averaging model
// (adc_sample_interval -> adc_avg_intervals_per_request ->
Expand Down Expand Up @@ -204,6 +209,28 @@ class AdcEndpoint {
}
};


// ── TC18 conformance gaps (not implemented) ──────────────────────────────────
// Normative surface of the OPEN Alliance TC18 Remote Control Protocol
// Specification this header does NOT implement. Each item is carried as a
// requirement entry in .fusa-reqs.json marked [NOT IMPLEMENTED], so the
// requirements corpus stays an honest map of the specification rather than
// only of what is built. Do not delete an item without either implementing
// the behavior or updating the matching requirement entry.
//
// REQ-ADC-007: TC18 §13.7.9.1 Table 50's five ADC trigger outputs are not
// implemented; this endpoint has no TriggerRegistry.
// REQ-ADC-008: TC18 §13.7.9.1's compound-wait behavior (compare the last
// average, do not sample) has no entry point here.
// REQ-ADC-009: TC18 §13.7.9.2's response transaction_num and timestamp
// attribution rules are not implemented.
// REQ-ADC-010: TC18 §13.7.9.3's read_size-derived response value count and
// the request-shape rules are not implemented; read_size is not an input
// here.
// REQ-ADC-011: TC18 §13.7.9.2 Table 51's functional configuration,
// including the 16-bit adc_resolution ceiling and the two trigger
// thresholds, is not modeled.

} // namespace adc
} // namespace rcp

Expand Down
15 changes: 15 additions & 0 deletions include/rcp/avtp.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
// fusa:req REQ-WIRE-007
// fusa:req REQ-WIRE-011
// fusa:req REQ-WIRE-013
// fusa:req REQ-WIRE-016
// fusa:req REQ-WIRE-017

// TC18 wire codec, framing half — IEEE 1722 AVTPDU framing (NTSCF/TSCF) that
// the OPEN Alliance TC18 Remote Control Protocol Specification v0.5.1_RC
Expand Down Expand Up @@ -313,5 +315,18 @@ inline std::error_code decode_tscf_header(const uint8_t* b, size_t len, TscfHead
return {};
}


// ── TC18 conformance gaps (not implemented) ──────────────────────────────────
// Normative surface of the OPEN Alliance TC18 Remote Control Protocol
// Specification this header does NOT implement. Each item is carried as a
// requirement entry in .fusa-reqs.json marked [NOT IMPLEMENTED], so the
// requirements corpus stays an honest map of the specification rather than
// only of what is built. Do not delete an item without either implementing
// the behavior or updating the matching requirement entry.
//
// REQ-WIRE-017: TC18 §13.3 makes the ignore-versus-drop handling of
// presentation-timed and tv=0 requests configuration-dependent; no such
// policy setting exists here.

} // namespace avtp
} // namespace rcp
21 changes: 21 additions & 0 deletions include/rcp/can.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
// fusa:req REQ-CANEP-005
// fusa:req REQ-CANEP-006
// fusa:req REQ-CANEP-007
// fusa:req REQ-CANEP-008
// fusa:req REQ-CANEP-009
// fusa:req REQ-CANEP-010

// CAN controller endpoint (ep_type 0x0B) — the OPEN Alliance TC18 Remote
// Control Protocol Specification v0.5.1_RC's Classical/FD/XL frame-format
Expand Down Expand Up @@ -283,6 +286,24 @@ class CanEndpoint {
CanDataFrame last_rx_;
};


// ── TC18 conformance gaps (not implemented) ──────────────────────────────────
// Normative surface of the OPEN Alliance TC18 Remote Control Protocol
// Specification this header does NOT implement. Each item is carried as a
// requirement entry in .fusa-reqs.json marked [NOT IMPLEMENTED], so the
// requirements corpus stays an honest map of the specification rather than
// only of what is built. Do not delete an item without either implementing
// the behavior or updating the matching requirement entry.
//
// REQ-CANEP-008: TC18 §13.7.11.3 Table 54's FrameFormat encoding
// (CBFF/CEFF/FBFF/FEFF/XL-classic/XL-new = 0..5, 6-7 reserved) is not
// what FrameFormat below defines.
// REQ-CANEP-009: TC18 §13.7.11.3's right-alignment rule for 11-bit
// identifiers has no expression here; this header has no CAN request
// wire codec.
// REQ-CANEP-010: TC18 §13.7.11.2 Table 53's register-map placement of the
// CAN functional configuration is not modeled.

} // namespace can
} // namespace rcp

Expand Down
36 changes: 36 additions & 0 deletions include/rcp/endpoint.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,13 @@
// fusa:req REQ-ENDPOINT-004
// fusa:req REQ-ENDPOINT-005
// fusa:req REQ-ENDPOINT-006
// fusa:req REQ-ENDPOINT-007
// fusa:req REQ-ENDPOINT-008
// fusa:req REQ-ENDPOINT-009
// fusa:req REQ-EVT-002
// fusa:req REQ-EVT-003
// fusa:req REQ-EVT-004
// fusa:req REQ-EVT-005

// Shared endpoint-registration and request-dispatch scaffolding — the pieces
// every concrete OPEN Alliance TC18 Remote Control Protocol Specification
Expand Down Expand Up @@ -246,6 +253,35 @@ class TriggerRegistry {
std::vector<SignalId> pending_;
};


// ── TC18 conformance gaps (not implemented) ──────────────────────────────────
// Normative surface of the OPEN Alliance TC18 Remote Control Protocol
// Specification this header does NOT implement. Each item is carried as a
// requirement entry in .fusa-reqs.json marked [NOT IMPLEMENTED], so the
// requirements corpus stays an honest map of the specification rather than
// only of what is built. Do not delete an item without either implementing
// the behavior or updating the matching requirement entry.
//
// REQ-ENDPOINT-008: TC18 Table 29 allocates ep_type 0x0A to a DAC endpoint
// type; no id is assigned above and no DAC endpoint exists, because
// v0.5.1_RC defines no behavior for it.
// REQ-ENDPOINT-009: TC18 §13.5 states the add/subtract saturation bounds
// literally as 0x0000/0xFFFF; apply_bitmask_write above saturates at the
// caller's operand width instead, which differs for payloads wider than
// 16 bits.
// REQ-EVT-002: TC18 §13.5.1's eight evt[2:0] compound-wait comparison
// modes have no comparator here; only rcp/spi.hpp and rcp/i2c.hpp have
// any wait matcher, and neither is mode-selected.
// REQ-EVT-003: TC18 §13.5.1's compound-wait length rules (shorter status
// never matches; longer status capped to the payload length) are not
// implemented generically.
// REQ-EVT-004: TC18 §13.5 Table 30's reserved-evt rejection
// (UNSUPPORTED_CMD) is not performed by the
// ADC/PWM_IN/I2C/LIN/CAN/UART/ISELED/MDIO endpoint types; none of them
// take an evt argument.
// REQ-EVT-005: TC18 §13.5 Table 30's evt[2:0]=111b 'payload reconfigures
// the endpoint' path is not implemented for any endpoint type.

} // namespace endpoint
} // namespace rcp

Expand Down
26 changes: 26 additions & 0 deletions include/rcp/gpio.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,11 @@
// fusa:req REQ-GPIO-006
// fusa:req REQ-GPIO-007
// fusa:req REQ-GPIO-008
// fusa:req REQ-GPIO-009
// fusa:req REQ-GPIO-010
// fusa:req REQ-GPIO-011
// fusa:req REQ-GPIO-012
// fusa:req REQ-GPIO-013

// GPIO endpoint (ep_type 0x02) — the OPEN Alliance TC18 Remote Control
// Protocol Specification v0.5.1_RC's simplest endpoint type: a 32-pin
Expand Down Expand Up @@ -228,6 +233,27 @@ class GpioEndpoint {
endpoint::TriggerRegistry triggers_;
};


// ── TC18 conformance gaps (not implemented) ──────────────────────────────────
// Normative surface of the OPEN Alliance TC18 Remote Control Protocol
// Specification this header does NOT implement. Each item is carried as a
// requirement entry in .fusa-reqs.json marked [NOT IMPLEMENTED], so the
// requirements corpus stays an honest map of the specification rather than
// only of what is built. Do not delete an item without either implementing
// the behavior or updating the matching requirement entry.
//
// REQ-GPIO-010: TC18 §13.7.4.3 requires a write to a pin configured as an
// input to be ignored for that pin; apply_gpio_write above applies the
// operand to every bit regardless of GpioState::directions.
// REQ-GPIO-011: TC18 §13.7.4.1 Table 40's trigger-id numbering (0 =
// request execution done, then three contiguous ids per pin) is not what
// gpio_signal_id produces, and request-execution-done has no id at all.
// REQ-GPIO-012: TC18 §13.7.4.1's fewer-than-32-pin rule and Table 41's
// gpio_io_max register are not modeled; kMaxPins is fixed at 32.
// REQ-GPIO-013: TC18 §13.7.4.2 Table 41's functional-configuration
// registers and §13.7.4.3's debounce-dependent response timing are not
// modeled.

} // namespace gpio
} // namespace rcp

Expand Down
14 changes: 14 additions & 0 deletions include/rcp/i2c.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
// fusa:req REQ-I2C-003
// fusa:req REQ-I2C-004
// fusa:req REQ-I2C-005
// fusa:req REQ-I2C-006
// fusa:req REQ-I2C-007

// I2C endpoint (ep_type 0x04) — controller-only raw byte-stream transfer
// (including address bytes, per the OPEN Alliance TC18 Remote Control
Expand Down Expand Up @@ -163,6 +165,18 @@ class I2cEndpoint {
std::vector<uint8_t> last_in_;
};


// ── TC18 conformance gaps (not implemented) ──────────────────────────────────
// Normative surface of the OPEN Alliance TC18 Remote Control Protocol
// Specification this header does NOT implement. Each item is carried as a
// requirement entry in .fusa-reqs.json marked [NOT IMPLEMENTED], so the
// requirements corpus stays an honest map of the specification rather than
// only of what is built. Do not delete an item without either implementing
// the behavior or updating the matching requirement entry.
//
// REQ-I2C-007: TC18 §13.7.7.2 Table 46's I2C functional configuration
// (clock divider, full i2c_mode ladder, i2c_trail) is not modeled.

} // namespace i2c
} // namespace rcp

Expand Down
16 changes: 16 additions & 0 deletions include/rcp/iseled.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
// fusa:req REQ-ISELED-003
// fusa:req REQ-ISELED-004
// fusa:req REQ-ISELED-005
// fusa:req REQ-ISELED-006
// fusa:req REQ-ISELED-007

// ISELED endpoint (ep_type 0x0C) — the OPEN Alliance TC18 Remote Control
// Protocol Specification v0.5.1_RC's native ISELED daisy-chain framing: a
Expand Down Expand Up @@ -238,6 +240,20 @@ class IseledEndpoint {
IseledResponse last_response_;
};


// ── TC18 conformance gaps (not implemented) ──────────────────────────────────
// Normative surface of the OPEN Alliance TC18 Remote Control Protocol
// Specification this header does NOT implement. Each item is carried as a
// requirement entry in .fusa-reqs.json marked [NOT IMPLEMENTED], so the
// requirements corpus stays an honest map of the specification rather than
// only of what is built. Do not delete an item without either implementing
// the behavior or updating the matching requirement entry.
//
// REQ-ISELED-006: TC18 §13.7.12.2 Table 55's ISELED functional
// configuration is not modeled.
// REQ-ISELED-007: TC18 §13.7.12.1's 4b/5b line coding and ISELED-native
// CRC generation/checking are not implemented.

} // namespace iseled
} // namespace rcp

Expand Down
20 changes: 20 additions & 0 deletions include/rcp/lin.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@
// fusa:req REQ-LINEP-002
// fusa:req REQ-LINEP-003
// fusa:req REQ-LINEP-004
// fusa:req REQ-LINEP-005
// fusa:req REQ-LINEP-006
// fusa:req REQ-LINEP-007

// LIN commander endpoint (ep_type 0x06) — the OPEN Alliance TC18 Remote
// Control Protocol Specification v0.5.1_RC's raw-byte-pusher model for LIN:
Expand Down Expand Up @@ -124,6 +127,23 @@ class LinEndpoint {
std::vector<uint8_t> last_in_;
};


// ── TC18 conformance gaps (not implemented) ──────────────────────────────────
// Normative surface of the OPEN Alliance TC18 Remote Control Protocol
// Specification this header does NOT implement. Each item is carried as a
// requirement entry in .fusa-reqs.json marked [NOT IMPLEMENTED], so the
// requirements corpus stays an honest map of the specification rather than
// only of what is built. Do not delete an item without either implementing
// the behavior or updating the matching requirement entry.
//
// REQ-LINEP-005: TC18 §13.7.10.1 gates the LIN trigger on the configured
// trailing time having expired as well; transfer() below fires
// immediately, and TC18 defines no second LIN trigger signal.
// REQ-LINEP-006: TC18 §13.7.10.1's pending-read matching of received
// frames against the payload under evt[2:0] is not implemented.
// REQ-LINEP-007: TC18 §13.7.10.2 Table 52's LIN functional configuration
// is not modeled.

} // namespace lin
} // namespace rcp

Expand Down
15 changes: 15 additions & 0 deletions include/rcp/mdio.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
// fusa:req REQ-MDIO-003
// fusa:req REQ-MDIO-004
// fusa:req REQ-MDIO-005
// fusa:req REQ-MDIO-006
// fusa:req REQ-MDIO-007

// MDIO endpoint (ep_type 0x0D) — the OPEN Alliance TC18 Remote Control
// Protocol Specification v0.5.1_RC's mdio_mode-selected register access
Expand Down Expand Up @@ -190,6 +192,19 @@ class MdioEndpoint {
std::unordered_map<uint64_t, uint32_t> registers_;
};


// ── TC18 conformance gaps (not implemented) ──────────────────────────────────
// Normative surface of the OPEN Alliance TC18 Remote Control Protocol
// Specification this header does NOT implement. Each item is carried as a
// requirement entry in .fusa-reqs.json marked [NOT IMPLEMENTED], so the
// requirements corpus stays an honest map of the specification rather than
// only of what is built. Do not delete an item without either implementing
// the behavior or updating the matching requirement entry.
//
// REQ-MDIO-007: TC18 §13.7.13.2 Table 56's registers are not modeled, and
// TC18 defines no MDIO trigger table, so MdioSignal::TransferComplete
// below is an implementation extension.

} // namespace mdio
} // namespace rcp

Expand Down
36 changes: 36 additions & 0 deletions include/rcp/pwm.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,14 @@
// fusa:req REQ-PWM-005
// fusa:req REQ-PWM-006
// fusa:req REQ-PWM-007
// fusa:req REQ-PWM-008
// fusa:req REQ-PWM-009
// fusa:req REQ-PWM-010
// fusa:req REQ-PWM-011
// fusa:req REQ-PWM-012
// fusa:req REQ-PWM-013
// fusa:req REQ-PWM-014
// fusa:req REQ-PWM-015

// PWM_OUT (ep_type 0x07) and PWM_IN (ep_type 0x08) endpoints — the shared
// period/active-duration two-field payload shape, PWM_OUT's fixed 4-byte
Expand Down Expand Up @@ -224,6 +232,34 @@ class PwmInEndpoint {
endpoint::TriggerRegistry triggers_;
};


// ── TC18 conformance gaps (not implemented) ──────────────────────────────────
// Normative surface of the OPEN Alliance TC18 Remote Control Protocol
// Specification this header does NOT implement. Each item is carried as a
// requirement entry in .fusa-reqs.json marked [NOT IMPLEMENTED], so the
// requirements corpus stays an honest map of the specification rather than
// only of what is built. Do not delete an item without either implementing
// the behavior or updating the matching requirement entry.
//
// REQ-PWM-009: TC18 §13.7.5.1 Table 42's three PWM_OUT trigger outputs are
// not implemented; PwmOutEndpoint has no TriggerRegistry.
// REQ-PWM-010: TC18 §13.5 Table 30 puts PWM_OUT in GPIO's evt[2:0] row,
// including add/subtract for duty-cycle stepping; handle_write below
// rejects those (REQ-PWM-003).
// REQ-PWM-011: TC18 §13.7.5.3's start/stop rules (period 0 stops
// generation; active 0 with period > 0 disables the output but keeps
// triggers) are not modeled.
// REQ-PWM-012: TC18 §13.7.5.3's trigger-configuration request, whose first
// two payload bytes are a phase shift rather than the period, has no
// request shape here.
// REQ-PWM-013: TC18 §13.7.5.3's output-pin read-back toggle check is not
// implemented.
// REQ-PWM-014: TC18 §13.7.5.2 Table 43's PWM_OUT functional configuration,
// including duty-cycle min/max capping, is not modeled.
// REQ-PWM-015: TC18 §13.7.6.2 Table 45's PWM_IN functional configuration,
// including the max-period error rule and continuous-vs-single
// measurement mode, is not modeled.

} // namespace pwm
} // namespace rcp

Expand Down
Loading
Loading