ANSC_STATUS
DslhCpecoReset
    (
        ANSC_HANDLE                 hThisObject
    )
{
    PDSLH_CPE_CONTROLLER_OBJECT     pMyObject    = (PDSLH_CPE_CONTROLLER_OBJECT  )hThisObject;
    PDSLH_CWMP_OBJECT_DESCR         pObjectDescr = (PDSLH_CWMP_OBJECT_DESCR      )NULL;
    ULONG                           i            = 0;

#if 0 /* the objdesp is already released in another place */
    for( i = 0; i < pMyObject->uObjCount; i ++)
    {
        pObjectDescr = (PDSLH_CWMP_OBJECT_DESCR)pMyObject->hObjDespArray[i];

        if( pObjectDescr != NULL)
        {
            DslhCwmpFreeObjectDescr(pObjectDescr);
        }

        pMyObject->hObjDespArray[i] = NULL;
    }
#endif

    pMyObject->uObjCount = 0;

    return  ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
DslhObjeoReset
    (
        ANSC_HANDLE                 hThisObject
    )
{
    ANSC_STATUS                     returnStatus    = ANSC_STATUS_SUCCESS;
    PDSLH_OBJ_ENTITY_OBJECT         pMyObject       = (PDSLH_OBJ_ENTITY_OBJECT)hThisObject;
    PDSLH_OBJ_ENTITY_OBJECT         pChildObjEntity = (PDSLH_OBJ_ENTITY_OBJECT)NULL;
    PDSLH_VAR_ENTITY_OBJECT         pChildVarEntity = (PDSLH_VAR_ENTITY_OBJECT)NULL;
    PDSLH_OBJEO_INSTANCE            pObjeoInstance  = (PDSLH_OBJEO_INSTANCE   )NULL;
    PSINGLE_LINK_ENTRY              pSLinkEntry     = (PSINGLE_LINK_ENTRY     )NULL;
    ULONG                           i               = 0;

    /* reset the child objects/parameters */
    if ( TRUE )
    {
        pSLinkEntry = AnscQueuePopEntry(&pMyObject->ObjInsQueue);

        while ( pSLinkEntry )
        {
            pObjeoInstance = ACCESS_DSLH_OBJEO_INSTANCE(pSLinkEntry);
            pSLinkEntry    = AnscQueuePopEntry(&pMyObject->ObjInsQueue);

            AnscFreeMemory(pObjeoInstance);
        }
    }

    if ( TRUE )
    {
        pSLinkEntry = AnscQueuePopEntry(&pMyObject->ObjeoQueue);

        while ( pSLinkEntry )
        {
            pChildObjEntity = ACCESS_DSLH_OBJ_ENTITY_OBJECT(pSLinkEntry);
            pSLinkEntry     = AnscQueuePopEntry(&pMyObject->ObjeoQueue);

            pChildObjEntity->Reset ((ANSC_HANDLE)pChildObjEntity);
            pChildObjEntity->Remove((ANSC_HANDLE)pChildObjEntity);
        }
    }

    if ( TRUE )
    {
        pSLinkEntry = AnscQueuePopEntry(&pMyObject->VareoTable);

        while ( pSLinkEntry )
        {
            pChildVarEntity = ACCESS_DSLH_VAR_ENTITY_OBJECT(pSLinkEntry);
            pSLinkEntry     = AnscQueuePopEntry(&pMyObject->VareoTable);

            DslhVareoReset ((ANSC_HANDLE)pChildVarEntity);
            DslhVareoRemove((ANSC_HANDLE)pChildVarEntity);
        }
    }

    /* reset itself */
    if ( pMyObject->ObjDescr )
    {
        if( pMyObject->ObjDescr->hParamArray != NULL)
        {
            AnscFreeMemory(pMyObject->ObjDescr->hParamArray);

            pMyObject->ObjDescr->hParamArray = NULL;
        }

    	DslhCwmpFreeObjectDescr(pMyObject->ObjDescr );
    	pMyObject->ObjDescr = NULL;
    }

    if ( pMyObject->LastName )
    {
        AnscFreeMemory(pMyObject->LastName);

        pMyObject->LastName = NULL;
    }

    return  ANSC_STATUS_SUCCESS;
}