nasa / cFE

The Core Flight System (cFS) Core Flight Executive (cFE)
Apache License 2.0
409 stars 202 forks source link

Refactor common code out of `CFE_EVS_ResetFilter` and `CFE_EVS_ResetAllFilters` #1399

Open skliper opened 3 years ago

skliper commented 3 years ago

Is your feature request related to a problem? Please describe. Common code in the reset filter related APIs is duplicated

Describe the solution you'd like Refactor to reduce duplication.

Describe alternatives you've considered None

Additional context Code review

Requester Info Jacob Hageman - NASA/GSFC

thnkslprpt commented 1 year ago

This works fine - although I don't know if it's really worth adding this helper function to remove such a small amount of common code from only 2 locations...

int32 EVS_ResetFilterVerifyCallerId(EVS_AppData_t **AppDataPtr, CFE_ES_AppId_t *AppID)
{
    int32 Status;

    /* Query and verify the caller's AppID */
    Status = EVS_GetCurrentContext(AppDataPtr, AppID);
    if (Status == CFE_SUCCESS)
    {
        if (!EVS_AppDataIsMatch(*AppDataPtr, *AppID))
        {
            Status = CFE_EVS_APP_NOT_REGISTERED;
        }
    }

    return Status;
}

int32 CFE_EVS_ResetFilter(uint16 EventID)
{
    int32            Status;
    EVS_BinFilter_t *FilterPtr = NULL;
    CFE_ES_AppId_t   AppID;
    EVS_AppData_t *  AppDataPtr;

    Status = EVS_ResetFilterVerifyCallerId(&AppDataPtr, &AppID);

    if (Status == CFE_SUCCESS)
    {
        FilterPtr = EVS_FindEventID(EventID, AppDataPtr->BinFilters);

        if (FilterPtr != NULL)
        {
            FilterPtr->Count = 0;
        }
        else
        {
            Status = CFE_EVS_EVT_NOT_REGISTERED;
        }
    }

    return Status;
}

CFE_Status_t CFE_EVS_ResetAllFilters(void)
{
    int32          Status;
    CFE_ES_AppId_t AppID;
    uint32         i;
    EVS_AppData_t *AppDataPtr;

    Status = EVS_ResetFilterVerifyCallerId(&AppDataPtr, &AppID);

    if (Status == CFE_SUCCESS)
    {
        for (i = 0; i < CFE_PLATFORM_EVS_MAX_EVENT_FILTERS; i++)
        {
            AppDataPtr->BinFilters[i].Count = 0;
        }
    }

    return Status;
}