#ifdef WITH_CLOUD
#include "NSConstants.h"
#include "NSConsumerCommon.h"
-#include "cloud_connector.h"
#include "oic_malloc.h"
#define CLOUD_CONTEXT_VALUE 0x99
#define CLOUD_IOTIVITYNS_SESSION "" // refer to IoTivity Cloud Module Sample
#endif
+NSProvider * g_provider = NULL;
+
void onDiscoverNotification(NSProvider * provider)
{
printf("notification resource discovered\n");
printf("startSubscribing\n");
}
-void onSubscriptionAccepted(NSProvider * provider)
+void printProviderTopicList(NSProvider *provider)
{
- printf("Subscription accepted\n");
+ printf("printProviderTopicList\n");
+ if (provider->topicLL)
+ {
+ NSTopicLL * iter = provider->topicLL;
+ while (iter)
+ {
+ printf("Topic Name: %s\t Topic State: %d\n", iter->topicName, iter->state);
+ iter = iter->next;
+ }
+ }
+}
+
+void onProviderChanged(NSProvider * provider, NSResponse response)
+{
+ printf("Provider changed: %d\n", response);
printf("subscribed provider Id : %s\n", provider->providerId);
+
+ if (response == NS_TOPIC)
+ {
+ printf ("Provider Topic Updated\n");
+
+ printProviderTopicList(provider);
+ g_provider = provider;
+ }
}
void onNotificationPosted(NSMessage * notification)
printf("title : %s\n", notification->title);
printf("content : %s\n", notification->contentText);
printf("source : %s\n", notification->sourceName);
+ if (notification->topic && strlen(notification->topic) > 0)
+ {
+ printf("topic : %s\n", notification->topic);
+ }
NSConsumerSendSyncInfo(notification->providerId, notification->messageId, NS_SYNC_READ);
}
printf("Sync STATE : %d\n", sync->state);
}
-
#ifdef WITH_CLOUD
OCStackApplicationResult handleLoginoutCB(void *ctx,
OCDoHandle handle,
NSConsumerConfig cfg;
cfg.discoverCb = onDiscoverNotification;
- cfg.acceptedCb = onSubscriptionAccepted;
+ cfg.changedCb = onProviderChanged;
cfg.messageCb = onNotificationPosted;
cfg.syncInfoCb = onNotificationSync;
#ifdef WITH_CLOUD
NS_LOG(DEBUG, "process OCCloudLogin...");
- OCCloudLogin(CLOUD_HOST_ADDRESS, CLOUD_IOTIVITYNS_SESSION, handleLoginoutCB);
NS_LOG(DEBUG, "OCCloudLogin return");
#endif
printf("1. Start Consumer\n");
printf("2. Stop Consumer\n");
+ printf("3. Get Topics\n");
+ printf("4. Select Topics\n");
printf("5. Exit\n");
printf("Input: ");
printf("2. Stop Consumer");
NSStopConsumer();
break;
+ case 3:
+ printf("3. Get Topics\n");
+ if(g_provider)
+ {
+ NSConsumerGetInterestTopics(g_provider);
+ }
+ break;
+ case 4:
+ printf("4. Select Topics\n");
+
+ if (g_provider && g_provider->topicLL)
+ {
+ NSTopicLL * iter = g_provider->topicLL;
+ int i = 0;
+ while (iter)
+ {
+ iter->state = (i++)%2;
+ printf("Topic Name: %s\t Topic State: %d\n", iter->topicName, iter->state);
+ iter = iter->next;
+ }
+ NSConsumerSelectInterestTopics(g_provider);
+ }
+ break;
case 5:
printf("5. Exit");
isExit = true;
break;
}
}
-
return 0;
}