Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix #142, Standardize command responses #143

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
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
7 changes: 4 additions & 3 deletions config/default_sc_fcncodes.h
Original file line number Diff line number Diff line change
Expand Up @@ -238,7 +238,7 @@
* Successful execution of this command may be verified with
* the following telemetry:
* - #SC_HkTlm_Payload_t.CmdCtr will increment
* - The #SC_DISABLE_RTS_DEB_EID will be sent
* - The #SC_DISABLE_RTS_INF_EID will be sent
*
* \par Error Conditions
* This command may fail for the following reason(s):
Expand Down Expand Up @@ -269,7 +269,7 @@
* Successful execution of this command may be verified with
* the following telemetry:
* - #SC_HkTlm_Payload_t.CmdCtr will increment
* - The #SC_ENABLE_RTS_DEB_EID will be sent
* - The #SC_ENABLE_RTS_INF_EID will be sent
*
* \par Error Conditions
* This command may fail for the following reason(s):
Expand Down Expand Up @@ -362,7 +362,7 @@
* Successful execution of this command may be verified with
* the following telemetry:
* - #SC_HkTlm_Payload_t.CmdCtr will increment
* - The #SC_CONT_CMD_DEB_EID will be sent
* - The #SC_CONT_CMD_INF_EID will be sent
*
* \par Error Conditions
* This command may fail for the following reason(s):
Expand Down Expand Up @@ -430,6 +430,7 @@
* \par Command Verification
* Successful execution of this command may be verified via:
* - cFE Table Services housekeeping telemetry
* - The #SC_TABLE_MANAGE_INF_EID will be sent
*
* \par Error Conditions
* This command may fail for the following reason(s):
Expand Down
36 changes: 25 additions & 11 deletions fsw/inc/sc_events.h
Original file line number Diff line number Diff line change
Expand Up @@ -414,13 +414,13 @@
/**
* \brief SC Continue ATS On Failure Command Event ID
*
* \par Type: DEBUG
* \par Type: INFORMATIONAL
*
* \par Cause:
* This event message is issued when the #SC_CONTINUE_ATS_ON_FAILURE_CC command was received and
* the state was changed successfully
*/
#define SC_CONT_CMD_DEB_EID 43
#define SC_CONT_CMD_INF_EID 43

/**
* \brief SC ATS Command Skipped Checksum Failed Event ID
Expand Down Expand Up @@ -503,12 +503,13 @@
/**
* \brief SC Reset Counters Command Event ID
*
* \par Type: DEBUG
* \par Type: INFORMATIONAL
*
* \par Cause:
* This event message is issued when the #SC_RESET_COUNTERS_CC command was received
* This event message is issued when the #SC_RESET_COUNTERS_CC command was
* received
*/
#define SC_RESET_DEB_EID 51
#define SC_RESET_INF_EID 51

/**
* \brief SC No-op Command Event ID
Expand Down Expand Up @@ -751,12 +752,13 @@
/**
* \brief SC Disable RTS Command Event ID
*
* \par Type: DEBUG
* \par Type: INFORMATIONAL
*
* \par Cause:
* This event message is issued when a #SC_DISABLE_RTS_CC command was received, and executed successfully
* This event message is issued when a #SC_DISABLE_RTS_CC command was received,
* and executed successfully
*/
#define SC_DISABLE_RTS_DEB_EID 80
#define SC_DISABLE_RTS_INF_EID 80

/**
* \brief SC Disable RTS Rejected RTS ID Invalid Event ID
Expand All @@ -772,12 +774,13 @@
/**
* \brief SC Enable RTS Command ID Event ID
*
* \par Type: DEBUG
* \par Type: INFORMATIONAL
*
* \par Cause:
* This event message is issued when a #SC_ENABLE_RTS_CC command was received, and executed successfully
* This event message is issued when a #SC_ENABLE_RTS_CC command was received,
* and executed successfully
*/
#define SC_ENABLE_RTS_DEB_EID 82
#define SC_ENABLE_RTS_INF_EID 82

/**
* \brief SC Enable RTS Rejected RTS ID Invalid Event ID
Expand Down Expand Up @@ -1351,6 +1354,17 @@
*/
#define SC_AUTOSTART_RTS_INV_ID_ERR_EID 138

/**
* \brief SC Manage Table Command Event ID
*
* \par Type: INFORMATION
*
* \par Cause:
* This event message is issued when the #SC_MANAGE_TABLE_CC command
* was received and processed successfully.
*/
#define SC_TABLE_MANAGE_INF_EID 139

/**\}*/

#endif
3 changes: 2 additions & 1 deletion fsw/src/sc_atsrq.c
Original file line number Diff line number Diff line change
Expand Up @@ -656,7 +656,8 @@ void SC_ContinueAtsOnFailureCmd(const SC_ContinueAtsOnFailureCmd_t *Cmd)

SC_OperData.HkPacket.Payload.CmdCtr++;

CFE_EVS_SendEvent(SC_CONT_CMD_DEB_EID, CFE_EVS_EventType_DEBUG, "Continue-ATS-On-Failure command, State: %lu",
CFE_EVS_SendEvent(SC_CONT_CMD_INF_EID, CFE_EVS_EventType_INFORMATION,
"Continue-ATS-On-Failure command, State: %lu",
(unsigned long)State);
}
}
Expand Down
63 changes: 40 additions & 23 deletions fsw/src/sc_cmds.c
Original file line number Diff line number Diff line change
Expand Up @@ -59,12 +59,12 @@
SC_CommandIndex_t CmdIndex; /* ATS command index */
CFE_Status_t Result;
bool AbortATS = false;
SC_AtsEntry_t * EntryPtr;
SC_AtsEntry_t *EntryPtr;
CFE_SB_MsgId_t MessageID = CFE_SB_INVALID_MSG_ID;
CFE_MSG_FcnCode_t CommandCode = 0;
bool ChecksumValid;
SC_AtsCmdEntryOffsetRecord_t *CmdOffsetRec; /* ATS entry location in table */
SC_AtsCmdStatusEntry_t * StatusEntryPtr;
SC_AtsCmdStatusEntry_t *StatusEntryPtr;

/*
** The following conditions must be met before the ATS command will be
Expand Down Expand Up @@ -289,7 +289,7 @@

void SC_ProcessRtpCommand(void)
{
SC_RtsEntry_t * EntryPtr; /* a pointer to an RTS entry header */
SC_RtsEntry_t *EntryPtr; /* a pointer to an RTS entry header */
SC_RtsIndex_t RtsIndex; /* the RTS index for the cmd */
SC_EntryOffset_t CmdOffset; /* the location of the cmd */
CFE_Status_t Result;
Expand Down Expand Up @@ -518,7 +518,7 @@

void SC_ResetCountersCmd(const SC_ResetCountersCmd_t *Cmd)
{
CFE_EVS_SendEvent(SC_RESET_DEB_EID, CFE_EVS_EventType_DEBUG, "Reset counters command");
CFE_EVS_SendEvent(SC_RESET_INF_EID, CFE_EVS_EventType_INFORMATION, "Reset counters command");

SC_OperData.HkPacket.Payload.CmdCtr = 0;
SC_OperData.HkPacket.Payload.CmdErrCtr = 0;
Expand Down Expand Up @@ -606,56 +606,62 @@

void SC_ManageTableCmd(const SC_ManageTableCmd_t *Cmd)
{
int32 ArrayIndex;
int32 TableID = Cmd->Payload.Parameter;
int32 ArrayIndex;
int32 TableID = Cmd->Payload.Parameter;
CFE_Status_t Status = SC_ERROR;

/* Manage selected table as appropriate for each table type */
if ((TableID >= SC_TBL_ID_ATS_0) && (TableID < (SC_TBL_ID_ATS_0 + SC_NUMBER_OF_ATS)))
{
ArrayIndex = TableID - SC_TBL_ID_ATS_0;
SC_ManageAtsTable(ArrayIndex);
Status = SC_ManageAtsTable(ArrayIndex);
}
else if (TableID == SC_TBL_ID_APPEND)
{
SC_ManageTable(APPEND, -1);
Status = SC_ManageTable(APPEND, -1);
}
else if ((TableID >= SC_TBL_ID_RTS_0) && (TableID < (SC_TBL_ID_RTS_0 + SC_NUMBER_OF_RTS)))
{
ArrayIndex = TableID - SC_TBL_ID_RTS_0;
SC_ManageRtsTable(ArrayIndex);
Status = SC_ManageRtsTable(ArrayIndex);
}
else if (TableID == SC_TBL_ID_RTS_INFO)
{
/* No need to release dump only table pointer */
CFE_TBL_Manage(SC_OperData.RtsInfoHandle);
Status = CFE_TBL_Manage(SC_OperData.RtsInfoHandle);
}
else if (TableID == SC_TBL_ID_RTP_CTRL)
{
/* No need to release dump only table pointer */
CFE_TBL_Manage(SC_OperData.RtsCtrlBlckHandle);
Status = CFE_TBL_Manage(SC_OperData.RtsCtrlBlckHandle);
}
else if (TableID == SC_TBL_ID_ATS_INFO)
{
/* No need to release dump only table pointer */
CFE_TBL_Manage(SC_OperData.AtsInfoHandle);
Status = CFE_TBL_Manage(SC_OperData.AtsInfoHandle);
}
else if (TableID == SC_TBL_ID_ATP_CTRL)
{
/* No need to release dump only table pointer */
CFE_TBL_Manage(SC_OperData.AtsCtrlBlckHandle);
Status = CFE_TBL_Manage(SC_OperData.AtsCtrlBlckHandle);
}
else if ((TableID >= SC_TBL_ID_ATS_CMD_0) && (TableID < (SC_TBL_ID_ATS_CMD_0 + SC_NUMBER_OF_ATS)))
{
/* No need to release dump only table pointer */
ArrayIndex = TableID - SC_TBL_ID_ATS_CMD_0;
CFE_TBL_Manage(SC_OperData.AtsCmdStatusHandle[ArrayIndex]);
Status = CFE_TBL_Manage(SC_OperData.AtsCmdStatusHandle[ArrayIndex]);
}
else
{
/* Invalid table ID */
CFE_EVS_SendEvent(SC_TABLE_MANAGE_ID_ERR_EID, CFE_EVS_EventType_ERROR,
"Table manage command packet error: table ID = %d", (int)TableID);
}

if (Status >= CFE_SUCCESS)
{
CFE_EVS_SendEvent(SC_TABLE_MANAGE_INF_EID, CFE_EVS_EventType_INFORMATION, "Table manage command.");
}
}

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
Expand All @@ -664,17 +670,22 @@
/* */
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

void SC_ManageRtsTable(int32 ArrayIndex)
CFE_Status_t SC_ManageRtsTable(int32 ArrayIndex)

Check notice

Code scanning / CodeQL-coding-standard

Long function without assertion Note

All functions of more than 10 lines should have at least one assertion.
{
CFE_Status_t Status = SC_ERROR;

/* validate array index */
if (ArrayIndex >= SC_NUMBER_OF_RTS)
{
CFE_EVS_SendEvent(SC_TABLE_MANAGE_RTS_INV_INDEX_ERR_EID, CFE_EVS_EventType_ERROR,
"RTS table manage error: invalid RTS index %d", (int)ArrayIndex);
return;
}
else
{
Status = SC_ManageTable(RTS, ArrayIndex);
}

SC_ManageTable(RTS, ArrayIndex);
return Status;
}

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
Expand All @@ -683,17 +694,22 @@
/* */
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

void SC_ManageAtsTable(int32 ArrayIndex)
CFE_Status_t SC_ManageAtsTable(int32 ArrayIndex)

Check notice

Code scanning / CodeQL-coding-standard

Long function without assertion Note

All functions of more than 10 lines should have at least one assertion.
{
CFE_Status_t Status = SC_ERROR;

/* validate array index */
if (ArrayIndex >= SC_NUMBER_OF_ATS)
{
CFE_EVS_SendEvent(SC_TABLE_MANAGE_ATS_INV_INDEX_ERR_EID, CFE_EVS_EventType_ERROR,
"ATS table manage error: invalid ATS index %d", (int)ArrayIndex);
return;
}
else
{
Status = SC_ManageTable(ATS, ArrayIndex);
}

SC_ManageTable(ATS, ArrayIndex);
return Status;
}

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
Expand All @@ -702,12 +718,12 @@
/* */
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

void SC_ManageTable(SC_TableType type, int32 ArrayIndex)
CFE_Status_t SC_ManageTable(SC_TableType type, int32 ArrayIndex)

Check notice

Code scanning / CodeQL-coding-standard

Long function without assertion Note

All functions of more than 10 lines should have at least one assertion.

Check notice

Code scanning / CodeQL-coding-standard

Function too long Note

SC_ManageTable has too many lines (73, while 60 are allowed).
{
CFE_Status_t Result;
CFE_TBL_Handle_t TblHandle;
uint32 ** TblAddr;
void * TblPtrNew;
uint32 **TblAddr;
void *TblPtrNew;

switch (type)
{
Expand Down Expand Up @@ -773,4 +789,5 @@
}
}

return Result;
} /* End SC_ManageTable() */
15 changes: 12 additions & 3 deletions fsw/src/sc_cmds.h
Original file line number Diff line number Diff line change
Expand Up @@ -69,9 +69,12 @@ void SC_ManageTableCmd(const SC_ManageTableCmd_t *Cmd);
*
* \param [in] ArrayIndex index into array of RTS tables
*
* \return CFE_SUCCESS on success, a non-negative informational return
* code (e.g. CFE_TBL_INFO_UPDATED) or a (negative) error code
*
* \sa #SC_ManageTableCmd
*/
void SC_ManageRtsTable(int32 ArrayIndex);
CFE_Status_t SC_ManageRtsTable(int32 ArrayIndex);

/**
* \brief Manage pending update to an ATS table
Expand All @@ -88,9 +91,12 @@ void SC_ManageRtsTable(int32 ArrayIndex);
*
* \param [in] ArrayIndex index into array of ATS tables
*
* \return CFE_SUCCESS on success, a non-negative informational return
* code (e.g. CFE_TBL_INFO_UPDATED) or a (negative) error code
*
* \sa #SC_ManageTableCmd
*/
void SC_ManageAtsTable(int32 ArrayIndex);
CFE_Status_t SC_ManageAtsTable(int32 ArrayIndex);

/**
* \brief Manage pending update to a table
Expand All @@ -105,9 +111,12 @@ void SC_ManageAtsTable(int32 ArrayIndex);
* \par Assumptions, External Events, and Notes:
* None
*
* \return CFE_SUCCESS on success, a non-negative informational return
* code (e.g. CFE_TBL_INFO_UPDATED) or a (negative) error code
*
* \sa #SC_ManageTableCmd
*/
void SC_ManageTable(SC_TableType type, int32 ArrayIndex);
CFE_Status_t SC_ManageTable(SC_TableType type, int32 ArrayIndex);

/**
* \brief Sends out an Event message
Expand Down
7 changes: 4 additions & 3 deletions fsw/src/sc_rtsrq.c
Original file line number Diff line number Diff line change
Expand Up @@ -367,8 +367,8 @@ void SC_DisableRtsCmd(const SC_DisableRtsCmd_t *Cmd)
/* update the command status */
SC_OperData.HkPacket.Payload.CmdCtr++;

CFE_EVS_SendEvent(SC_DISABLE_RTS_DEB_EID, CFE_EVS_EventType_DEBUG, "Disabled RTS %03u",
SC_IDNUM_AS_UINT(RtsNum));
CFE_EVS_SendEvent(SC_DISABLE_RTS_INF_EID, CFE_EVS_EventType_INFORMATION,
"Disabled RTS %03u", SC_IDNUM_AS_UINT(RtsNum));
}
else
{ /* it is not a valid RTS id */
Expand Down Expand Up @@ -458,7 +458,8 @@ void SC_EnableRtsCmd(const SC_EnableRtsCmd_t *Cmd)
/* update the command status */
SC_OperData.HkPacket.Payload.CmdCtr++;

CFE_EVS_SendEvent(SC_ENABLE_RTS_DEB_EID, CFE_EVS_EventType_DEBUG, "Enabled RTS %03u", SC_IDNUM_AS_UINT(RtsNum));
CFE_EVS_SendEvent(SC_ENABLE_RTS_INF_EID, CFE_EVS_EventType_INFORMATION,
"Enabled RTS %03u", SC_IDNUM_AS_UINT(RtsNum));
}
else
{ /* it is not a valid RTS id */
Expand Down
6 changes: 4 additions & 2 deletions unit-test/sc_atsrq_tests.c
Original file line number Diff line number Diff line change
Expand Up @@ -952,7 +952,8 @@ void ContinueAtsOnFailureCmd_Test_Nominal(void)
UtAssert_BOOL_TRUE(SC_OperData.HkPacket.Payload.ContinueAtsOnFailureFlag);
UtAssert_True(SC_OperData.HkPacket.Payload.CmdCtr == 1, "SC_OperData.HkPacket.Payload.CmdCtr == 1");

UtAssert_INT32_EQ(context_CFE_EVS_SendEvent[0].EventID, SC_CONT_CMD_DEB_EID);
UtAssert_INT32_EQ(context_CFE_EVS_SendEvent[0].EventID,
SC_CONT_CMD_INF_EID);
UtAssert_STUB_COUNT(CFE_EVS_SendEvent, 1);
}

Expand All @@ -974,7 +975,8 @@ void ContinueAtsOnFailureCmd_Test_FalseState(void)
"SC_OperData.HkPacket.Payload.ContinueAtsOnFailureFlag == false");
UtAssert_True(SC_OperData.HkPacket.Payload.CmdCtr == 1, "SC_OperData.HkPacket.Payload.CmdCtr == 1");

UtAssert_INT32_EQ(context_CFE_EVS_SendEvent[0].EventID, SC_CONT_CMD_DEB_EID);
UtAssert_INT32_EQ(context_CFE_EVS_SendEvent[0].EventID,
SC_CONT_CMD_INF_EID);
UtAssert_STUB_COUNT(CFE_EVS_SendEvent, 1);
}

Expand Down
Loading
Loading