Skip to content

Commit

Permalink
Fix nasa#42, use payload structure
Browse files Browse the repository at this point in the history
Puts the CMD/TLM content in a member struct called "Payload".  This
makes it consistent with other CFE modules and provides a predictably
named member for determining the position of non-header content.
  • Loading branch information
jphickey committed Mar 22, 2023
1 parent 71fe47a commit 2f4167d
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 18 deletions.
26 changes: 21 additions & 5 deletions fsw/inc/hk_msg.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,16 +32,24 @@
*/

/**
* \brief Send Combined Output Message Command
* \brief Send Combined Output Payload
*
* This structure contains the format of the command used to inform HK to send
* the specified combined output message
*/
typedef struct
{
CFE_SB_MsgId_t OutMsgToSend; /**< \brief MsgId of combined tlm pkt to send */
} HK_SendCombinedPkt_Payload_t;

/**
* \brief Send Combined Output Message Command
*/
typedef struct
{
CFE_MSG_CommandHeader_t CommandHeader; /**< \brief Command Message Header */

CFE_SB_MsgId_t OutMsgToSend; /**< \brief MsgId of combined tlm pkt to send */
HK_SendCombinedPkt_Payload_t Payload;
} HK_SendCombinedPktCmd_t;

/**
Expand Down Expand Up @@ -80,18 +88,26 @@ typedef struct
*/

/**
* \brief HK Application housekeeping Packet
* \brief HK Application housekeeping Payload
*/
typedef struct
{
CFE_MSG_TelemetryHeader_t TelemetryHeader; /**< \brief Telemetry Message Header */

uint8 CmdCounter; /**< \brief Count of valid commands received */
uint8 ErrCounter; /**< \brief Count of invalid commands received */
uint16 Padding; /**< \brief Padding to force 32 bit alignment */
uint16 CombinedPacketsSent; /**< \brief Count of combined tlm pkts sent */
uint16 MissingDataCtr; /**< \brief Number of times missing data was detected */
CFE_ES_MemHandle_t MemPoolHandle; /**< \brief Memory pool handle used to get mempool diags */
} HK_HkTlm_Payload_t;

/**
* \brief HK Application housekeeping Packet
*/
typedef struct
{
CFE_MSG_TelemetryHeader_t TelemetryHeader; /**< \brief Telemetry Message Header */

HK_HkTlm_Payload_t Payload;
} HK_HkPacket_t;

/**\}*/
Expand Down
18 changes: 11 additions & 7 deletions fsw/src/hk_app.c
Original file line number Diff line number Diff line change
Expand Up @@ -392,9 +392,9 @@ void HK_AppPipe(const CFE_SB_Buffer_t *BufPtr)
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void HK_SendCombinedHKCmd(const CFE_SB_Buffer_t *BufPtr)
{
const HK_SendCombinedPktCmd_t *CmdPtr;
const HK_SendCombinedPkt_Payload_t *CmdPtr;

CmdPtr = (const HK_SendCombinedPktCmd_t *)BufPtr;
CmdPtr = &((const HK_SendCombinedPktCmd_t *)BufPtr)->Payload;

HK_SendCombinedHkPacket(CmdPtr->OutMsgToSend);
}
Expand All @@ -406,12 +406,16 @@ void HK_SendCombinedHKCmd(const CFE_SB_Buffer_t *BufPtr)
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void HK_HousekeepingCmd(const CFE_MSG_CommandHeader_t *Msg)
{
HK_HkTlm_Payload_t *PayloadPtr;

PayloadPtr = &HK_AppData.HkPacket.Payload;

/* copy data into housekeeping packet */
HK_AppData.HkPacket.CmdCounter = HK_AppData.CmdCounter;
HK_AppData.HkPacket.ErrCounter = HK_AppData.ErrCounter;
HK_AppData.HkPacket.MissingDataCtr = HK_AppData.MissingDataCtr;
HK_AppData.HkPacket.CombinedPacketsSent = HK_AppData.CombinedPacketsSent;
HK_AppData.HkPacket.MemPoolHandle = HK_AppData.MemPoolHandle;
PayloadPtr->CmdCounter = HK_AppData.CmdCounter;
PayloadPtr->ErrCounter = HK_AppData.ErrCounter;
PayloadPtr->MissingDataCtr = HK_AppData.MissingDataCtr;
PayloadPtr->CombinedPacketsSent = HK_AppData.CombinedPacketsSent;
PayloadPtr->MemPoolHandle = HK_AppData.MemPoolHandle;

/* Send housekeeping telemetry packet... */
CFE_SB_TimeStampMsg(CFE_MSG_PTR(HK_AppData.HkPacket.TelemetryHeader));
Expand Down
14 changes: 8 additions & 6 deletions unit-test/hk_app_tests.c
Original file line number Diff line number Diff line change
Expand Up @@ -1223,6 +1223,7 @@ void Test_HK_HousekeepingCmd(void)
CFE_MSG_CommandHeader_t DummyMsg;
uint8 call_count_CFE_SB_TimeStampMsg;
uint8 call_count_CFE_SB_TransmitMsg;
HK_HkTlm_Payload_t * PayloadPtr;

/* Setup app data values */
HK_AppData.CmdCounter = 1;
Expand All @@ -1240,12 +1241,13 @@ void Test_HK_HousekeepingCmd(void)
call_count_CFE_SB_TransmitMsg = UT_GetStubCount(UT_KEY(CFE_SB_TransmitMsg));

/* Assert */
UtAssert_INT32_EQ(HK_AppData.CmdCounter, HK_AppData.HkPacket.CmdCounter);
UtAssert_INT32_EQ(HK_AppData.ErrCounter, HK_AppData.HkPacket.ErrCounter);
UtAssert_INT32_EQ(HK_AppData.MissingDataCtr, HK_AppData.HkPacket.MissingDataCtr);
UtAssert_INT32_EQ(HK_AppData.CombinedPacketsSent, HK_AppData.HkPacket.CombinedPacketsSent);
UtAssert_True(CFE_RESOURCEID_TEST_EQUAL(HK_AppData.MemPoolHandle, HK_AppData.HkPacket.MemPoolHandle),
"CFE_RESOURCEID_TEST_EQUAL(HK_AppData.MemPoolHandle, HK_AppData.HkPacket.MemPoolHandle)");
PayloadPtr = &HK_AppData.HkPacket.Payload;
UtAssert_INT32_EQ(HK_AppData.CmdCounter, PayloadPtr->CmdCounter);
UtAssert_INT32_EQ(HK_AppData.ErrCounter, PayloadPtr->ErrCounter);
UtAssert_INT32_EQ(HK_AppData.MissingDataCtr, PayloadPtr->MissingDataCtr);
UtAssert_INT32_EQ(HK_AppData.CombinedPacketsSent, PayloadPtr->CombinedPacketsSent);
UtAssert_True(CFE_RESOURCEID_TEST_EQUAL(HK_AppData.MemPoolHandle, PayloadPtr->MemPoolHandle),
"CFE_RESOURCEID_TEST_EQUAL(HK_AppData.MemPoolHandle, PayloadPtr->MemPoolHandle)");

UtAssert_INT32_EQ(call_count_CFE_SB_TimeStampMsg, 1);
UtAssert_INT32_EQ(call_count_CFE_SB_TransmitMsg, 1);
Expand Down

0 comments on commit 2f4167d

Please sign in to comment.