TEST(CallPDMAPIbeforeInit, BeforeInit) { EXPECT_EQ(OC_STACK_PDM_IS_NOT_INITIALIZED, PDMAddDevice(NULL)); EXPECT_EQ(OC_STACK_PDM_IS_NOT_INITIALIZED, PDMIsDuplicateDevice(NULL,NULL)); EXPECT_EQ(OC_STACK_PDM_IS_NOT_INITIALIZED, PDMLinkDevices(NULL, NULL)); EXPECT_EQ(OC_STACK_PDM_IS_NOT_INITIALIZED, PDMUnlinkDevices(NULL, NULL)); EXPECT_EQ(OC_STACK_PDM_IS_NOT_INITIALIZED, PDMDeleteDevice(NULL)); EXPECT_EQ(OC_STACK_PDM_IS_NOT_INITIALIZED, PDMGetOwnedDevices(NULL, NULL)); EXPECT_EQ(OC_STACK_PDM_IS_NOT_INITIALIZED, PDMGetLinkedDevices(NULL, NULL, NULL)); EXPECT_EQ(OC_STACK_PDM_IS_NOT_INITIALIZED, PDMSetLinkStale(NULL, NULL)); EXPECT_EQ(OC_STACK_PDM_IS_NOT_INITIALIZED, PDMGetToBeUnlinkedDevices(NULL, NULL)); EXPECT_EQ(OC_STACK_PDM_IS_NOT_INITIALIZED, PDMIsLinkExists(NULL, NULL, NULL)); }
TEST(PDMSetDeviceStaleTest, StaleDeviceNotinDeviceList) { EXPECT_EQ(OC_STACK_OK, PDMInit(NULL)); OicUuid_t uid1 = {{0,}}; memcpy(&uid1.id, ID_10, sizeof(uid1.id)); EXPECT_EQ(OC_STACK_OK, PDMAddDevice(&uid1)); EXPECT_EQ(OC_STACK_OK,PDMSetDeviceStale(&uid1)); OCUuidList_t *list = NULL; size_t noOfDevcies = 0; EXPECT_EQ(OC_STACK_OK, PDMGetOwnedDevices(&list, &noOfDevcies)); while (list) { EXPECT_FALSE(0 == memcmp(list->dev.id, uid1.id,sizeof(uid1.id))); list = list->next; } }
OCStackResult OCGetDevInfoFromNetwork(unsigned short waittime, OCProvisionDev_t** pOwnedDevList, OCProvisionDev_t** pUnownedDevList) { //TODO will be replaced by more efficient logic if (pOwnedDevList == NULL || *pOwnedDevList != NULL || pUnownedDevList == NULL || *pUnownedDevList != NULL || 0 == waittime) { return OC_STACK_INVALID_PARAM; } // Code for unowned discovery OCProvisionDev_t *unownedDevice = NULL; OCStackResult res = OCDiscoverUnownedDevices(waittime/2, &unownedDevice); if (OC_STACK_OK != res) { OIC_LOG(ERROR,TAG, "Error in unowned discovery"); return res; } // Code for owned discovery OCProvisionDev_t *ownedDevice = NULL; res = OCDiscoverOwnedDevices(waittime/2, &ownedDevice); if (OC_STACK_OK != res) { OIC_LOG(ERROR,TAG, "Error in owned discovery"); PMDeleteDeviceList(unownedDevice); return res; } // Code to get list of all the owned devices. OCUuidList_t *uuidList = NULL; size_t numOfDevices = 0; res = PDMGetOwnedDevices(&uuidList, &numOfDevices); if (OC_STACK_OK != res) { OIC_LOG(ERROR, TAG, "Error while getting info from DB"); PMDeleteDeviceList(unownedDevice); PMDeleteDeviceList(ownedDevice); return res; } // Code to compare devices in owned list and deviceid from DB. OCProvisionDev_t* pCurDev = ownedDevice; size_t deleteCnt = 0; while (pCurDev) { if(true == PMDeleteFromUUIDList(uuidList, &pCurDev->doxm->deviceID)) { deleteCnt++; } pCurDev = pCurDev->next; } // If there is no remaind device in uuidList, we have to assign NULL to prevent free. if (deleteCnt == numOfDevices) { uuidList = NULL; } // Code to add information of the devices which are currently off in owned list. OCUuidList_t *powerOffDeviceList = uuidList; while (powerOffDeviceList) { OCProvisionDev_t *ptr = (OCProvisionDev_t *)OICCalloc(1, sizeof (OCProvisionDev_t)); if (NULL == ptr) { OIC_LOG(ERROR,TAG,"Fail to allocate memory"); PMDeleteDeviceList(unownedDevice); PMDeleteDeviceList(ownedDevice); OCDeleteUuidList(uuidList); return OC_STACK_NO_MEMORY; } ptr->doxm = (OicSecDoxm_t*)OICCalloc(1, sizeof(OicSecDoxm_t)); if (NULL == ptr->doxm) { OIC_LOG(ERROR,TAG,"Fail to allocate memory"); PMDeleteDeviceList(unownedDevice); PMDeleteDeviceList(ownedDevice); OCDeleteUuidList(uuidList); OICFree(ptr); return OC_STACK_NO_MEMORY; } memcpy(ptr->doxm->deviceID.id, powerOffDeviceList->dev.id, sizeof(ptr->doxm->deviceID.id)); ptr->devStatus = DEV_STATUS_OFF; LL_PREPEND(ownedDevice, ptr); powerOffDeviceList = powerOffDeviceList->next; } OCDeleteUuidList(uuidList); *pOwnedDevList = ownedDevice; *pUnownedDevList = unownedDevice; return OC_STACK_OK; }
TEST(PDMGetOwnedDevices, ValidCase) { OCUuidList_t *list = NULL; size_t noOfDevcies = 0; EXPECT_EQ(OC_STACK_OK, PDMGetOwnedDevices(&list, &noOfDevcies)); }