1 //******************************************************************
3 // Copyright 2014 Samsung Electronics All Rights Reserved.
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
7 // Licensed under the Apache License, Version 2.0 (the "License");
8 // you may not use this file except in compliance with the License.
9 // You may obtain a copy of the License at
11 // http://www.apache.org/licenses/LICENSE-2.0
13 // Unless required by applicable law or agreed to in writing, software
14 // distributed under the License is distributed on an "AS IS" BASIS,
15 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 // See the License for the specific language governing permissions and
17 // limitations under the License.
19 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
22 /// This sample shows how one could create a resource (collection) with children.
28 #include "OCPlatform.h"
30 #include "ThingsManager.h"
31 #include "ConfigurationCollection.h"
35 /// This function internally calls registerResource API.
36 void ConfigurationCollection::createResources(ResourceEntityHandler callback)
38 using namespace OC::OCPlatform;
42 std::cout << "callback should be binded\t";
46 // This will internally create and register the resource.
47 OCStackResult result = registerResource(m_configurationHandle, m_configurationUri,
48 m_configurationTypes[0], m_configurationInterfaces[0], callback,
49 OC_DISCOVERABLE | OC_OBSERVABLE);
51 if (OC_STACK_OK != result)
53 std::cout << "Resource creation (configuration) was unsuccessful\n";
56 result = bindInterfaceToResource(m_configurationHandle, m_configurationInterfaces[1]);
57 if (OC_STACK_OK != result)
59 std::cout << "Binding TypeName to Resource was unsuccessful\n";
62 result = bindInterfaceToResource(m_configurationHandle, m_configurationInterfaces[2]);
63 if (OC_STACK_OK != result)
65 std::cout << "Binding TypeName to Resource was unsuccessful\n";
68 result = registerResource(m_regionHandle, m_regionUri, m_regionTypes[0], m_regionInterfaces[0],
69 callback, OC_DISCOVERABLE | OC_OBSERVABLE);
71 if (OC_STACK_OK != result)
73 std::cout << "Resource creation (region) was unsuccessful\n";
76 result = registerResource(m_timeHandle, m_timeUri, m_timeTypes[0], m_timeInterfaces[0],
77 callback, OC_DISCOVERABLE | OC_OBSERVABLE);
79 if (OC_STACK_OK != result)
81 std::cout << "Resource creation (time) was unsuccessful\n";
84 result = registerResource(m_networkHandle, m_networkUri, m_networkTypes[0],
85 m_networkInterfaces[0], callback, OC_DISCOVERABLE | OC_OBSERVABLE);
87 if (OC_STACK_OK != result)
89 std::cout << "Resource creation (network) was unsuccessful\n";
92 result = registerResource(m_securityHandle, m_securityUri, m_securityTypes[0],
93 m_securityInterfaces[0], callback, OC_DISCOVERABLE | OC_OBSERVABLE);
95 if (OC_STACK_OK != result)
97 std::cout << "Resource creation (security) was unsuccessful\n";
100 result = bindResource(m_configurationHandle, m_regionHandle);
101 if (OC_STACK_OK != result)
103 std::cout << "Binding region resource to room was unsuccessful\n";
106 result = bindResource(m_configurationHandle, m_timeHandle);
107 if (OC_STACK_OK != result)
109 std::cout << "Binding time resource to room was unsuccessful\n";
112 result = bindResource(m_configurationHandle, m_networkHandle);
113 if (OC_STACK_OK != result)
115 std::cout << "Binding network resource to room was unsuccessful\n";
118 result = bindResource(m_configurationHandle, m_securityHandle);
119 if (OC_STACK_OK != result)
121 std::cout << "Binding security resource to room was unsuccessful\n";
124 std::cout << "Configuration Collection is Created!(URI: " << m_configurationUri << ") \n";
126 myTimeCollection->createResources(callback);
127 myNetworkCollection->createResources(callback);
128 mySecurityCollection->createResources(callback);
132 void ConfigurationCollection::setConfigurationRepresentation(OCRepresentation& rep)
136 if (rep.getValue("value", value))
138 m_configurationValue = value;
140 std::cout << "\t\t\t\t" << "m_configurationValue: " << m_configurationValue << std::endl;
144 void ConfigurationCollection::setTimeRepresentation(OCRepresentation& rep)
148 if (rep.getValue("link", value))
152 std::cout << "\t\t\t\t" << "link: " << m_timeLink << std::endl;
156 void ConfigurationCollection::setNetworkRepresentation(OCRepresentation& rep)
160 if (rep.getValue("link", value))
164 std::cout << "\t\t\t\t" << "link: " << m_networkLink << std::endl;
168 void ConfigurationCollection::setSecurityRepresentation(OCRepresentation& rep)
172 if (rep.getValue("link", value))
176 std::cout << "\t\t\t\t" << "link: " << m_securityLink << std::endl;
180 void ConfigurationCollection::setRegionRepresentation(OCRepresentation& rep)
184 if (rep.getValue("value", value))
186 m_regionValue = value;
188 std::cout << "\t\t\t\t" << "value: " << m_regionValue << std::endl;
192 OCRepresentation ConfigurationCollection::getTimeRepresentation()
194 m_timeRep.setValue("link", m_timeLink);
199 OCRepresentation ConfigurationCollection::getNetworkRepresentation()
201 m_networkRep.setValue("link", m_networkLink);
206 OCRepresentation ConfigurationCollection::getSecurityRepresentation()
208 m_securityRep.setValue("link", m_securityLink);
210 return m_securityRep;
213 OCRepresentation ConfigurationCollection::getRegionRepresentation()
215 m_regionRep.setValue("value", m_regionValue);
220 OCRepresentation ConfigurationCollection::getConfigurationRepresentation()
222 m_configurationRep.clearChildren();
224 m_configurationRep.addChild(getRegionRepresentation());
225 m_configurationRep.addChild(getTimeRepresentation());
226 m_configurationRep.addChild(getNetworkRepresentation());
227 m_configurationRep.addChild(getSecurityRepresentation());
229 m_configurationRep.setValue("value", m_configurationValue);
231 return m_configurationRep;
234 std::string ConfigurationCollection::getConfigurationUri()
236 return m_configurationUri;
239 std::string ConfigurationCollection::getTimeUri()
244 std::string ConfigurationCollection::getNetworkUri()
249 std::string ConfigurationCollection::getSecurityUri()
251 return m_securityUri;
254 std::string ConfigurationCollection::getRegionUri()
259 void ConfigurationCollection::factoryReset()
261 m_configurationValue = defaultConfigurationValue;
262 m_regionValue = defaultRegionValue;
263 m_timeLink = defaultTimeLink;
264 m_networkLink = defaultNetworkLink;
265 m_securityLink = defaultSecurityLink;
267 myTimeCollection->factoryReset();
268 myNetworkCollection->factoryReset();
269 mySecurityCollection->factoryReset();
272 /// This function internally calls registerResource API.
273 void TimeCollection::createResources(ResourceEntityHandler callback)
275 using namespace OC::OCPlatform;
277 if (callback == NULL)
279 std::cout << "callback should be binded\t";
283 // This will internally create and register the resource.
284 OCStackResult result = registerResource(m_timeHandle, m_timeUri, m_timeTypes[0],
285 m_timeInterfaces[0], callback, OC_DISCOVERABLE | OC_OBSERVABLE);
287 if (OC_STACK_OK != result)
289 std::cout << "Resource creation (time) was unsuccessful\n";
292 result = bindInterfaceToResource(m_timeHandle, m_timeInterfaces[1]);
293 if (OC_STACK_OK != result)
295 std::cout << "Binding TypeName to Resource was unsuccessful\n";
298 result = bindInterfaceToResource(m_timeHandle, m_timeInterfaces[2]);
299 if (OC_STACK_OK != result)
301 std::cout << "Binding TypeName to Resource was unsuccessful\n";
304 result = registerResource(m_currentTimeHandle, m_currentTimeUri, m_currentTimeTypes[0],
305 m_currentTimeInterfaces[0], callback, OC_DISCOVERABLE | OC_OBSERVABLE);
307 if (OC_STACK_OK != result)
309 std::cout << "Resource creation (currentTime) was unsuccessful\n";
312 result = bindResource(m_timeHandle, m_currentTimeHandle);
313 if (OC_STACK_OK != result)
315 std::cout << "Binding currentTime resource to room was unsuccessful\n";
318 std::cout << "Time Collection is Created!(URI: " << m_timeUri << ") \n";
321 void TimeCollection::setTimeRepresentation(OCRepresentation& rep)
325 if (rep.getValue("value", value))
329 std::cout << "\t\t\t\t" << "m_timeValue: " << m_timeValue << std::endl;
333 void TimeCollection::setCurrentTimeRepresentation(OCRepresentation& rep)
337 if (rep.getValue("currentTime", value))
339 m_currentTimeValue = value;
341 std::cout << "\t\t\t\t" << "value: " << m_currentTimeValue << std::endl;
345 OCRepresentation TimeCollection::getCurrentTimeRepresentation()
347 m_currentTimeRep.setValue("value", m_currentTimeValue);
349 return m_currentTimeRep;
352 OCRepresentation TimeCollection::getTimeRepresentation()
354 m_timeRep.clearChildren();
356 m_timeRep.addChild(getCurrentTimeRepresentation());
358 m_timeRep.setValue("value", m_timeValue);
363 std::string TimeCollection::getTimeUri()
368 std::string TimeCollection::getCurrentTimeUri()
370 return m_currentTimeUri;
373 void TimeCollection::factoryReset()
375 m_timeValue = defaultTimeValue;
376 m_currentTimeValue = defaultCurrentTimeValue;
379 /// This function internally calls registerResource API.
380 void NetworkCollection::createResources(ResourceEntityHandler callback)
382 using namespace OC::OCPlatform;
384 if (callback == NULL)
386 std::cout << "callback should be binded\t";
390 // This will internally create and register the resource.
391 OCStackResult result = registerResource(m_networkHandle, m_networkUri, m_networkTypes[0],
392 m_networkInterfaces[0], callback, OC_DISCOVERABLE | OC_OBSERVABLE);
394 if (OC_STACK_OK != result)
396 std::cout << "Resource creation (network) was unsuccessful\n";
399 result = bindInterfaceToResource(m_networkHandle, m_networkInterfaces[1]);
400 if (OC_STACK_OK != result)
402 std::cout << "Binding TypeName to Resource was unsuccessful\n";
405 result = bindInterfaceToResource(m_networkHandle, m_networkInterfaces[2]);
406 if (OC_STACK_OK != result)
408 std::cout << "Binding TypeName to Resource was unsuccessful\n";
411 result = registerResource(m_IPAddressHandle, m_IPAddressUri, m_IPAddressTypes[0],
412 m_IPAddressInterfaces[0], callback, OC_DISCOVERABLE | OC_OBSERVABLE);
414 if (OC_STACK_OK != result)
416 std::cout << "Resource creation (IPAddress) was unsuccessful\n";
419 result = bindResource(m_networkHandle, m_IPAddressHandle);
420 if (OC_STACK_OK != result)
422 std::cout << "Binding IPAddress resource to room was unsuccessful\n";
425 std::cout << "Network Collection is Created!(URI: " << m_networkUri << ") \n";
428 void NetworkCollection::setNetworkRepresentation(OCRepresentation& rep)
432 if (rep.getValue("value", value))
434 m_networkValue = value;
436 std::cout << "\t\t\t\t" << "m_networkValue: " << m_networkValue << std::endl;
440 void NetworkCollection::setIPAddressRepresentation(OCRepresentation& rep)
444 if (rep.getValue("IPAddress", value))
446 m_IPAddressValue = value;
448 std::cout << "\t\t\t\t" << "value: " << m_IPAddressValue << std::endl;
451 OCRepresentation NetworkCollection::getIPAddressRepresentation()
453 m_IPAddressRep.setValue("value", m_IPAddressValue);
455 return m_IPAddressRep;
458 OCRepresentation NetworkCollection::getNetworkRepresentation()
460 m_networkRep.clearChildren();
462 m_networkRep.addChild(getIPAddressRepresentation());
464 m_networkRep.setValue("value", m_networkValue);
469 std::string NetworkCollection::getNetworkUri()
474 std::string NetworkCollection::getIPAddressUri()
476 return m_IPAddressUri;
479 void NetworkCollection::factoryReset()
481 m_networkValue = defaultNetworkValue;
482 m_IPAddressValue = defaultIPAddressValue;
485 /// This function internally calls registerResource API.
486 void SecurityCollection::createResources(ResourceEntityHandler callback)
488 using namespace OC::OCPlatform;
490 if (callback == NULL)
492 std::cout << "callback should be binded\t";
496 // This will internally create and register the resource.
497 OCStackResult result = registerResource(m_securityHandle, m_securityUri, m_securityTypes[0],
498 m_securityInterfaces[0], callback, OC_DISCOVERABLE | OC_OBSERVABLE);
500 if (OC_STACK_OK != result)
502 std::cout << "Resource creation (security) was unsuccessful\n";
505 result = bindInterfaceToResource(m_securityHandle, m_securityInterfaces[1]);
506 if (OC_STACK_OK != result)
508 std::cout << "Binding TypeName to Resource was unsuccessful\n";
511 result = bindInterfaceToResource(m_securityHandle, m_securityInterfaces[2]);
512 if (OC_STACK_OK != result)
514 std::cout << "Binding TypeName to Resource was unsuccessful\n";
517 result = registerResource(m_modeHandle, m_modeUri, m_modeTypes[0], m_modeInterfaces[0],
518 callback, OC_DISCOVERABLE | OC_OBSERVABLE);
520 if (OC_STACK_OK != result)
522 std::cout << "Resource creation (mode) was unsuccessful\n";
525 result = bindResource(m_securityHandle, m_modeHandle);
526 if (OC_STACK_OK != result)
528 std::cout << "Binding mode resource to room was unsuccessful\n";
531 std::cout << "Security Collection is Created!(URI: " << m_securityUri << ") \n";
534 void SecurityCollection::setSecurityRepresentation(OCRepresentation& rep)
538 if (rep.getValue("value", value))
540 m_securityValue = value;
542 std::cout << "\t\t\t\t" << "m_securityValue: " << m_securityValue << std::endl;
546 void SecurityCollection::setModeRepresentation(OCRepresentation& rep)
550 if (rep.getValue("mode", value))
554 std::cout << "\t\t\t\t" << "value: " << m_modeValue << std::endl;
558 OCRepresentation SecurityCollection::getModeRepresentation()
560 m_modeRep.setValue("value", m_modeValue);
565 OCRepresentation SecurityCollection::getSecurityRepresentation()
567 m_securityRep.clearChildren();
569 m_securityRep.addChild(getModeRepresentation());
571 m_securityRep.setValue("value", m_securityValue);
573 return m_securityRep;
576 std::string SecurityCollection::getSecurityUri()
578 return m_securityUri;
581 std::string SecurityCollection::getModeUri()
586 void SecurityCollection::factoryReset()
588 m_securityValue = defaultSecurityValue;
589 m_modeValue = defaultModeValue;