import org.iotivity.base.PlatformConfig;\r
import org.iotivity.base.QualityOfService;\r
import org.iotivity.base.ServiceType;\r
+import org.iotivity.service.ns.common.NSException;\r
import org.iotivity.service.ns.common.SyncInfo;\r
+import org.iotivity.service.ns.common.TopicsList;\r
import org.iotivity.service.ns.consumer.ConsumerService;\r
import org.iotivity.service.ns.consumer.Provider;\r
\r
import java.util.HashMap;\r
\r
public class ConsumerProxy\r
- implements ConsumerService.OnProviderDiscoveredListner,\r
- ConsumerService.OnProviderChangedListener,\r
+ implements ConsumerService.OnProviderDiscoveredListener,\r
+ Provider.OnProviderStateListener,\r
Provider.OnMessageReceivedListner, Provider.OnSyncInfoReceivedListner\r
{\r
-\r
private static final String TAG = "NS_CONSUMER_PROXY";\r
\r
private Context mContext = null;\r
private ConsumerService consumerService = null;\r
+ private boolean mAcceptor = false;\r
+ private Provider mProvider = null;\r
\r
private Handler mHandler = null;\r
\r
private static final int PROVIDER_DISCOVERED = 1;\r
- private static final int SUBSCRIPTION_ACCEPTED = 2;\r
+ private static final int STATE_CHANGED = 2;\r
private static final int MESSAGE_RECEIVED = 3;\r
private static final int SYNCINFO_RECEIVED = 4;\r
+ private static final int TOPICS_RECEIVED = 5;\r
\r
public ConsumerProxy(Context context)\r
{\r
this.mHandler = handler;\r
}\r
\r
+ public boolean getAcceptor()\r
+ {\r
+ return mAcceptor;\r
+ }\r
+\r
private void configurePlatform()\r
{\r
\r
configurePlatform();\r
try\r
{\r
- consumerService.Start(this, this);\r
+ consumerService.start(this);\r
}\r
catch (Exception e)\r
{\r
{\r
try\r
{\r
- consumerService.Stop();\r
+ consumerService.stop();\r
+ mProvider = null;\r
}\r
catch (Exception e)\r
{\r
{\r
try\r
{\r
- consumerService.EnableRemoteService(serverAddress);\r
+ consumerService.enableRemoteService(serverAddress);\r
}\r
catch (Exception e)\r
{\r
{\r
try\r
{\r
- consumerService.RescanProvider();\r
+ consumerService.rescanProvider();\r
}\r
catch (Exception e)\r
{\r
Log.e(TAG, "Exception: rescanProvider : " + e);\r
}\r
}\r
-\r
- public Provider getProvider(String providerId)\r
- {\r
- Provider provider = null;\r
- try\r
- {\r
- provider = consumerService.GetProvider(providerId);\r
- }\r
- catch (Exception e)\r
- {\r
- Log.e(TAG, "Exception: getProvider : " + e);\r
- }\r
- return provider;\r
- }\r
-\r
- public void subscribe(String providerId)\r
+ public void getTopicsList()\r
{\r
- try\r
+ if (mProvider != null)\r
{\r
- Provider provider = getProvider(providerId);\r
- if (provider != null)\r
- provider.Subscribe();\r
- else\r
- Log.e(TAG, "providerID is Null : ");\r
+ try\r
+ {\r
+ TopicsList topicsList = mProvider.getTopicList();\r
+ }\r
+ catch (Exception e)\r
+ {\r
+ Log.e(TAG, "Exception: getTopicsList : " + e);\r
+ }\r
}\r
- catch (Exception e)\r
+ else\r
{\r
- Log.e(TAG, "Exception: Subscribe : " + e);\r
+ Log.e(TAG, "getTopicsList Provider NULL");\r
}\r
}\r
-\r
- public void unsubscribe(String providerId)\r
+ public void updateTopicList(TopicsList topicsList)\r
{\r
- try\r
+ if (mProvider != null)\r
{\r
- Provider provider = getProvider(providerId);\r
- if (provider != null)\r
- provider.Unsubscribe();\r
- else\r
- Log.e(TAG, "providerID is Null : ");\r
+ try\r
+ {\r
+ mProvider.updateTopicList(topicsList);\r
+ }\r
+ catch (Exception e)\r
+ {\r
+ Log.e(TAG, "Exception: updateTopicList : " + e);\r
+ }\r
}\r
- catch (Exception e)\r
+ else\r
{\r
- Log.e(TAG, "Exception: Unsubscribe : " + e);\r
+ Log.e(TAG, "updateTopicList Provider NULL");\r
}\r
}\r
-\r
- public void sendSyncInfo(String providerId, long messageId, SyncInfo.SyncType syncType)\r
+ @Override\r
+ public void onProviderDiscovered(Provider provider)\r
{\r
- try\r
- {\r
- Provider provider = getProvider(providerId);\r
- if (provider != null)\r
- provider.SendSyncInfo(messageId, syncType);\r
- else\r
- Log.e(TAG, "providerID is Null : ");\r
- }\r
- catch (Exception e)\r
+ Log.i(TAG, "onProviderDiscovered");\r
+ if (provider == null)\r
{\r
- Log.e(TAG, "Exception: SendSyncInfo : " + e);\r
+ Log.e(TAG, "providerID is Null ");\r
+ return;\r
}\r
- }\r
-\r
- public void setListener(String providerId)\r
- {\r
+ mProvider = provider;\r
+ Log.i(TAG, "Provider ID: " + provider.getProviderId() );\r
+ Message msg = mHandler.obtainMessage(PROVIDER_DISCOVERED,\r
+ "Provider Discovered Id: " + provider.getProviderId());\r
+ mHandler.sendMessage(msg);\r
try\r
{\r
- Provider provider = getProvider(providerId);\r
- if (provider != null)\r
- provider.SetListener(this, this);\r
+ Log.i(TAG, "setListeners to Discovered Provider");\r
+ provider.setListener(this, this, this);\r
+ Log.i(TAG, "setListeners done");\r
+ if (! provider.isSubscribed())\r
+ {\r
+ Log.i(TAG, "Provider not subscribed. Acceptor is Consumer");\r
+ mAcceptor = false;\r
+ provider.subscribe();\r
+ }\r
else\r
- Log.e(TAG, "providerID is Null : ");\r
+ {\r
+ Log.i(TAG, "Provider is already subscribed. Acceptor is Provider");\r
+ mAcceptor = true;\r
+ }\r
}\r
catch (Exception e)\r
{\r
- Log.e(TAG, "Exception: SetListener : " + e);\r
+ Log.e(TAG, "Exception : " + e);\r
}\r
}\r
\r
@Override\r
- public void onProviderDiscovered(Provider provider)\r
+ public void onProviderStateReceived(Provider.ProviderState state)\r
{\r
- Log.i(TAG, "onProviderDiscovered");\r
+ Log.i(TAG, "onProviderStateReceived");\r
\r
- Log.i(TAG, "Provider ID: " + provider.getProviderId() );\r
- Message msg = mHandler.obtainMessage(PROVIDER_DISCOVERED, provider.getProviderId());\r
+ Log.i(TAG, "Provider state: " + state );\r
+ Message msg = mHandler.obtainMessage(STATE_CHANGED, "Provider state: " + state);\r
mHandler.sendMessage(msg);\r
- subscribe(provider.getProviderId());\r
- }\r
-\r
- @Override\r
- public void onProviderChanged(Provider provider , ConsumerService.Response response)\r
- {\r
- Log.i(TAG, "onSubscriptionAccepted");\r
-\r
- Log.i(TAG, "Provider ID: " + provider.getProviderId() );\r
- Message msg = mHandler.obtainMessage(SUBSCRIPTION_ACCEPTED, provider.getProviderId());\r
- mHandler.sendMessage(msg);\r
- setListener(provider.getProviderId());\r
}\r
\r
@Override\r
Log.i(TAG, "Message Id: " + message.getMessageId());\r
Log.i(TAG, "Message title: " + message.getTitle());\r
Log.i(TAG, "Message Content: " + message.getContentText());\r
+ Log.i(TAG, "Message Topic: " + message.getTopic());\r
Log.i(TAG, "Message Source: " + message.getSourceName());\r
\r
Message msg = mHandler.obtainMessage(MESSAGE_RECEIVED,\r
- "Message Id: " + message.getMessageId() +\r
- " / Message title: " + message.getTitle() +\r
- " / Message Content: " + message.getContentText() +\r
- " / Message Source: " + message.getSourceName() );\r
+ "Message Id: " + message.getMessageId() + "\n" +\r
+ "Message title: " + message.getTitle() + "\n" +\r
+ "Message Content: " + message.getContentText() + "\n" +\r
+ "Message Topic: " + message.getTopic() + "\n" +\r
+ "Message Source: " + message.getSourceName() );\r
mHandler.sendMessage(msg);\r
+ try\r
+ {\r
+ Log.i(TAG, "send READ syncInfo");\r
+ mProvider.sendSyncInfo(message.getMessageId(), SyncInfo.SyncType.READ);\r
+ }\r
+ catch (Exception e)\r
+ {\r
+ Log.e(TAG, "Exception : " + e);\r
+ }\r
}\r
\r
@Override\r
Log.i(TAG, "Sync Id: " + sync.getMessageId());\r
Log.i(TAG, "Sync STATE: " + sync.getState());\r
Message msg = mHandler.obtainMessage(SYNCINFO_RECEIVED,\r
- "Sync Id: " + sync.getMessageId() +\r
- " / Sync STATE: " + sync.getState());\r
+ "Sync Id: " + sync.getMessageId() + "\n" +\r
+ "Sync STATE: " + sync.getState());\r
mHandler.sendMessage(msg);\r
}\r
}\r
import android.widget.TextView;\r
import android.widget.Toast;\r
\r
+import org.iotivity.service.ns.common.TopicsList;\r
+\r
public class MainActivity extends AppCompatActivity\r
{\r
-\r
private final String TAG = "NS_MAIN_ACTIVITY";\r
\r
private Button btnStart;\r
private Button btnStop;\r
private Button btnRescan;\r
+ private Button btnEnableRemoteService;\r
+ private Button btnGetTopicList;\r
+ private Button btnUpdateTopicList;\r
private static TextView TvLog;\r
\r
private boolean isStarted = false;\r
private ConsumerProxy mConsumerProxy = null;\r
\r
private static final int PROVIDER_DISCOVERED = 1;\r
- private static final int SUBSCRIPTION_ACCEPTED = 2;\r
+ private static final int STATE_CHANGED = 2;\r
private static final int MESSAGE_RECEIVED = 3;\r
private static final int SYNCINFO_RECEIVED = 4;\r
+ private static final int TOPICS_RECEIVED = 5;\r
\r
public static Handler mHandler = new Handler()\r
{\r
String providerId = (String) msg.obj;\r
if (providerId != null)\r
{\r
- TvLog.append("Discovered : ProviderID: " + providerId + "\n");\r
+ TvLog.append( providerId + "\n");\r
}\r
break;\r
}\r
- case SUBSCRIPTION_ACCEPTED:\r
+ case STATE_CHANGED:\r
{\r
- String providerId = (String) msg.obj;\r
- if (providerId != null)\r
+ String state = (String) msg.obj;\r
+ if (state != null)\r
{\r
- TvLog.append("Subscription Accepted : ProviderID: " + providerId + "\n");\r
+ TvLog.append( state + "\n");\r
}\r
break;\r
}\r
String message = (String) msg.obj;\r
if (message != null)\r
{\r
- TvLog.append("Message Received : " + message + "\n");\r
+ TvLog.append( message + "\n");\r
}\r
break;\r
}\r
String sync = (String) msg.obj;\r
if (sync != null)\r
{\r
- TvLog.append("SyncInfo Received : " + sync + "\n");\r
+ TvLog.append( sync + "\n");\r
}\r
break;\r
}\r
btnStart = (Button) findViewById(R.id.BtnStart);\r
btnStop = (Button) findViewById(R.id.BtnStop);\r
btnRescan = (Button) findViewById(R.id.BtnRescan);\r
+ btnEnableRemoteService = (Button) findViewById(R.id.BtnEnableRemoteService);\r
+ btnGetTopicList = (Button) findViewById(R.id.BtnGetTopicList);\r
+ btnUpdateTopicList = (Button) findViewById(R.id.BtnUpdateTopicList);\r
\r
TvLog = (TextView) findViewById(R.id.TvLog);\r
\r
btnStart.setOnClickListener(mClickListener);\r
btnStop.setOnClickListener(mClickListener);\r
btnRescan.setOnClickListener(mClickListener);\r
+ btnEnableRemoteService.setOnClickListener(mClickListener);\r
+ btnGetTopicList.setOnClickListener(mClickListener);\r
+ btnUpdateTopicList.setOnClickListener(mClickListener);\r
\r
mConsumerProxy = new ConsumerProxy(getApplicationContext());\r
mConsumerProxy.setHandler(mHandler);\r
@Override\r
protected void onDestroy()\r
{\r
- if(isStarted)\r
+ if (isStarted)\r
mConsumerProxy.stopNotificationConsumer();\r
super.onDestroy();\r
}\r
{\r
switch (v.getId())\r
{\r
-\r
case R.id.BtnStart:\r
{\r
if (isStarted == false)\r
{\r
if (isStarted == false)\r
{\r
- Log.e(TAG, "Fail to stop service");\r
+ Log.e(TAG, "Fail to stop service. Service has not been started");\r
break;\r
}\r
-\r
+ TvLog.append("Stop NS-Consumer\n");\r
mConsumerProxy.stopNotificationConsumer();\r
isStarted = false;\r
-\r
- TvLog.append("Stop NS-Consumer\n");\r
}\r
break;\r
case R.id.BtnRescan:\r
{\r
if (isStarted == false)\r
{\r
- Log.e(TAG, "Fail to rescan");\r
+ Log.e(TAG, "Fail to rescan. Service has not been started");\r
break;\r
}\r
\r
- mConsumerProxy.rescanProvider();\r
TvLog.append("Rescan NS-Consumer\n");\r
+ mConsumerProxy.rescanProvider();\r
}\r
break;\r
+ case R.id.BtnEnableRemoteService:\r
+ {\r
+ if (isStarted == false)\r
+ {\r
+ Log.e(TAG, "Fail to Enable RemoteService. Service has not been started");\r
+ break;\r
+ }\r
+ TvLog.append("EnableRemoteService NS-Consumer\n");\r
\r
+ //TODO: Update to read the serverAddress from UI\r
+ String serverAddress = new String();\r
+ mConsumerProxy.enableRemoteService(serverAddress);\r
+ }\r
+ break;\r
+ case R.id.BtnGetTopicList:\r
+ {\r
+ if (isStarted == false)\r
+ {\r
+ Log.e(TAG, "Fail to GetTopicList. Service has not been started");\r
+ break;\r
+ }\r
+ TvLog.append("GetTopicList NS-Consumer\n");\r
+ mConsumerProxy.getTopicsList();\r
+ }\r
+ break;\r
+ case R.id.BtnUpdateTopicList:\r
+ {\r
+ if (isStarted == false)\r
+ {\r
+ Log.e(TAG, "Fail to UpdateTopicList. Service has not been started");\r
+ break;\r
+ }\r
+ TvLog.append("UpdateTopicList NS-Consumer\n");\r
+\r
+ //TODO: Update to read the TopicsList from UI\r
+ TopicsList topicsList = new TopicsList();\r
+ mConsumerProxy.updateTopicList(topicsList);\r
+ }\r
+ break;\r
}\r
}\r
};\r