void set_device_info(things_server_builder_s *builder, char *device_name, char *device_type) { THINGS_LOG_D(TAG, THINGS_FUNC_ENTRY); THINGS_LOG_D(TAG, "[/oic/d] name :%s", device_name); THINGS_LOG_D(TAG, "[/oic/d] type :%s", device_type); OCDeviceInfo device_info; device_info.deviceName = NULL; device_info.types = NULL; device_info.specVersion = NULL; device_info.dataModelVersions = NULL; things_string_duplicate(device_name, &device_info.deviceName); things_string_duplicate(OC_SPEC_VERSION, &device_info.specVersion); device_info.dataModelVersions = OCCreateOCStringLL(DEFAULT_DATA_MODEL_VERSIONS); device_info.types = OCCreateOCStringLL(device_type); OCResourcePayloadAddStringLL(&device_info.types, OC_RSRVD_RESOURCE_TYPE_DEVICE); iotivity_api_lock(); OCSetDeviceInfo(device_info); iotivity_api_unlock(); // OCSetPropertyValue(PAYLOAD_TYPE_DEVICE, KEY_ATTR_DEVICE_NAME, device_name); things_free(device_info.deviceName); things_free(device_info.specVersion); OCFreeOCStringLL(device_info.dataModelVersions); OCFreeOCStringLL(device_info.types); THINGS_LOG_D(TAG, THINGS_FUNC_EXIT); }
static CborError OCParseStringLL(CborValue *map, char *type, OCStringLL **resource) { CborValue val; CborError err = cbor_value_map_find_value(map, type, &val); VERIFY_CBOR_SUCCESS(TAG, err, "to find StringLL TAG"); if (cbor_value_is_text_string(&val)) { char *input = NULL; char *savePtr = NULL; size_t len = 0; err = cbor_value_dup_text_string(&val, &input, &len, NULL); VERIFY_CBOR_SUCCESS(TAG, err, "to find StringLL value"); if (input) { char *curPtr = strtok_r(input, " ", &savePtr); while (curPtr) { char *trimmed = InPlaceStringTrim(curPtr); if (trimmed[0] !='\0') { if (!OCResourcePayloadAddStringLL(resource, trimmed)) { return CborErrorOutOfMemory; } } curPtr = strtok_r(NULL, " ", &savePtr); } OICFree(input); } } exit: return err; }
int main(int argc, char* argv[]) { #ifdef RA_ADAPTER char host[] = "localhost"; char user[] = "test1"; char pass[] = "intel123"; char empstr[] = ""; OCRAInfo_t rainfo = {}; rainfo.hostname = host; rainfo.port = 5222; rainfo.xmpp_domain = host; rainfo.username = user; rainfo.password = pass; rainfo.resource = empstr; rainfo.user_jid = empstr; rainfo.jidbound = jidbound; #endif int opt = 0; while ((opt = getopt(argc, argv, "o:s:p:d:u:w:r:j:")) != -1) { switch(opt) { case 'o': gObserveNotifyType = atoi(optarg); break; #ifdef RA_ADAPTER case 's': rainfo.hostname = optarg; break; case 'p': rainfo.port = atoi(optarg); break; case 'd': rainfo.xmpp_domain = optarg; break; case 'u': rainfo.username = optarg; break; case 'w': rainfo.password = optarg; break; case 'j': rainfo.user_jid = optarg; break; case 'r': rainfo.resource = optarg; break; #endif default: PrintUsage(); return -1; } } if ((gObserveNotifyType != 0) && (gObserveNotifyType != 1)) { PrintUsage(); return -1; } #ifdef RA_ADAPTER OCSetRAInfo(&rainfo); #endif OIC_LOG(DEBUG, TAG, "OCServer is starting..."); if (OCInit(NULL, 0, OC_SERVER) != OC_STACK_OK) { OIC_LOG(ERROR, TAG, "OCStack init error"); return 0; } #ifdef WITH_PRESENCE if (OCStartPresence(0) != OC_STACK_OK) { OIC_LOG(ERROR, TAG, "OCStack presence/discovery error"); return 0; } #endif OCSetDefaultDeviceEntityHandler(OCDeviceEntityHandlerCb, NULL); OCStackResult registrationResult = SetPlatformInfo(platformID, manufacturerName, manufacturerUrl, modelNumber, dateOfManufacture, platformVersion, operatingSystemVersion, hardwareVersion, firmwareVersion, supportUrl, systemTime); if (registrationResult != OC_STACK_OK) { OIC_LOG(INFO, TAG, "Platform info setting failed locally!"); exit (EXIT_FAILURE); } registrationResult = OCSetPlatformInfo(platformInfo); if (registrationResult != OC_STACK_OK) { OIC_LOG(INFO, TAG, "Platform Registration failed!"); exit (EXIT_FAILURE); } registrationResult = SetDeviceInfo(deviceName, specVersion, dataModelVersions); if (registrationResult != OC_STACK_OK) { OIC_LOG(INFO, TAG, "Device info setting failed locally!"); exit (EXIT_FAILURE); } OCResourcePayloadAddStringLL(&deviceInfo.types, "oic.d.tv"); registrationResult = OCSetDeviceInfo(deviceInfo); if (registrationResult != OC_STACK_OK) { OIC_LOG(INFO, TAG, "Device Registration failed!"); exit (EXIT_FAILURE); } /* * Declare and create the example resource: Light */ createLightResource(gResourceUri, &Light); // Initialize observations data structure for the resource for (uint8_t i = 0; i < SAMPLE_MAX_NUM_OBSERVATIONS; i++) { interestedObservers[i].valid = false; } /* * Create a thread for generating changes that cause presence notifications * to be sent to clients */ #ifdef WITH_PRESENCE pthread_create(&threadId_presence, NULL, presenceNotificationGenerator, (void *)NULL); #endif // Break from loop with Ctrl-C OIC_LOG(INFO, TAG, "Entering ocserver main loop..."); DeletePlatformInfo(); DeleteDeviceInfo(); signal(SIGINT, handleSigInt); while (!gQuitFlag) { if (OCProcess() != OC_STACK_OK) { OIC_LOG(ERROR, TAG, "OCStack process error"); return 0; } } if (observeThreadStarted) { pthread_cancel(threadId_observe); pthread_join(threadId_observe, NULL); } pthread_cancel(threadId_presence); pthread_join(threadId_presence, NULL); OIC_LOG(INFO, TAG, "Exiting ocserver main loop..."); if (OCStop() != OC_STACK_OK) { OIC_LOG(ERROR, TAG, "OCStack process error"); } return 0; }