1 //******************************************************************
3 // Copyright 2015 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 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
21 #include "HueSampleBundleActivator.h"
27 using namespace OIC::Service;
29 HueSampleBundleActivator *bundle;
31 HueSampleBundleActivator::HueSampleBundleActivator()
35 HueSampleBundleActivator::~HueSampleBundleActivator()
39 void HueSampleBundleActivator::activateBundle(ResourceContainerBundleAPI *resourceContainer,
42 std::cout << "HueSampleBundle::activateBundle called" << std::endl;
44 m_pResourceContainer = resourceContainer;
45 m_bundleId = bundleId;
46 m_connector = new HueConnector();
48 vector< resourceInfo > resourceConfig;
50 resourceContainer->getResourceConfiguration(m_bundleId, &resourceConfig);
52 for (vector< resourceInfo >::iterator itor = resourceConfig.begin();
53 itor != resourceConfig.end(); itor++)
55 createResource(*itor);
59 void HueSampleBundleActivator::deactivateBundle()
61 std::cout << "HueSampleBundle::deactivateBundle called" << std::endl;
63 for (unsigned int i = 0; i < m_vecResources.size(); i++)
65 destroyResource(m_vecResources.at(i));
71 void HueSampleBundleActivator::createResource(resourceInfo resourceInfo)
73 std::cout << "HueSampleBundle::createResource called" << std::endl;
75 if (resourceInfo.resourceType == "oic.light.control")
77 static int lightCount = 1;
78 HueLight *hueLight = new HueLight(m_connector, resourceInfo.address);
79 resourceInfo.uri = "/hue/light/" + std::to_string(lightCount++);
80 std::cout << "Registering resource " << resourceInfo.uri << std::endl;
81 hueLight->m_bundleId = m_bundleId;
82 hueLight->m_uri = resourceInfo.uri;
83 hueLight->m_resourceType = resourceInfo.resourceType;
84 hueLight->m_name = resourceInfo.name;
86 m_pResourceContainer->registerResource(hueLight);
87 m_vecResources.push_back(hueLight);
91 void HueSampleBundleActivator::destroyResource(BundleResource *pBundleResource)
93 std::cout << "HueSampleBundle::destroyResource called" << pBundleResource->m_uri << std::endl;
95 std::vector< BundleResource * >::iterator itor;
97 itor = std::find(m_vecResources.begin(), m_vecResources.end(), pBundleResource);
99 if (itor != m_vecResources.end())
101 m_pResourceContainer->unregisterResource(pBundleResource);
102 m_vecResources.erase(itor);
106 /*std::cout << "Clearing up memory.\n";
108 if (itor != m_vecResources.end())
109 m_vecResources.erase(itor);*/
116 extern "C" void externalActivateBundle(ResourceContainerBundleAPI *resourceContainer,
117 std::string bundleId)
119 bundle = new HueSampleBundleActivator();
120 bundle->activateBundle(resourceContainer, bundleId);
123 extern "C" void externalDeactivateBundle()
125 bundle->deactivateBundle();
129 extern "C" void externalCreateResource(resourceInfo resourceInfo)
131 bundle->createResource(resourceInfo);
134 extern "C" void externalDestroyResource(BundleResource *pBundleResource)
136 bundle->destroyResource(pBundleResource);