e401d6da48c2e5d36438d3db2683770dc87855b9
[platform/upstream/iotivity.git] / service / protocol-plugin / plugins / Android / plugin.hue / src / oic / plugin / hue / EntityHandlerHue.java
1 //******************************************************************
2 //
3 // Copyright 2015 Samsung Electronics All Rights Reserved.
4 //
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
6 //
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
10 //
11 //      http://www.apache.org/licenses/LICENSE-2.0
12 //
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.
18 //
19 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
20
21 /// @file EntityHandlerHue.java
22
23 package oic.plugin.hue;
24
25 import java.util.EnumSet;
26 import java.util.List;
27
28 import org.iotivity.base.EntityHandlerResult;
29 import org.iotivity.base.OcException;
30 import org.iotivity.base.OcPlatform;
31 import org.iotivity.base.OcRepresentation;
32 import org.iotivity.base.OcResourceRequest;
33 import org.iotivity.base.OcResourceResponse;
34 import org.iotivity.base.RequestHandlerFlag;
35 import org.iotivity.base.RequestType;
36
37 import android.util.Log;
38
39 import com.philips.lighting.hue.sdk.PHHueSDK;
40 import com.philips.lighting.model.PHBridge;
41 import com.philips.lighting.model.PHLight;
42 import com.philips.lighting.model.PHLightState;
43
44 public class EntityHandlerHue implements OcPlatform.EntityHandler {
45
46     final private static String TAG = "EntityHandler";
47
48     public EntityHandlerResult handleEntity(OcResourceRequest resourcerequest) {
49         Log.e(TAG, "Entity Handler callback.");
50
51         System.out.println("IN Server CPP entity Handler");
52         System.out.println("Hue bulb");
53         // OcResourceResponse response = new OcResourceResponse();
54         // int result = 1; // EH_ERROR
55         if (resourcerequest != null
56                 && resourcerequest.getResourceUri().equals("/a/huebulb")) {
57             RequestType requestType = resourcerequest.getRequestType();
58             EnumSet<RequestHandlerFlag> handlerFlagSet = resourcerequest
59                     .getRequestHandlerFlagSet();
60
61             if(handlerFlagSet.contains(RequestHandlerFlag.INIT))
62             {
63                 Log.e(TAG, "requestFlag : Init");
64             }
65             if(handlerFlagSet.contains(RequestHandlerFlag.REQUEST))
66             {
67                 OcResourceResponse response = new OcResourceResponse();
68                 OcRepresentation representation = new OcRepresentation();
69                 response.setRequestHandle(resourcerequest
70                         .getRequestHandle());
71                 response.setResourceHandle(resourcerequest
72                         .getResourceHandle());
73                 switch (requestType) {
74                     case GET:
75                         PHBridge bridge = PHHueSDK.getInstance()
76                                 .getSelectedBridge();
77                         List<PHLight> myLights = bridge.getResourceCache()
78                                 .getAllLights();
79                         for (PHLight light : myLights) {
80                             PHLightState lightState = new PHLightState();
81                             lightState = light.getLastKnownLightState();
82                             if (lightState.isOn()) {
83                                 Activator.myLight.m_power = "on";
84                             } else if (!lightState.isOn()) {
85                                 Activator.myLight.m_power = "off";
86                             }
87                             Activator.myLight.m_color = lightState.getHue();
88                             Activator.myLight.m_brightness = lightState
89                                     .getBrightness();
90                         }
91                         break;
92                     case PUT:
93                         PHBridge mbridge = PHHueSDK.getInstance()
94                                 .getSelectedBridge();
95                         List<PHLight> mmyLights = mbridge
96                                 .getResourceCache().getAllLights();
97                         for (PHLight light : mmyLights) {
98                             PHLightState lightState = new PHLightState();
99                             try {
100                                 String str = resourcerequest
101                                         .getResourceRepresentation()
102                                         .getValue("power");
103                                 if (str.equals("on")) {
104                                     lightState.setOn(true);
105                                     Activator.myLight.m_power = "on";
106                                 } else if (str.equals("off")) {
107                                     lightState.setOn(false);
108                                     Activator.myLight.m_power = "off";
109                                 }
110                                 int setHueValue = resourcerequest
111                                         .getResourceRepresentation()
112                                         .getValue("color");
113                                 lightState.setHue(setHueValue);
114                                 Activator.myLight.m_color = resourcerequest
115                                         .getResourceRepresentation()
116                                         .getValue("color");
117                             } catch (OcException e) {
118                                 // TODO Auto-generated catch block
119                                 Log.e(TAG, e.getMessage());
120                             }
121                             mbridge.updateLightState(light, lightState);
122                         }
123                         break;
124                     case POST:
125                         break;
126                 }
127                 response.setErrorCode(200);
128                 // representation.setUri("/a/huebulb");
129                 try { 
130                     representation.setValue("name",
131                             Activator.myLight.m_name);
132                     representation.setValue("power",
133                             Activator.myLight.m_power);
134                     representation.setValue("brightness",
135                             Activator.myLight.m_brightness);
136                     representation.setValue("color",
137                             Activator.myLight.m_color);
138                 } catch (OcException e) {
139                     // TODO Auto-generated catch block
140                     Log.e(TAG, e.getMessage());
141                 }
142                 response.setResourceRepresentation(representation);
143                 try {
144                     OcPlatform.sendResponse(response);
145                 } catch (OcException e) {
146                     // TODO Auto-generated catch block
147                     e.printStackTrace();
148                     return EntityHandlerResult.ERROR;
149                 }
150             }
151             if(handlerFlagSet.contains(RequestHandlerFlag.OBSERVER))
152             {
153                 Log.e(TAG, "requestFlag : Observer");
154             }
155             return EntityHandlerResult.OK;
156         }
157         return EntityHandlerResult.ERROR;
158     }
159 }