You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
CD-001 | The `Svc::CmdDispatcher` component shall accept command buffers and decode them into commands | Inspection, Unit Test
14
14
CD-002 | The `Svc::CmdDispatcher` component shall dispatch commands to components | Unit Test
15
15
CD-003 | The `Svc::CmdDispatcher` component shall provide an interface to register commands | Inspection
16
-
CD-004 | The `Svc::CmdDispatcher` component shall process command status from components and report the results to the command buffer sender. | Unit Test
16
+
CD-004 | The `Svc::CmdDispatcher` component shall process command status from components and report the results to the command buffer sender. | Unit Test
17
17
18
18
## 3. Design
19
19
@@ -32,10 +32,10 @@ The `Svc::CmdDispatcher` component uses the following port types:
@@ -47,7 +47,9 @@ An autogenerated function on components create a public function `regCommands` t
47
47
48
48
#### 3.2.2 Command Dispatch
49
49
50
-
When the command dispatcher receives a command buffer, it decodes the opcode. It searches the dispatch table for the opcode, then assigns a sequence number to the command and stores the opcode, sequence number, context value and source port in a pending command table. The command is then dispatched to the component that implements the command. When the component completes execution of the command, it reports the status back via the `compStat` port. The sequence number is matched to the entry in the pending command table, and the `seqStatus` output port corresponding to the source port is called (if it is connected) with the status and the context value. Note that this requires that the component sending the command buffer have connections to the same `cmdBuff` and `seqStatus` port numbers.
50
+
When the command dispatcher receives a command buffer, it decodes the opcode. It searches the dispatch table for the opcode, then assigns a sequence number to the command and stores the opcode, sequence number, context value and source port in a pending command table. The command is then dispatched to the component that implements the command. When the component completes execution of the command, it reports the status back via the `compCmdStat` port. The sequence number is matched to the entry in the pending command table, and the `seqCmdStatus` output port corresponding to the source port is called (if it is connected) with the status and the context value.
51
+
Note #1: this requires that the component sending the command buffer have connections to the same `seqCmdBuff` and `seqCmdStatus` port numbers.
52
+
Note #2: the `seqCmdStatus` port utilize the same type as the `compCmdStat`, the `Fw::CmdResponse`. This has been done to avoid creation of similar types for status ports. However, the `Fw::CmdResponse::cmdSeq` argument of the `seqCmdStatus` doesn't have any meaning for the calling sequencer. Therefore, as it has been mentioned before, instead of forwarding a command sequence number, the context value is transferred.
51
53
52
54
### 3.3 Scenarios
53
55
@@ -78,14 +80,14 @@ The `Svc::CmdDispatcher` component dispatches commands to other components:
0 commit comments