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 {