Issue fixed about OCEntityHandlerRequest same pointer address.
[platform/upstream/iotivity.git] / service / notification / examples / linux / notificationprovider.c
1 /******************************************************************\r
2  *\r
3  * Copyright 2015 Samsung Electronics All Rights Reserved.\r
4  *\r
5  *\r
6  *\r
7  * Licensed under the Apache License, Version 2.0 (the "License");\r
8  * you may not use this file except in compliance with the License.\r
9  * You may obtain a copy of the License at\r
10  *\r
11  *      http://www.apache.org/licenses/LICENSE-2.0\r
12  *\r
13  * Unless required by applicable law or agreed to in writing, software\r
14  * distributed under the License is distributed on an "AS IS" BASIS,\r
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
16  * See the License for the specific language governing permissions and\r
17  * limitations under the License.\r
18  *\r
19  ******************************************************************/\r
20 \r
21 #include <stdio.h>\r
22 #include <stdbool.h>\r
23 #include <stdlib.h>\r
24 #include "NSCommon.h"\r
25 #include "NSProviderInterface.h"\r
26 #include "logger.h"\r
27 #include "octypes.h"\r
28 #include "pthread.h"\r
29 #include "oic_string.h"\r
30 #include "oic_malloc.h"\r
31 \r
32 #define TAG "notiProviderExample"\r
33 \r
34 extern char *strdup(const char *s);\r
35 \r
36 bool isExit = false;\r
37 \r
38 int id;\r
39 \r
40 void* OCProcessThread(void * ptr)\r
41 {\r
42     (void) ptr;\r
43     while (!isExit)\r
44     {\r
45         if (OCProcess() != OC_STACK_OK)\r
46         {\r
47             OIC_LOG(ERROR, TAG, "OCStack process error");\r
48             return NULL;\r
49         }\r
50     }\r
51 \r
52     return NULL;\r
53 }\r
54 \r
55 void subscribeRequestCallback(NSConsumer *consumer)\r
56 {\r
57     OIC_LOG(INFO, TAG, "consumer requested to subscribe");\r
58     char *cid = consumer->mId;\r
59 \r
60     printf("NS_ Consumer ID: %s\n", cid);\r
61 \r
62     NSAccept(consumer, true);\r
63 }\r
64 \r
65 void syncCallback(NSSync *sync)\r
66 {\r
67     OIC_LOG(INFO, TAG, "sync requested");\r
68 \r
69     printf("NS_ Sync State: %d\n", sync->mState);\r
70 }\r
71 \r
72 int main()\r
73 {\r
74     int num;\r
75     pthread_t processThread;\r
76 \r
77     OIC_LOG(INFO, TAG, "NSStartProvider()");\r
78 \r
79     if (OCInit(NULL, 0, OC_CLIENT_SERVER) != OC_STACK_OK)\r
80     {\r
81         OIC_LOG(INFO, TAG, "OCStack init error");\r
82         return 0;\r
83     }\r
84 \r
85     pthread_create(&processThread, NULL, OCProcessThread, NULL);\r
86 \r
87     while (true)\r
88     {\r
89         char dummy;\r
90 \r
91         printf("1. NSStartProvider(Accepter: Provider) \n");\r
92         printf("2. NSStartProvider(Accepter: Consumer) \n");\r
93         printf("3. NSSendNotification() \n");\r
94         printf("4. NSRead \n");\r
95         //printf("5. NSAccept \n");\r
96         printf("6. NSGetConsumerList \n");\r
97         //printf("7. startPresence \n");\r
98         //printf("8. stopPresence \n");\r
99         printf("0. Exit() \n");\r
100 \r
101         printf("input : ");\r
102 \r
103         scanf("%d", &num);\r
104         scanf("%c", &dummy);\r
105         fflush(stdin);\r
106 \r
107         switch (num)\r
108         {\r
109             case 1:\r
110                 OIC_LOG(INFO, TAG, "NSStartProvider(Accepter: Provider)");\r
111                 NSStartProvider(NS_ACCEPTER_PROVIDER, subscribeRequestCallback, syncCallback);\r
112                 break;\r
113             case 2:\r
114                 OIC_LOG(INFO, TAG, "NSStartProvider(Accepter: Consumer)");\r
115                 NSStartProvider(NS_ACCEPTER_CONSUMER, subscribeRequestCallback, syncCallback);\r
116                 break;\r
117             case 3:\r
118                 OIC_LOG(INFO, TAG, "NSSendNotification()");\r
119 \r
120                 char title[100];\r
121                 char body[100];\r
122                 char charID[100];\r
123 \r
124                 printf("id : %d\n", ++id);\r
125 \r
126                 printf("title : ");\r
127 \r
128                 gets(title);\r
129 \r
130                 printf("body : ");\r
131                 gets(body);\r
132 \r
133                 printf("app - mId : %d \n", charID);\r
134                 printf("app - mTitle : %s \n", title);\r
135                 printf("app - mContentText : %s \n", body);\r
136 \r
137                 NSMessage * msg = (NSMessage *)OICMalloc(sizeof(NSMessage));\r
138 \r
139                 sprintf(charID, "%d", id);\r
140 \r
141                 msg->mId = strdup(charID);\r
142                 msg->mTitle = strdup(title);\r
143                 msg->mContentText = OICStrdup(body);\r
144 \r
145                 NSSendNotification(msg);\r
146 \r
147                 break;\r
148 \r
149             case 4:\r
150                 OIC_LOG(INFO, TAG, "NSRead");\r
151                 NSSync * sync = (NSSync*) OICMalloc(sizeof(NSSync));\r
152 \r
153                 sync->mMessageId = OICStrdup("dev_001");\r
154                 sync->mState = 1;\r
155 \r
156                 break;\r
157 /*\r
158             case 5:\r
159                 OIC_LOG(INFO, TAG, "NSAccept");\r
160 \r
161                 NSConsumer * consumer = (NSConsumer *)malloc(sizeof(NSConsumer));\r
162                 consumer->mId = strdup("dev_001");\r
163                 consumer->mUserData = NULL;\r
164                 bool accepted = true;\r
165 \r
166                 NSAccept(consumer, accepted);\r
167 \r
168                 break;*/\r
169 \r
170             case 6:\r
171                 OIC_LOG(INFO, TAG, "NSGetConsumerList");\r
172 \r
173                 /*\r
174                 NSConsumer *list = NULL;\r
175                 int numberOfList;\r
176 \r
177                 NSGetConsumerList(list, numberOfList);\r
178 \r
179                 if(list != NULL)\r
180                 {\r
181                     OIC_LOG(INFO, TAG, "Consumer list");\r
182                 }\r
183                 else\r
184                 {\r
185                     OIC_LOG(INFO, TAG, "No Consumer list");\r
186                 }\r
187                     */\r
188                 break;\r
189             case 7:\r
190                 OIC_LOG(INFO, TAG, "NSStartPresence - not working");\r
191                 //NSTestStartPresence();\r
192                 break;\r
193             case 8:\r
194                 OIC_LOG(INFO, TAG, "NSStopPresence- not working");\r
195                 //NSTestStopPresence();\r
196                 break;\r
197             default:\r
198                 OIC_LOG(INFO, TAG, "Under Construction");\r
199                 break;\r
200         }\r
201 \r
202         printf("\n");\r
203     }\r
204 \r
205     return 0;\r
206 }\r