Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor common code out of CFE_EVS_ResetFilter and CFE_EVS_ResetAllFilters #1399

Open
skliper opened this issue Apr 20, 2021 · 1 comment
Open

Comments

@skliper
Copy link
Contributor

skliper commented Apr 20, 2021

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
Copy link
Contributor

thnkslprpt commented May 8, 2023

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;
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants