diff --git a/config/default_mm_msgdefs.h b/config/default_mm_msgdefs.h
index d1b551d..73f4e8a 100644
--- a/config/default_mm_msgdefs.h
+++ b/config/default_mm_msgdefs.h
@@ -168,6 +168,26 @@ typedef struct
applicable */
} MM_HkTlm_Payload_t;
+/**
+ * \brief Peek Packet Payload
+ */
+typedef struct
+{
+ MM_MemType_Enum_t MemType; /**< \brief Memory type */
+ uint32 DataValue; /**< \brief Data from peek */
+ MM_MemAddress_t Address; /**< \brief Fully resolved address */
+ MM_MemSize_t BytesProcessed; /**< \brief Bytes processed */
+} MM_PeekPacket_Payload_t;
+
+/**
+ * \brief Symbol Lookup Packet Payload
+ */
+typedef struct
+{
+ char SymName[CFE_MISSION_MAX_API_LEN]; /**< \brief Symbol name */
+ MM_MemAddress_t Address; /**< \brief Fully resolved address */
+} MM_SymLookupPacket_Payload_t;
+
#endif /* DEFAULT_MM_MSGDEFS_H */
/**\}*/
diff --git a/config/default_mm_msgids.h b/config/default_mm_msgids.h
index 21f281c..17bc710 100644
--- a/config/default_mm_msgids.h
+++ b/config/default_mm_msgids.h
@@ -49,7 +49,9 @@
* \{
*/
-#define MM_HK_TLM_MID MM_TLM_PLATFORM_MIDVAL(HK_TLM)
+#define MM_HK_TLM_MID MM_TLM_PLATFORM_MIDVAL(HK_TLM)
+#define MM_PEEK_TLM_MID MM_TLM_PLATFORM_MIDVAL(PEEK_TLM)
+#define MM_SYM_LOOKUP_TLM_MID MM_TLM_PLATFORM_MIDVAL(SYM_LOOKUP_TLM)
#endif /* DEFAULT_MM_MSGIDS_H */
diff --git a/config/default_mm_msgstruct.h b/config/default_mm_msgstruct.h
index ffc145b..0373a6c 100644
--- a/config/default_mm_msgstruct.h
+++ b/config/default_mm_msgstruct.h
@@ -193,6 +193,24 @@ typedef struct
CFE_MSG_TelemetryHeader_t TelemetryHeader;
} MM_SendHkCmd_t;
+/**
+ * \brief Symbol Lookup Packet Structure
+ */
+typedef struct
+{
+ CFE_MSG_TelemetryHeader_t TelemetryHeader; /**< \brief Telemetry header */
+ MM_SymLookupPacket_Payload_t Payload; /**< \brief Symbol Lookup Packet Payload */
+} MM_SymLookupPacket_t;
+
+/**
+ * \brief Peek Packet Structure
+ */
+typedef struct
+{
+ CFE_MSG_TelemetryHeader_t TelemetryHeader; /**< \brief Telemetry header */
+ MM_PeekPacket_Payload_t Payload; /**< \brief Peek Packet Payload */
+} MM_PeekPacket_t;
+
#endif /* DEFAULT_MM_MSGSTRUCT_H */
/**\}*/
\ No newline at end of file
diff --git a/eds/mm.xml b/eds/mm.xml
index 2064f1c..781a8d5 100644
--- a/eds/mm.xml
+++ b/eds/mm.xml
@@ -209,6 +209,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -344,6 +360,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -366,6 +394,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -373,12 +413,16 @@
+
+
+
+
diff --git a/fsw/inc/mm_topicids.h b/fsw/inc/mm_topicids.h
index e4d004b..43767ca 100644
--- a/fsw/inc/mm_topicids.h
+++ b/fsw/inc/mm_topicids.h
@@ -32,4 +32,10 @@
#define MM_MISSION_HK_TLM_TOPICID MM_MISSION_TIDVAL(HK_TLM)
#define DEFAULT_MM_MISSION_HK_TLM_TOPICID 0x87
+#define MM_MISSION_PEEK_TLM_TOPICID MM_MISSION_TIDVAL(PEEK_TLM)
+#define DEFAULT_MM_MISSION_PEEK_TLM_TOPICID 0x88
+
+#define MM_MISSION_SYM_LOOKUP_TLM_TOPICID MM_MISSION_TIDVAL(SYM_LOOKUP_TLM)
+#define DEFAULT_MM_MISSION_SYM_LOOKUP_TLM_TOPICID 0x89
+
#endif /* MM_TOPICIDS_H */
\ No newline at end of file
diff --git a/fsw/src/mm_app.c b/fsw/src/mm_app.c
index 3f518d4..ae003e2 100644
--- a/fsw/src/mm_app.c
+++ b/fsw/src/mm_app.c
@@ -166,6 +166,20 @@ CFE_Status_t MM_AppInit(void)
*/
CFE_MSG_Init(CFE_MSG_PTR(MM_AppData.HkTlm.TelemetryHeader), CFE_SB_ValueToMsgId(MM_HK_TLM_MID), sizeof(MM_HkTlm_t));
+ /*
+ ** Initialize the local peek telemetry packet (clear user data area)
+ */
+ CFE_MSG_Init(CFE_MSG_PTR(MM_AppData.PeekPacket.TelemetryHeader),
+ CFE_SB_ValueToMsgId(MM_PEEK_TLM_MID),
+ sizeof(MM_PeekPacket_t));
+
+ /*
+ ** Initialize the local symbol lookup telemetry packet (clear user data area)
+ */
+ CFE_MSG_Init(CFE_MSG_PTR(MM_AppData.SymLookupPacket.TelemetryHeader),
+ CFE_SB_ValueToMsgId(MM_SYM_LOOKUP_TLM_MID),
+ sizeof(MM_SymLookupPacket_t));
+
/*
** Create Software Bus message pipe
*/
diff --git a/fsw/src/mm_app.h b/fsw/src/mm_app.h
index bfd0566..8fe0959 100644
--- a/fsw/src/mm_app.h
+++ b/fsw/src/mm_app.h
@@ -59,7 +59,9 @@
*/
typedef struct
{
- MM_HkTlm_t HkTlm; /**< \brief Housekeeping telemetry packet */
+ MM_HkTlm_t HkTlm; /**< \brief Housekeeping telemetry packet */
+ MM_SymLookupPacket_t SymLookupPacket; /**< \brief Symbol lookup telemetry packet */
+ MM_PeekPacket_t PeekPacket; /**< \brief Memory peek telemetry packet */
CFE_SB_PipeId_t CmdPipe; /**< \brief Command pipe ID */
diff --git a/fsw/src/mm_cmds.c b/fsw/src/mm_cmds.c
index c614790..3377cdc 100644
--- a/fsw/src/mm_cmds.c
+++ b/fsw/src/mm_cmds.c
@@ -153,6 +153,15 @@ CFE_Status_t MM_LookupSymCmd(const MM_LookupSymCmd_t *Msg)
"Symbol Lookup Command: Name = '%s' Addr = %p",
SymName,
(void *)ResolvedAddr);
+
+ /* Update Symbol Look Up Tlm */
+ strncpy(MM_AppData.SymLookupPacket.Payload.SymName,
+ SymName,
+ sizeof(MM_AppData.SymLookupPacket.Payload.SymName));
+
+ MM_AppData.SymLookupPacket.Payload.Address = ResolvedAddr;
+ CFE_SB_TimeStampMsg(CFE_MSG_PTR(MM_AppData.SymLookupPacket.TelemetryHeader));
+ CFE_SB_TransmitMsg(CFE_MSG_PTR(MM_AppData.SymLookupPacket.TelemetryHeader), true);
}
else
{
diff --git a/fsw/src/mm_dump.c b/fsw/src/mm_dump.c
index a419fca..44d71d2 100644
--- a/fsw/src/mm_dump.c
+++ b/fsw/src/mm_dump.c
@@ -118,6 +118,15 @@ int32 MM_PeekMem(const MM_PeekCmd_t *CmdPtr, cpuaddr SrcAddress)
(void *)SrcAddress,
(unsigned int)DataSize,
(unsigned int)DataValue);
+
+ /* Update Peek TLM Packet */
+ MM_AppData.PeekPacket.Payload.MemType = CmdPtr->Payload.MemType;
+ MM_AppData.PeekPacket.Payload.Address = SrcAddress;
+ MM_AppData.PeekPacket.Payload.BytesProcessed = BytesProcessed;
+ MM_AppData.PeekPacket.Payload.DataValue = DataValue;
+
+ CFE_SB_TimeStampMsg(CFE_MSG_PTR(MM_AppData.PeekPacket.TelemetryHeader));
+ CFE_SB_TransmitMsg(CFE_MSG_PTR(MM_AppData.PeekPacket.TelemetryHeader), true);
}
else
{