diff --git a/fsw/cfe-core/src/evs/cfe_evs_log.c b/fsw/cfe-core/src/evs/cfe_evs_log.c index e5ae293d7..b8d1cc6fe 100644 --- a/fsw/cfe-core/src/evs/cfe_evs_log.c +++ b/fsw/cfe-core/src/evs/cfe_evs_log.c @@ -54,53 +54,50 @@ void EVS_AddLog (CFE_EVS_LongEventTlm_t *EVS_PktPtr) { - if (CFE_EVS_Global.EVS_TlmPkt.Payload.LogEnabled == true) - { - /* Serialize access to event log control variables */ - OS_MutSemTake(CFE_EVS_Global.EVS_SharedDataMutexID); + /* Serialize access to event log control variables */ + OS_MutSemTake(CFE_EVS_Global.EVS_SharedDataMutexID); - if ((CFE_EVS_Global.EVS_LogPtr->LogFullFlag == true) && - (CFE_EVS_Global.EVS_LogPtr->LogMode == CFE_EVS_LogMode_DISCARD)) + if ((CFE_EVS_Global.EVS_LogPtr->LogFullFlag == true) && + (CFE_EVS_Global.EVS_LogPtr->LogMode == CFE_EVS_LogMode_DISCARD)) + { + /* If log is full and in discard mode, just count the event */ + CFE_EVS_Global.EVS_LogPtr->LogOverflowCounter++; + } + else + { + if (CFE_EVS_Global.EVS_LogPtr->LogFullFlag == true) { - /* If log is full and in discard mode, just count the event */ + /* If log is full and in wrap mode, count it and store it */ CFE_EVS_Global.EVS_LogPtr->LogOverflowCounter++; } - else - { - if (CFE_EVS_Global.EVS_LogPtr->LogFullFlag == true) - { - /* If log is full and in wrap mode, count it and store it */ - CFE_EVS_Global.EVS_LogPtr->LogOverflowCounter++; - } - /* Copy the event data to the next available entry in the log */ - memcpy(&CFE_EVS_Global.EVS_LogPtr->LogEntry[CFE_EVS_Global.EVS_LogPtr->Next], - EVS_PktPtr, sizeof(*EVS_PktPtr)); + /* Copy the event data to the next available entry in the log */ + memcpy(&CFE_EVS_Global.EVS_LogPtr->LogEntry[CFE_EVS_Global.EVS_LogPtr->Next], + EVS_PktPtr, sizeof(*EVS_PktPtr)); - CFE_EVS_Global.EVS_LogPtr->Next++; + CFE_EVS_Global.EVS_LogPtr->Next++; - if (CFE_EVS_Global.EVS_LogPtr->Next >= CFE_PLATFORM_EVS_LOG_MAX) - { - /* This is important, even if we are in discard mode */ - CFE_EVS_Global.EVS_LogPtr->Next = 0; - } + if (CFE_EVS_Global.EVS_LogPtr->Next >= CFE_PLATFORM_EVS_LOG_MAX) + { + /* This is important, even if we are in discard mode */ + CFE_EVS_Global.EVS_LogPtr->Next = 0; + } - /* Log count cannot exceed the number of entries in the log */ - if (CFE_EVS_Global.EVS_LogPtr->LogCount < CFE_PLATFORM_EVS_LOG_MAX) - { - CFE_EVS_Global.EVS_LogPtr->LogCount++; + /* Log count cannot exceed the number of entries in the log */ + if (CFE_EVS_Global.EVS_LogPtr->LogCount < CFE_PLATFORM_EVS_LOG_MAX) + { + CFE_EVS_Global.EVS_LogPtr->LogCount++; - if (CFE_EVS_Global.EVS_LogPtr->LogCount == CFE_PLATFORM_EVS_LOG_MAX) - { - /* The full flag and log count are somewhat redundant */ - CFE_EVS_Global.EVS_LogPtr->LogFullFlag = true; - } + if (CFE_EVS_Global.EVS_LogPtr->LogCount == CFE_PLATFORM_EVS_LOG_MAX) + { + /* The full flag and log count are somewhat redundant */ + CFE_EVS_Global.EVS_LogPtr->LogFullFlag = true; } } - - OS_MutSemGive(CFE_EVS_Global.EVS_SharedDataMutexID); } + OS_MutSemGive(CFE_EVS_Global.EVS_SharedDataMutexID); + return; } /* End EVS_AddLog */ @@ -159,99 +156,88 @@ int32 CFE_EVS_WriteLogDataFileCmd(const CFE_EVS_WriteLogDataFileCmd_t *data) CFE_FS_Header_t LogFileHdr; char LogFilename[OS_MAX_PATH_LEN]; - if (CFE_EVS_Global.EVS_TlmPkt.Payload.LogEnabled == false) + /* Copy the commanded filename into local buffer to ensure size limitation and to allow for modification */ + CFE_SB_MessageStringGet(LogFilename, (const char *)CmdPtr->LogFilename, CFE_PLATFORM_EVS_DEFAULT_LOG_FILE, + sizeof(LogFilename), sizeof(CmdPtr->LogFilename)); + + /* Create the log file */ + Result = OS_OpenCreate(&LogFileHandle, LogFilename, OS_FILE_FLAG_CREATE | OS_FILE_FLAG_TRUNCATE, OS_WRITE_ONLY); + + if (Result < OS_SUCCESS) { - EVS_SendEvent(CFE_EVS_NO_LOGWR_EID, CFE_EVS_EventType_ERROR, - "Write Log Command: Event Log is Disabled"); - Result = CFE_EVS_FUNCTION_DISABLED; + EVS_SendEvent(CFE_EVS_ERR_CRLOGFILE_EID, CFE_EVS_EventType_ERROR, + "Write Log File Command Error: OS_OpenCreate = 0x%08X, filename = %s", + (unsigned int)Result, LogFilename); } else { - /* Copy the commanded filename into local buffer to ensure size limitation and to allow for modification */ - CFE_SB_MessageStringGet(LogFilename, (const char *)CmdPtr->LogFilename, CFE_PLATFORM_EVS_DEFAULT_LOG_FILE, - sizeof(LogFilename), sizeof(CmdPtr->LogFilename)); + /* Result will be overridden if everything works */ + Result = CFE_EVS_FILE_WRITE_ERROR; - /* Create the log file */ - Result = OS_OpenCreate(&LogFileHandle, LogFilename, OS_FILE_FLAG_CREATE | OS_FILE_FLAG_TRUNCATE, OS_WRITE_ONLY); + /* Initialize cFE file header for an event log file */ + CFE_FS_InitHeader(&LogFileHdr, "cFE EVS Log File", CFE_FS_SubType_EVS_EVENTLOG); - if (Result < OS_SUCCESS) - { - EVS_SendEvent(CFE_EVS_ERR_CRLOGFILE_EID, CFE_EVS_EventType_ERROR, - "Write Log File Command Error: OS_OpenCreate = 0x%08X, filename = %s", - (unsigned int)Result, LogFilename); + /* Write the file header to the log file */ + BytesWritten = CFE_FS_WriteHeader(LogFileHandle, &LogFileHdr); - } - else + if (BytesWritten == sizeof(LogFileHdr)) { - /* Result will be overridden if everything works */ - Result = CFE_EVS_FILE_WRITE_ERROR; - - /* Initialize cFE file header for an event log file */ - CFE_FS_InitHeader(&LogFileHdr, "cFE EVS Log File", CFE_FS_SubType_EVS_EVENTLOG); - - /* Write the file header to the log file */ - BytesWritten = CFE_FS_WriteHeader(LogFileHandle, &LogFileHdr); + /* Serialize access to event log control variables */ + OS_MutSemTake(CFE_EVS_Global.EVS_SharedDataMutexID); - if (BytesWritten == sizeof(LogFileHdr)) + /* Is the log full? -- Doesn't matter if wrap mode is enabled */ + if (CFE_EVS_Global.EVS_LogPtr->LogCount == CFE_PLATFORM_EVS_LOG_MAX) + { + /* Start with log entry that will be overwritten next (oldest) */ + LogIndex = CFE_EVS_Global.EVS_LogPtr->Next; + } + else { - /* Serialize access to event log control variables */ - OS_MutSemTake(CFE_EVS_Global.EVS_SharedDataMutexID); + /* Start with the first entry in the log (oldest) */ + LogIndex = 0; + } - /* Is the log full? -- Doesn't matter if wrap mode is enabled */ - if (CFE_EVS_Global.EVS_LogPtr->LogCount == CFE_PLATFORM_EVS_LOG_MAX) - { - /* Start with log entry that will be overwritten next (oldest) */ - LogIndex = CFE_EVS_Global.EVS_LogPtr->Next; - } - else - { - /* Start with the first entry in the log (oldest) */ - LogIndex = 0; - } + /* Write all the "in-use" event log entries to the file */ + for (i = 0; i < CFE_EVS_Global.EVS_LogPtr->LogCount; i++) + { + BytesWritten = OS_write(LogFileHandle, + &CFE_EVS_Global.EVS_LogPtr->LogEntry[LogIndex], + sizeof(CFE_EVS_Global.EVS_LogPtr->LogEntry[LogIndex])); - /* Write all the "in-use" event log entries to the file */ - for (i = 0; i < CFE_EVS_Global.EVS_LogPtr->LogCount; i++) + if (BytesWritten == sizeof(CFE_EVS_Global.EVS_LogPtr->LogEntry[LogIndex])) { - BytesWritten = OS_write(LogFileHandle, - &CFE_EVS_Global.EVS_LogPtr->LogEntry[LogIndex], - sizeof(CFE_EVS_Global.EVS_LogPtr->LogEntry[LogIndex])); + LogIndex++; - if (BytesWritten == sizeof(CFE_EVS_Global.EVS_LogPtr->LogEntry[LogIndex])) + if (LogIndex >= CFE_PLATFORM_EVS_LOG_MAX) { - LogIndex++; - - if (LogIndex >= CFE_PLATFORM_EVS_LOG_MAX) - { - LogIndex = 0; - } - } - else - { - break; + LogIndex = 0; } } - - OS_MutSemGive(CFE_EVS_Global.EVS_SharedDataMutexID); - - /* Process command handler success result */ - if (i == CFE_EVS_Global.EVS_LogPtr->LogCount) - { - EVS_SendEvent(CFE_EVS_WRLOG_EID, CFE_EVS_EventType_DEBUG, - "Write Log File Command: %d event log entries written to %s", - (int)CFE_EVS_Global.EVS_LogPtr->LogCount, LogFilename); - Result = CFE_SUCCESS; - } else { - EVS_SendEvent(CFE_EVS_ERR_WRLOGFILE_EID, CFE_EVS_EventType_ERROR, - "Write Log File Command Error: OS_write = 0x%08X, filename = %s", - (unsigned int)BytesWritten, LogFilename); + break; } } - OS_close(LogFileHandle); + OS_MutSemGive(CFE_EVS_Global.EVS_SharedDataMutexID); + + /* Process command handler success result */ + if (i == CFE_EVS_Global.EVS_LogPtr->LogCount) + { + EVS_SendEvent(CFE_EVS_WRLOG_EID, CFE_EVS_EventType_DEBUG, + "Write Log File Command: %d event log entries written to %s", + (int)CFE_EVS_Global.EVS_LogPtr->LogCount, LogFilename); + Result = CFE_SUCCESS; + } + else + { + EVS_SendEvent(CFE_EVS_ERR_WRLOGFILE_EID, CFE_EVS_EventType_ERROR, + "Write Log File Command Error: OS_write = 0x%08X, filename = %s", + (unsigned int)BytesWritten, LogFilename); + } } + OS_close(LogFileHandle); } return(Result); @@ -274,35 +260,25 @@ int32 CFE_EVS_SetLogModeCmd(const CFE_EVS_SetLogModeCmd_t *data) const CFE_EVS_SetLogMode_Payload_t *CmdPtr = &data->Payload; int32 Status; - if (CFE_EVS_Global.EVS_TlmPkt.Payload.LogEnabled == true) + if ((CmdPtr->LogMode == CFE_EVS_LogMode_OVERWRITE) || (CmdPtr->LogMode == CFE_EVS_LogMode_DISCARD)) { - if ((CmdPtr->LogMode == CFE_EVS_LogMode_OVERWRITE) || (CmdPtr->LogMode == CFE_EVS_LogMode_DISCARD)) - { - /* Serialize access to event log control variables */ - OS_MutSemTake(CFE_EVS_Global.EVS_SharedDataMutexID); - CFE_EVS_Global.EVS_LogPtr->LogMode = CmdPtr->LogMode; - OS_MutSemGive(CFE_EVS_Global.EVS_SharedDataMutexID); + /* Serialize access to event log control variables */ + OS_MutSemTake(CFE_EVS_Global.EVS_SharedDataMutexID); + CFE_EVS_Global.EVS_LogPtr->LogMode = CmdPtr->LogMode; + OS_MutSemGive(CFE_EVS_Global.EVS_SharedDataMutexID); - EVS_SendEvent(CFE_EVS_LOGMODE_EID, CFE_EVS_EventType_DEBUG, - "Set Log Mode Command: Log Mode = %d", (int)CmdPtr->LogMode); + EVS_SendEvent(CFE_EVS_LOGMODE_EID, CFE_EVS_EventType_DEBUG, + "Set Log Mode Command: Log Mode = %d", (int)CmdPtr->LogMode); - Status = CFE_SUCCESS; - } - else - { - Status = CFE_EVS_INVALID_PARAMETER; - EVS_SendEvent(CFE_EVS_ERR_LOGMODE_EID, CFE_EVS_EventType_ERROR, - "Set Log Mode Command Error: Log Mode = %d", (int)CmdPtr->LogMode); - } + Status = CFE_SUCCESS; } else { - Status = CFE_EVS_FUNCTION_DISABLED; - EVS_SendEvent(CFE_EVS_NO_LOGSET_EID, CFE_EVS_EventType_ERROR, - "Set Log Mode Command: Event Log is Disabled"); + Status = CFE_EVS_INVALID_PARAMETER; + EVS_SendEvent(CFE_EVS_ERR_LOGMODE_EID, CFE_EVS_EventType_ERROR, + "Set Log Mode Command Error: Log Mode = %d", (int)CmdPtr->LogMode); } - return Status; } /* End CFE_EVS_SetLogModeCmd */ diff --git a/fsw/cfe-core/src/evs/cfe_evs_task.c b/fsw/cfe-core/src/evs/cfe_evs_task.c index 152b8c133..ce6efb091 100644 --- a/fsw/cfe-core/src/evs/cfe_evs_task.c +++ b/fsw/cfe-core/src/evs/cfe_evs_task.c @@ -49,6 +49,8 @@ /* Global Data */ CFE_EVS_Global_t CFE_EVS_Global; +/* Defines */ +#define CFE_EVS_PANIC_DELAY 500 /**< \brief Task delay before PSP panic */ /* ** Local function prototypes. @@ -94,9 +96,16 @@ int32 CFE_EVS_EarlyInit ( void ) /* Get a pointer to the CFE reset area from the BSP */ Status = CFE_PSP_GetResetArea(&resetAreaAddr, &resetAreaSize); + /* Panic on error */ if (Status != CFE_PSP_SUCCESS) { + /* Can't log evs messages without the reset area */ CFE_ES_WriteToSysLog("EVS call to CFE_PSP_GetResetArea failed, RC=0x%08x\n", (unsigned int)Status); + + /* Delay to allow message to be read */ + OS_TaskDelay(CFE_EVS_PANIC_DELAY); + + CFE_PSP_Panic(CFE_PSP_PANIC_MEMORY_ALLOC); } else if (resetAreaSize < sizeof(CFE_ES_ResetData_t)) { @@ -104,8 +113,18 @@ int32 CFE_EVS_EarlyInit ( void ) Status = CFE_EVS_RESET_AREA_POINTER; CFE_ES_WriteToSysLog("Unexpected size from CFE_PSP_GetResetArea: expected = 0x%08lX, actual = 0x%08lX\n", (unsigned long)sizeof(CFE_ES_ResetData_t), (unsigned long)resetAreaSize); + + /* Delay to allow message to be read */ + OS_TaskDelay(CFE_EVS_PANIC_DELAY); + + CFE_PSP_Panic(CFE_PSP_PANIC_MEMORY_ALLOC); } else + { + Status = CFE_SUCCESS; + } + + if (Status == CFE_SUCCESS) { CFE_EVS_ResetDataPtr = (CFE_ES_ResetData_t *)resetAreaAddr; /* Save pointer to the EVS portion of the CFE reset area */ @@ -117,47 +136,58 @@ int32 CFE_EVS_EarlyInit ( void ) if (Status != OS_SUCCESS) { CFE_ES_WriteToSysLog("EVS call to OS_MutSemCreate failed, RC=0x%08x\n", (unsigned int)Status); + + /* Delay to allow message to be read */ + OS_TaskDelay(CFE_EVS_PANIC_DELAY); + + CFE_PSP_Panic(CFE_PSP_PANIC_STARTUP_SEM); } else { - /* Enable access to the EVS event log */ - CFE_EVS_Global.EVS_TlmPkt.Payload.LogEnabled = true; + Status = CFE_SUCCESS; + } + } - /* Clear event log if power-on reset or bad contents */ - if (CFE_ES_GetResetType(NULL) == CFE_PSP_RST_TYPE_POWERON) - { - CFE_ES_WriteToSysLog("Event Log cleared following power-on reset\n"); - EVS_ClearLog(); - CFE_EVS_Global.EVS_LogPtr->LogMode = CFE_PLATFORM_EVS_DEFAULT_LOG_MODE; - } - else if (((CFE_EVS_Global.EVS_LogPtr->LogMode != CFE_EVS_LogMode_OVERWRITE) && - (CFE_EVS_Global.EVS_LogPtr->LogMode != CFE_EVS_LogMode_DISCARD)) || - ((CFE_EVS_Global.EVS_LogPtr->LogFullFlag != false) && - (CFE_EVS_Global.EVS_LogPtr->LogFullFlag != true)) || - (CFE_EVS_Global.EVS_LogPtr->Next >= CFE_PLATFORM_EVS_LOG_MAX)) - { - CFE_ES_WriteToSysLog("Event Log cleared, n=%d, c=%d, f=%d, m=%d, o=%d\n", - (int)CFE_EVS_Global.EVS_LogPtr->Next, - (int)CFE_EVS_Global.EVS_LogPtr->LogCount, - (int)CFE_EVS_Global.EVS_LogPtr->LogFullFlag, - (int)CFE_EVS_Global.EVS_LogPtr->LogMode, - (int)CFE_EVS_Global.EVS_LogPtr->LogOverflowCounter); - EVS_ClearLog(); - CFE_EVS_Global.EVS_LogPtr->LogMode = CFE_PLATFORM_EVS_DEFAULT_LOG_MODE; - } - else - { - CFE_ES_WriteToSysLog("Event Log restored, n=%d, c=%d, f=%d, m=%d, o=%d\n", - (int)CFE_EVS_Global.EVS_LogPtr->Next, - (int)CFE_EVS_Global.EVS_LogPtr->LogCount, - (int)CFE_EVS_Global.EVS_LogPtr->LogFullFlag, - (int)CFE_EVS_Global.EVS_LogPtr->LogMode, - (int)CFE_EVS_Global.EVS_LogPtr->LogOverflowCounter); - } + if (Status == CFE_SUCCESS) + { + + /* Report log as enabled */ + CFE_EVS_Global.EVS_TlmPkt.Payload.LogEnabled = true; + + /* Clear event log if power-on reset or bad contents */ + if (CFE_ES_GetResetType(NULL) == CFE_PSP_RST_TYPE_POWERON) + { + CFE_ES_WriteToSysLog("Event Log cleared following power-on reset\n"); + EVS_ClearLog(); + CFE_EVS_Global.EVS_LogPtr->LogMode = CFE_PLATFORM_EVS_DEFAULT_LOG_MODE; + } + else if (((CFE_EVS_Global.EVS_LogPtr->LogMode != CFE_EVS_LogMode_OVERWRITE) && + (CFE_EVS_Global.EVS_LogPtr->LogMode != CFE_EVS_LogMode_DISCARD)) || + ((CFE_EVS_Global.EVS_LogPtr->LogFullFlag != false) && + (CFE_EVS_Global.EVS_LogPtr->LogFullFlag != true)) || + (CFE_EVS_Global.EVS_LogPtr->Next >= CFE_PLATFORM_EVS_LOG_MAX)) + { + CFE_ES_WriteToSysLog("Event Log cleared, n=%d, c=%d, f=%d, m=%d, o=%d\n", + (int)CFE_EVS_Global.EVS_LogPtr->Next, + (int)CFE_EVS_Global.EVS_LogPtr->LogCount, + (int)CFE_EVS_Global.EVS_LogPtr->LogFullFlag, + (int)CFE_EVS_Global.EVS_LogPtr->LogMode, + (int)CFE_EVS_Global.EVS_LogPtr->LogOverflowCounter); + EVS_ClearLog(); + CFE_EVS_Global.EVS_LogPtr->LogMode = CFE_PLATFORM_EVS_DEFAULT_LOG_MODE; + } + else + { + CFE_ES_WriteToSysLog("Event Log restored, n=%d, c=%d, f=%d, m=%d, o=%d\n", + (int)CFE_EVS_Global.EVS_LogPtr->Next, + (int)CFE_EVS_Global.EVS_LogPtr->LogCount, + (int)CFE_EVS_Global.EVS_LogPtr->LogFullFlag, + (int)CFE_EVS_Global.EVS_LogPtr->LogMode, + (int)CFE_EVS_Global.EVS_LogPtr->LogOverflowCounter); } } - return(CFE_SUCCESS); + return(Status); } /* End CFE_EVS_EarlyInit */ @@ -658,20 +688,8 @@ int32 CFE_EVS_NoopCmd(const CFE_EVS_NoopCmd_t *data) */ int32 CFE_EVS_ClearLogCmd(const CFE_EVS_ClearLogCmd_t *data) { - int32 Status; - - if (CFE_EVS_Global.EVS_TlmPkt.Payload.LogEnabled == true) - { - EVS_ClearLog(); - Status = CFE_SUCCESS; - } - else - { - EVS_SendEvent(CFE_EVS_NO_LOGCLR_EID, CFE_EVS_EventType_ERROR, - "Clear Log Command: Event Log is Disabled"); - Status = CFE_EVS_FUNCTION_DISABLED; - } - return Status; + EVS_ClearLog(); + return CFE_SUCCESS; } /* @@ -690,13 +708,10 @@ int32 CFE_EVS_ReportHousekeepingCmd (const CFE_MSG_CommandHeader_t *data) EVS_AppData_t *AppDataPtr; CFE_EVS_AppTlmData_t *AppTlmDataPtr; - if (CFE_EVS_Global.EVS_TlmPkt.Payload.LogEnabled == true) - { - /* Copy hk variables that are maintained in the event log */ - CFE_EVS_Global.EVS_TlmPkt.Payload.LogFullFlag = CFE_EVS_Global.EVS_LogPtr->LogFullFlag; - CFE_EVS_Global.EVS_TlmPkt.Payload.LogMode = CFE_EVS_Global.EVS_LogPtr->LogMode; - CFE_EVS_Global.EVS_TlmPkt.Payload.LogOverflowCounter = CFE_EVS_Global.EVS_LogPtr->LogOverflowCounter; - } + /* Copy hk variables that are maintained in the event log */ + CFE_EVS_Global.EVS_TlmPkt.Payload.LogFullFlag = CFE_EVS_Global.EVS_LogPtr->LogFullFlag; + CFE_EVS_Global.EVS_TlmPkt.Payload.LogMode = CFE_EVS_Global.EVS_LogPtr->LogMode; + CFE_EVS_Global.EVS_TlmPkt.Payload.LogOverflowCounter = CFE_EVS_Global.EVS_LogPtr->LogOverflowCounter; /* Write event state data for registered apps to telemetry packet */ AppDataPtr = CFE_EVS_Global.AppData; diff --git a/fsw/cfe-core/src/inc/cfe_error.h b/fsw/cfe-core/src/inc/cfe_error.h index 0173faaf7..657bbc98b 100644 --- a/fsw/cfe-core/src/inc/cfe_error.h +++ b/fsw/cfe-core/src/inc/cfe_error.h @@ -263,15 +263,6 @@ typedef int32 CFE_Status_t; */ #define CFE_EVS_INVALID_PARAMETER ((CFE_Status_t)0xc2000008) -/** - * @brief Function Disabled - * - * EVS command sent that requires a feature currently turned off - * This is to differentiate between "NOT_IMPLEMENTED" where the - * feature IS implemented but it is disabled at runtime. - */ -#define CFE_EVS_FUNCTION_DISABLED ((CFE_Status_t)0xc2000009) - /** * @brief Not Implemented * diff --git a/fsw/cfe-core/src/inc/cfe_evs_events.h b/fsw/cfe-core/src/inc/cfe_evs_events.h index 5c3b0af93..20d6b1fbf 100644 --- a/fsw/cfe-core/src/inc/cfe_evs_events.h +++ b/fsw/cfe-core/src/inc/cfe_evs_events.h @@ -533,51 +533,6 @@ **/ #define CFE_EVS_WRLOG_EID 33 -/** \brief 'Set Log Mode Command: Event Log is Disabled' -** \event 'Set Log Mode Command: Event Log is Disabled' -** -** \par Type: ERROR -** -** \par Cause: -** -** This event message is generated upon receipt of a "Set Log Mode" -** command when the use of the Event Log has been disabled. The EVS task -** must succeed during task initialization in acquiring a pointer to -** the cFE reset area and in the creation of a serializing semaphore to -** control access to the Event Log. -**/ -#define CFE_EVS_NO_LOGSET_EID 34 - -/** \brief 'Clear Log Command: Event Log is Disabled' -** \event 'Clear Log Command: Event Log is Disabled' -** -** \par Type: ERROR -** -** \par Cause: -** -** This event message is generated upon receipt of a "Clear Log" -** command when the use of the Event Log has been disabled. The EVS task -** must succeed during task initialization in acquiring a pointer to -** the cFE reset area and in the creation of a serializing semaphore to -** control access to the Event Log. -**/ -#define CFE_EVS_NO_LOGCLR_EID 35 - -/** \brief 'Write Log Command: Event Log is Disabled' -** \event 'Write Log Command: Event Log is Disabled' -** -** \par Type: ERROR -** -** \par Cause: -** -** This event message is generated upon receipt of a "Write Log" -** command when the use of the Event Log has been disabled. The EVS task -** must succeed during task initialization in acquiring a pointer to -** the cFE reset area and in the creation of a serializing semaphore to -** control access to the Event Log. -**/ -#define CFE_EVS_NO_LOGWR_EID 36 - /** \brief 'Add Filter Command:AppName = \%s, EventID = 0x\%08x is already registered for filtering' ** \event 'Add Filter Command:AppName = \%s, EventID = 0x\%08x is already registered for filtering' ** diff --git a/fsw/cfe-core/unit-test/evs_UT.c b/fsw/cfe-core/unit-test/evs_UT.c index 08ae7b5f7..4e03b4857 100644 --- a/fsw/cfe-core/unit-test/evs_UT.c +++ b/fsw/cfe-core/unit-test/evs_UT.c @@ -419,6 +419,17 @@ void Test_Init(void) "CFE_EVS_EarlyInit", "Unexpected size returned by CFE_PSP_GetResetArea"); + /* Repeat sucessful initialization to configure log for later references */ + UT_InitData(); + UT_SetSizeofESResetArea(sizeof(CFE_ES_ResetData_t)); + UT_SetDeferredRetcode(UT_KEY(OS_MutSemCreate), 1, OS_SUCCESS); + UT_SetDeferredRetcode(UT_KEY(CFE_ES_GetResetType), 1, CFE_PSP_RST_TYPE_POWERON); + CFE_EVS_EarlyInit(); + UT_Report(__FILE__, __LINE__, + UT_SyslogIsInHistory(EVS_SYSLOG_MSGS[4]), + "CFE_EVS_EarlyInit", + "Early initialization successful"); + /* Test task initialization where the application registration fails */ UT_InitData(); UT_SetDeferredRetcode(UT_KEY(CFE_ES_RegisterApp), 1, -1); @@ -1227,20 +1238,11 @@ void Test_Logging(void) CFE_EVS_Global.EVS_TlmPkt.Payload.MessageFormatMode = CFE_EVS_MsgFormat_LONG; - /* Test setting the logging mode with logging disabled */ + /* Initialize */ UT_InitData(); - CFE_EVS_Global.EVS_TlmPkt.Payload.LogEnabled = false; memset(&CmdBuf, 0, sizeof(CmdBuf)); - CmdBuf.modecmd.Payload.LogMode = 0xff; - UT_EVS_DoDispatchCheckEvents(&CmdBuf.modecmd, sizeof(CmdBuf.modecmd), - UT_TPID_CFE_EVS_CMD_SET_LOG_MODE_CC, - &UT_EVS_EventBuf); - UT_Report(__FILE__, __LINE__, - UT_EVS_EventBuf.EventID == CFE_EVS_NO_LOGSET_EID, - "CFE_EVS_SetLoggingModeCmd", - "Set log mode command: event log disabled"); - /* Re-enable logging and set conditions to allow complete code coverage */ + /* Enable logging and set conditions to allow complete code coverage */ CFE_EVS_Global.EVS_TlmPkt.Payload.LogEnabled = true; UT_SetSizeofESResetArea(sizeof(CFE_ES_ResetData_t)); UT_SetDeferredRetcode(UT_KEY(OS_MutSemCreate), 1, OS_SUCCESS); @@ -1303,30 +1305,9 @@ void Test_Logging(void) "CFE_EVS_SetLogModeCmd", "Log overfill event (overwrite mode)"); - /* Test writing to the log while it is disabled */ - UT_InitData(); - CFE_EVS_Global.EVS_TlmPkt.Payload.LogEnabled = false; - memset(&CmdBuf, 0, sizeof(CmdBuf)); - UT_EVS_DoDispatchCheckEvents(&CmdBuf.logfilecmd, sizeof(CmdBuf.logfilecmd), - UT_TPID_CFE_EVS_CMD_WRITE_LOG_DATA_FILE_CC, - &UT_EVS_EventBuf); - UT_Report(__FILE__, __LINE__, - UT_EVS_EventBuf.EventID == CFE_EVS_NO_LOGWR_EID, - "CFE_EVS_WriteLogDataFileCmd", - "Write log command with event log disabled"); - - /* Test clearing the log while it is disabled*/ - UT_InitData(); - UT_EVS_DoDispatchCheckEvents(&CmdBuf.cmd, sizeof(CmdBuf.cmd), - UT_TPID_CFE_EVS_CMD_CLEAR_LOG_CC, - &UT_EVS_EventBuf); - UT_Report(__FILE__, __LINE__, - UT_EVS_EventBuf.EventID == CFE_EVS_NO_LOGCLR_EID, - "EVS_ClearLog", - "Clear log command with event log disabled"); - /* Test sending a no op command */ UT_InitData(); + memset(&CmdBuf, 0, sizeof(CmdBuf)); UT_EVS_DoDispatchCheckEvents(&CmdBuf.cmd, sizeof(CmdBuf.cmd), UT_TPID_CFE_EVS_CMD_NOOP_CC, &UT_EVS_EventBuf);