ANSC_STATUS DslhObjroDelAllObjRecords ( ANSC_HANDLE hThisObject ) { ANSC_STATUS returnStatus = ANSC_STATUS_SUCCESS; PDSLH_OBJ_RECORD_OBJECT pMyObject = (PDSLH_OBJ_RECORD_OBJECT)hThisObject; PDSLH_OBJ_ENTITY_OBJECT pObjEntity = (PDSLH_OBJ_ENTITY_OBJECT)pMyObject->hDslhObjEntity; PDSLH_OBJ_RECORD_OBJECT pChildObjRecord = (PDSLH_OBJ_RECORD_OBJECT)NULL; PSINGLE_LINK_ENTRY pSLinkEntry = (PSINGLE_LINK_ENTRY )NULL; pSLinkEntry = AnscQueuePopEntry(&pMyObject->ObjroQueue); while ( pSLinkEntry ) { pChildObjRecord = ACCESS_DSLH_OBJ_RECORD_OBJECT(pSLinkEntry); pSLinkEntry = AnscQueuePopEntry(&pMyObject->ObjroQueue); pChildObjRecord->Destroy((ANSC_HANDLE)pChildObjRecord); pChildObjRecord->Reset ((ANSC_HANDLE)pChildObjRecord); pChildObjRecord->Remove ((ANSC_HANDLE)pChildObjRecord); } return ANSC_STATUS_SUCCESS; }
ANSC_STATUS DslhWmpdoReset ( ANSC_HANDLE hThisObject ) { ANSC_STATUS returnStatus = ANSC_STATUS_SUCCESS; PDSLH_WMP_DATABASE_OBJECT pMyObject = (PDSLH_WMP_DATABASE_OBJECT )hThisObject; PDSLH_WMP_DATABASE_PROPERTY pProperty = (PDSLH_WMP_DATABASE_PROPERTY)&pMyObject->Property; PDSLH_OBJ_RECORD_OBJECT pRootObjRecord = (PDSLH_OBJ_RECORD_OBJECT )pMyObject->hRootObjRecord; PDSLH_OBJ_ENTITY_OBJECT pRootObjEntity = (PDSLH_OBJ_ENTITY_OBJECT )pMyObject->hRootObjEntity; PDSLH_WMPDO_MONITOR_PARAM pMonitorParam = (PDSLH_WMPDO_MONITOR_PARAM )NULL; PSINGLE_LINK_ENTRY pSLinkEntry = (PSINGLE_LINK_ENTRY )NULL; pMyObject->ResetObjVarArray(hThisObject); if ( pMyObject->LockedEntity ) { AnscFreeMemory(pMyObject->LockedEntity); pMyObject->LockedEntity = NULL; } if ( pMyObject->pRootObjName) { AnscFreeMemory(pMyObject->pRootObjName); pMyObject->pRootObjName = NULL; } if ( pRootObjRecord ) { pRootObjRecord->Remove((ANSC_HANDLE)pRootObjRecord); pMyObject->hRootObjRecord = (ANSC_HANDLE)NULL; } if ( pRootObjEntity ) { pRootObjEntity->Remove((ANSC_HANDLE)pRootObjEntity); pMyObject->hRootObjEntity = (ANSC_HANDLE)NULL; } AnscAcquireLock(&pMyObject->MpoQueueLock); pSLinkEntry = AnscQueuePopEntry(&pMyObject->MpoQueue); while ( pSLinkEntry ) { pMonitorParam = ACCESS_DSLH_WMPDO_MONITOR_PARAM(pSLinkEntry); pSLinkEntry = AnscQueuePopEntry(&pMyObject->MpoQueue); DslhWmpdoFreeMonitorParam(pMonitorParam); } AnscReleaseLock(&pMyObject->MpoQueueLock); return ANSC_STATUS_SUCCESS; }
SLAP_VARIABLE* DslhObjroRvqGetParamValue ( ANSC_HANDLE hThisObject, char* pParamName ) { ANSC_STATUS returnStatus = ANSC_STATUS_SUCCESS; PDSLH_OBJ_RECORD_OBJECT pMyObject = (PDSLH_OBJ_RECORD_OBJECT)hThisObject; PDSLH_OBJ_ENTITY_OBJECT pObjEntity = (PDSLH_OBJ_ENTITY_OBJECT)pMyObject->hDslhObjEntity; PDSLH_VAR_RECORD_OBJECT pChildVarRecord = (PDSLH_VAR_RECORD_OBJECT)NULL; pChildVarRecord = (PDSLH_VAR_RECORD_OBJECT)pMyObject->GetVarRecord ( (ANSC_HANDLE)pMyObject, pParamName ); if ( !pChildVarRecord ) { return NULL; } return pChildVarRecord->TempParamValueTrans? pChildVarRecord->TempParamValueTrans : pChildVarRecord->TempParamValue; }
ANSC_STATUS DslhObjroRvqClearParamUpdated ( ANSC_HANDLE hThisObject, char* pParamName ) { ANSC_STATUS returnStatus = ANSC_STATUS_SUCCESS; PDSLH_OBJ_RECORD_OBJECT pMyObject = (PDSLH_OBJ_RECORD_OBJECT)hThisObject; PDSLH_OBJ_ENTITY_OBJECT pObjEntity = (PDSLH_OBJ_ENTITY_OBJECT)pMyObject->hDslhObjEntity; PDSLH_VAR_RECORD_OBJECT pChildVarRecord = (PDSLH_VAR_RECORD_OBJECT)NULL; pChildVarRecord = (PDSLH_VAR_RECORD_OBJECT)pMyObject->GetVarRecord ( (ANSC_HANDLE)pMyObject, pParamName ); if ( !pChildVarRecord ) { return ANSC_STATUS_FAILURE; } pChildVarRecord->bAlreadySet = TRUE; return ANSC_STATUS_SUCCESS; }
BOOL DslhObjroRvqIsParamUpdated ( ANSC_HANDLE hThisObject, char* pParamName ) { ANSC_STATUS returnStatus = ANSC_STATUS_SUCCESS; PDSLH_OBJ_RECORD_OBJECT pMyObject = (PDSLH_OBJ_RECORD_OBJECT)hThisObject; PDSLH_OBJ_ENTITY_OBJECT pObjEntity = (PDSLH_OBJ_ENTITY_OBJECT)pMyObject->hDslhObjEntity; PDSLH_VAR_RECORD_OBJECT pChildVarRecord = (PDSLH_VAR_RECORD_OBJECT)NULL; pChildVarRecord = (PDSLH_VAR_RECORD_OBJECT)pMyObject->GetVarRecord ( (ANSC_HANDLE)pMyObject, pParamName ); if ( !pChildVarRecord ) { return FALSE; } else if ( !pChildVarRecord->TempParamValue ) { return FALSE; } else if ( pChildVarRecord->bAlreadySet ) { return FALSE; } return TRUE; }
ANSC_STATUS DslhObjroAddObjRecord ( ANSC_HANDLE hThisObject, ANSC_HANDLE hObjRecord ) { ANSC_STATUS returnStatus = ANSC_STATUS_SUCCESS; PDSLH_OBJ_RECORD_OBJECT pMyObject = (PDSLH_OBJ_RECORD_OBJECT)hThisObject; PDSLH_OBJ_ENTITY_OBJECT pObjEntity = (PDSLH_OBJ_ENTITY_OBJECT)pMyObject->hDslhObjEntity; PDSLH_OBJ_RECORD_OBJECT pChildObjRecord = (PDSLH_OBJ_RECORD_OBJECT)hObjRecord; char next_ins_name[16]; AnscQueuePushEntry(&pMyObject->ObjroQueue, &pChildObjRecord->Linkage); if ( pObjEntity->ObjDescr && (pObjEntity->ObjDescr->Type == DSLH_CWMP_OBJECT_TYPE_table) ) { pMyObject->NextInstanceNumber = (ULONG)_ansc_atoi(pChildObjRecord->LastName); do { pMyObject->NextInstanceNumber++; if ( pMyObject->NextInstanceNumber == 0 ) { pMyObject->NextInstanceNumber = 1; } AnscZeroMemory(next_ins_name, 16); _ansc_itoa(pMyObject->NextInstanceNumber, next_ins_name, 10); pChildObjRecord = (PDSLH_OBJ_RECORD_OBJECT)pMyObject->GetObjRecord ( (ANSC_HANDLE)pMyObject, next_ins_name ); } while ( pChildObjRecord ); } return ANSC_STATUS_SUCCESS; }
ANSC_STATUS DslhWmpdoCancel ( ANSC_HANDLE hThisObject ) { ANSC_STATUS returnStatus = ANSC_STATUS_SUCCESS; PDSLH_WMP_DATABASE_OBJECT pMyObject = (PDSLH_WMP_DATABASE_OBJECT )hThisObject; PDSLH_WMP_DATABASE_PROPERTY pProperty = (PDSLH_WMP_DATABASE_PROPERTY )&pMyObject->Property; PDSLH_CPE_CONTROLLER_OBJECT pDslhCpeController = (PDSLH_CPE_CONTROLLER_OBJECT )pMyObject->hDslhCpeController; PDSLH_OBJ_RECORD_OBJECT pRootObjRecord = (PDSLH_OBJ_RECORD_OBJECT )pMyObject->hRootObjRecord; PDSLH_OBJ_ENTITY_OBJECT pRootObjEntity = (PDSLH_OBJ_ENTITY_OBJECT )pMyObject->hRootObjEntity; PANSC_TIMER_DESCRIPTOR_OBJECT pMonitorTimerObj = (PANSC_TIMER_DESCRIPTOR_OBJECT)pMyObject->hMonitorTimerObj; if ( !pMyObject->bActive ) { return ANSC_STATUS_SUCCESS; } else { pMyObject->bActive = FALSE; } pMonitorTimerObj->Stop((ANSC_HANDLE)pMonitorTimerObj); if ( pRootObjRecord ) { pRootObjRecord->Remove((ANSC_HANDLE)pRootObjRecord); pMyObject->hRootObjRecord = (ANSC_HANDLE)NULL; } if ( pRootObjEntity ) { pRootObjEntity->Remove((ANSC_HANDLE)pRootObjEntity); pMyObject->hRootObjEntity = (ANSC_HANDLE)NULL; } returnStatus = pMyObject->CloseEnv((ANSC_HANDLE)pMyObject); return returnStatus; }
ANSC_HANDLE DslhObjroGetObjRecord2 ( ANSC_HANDLE hThisObject, ANSC_HANDLE hTokenChain ) { ANSC_STATUS returnStatus = ANSC_STATUS_SUCCESS; PDSLH_OBJ_RECORD_OBJECT pMyObject = (PDSLH_OBJ_RECORD_OBJECT )hThisObject; PANSC_TOKEN_CHAIN pObjNameTokens = (PANSC_TOKEN_CHAIN )hTokenChain; PANSC_STRING_TOKEN pObjNameToken = (PANSC_STRING_TOKEN )NULL; PDSLH_OBJ_RECORD_OBJECT pChildObjRecord = (PDSLH_OBJ_RECORD_OBJECT )NULL; PDSLH_OBJ_ENTITY_OBJECT pChildObjEntity = (PDSLH_OBJ_ENTITY_OBJECT )NULL; PDSLH_OBJ_CONTROLLER_OBJECT pChildObjController = (PDSLH_OBJ_CONTROLLER_OBJECT)NULL; PDSLH_OBJCO_TABLE_OBJECT pChildObjcoTable = (PDSLH_OBJCO_TABLE_OBJECT )NULL; PSINGLE_LINK_ENTRY pSLinkEntry = (PSINGLE_LINK_ENTRY )NULL; BOOL bObjRecordFound = FALSE; if ( !pObjNameTokens ) { return (ANSC_HANDLE)NULL; } else { pObjNameToken = AnscTcUnlinkToken(pObjNameTokens); } if ( !pObjNameToken ) { return (ANSC_HANDLE)NULL; } pSLinkEntry = AnscQueueGetFirstEntry(&pMyObject->ObjroQueue); while ( pObjNameToken->Name && pSLinkEntry ) { pChildObjRecord = ACCESS_DSLH_OBJ_RECORD_OBJECT(pSLinkEntry); pSLinkEntry = AnscQueueGetNextEntry(pSLinkEntry); if ( pChildObjRecord->LastName && AnscEqualString ( pChildObjRecord->LastName, pObjNameToken->Name, TRUE ) ) { bObjRecordFound = TRUE; break; } } AnscFreeMemory(pObjNameToken); if ( bObjRecordFound ) { pChildObjEntity = (PDSLH_OBJ_ENTITY_OBJECT )pChildObjRecord->hDslhObjEntity; pChildObjController = (PDSLH_OBJ_CONTROLLER_OBJECT)pChildObjRecord->hDslhObjController; pChildObjcoTable = (PDSLH_OBJCO_TABLE_OBJECT )pChildObjController; if ( AnscTcGetTokenCount(pObjNameTokens) == 0 ) { if ( pChildObjEntity->ObjDescr->bDynamic && pChildObjEntity->ObjDescr->Type == DSLH_CWMP_OBJECT_TYPE_table) { if ( pChildObjcoTable->IsUpdated((ANSC_HANDLE)pChildObjcoTable) ) { AnscTrace("Delete and Repopulate the record in '%s'\n", pChildObjEntity->LastName); pChildObjRecord->DelAllObjRecords ((ANSC_HANDLE)pChildObjRecord); pChildObjcoTable->Lock(pChildObjcoTable); pChildObjRecord->PopulateObjRecords((ANSC_HANDLE)pChildObjRecord); pChildObjRecord->PopulateVarRecords((ANSC_HANDLE)pChildObjRecord); pChildObjcoTable->Unlock(pChildObjcoTable); AnscTrace("End of the repopulation in '%s'\n", pChildObjEntity->LastName); } } return (ANSC_HANDLE)pChildObjRecord; } else { /* * If this obj record is a dynamic table object, we need to check whether the table * content has been updated. If it has, we need to remove all child objects and para- * meters under this object and re-populate them. */ if ( pChildObjEntity->ObjDescr->bDynamic && pChildObjEntity->ObjDescr->Type == DSLH_CWMP_OBJECT_TYPE_table) { if ( pChildObjcoTable->IsUpdated((ANSC_HANDLE)pChildObjcoTable) ) { AnscTrace("Delete and Repopulate the record in '%s'\n", pChildObjEntity->LastName); pChildObjRecord->DelAllObjRecords ((ANSC_HANDLE)pChildObjRecord); pChildObjcoTable->Lock(pChildObjcoTable); pChildObjRecord->PopulateObjRecords((ANSC_HANDLE)pChildObjRecord); pChildObjRecord->PopulateVarRecords((ANSC_HANDLE)pChildObjRecord); pChildObjcoTable->Unlock(pChildObjcoTable); AnscTrace("End of the repopulation in '%s'\n", pChildObjEntity->LastName); } } return pChildObjRecord->GetObjRecord2 ( (ANSC_HANDLE)pChildObjRecord, (ANSC_HANDLE)pObjNameTokens ); } } return (ANSC_HANDLE)NULL; }
ANSC_STATUS DslhWmpdoEngage ( ANSC_HANDLE hThisObject ) { ANSC_STATUS returnStatus = ANSC_STATUS_SUCCESS; PDSLH_WMP_DATABASE_OBJECT pMyObject = (PDSLH_WMP_DATABASE_OBJECT )hThisObject; PDSLH_WMP_DATABASE_PROPERTY pProperty = (PDSLH_WMP_DATABASE_PROPERTY )&pMyObject->Property; PDSLH_CPE_CONTROLLER_OBJECT pDslhCpeController = (PDSLH_CPE_CONTROLLER_OBJECT )pMyObject->hDslhCpeController; PDSLH_OBJ_RECORD_OBJECT pRootObjRecord = (PDSLH_OBJ_RECORD_OBJECT )pMyObject->hRootObjRecord; PDSLH_OBJ_ENTITY_OBJECT pRootObjEntity = (PDSLH_OBJ_ENTITY_OBJECT )pMyObject->hRootObjEntity; PANSC_TIMER_DESCRIPTOR_OBJECT pMonitorTimerObj = (PANSC_TIMER_DESCRIPTOR_OBJECT)pMyObject->hMonitorTimerObj; if ( pMyObject->bActive ) { return ANSC_STATUS_SUCCESS; } else if ( !pDslhCpeController ) { return ANSC_STATUS_NOT_READY; } if ( !pRootObjEntity ) { pRootObjEntity = (PDSLH_OBJ_ENTITY_OBJECT)DslhCreateObjEntity ( pMyObject->hContainerContext, (ANSC_HANDLE)pMyObject, (ANSC_HANDLE)NULL ); if ( !pRootObjEntity ) { return ANSC_STATUS_RESOURCES; } else { pMyObject->hRootObjEntity = (ANSC_HANDLE)pRootObjEntity; } } if ( !pRootObjRecord ) { pRootObjRecord = (PDSLH_OBJ_RECORD_OBJECT)DslhCreateObjRecord ( pMyObject->hContainerContext, (ANSC_HANDLE)pMyObject, (ANSC_HANDLE)NULL ); if ( !pRootObjRecord ) { return ANSC_STATUS_RESOURCES; } else { pMyObject->hRootObjRecord = (ANSC_HANDLE)pRootObjRecord; } pRootObjRecord->hParentObjRecord = NULL; pRootObjRecord->hDslhCpeController = (ANSC_HANDLE)pDslhCpeController; pRootObjRecord->hDslhObjController = NULL; pRootObjRecord->SetDslhObjEntity ((ANSC_HANDLE)pRootObjRecord, (ANSC_HANDLE)pRootObjEntity ); } returnStatus = pMyObject->SetupEnv((ANSC_HANDLE)pMyObject); if ( returnStatus != ANSC_STATUS_SUCCESS ) { return returnStatus; } pMyObject->bActive = TRUE; return returnStatus; }