From 2f4167dd236bf879a08842d6d29ff13c4f66c9c0 Mon Sep 17 00:00:00 2001 From: Joseph Hickey Date: Wed, 22 Mar 2023 11:37:58 -0400 Subject: [PATCH] Fix #42, use payload structure 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. --- fsw/inc/hk_msg.h | 26 +++++++++++++++++++++----- fsw/src/hk_app.c | 18 +++++++++++------- unit-test/hk_app_tests.c | 14 ++++++++------ 3 files changed, 40 insertions(+), 18 deletions(-) diff --git a/fsw/inc/hk_msg.h b/fsw/inc/hk_msg.h index a654a44..91d518a 100644 --- a/fsw/inc/hk_msg.h +++ b/fsw/inc/hk_msg.h @@ -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; /** @@ -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; /**\}*/ diff --git a/fsw/src/hk_app.c b/fsw/src/hk_app.c index d412eb4..ea3ab7d 100644 --- a/fsw/src/hk_app.c +++ b/fsw/src/hk_app.c @@ -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); } @@ -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)); diff --git a/unit-test/hk_app_tests.c b/unit-test/hk_app_tests.c index 9924a93..c855115 100644 --- a/unit-test/hk_app_tests.c +++ b/unit-test/hk_app_tests.c @@ -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; @@ -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);