1 /******************************************************************
2 * Copyright 2016 Samsung Electronics All Rights Reserved.
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 ******************************************************************/
19 package com.sec.noticonsumerexample;
21 import android.content.Context;
22 import android.os.Handler;
23 import android.os.Message;
24 import android.util.Log;
26 import org.iotivity.base.ModeType;
27 import org.iotivity.base.OcPlatform;
28 import org.iotivity.base.PlatformConfig;
29 import org.iotivity.base.QualityOfService;
30 import org.iotivity.base.ServiceType;
31 import org.iotivity.service.ns.common.NSException;
32 import org.iotivity.service.ns.common.SyncInfo;
33 import org.iotivity.service.ns.common.TopicsList;
34 import org.iotivity.service.ns.common.Topic;
35 import org.iotivity.service.ns.consumer.ConsumerService;
36 import org.iotivity.service.ns.consumer.Provider;
38 public class ConsumerSample
39 implements ConsumerService.OnProviderDiscoveredListener,
40 Provider.OnProviderStateListener,
41 Provider.OnMessageReceivedListner, Provider.OnSyncInfoReceivedListner
43 private static final String TAG = "NS_CONSUMER_SAMPLE";
45 private Context mContext = null;
46 private ConsumerService consumerService = null;
47 private boolean mAcceptor = true;
48 private Provider mProvider = null;
50 private Handler mHandler = null;
52 private static final int PROVIDER_DISCOVERED = 1;
53 private static final int STATE_CHANGED = 2;
54 private static final int MESSAGE_RECEIVED = 3;
55 private static final int SYNCINFO_RECEIVED = 4;
56 private static final int TOPICS_RECEIVED = 5;
58 public ConsumerSample(Context context)
60 Log.i(TAG, "Create consumer sample Instance");
62 this.mContext = context;
63 consumerService = new ConsumerService();
66 public void setHandler(Handler handler)
68 this.mHandler = handler;
71 public boolean getAcceptor()
76 private void configurePlatform()
79 PlatformConfig platformConfig = new PlatformConfig(
82 ModeType.CLIENT_SERVER,
83 "0.0.0.0", // By setting to "0.0.0.0", it binds to all available interfaces
84 0, // Uses randomly available port
88 Log.i(TAG, "Configuring platform.");
89 OcPlatform.Configure(platformConfig);
92 OcPlatform.stopPresence(); // Initialize OcPlatform
96 Log.e(TAG, "Exception: stopping presence when configuration step: " + e);
98 Log.i(TAG, "Configuration done Successfully");
101 public void startNotificationConsumer()
106 consumerService.start(this);
110 Log.e(TAG, "Exception: startNotificationConsumer : " + e);
114 public void stopNotificationConsumer()
118 consumerService.stop();
123 Log.e(TAG, "Exception: stopNotificationConsumer : " + e);
127 public void enableRemoteService(String serverAddress)
131 consumerService.enableRemoteService(serverAddress);
133 catch (NSException e)
135 Log.e(TAG, "NSException: enableRemoteService : " + e);
139 public void rescanProvider()
143 consumerService.rescanProvider();
147 Log.e(TAG, "Exception: rescanProvider : " + e);
150 public void getTopicsList()
152 if (mProvider != null)
156 TopicsList topicsList = mProvider.getTopicList();
157 StringBuilder stringBuilder = new StringBuilder();
158 stringBuilder.append("TopicList Received :");
159 for(Topic topic : topicsList.getTopicsList())
161 Log.i(TAG, "Topic Name : " + topic.getTopicName() );
162 Log.i(TAG, "Topic State : " + topic.getState() );
163 stringBuilder.append("\nTopic Name : " + topic.getTopicName());
164 stringBuilder.append("\nTopic State : " + topic.getState());
166 Message msg = mHandler.obtainMessage(TOPICS_RECEIVED, stringBuilder.toString());
167 mHandler.sendMessage(msg);
171 Log.e(TAG, "Exception: getTopicsList : " + e);
176 Log.e(TAG, "getTopicsList Provider NULL");
179 public void updateTopicList(TopicsList topicsList)
181 if (mProvider != null)
185 mProvider.updateTopicList(topicsList);
189 Log.e(TAG, "Exception: updateTopicList : " + e);
194 Log.e(TAG, "updateTopicList Provider NULL");
198 public void onProviderDiscovered(Provider provider)
200 Log.i(TAG, "onProviderDiscovered");
201 if (provider == null)
203 Log.e(TAG, "providerID is Null ");
206 mProvider = provider;
207 Log.i(TAG, "Provider ID: " + provider.getProviderId() );
208 Message msg = mHandler.obtainMessage(PROVIDER_DISCOVERED,
209 "Provider Discovered Id: " + provider.getProviderId());
210 mHandler.sendMessage(msg);
213 Log.i(TAG, "setListeners to Discovered Provider");
214 provider.setListener(this, this, this);
215 Log.i(TAG, "setListeners done");
216 if (! provider.isSubscribed())
218 Log.i(TAG, "Provider not subscribed. Acceptor is Consumer");
220 provider.subscribe();
224 Log.i(TAG, "Provider is already subscribed. Acceptor is Provider");
230 Log.e(TAG, "Exception : " + e);
235 public void onProviderStateReceived(Provider.ProviderState state)
237 Log.i(TAG, "onProviderStateReceived");
239 Log.i(TAG, "ProviderState Received : " + state );
240 Message msg = mHandler.obtainMessage(STATE_CHANGED, "ProviderState Received : " + state);
241 mHandler.sendMessage(msg);
245 public void onMessageReceived(org.iotivity.service.ns.common.Message message)
247 Log.i(TAG, "onMessageReceived");
249 Log.i(TAG, "Message Id: " + message.getMessageId());
250 Log.i(TAG, "Message title: " + message.getTitle());
251 Log.i(TAG, "Message Content: " + message.getContentText());
252 Log.i(TAG, "Message Topic: " + message.getTopic());
253 Log.i(TAG, "Message Source: " + message.getSourceName());
255 Message msg = mHandler.obtainMessage(MESSAGE_RECEIVED,
256 "Message Id: " + message.getMessageId() + "\n" +
257 "Message title: " + message.getTitle() + "\n" +
258 "Message Content: " + message.getContentText() + "\n" +
259 "Message Topic: " + message.getTopic() + "\n" +
260 "Message Source: " + message.getSourceName() );
261 mHandler.sendMessage(msg);
264 Log.i(TAG, "send READ syncInfo");
265 mProvider.sendSyncInfo(message.getMessageId(), SyncInfo.SyncType.READ);
269 Log.e(TAG, "Exception : " + e);
274 public void onSyncInfoReceived(SyncInfo sync)
276 Log.i(TAG, "onSyncInfoReceived");
278 Log.i(TAG, "Sync Id: " + sync.getMessageId());
279 Log.i(TAG, "Sync STATE: " + sync.getState());
280 Message msg = mHandler.obtainMessage(SYNCINFO_RECEIVED,
281 "Sync Id: " + sync.getMessageId() + "\n" +
282 "Sync STATE: " + sync.getState());
283 mHandler.sendMessage(msg);