1 package com.example.sample.provider;
3 import java.util.EnumSet;
4 import java.util.LinkedList;
7 import org.iotivity.base.EntityHandlerResult;
8 import org.iotivity.base.ObservationInfo;
9 import org.iotivity.base.OcException;
10 import org.iotivity.base.OcPlatform;
11 import org.iotivity.base.OcRepresentation;
12 import org.iotivity.base.OcResourceHandle;
13 import org.iotivity.base.OcResourceRequest;
14 import org.iotivity.base.OcResourceResponse;
15 import org.iotivity.base.RequestHandlerFlag;
16 import org.iotivity.base.RequestType;
17 import org.iotivity.base.ResourceProperty;
19 import android.content.Context;
20 import android.content.Intent;
21 import android.os.Message;
22 import android.util.Log;
24 public class TemperatureResource implements IMessageLogger
26 private Context mContext;
29 private OcRepresentation mTempRep;
30 private OcResourceHandle mResourceHandle;
31 private List<Byte> mObservationIds;
33 private static String TAG = "NMProvider : TemperatureResource";
35 TemperatureResource(Context context)
40 mResourceHandle = null;
41 mObservationIds = new LinkedList<Byte>();
42 mTempRep = new OcRepresentation();
43 mTempRep.setValueInt(StringConstants.TEMPERATURE, mtemp);
44 mTempRep.setValueInt(StringConstants.HUMIDITY, mhumidity);
48 protected int getTemp()
53 protected void setTemp(int temp)
58 protected int getHumidity()
63 protected void setHumidity(int humidity)
68 protected OcResourceHandle getHandle()
70 return mResourceHandle;
72 protected OcResourceHandle destroyResource()
74 if (mResourceHandle != null)
78 OcPlatform.unregisterResource(mResourceHandle);
84 mResourceHandle = null;
88 protected OcResourceHandle createResource()
91 OcPlatform.EntityHandler eh = new OcPlatform.EntityHandler()
94 public EntityHandlerResult handleEntity(
95 OcResourceRequest ocResourceRequest)
97 // this is where the main logic of simpleserver is handled as
98 // different requests (GET, PUT, POST, OBSERVE, DELETE) are
100 return entityHandler(ocResourceRequest);
106 Log.e(TAG, "before registerResource!");
107 mResourceHandle = OcPlatform.registerResource(
108 StringConstants.RESOURCE_URI,
109 StringConstants.RESOURCE_TYPENAME,
110 StringConstants.RESOURCE_INTERFACE, eh, EnumSet.of(
111 ResourceProperty.DISCOVERABLE, ResourceProperty.OBSERVABLE));
112 Log.e(TAG, "after regiterResource");
114 catch (OcException e)
116 Log.e(TAG, "go exception");
117 logMessage(TAG + "RegisterResource error. " + e.getMessage());
118 Log.e(TAG, "RegisterResource error. " + e.getMessage());
121 // logMessage(TAG + "Successfully registered resource");
122 return mResourceHandle;
125 private void put(OcRepresentation rep)
127 mtemp = rep.getValueInt(StringConstants.TEMPERATURE);
128 mhumidity = rep.getValueInt(StringConstants.HUMIDITY);
129 logMessage(TAG + "PUT Request" +"temperature : " + mtemp + "humidity : " + mhumidity);
131 // " Power: " + mPower);
132 String message = mtemp+":"+mhumidity;
133 Message msg = Message.obtain();
135 SampleProvider mainActivityObj = SampleProvider.getSampleProviderObject();
136 SampleProvider.setmessage(message);
137 mainActivityObj.getmHandler().sendMessage(msg);
141 protected OcRepresentation get()
143 mTempRep.setValueInt(StringConstants.TEMPERATURE, mtemp);
144 mTempRep.setValueInt(StringConstants.HUMIDITY, mhumidity);
148 private EntityHandlerResult entityHandler(OcResourceRequest request)
150 EntityHandlerResult result = EntityHandlerResult.ERROR;
153 RequestType requestType = request.getRequestType();
154 EnumSet<RequestHandlerFlag> requestFlag = request
155 .getRequestHandlerFlagSet();
159 if (requestFlag.contains(RequestHandlerFlag.INIT))
161 logMessage(TAG + "Init");
164 if (requestFlag.contains(RequestHandlerFlag.REQUEST))
168 logMessage(TAG + requestType + "Request");
169 OcResourceResponse ocResourceResponse = new OcResourceResponse();
170 ocResourceResponse.setRequestHandle(request
171 .getRequestHandle());
172 ocResourceResponse.setResourceHandle(request
173 .getResourceHandle());
177 // handle GET request
181 .setResponseResult(EntityHandlerResult.OK);
183 .setErrorCode(StringConstants.ERROR_CODE);
184 ocResourceResponse.setResourceRepresentation(get());
185 OcPlatform.sendResponse(ocResourceResponse);
187 // handle PUT request
189 logMessage(TAG + "PUT");
190 OcRepresentation rep = request
191 .getResourceRepresentation();
194 .setErrorCode(StringConstants.ERROR_CODE);
196 .setResponseResult(EntityHandlerResult.OK);
197 ocResourceResponse.setResourceRepresentation(get());
198 OcPlatform.sendResponse(ocResourceResponse);
200 // handle POST request
203 // handle DELETE request
205 logMessage(TAG + "DELETE");
206 OcPlatform.unregisterResource(getHandle());
211 result = EntityHandlerResult.OK;
215 logMessage(TAG + "Error in Request " + e.getMessage());
216 Log.e(TAG, e.getMessage());
219 // handle OBSERVER request
220 if (requestFlag.contains(RequestHandlerFlag.OBSERVER))
222 logMessage(TAG + "OBSERVER");
223 ObservationInfo observationInfo = request.getObservationInfo();
224 switch (observationInfo.getObserveAction())
227 mObservationIds.add(observationInfo
228 .getOcObservationId());
232 mObservationIds.remove(observationInfo
233 .getOcObservationId());
237 result = EntityHandlerResult.OK;
243 public void logMessage(String msg)
249 public void logMsg(final String text)
251 Intent intent = new Intent("com.example.sample.provider.SampleProvider");
252 intent.putExtra(StringConstants.MESSAGE, text);
253 mContext.sendBroadcast(intent);
256 public void notifyObserver()
260 // if observationList is not empty, call notifyListOfObservers
261 if (mObservationIds.size() > 0)
263 OcResourceResponse ocResourceResponse = new OcResourceResponse();
264 ocResourceResponse.setErrorCode(StringConstants.ERROR_CODE);
265 ocResourceResponse.setResponseResult(EntityHandlerResult.OK);
266 OcRepresentation r = get();
267 ocResourceResponse.setResourceRepresentation
268 (r, OcPlatform.DEFAULT_INTERFACE);
269 OcPlatform.notifyListOfObservers(getHandle(), mObservationIds, ocResourceResponse);
273 // notify all observers if mObservationList is empty
274 OcPlatform.notifyAllObservers(getHandle());
277 catch (OcException e)
279 Log.e(TAG, e.getMessage());