ANSC_STATUS
BwrmPmoCancel
    (
        ANSC_HANDLE                 hThisObject
    )
{
    ANSC_STATUS                     returnStatus      = ANSC_STATUS_SUCCESS;
    PBWRM_PAGE_MANAGER_OBJECT       pMyObject         = (PBWRM_PAGE_MANAGER_OBJECT    )hThisObject;
    PBWRM_PAGE_MANAGER_PROPERTY     pProperty         = (PBWRM_PAGE_MANAGER_PROPERTY  )&pMyObject->Property;
    PANSC_TIMER_DESCRIPTOR_OBJECT   pCacheTimerObject = (PANSC_TIMER_DESCRIPTOR_OBJECT)pMyObject->hCacheTimerObject;

    if ( !pMyObject->bActive )
    {
        return  ANSC_STATUS_SUCCESS;
    }
    else
    {
        pMyObject->bActive = FALSE;
    }

    pCacheTimerObject->Stop((ANSC_HANDLE)pCacheTimerObject);

    pMyObject->DelAllPages((ANSC_HANDLE)pMyObject);

    return  ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
BwrmEcoRamControlCache
    (
        ANSC_HANDLE                 hThisObject,
        ULONG                       ctrl_code
    )
{
    ANSC_STATUS                     returnStatus     = ANSC_STATUS_SUCCESS;
    PBWRM_ENV_CONTROLLER_OBJECT     pMyObject        = (PBWRM_ENV_CONTROLLER_OBJECT  )hThisObject;
    PBWRM_ENV_CONTROLLER_PROPERTY   pProperty        = (PBWRM_ENV_CONTROLLER_PROPERTY)&pMyObject->Property;
    PBWRM_PAGE_MANAGER_OBJECT       pBwrmPageManager = (PBWRM_PAGE_MANAGER_OBJECT    )pMyObject->hBwrmPageManager;

    switch ( ctrl_code )
    {
        case    BWRM_RAM_CTRL_CODE_enable :

                returnStatus =
                    pBwrmPageManager->SetCacheEnabled
                        (
                            (ANSC_HANDLE)pBwrmPageManager,
                            TRUE
                        );

                break;

        case    BWRM_RAM_CTRL_CODE_disable :

                returnStatus =
                    pBwrmPageManager->SetCacheEnabled
                        (
                            (ANSC_HANDLE)pBwrmPageManager,
                            FALSE
                        );

                break;

        case    BWRM_RAM_CTRL_CODE_reset :

                returnStatus = pBwrmPageManager->DelAllPages((ANSC_HANDLE)pBwrmPageManager);

                break;

        default :

                returnStatus = ANSC_STATUS_UNAPPLICABLE;

                break;
    }

    return  returnStatus;
}
ANSC_STATUS
BwrmPmoCacheTimerInvoke
    (
        ANSC_HANDLE                 hThisObject
    )
{
    ANSC_STATUS                     returnStatus      = ANSC_STATUS_SUCCESS;
    PBWRM_PAGE_MANAGER_OBJECT       pMyObject         = (PBWRM_PAGE_MANAGER_OBJECT    )hThisObject;
    PBWRM_PAGE_MANAGER_PROPERTY     pProperty         = (PBWRM_PAGE_MANAGER_PROPERTY  )&pMyObject->Property;
    PANSC_TIMER_DESCRIPTOR_OBJECT   pCacheTimerObject = (PANSC_TIMER_DESCRIPTOR_OBJECT)pMyObject->hCacheTimerObject;
    ULONG                           ulCurTime         = AnscGetTickInSeconds();

    if ( (ulCurTime - pMyObject->Timestamp) > pProperty->CacheTimeout )
    {
        pMyObject->DelAllPages((ANSC_HANDLE)pMyObject);
    }

    return  ANSC_STATUS_SUCCESS;
}