Merge branch 'master' into notification-service
[platform/upstream/iotivity.git] / service / notification / examples / linux / notificationprovider.c
1 #include <stdio.h>\r
2 #include <stdbool.h>\r
3 #include <stdlib.h>\r
4 #include "NSCommon.h"\r
5 #include "NSProviderInterface.h"\r
6 #include "logger.h"\r
7 #include "octypes.h"\r
8 #include "pthread.h"\r
9 \r
10 \r
11 #define TAG "notiProviderExample"\r
12 \r
13 extern char *strdup(const char *s);\r
14 \r
15 bool isExit = false;\r
16 \r
17 pthread_t processThread;\r
18 \r
19 int id;\r
20 \r
21 void OCProcessThread(void * ptr)\r
22 {\r
23     (void*) ptr;\r
24     while (!isExit)\r
25     {\r
26         if (OCProcess() != OC_STACK_OK)\r
27         {\r
28             OIC_LOG(ERROR, TAG, "OCStack process error");\r
29             return;\r
30         }\r
31     }\r
32 }\r
33 \r
34 void subscribeRequestCallback(NSConsumer *consumer)\r
35 {\r
36     OIC_LOG(INFO, TAG, "consumer requested to subscribe");\r
37     char *cid = consumer->mId;\r
38 \r
39     printf("Consumer ID: %s\n", cid);\r
40 \r
41     NSAccept(consumer, true);\r
42 }\r
43 \r
44 void syncCallback(NSProvider *provider, NSSync *sync)\r
45 {\r
46     OIC_LOG(INFO, TAG, "sync requested");\r
47 \r
48     printf("Sync State: %d\n", sync->mState);\r
49 \r
50 }\r
51 \r
52 int main()\r
53 {\r
54     int num;\r
55 \r
56     OIC_LOG(INFO, TAG, "NSStartProvider()");\r
57 \r
58     if (OCInit(NULL, 0, OC_CLIENT_SERVER) != OC_STACK_OK)\r
59     {\r
60         OIC_LOG(INFO, TAG, "OCStack init error");\r
61         return 0;\r
62     }\r
63 \r
64     pthread_create(&processThread, NULL, OCProcessThread, NULL);\r
65 \r
66     NSMessage * message = (NSMessage*) OICMalloc(sizeof(NSMessage));\r
67     if (!message)\r
68     {\r
69         OIC_LOG(ERROR, TAG, PCF("Fail to allocate memory"));\r
70         return NS_ERROR;\r
71     }\r
72 \r
73     while (true)\r
74     {\r
75         char dummy;\r
76 \r
77         printf("1. NSStartProvider(Accepter: Provider) \n");\r
78         printf("2. NSStartProvider(Accepter: Consumer) \n");\r
79         printf("3. NSSendNotification() \n");\r
80         printf("4. NSRead \n");\r
81         //printf("5. NSAccept \n");\r
82         printf("6. NSGetConsumerList \n");\r
83         printf("7. startPresence \n");\r
84         printf("8. stopPresence \n");\r
85         printf("0. Exit() \n");\r
86 \r
87         printf("input : ");\r
88 \r
89         scanf("%d", &num);\r
90         scanf("%c", &dummy);\r
91         fflush(stdin);\r
92 \r
93         switch (num)\r
94         {\r
95             case 1:\r
96                 OIC_LOG(INFO, TAG, "NSStartProvider(Accepter: Provider)");\r
97                 NSStartProvider(NS_ACCEPTER_PROVIDER, subscribeRequestCallback, syncCallback);\r
98                 break;\r
99             case 2:\r
100                 OIC_LOG(INFO, TAG, "NSStartProvider(Accepter: Consumer)");\r
101                 NSStartProvider(NS_ACCEPTER_CONSUMER, subscribeRequestCallback, syncCallback);\r
102                 break;\r
103             case 3:\r
104                 OIC_LOG(INFO, TAG, "NSSendNotification()");\r
105 \r
106                 char title[100];\r
107                 char body[100];\r
108                 char charID[100];\r
109 \r
110                 printf("id : %d\n", ++id);\r
111 \r
112                 printf("title : ");\r
113 \r
114                 gets(title);\r
115 \r
116                 printf("body : ");\r
117                 gets(body);\r
118 \r
119                 printf("app - mId : %s \n", charID);\r
120                 printf("app - mTitle : %s \n", title);\r
121                 printf("app - mContentText : %s \n", body);\r
122 \r
123                 NSMessage * msg = (NSMessage *)malloc(sizeof(NSMessage));\r
124 \r
125                 sprintf(charID, "%d", id);\r
126 \r
127                 msg->mId = strdup(charID);\r
128                 msg->mTitle = strdup(title);\r
129                 msg->mContentText = strdup(body);\r
130 \r
131                 NSSendNotification(msg);\r
132 \r
133                 break;\r
134 \r
135             case 4:\r
136                 OIC_LOG(INFO, TAG, "NSRead");\r
137                 NSSync * sync = (NSSync*) malloc(sizeof(NSSync));\r
138 \r
139                 sync->mMessageId = strdup("dev_001");\r
140                 sync->mState = 1;\r
141 \r
142                 NSSendSync(sync);\r
143 \r
144                 break;\r
145 /*\r
146             case 5:\r
147                 OIC_LOG(INFO, TAG, "NSAccept");\r
148 \r
149                 NSConsumer * consumer = (NSConsumer *)malloc(sizeof(NSConsumer));\r
150                 consumer->mId = strdup("dev_001");\r
151                 consumer->mUserData = NULL;\r
152                 bool accepted = true;\r
153 \r
154                 NSAccept(consumer, accepted);\r
155 \r
156                 break;*/\r
157 \r
158             case 6:\r
159                 OIC_LOG(INFO, TAG, "NSGetConsumerList");\r
160 \r
161                 /*\r
162                 NSConsumer *list = NULL;\r
163                 int numberOfList;\r
164 \r
165                 NSGetConsumerList(list, numberOfList);\r
166 \r
167                 if(list != NULL)\r
168                 {\r
169                     OIC_LOG(INFO, TAG, "Consumer list");\r
170                 }\r
171                 else\r
172                 {\r
173                     OIC_LOG(INFO, TAG, "No Consumer list");\r
174                 }\r
175                     */\r
176                 break;\r
177             case 7:\r
178                 OIC_LOG(INFO, TAG, "NSStartPresence");\r
179                 NSTestStartPresence();\r
180                 break;\r
181             case 8:\r
182                 OIC_LOG(INFO, TAG, "NSStopPresence");\r
183                 NSTestStopPresence();\r
184                 break;\r
185             default:\r
186                 OIC_LOG(INFO, TAG, "Under Construction");\r
187                 break;\r
188         }\r
189 \r
190         printf("\n");\r
191     }\r
192 \r
193     return 0;\r
194 }\r