Skip to content

fprime_test_api.send_and_assert_command() assumption of command EVR order does not match CommandDispatcherImpl.cpp #4632

Description

@bevinduckett
F´ Version current
Affected Component command dispatch

Problem Description

For synchronous commands, the time stamp on OpCodeCompleted is before the time stamp of OpCodeDispatched and send_and_assert_command hard codes that the dispatch EVR must occur before the OpCodeCompleted EVR

19:04:37.740030 [GDS] Received EVR: TB_PROC_TIME: 3820.131268s, context=0: {Topology}..cmdDisp.OpCodeCompleted (13313) (1(0)-3820:131268) EventSeverity.COMMAND : Opcode {opcode} completed
19:04:37.741250 [GDS] Received EVR: TB_PROC_TIME: 3820.131342s, context=0: {Topology}.cmdDisp.OpCodeDispatched (13312) (1(0)-3820:131342) EventSeverity.COMMAND : Opcode {opcode}dispatched to port 2

I suspect this is occuring because synchronous commands complete before the comCmdSend_out() function returns & that function is called before the dispatch EVR is generated

        // pass arguments to argument buffer
        this->compCmdSend_out(this->m_entryTable[entry].port, cmdPkt.getOpCode(), this->m_seq, cmdPkt.getArgBuffer());
        // log dispatched command
        this->log_COMMAND_OpCodeDispatched(cmdPkt.getOpCode(), this->m_entryTable[entry].port);

This command is dispatched by https://github.com/fprime-community/fprime-baremetal/blob/main/fprime-baremetal/Svc/PassiveCmdDispatcher/PassiveCmdDispatcher.cpp#L187

Context / Environment

Execute fprime-util version-check and share the output.

Operating System: Linux
CPU Architecture: x86_64
Platform: Linux-4.18.0-553.89.1.el8_10.x86_64-x86_64-with-glibc2.28
Python version: 3.9.25
CMake version: 3.26.0
Pip version: 25.3
Pip packages:
    fprime-tools==4.0.2a2
    fprime-gds==4.0.2a11.dev3+gc55a33b86
    fprime-fpp==3.1.0a12
Project submodules:
    https://github.com/nasa/fpp.git @ v3.1.0a11-174-g00d24d107
    https://github.com/nasa/fprime.git @ v4.0.1a1-103-g89a9e3247b
    https://github.com/fprime-community/fprime-baremetal @ b94a572
    https://github.com/fprime-community/fprime-vorago @ f093f5a

How to Reproduce

  1. Send a cmd no op
  2. Look at the time stamps of the EVRs

Expected Behavior

A description of the expected behavior.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    F´ GDSIssues pertaining to the F´ GDSTest APIIntegration test APIbug

    Type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions